diff --git a/.buildkite/pipelines/pipeline.kibana-serverless-release.yaml b/.buildkite/pipelines/pipeline.kibana-serverless-release.yaml index 6bceff183662a..0eec18471e2be 100644 --- a/.buildkite/pipelines/pipeline.kibana-serverless-release.yaml +++ b/.buildkite/pipelines/pipeline.kibana-serverless-release.yaml @@ -2,8 +2,11 @@ steps: - label: ":releasethekraken: Release kibana" # https://regex101.com/r/tY52jo/1 if: build.tag =~ /^deploy@\d+\$/ - trigger: gpctl-promote + trigger: gpctl-promote-with-e2e-tests build: env: SERVICE_COMMIT_HASH: "${BUILDKITE_COMMIT:0:12}" REMOTE_SERVICE_CONFIG: https://raw.githubusercontent.com/elastic/serverless-gitops/main/gen/gpctl/kibana/config.yaml + SERVICE: kibana-controller + NAMESPACE: kibana-ci + IMAGE_NAME: kibana-serverless diff --git a/.buildkite/pipelines/pull_request/base.yml b/.buildkite/pipelines/pull_request/base.yml index 522d2e34e5682..e36a1434bee88 100644 --- a/.buildkite/pipelines/pull_request/base.yml +++ b/.buildkite/pipelines/pull_request/base.yml @@ -140,7 +140,7 @@ steps: queue: n2-4-spot depends_on: build timeout_in_minutes: 40 - parallelism: 16 + parallelism: 12 soft_fail: true retry: automatic: diff --git a/.buildkite/pipelines/quality-gates/pipeline.kibana-tests.yaml b/.buildkite/pipelines/quality-gates/pipeline.kibana-tests.yaml index 27e55dfced9d7..0acdb66f8d5f2 100644 --- a/.buildkite/pipelines/quality-gates/pipeline.kibana-tests.yaml +++ b/.buildkite/pipelines/quality-gates/pipeline.kibana-tests.yaml @@ -1,4 +1,17 @@ +# This pipeline serves as the entry point for your service's quality gates definitions. When +# properly configured, it will be invoked automatically as part of the automated +# promotion process once a new version was rolled out in one of the various cloud stages. +# +# The updated environment is provided via ENVIRONMENT variable. The seedling +# step will branch and execute pipeline snippets at the following location: +# pipeline.tests-qa.yaml +# pipeline.tests-staging.yaml +# pipeline.tests-production.yaml +# +# Docs: https://docs.elastic.dev/serverless/qualitygates + env: + TEAM_CHANNEL: "#kibana-mission-control" ENVIRONMENT: ${ENVIRONMENT?} steps: @@ -8,3 +21,7 @@ steps: command: "make -C /agent run-environment-tests" agents: image: "docker.elastic.co/ci-agent-images/quality-gate-seedling:0.0.2" + +notify: + - slack: "${TEAM_CHANNEL?}" + if: build.branch == "main" && build.state == "failed" diff --git a/.buildkite/pipelines/quality-gates/pipeline.tests-production.yaml b/.buildkite/pipelines/quality-gates/pipeline.tests-production.yaml index f283e2e4f6c9a..1c30a7f734df4 100644 --- a/.buildkite/pipelines/quality-gates/pipeline.tests-production.yaml +++ b/.buildkite/pipelines/quality-gates/pipeline.tests-production.yaml @@ -1,6 +1,6 @@ -env: - TEAM_CHANNEL: "#kibana-serverless-release" - ENVIRONMENT: "production" +# These pipeline steps constitute the quality gate for your service within the production +# environment. Incorporate any necessary additional logic to validate the service's integrity. +# A failure in this pipeline build will prevent further progression to the subsequent stage. steps: - label: ":pipeline::fleet::seedling: Trigger Observability Kibana Tests for ${ENVIRONMENT}" @@ -13,9 +13,17 @@ steps: agents: image: "docker.elastic.co/ci-agent-images/basic-buildkite-agent:1688566364" + - label: ":rocket: Run cp e2e tests" + trigger: "ess-k8s-production-e2e-tests" + build: + message: "${BUILDKITE_MESSAGE}" + env: + REGION_ID: aws-us-east-1 + NAME_PREFIX: ci_test_${SERVICE}-promotion_ + - wait: ~ - label: ":judge::seedling: Trigger Manual Tests Phase" command: "make -C /agent trigger-manual-verification-phase" agents: - image: "docker.elastic.co/ci-agent-images/manual-verification-agent:0.0.1" + image: "docker.elastic.co/ci-agent-images/manual-verification-agent:0.0.2" diff --git a/.buildkite/pipelines/quality-gates/pipeline.tests-qa.yaml b/.buildkite/pipelines/quality-gates/pipeline.tests-qa.yaml index 7bb446f5713f0..e03e986f65833 100644 --- a/.buildkite/pipelines/quality-gates/pipeline.tests-qa.yaml +++ b/.buildkite/pipelines/quality-gates/pipeline.tests-qa.yaml @@ -1,6 +1,6 @@ -env: - TEAM_CHANNEL: "#kibana-serverless-release" - ENVIRONMENT: "qa" +# These pipeline steps constitute the quality gate for your service within the QA environment. +# Incorporate any necessary additional logic to validate the service's integrity. A failure in +# this pipeline build will prevent further progression to the subsequent stage. steps: - label: ":pipeline::kibana::seedling: Trigger Kibana Tests for ${ENVIRONMENT}" @@ -23,9 +23,17 @@ steps: agents: image: "docker.elastic.co/ci-agent-images/basic-buildkite-agent:1688566364" + - label: ":rocket: Run cp e2e tests" + trigger: "ess-k8s-qa-e2e-tests-daily" + build: + message: "${BUILDKITE_MESSAGE}" + env: + REGION_ID: aws-eu-west-1 + NAME_PREFIX: ci_test_kibana-promotion_ + - wait: ~ - label: ":judge::seedling: Trigger Manual Tests Phase" command: "make -C /agent trigger-manual-verification-phase" agents: - image: "docker.elastic.co/ci-agent-images/manual-verification-agent:0.0.1" + image: "docker.elastic.co/ci-agent-images/manual-verification-agent:0.0.2" diff --git a/.buildkite/pipelines/quality-gates/pipeline.tests-staging.yaml b/.buildkite/pipelines/quality-gates/pipeline.tests-staging.yaml index 2f3e497fc6d31..83bfd0d27e34c 100644 --- a/.buildkite/pipelines/quality-gates/pipeline.tests-staging.yaml +++ b/.buildkite/pipelines/quality-gates/pipeline.tests-staging.yaml @@ -1,6 +1,6 @@ -env: - TEAM_CHANNEL: "#kibana-serverless-release" - ENVIRONMENT: "staging" +# These pipeline steps constitute the quality gate for your service within the staging environment. +# Incorporate any necessary additional logic to validate the service's integrity. A failure in +# this pipeline build will prevent further progression to the subsequent stage. steps: - label: ":pipeline::fleet::seedling: Trigger Observability Kibana Tests for ${ENVIRONMENT}" @@ -13,9 +13,17 @@ steps: agents: image: "docker.elastic.co/ci-agent-images/basic-buildkite-agent:1688566364" + - label: ":rocket: Run cp e2e tests" + trigger: "ess-k8s-staging-e2e-tests" + build: + message: "${BUILDKITE_MESSAGE}" + env: + REGION_ID: aws-us-east-1 + NAME_PREFIX: ci_test_kibana-promotion_ + - wait: ~ - label: ":judge::seedling: Trigger Manual Tests Phase" command: "make -C /agent trigger-manual-verification-phase" agents: - image: "docker.elastic.co/ci-agent-images/manual-verification-agent:0.0.1" + image: "docker.elastic.co/ci-agent-images/manual-verification-agent:0.0.2" diff --git a/.buildkite/pipelines/serverless.yml b/.buildkite/pipelines/serverless.yml index 10d1090521adb..e7b5dbc299722 100644 --- a/.buildkite/pipelines/serverless.yml +++ b/.buildkite/pipelines/serverless.yml @@ -105,7 +105,7 @@ steps: queue: n2-4-spot depends_on: build timeout_in_minutes: 40 - parallelism: 16 + parallelism: 12 retry: automatic: - exit_status: '*' diff --git a/.buildkite/scripts/steps/functional/osquery_cypress.sh b/.buildkite/scripts/steps/functional/osquery_cypress.sh index eab0f808b7352..da27c27559a45 100755 --- a/.buildkite/scripts/steps/functional/osquery_cypress.sh +++ b/.buildkite/scripts/steps/functional/osquery_cypress.sh @@ -14,5 +14,4 @@ echo "--- Osquery Cypress tests" cd x-pack/plugins/osquery -set +e -yarn cypress:run; status=$?; yarn junit:merge && exit $status +yarn --cwd x-pack/plugins/osquery cypress:run \ No newline at end of file diff --git a/.buildkite/scripts/steps/functional/osquery_cypress_burn.sh b/.buildkite/scripts/steps/functional/osquery_cypress_burn.sh index ed59007086e16..8aa5f28ce67cd 100755 --- a/.buildkite/scripts/steps/functional/osquery_cypress_burn.sh +++ b/.buildkite/scripts/steps/functional/osquery_cypress_burn.sh @@ -14,5 +14,4 @@ buildkite-agent meta-data set "${BUILDKITE_JOB_ID}_is_test_execution_step" 'fals echo "--- Osquery Cypress tests, burning changed specs (Chrome)" -set +e -yarn cypress:changed-specs-only; status=$?; yarn junit:merge && exit $status \ No newline at end of file +yarn --cwd x-pack/plugins/osquery cypress:changed-specs-only \ No newline at end of file diff --git a/.eslintrc.js b/.eslintrc.js index 5b5ef73ed3806..6657ba3cb1f01 100644 --- a/.eslintrc.js +++ b/.eslintrc.js @@ -909,11 +909,15 @@ module.exports = { { files: [ 'x-pack/plugins/apm/**/*.{js,mjs,ts,tsx}', - 'x-pack/plugins/observability/**/*.{js,mjs,ts,tsx}', 'x-pack/plugins/exploratory_view/**/*.{js,mjs,ts,tsx}', - 'x-pack/plugins/ux/**/*.{js,mjs,ts,tsx}', - 'x-pack/plugins/synthetics/**/*.{js,mjs,ts,tsx}', 'x-pack/plugins/infra/**/*.{js,mjs,ts,tsx}', + 'x-pack/plugins/observability/**/*.{js,mjs,ts,tsx}', + 'x-pack/plugins/observability_ai_assistant/**/*.{js,mjs,ts,tsx}', + 'x-pack/plugins/observability_onboarding/**/*.{js,mjs,ts,tsx}', + 'x-pack/plugins/observability_shared/**/*.{js,mjs,ts,tsx}', + 'x-pack/plugins/profiling/**/*.{js,mjs,ts,tsx}', + 'x-pack/plugins/synthetics/**/*.{js,mjs,ts,tsx}', + 'x-pack/plugins/ux/**/*.{js,mjs,ts,tsx}', ], rules: { '@kbn/telemetry/event_generating_elements_should_be_instrumented': 'error', diff --git a/.github/workflows/create-deploy-tag.yml b/.github/workflows/create-deploy-tag.yml index ec06f8c11b49d..b230f2a929287 100644 --- a/.github/workflows/create-deploy-tag.yml +++ b/.github/workflows/create-deploy-tag.yml @@ -19,7 +19,7 @@ concurrency: jobs: create-deploy-tag: # Temporary, we need a way to limit this to a GitHub team instead of specific users - if: contains('["watson","clintandrewhall","kobelb","lukeelmers","thomasneirynck"]', github.triggering_actor) + if: contains('["watson","clintandrewhall","kobelb","lukeelmers","thomasneirynck","jbudz","mistic","delanni","Ikuni17"]', github.triggering_actor) runs-on: ubuntu-latest permissions: contents: write @@ -63,7 +63,7 @@ jobs: "type": "section", "text": { "type": "mrkdwn", - "text": "A new has been promoted to QA 🎉\n\nOnce promotion is complete, please begin any required manual testing.\n\n*Remember:* Promotion to Staging is currently a manual process and will proceed once the build is signed off in QA." + "text": "Promotion of a new to QA has been initiated 🎉\n\nOnce promotion is complete, please begin any required manual testing.\n\n*Remember:* Promotion to Staging is currently a manual process and will proceed once the build is signed off in QA." } }, { @@ -73,10 +73,6 @@ jobs: "type": "mrkdwn", "text": "*Initiated by:*\n" }, - { - "type": "mrkdwn", - "text": "*Workflow run:*\n" - }, { "type": "mrkdwn", "text": "*Commit:*\n" @@ -107,7 +103,7 @@ jobs: "type": "section", "text": { "type": "mrkdwn", - "text": "*Useful links:*\n\n • \n • " + "text": "*Useful links:*\n\n • \n • \n • \n • \n • " } }, { @@ -153,7 +149,7 @@ jobs: "type": "section", "text": { "type": "mrkdwn", - "text": "Promotion of to QA failed ⛔️" + "text": "Creation of deploy tag on failed ⛔️" } }, { @@ -163,10 +159,6 @@ jobs: "type": "mrkdwn", "text": "*Initiated by:*\n" }, - { - "type": "mrkdwn", - "text": "*Workflow run:*\n" - }, { "type": "mrkdwn", "text": "*Commit:*\n" @@ -177,7 +169,7 @@ jobs: "type": "section", "text": { "type": "mrkdwn", - "text": "*Useful links:*\n\n • " + "text": "*Useful links:*\n\n • \n • " } } ] diff --git a/api_docs/actions.devdocs.json b/api_docs/actions.devdocs.json index ab2fd467cd958..68e7723fc7fa1 100644 --- a/api_docs/actions.devdocs.json +++ b/api_docs/actions.devdocs.json @@ -3509,6 +3509,38 @@ "trackAdoption": false, "children": [], "returnComment": [] + }, + { + "parentPluginId": "actions", + "id": "def-server.PluginSetupContract.setEnabledConnectorTypes", + "type": "Function", + "tags": [], + "label": "setEnabledConnectorTypes", + "description": [], + "signature": [ + "(connectorTypes: string[]) => void" + ], + "path": "x-pack/plugins/actions/server/plugin.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "actions", + "id": "def-server.PluginSetupContract.setEnabledConnectorTypes.$1", + "type": "Array", + "tags": [], + "label": "connectorTypes", + "description": [], + "signature": [ + "string[]" + ], + "path": "x-pack/plugins/actions/server/plugin.ts", + "deprecated": false, + "trackAdoption": false, + "isRequired": true + } + ], + "returnComment": [] } ], "lifecycle": "setup", diff --git a/api_docs/actions.mdx b/api_docs/actions.mdx index 1675e5db1912c..0985f86300e69 100644 --- a/api_docs/actions.mdx +++ b/api_docs/actions.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/actions title: "actions" image: https://source.unsplash.com/400x175/?github description: API docs for the actions plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'actions'] --- import actionsObj from './actions.devdocs.json'; @@ -21,7 +21,7 @@ Contact [@elastic/response-ops](https://github.com/orgs/elastic/teams/response-o | Public API count | Any count | Items lacking comments | Missing exports | |-------------------|-----------|------------------------|-----------------| -| 267 | 0 | 261 | 30 | +| 269 | 0 | 263 | 30 | ## Client diff --git a/api_docs/advanced_settings.mdx b/api_docs/advanced_settings.mdx index 17d00954ff5e6..4db3eb7532c53 100644 --- a/api_docs/advanced_settings.mdx +++ b/api_docs/advanced_settings.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/advancedSettings title: "advancedSettings" image: https://source.unsplash.com/400x175/?github description: API docs for the advancedSettings plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'advancedSettings'] --- import advancedSettingsObj from './advanced_settings.devdocs.json'; diff --git a/api_docs/aiops.mdx b/api_docs/aiops.mdx index e69040bbcb687..85d9b71699e77 100644 --- a/api_docs/aiops.mdx +++ b/api_docs/aiops.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/aiops title: "aiops" image: https://source.unsplash.com/400x175/?github description: API docs for the aiops plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'aiops'] --- import aiopsObj from './aiops.devdocs.json'; diff --git a/api_docs/alerting.mdx b/api_docs/alerting.mdx index 74220f3e48d63..319891bcf513d 100644 --- a/api_docs/alerting.mdx +++ b/api_docs/alerting.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/alerting title: "alerting" image: https://source.unsplash.com/400x175/?github description: API docs for the alerting plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'alerting'] --- import alertingObj from './alerting.devdocs.json'; diff --git a/api_docs/apm.mdx b/api_docs/apm.mdx index 1f3e0da71d41a..a895f490187fb 100644 --- a/api_docs/apm.mdx +++ b/api_docs/apm.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/apm title: "apm" image: https://source.unsplash.com/400x175/?github description: API docs for the apm plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'apm'] --- import apmObj from './apm.devdocs.json'; diff --git a/api_docs/apm_data_access.mdx b/api_docs/apm_data_access.mdx index 7e0cb19b76349..2373d1d20cfac 100644 --- a/api_docs/apm_data_access.mdx +++ b/api_docs/apm_data_access.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/apmDataAccess title: "apmDataAccess" image: https://source.unsplash.com/400x175/?github description: API docs for the apmDataAccess plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'apmDataAccess'] --- import apmDataAccessObj from './apm_data_access.devdocs.json'; diff --git a/api_docs/asset_manager.mdx b/api_docs/asset_manager.mdx index 7c9e072b32a5a..5a2e02e21714f 100644 --- a/api_docs/asset_manager.mdx +++ b/api_docs/asset_manager.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/assetManager title: "assetManager" image: https://source.unsplash.com/400x175/?github description: API docs for the assetManager plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'assetManager'] --- import assetManagerObj from './asset_manager.devdocs.json'; diff --git a/api_docs/banners.mdx b/api_docs/banners.mdx index b095e025ebb25..71690f87c1a92 100644 --- a/api_docs/banners.mdx +++ b/api_docs/banners.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/banners title: "banners" image: https://source.unsplash.com/400x175/?github description: API docs for the banners plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'banners'] --- import bannersObj from './banners.devdocs.json'; diff --git a/api_docs/bfetch.mdx b/api_docs/bfetch.mdx index b35d2c259da58..cc1fe5f9fa748 100644 --- a/api_docs/bfetch.mdx +++ b/api_docs/bfetch.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/bfetch title: "bfetch" image: https://source.unsplash.com/400x175/?github description: API docs for the bfetch plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'bfetch'] --- import bfetchObj from './bfetch.devdocs.json'; diff --git a/api_docs/canvas.mdx b/api_docs/canvas.mdx index 391741661db72..f8d7b2a27d369 100644 --- a/api_docs/canvas.mdx +++ b/api_docs/canvas.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/canvas title: "canvas" image: https://source.unsplash.com/400x175/?github description: API docs for the canvas plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'canvas'] --- import canvasObj from './canvas.devdocs.json'; diff --git a/api_docs/cases.mdx b/api_docs/cases.mdx index 34f1b185e06bc..1af3539ef5ac9 100644 --- a/api_docs/cases.mdx +++ b/api_docs/cases.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/cases title: "cases" image: https://source.unsplash.com/400x175/?github description: API docs for the cases plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'cases'] --- import casesObj from './cases.devdocs.json'; diff --git a/api_docs/charts.mdx b/api_docs/charts.mdx index 80664fabad87d..d3d61657ed676 100644 --- a/api_docs/charts.mdx +++ b/api_docs/charts.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/charts title: "charts" image: https://source.unsplash.com/400x175/?github description: API docs for the charts plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'charts'] --- import chartsObj from './charts.devdocs.json'; diff --git a/api_docs/cloud.mdx b/api_docs/cloud.mdx index 73b5ef4c2517e..01f2089596b6a 100644 --- a/api_docs/cloud.mdx +++ b/api_docs/cloud.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/cloud title: "cloud" image: https://source.unsplash.com/400x175/?github description: API docs for the cloud plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'cloud'] --- import cloudObj from './cloud.devdocs.json'; diff --git a/api_docs/cloud_chat.mdx b/api_docs/cloud_chat.mdx index 8b0f6a65ddd8e..be0fb6438525b 100644 --- a/api_docs/cloud_chat.mdx +++ b/api_docs/cloud_chat.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/cloudChat title: "cloudChat" image: https://source.unsplash.com/400x175/?github description: API docs for the cloudChat plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'cloudChat'] --- import cloudChatObj from './cloud_chat.devdocs.json'; diff --git a/api_docs/cloud_chat_provider.mdx b/api_docs/cloud_chat_provider.mdx index 89e27b560261f..88d1e38aa0e5a 100644 --- a/api_docs/cloud_chat_provider.mdx +++ b/api_docs/cloud_chat_provider.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/cloudChatProvider title: "cloudChatProvider" image: https://source.unsplash.com/400x175/?github description: API docs for the cloudChatProvider plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'cloudChatProvider'] --- import cloudChatProviderObj from './cloud_chat_provider.devdocs.json'; diff --git a/api_docs/cloud_data_migration.mdx b/api_docs/cloud_data_migration.mdx index 5410157a3a4e8..b6124e08cd350 100644 --- a/api_docs/cloud_data_migration.mdx +++ b/api_docs/cloud_data_migration.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/cloudDataMigration title: "cloudDataMigration" image: https://source.unsplash.com/400x175/?github description: API docs for the cloudDataMigration plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'cloudDataMigration'] --- import cloudDataMigrationObj from './cloud_data_migration.devdocs.json'; diff --git a/api_docs/cloud_defend.mdx b/api_docs/cloud_defend.mdx index 765d3226f9c3a..4e21c123a96e8 100644 --- a/api_docs/cloud_defend.mdx +++ b/api_docs/cloud_defend.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/cloudDefend title: "cloudDefend" image: https://source.unsplash.com/400x175/?github description: API docs for the cloudDefend plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'cloudDefend'] --- import cloudDefendObj from './cloud_defend.devdocs.json'; diff --git a/api_docs/cloud_experiments.mdx b/api_docs/cloud_experiments.mdx index e0b54f328ba2c..8efe7de4747d1 100644 --- a/api_docs/cloud_experiments.mdx +++ b/api_docs/cloud_experiments.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/cloudExperiments title: "cloudExperiments" image: https://source.unsplash.com/400x175/?github description: API docs for the cloudExperiments plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'cloudExperiments'] --- import cloudExperimentsObj from './cloud_experiments.devdocs.json'; diff --git a/api_docs/cloud_security_posture.mdx b/api_docs/cloud_security_posture.mdx index 113f43f209db5..4c8df64fa2cfc 100644 --- a/api_docs/cloud_security_posture.mdx +++ b/api_docs/cloud_security_posture.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/cloudSecurityPosture title: "cloudSecurityPosture" image: https://source.unsplash.com/400x175/?github description: API docs for the cloudSecurityPosture plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'cloudSecurityPosture'] --- import cloudSecurityPostureObj from './cloud_security_posture.devdocs.json'; diff --git a/api_docs/console.mdx b/api_docs/console.mdx index 6318a4faa542c..4940ef352585c 100644 --- a/api_docs/console.mdx +++ b/api_docs/console.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/console title: "console" image: https://source.unsplash.com/400x175/?github description: API docs for the console plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'console'] --- import consoleObj from './console.devdocs.json'; diff --git a/api_docs/content_management.mdx b/api_docs/content_management.mdx index 9886b7a3ea00b..3237478bf66c9 100644 --- a/api_docs/content_management.mdx +++ b/api_docs/content_management.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/contentManagement title: "contentManagement" image: https://source.unsplash.com/400x175/?github description: API docs for the contentManagement plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'contentManagement'] --- import contentManagementObj from './content_management.devdocs.json'; diff --git a/api_docs/controls.mdx b/api_docs/controls.mdx index a5dd74b6330d1..2cb7a44d97fd0 100644 --- a/api_docs/controls.mdx +++ b/api_docs/controls.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/controls title: "controls" image: https://source.unsplash.com/400x175/?github description: API docs for the controls plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'controls'] --- import controlsObj from './controls.devdocs.json'; diff --git a/api_docs/custom_integrations.mdx b/api_docs/custom_integrations.mdx index 66ba3a87e78bb..d13956de9f217 100644 --- a/api_docs/custom_integrations.mdx +++ b/api_docs/custom_integrations.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/customIntegrations title: "customIntegrations" image: https://source.unsplash.com/400x175/?github description: API docs for the customIntegrations plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'customIntegrations'] --- import customIntegrationsObj from './custom_integrations.devdocs.json'; diff --git a/api_docs/dashboard.mdx b/api_docs/dashboard.mdx index 91b1eb51f287b..12a480db48c7d 100644 --- a/api_docs/dashboard.mdx +++ b/api_docs/dashboard.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/dashboard title: "dashboard" image: https://source.unsplash.com/400x175/?github description: API docs for the dashboard plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'dashboard'] --- import dashboardObj from './dashboard.devdocs.json'; diff --git a/api_docs/dashboard_enhanced.mdx b/api_docs/dashboard_enhanced.mdx index a45b5025b2fe9..74994c4829bec 100644 --- a/api_docs/dashboard_enhanced.mdx +++ b/api_docs/dashboard_enhanced.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/dashboardEnhanced title: "dashboardEnhanced" image: https://source.unsplash.com/400x175/?github description: API docs for the dashboardEnhanced plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'dashboardEnhanced'] --- import dashboardEnhancedObj from './dashboard_enhanced.devdocs.json'; diff --git a/api_docs/data.mdx b/api_docs/data.mdx index 70949b17f4987..46531c9a02904 100644 --- a/api_docs/data.mdx +++ b/api_docs/data.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/data title: "data" image: https://source.unsplash.com/400x175/?github description: API docs for the data plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'data'] --- import dataObj from './data.devdocs.json'; diff --git a/api_docs/data_query.mdx b/api_docs/data_query.mdx index 62d0861bbbf19..310e48213af7a 100644 --- a/api_docs/data_query.mdx +++ b/api_docs/data_query.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/data-query title: "data.query" image: https://source.unsplash.com/400x175/?github description: API docs for the data.query plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'data.query'] --- import dataQueryObj from './data_query.devdocs.json'; diff --git a/api_docs/data_search.mdx b/api_docs/data_search.mdx index fde4b2f40f862..08230c72660ac 100644 --- a/api_docs/data_search.mdx +++ b/api_docs/data_search.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/data-search title: "data.search" image: https://source.unsplash.com/400x175/?github description: API docs for the data.search plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'data.search'] --- import dataSearchObj from './data_search.devdocs.json'; diff --git a/api_docs/data_view_editor.mdx b/api_docs/data_view_editor.mdx index d2fa815d40409..a29d62bd9c5ae 100644 --- a/api_docs/data_view_editor.mdx +++ b/api_docs/data_view_editor.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/dataViewEditor title: "dataViewEditor" image: https://source.unsplash.com/400x175/?github description: API docs for the dataViewEditor plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'dataViewEditor'] --- import dataViewEditorObj from './data_view_editor.devdocs.json'; diff --git a/api_docs/data_view_field_editor.mdx b/api_docs/data_view_field_editor.mdx index c10490b5d7a9a..187c9712e4b69 100644 --- a/api_docs/data_view_field_editor.mdx +++ b/api_docs/data_view_field_editor.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/dataViewFieldEditor title: "dataViewFieldEditor" image: https://source.unsplash.com/400x175/?github description: API docs for the dataViewFieldEditor plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'dataViewFieldEditor'] --- import dataViewFieldEditorObj from './data_view_field_editor.devdocs.json'; diff --git a/api_docs/data_view_management.mdx b/api_docs/data_view_management.mdx index 6e41bcc12d78a..07264a9d936a1 100644 --- a/api_docs/data_view_management.mdx +++ b/api_docs/data_view_management.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/dataViewManagement title: "dataViewManagement" image: https://source.unsplash.com/400x175/?github description: API docs for the dataViewManagement plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'dataViewManagement'] --- import dataViewManagementObj from './data_view_management.devdocs.json'; diff --git a/api_docs/data_views.mdx b/api_docs/data_views.mdx index 0d85b10f37cbd..9e13e90657c1c 100644 --- a/api_docs/data_views.mdx +++ b/api_docs/data_views.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/dataViews title: "dataViews" image: https://source.unsplash.com/400x175/?github description: API docs for the dataViews plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'dataViews'] --- import dataViewsObj from './data_views.devdocs.json'; diff --git a/api_docs/data_visualizer.mdx b/api_docs/data_visualizer.mdx index dec5ec2987ed8..4fa0316ec8e5a 100644 --- a/api_docs/data_visualizer.mdx +++ b/api_docs/data_visualizer.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/dataVisualizer title: "dataVisualizer" image: https://source.unsplash.com/400x175/?github description: API docs for the dataVisualizer plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'dataVisualizer'] --- import dataVisualizerObj from './data_visualizer.devdocs.json'; diff --git a/api_docs/deprecations_by_api.mdx b/api_docs/deprecations_by_api.mdx index a01b818334271..10632b2d4896b 100644 --- a/api_docs/deprecations_by_api.mdx +++ b/api_docs/deprecations_by_api.mdx @@ -7,7 +7,7 @@ id: kibDevDocsDeprecationsByApi slug: /kibana-dev-docs/api-meta/deprecated-api-list-by-api title: Deprecated API usage by API description: A list of deprecated APIs, which plugins are still referencing them, and when they need to be removed by. -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana'] --- diff --git a/api_docs/deprecations_by_plugin.mdx b/api_docs/deprecations_by_plugin.mdx index b09904070bf9a..195314fc734f8 100644 --- a/api_docs/deprecations_by_plugin.mdx +++ b/api_docs/deprecations_by_plugin.mdx @@ -7,7 +7,7 @@ id: kibDevDocsDeprecationsByPlugin slug: /kibana-dev-docs/api-meta/deprecated-api-list-by-plugin title: Deprecated API usage by plugin description: A list of deprecated APIs, which plugins are still referencing them, and when they need to be removed by. -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana'] --- @@ -921,7 +921,7 @@ tags: ['contributor', 'dev', 'apidocs', 'kibana'] | | [deserialize.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/graph/public/services/persistence/deserialize.ts#:~:text=getNonScriptedFields), [datasource.test.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/graph/public/state_management/datasource.test.ts#:~:text=getNonScriptedFields), [deserialize.test.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/graph/public/services/persistence/deserialize.test.ts#:~:text=getNonScriptedFields), [deserialize.test.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/graph/public/services/persistence/deserialize.test.ts#:~:text=getNonScriptedFields), [deserialize.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/graph/public/services/persistence/deserialize.ts#:~:text=getNonScriptedFields), [datasource.test.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/graph/public/state_management/datasource.test.ts#:~:text=getNonScriptedFields), [deserialize.test.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/graph/public/services/persistence/deserialize.test.ts#:~:text=getNonScriptedFields), [deserialize.test.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/graph/public/services/persistence/deserialize.test.ts#:~:text=getNonScriptedFields) | - | | | [datasource.sagas.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/graph/public/state_management/datasource.sagas.ts#:~:text=title), [persistence.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/graph/public/state_management/persistence.ts#:~:text=title), [persistence.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/graph/public/state_management/persistence.ts#:~:text=title), [datasource.test.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/graph/public/state_management/datasource.test.ts#:~:text=title) | - | | | [deserialize.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/graph/public/services/persistence/deserialize.ts#:~:text=getNonScriptedFields), [datasource.test.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/graph/public/state_management/datasource.test.ts#:~:text=getNonScriptedFields), [deserialize.test.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/graph/public/services/persistence/deserialize.test.ts#:~:text=getNonScriptedFields), [deserialize.test.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/graph/public/services/persistence/deserialize.test.ts#:~:text=getNonScriptedFields) | - | -| | [confirm_modal_promise.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/graph/public/helpers/saved_objects_utils/confirm_modal_promise.tsx#:~:text=toMountPoint), [confirm_modal_promise.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/graph/public/helpers/saved_objects_utils/confirm_modal_promise.tsx#:~:text=toMountPoint), [workspace_top_nav_menu.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/graph/public/components/workspace_layout/workspace_top_nav_menu.tsx#:~:text=toMountPoint), [workspace_top_nav_menu.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/graph/public/components/workspace_layout/workspace_top_nav_menu.tsx#:~:text=toMountPoint), [application.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/graph/public/application.tsx#:~:text=toMountPoint), [application.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/graph/public/application.tsx#:~:text=toMountPoint) | - | +| | [confirm_modal_promise.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/graph/public/helpers/saved_objects_utils/confirm_modal_promise.tsx#:~:text=toMountPoint), [confirm_modal_promise.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/graph/public/helpers/saved_objects_utils/confirm_modal_promise.tsx#:~:text=toMountPoint), [application.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/graph/public/application.tsx#:~:text=toMountPoint), [application.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/graph/public/application.tsx#:~:text=toMountPoint) | - | | | [application.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/graph/public/application.tsx#:~:text=KibanaThemeProvider), [application.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/graph/public/application.tsx#:~:text=KibanaThemeProvider), [application.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/graph/public/application.tsx#:~:text=KibanaThemeProvider) | - | | | [plugin.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/graph/server/plugin.ts#:~:text=license%24) | 8.8.0 | | | [source_picker.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/graph/public/components/source_picker.tsx#:~:text=includeFields) | - | diff --git a/api_docs/deprecations_by_team.mdx b/api_docs/deprecations_by_team.mdx index bbdf4234fb74b..a325fd6f43f55 100644 --- a/api_docs/deprecations_by_team.mdx +++ b/api_docs/deprecations_by_team.mdx @@ -7,7 +7,7 @@ id: kibDevDocsDeprecationsDueByTeam slug: /kibana-dev-docs/api-meta/deprecations-due-by-team title: Deprecated APIs due to be removed, by team description: Lists the teams that are referencing deprecated APIs with a remove by date. -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana'] --- diff --git a/api_docs/dev_tools.mdx b/api_docs/dev_tools.mdx index 6b0064c8f0858..de965350e87ad 100644 --- a/api_docs/dev_tools.mdx +++ b/api_docs/dev_tools.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/devTools title: "devTools" image: https://source.unsplash.com/400x175/?github description: API docs for the devTools plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'devTools'] --- import devToolsObj from './dev_tools.devdocs.json'; diff --git a/api_docs/discover.mdx b/api_docs/discover.mdx index a63ae77760646..c74856cd3ff5e 100644 --- a/api_docs/discover.mdx +++ b/api_docs/discover.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/discover title: "discover" image: https://source.unsplash.com/400x175/?github description: API docs for the discover plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'discover'] --- import discoverObj from './discover.devdocs.json'; diff --git a/api_docs/discover_enhanced.mdx b/api_docs/discover_enhanced.mdx index 675890ffa1ac8..9f6ff44667e3a 100644 --- a/api_docs/discover_enhanced.mdx +++ b/api_docs/discover_enhanced.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/discoverEnhanced title: "discoverEnhanced" image: https://source.unsplash.com/400x175/?github description: API docs for the discoverEnhanced plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'discoverEnhanced'] --- import discoverEnhancedObj from './discover_enhanced.devdocs.json'; diff --git a/api_docs/ecs_data_quality_dashboard.mdx b/api_docs/ecs_data_quality_dashboard.mdx index 90e742bda6198..97310dfc057fe 100644 --- a/api_docs/ecs_data_quality_dashboard.mdx +++ b/api_docs/ecs_data_quality_dashboard.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/ecsDataQualityDashboard title: "ecsDataQualityDashboard" image: https://source.unsplash.com/400x175/?github description: API docs for the ecsDataQualityDashboard plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'ecsDataQualityDashboard'] --- import ecsDataQualityDashboardObj from './ecs_data_quality_dashboard.devdocs.json'; diff --git a/api_docs/elastic_assistant.mdx b/api_docs/elastic_assistant.mdx index ace6dbb2a4c7d..ec0bdf9631439 100644 --- a/api_docs/elastic_assistant.mdx +++ b/api_docs/elastic_assistant.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/elasticAssistant title: "elasticAssistant" image: https://source.unsplash.com/400x175/?github description: API docs for the elasticAssistant plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'elasticAssistant'] --- import elasticAssistantObj from './elastic_assistant.devdocs.json'; diff --git a/api_docs/embeddable.mdx b/api_docs/embeddable.mdx index be41e8d5bc699..06a56b891b64e 100644 --- a/api_docs/embeddable.mdx +++ b/api_docs/embeddable.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/embeddable title: "embeddable" image: https://source.unsplash.com/400x175/?github description: API docs for the embeddable plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'embeddable'] --- import embeddableObj from './embeddable.devdocs.json'; diff --git a/api_docs/embeddable_enhanced.mdx b/api_docs/embeddable_enhanced.mdx index 8fd457f066ffe..ec718fa5655d2 100644 --- a/api_docs/embeddable_enhanced.mdx +++ b/api_docs/embeddable_enhanced.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/embeddableEnhanced title: "embeddableEnhanced" image: https://source.unsplash.com/400x175/?github description: API docs for the embeddableEnhanced plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'embeddableEnhanced'] --- import embeddableEnhancedObj from './embeddable_enhanced.devdocs.json'; diff --git a/api_docs/encrypted_saved_objects.mdx b/api_docs/encrypted_saved_objects.mdx index cf6cd38a5251c..4f83486d558e2 100644 --- a/api_docs/encrypted_saved_objects.mdx +++ b/api_docs/encrypted_saved_objects.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/encryptedSavedObjects title: "encryptedSavedObjects" image: https://source.unsplash.com/400x175/?github description: API docs for the encryptedSavedObjects plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'encryptedSavedObjects'] --- import encryptedSavedObjectsObj from './encrypted_saved_objects.devdocs.json'; diff --git a/api_docs/enterprise_search.mdx b/api_docs/enterprise_search.mdx index 07418305cdc71..5499ef93aa543 100644 --- a/api_docs/enterprise_search.mdx +++ b/api_docs/enterprise_search.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/enterpriseSearch title: "enterpriseSearch" image: https://source.unsplash.com/400x175/?github description: API docs for the enterpriseSearch plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'enterpriseSearch'] --- import enterpriseSearchObj from './enterprise_search.devdocs.json'; diff --git a/api_docs/es_ui_shared.mdx b/api_docs/es_ui_shared.mdx index f5aaa1ac5bd5c..0f19677a6dad2 100644 --- a/api_docs/es_ui_shared.mdx +++ b/api_docs/es_ui_shared.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/esUiShared title: "esUiShared" image: https://source.unsplash.com/400x175/?github description: API docs for the esUiShared plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'esUiShared'] --- import esUiSharedObj from './es_ui_shared.devdocs.json'; diff --git a/api_docs/event_annotation.mdx b/api_docs/event_annotation.mdx index d72d41002cf5d..2d036d98c176a 100644 --- a/api_docs/event_annotation.mdx +++ b/api_docs/event_annotation.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/eventAnnotation title: "eventAnnotation" image: https://source.unsplash.com/400x175/?github description: API docs for the eventAnnotation plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'eventAnnotation'] --- import eventAnnotationObj from './event_annotation.devdocs.json'; diff --git a/api_docs/event_log.mdx b/api_docs/event_log.mdx index edabbf7f2b416..28d0b86a754bf 100644 --- a/api_docs/event_log.mdx +++ b/api_docs/event_log.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/eventLog title: "eventLog" image: https://source.unsplash.com/400x175/?github description: API docs for the eventLog plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'eventLog'] --- import eventLogObj from './event_log.devdocs.json'; diff --git a/api_docs/exploratory_view.mdx b/api_docs/exploratory_view.mdx index d977e9d3c6444..872e71e7d9514 100644 --- a/api_docs/exploratory_view.mdx +++ b/api_docs/exploratory_view.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/exploratoryView title: "exploratoryView" image: https://source.unsplash.com/400x175/?github description: API docs for the exploratoryView plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'exploratoryView'] --- import exploratoryViewObj from './exploratory_view.devdocs.json'; diff --git a/api_docs/expression_error.mdx b/api_docs/expression_error.mdx index cf353aeb1663c..2ebc1a0477ab0 100644 --- a/api_docs/expression_error.mdx +++ b/api_docs/expression_error.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/expressionError title: "expressionError" image: https://source.unsplash.com/400x175/?github description: API docs for the expressionError plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'expressionError'] --- import expressionErrorObj from './expression_error.devdocs.json'; diff --git a/api_docs/expression_gauge.mdx b/api_docs/expression_gauge.mdx index 4dc1d165e75fb..dbcfa79c17407 100644 --- a/api_docs/expression_gauge.mdx +++ b/api_docs/expression_gauge.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/expressionGauge title: "expressionGauge" image: https://source.unsplash.com/400x175/?github description: API docs for the expressionGauge plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'expressionGauge'] --- import expressionGaugeObj from './expression_gauge.devdocs.json'; diff --git a/api_docs/expression_heatmap.mdx b/api_docs/expression_heatmap.mdx index bd676f00bd162..92cc5b1de1d4f 100644 --- a/api_docs/expression_heatmap.mdx +++ b/api_docs/expression_heatmap.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/expressionHeatmap title: "expressionHeatmap" image: https://source.unsplash.com/400x175/?github description: API docs for the expressionHeatmap plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'expressionHeatmap'] --- import expressionHeatmapObj from './expression_heatmap.devdocs.json'; diff --git a/api_docs/expression_image.mdx b/api_docs/expression_image.mdx index e07f5ea5cd63f..3088aaeb30bfe 100644 --- a/api_docs/expression_image.mdx +++ b/api_docs/expression_image.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/expressionImage title: "expressionImage" image: https://source.unsplash.com/400x175/?github description: API docs for the expressionImage plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'expressionImage'] --- import expressionImageObj from './expression_image.devdocs.json'; diff --git a/api_docs/expression_legacy_metric_vis.mdx b/api_docs/expression_legacy_metric_vis.mdx index 38013982ab985..6069e11e72648 100644 --- a/api_docs/expression_legacy_metric_vis.mdx +++ b/api_docs/expression_legacy_metric_vis.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/expressionLegacyMetricVis title: "expressionLegacyMetricVis" image: https://source.unsplash.com/400x175/?github description: API docs for the expressionLegacyMetricVis plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'expressionLegacyMetricVis'] --- import expressionLegacyMetricVisObj from './expression_legacy_metric_vis.devdocs.json'; diff --git a/api_docs/expression_metric.mdx b/api_docs/expression_metric.mdx index 0e8902fbf0a0f..a99de7d753807 100644 --- a/api_docs/expression_metric.mdx +++ b/api_docs/expression_metric.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/expressionMetric title: "expressionMetric" image: https://source.unsplash.com/400x175/?github description: API docs for the expressionMetric plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'expressionMetric'] --- import expressionMetricObj from './expression_metric.devdocs.json'; diff --git a/api_docs/expression_metric_vis.mdx b/api_docs/expression_metric_vis.mdx index fcae81f5883cf..db6de17efd135 100644 --- a/api_docs/expression_metric_vis.mdx +++ b/api_docs/expression_metric_vis.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/expressionMetricVis title: "expressionMetricVis" image: https://source.unsplash.com/400x175/?github description: API docs for the expressionMetricVis plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'expressionMetricVis'] --- import expressionMetricVisObj from './expression_metric_vis.devdocs.json'; diff --git a/api_docs/expression_partition_vis.mdx b/api_docs/expression_partition_vis.mdx index 039b050b32bc6..8e515e738c6df 100644 --- a/api_docs/expression_partition_vis.mdx +++ b/api_docs/expression_partition_vis.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/expressionPartitionVis title: "expressionPartitionVis" image: https://source.unsplash.com/400x175/?github description: API docs for the expressionPartitionVis plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'expressionPartitionVis'] --- import expressionPartitionVisObj from './expression_partition_vis.devdocs.json'; diff --git a/api_docs/expression_repeat_image.mdx b/api_docs/expression_repeat_image.mdx index 9f2f3434acb56..773380b5de18f 100644 --- a/api_docs/expression_repeat_image.mdx +++ b/api_docs/expression_repeat_image.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/expressionRepeatImage title: "expressionRepeatImage" image: https://source.unsplash.com/400x175/?github description: API docs for the expressionRepeatImage plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'expressionRepeatImage'] --- import expressionRepeatImageObj from './expression_repeat_image.devdocs.json'; diff --git a/api_docs/expression_reveal_image.mdx b/api_docs/expression_reveal_image.mdx index 8f9d323b53023..0d0470eb67888 100644 --- a/api_docs/expression_reveal_image.mdx +++ b/api_docs/expression_reveal_image.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/expressionRevealImage title: "expressionRevealImage" image: https://source.unsplash.com/400x175/?github description: API docs for the expressionRevealImage plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'expressionRevealImage'] --- import expressionRevealImageObj from './expression_reveal_image.devdocs.json'; diff --git a/api_docs/expression_shape.mdx b/api_docs/expression_shape.mdx index f3e7d5eeaee3c..105172011496c 100644 --- a/api_docs/expression_shape.mdx +++ b/api_docs/expression_shape.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/expressionShape title: "expressionShape" image: https://source.unsplash.com/400x175/?github description: API docs for the expressionShape plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'expressionShape'] --- import expressionShapeObj from './expression_shape.devdocs.json'; diff --git a/api_docs/expression_tagcloud.mdx b/api_docs/expression_tagcloud.mdx index 214d3d21153e2..1101379011fb9 100644 --- a/api_docs/expression_tagcloud.mdx +++ b/api_docs/expression_tagcloud.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/expressionTagcloud title: "expressionTagcloud" image: https://source.unsplash.com/400x175/?github description: API docs for the expressionTagcloud plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'expressionTagcloud'] --- import expressionTagcloudObj from './expression_tagcloud.devdocs.json'; diff --git a/api_docs/expression_x_y.mdx b/api_docs/expression_x_y.mdx index 7f245d3889e1f..054d4560a99b0 100644 --- a/api_docs/expression_x_y.mdx +++ b/api_docs/expression_x_y.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/expressionXY title: "expressionXY" image: https://source.unsplash.com/400x175/?github description: API docs for the expressionXY plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'expressionXY'] --- import expressionXYObj from './expression_x_y.devdocs.json'; diff --git a/api_docs/expressions.mdx b/api_docs/expressions.mdx index ce5cf4cc0939f..74a4cd4d131bf 100644 --- a/api_docs/expressions.mdx +++ b/api_docs/expressions.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/expressions title: "expressions" image: https://source.unsplash.com/400x175/?github description: API docs for the expressions plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'expressions'] --- import expressionsObj from './expressions.devdocs.json'; diff --git a/api_docs/features.mdx b/api_docs/features.mdx index db13ee18b015e..fbfd9a1d0855f 100644 --- a/api_docs/features.mdx +++ b/api_docs/features.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/features title: "features" image: https://source.unsplash.com/400x175/?github description: API docs for the features plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'features'] --- import featuresObj from './features.devdocs.json'; diff --git a/api_docs/field_formats.mdx b/api_docs/field_formats.mdx index bc8dff8530b8e..176f7897ba0aa 100644 --- a/api_docs/field_formats.mdx +++ b/api_docs/field_formats.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/fieldFormats title: "fieldFormats" image: https://source.unsplash.com/400x175/?github description: API docs for the fieldFormats plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'fieldFormats'] --- import fieldFormatsObj from './field_formats.devdocs.json'; diff --git a/api_docs/file_upload.mdx b/api_docs/file_upload.mdx index 7cb2ca900ab10..d9b7d3b411174 100644 --- a/api_docs/file_upload.mdx +++ b/api_docs/file_upload.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/fileUpload title: "fileUpload" image: https://source.unsplash.com/400x175/?github description: API docs for the fileUpload plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'fileUpload'] --- import fileUploadObj from './file_upload.devdocs.json'; diff --git a/api_docs/files.mdx b/api_docs/files.mdx index 54c4bb33663b7..3eb1600270481 100644 --- a/api_docs/files.mdx +++ b/api_docs/files.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/files title: "files" image: https://source.unsplash.com/400x175/?github description: API docs for the files plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'files'] --- import filesObj from './files.devdocs.json'; diff --git a/api_docs/files_management.mdx b/api_docs/files_management.mdx index fe86c6e0074a2..dd194c513358c 100644 --- a/api_docs/files_management.mdx +++ b/api_docs/files_management.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/filesManagement title: "filesManagement" image: https://source.unsplash.com/400x175/?github description: API docs for the filesManagement plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'filesManagement'] --- import filesManagementObj from './files_management.devdocs.json'; diff --git a/api_docs/fleet.mdx b/api_docs/fleet.mdx index 58bf0969ecb00..02687c281e11c 100644 --- a/api_docs/fleet.mdx +++ b/api_docs/fleet.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/fleet title: "fleet" image: https://source.unsplash.com/400x175/?github description: API docs for the fleet plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'fleet'] --- import fleetObj from './fleet.devdocs.json'; diff --git a/api_docs/global_search.mdx b/api_docs/global_search.mdx index 53425f7e23d24..eb73dfcd24143 100644 --- a/api_docs/global_search.mdx +++ b/api_docs/global_search.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/globalSearch title: "globalSearch" image: https://source.unsplash.com/400x175/?github description: API docs for the globalSearch plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'globalSearch'] --- import globalSearchObj from './global_search.devdocs.json'; diff --git a/api_docs/guided_onboarding.mdx b/api_docs/guided_onboarding.mdx index a1230a39ce3f2..ea77ddbecac91 100644 --- a/api_docs/guided_onboarding.mdx +++ b/api_docs/guided_onboarding.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/guidedOnboarding title: "guidedOnboarding" image: https://source.unsplash.com/400x175/?github description: API docs for the guidedOnboarding plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'guidedOnboarding'] --- import guidedOnboardingObj from './guided_onboarding.devdocs.json'; diff --git a/api_docs/home.mdx b/api_docs/home.mdx index 9915ed0e2802a..689e76b0b9cad 100644 --- a/api_docs/home.mdx +++ b/api_docs/home.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/home title: "home" image: https://source.unsplash.com/400x175/?github description: API docs for the home plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'home'] --- import homeObj from './home.devdocs.json'; diff --git a/api_docs/image_embeddable.mdx b/api_docs/image_embeddable.mdx index 586539ca0d0aa..99620afbd13a1 100644 --- a/api_docs/image_embeddable.mdx +++ b/api_docs/image_embeddable.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/imageEmbeddable title: "imageEmbeddable" image: https://source.unsplash.com/400x175/?github description: API docs for the imageEmbeddable plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'imageEmbeddable'] --- import imageEmbeddableObj from './image_embeddable.devdocs.json'; diff --git a/api_docs/index_lifecycle_management.mdx b/api_docs/index_lifecycle_management.mdx index c394ca0f93615..942abb35cb86f 100644 --- a/api_docs/index_lifecycle_management.mdx +++ b/api_docs/index_lifecycle_management.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/indexLifecycleManagement title: "indexLifecycleManagement" image: https://source.unsplash.com/400x175/?github description: API docs for the indexLifecycleManagement plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'indexLifecycleManagement'] --- import indexLifecycleManagementObj from './index_lifecycle_management.devdocs.json'; diff --git a/api_docs/index_management.mdx b/api_docs/index_management.mdx index 25a6849dd773c..d9904dab581e3 100644 --- a/api_docs/index_management.mdx +++ b/api_docs/index_management.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/indexManagement title: "indexManagement" image: https://source.unsplash.com/400x175/?github description: API docs for the indexManagement plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'indexManagement'] --- import indexManagementObj from './index_management.devdocs.json'; diff --git a/api_docs/infra.mdx b/api_docs/infra.mdx index 0cccce355c006..90c41da824f8e 100644 --- a/api_docs/infra.mdx +++ b/api_docs/infra.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/infra title: "infra" image: https://source.unsplash.com/400x175/?github description: API docs for the infra plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'infra'] --- import infraObj from './infra.devdocs.json'; diff --git a/api_docs/inspector.mdx b/api_docs/inspector.mdx index 5b47285b9edcd..b889647d6b02a 100644 --- a/api_docs/inspector.mdx +++ b/api_docs/inspector.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/inspector title: "inspector" image: https://source.unsplash.com/400x175/?github description: API docs for the inspector plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'inspector'] --- import inspectorObj from './inspector.devdocs.json'; diff --git a/api_docs/interactive_setup.mdx b/api_docs/interactive_setup.mdx index c3c4259afdfb1..33964bc6de443 100644 --- a/api_docs/interactive_setup.mdx +++ b/api_docs/interactive_setup.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/interactiveSetup title: "interactiveSetup" image: https://source.unsplash.com/400x175/?github description: API docs for the interactiveSetup plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'interactiveSetup'] --- import interactiveSetupObj from './interactive_setup.devdocs.json'; diff --git a/api_docs/kbn_ace.mdx b/api_docs/kbn_ace.mdx index 9d13f55b01c3d..874707881804d 100644 --- a/api_docs/kbn_ace.mdx +++ b/api_docs/kbn_ace.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ace title: "@kbn/ace" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ace plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ace'] --- import kbnAceObj from './kbn_ace.devdocs.json'; diff --git a/api_docs/kbn_aiops_components.mdx b/api_docs/kbn_aiops_components.mdx index 6e51456817f54..05a81b1a8feef 100644 --- a/api_docs/kbn_aiops_components.mdx +++ b/api_docs/kbn_aiops_components.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-aiops-components title: "@kbn/aiops-components" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/aiops-components plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/aiops-components'] --- import kbnAiopsComponentsObj from './kbn_aiops_components.devdocs.json'; diff --git a/api_docs/kbn_aiops_utils.mdx b/api_docs/kbn_aiops_utils.mdx index 9bb30d89b5db3..677382c6e0405 100644 --- a/api_docs/kbn_aiops_utils.mdx +++ b/api_docs/kbn_aiops_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-aiops-utils title: "@kbn/aiops-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/aiops-utils plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/aiops-utils'] --- import kbnAiopsUtilsObj from './kbn_aiops_utils.devdocs.json'; diff --git a/api_docs/kbn_alerting_api_integration_helpers.mdx b/api_docs/kbn_alerting_api_integration_helpers.mdx index c60de50828f02..8a6ccbef94e04 100644 --- a/api_docs/kbn_alerting_api_integration_helpers.mdx +++ b/api_docs/kbn_alerting_api_integration_helpers.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-alerting-api-integration-helpers title: "@kbn/alerting-api-integration-helpers" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/alerting-api-integration-helpers plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/alerting-api-integration-helpers'] --- import kbnAlertingApiIntegrationHelpersObj from './kbn_alerting_api_integration_helpers.devdocs.json'; diff --git a/api_docs/kbn_alerting_state_types.mdx b/api_docs/kbn_alerting_state_types.mdx index 45459e55d57d2..c29ef9f2d3687 100644 --- a/api_docs/kbn_alerting_state_types.mdx +++ b/api_docs/kbn_alerting_state_types.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-alerting-state-types title: "@kbn/alerting-state-types" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/alerting-state-types plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/alerting-state-types'] --- import kbnAlertingStateTypesObj from './kbn_alerting_state_types.devdocs.json'; diff --git a/api_docs/kbn_alerts_as_data_utils.mdx b/api_docs/kbn_alerts_as_data_utils.mdx index 64b3d4ae9600c..20c1b38ed8419 100644 --- a/api_docs/kbn_alerts_as_data_utils.mdx +++ b/api_docs/kbn_alerts_as_data_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-alerts-as-data-utils title: "@kbn/alerts-as-data-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/alerts-as-data-utils plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/alerts-as-data-utils'] --- import kbnAlertsAsDataUtilsObj from './kbn_alerts_as_data_utils.devdocs.json'; diff --git a/api_docs/kbn_alerts_ui_shared.mdx b/api_docs/kbn_alerts_ui_shared.mdx index 0387bc14aa30c..2e4bcf1093c08 100644 --- a/api_docs/kbn_alerts_ui_shared.mdx +++ b/api_docs/kbn_alerts_ui_shared.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-alerts-ui-shared title: "@kbn/alerts-ui-shared" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/alerts-ui-shared plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/alerts-ui-shared'] --- import kbnAlertsUiSharedObj from './kbn_alerts_ui_shared.devdocs.json'; diff --git a/api_docs/kbn_analytics.mdx b/api_docs/kbn_analytics.mdx index a2dfb1d49ac93..5f117aad37f87 100644 --- a/api_docs/kbn_analytics.mdx +++ b/api_docs/kbn_analytics.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-analytics title: "@kbn/analytics" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/analytics plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/analytics'] --- import kbnAnalyticsObj from './kbn_analytics.devdocs.json'; diff --git a/api_docs/kbn_analytics_client.mdx b/api_docs/kbn_analytics_client.mdx index c36b7b83b967c..7bbdd9182c6a8 100644 --- a/api_docs/kbn_analytics_client.mdx +++ b/api_docs/kbn_analytics_client.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-analytics-client title: "@kbn/analytics-client" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/analytics-client plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/analytics-client'] --- import kbnAnalyticsClientObj from './kbn_analytics_client.devdocs.json'; diff --git a/api_docs/kbn_analytics_shippers_elastic_v3_browser.mdx b/api_docs/kbn_analytics_shippers_elastic_v3_browser.mdx index 053d4313a1174..91b41b353c85e 100644 --- a/api_docs/kbn_analytics_shippers_elastic_v3_browser.mdx +++ b/api_docs/kbn_analytics_shippers_elastic_v3_browser.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-analytics-shippers-elastic-v3-browser title: "@kbn/analytics-shippers-elastic-v3-browser" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/analytics-shippers-elastic-v3-browser plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/analytics-shippers-elastic-v3-browser'] --- import kbnAnalyticsShippersElasticV3BrowserObj from './kbn_analytics_shippers_elastic_v3_browser.devdocs.json'; diff --git a/api_docs/kbn_analytics_shippers_elastic_v3_common.mdx b/api_docs/kbn_analytics_shippers_elastic_v3_common.mdx index 5b8013b126b1a..b5f1c3fde5c2e 100644 --- a/api_docs/kbn_analytics_shippers_elastic_v3_common.mdx +++ b/api_docs/kbn_analytics_shippers_elastic_v3_common.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-analytics-shippers-elastic-v3-common title: "@kbn/analytics-shippers-elastic-v3-common" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/analytics-shippers-elastic-v3-common plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/analytics-shippers-elastic-v3-common'] --- import kbnAnalyticsShippersElasticV3CommonObj from './kbn_analytics_shippers_elastic_v3_common.devdocs.json'; diff --git a/api_docs/kbn_analytics_shippers_elastic_v3_server.mdx b/api_docs/kbn_analytics_shippers_elastic_v3_server.mdx index c2055ef8d02bc..df1585a9557ba 100644 --- a/api_docs/kbn_analytics_shippers_elastic_v3_server.mdx +++ b/api_docs/kbn_analytics_shippers_elastic_v3_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-analytics-shippers-elastic-v3-server title: "@kbn/analytics-shippers-elastic-v3-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/analytics-shippers-elastic-v3-server plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/analytics-shippers-elastic-v3-server'] --- import kbnAnalyticsShippersElasticV3ServerObj from './kbn_analytics_shippers_elastic_v3_server.devdocs.json'; diff --git a/api_docs/kbn_analytics_shippers_fullstory.mdx b/api_docs/kbn_analytics_shippers_fullstory.mdx index df61103a09941..fdd2bd041f9fc 100644 --- a/api_docs/kbn_analytics_shippers_fullstory.mdx +++ b/api_docs/kbn_analytics_shippers_fullstory.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-analytics-shippers-fullstory title: "@kbn/analytics-shippers-fullstory" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/analytics-shippers-fullstory plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/analytics-shippers-fullstory'] --- import kbnAnalyticsShippersFullstoryObj from './kbn_analytics_shippers_fullstory.devdocs.json'; diff --git a/api_docs/kbn_analytics_shippers_gainsight.mdx b/api_docs/kbn_analytics_shippers_gainsight.mdx index fb844e6b7c754..9025efdcccbee 100644 --- a/api_docs/kbn_analytics_shippers_gainsight.mdx +++ b/api_docs/kbn_analytics_shippers_gainsight.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-analytics-shippers-gainsight title: "@kbn/analytics-shippers-gainsight" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/analytics-shippers-gainsight plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/analytics-shippers-gainsight'] --- import kbnAnalyticsShippersGainsightObj from './kbn_analytics_shippers_gainsight.devdocs.json'; diff --git a/api_docs/kbn_apm_config_loader.mdx b/api_docs/kbn_apm_config_loader.mdx index 30c1a22a8ec4a..22ba77889cc08 100644 --- a/api_docs/kbn_apm_config_loader.mdx +++ b/api_docs/kbn_apm_config_loader.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-apm-config-loader title: "@kbn/apm-config-loader" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/apm-config-loader plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/apm-config-loader'] --- import kbnApmConfigLoaderObj from './kbn_apm_config_loader.devdocs.json'; diff --git a/api_docs/kbn_apm_synthtrace.mdx b/api_docs/kbn_apm_synthtrace.mdx index 09007f8b0e82e..2145de70fd218 100644 --- a/api_docs/kbn_apm_synthtrace.mdx +++ b/api_docs/kbn_apm_synthtrace.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-apm-synthtrace title: "@kbn/apm-synthtrace" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/apm-synthtrace plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/apm-synthtrace'] --- import kbnApmSynthtraceObj from './kbn_apm_synthtrace.devdocs.json'; diff --git a/api_docs/kbn_apm_synthtrace_client.mdx b/api_docs/kbn_apm_synthtrace_client.mdx index a04a564cde49c..19469c8e8373b 100644 --- a/api_docs/kbn_apm_synthtrace_client.mdx +++ b/api_docs/kbn_apm_synthtrace_client.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-apm-synthtrace-client title: "@kbn/apm-synthtrace-client" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/apm-synthtrace-client plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/apm-synthtrace-client'] --- import kbnApmSynthtraceClientObj from './kbn_apm_synthtrace_client.devdocs.json'; diff --git a/api_docs/kbn_apm_utils.mdx b/api_docs/kbn_apm_utils.mdx index ce523adf57985..e064ff507b39b 100644 --- a/api_docs/kbn_apm_utils.mdx +++ b/api_docs/kbn_apm_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-apm-utils title: "@kbn/apm-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/apm-utils plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/apm-utils'] --- import kbnApmUtilsObj from './kbn_apm_utils.devdocs.json'; diff --git a/api_docs/kbn_axe_config.mdx b/api_docs/kbn_axe_config.mdx index 9f4d642a9f4ef..c817f89501300 100644 --- a/api_docs/kbn_axe_config.mdx +++ b/api_docs/kbn_axe_config.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-axe-config title: "@kbn/axe-config" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/axe-config plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/axe-config'] --- import kbnAxeConfigObj from './kbn_axe_config.devdocs.json'; diff --git a/api_docs/kbn_cases_components.mdx b/api_docs/kbn_cases_components.mdx index 82da938a2e3b9..cc6c2e7c69890 100644 --- a/api_docs/kbn_cases_components.mdx +++ b/api_docs/kbn_cases_components.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-cases-components title: "@kbn/cases-components" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/cases-components plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/cases-components'] --- import kbnCasesComponentsObj from './kbn_cases_components.devdocs.json'; diff --git a/api_docs/kbn_cell_actions.mdx b/api_docs/kbn_cell_actions.mdx index b14c9ededd480..71e1f390d6646 100644 --- a/api_docs/kbn_cell_actions.mdx +++ b/api_docs/kbn_cell_actions.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-cell-actions title: "@kbn/cell-actions" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/cell-actions plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/cell-actions'] --- import kbnCellActionsObj from './kbn_cell_actions.devdocs.json'; diff --git a/api_docs/kbn_chart_expressions_common.mdx b/api_docs/kbn_chart_expressions_common.mdx index e49db93b653a5..6dcb11df62f92 100644 --- a/api_docs/kbn_chart_expressions_common.mdx +++ b/api_docs/kbn_chart_expressions_common.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-chart-expressions-common title: "@kbn/chart-expressions-common" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/chart-expressions-common plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/chart-expressions-common'] --- import kbnChartExpressionsCommonObj from './kbn_chart_expressions_common.devdocs.json'; diff --git a/api_docs/kbn_chart_icons.mdx b/api_docs/kbn_chart_icons.mdx index 6b8ed504dc92d..6cd8345f78503 100644 --- a/api_docs/kbn_chart_icons.mdx +++ b/api_docs/kbn_chart_icons.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-chart-icons title: "@kbn/chart-icons" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/chart-icons plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/chart-icons'] --- import kbnChartIconsObj from './kbn_chart_icons.devdocs.json'; diff --git a/api_docs/kbn_ci_stats_core.mdx b/api_docs/kbn_ci_stats_core.mdx index a5c29e677ec23..723bb8a4741b9 100644 --- a/api_docs/kbn_ci_stats_core.mdx +++ b/api_docs/kbn_ci_stats_core.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ci-stats-core title: "@kbn/ci-stats-core" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ci-stats-core plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ci-stats-core'] --- import kbnCiStatsCoreObj from './kbn_ci_stats_core.devdocs.json'; diff --git a/api_docs/kbn_ci_stats_performance_metrics.mdx b/api_docs/kbn_ci_stats_performance_metrics.mdx index 50523b6543892..c24fd85553e1a 100644 --- a/api_docs/kbn_ci_stats_performance_metrics.mdx +++ b/api_docs/kbn_ci_stats_performance_metrics.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ci-stats-performance-metrics title: "@kbn/ci-stats-performance-metrics" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ci-stats-performance-metrics plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ci-stats-performance-metrics'] --- import kbnCiStatsPerformanceMetricsObj from './kbn_ci_stats_performance_metrics.devdocs.json'; diff --git a/api_docs/kbn_ci_stats_reporter.mdx b/api_docs/kbn_ci_stats_reporter.mdx index 30878509c9908..f92216a33e2c4 100644 --- a/api_docs/kbn_ci_stats_reporter.mdx +++ b/api_docs/kbn_ci_stats_reporter.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ci-stats-reporter title: "@kbn/ci-stats-reporter" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ci-stats-reporter plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ci-stats-reporter'] --- import kbnCiStatsReporterObj from './kbn_ci_stats_reporter.devdocs.json'; diff --git a/api_docs/kbn_cli_dev_mode.mdx b/api_docs/kbn_cli_dev_mode.mdx index 001c90e047fae..aa3b7bac022d5 100644 --- a/api_docs/kbn_cli_dev_mode.mdx +++ b/api_docs/kbn_cli_dev_mode.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-cli-dev-mode title: "@kbn/cli-dev-mode" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/cli-dev-mode plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/cli-dev-mode'] --- import kbnCliDevModeObj from './kbn_cli_dev_mode.devdocs.json'; diff --git a/api_docs/kbn_code_editor.mdx b/api_docs/kbn_code_editor.mdx index 909659dcf4b32..83331cb9c1a73 100644 --- a/api_docs/kbn_code_editor.mdx +++ b/api_docs/kbn_code_editor.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-code-editor title: "@kbn/code-editor" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/code-editor plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/code-editor'] --- import kbnCodeEditorObj from './kbn_code_editor.devdocs.json'; diff --git a/api_docs/kbn_code_editor_mocks.mdx b/api_docs/kbn_code_editor_mocks.mdx index 4d1b33ff13923..5f1dc03899307 100644 --- a/api_docs/kbn_code_editor_mocks.mdx +++ b/api_docs/kbn_code_editor_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-code-editor-mocks title: "@kbn/code-editor-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/code-editor-mocks plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/code-editor-mocks'] --- import kbnCodeEditorMocksObj from './kbn_code_editor_mocks.devdocs.json'; diff --git a/api_docs/kbn_coloring.mdx b/api_docs/kbn_coloring.mdx index 2d3190c184aa0..27a106cc7a8e8 100644 --- a/api_docs/kbn_coloring.mdx +++ b/api_docs/kbn_coloring.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-coloring title: "@kbn/coloring" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/coloring plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/coloring'] --- import kbnColoringObj from './kbn_coloring.devdocs.json'; diff --git a/api_docs/kbn_config.mdx b/api_docs/kbn_config.mdx index a044b568a4c6d..bc12eabd449a3 100644 --- a/api_docs/kbn_config.mdx +++ b/api_docs/kbn_config.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-config title: "@kbn/config" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/config plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/config'] --- import kbnConfigObj from './kbn_config.devdocs.json'; diff --git a/api_docs/kbn_config_mocks.mdx b/api_docs/kbn_config_mocks.mdx index 7dff56ea557ef..8b9f1735d0551 100644 --- a/api_docs/kbn_config_mocks.mdx +++ b/api_docs/kbn_config_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-config-mocks title: "@kbn/config-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/config-mocks plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/config-mocks'] --- import kbnConfigMocksObj from './kbn_config_mocks.devdocs.json'; diff --git a/api_docs/kbn_config_schema.mdx b/api_docs/kbn_config_schema.mdx index d98cbfcac9f03..f0e644b3f6a72 100644 --- a/api_docs/kbn_config_schema.mdx +++ b/api_docs/kbn_config_schema.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-config-schema title: "@kbn/config-schema" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/config-schema plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/config-schema'] --- import kbnConfigSchemaObj from './kbn_config_schema.devdocs.json'; diff --git a/api_docs/kbn_content_management_content_editor.mdx b/api_docs/kbn_content_management_content_editor.mdx index 571943ac43efc..ca6e85734b249 100644 --- a/api_docs/kbn_content_management_content_editor.mdx +++ b/api_docs/kbn_content_management_content_editor.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-content-management-content-editor title: "@kbn/content-management-content-editor" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/content-management-content-editor plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/content-management-content-editor'] --- import kbnContentManagementContentEditorObj from './kbn_content_management_content_editor.devdocs.json'; diff --git a/api_docs/kbn_content_management_tabbed_table_list_view.mdx b/api_docs/kbn_content_management_tabbed_table_list_view.mdx index f840d96fb96a8..a2e394b5ea713 100644 --- a/api_docs/kbn_content_management_tabbed_table_list_view.mdx +++ b/api_docs/kbn_content_management_tabbed_table_list_view.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-content-management-tabbed-table-list-view title: "@kbn/content-management-tabbed-table-list-view" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/content-management-tabbed-table-list-view plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/content-management-tabbed-table-list-view'] --- import kbnContentManagementTabbedTableListViewObj from './kbn_content_management_tabbed_table_list_view.devdocs.json'; diff --git a/api_docs/kbn_content_management_table_list_view.mdx b/api_docs/kbn_content_management_table_list_view.mdx index 80dc326e0b499..c0f56347084ff 100644 --- a/api_docs/kbn_content_management_table_list_view.mdx +++ b/api_docs/kbn_content_management_table_list_view.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-content-management-table-list-view title: "@kbn/content-management-table-list-view" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/content-management-table-list-view plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/content-management-table-list-view'] --- import kbnContentManagementTableListViewObj from './kbn_content_management_table_list_view.devdocs.json'; diff --git a/api_docs/kbn_content_management_table_list_view_table.mdx b/api_docs/kbn_content_management_table_list_view_table.mdx index 59ee0aee26e27..2ddb0a46a82c6 100644 --- a/api_docs/kbn_content_management_table_list_view_table.mdx +++ b/api_docs/kbn_content_management_table_list_view_table.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-content-management-table-list-view-table title: "@kbn/content-management-table-list-view-table" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/content-management-table-list-view-table plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/content-management-table-list-view-table'] --- import kbnContentManagementTableListViewTableObj from './kbn_content_management_table_list_view_table.devdocs.json'; diff --git a/api_docs/kbn_content_management_utils.mdx b/api_docs/kbn_content_management_utils.mdx index da3749b332c70..71e1743ff2a9f 100644 --- a/api_docs/kbn_content_management_utils.mdx +++ b/api_docs/kbn_content_management_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-content-management-utils title: "@kbn/content-management-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/content-management-utils plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/content-management-utils'] --- import kbnContentManagementUtilsObj from './kbn_content_management_utils.devdocs.json'; diff --git a/api_docs/kbn_core_analytics_browser.mdx b/api_docs/kbn_core_analytics_browser.mdx index abf01e9b87809..b8a5f7f52d98c 100644 --- a/api_docs/kbn_core_analytics_browser.mdx +++ b/api_docs/kbn_core_analytics_browser.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-analytics-browser title: "@kbn/core-analytics-browser" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-analytics-browser plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-analytics-browser'] --- import kbnCoreAnalyticsBrowserObj from './kbn_core_analytics_browser.devdocs.json'; diff --git a/api_docs/kbn_core_analytics_browser_internal.mdx b/api_docs/kbn_core_analytics_browser_internal.mdx index eeafd6d571c92..97a38610e99ef 100644 --- a/api_docs/kbn_core_analytics_browser_internal.mdx +++ b/api_docs/kbn_core_analytics_browser_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-analytics-browser-internal title: "@kbn/core-analytics-browser-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-analytics-browser-internal plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-analytics-browser-internal'] --- import kbnCoreAnalyticsBrowserInternalObj from './kbn_core_analytics_browser_internal.devdocs.json'; diff --git a/api_docs/kbn_core_analytics_browser_mocks.mdx b/api_docs/kbn_core_analytics_browser_mocks.mdx index 56a4f9835d002..55f676eea5f44 100644 --- a/api_docs/kbn_core_analytics_browser_mocks.mdx +++ b/api_docs/kbn_core_analytics_browser_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-analytics-browser-mocks title: "@kbn/core-analytics-browser-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-analytics-browser-mocks plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-analytics-browser-mocks'] --- import kbnCoreAnalyticsBrowserMocksObj from './kbn_core_analytics_browser_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_analytics_server.mdx b/api_docs/kbn_core_analytics_server.mdx index d62cfc6e67a36..09a7677e1b56a 100644 --- a/api_docs/kbn_core_analytics_server.mdx +++ b/api_docs/kbn_core_analytics_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-analytics-server title: "@kbn/core-analytics-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-analytics-server plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-analytics-server'] --- import kbnCoreAnalyticsServerObj from './kbn_core_analytics_server.devdocs.json'; diff --git a/api_docs/kbn_core_analytics_server_internal.mdx b/api_docs/kbn_core_analytics_server_internal.mdx index c734b69e04e11..54e73f3583b24 100644 --- a/api_docs/kbn_core_analytics_server_internal.mdx +++ b/api_docs/kbn_core_analytics_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-analytics-server-internal title: "@kbn/core-analytics-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-analytics-server-internal plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-analytics-server-internal'] --- import kbnCoreAnalyticsServerInternalObj from './kbn_core_analytics_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_analytics_server_mocks.mdx b/api_docs/kbn_core_analytics_server_mocks.mdx index af02ffe0dc431..f852dd94d67a4 100644 --- a/api_docs/kbn_core_analytics_server_mocks.mdx +++ b/api_docs/kbn_core_analytics_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-analytics-server-mocks title: "@kbn/core-analytics-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-analytics-server-mocks plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-analytics-server-mocks'] --- import kbnCoreAnalyticsServerMocksObj from './kbn_core_analytics_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_application_browser.mdx b/api_docs/kbn_core_application_browser.mdx index 0c91163570254..fda9e4147f3d7 100644 --- a/api_docs/kbn_core_application_browser.mdx +++ b/api_docs/kbn_core_application_browser.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-application-browser title: "@kbn/core-application-browser" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-application-browser plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-application-browser'] --- import kbnCoreApplicationBrowserObj from './kbn_core_application_browser.devdocs.json'; diff --git a/api_docs/kbn_core_application_browser_internal.mdx b/api_docs/kbn_core_application_browser_internal.mdx index 2b4ca8a154b87..7b7bd2ff59c42 100644 --- a/api_docs/kbn_core_application_browser_internal.mdx +++ b/api_docs/kbn_core_application_browser_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-application-browser-internal title: "@kbn/core-application-browser-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-application-browser-internal plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-application-browser-internal'] --- import kbnCoreApplicationBrowserInternalObj from './kbn_core_application_browser_internal.devdocs.json'; diff --git a/api_docs/kbn_core_application_browser_mocks.mdx b/api_docs/kbn_core_application_browser_mocks.mdx index 839b32626a245..253bd423024a6 100644 --- a/api_docs/kbn_core_application_browser_mocks.mdx +++ b/api_docs/kbn_core_application_browser_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-application-browser-mocks title: "@kbn/core-application-browser-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-application-browser-mocks plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-application-browser-mocks'] --- import kbnCoreApplicationBrowserMocksObj from './kbn_core_application_browser_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_application_common.mdx b/api_docs/kbn_core_application_common.mdx index 498d5d98e4a90..dc7cb08859ada 100644 --- a/api_docs/kbn_core_application_common.mdx +++ b/api_docs/kbn_core_application_common.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-application-common title: "@kbn/core-application-common" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-application-common plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-application-common'] --- import kbnCoreApplicationCommonObj from './kbn_core_application_common.devdocs.json'; diff --git a/api_docs/kbn_core_apps_browser_internal.mdx b/api_docs/kbn_core_apps_browser_internal.mdx index 53cde53b4ed52..b43365fa7cf9d 100644 --- a/api_docs/kbn_core_apps_browser_internal.mdx +++ b/api_docs/kbn_core_apps_browser_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-apps-browser-internal title: "@kbn/core-apps-browser-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-apps-browser-internal plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-apps-browser-internal'] --- import kbnCoreAppsBrowserInternalObj from './kbn_core_apps_browser_internal.devdocs.json'; diff --git a/api_docs/kbn_core_apps_browser_mocks.mdx b/api_docs/kbn_core_apps_browser_mocks.mdx index 211b46e09eabd..2989abbfb45b1 100644 --- a/api_docs/kbn_core_apps_browser_mocks.mdx +++ b/api_docs/kbn_core_apps_browser_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-apps-browser-mocks title: "@kbn/core-apps-browser-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-apps-browser-mocks plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-apps-browser-mocks'] --- import kbnCoreAppsBrowserMocksObj from './kbn_core_apps_browser_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_apps_server_internal.mdx b/api_docs/kbn_core_apps_server_internal.mdx index 14b282a273f22..4bbc9f2727889 100644 --- a/api_docs/kbn_core_apps_server_internal.mdx +++ b/api_docs/kbn_core_apps_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-apps-server-internal title: "@kbn/core-apps-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-apps-server-internal plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-apps-server-internal'] --- import kbnCoreAppsServerInternalObj from './kbn_core_apps_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_base_browser_mocks.mdx b/api_docs/kbn_core_base_browser_mocks.mdx index 315c7acf87a17..3057b026516fb 100644 --- a/api_docs/kbn_core_base_browser_mocks.mdx +++ b/api_docs/kbn_core_base_browser_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-base-browser-mocks title: "@kbn/core-base-browser-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-base-browser-mocks plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-base-browser-mocks'] --- import kbnCoreBaseBrowserMocksObj from './kbn_core_base_browser_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_base_common.mdx b/api_docs/kbn_core_base_common.mdx index 9b9547190aa86..a41a066e3116d 100644 --- a/api_docs/kbn_core_base_common.mdx +++ b/api_docs/kbn_core_base_common.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-base-common title: "@kbn/core-base-common" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-base-common plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-base-common'] --- import kbnCoreBaseCommonObj from './kbn_core_base_common.devdocs.json'; diff --git a/api_docs/kbn_core_base_server_internal.mdx b/api_docs/kbn_core_base_server_internal.mdx index 99e3e0ed02fa2..b1c4d5c02c3fe 100644 --- a/api_docs/kbn_core_base_server_internal.mdx +++ b/api_docs/kbn_core_base_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-base-server-internal title: "@kbn/core-base-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-base-server-internal plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-base-server-internal'] --- import kbnCoreBaseServerInternalObj from './kbn_core_base_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_base_server_mocks.mdx b/api_docs/kbn_core_base_server_mocks.mdx index 4e1e2c7844df3..2cec1dd239207 100644 --- a/api_docs/kbn_core_base_server_mocks.mdx +++ b/api_docs/kbn_core_base_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-base-server-mocks title: "@kbn/core-base-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-base-server-mocks plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-base-server-mocks'] --- import kbnCoreBaseServerMocksObj from './kbn_core_base_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_capabilities_browser_mocks.mdx b/api_docs/kbn_core_capabilities_browser_mocks.mdx index 647817f602e86..c0047306b8f83 100644 --- a/api_docs/kbn_core_capabilities_browser_mocks.mdx +++ b/api_docs/kbn_core_capabilities_browser_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-capabilities-browser-mocks title: "@kbn/core-capabilities-browser-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-capabilities-browser-mocks plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-capabilities-browser-mocks'] --- import kbnCoreCapabilitiesBrowserMocksObj from './kbn_core_capabilities_browser_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_capabilities_common.mdx b/api_docs/kbn_core_capabilities_common.mdx index 5a469f8fb6cc0..5cfa7b3df9daf 100644 --- a/api_docs/kbn_core_capabilities_common.mdx +++ b/api_docs/kbn_core_capabilities_common.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-capabilities-common title: "@kbn/core-capabilities-common" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-capabilities-common plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-capabilities-common'] --- import kbnCoreCapabilitiesCommonObj from './kbn_core_capabilities_common.devdocs.json'; diff --git a/api_docs/kbn_core_capabilities_server.mdx b/api_docs/kbn_core_capabilities_server.mdx index fc98432fd11db..ddc641e1eee49 100644 --- a/api_docs/kbn_core_capabilities_server.mdx +++ b/api_docs/kbn_core_capabilities_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-capabilities-server title: "@kbn/core-capabilities-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-capabilities-server plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-capabilities-server'] --- import kbnCoreCapabilitiesServerObj from './kbn_core_capabilities_server.devdocs.json'; diff --git a/api_docs/kbn_core_capabilities_server_mocks.mdx b/api_docs/kbn_core_capabilities_server_mocks.mdx index 707a34374771c..199ea676a211b 100644 --- a/api_docs/kbn_core_capabilities_server_mocks.mdx +++ b/api_docs/kbn_core_capabilities_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-capabilities-server-mocks title: "@kbn/core-capabilities-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-capabilities-server-mocks plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-capabilities-server-mocks'] --- import kbnCoreCapabilitiesServerMocksObj from './kbn_core_capabilities_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_chrome_browser.mdx b/api_docs/kbn_core_chrome_browser.mdx index ebfd9644f1ffa..87cc2be55db43 100644 --- a/api_docs/kbn_core_chrome_browser.mdx +++ b/api_docs/kbn_core_chrome_browser.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-chrome-browser title: "@kbn/core-chrome-browser" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-chrome-browser plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-chrome-browser'] --- import kbnCoreChromeBrowserObj from './kbn_core_chrome_browser.devdocs.json'; diff --git a/api_docs/kbn_core_chrome_browser_mocks.mdx b/api_docs/kbn_core_chrome_browser_mocks.mdx index 86c1b2a59a51c..faed4a14018dc 100644 --- a/api_docs/kbn_core_chrome_browser_mocks.mdx +++ b/api_docs/kbn_core_chrome_browser_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-chrome-browser-mocks title: "@kbn/core-chrome-browser-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-chrome-browser-mocks plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-chrome-browser-mocks'] --- import kbnCoreChromeBrowserMocksObj from './kbn_core_chrome_browser_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_config_server_internal.mdx b/api_docs/kbn_core_config_server_internal.mdx index 941f7eeab85a6..60d510d551c91 100644 --- a/api_docs/kbn_core_config_server_internal.mdx +++ b/api_docs/kbn_core_config_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-config-server-internal title: "@kbn/core-config-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-config-server-internal plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-config-server-internal'] --- import kbnCoreConfigServerInternalObj from './kbn_core_config_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_custom_branding_browser.mdx b/api_docs/kbn_core_custom_branding_browser.mdx index ec369f63898dd..b878d1a7ab151 100644 --- a/api_docs/kbn_core_custom_branding_browser.mdx +++ b/api_docs/kbn_core_custom_branding_browser.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-custom-branding-browser title: "@kbn/core-custom-branding-browser" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-custom-branding-browser plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-custom-branding-browser'] --- import kbnCoreCustomBrandingBrowserObj from './kbn_core_custom_branding_browser.devdocs.json'; diff --git a/api_docs/kbn_core_custom_branding_browser_internal.mdx b/api_docs/kbn_core_custom_branding_browser_internal.mdx index e392692c7a0ce..5e2fc1372babd 100644 --- a/api_docs/kbn_core_custom_branding_browser_internal.mdx +++ b/api_docs/kbn_core_custom_branding_browser_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-custom-branding-browser-internal title: "@kbn/core-custom-branding-browser-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-custom-branding-browser-internal plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-custom-branding-browser-internal'] --- import kbnCoreCustomBrandingBrowserInternalObj from './kbn_core_custom_branding_browser_internal.devdocs.json'; diff --git a/api_docs/kbn_core_custom_branding_browser_mocks.mdx b/api_docs/kbn_core_custom_branding_browser_mocks.mdx index 8871af521c930..8947bc93d11a1 100644 --- a/api_docs/kbn_core_custom_branding_browser_mocks.mdx +++ b/api_docs/kbn_core_custom_branding_browser_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-custom-branding-browser-mocks title: "@kbn/core-custom-branding-browser-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-custom-branding-browser-mocks plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-custom-branding-browser-mocks'] --- import kbnCoreCustomBrandingBrowserMocksObj from './kbn_core_custom_branding_browser_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_custom_branding_common.mdx b/api_docs/kbn_core_custom_branding_common.mdx index 6b56be8c38b51..b9b47c43d59eb 100644 --- a/api_docs/kbn_core_custom_branding_common.mdx +++ b/api_docs/kbn_core_custom_branding_common.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-custom-branding-common title: "@kbn/core-custom-branding-common" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-custom-branding-common plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-custom-branding-common'] --- import kbnCoreCustomBrandingCommonObj from './kbn_core_custom_branding_common.devdocs.json'; diff --git a/api_docs/kbn_core_custom_branding_server.mdx b/api_docs/kbn_core_custom_branding_server.mdx index e667a125a4268..fbd85c0ed6b47 100644 --- a/api_docs/kbn_core_custom_branding_server.mdx +++ b/api_docs/kbn_core_custom_branding_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-custom-branding-server title: "@kbn/core-custom-branding-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-custom-branding-server plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-custom-branding-server'] --- import kbnCoreCustomBrandingServerObj from './kbn_core_custom_branding_server.devdocs.json'; diff --git a/api_docs/kbn_core_custom_branding_server_internal.mdx b/api_docs/kbn_core_custom_branding_server_internal.mdx index 9127767aba5b2..f02e9dcb86806 100644 --- a/api_docs/kbn_core_custom_branding_server_internal.mdx +++ b/api_docs/kbn_core_custom_branding_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-custom-branding-server-internal title: "@kbn/core-custom-branding-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-custom-branding-server-internal plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-custom-branding-server-internal'] --- import kbnCoreCustomBrandingServerInternalObj from './kbn_core_custom_branding_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_custom_branding_server_mocks.mdx b/api_docs/kbn_core_custom_branding_server_mocks.mdx index 8cf713c6da2f1..d42cc7ed4822e 100644 --- a/api_docs/kbn_core_custom_branding_server_mocks.mdx +++ b/api_docs/kbn_core_custom_branding_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-custom-branding-server-mocks title: "@kbn/core-custom-branding-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-custom-branding-server-mocks plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-custom-branding-server-mocks'] --- import kbnCoreCustomBrandingServerMocksObj from './kbn_core_custom_branding_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_deprecations_browser.mdx b/api_docs/kbn_core_deprecations_browser.mdx index f1ef685c162ad..e72aa5b4728de 100644 --- a/api_docs/kbn_core_deprecations_browser.mdx +++ b/api_docs/kbn_core_deprecations_browser.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-deprecations-browser title: "@kbn/core-deprecations-browser" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-deprecations-browser plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-deprecations-browser'] --- import kbnCoreDeprecationsBrowserObj from './kbn_core_deprecations_browser.devdocs.json'; diff --git a/api_docs/kbn_core_deprecations_browser_internal.mdx b/api_docs/kbn_core_deprecations_browser_internal.mdx index 324b3291c428b..89bc353e5baf8 100644 --- a/api_docs/kbn_core_deprecations_browser_internal.mdx +++ b/api_docs/kbn_core_deprecations_browser_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-deprecations-browser-internal title: "@kbn/core-deprecations-browser-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-deprecations-browser-internal plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-deprecations-browser-internal'] --- import kbnCoreDeprecationsBrowserInternalObj from './kbn_core_deprecations_browser_internal.devdocs.json'; diff --git a/api_docs/kbn_core_deprecations_browser_mocks.mdx b/api_docs/kbn_core_deprecations_browser_mocks.mdx index bd3bb18d01281..00d1054a0a915 100644 --- a/api_docs/kbn_core_deprecations_browser_mocks.mdx +++ b/api_docs/kbn_core_deprecations_browser_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-deprecations-browser-mocks title: "@kbn/core-deprecations-browser-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-deprecations-browser-mocks plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-deprecations-browser-mocks'] --- import kbnCoreDeprecationsBrowserMocksObj from './kbn_core_deprecations_browser_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_deprecations_common.mdx b/api_docs/kbn_core_deprecations_common.mdx index f72e86ef83440..0a266520ad02f 100644 --- a/api_docs/kbn_core_deprecations_common.mdx +++ b/api_docs/kbn_core_deprecations_common.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-deprecations-common title: "@kbn/core-deprecations-common" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-deprecations-common plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-deprecations-common'] --- import kbnCoreDeprecationsCommonObj from './kbn_core_deprecations_common.devdocs.json'; diff --git a/api_docs/kbn_core_deprecations_server.mdx b/api_docs/kbn_core_deprecations_server.mdx index 4d968a10b1371..5befa6f5952ca 100644 --- a/api_docs/kbn_core_deprecations_server.mdx +++ b/api_docs/kbn_core_deprecations_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-deprecations-server title: "@kbn/core-deprecations-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-deprecations-server plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-deprecations-server'] --- import kbnCoreDeprecationsServerObj from './kbn_core_deprecations_server.devdocs.json'; diff --git a/api_docs/kbn_core_deprecations_server_internal.mdx b/api_docs/kbn_core_deprecations_server_internal.mdx index aadb7ee12c9f5..f0b40dbdb50ad 100644 --- a/api_docs/kbn_core_deprecations_server_internal.mdx +++ b/api_docs/kbn_core_deprecations_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-deprecations-server-internal title: "@kbn/core-deprecations-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-deprecations-server-internal plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-deprecations-server-internal'] --- import kbnCoreDeprecationsServerInternalObj from './kbn_core_deprecations_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_deprecations_server_mocks.mdx b/api_docs/kbn_core_deprecations_server_mocks.mdx index 5891024b67a45..8fd99fbc6eee7 100644 --- a/api_docs/kbn_core_deprecations_server_mocks.mdx +++ b/api_docs/kbn_core_deprecations_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-deprecations-server-mocks title: "@kbn/core-deprecations-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-deprecations-server-mocks plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-deprecations-server-mocks'] --- import kbnCoreDeprecationsServerMocksObj from './kbn_core_deprecations_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_doc_links_browser.mdx b/api_docs/kbn_core_doc_links_browser.mdx index f5369679076f2..0c10b629b805f 100644 --- a/api_docs/kbn_core_doc_links_browser.mdx +++ b/api_docs/kbn_core_doc_links_browser.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-doc-links-browser title: "@kbn/core-doc-links-browser" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-doc-links-browser plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-doc-links-browser'] --- import kbnCoreDocLinksBrowserObj from './kbn_core_doc_links_browser.devdocs.json'; diff --git a/api_docs/kbn_core_doc_links_browser_mocks.mdx b/api_docs/kbn_core_doc_links_browser_mocks.mdx index a4628267a3b23..d9111ff5f70fe 100644 --- a/api_docs/kbn_core_doc_links_browser_mocks.mdx +++ b/api_docs/kbn_core_doc_links_browser_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-doc-links-browser-mocks title: "@kbn/core-doc-links-browser-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-doc-links-browser-mocks plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-doc-links-browser-mocks'] --- import kbnCoreDocLinksBrowserMocksObj from './kbn_core_doc_links_browser_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_doc_links_server.mdx b/api_docs/kbn_core_doc_links_server.mdx index af7d968100a5a..84ffe2a552c1e 100644 --- a/api_docs/kbn_core_doc_links_server.mdx +++ b/api_docs/kbn_core_doc_links_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-doc-links-server title: "@kbn/core-doc-links-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-doc-links-server plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-doc-links-server'] --- import kbnCoreDocLinksServerObj from './kbn_core_doc_links_server.devdocs.json'; diff --git a/api_docs/kbn_core_doc_links_server_mocks.mdx b/api_docs/kbn_core_doc_links_server_mocks.mdx index 6dffcd5bf011d..2c3f8173e7951 100644 --- a/api_docs/kbn_core_doc_links_server_mocks.mdx +++ b/api_docs/kbn_core_doc_links_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-doc-links-server-mocks title: "@kbn/core-doc-links-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-doc-links-server-mocks plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-doc-links-server-mocks'] --- import kbnCoreDocLinksServerMocksObj from './kbn_core_doc_links_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_elasticsearch_client_server_internal.mdx b/api_docs/kbn_core_elasticsearch_client_server_internal.mdx index 9f3b157a0e7ad..d00a1502a7330 100644 --- a/api_docs/kbn_core_elasticsearch_client_server_internal.mdx +++ b/api_docs/kbn_core_elasticsearch_client_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-elasticsearch-client-server-internal title: "@kbn/core-elasticsearch-client-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-elasticsearch-client-server-internal plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-elasticsearch-client-server-internal'] --- import kbnCoreElasticsearchClientServerInternalObj from './kbn_core_elasticsearch_client_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_elasticsearch_client_server_mocks.mdx b/api_docs/kbn_core_elasticsearch_client_server_mocks.mdx index 7196d5b59d0b4..ac9c6838058a5 100644 --- a/api_docs/kbn_core_elasticsearch_client_server_mocks.mdx +++ b/api_docs/kbn_core_elasticsearch_client_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-elasticsearch-client-server-mocks title: "@kbn/core-elasticsearch-client-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-elasticsearch-client-server-mocks plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-elasticsearch-client-server-mocks'] --- import kbnCoreElasticsearchClientServerMocksObj from './kbn_core_elasticsearch_client_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_elasticsearch_server.mdx b/api_docs/kbn_core_elasticsearch_server.mdx index dbc1eaec1fb49..cd0f5dfbc331c 100644 --- a/api_docs/kbn_core_elasticsearch_server.mdx +++ b/api_docs/kbn_core_elasticsearch_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-elasticsearch-server title: "@kbn/core-elasticsearch-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-elasticsearch-server plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-elasticsearch-server'] --- import kbnCoreElasticsearchServerObj from './kbn_core_elasticsearch_server.devdocs.json'; diff --git a/api_docs/kbn_core_elasticsearch_server_internal.mdx b/api_docs/kbn_core_elasticsearch_server_internal.mdx index c353870e9bd1c..5c9ba89d1d3cc 100644 --- a/api_docs/kbn_core_elasticsearch_server_internal.mdx +++ b/api_docs/kbn_core_elasticsearch_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-elasticsearch-server-internal title: "@kbn/core-elasticsearch-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-elasticsearch-server-internal plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-elasticsearch-server-internal'] --- import kbnCoreElasticsearchServerInternalObj from './kbn_core_elasticsearch_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_elasticsearch_server_mocks.mdx b/api_docs/kbn_core_elasticsearch_server_mocks.mdx index 1a5426df061ed..8ddec293e6234 100644 --- a/api_docs/kbn_core_elasticsearch_server_mocks.mdx +++ b/api_docs/kbn_core_elasticsearch_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-elasticsearch-server-mocks title: "@kbn/core-elasticsearch-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-elasticsearch-server-mocks plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-elasticsearch-server-mocks'] --- import kbnCoreElasticsearchServerMocksObj from './kbn_core_elasticsearch_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_environment_server_internal.mdx b/api_docs/kbn_core_environment_server_internal.mdx index ea6fd0531228d..e41cd33e69f2e 100644 --- a/api_docs/kbn_core_environment_server_internal.mdx +++ b/api_docs/kbn_core_environment_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-environment-server-internal title: "@kbn/core-environment-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-environment-server-internal plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-environment-server-internal'] --- import kbnCoreEnvironmentServerInternalObj from './kbn_core_environment_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_environment_server_mocks.mdx b/api_docs/kbn_core_environment_server_mocks.mdx index bca77c3503b45..d2b49ab6107b0 100644 --- a/api_docs/kbn_core_environment_server_mocks.mdx +++ b/api_docs/kbn_core_environment_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-environment-server-mocks title: "@kbn/core-environment-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-environment-server-mocks plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-environment-server-mocks'] --- import kbnCoreEnvironmentServerMocksObj from './kbn_core_environment_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_execution_context_browser.mdx b/api_docs/kbn_core_execution_context_browser.mdx index 376f67dce7275..f91003ff0eb4e 100644 --- a/api_docs/kbn_core_execution_context_browser.mdx +++ b/api_docs/kbn_core_execution_context_browser.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-execution-context-browser title: "@kbn/core-execution-context-browser" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-execution-context-browser plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-execution-context-browser'] --- import kbnCoreExecutionContextBrowserObj from './kbn_core_execution_context_browser.devdocs.json'; diff --git a/api_docs/kbn_core_execution_context_browser_internal.mdx b/api_docs/kbn_core_execution_context_browser_internal.mdx index ea1da3f4749f4..a6e016cf61aeb 100644 --- a/api_docs/kbn_core_execution_context_browser_internal.mdx +++ b/api_docs/kbn_core_execution_context_browser_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-execution-context-browser-internal title: "@kbn/core-execution-context-browser-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-execution-context-browser-internal plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-execution-context-browser-internal'] --- import kbnCoreExecutionContextBrowserInternalObj from './kbn_core_execution_context_browser_internal.devdocs.json'; diff --git a/api_docs/kbn_core_execution_context_browser_mocks.mdx b/api_docs/kbn_core_execution_context_browser_mocks.mdx index bf0e09898be90..b37e85685210c 100644 --- a/api_docs/kbn_core_execution_context_browser_mocks.mdx +++ b/api_docs/kbn_core_execution_context_browser_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-execution-context-browser-mocks title: "@kbn/core-execution-context-browser-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-execution-context-browser-mocks plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-execution-context-browser-mocks'] --- import kbnCoreExecutionContextBrowserMocksObj from './kbn_core_execution_context_browser_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_execution_context_common.mdx b/api_docs/kbn_core_execution_context_common.mdx index 5775b5d5f9b73..6c2ff683c7bae 100644 --- a/api_docs/kbn_core_execution_context_common.mdx +++ b/api_docs/kbn_core_execution_context_common.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-execution-context-common title: "@kbn/core-execution-context-common" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-execution-context-common plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-execution-context-common'] --- import kbnCoreExecutionContextCommonObj from './kbn_core_execution_context_common.devdocs.json'; diff --git a/api_docs/kbn_core_execution_context_server.mdx b/api_docs/kbn_core_execution_context_server.mdx index 9a5c8dc842acb..b64ba2f04dd64 100644 --- a/api_docs/kbn_core_execution_context_server.mdx +++ b/api_docs/kbn_core_execution_context_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-execution-context-server title: "@kbn/core-execution-context-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-execution-context-server plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-execution-context-server'] --- import kbnCoreExecutionContextServerObj from './kbn_core_execution_context_server.devdocs.json'; diff --git a/api_docs/kbn_core_execution_context_server_internal.mdx b/api_docs/kbn_core_execution_context_server_internal.mdx index 24b454a40a72b..a8828523b867c 100644 --- a/api_docs/kbn_core_execution_context_server_internal.mdx +++ b/api_docs/kbn_core_execution_context_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-execution-context-server-internal title: "@kbn/core-execution-context-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-execution-context-server-internal plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-execution-context-server-internal'] --- import kbnCoreExecutionContextServerInternalObj from './kbn_core_execution_context_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_execution_context_server_mocks.mdx b/api_docs/kbn_core_execution_context_server_mocks.mdx index 2323310976cdf..8493514402cb1 100644 --- a/api_docs/kbn_core_execution_context_server_mocks.mdx +++ b/api_docs/kbn_core_execution_context_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-execution-context-server-mocks title: "@kbn/core-execution-context-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-execution-context-server-mocks plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-execution-context-server-mocks'] --- import kbnCoreExecutionContextServerMocksObj from './kbn_core_execution_context_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_fatal_errors_browser.mdx b/api_docs/kbn_core_fatal_errors_browser.mdx index efa9880e343cd..5c69f0bf3be8c 100644 --- a/api_docs/kbn_core_fatal_errors_browser.mdx +++ b/api_docs/kbn_core_fatal_errors_browser.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-fatal-errors-browser title: "@kbn/core-fatal-errors-browser" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-fatal-errors-browser plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-fatal-errors-browser'] --- import kbnCoreFatalErrorsBrowserObj from './kbn_core_fatal_errors_browser.devdocs.json'; diff --git a/api_docs/kbn_core_fatal_errors_browser_mocks.mdx b/api_docs/kbn_core_fatal_errors_browser_mocks.mdx index 688cb85dc67d1..797af39591fed 100644 --- a/api_docs/kbn_core_fatal_errors_browser_mocks.mdx +++ b/api_docs/kbn_core_fatal_errors_browser_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-fatal-errors-browser-mocks title: "@kbn/core-fatal-errors-browser-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-fatal-errors-browser-mocks plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-fatal-errors-browser-mocks'] --- import kbnCoreFatalErrorsBrowserMocksObj from './kbn_core_fatal_errors_browser_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_http_browser.mdx b/api_docs/kbn_core_http_browser.mdx index ed462f0b7103e..676aa7b03ec77 100644 --- a/api_docs/kbn_core_http_browser.mdx +++ b/api_docs/kbn_core_http_browser.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-http-browser title: "@kbn/core-http-browser" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-http-browser plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-http-browser'] --- import kbnCoreHttpBrowserObj from './kbn_core_http_browser.devdocs.json'; diff --git a/api_docs/kbn_core_http_browser_internal.mdx b/api_docs/kbn_core_http_browser_internal.mdx index 9c9a2f63eab66..afc3e7d2c0f20 100644 --- a/api_docs/kbn_core_http_browser_internal.mdx +++ b/api_docs/kbn_core_http_browser_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-http-browser-internal title: "@kbn/core-http-browser-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-http-browser-internal plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-http-browser-internal'] --- import kbnCoreHttpBrowserInternalObj from './kbn_core_http_browser_internal.devdocs.json'; diff --git a/api_docs/kbn_core_http_browser_mocks.mdx b/api_docs/kbn_core_http_browser_mocks.mdx index f740c651d8dcf..1dc638f47b08e 100644 --- a/api_docs/kbn_core_http_browser_mocks.mdx +++ b/api_docs/kbn_core_http_browser_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-http-browser-mocks title: "@kbn/core-http-browser-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-http-browser-mocks plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-http-browser-mocks'] --- import kbnCoreHttpBrowserMocksObj from './kbn_core_http_browser_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_http_common.mdx b/api_docs/kbn_core_http_common.mdx index 2307f7280d904..e1fc914d02688 100644 --- a/api_docs/kbn_core_http_common.mdx +++ b/api_docs/kbn_core_http_common.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-http-common title: "@kbn/core-http-common" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-http-common plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-http-common'] --- import kbnCoreHttpCommonObj from './kbn_core_http_common.devdocs.json'; diff --git a/api_docs/kbn_core_http_context_server_mocks.mdx b/api_docs/kbn_core_http_context_server_mocks.mdx index 897affe7c09b8..af32e68b59eb9 100644 --- a/api_docs/kbn_core_http_context_server_mocks.mdx +++ b/api_docs/kbn_core_http_context_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-http-context-server-mocks title: "@kbn/core-http-context-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-http-context-server-mocks plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-http-context-server-mocks'] --- import kbnCoreHttpContextServerMocksObj from './kbn_core_http_context_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_http_request_handler_context_server.mdx b/api_docs/kbn_core_http_request_handler_context_server.mdx index d4fdd95134136..b2d9f76b852a1 100644 --- a/api_docs/kbn_core_http_request_handler_context_server.mdx +++ b/api_docs/kbn_core_http_request_handler_context_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-http-request-handler-context-server title: "@kbn/core-http-request-handler-context-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-http-request-handler-context-server plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-http-request-handler-context-server'] --- import kbnCoreHttpRequestHandlerContextServerObj from './kbn_core_http_request_handler_context_server.devdocs.json'; diff --git a/api_docs/kbn_core_http_resources_server.mdx b/api_docs/kbn_core_http_resources_server.mdx index 87346e93af629..d36a9beb010a9 100644 --- a/api_docs/kbn_core_http_resources_server.mdx +++ b/api_docs/kbn_core_http_resources_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-http-resources-server title: "@kbn/core-http-resources-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-http-resources-server plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-http-resources-server'] --- import kbnCoreHttpResourcesServerObj from './kbn_core_http_resources_server.devdocs.json'; diff --git a/api_docs/kbn_core_http_resources_server_internal.mdx b/api_docs/kbn_core_http_resources_server_internal.mdx index c8dcdc45a54a4..623ad50e66332 100644 --- a/api_docs/kbn_core_http_resources_server_internal.mdx +++ b/api_docs/kbn_core_http_resources_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-http-resources-server-internal title: "@kbn/core-http-resources-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-http-resources-server-internal plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-http-resources-server-internal'] --- import kbnCoreHttpResourcesServerInternalObj from './kbn_core_http_resources_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_http_resources_server_mocks.mdx b/api_docs/kbn_core_http_resources_server_mocks.mdx index ef1491370a696..22c60891dfd63 100644 --- a/api_docs/kbn_core_http_resources_server_mocks.mdx +++ b/api_docs/kbn_core_http_resources_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-http-resources-server-mocks title: "@kbn/core-http-resources-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-http-resources-server-mocks plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-http-resources-server-mocks'] --- import kbnCoreHttpResourcesServerMocksObj from './kbn_core_http_resources_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_http_router_server_internal.mdx b/api_docs/kbn_core_http_router_server_internal.mdx index f85ebe7a68529..8cd5969d03905 100644 --- a/api_docs/kbn_core_http_router_server_internal.mdx +++ b/api_docs/kbn_core_http_router_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-http-router-server-internal title: "@kbn/core-http-router-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-http-router-server-internal plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-http-router-server-internal'] --- import kbnCoreHttpRouterServerInternalObj from './kbn_core_http_router_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_http_router_server_mocks.mdx b/api_docs/kbn_core_http_router_server_mocks.mdx index 018b03c72899f..1972bc47648ab 100644 --- a/api_docs/kbn_core_http_router_server_mocks.mdx +++ b/api_docs/kbn_core_http_router_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-http-router-server-mocks title: "@kbn/core-http-router-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-http-router-server-mocks plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-http-router-server-mocks'] --- import kbnCoreHttpRouterServerMocksObj from './kbn_core_http_router_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_http_server.devdocs.json b/api_docs/kbn_core_http_server.devdocs.json index 646cf9fd1bb02..cdf7045703aef 100644 --- a/api_docs/kbn_core_http_server.devdocs.json +++ b/api_docs/kbn_core_http_server.devdocs.json @@ -3643,10 +3643,6 @@ "plugin": "savedObjectsTagging", "path": "x-pack/plugins/saved_objects_tagging/server/routes/internal/find_tags.ts" }, - { - "plugin": "fleet", - "path": "x-pack/plugins/fleet/server/services/security/fleet_router.ts" - }, { "plugin": "guidedOnboarding", "path": "src/plugins/guided_onboarding/server/routes/guide_state_routes.ts" @@ -4111,6 +4107,10 @@ "plugin": "enterpriseSearch", "path": "x-pack/plugins/enterprise_search/server/routes/enterprise_search/indices.ts" }, + { + "plugin": "enterpriseSearch", + "path": "x-pack/plugins/enterprise_search/server/routes/enterprise_search/indices.ts" + }, { "plugin": "enterpriseSearch", "path": "x-pack/plugins/enterprise_search/server/routes/enterprise_search/mapping.ts" @@ -4767,206 +4767,6 @@ "plugin": "@kbn/core-http-server-internal", "path": "packages/core/http/core-http-server-internal/src/http_server.test.ts" }, - { - "plugin": "fleet", - "path": "x-pack/plugins/fleet/server/services/security/types.ts" - }, - { - "plugin": "fleet", - "path": "x-pack/plugins/fleet/server/services/security/fleet_router.ts" - }, - { - "plugin": "fleet", - "path": "x-pack/plugins/fleet/server/routes/epm/index.ts" - }, - { - "plugin": "fleet", - "path": "x-pack/plugins/fleet/server/routes/epm/index.ts" - }, - { - "plugin": "fleet", - "path": "x-pack/plugins/fleet/server/routes/epm/index.ts" - }, - { - "plugin": "fleet", - "path": "x-pack/plugins/fleet/server/routes/epm/index.ts" - }, - { - "plugin": "fleet", - "path": "x-pack/plugins/fleet/server/routes/epm/index.ts" - }, - { - "plugin": "fleet", - "path": "x-pack/plugins/fleet/server/routes/epm/index.ts" - }, - { - "plugin": "fleet", - "path": "x-pack/plugins/fleet/server/routes/epm/index.ts" - }, - { - "plugin": "fleet", - "path": "x-pack/plugins/fleet/server/routes/epm/index.ts" - }, - { - "plugin": "fleet", - "path": "x-pack/plugins/fleet/server/routes/epm/index.ts" - }, - { - "plugin": "fleet", - "path": "x-pack/plugins/fleet/server/routes/epm/index.ts" - }, - { - "plugin": "fleet", - "path": "x-pack/plugins/fleet/server/routes/agent_policy/index.ts" - }, - { - "plugin": "fleet", - "path": "x-pack/plugins/fleet/server/routes/agent_policy/index.ts" - }, - { - "plugin": "fleet", - "path": "x-pack/plugins/fleet/server/routes/agent_policy/index.ts" - }, - { - "plugin": "fleet", - "path": "x-pack/plugins/fleet/server/routes/agent_policy/index.ts" - }, - { - "plugin": "fleet", - "path": "x-pack/plugins/fleet/server/routes/agent_policy/index.ts" - }, - { - "plugin": "fleet", - "path": "x-pack/plugins/fleet/server/routes/agent_policy/index.ts" - }, - { - "plugin": "fleet", - "path": "x-pack/plugins/fleet/server/routes/package_policy/index.ts" - }, - { - "plugin": "fleet", - "path": "x-pack/plugins/fleet/server/routes/package_policy/index.ts" - }, - { - "plugin": "fleet", - "path": "x-pack/plugins/fleet/server/routes/package_policy/index.ts" - }, - { - "plugin": "fleet", - "path": "x-pack/plugins/fleet/server/routes/data_streams/index.ts" - }, - { - "plugin": "fleet", - "path": "x-pack/plugins/fleet/server/routes/setup/index.ts" - }, - { - "plugin": "fleet", - "path": "x-pack/plugins/fleet/server/routes/agent/index.ts" - }, - { - "plugin": "fleet", - "path": "x-pack/plugins/fleet/server/routes/agent/index.ts" - }, - { - "plugin": "fleet", - "path": "x-pack/plugins/fleet/server/routes/agent/index.ts" - }, - { - "plugin": "fleet", - "path": "x-pack/plugins/fleet/server/routes/agent/index.ts" - }, - { - "plugin": "fleet", - "path": "x-pack/plugins/fleet/server/routes/agent/index.ts" - }, - { - "plugin": "fleet", - "path": "x-pack/plugins/fleet/server/routes/agent/index.ts" - }, - { - "plugin": "fleet", - "path": "x-pack/plugins/fleet/server/routes/agent/index.ts" - }, - { - "plugin": "fleet", - "path": "x-pack/plugins/fleet/server/routes/agent/index.ts" - }, - { - "plugin": "fleet", - "path": "x-pack/plugins/fleet/server/routes/agent/index.ts" - }, - { - "plugin": "fleet", - "path": "x-pack/plugins/fleet/server/routes/agent/index.ts" - }, - { - "plugin": "fleet", - "path": "x-pack/plugins/fleet/server/routes/enrollment_api_key/index.ts" - }, - { - "plugin": "fleet", - "path": "x-pack/plugins/fleet/server/routes/enrollment_api_key/index.ts" - }, - { - "plugin": "fleet", - "path": "x-pack/plugins/fleet/server/routes/enrollment_api_key/index.ts" - }, - { - "plugin": "fleet", - "path": "x-pack/plugins/fleet/server/routes/enrollment_api_key/index.ts" - }, - { - "plugin": "fleet", - "path": "x-pack/plugins/fleet/server/routes/output/index.ts" - }, - { - "plugin": "fleet", - "path": "x-pack/plugins/fleet/server/routes/output/index.ts" - }, - { - "plugin": "fleet", - "path": "x-pack/plugins/fleet/server/routes/settings/index.ts" - }, - { - "plugin": "fleet", - "path": "x-pack/plugins/fleet/server/routes/app/index.ts" - }, - { - "plugin": "fleet", - "path": "x-pack/plugins/fleet/server/routes/download_source/index.tsx" - }, - { - "plugin": "fleet", - "path": "x-pack/plugins/fleet/server/routes/download_source/index.tsx" - }, - { - "plugin": "fleet", - "path": "x-pack/plugins/fleet/server/routes/fleet_server_hosts/index.ts" - }, - { - "plugin": "fleet", - "path": "x-pack/plugins/fleet/server/routes/fleet_server_hosts/index.ts" - }, - { - "plugin": "fleet", - "path": "x-pack/plugins/fleet/server/routes/fleet_proxies/index.ts" - }, - { - "plugin": "fleet", - "path": "x-pack/plugins/fleet/server/routes/fleet_proxies/index.ts" - }, - { - "plugin": "fleet", - "path": "x-pack/plugins/fleet/server/routes/uninstall_token/index.ts" - }, - { - "plugin": "fleet", - "path": "x-pack/plugins/fleet/server/routes/uninstall_token/index.ts" - }, - { - "plugin": "fleet", - "path": "x-pack/plugins/fleet/server/services/security/fleet_router.test.ts" - }, { "plugin": "@kbn/core-http-router-server-mocks", "path": "packages/core/http/core-http-router-server-mocks/src/router.mock.ts" @@ -5527,18 +5327,6 @@ "plugin": "cloudChat", "path": "x-pack/plugins/cloud_integrations/cloud_chat/server/routes/chat.test.ts" }, - { - "plugin": "fleet", - "path": "x-pack/plugins/fleet/server/routes/uninstall_token/handlers.test.ts" - }, - { - "plugin": "fleet", - "path": "x-pack/plugins/fleet/server/routes/uninstall_token/handlers.test.ts" - }, - { - "plugin": "fleet", - "path": "x-pack/plugins/fleet/server/routes/uninstall_token/handlers.test.ts" - }, { "plugin": "remoteClusters", "path": "x-pack/plugins/remote_clusters/server/routes/api/get_route.test.ts" @@ -5727,14 +5515,6 @@ "plugin": "indexManagement", "path": "x-pack/plugins/index_management/server/test/helpers/router_mock.ts" }, - { - "plugin": "fleet", - "path": "x-pack/plugins/fleet/server/services/security/fleet_router.test.ts" - }, - { - "plugin": "fleet", - "path": "x-pack/plugins/fleet/server/services/security/fleet_router.test.ts" - }, { "plugin": "security", "path": "x-pack/plugins/security/server/routes/anonymous_access/get_capabilities.test.ts" @@ -6429,10 +6209,6 @@ "plugin": "savedObjectsTagging", "path": "x-pack/plugins/saved_objects_tagging/server/routes/internal/bulk_delete.ts" }, - { - "plugin": "fleet", - "path": "x-pack/plugins/fleet/server/services/security/fleet_router.ts" - }, { "plugin": "securitySolution", "path": "x-pack/plugins/security_solution/server/lib/timeline/routes/timelines/create_timelines/index.ts" @@ -7361,186 +7137,6 @@ "plugin": "@kbn/core-http-server-internal", "path": "packages/core/http/core-http-server-internal/src/http_server.test.ts" }, - { - "plugin": "fleet", - "path": "x-pack/plugins/fleet/server/services/security/types.ts" - }, - { - "plugin": "fleet", - "path": "x-pack/plugins/fleet/server/services/security/fleet_router.ts" - }, - { - "plugin": "fleet", - "path": "x-pack/plugins/fleet/server/routes/epm/index.ts" - }, - { - "plugin": "fleet", - "path": "x-pack/plugins/fleet/server/routes/epm/index.ts" - }, - { - "plugin": "fleet", - "path": "x-pack/plugins/fleet/server/routes/epm/index.ts" - }, - { - "plugin": "fleet", - "path": "x-pack/plugins/fleet/server/routes/epm/index.ts" - }, - { - "plugin": "fleet", - "path": "x-pack/plugins/fleet/server/routes/epm/index.ts" - }, - { - "plugin": "fleet", - "path": "x-pack/plugins/fleet/server/routes/epm/index.ts" - }, - { - "plugin": "fleet", - "path": "x-pack/plugins/fleet/server/routes/epm/index.ts" - }, - { - "plugin": "fleet", - "path": "x-pack/plugins/fleet/server/routes/agent_policy/index.ts" - }, - { - "plugin": "fleet", - "path": "x-pack/plugins/fleet/server/routes/agent_policy/index.ts" - }, - { - "plugin": "fleet", - "path": "x-pack/plugins/fleet/server/routes/agent_policy/index.ts" - }, - { - "plugin": "fleet", - "path": "x-pack/plugins/fleet/server/routes/agent_policy/index.ts" - }, - { - "plugin": "fleet", - "path": "x-pack/plugins/fleet/server/routes/package_policy/index.ts" - }, - { - "plugin": "fleet", - "path": "x-pack/plugins/fleet/server/routes/package_policy/index.ts" - }, - { - "plugin": "fleet", - "path": "x-pack/plugins/fleet/server/routes/package_policy/index.ts" - }, - { - "plugin": "fleet", - "path": "x-pack/plugins/fleet/server/routes/package_policy/index.ts" - }, - { - "plugin": "fleet", - "path": "x-pack/plugins/fleet/server/routes/package_policy/index.ts" - }, - { - "plugin": "fleet", - "path": "x-pack/plugins/fleet/server/routes/setup/index.ts" - }, - { - "plugin": "fleet", - "path": "x-pack/plugins/fleet/server/routes/setup/index.ts" - }, - { - "plugin": "fleet", - "path": "x-pack/plugins/fleet/server/routes/agent/index.ts" - }, - { - "plugin": "fleet", - "path": "x-pack/plugins/fleet/server/routes/agent/index.ts" - }, - { - "plugin": "fleet", - "path": "x-pack/plugins/fleet/server/routes/agent/index.ts" - }, - { - "plugin": "fleet", - "path": "x-pack/plugins/fleet/server/routes/agent/index.ts" - }, - { - "plugin": "fleet", - "path": "x-pack/plugins/fleet/server/routes/agent/index.ts" - }, - { - "plugin": "fleet", - "path": "x-pack/plugins/fleet/server/routes/agent/index.ts" - }, - { - "plugin": "fleet", - "path": "x-pack/plugins/fleet/server/routes/agent/index.ts" - }, - { - "plugin": "fleet", - "path": "x-pack/plugins/fleet/server/routes/agent/index.ts" - }, - { - "plugin": "fleet", - "path": "x-pack/plugins/fleet/server/routes/agent/index.ts" - }, - { - "plugin": "fleet", - "path": "x-pack/plugins/fleet/server/routes/agent/index.ts" - }, - { - "plugin": "fleet", - "path": "x-pack/plugins/fleet/server/routes/agent/index.ts" - }, - { - "plugin": "fleet", - "path": "x-pack/plugins/fleet/server/routes/agent/index.ts" - }, - { - "plugin": "fleet", - "path": "x-pack/plugins/fleet/server/routes/enrollment_api_key/index.ts" - }, - { - "plugin": "fleet", - "path": "x-pack/plugins/fleet/server/routes/enrollment_api_key/index.ts" - }, - { - "plugin": "fleet", - "path": "x-pack/plugins/fleet/server/routes/output/index.ts" - }, - { - "plugin": "fleet", - "path": "x-pack/plugins/fleet/server/routes/output/index.ts" - }, - { - "plugin": "fleet", - "path": "x-pack/plugins/fleet/server/routes/app/index.ts" - }, - { - "plugin": "fleet", - "path": "x-pack/plugins/fleet/server/routes/app/index.ts" - }, - { - "plugin": "fleet", - "path": "x-pack/plugins/fleet/server/routes/preconfiguration/index.ts" - }, - { - "plugin": "fleet", - "path": "x-pack/plugins/fleet/server/routes/preconfiguration/index.ts" - }, - { - "plugin": "fleet", - "path": "x-pack/plugins/fleet/server/routes/download_source/index.tsx" - }, - { - "plugin": "fleet", - "path": "x-pack/plugins/fleet/server/routes/health_check/index.ts" - }, - { - "plugin": "fleet", - "path": "x-pack/plugins/fleet/server/routes/fleet_server_hosts/index.ts" - }, - { - "plugin": "fleet", - "path": "x-pack/plugins/fleet/server/routes/fleet_proxies/index.ts" - }, - { - "plugin": "fleet", - "path": "x-pack/plugins/fleet/server/routes/message_signing_service/index.ts" - }, { "plugin": "@kbn/core-http-router-server-mocks", "path": "packages/core/http/core-http-router-server-mocks/src/router.mock.ts" @@ -8431,10 +8027,6 @@ "plugin": "alerting", "path": "x-pack/plugins/alerting/server/routes/update_rule.ts" }, - { - "plugin": "fleet", - "path": "x-pack/plugins/fleet/server/services/security/fleet_router.ts" - }, { "plugin": "guidedOnboarding", "path": "src/plugins/guided_onboarding/server/routes/plugin_state_routes.ts" @@ -8763,58 +8355,6 @@ "plugin": "@kbn/core-http-server-internal", "path": "packages/core/http/core-http-server-internal/src/http_server.test.ts" }, - { - "plugin": "fleet", - "path": "x-pack/plugins/fleet/server/services/security/types.ts" - }, - { - "plugin": "fleet", - "path": "x-pack/plugins/fleet/server/services/security/fleet_router.ts" - }, - { - "plugin": "fleet", - "path": "x-pack/plugins/fleet/server/routes/epm/index.ts" - }, - { - "plugin": "fleet", - "path": "x-pack/plugins/fleet/server/routes/epm/index.ts" - }, - { - "plugin": "fleet", - "path": "x-pack/plugins/fleet/server/routes/agent_policy/index.ts" - }, - { - "plugin": "fleet", - "path": "x-pack/plugins/fleet/server/routes/package_policy/index.ts" - }, - { - "plugin": "fleet", - "path": "x-pack/plugins/fleet/server/routes/agent/index.ts" - }, - { - "plugin": "fleet", - "path": "x-pack/plugins/fleet/server/routes/agent/index.ts" - }, - { - "plugin": "fleet", - "path": "x-pack/plugins/fleet/server/routes/output/index.ts" - }, - { - "plugin": "fleet", - "path": "x-pack/plugins/fleet/server/routes/settings/index.ts" - }, - { - "plugin": "fleet", - "path": "x-pack/plugins/fleet/server/routes/download_source/index.tsx" - }, - { - "plugin": "fleet", - "path": "x-pack/plugins/fleet/server/routes/fleet_server_hosts/index.ts" - }, - { - "plugin": "fleet", - "path": "x-pack/plugins/fleet/server/routes/fleet_proxies/index.ts" - }, { "plugin": "@kbn/core-http-router-server-mocks", "path": "packages/core/http/core-http-router-server-mocks/src/router.mock.ts" @@ -8939,10 +8479,6 @@ "plugin": "cases", "path": "x-pack/plugins/cases/server/routes/api/register_routes.test.ts" }, - { - "plugin": "fleet", - "path": "x-pack/plugins/fleet/server/routes/package_policy/handlers.test.ts" - }, { "plugin": "security", "path": "x-pack/plugins/security/server/routes/api_keys/update.test.ts" @@ -9153,10 +8689,6 @@ "plugin": "alerting", "path": "x-pack/plugins/alerting/server/routes/bulk_disable_rules.ts" }, - { - "plugin": "fleet", - "path": "x-pack/plugins/fleet/server/services/security/fleet_router.ts" - }, { "plugin": "securitySolution", "path": "x-pack/plugins/security_solution/server/lib/timeline/routes/timelines/patch_timelines/index.ts" @@ -9201,14 +8733,6 @@ "plugin": "@kbn/core-http-server-internal", "path": "packages/core/http/core-http-server-internal/src/http_server.test.ts" }, - { - "plugin": "fleet", - "path": "x-pack/plugins/fleet/server/services/security/types.ts" - }, - { - "plugin": "fleet", - "path": "x-pack/plugins/fleet/server/services/security/fleet_router.ts" - }, { "plugin": "@kbn/core-http-router-server-mocks", "path": "packages/core/http/core-http-router-server-mocks/src/router.mock.ts" @@ -9527,10 +9051,6 @@ "plugin": "savedObjectsTagging", "path": "x-pack/plugins/saved_objects_tagging/server/routes/tags/delete_tag.ts" }, - { - "plugin": "fleet", - "path": "x-pack/plugins/fleet/server/services/security/fleet_router.ts" - }, { "plugin": "securitySolution", "path": "x-pack/plugins/security_solution/server/lib/detection_engine/routes/signals/delete_signals_migration_route.ts" @@ -9775,54 +9295,6 @@ "plugin": "@kbn/core-http-server-internal", "path": "packages/core/http/core-http-server-internal/src/http_server.test.ts" }, - { - "plugin": "fleet", - "path": "x-pack/plugins/fleet/server/services/security/types.ts" - }, - { - "plugin": "fleet", - "path": "x-pack/plugins/fleet/server/services/security/fleet_router.ts" - }, - { - "plugin": "fleet", - "path": "x-pack/plugins/fleet/server/routes/epm/index.ts" - }, - { - "plugin": "fleet", - "path": "x-pack/plugins/fleet/server/routes/epm/index.ts" - }, - { - "plugin": "fleet", - "path": "x-pack/plugins/fleet/server/routes/package_policy/index.ts" - }, - { - "plugin": "fleet", - "path": "x-pack/plugins/fleet/server/routes/agent/index.ts" - }, - { - "plugin": "fleet", - "path": "x-pack/plugins/fleet/server/routes/enrollment_api_key/index.ts" - }, - { - "plugin": "fleet", - "path": "x-pack/plugins/fleet/server/routes/enrollment_api_key/index.ts" - }, - { - "plugin": "fleet", - "path": "x-pack/plugins/fleet/server/routes/output/index.ts" - }, - { - "plugin": "fleet", - "path": "x-pack/plugins/fleet/server/routes/download_source/index.tsx" - }, - { - "plugin": "fleet", - "path": "x-pack/plugins/fleet/server/routes/fleet_server_hosts/index.ts" - }, - { - "plugin": "fleet", - "path": "x-pack/plugins/fleet/server/routes/fleet_proxies/index.ts" - }, { "plugin": "@kbn/core-http-router-server-mocks", "path": "packages/core/http/core-http-router-server-mocks/src/router.mock.ts" @@ -13649,6 +13121,10 @@ "plugin": "telemetry", "path": "src/plugins/telemetry/server/routes/telemetry_last_reported.ts" }, + { + "plugin": "fleet", + "path": "x-pack/plugins/fleet/server/services/security/fleet_router.ts" + }, { "plugin": "ml", "path": "x-pack/plugins/ml/server/routes/json_schema.ts" @@ -14425,6 +13901,10 @@ "plugin": "telemetry", "path": "src/plugins/telemetry/server/routes/telemetry_last_reported.ts" }, + { + "plugin": "fleet", + "path": "x-pack/plugins/fleet/server/services/security/fleet_router.ts" + }, { "plugin": "securitySolution", "path": "x-pack/plugins/security_solution/server/lib/detection_engine/prebuilt_rules/api/install_prebuilt_rules_and_timelines/install_prebuilt_rules_and_timelines_route.ts" @@ -14761,6 +14241,10 @@ "plugin": "telemetry", "path": "src/plugins/telemetry/server/routes/telemetry_usage_stats.ts" }, + { + "plugin": "fleet", + "path": "x-pack/plugins/fleet/server/services/security/fleet_router.ts" + }, { "plugin": "ml", "path": "x-pack/plugins/ml/server/routes/annotations.ts" @@ -15401,6 +14885,10 @@ "plugin": "lists", "path": "x-pack/plugins/lists/server/routes/list/patch_list_route.ts" }, + { + "plugin": "fleet", + "path": "x-pack/plugins/fleet/server/services/security/fleet_router.ts" + }, { "plugin": "securitySolution", "path": "x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/api/rules/bulk_patch_rules/route.ts" @@ -15545,6 +15033,10 @@ "plugin": "lists", "path": "x-pack/plugins/lists/server/routes/list/delete_list_route.ts" }, + { + "plugin": "fleet", + "path": "x-pack/plugins/fleet/server/services/security/fleet_router.ts" + }, { "plugin": "ml", "path": "x-pack/plugins/ml/server/routes/annotations.ts" diff --git a/api_docs/kbn_core_http_server.mdx b/api_docs/kbn_core_http_server.mdx index d75b9c88f0d8c..9c3496ef068f3 100644 --- a/api_docs/kbn_core_http_server.mdx +++ b/api_docs/kbn_core_http_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-http-server title: "@kbn/core-http-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-http-server plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-http-server'] --- import kbnCoreHttpServerObj from './kbn_core_http_server.devdocs.json'; diff --git a/api_docs/kbn_core_http_server_internal.mdx b/api_docs/kbn_core_http_server_internal.mdx index 17ec295e2b28a..9ea6c1275a4b1 100644 --- a/api_docs/kbn_core_http_server_internal.mdx +++ b/api_docs/kbn_core_http_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-http-server-internal title: "@kbn/core-http-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-http-server-internal plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-http-server-internal'] --- import kbnCoreHttpServerInternalObj from './kbn_core_http_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_http_server_mocks.mdx b/api_docs/kbn_core_http_server_mocks.mdx index af7530ebe2780..064a29285937d 100644 --- a/api_docs/kbn_core_http_server_mocks.mdx +++ b/api_docs/kbn_core_http_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-http-server-mocks title: "@kbn/core-http-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-http-server-mocks plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-http-server-mocks'] --- import kbnCoreHttpServerMocksObj from './kbn_core_http_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_i18n_browser.mdx b/api_docs/kbn_core_i18n_browser.mdx index 8c8bf1891f9f1..528a58fcd9afa 100644 --- a/api_docs/kbn_core_i18n_browser.mdx +++ b/api_docs/kbn_core_i18n_browser.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-i18n-browser title: "@kbn/core-i18n-browser" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-i18n-browser plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-i18n-browser'] --- import kbnCoreI18nBrowserObj from './kbn_core_i18n_browser.devdocs.json'; diff --git a/api_docs/kbn_core_i18n_browser_mocks.mdx b/api_docs/kbn_core_i18n_browser_mocks.mdx index b28afa660b41c..fdb0954f4e478 100644 --- a/api_docs/kbn_core_i18n_browser_mocks.mdx +++ b/api_docs/kbn_core_i18n_browser_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-i18n-browser-mocks title: "@kbn/core-i18n-browser-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-i18n-browser-mocks plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-i18n-browser-mocks'] --- import kbnCoreI18nBrowserMocksObj from './kbn_core_i18n_browser_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_i18n_server.mdx b/api_docs/kbn_core_i18n_server.mdx index e26626cf1aa43..4528e9b4a1544 100644 --- a/api_docs/kbn_core_i18n_server.mdx +++ b/api_docs/kbn_core_i18n_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-i18n-server title: "@kbn/core-i18n-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-i18n-server plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-i18n-server'] --- import kbnCoreI18nServerObj from './kbn_core_i18n_server.devdocs.json'; diff --git a/api_docs/kbn_core_i18n_server_internal.mdx b/api_docs/kbn_core_i18n_server_internal.mdx index 1dde8083861cc..776c8c619f977 100644 --- a/api_docs/kbn_core_i18n_server_internal.mdx +++ b/api_docs/kbn_core_i18n_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-i18n-server-internal title: "@kbn/core-i18n-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-i18n-server-internal plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-i18n-server-internal'] --- import kbnCoreI18nServerInternalObj from './kbn_core_i18n_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_i18n_server_mocks.mdx b/api_docs/kbn_core_i18n_server_mocks.mdx index 4c96d38b98734..6a06e4503c60c 100644 --- a/api_docs/kbn_core_i18n_server_mocks.mdx +++ b/api_docs/kbn_core_i18n_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-i18n-server-mocks title: "@kbn/core-i18n-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-i18n-server-mocks plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-i18n-server-mocks'] --- import kbnCoreI18nServerMocksObj from './kbn_core_i18n_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_injected_metadata_browser_mocks.mdx b/api_docs/kbn_core_injected_metadata_browser_mocks.mdx index c95da94e81dd9..ce6c84a1bd946 100644 --- a/api_docs/kbn_core_injected_metadata_browser_mocks.mdx +++ b/api_docs/kbn_core_injected_metadata_browser_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-injected-metadata-browser-mocks title: "@kbn/core-injected-metadata-browser-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-injected-metadata-browser-mocks plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-injected-metadata-browser-mocks'] --- import kbnCoreInjectedMetadataBrowserMocksObj from './kbn_core_injected_metadata_browser_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_integrations_browser_internal.mdx b/api_docs/kbn_core_integrations_browser_internal.mdx index 313d1a1cbc7ce..adca2cad222a8 100644 --- a/api_docs/kbn_core_integrations_browser_internal.mdx +++ b/api_docs/kbn_core_integrations_browser_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-integrations-browser-internal title: "@kbn/core-integrations-browser-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-integrations-browser-internal plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-integrations-browser-internal'] --- import kbnCoreIntegrationsBrowserInternalObj from './kbn_core_integrations_browser_internal.devdocs.json'; diff --git a/api_docs/kbn_core_integrations_browser_mocks.mdx b/api_docs/kbn_core_integrations_browser_mocks.mdx index b270138d4cde2..e1023f069e005 100644 --- a/api_docs/kbn_core_integrations_browser_mocks.mdx +++ b/api_docs/kbn_core_integrations_browser_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-integrations-browser-mocks title: "@kbn/core-integrations-browser-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-integrations-browser-mocks plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-integrations-browser-mocks'] --- import kbnCoreIntegrationsBrowserMocksObj from './kbn_core_integrations_browser_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_lifecycle_browser.mdx b/api_docs/kbn_core_lifecycle_browser.mdx index bfad413d0dbae..58676fb7f6427 100644 --- a/api_docs/kbn_core_lifecycle_browser.mdx +++ b/api_docs/kbn_core_lifecycle_browser.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-lifecycle-browser title: "@kbn/core-lifecycle-browser" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-lifecycle-browser plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-lifecycle-browser'] --- import kbnCoreLifecycleBrowserObj from './kbn_core_lifecycle_browser.devdocs.json'; diff --git a/api_docs/kbn_core_lifecycle_browser_mocks.mdx b/api_docs/kbn_core_lifecycle_browser_mocks.mdx index a3d274221d1f7..b1d24176b8cb8 100644 --- a/api_docs/kbn_core_lifecycle_browser_mocks.mdx +++ b/api_docs/kbn_core_lifecycle_browser_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-lifecycle-browser-mocks title: "@kbn/core-lifecycle-browser-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-lifecycle-browser-mocks plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-lifecycle-browser-mocks'] --- import kbnCoreLifecycleBrowserMocksObj from './kbn_core_lifecycle_browser_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_lifecycle_server.mdx b/api_docs/kbn_core_lifecycle_server.mdx index b96e16ddd9e4e..559e1fa99ab74 100644 --- a/api_docs/kbn_core_lifecycle_server.mdx +++ b/api_docs/kbn_core_lifecycle_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-lifecycle-server title: "@kbn/core-lifecycle-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-lifecycle-server plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-lifecycle-server'] --- import kbnCoreLifecycleServerObj from './kbn_core_lifecycle_server.devdocs.json'; diff --git a/api_docs/kbn_core_lifecycle_server_mocks.mdx b/api_docs/kbn_core_lifecycle_server_mocks.mdx index 4ea507f43b8d8..58cfd92adec97 100644 --- a/api_docs/kbn_core_lifecycle_server_mocks.mdx +++ b/api_docs/kbn_core_lifecycle_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-lifecycle-server-mocks title: "@kbn/core-lifecycle-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-lifecycle-server-mocks plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-lifecycle-server-mocks'] --- import kbnCoreLifecycleServerMocksObj from './kbn_core_lifecycle_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_logging_browser_mocks.mdx b/api_docs/kbn_core_logging_browser_mocks.mdx index e663c9a363275..a534b7d888b56 100644 --- a/api_docs/kbn_core_logging_browser_mocks.mdx +++ b/api_docs/kbn_core_logging_browser_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-logging-browser-mocks title: "@kbn/core-logging-browser-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-logging-browser-mocks plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-logging-browser-mocks'] --- import kbnCoreLoggingBrowserMocksObj from './kbn_core_logging_browser_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_logging_common_internal.mdx b/api_docs/kbn_core_logging_common_internal.mdx index c1e5800d3fc35..026bf2a562778 100644 --- a/api_docs/kbn_core_logging_common_internal.mdx +++ b/api_docs/kbn_core_logging_common_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-logging-common-internal title: "@kbn/core-logging-common-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-logging-common-internal plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-logging-common-internal'] --- import kbnCoreLoggingCommonInternalObj from './kbn_core_logging_common_internal.devdocs.json'; diff --git a/api_docs/kbn_core_logging_server.mdx b/api_docs/kbn_core_logging_server.mdx index 377505265a597..c1d0e4b35eb36 100644 --- a/api_docs/kbn_core_logging_server.mdx +++ b/api_docs/kbn_core_logging_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-logging-server title: "@kbn/core-logging-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-logging-server plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-logging-server'] --- import kbnCoreLoggingServerObj from './kbn_core_logging_server.devdocs.json'; diff --git a/api_docs/kbn_core_logging_server_internal.mdx b/api_docs/kbn_core_logging_server_internal.mdx index 08e6c40d3b799..e837d8eb13ab7 100644 --- a/api_docs/kbn_core_logging_server_internal.mdx +++ b/api_docs/kbn_core_logging_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-logging-server-internal title: "@kbn/core-logging-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-logging-server-internal plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-logging-server-internal'] --- import kbnCoreLoggingServerInternalObj from './kbn_core_logging_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_logging_server_mocks.mdx b/api_docs/kbn_core_logging_server_mocks.mdx index 374fd7a4c3600..4e6036af67658 100644 --- a/api_docs/kbn_core_logging_server_mocks.mdx +++ b/api_docs/kbn_core_logging_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-logging-server-mocks title: "@kbn/core-logging-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-logging-server-mocks plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-logging-server-mocks'] --- import kbnCoreLoggingServerMocksObj from './kbn_core_logging_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_metrics_collectors_server_internal.mdx b/api_docs/kbn_core_metrics_collectors_server_internal.mdx index 789f56c123186..c5886d6d47910 100644 --- a/api_docs/kbn_core_metrics_collectors_server_internal.mdx +++ b/api_docs/kbn_core_metrics_collectors_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-metrics-collectors-server-internal title: "@kbn/core-metrics-collectors-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-metrics-collectors-server-internal plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-metrics-collectors-server-internal'] --- import kbnCoreMetricsCollectorsServerInternalObj from './kbn_core_metrics_collectors_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_metrics_collectors_server_mocks.mdx b/api_docs/kbn_core_metrics_collectors_server_mocks.mdx index 9ce1103581bb2..95a75ad4c18ce 100644 --- a/api_docs/kbn_core_metrics_collectors_server_mocks.mdx +++ b/api_docs/kbn_core_metrics_collectors_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-metrics-collectors-server-mocks title: "@kbn/core-metrics-collectors-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-metrics-collectors-server-mocks plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-metrics-collectors-server-mocks'] --- import kbnCoreMetricsCollectorsServerMocksObj from './kbn_core_metrics_collectors_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_metrics_server.mdx b/api_docs/kbn_core_metrics_server.mdx index f65dc13cd22a7..380282b4554c9 100644 --- a/api_docs/kbn_core_metrics_server.mdx +++ b/api_docs/kbn_core_metrics_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-metrics-server title: "@kbn/core-metrics-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-metrics-server plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-metrics-server'] --- import kbnCoreMetricsServerObj from './kbn_core_metrics_server.devdocs.json'; diff --git a/api_docs/kbn_core_metrics_server_internal.mdx b/api_docs/kbn_core_metrics_server_internal.mdx index d9393f985758f..f78d7428e9be1 100644 --- a/api_docs/kbn_core_metrics_server_internal.mdx +++ b/api_docs/kbn_core_metrics_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-metrics-server-internal title: "@kbn/core-metrics-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-metrics-server-internal plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-metrics-server-internal'] --- import kbnCoreMetricsServerInternalObj from './kbn_core_metrics_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_metrics_server_mocks.mdx b/api_docs/kbn_core_metrics_server_mocks.mdx index 2a7dcbd5d1af9..30ff706492b45 100644 --- a/api_docs/kbn_core_metrics_server_mocks.mdx +++ b/api_docs/kbn_core_metrics_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-metrics-server-mocks title: "@kbn/core-metrics-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-metrics-server-mocks plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-metrics-server-mocks'] --- import kbnCoreMetricsServerMocksObj from './kbn_core_metrics_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_mount_utils_browser.mdx b/api_docs/kbn_core_mount_utils_browser.mdx index 8701f13ca30dc..d974a7a67c19f 100644 --- a/api_docs/kbn_core_mount_utils_browser.mdx +++ b/api_docs/kbn_core_mount_utils_browser.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-mount-utils-browser title: "@kbn/core-mount-utils-browser" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-mount-utils-browser plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-mount-utils-browser'] --- import kbnCoreMountUtilsBrowserObj from './kbn_core_mount_utils_browser.devdocs.json'; diff --git a/api_docs/kbn_core_node_server.mdx b/api_docs/kbn_core_node_server.mdx index 8d37a662156d1..9e2e896b4df6c 100644 --- a/api_docs/kbn_core_node_server.mdx +++ b/api_docs/kbn_core_node_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-node-server title: "@kbn/core-node-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-node-server plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-node-server'] --- import kbnCoreNodeServerObj from './kbn_core_node_server.devdocs.json'; diff --git a/api_docs/kbn_core_node_server_internal.mdx b/api_docs/kbn_core_node_server_internal.mdx index 4cc7d28317be7..c665b4838b3fe 100644 --- a/api_docs/kbn_core_node_server_internal.mdx +++ b/api_docs/kbn_core_node_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-node-server-internal title: "@kbn/core-node-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-node-server-internal plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-node-server-internal'] --- import kbnCoreNodeServerInternalObj from './kbn_core_node_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_node_server_mocks.mdx b/api_docs/kbn_core_node_server_mocks.mdx index 48905d30f9cfe..61ccc1bb4249c 100644 --- a/api_docs/kbn_core_node_server_mocks.mdx +++ b/api_docs/kbn_core_node_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-node-server-mocks title: "@kbn/core-node-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-node-server-mocks plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-node-server-mocks'] --- import kbnCoreNodeServerMocksObj from './kbn_core_node_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_notifications_browser.mdx b/api_docs/kbn_core_notifications_browser.mdx index afca185707beb..c26140dc1a4f2 100644 --- a/api_docs/kbn_core_notifications_browser.mdx +++ b/api_docs/kbn_core_notifications_browser.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-notifications-browser title: "@kbn/core-notifications-browser" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-notifications-browser plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-notifications-browser'] --- import kbnCoreNotificationsBrowserObj from './kbn_core_notifications_browser.devdocs.json'; diff --git a/api_docs/kbn_core_notifications_browser_internal.mdx b/api_docs/kbn_core_notifications_browser_internal.mdx index f6a66c5963efc..4abe76f9aa06d 100644 --- a/api_docs/kbn_core_notifications_browser_internal.mdx +++ b/api_docs/kbn_core_notifications_browser_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-notifications-browser-internal title: "@kbn/core-notifications-browser-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-notifications-browser-internal plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-notifications-browser-internal'] --- import kbnCoreNotificationsBrowserInternalObj from './kbn_core_notifications_browser_internal.devdocs.json'; diff --git a/api_docs/kbn_core_notifications_browser_mocks.mdx b/api_docs/kbn_core_notifications_browser_mocks.mdx index 147187be6169d..8ee27b4b6d659 100644 --- a/api_docs/kbn_core_notifications_browser_mocks.mdx +++ b/api_docs/kbn_core_notifications_browser_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-notifications-browser-mocks title: "@kbn/core-notifications-browser-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-notifications-browser-mocks plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-notifications-browser-mocks'] --- import kbnCoreNotificationsBrowserMocksObj from './kbn_core_notifications_browser_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_overlays_browser.mdx b/api_docs/kbn_core_overlays_browser.mdx index 831b0fa16040c..d39dbc30f0e99 100644 --- a/api_docs/kbn_core_overlays_browser.mdx +++ b/api_docs/kbn_core_overlays_browser.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-overlays-browser title: "@kbn/core-overlays-browser" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-overlays-browser plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-overlays-browser'] --- import kbnCoreOverlaysBrowserObj from './kbn_core_overlays_browser.devdocs.json'; diff --git a/api_docs/kbn_core_overlays_browser_internal.mdx b/api_docs/kbn_core_overlays_browser_internal.mdx index 13f3e351a4e1b..79796c21f1a30 100644 --- a/api_docs/kbn_core_overlays_browser_internal.mdx +++ b/api_docs/kbn_core_overlays_browser_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-overlays-browser-internal title: "@kbn/core-overlays-browser-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-overlays-browser-internal plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-overlays-browser-internal'] --- import kbnCoreOverlaysBrowserInternalObj from './kbn_core_overlays_browser_internal.devdocs.json'; diff --git a/api_docs/kbn_core_overlays_browser_mocks.mdx b/api_docs/kbn_core_overlays_browser_mocks.mdx index cee4243d41ec9..287e9f8b1253a 100644 --- a/api_docs/kbn_core_overlays_browser_mocks.mdx +++ b/api_docs/kbn_core_overlays_browser_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-overlays-browser-mocks title: "@kbn/core-overlays-browser-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-overlays-browser-mocks plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-overlays-browser-mocks'] --- import kbnCoreOverlaysBrowserMocksObj from './kbn_core_overlays_browser_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_plugins_browser.mdx b/api_docs/kbn_core_plugins_browser.mdx index d0e79df85e348..d2084acdedc68 100644 --- a/api_docs/kbn_core_plugins_browser.mdx +++ b/api_docs/kbn_core_plugins_browser.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-plugins-browser title: "@kbn/core-plugins-browser" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-plugins-browser plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-plugins-browser'] --- import kbnCorePluginsBrowserObj from './kbn_core_plugins_browser.devdocs.json'; diff --git a/api_docs/kbn_core_plugins_browser_mocks.mdx b/api_docs/kbn_core_plugins_browser_mocks.mdx index 0efde46e225c8..a04f2da24f043 100644 --- a/api_docs/kbn_core_plugins_browser_mocks.mdx +++ b/api_docs/kbn_core_plugins_browser_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-plugins-browser-mocks title: "@kbn/core-plugins-browser-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-plugins-browser-mocks plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-plugins-browser-mocks'] --- import kbnCorePluginsBrowserMocksObj from './kbn_core_plugins_browser_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_plugins_server.mdx b/api_docs/kbn_core_plugins_server.mdx index b9b84c8887fc5..7a0c4e4360ba8 100644 --- a/api_docs/kbn_core_plugins_server.mdx +++ b/api_docs/kbn_core_plugins_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-plugins-server title: "@kbn/core-plugins-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-plugins-server plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-plugins-server'] --- import kbnCorePluginsServerObj from './kbn_core_plugins_server.devdocs.json'; diff --git a/api_docs/kbn_core_plugins_server_mocks.mdx b/api_docs/kbn_core_plugins_server_mocks.mdx index 7a04d07f67c12..f6950ead9c384 100644 --- a/api_docs/kbn_core_plugins_server_mocks.mdx +++ b/api_docs/kbn_core_plugins_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-plugins-server-mocks title: "@kbn/core-plugins-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-plugins-server-mocks plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-plugins-server-mocks'] --- import kbnCorePluginsServerMocksObj from './kbn_core_plugins_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_preboot_server.mdx b/api_docs/kbn_core_preboot_server.mdx index 8b8849d1e1a78..63c27b4dd965f 100644 --- a/api_docs/kbn_core_preboot_server.mdx +++ b/api_docs/kbn_core_preboot_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-preboot-server title: "@kbn/core-preboot-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-preboot-server plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-preboot-server'] --- import kbnCorePrebootServerObj from './kbn_core_preboot_server.devdocs.json'; diff --git a/api_docs/kbn_core_preboot_server_mocks.mdx b/api_docs/kbn_core_preboot_server_mocks.mdx index bde0ba3320d89..a4b85da878aa8 100644 --- a/api_docs/kbn_core_preboot_server_mocks.mdx +++ b/api_docs/kbn_core_preboot_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-preboot-server-mocks title: "@kbn/core-preboot-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-preboot-server-mocks plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-preboot-server-mocks'] --- import kbnCorePrebootServerMocksObj from './kbn_core_preboot_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_rendering_browser_mocks.mdx b/api_docs/kbn_core_rendering_browser_mocks.mdx index c5f0137d455e2..cabbdecb8810e 100644 --- a/api_docs/kbn_core_rendering_browser_mocks.mdx +++ b/api_docs/kbn_core_rendering_browser_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-rendering-browser-mocks title: "@kbn/core-rendering-browser-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-rendering-browser-mocks plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-rendering-browser-mocks'] --- import kbnCoreRenderingBrowserMocksObj from './kbn_core_rendering_browser_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_rendering_server_internal.mdx b/api_docs/kbn_core_rendering_server_internal.mdx index b09d5759718c2..fede8551955b7 100644 --- a/api_docs/kbn_core_rendering_server_internal.mdx +++ b/api_docs/kbn_core_rendering_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-rendering-server-internal title: "@kbn/core-rendering-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-rendering-server-internal plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-rendering-server-internal'] --- import kbnCoreRenderingServerInternalObj from './kbn_core_rendering_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_rendering_server_mocks.mdx b/api_docs/kbn_core_rendering_server_mocks.mdx index 71ec48a5a4eb3..d5a3a3a0cadd7 100644 --- a/api_docs/kbn_core_rendering_server_mocks.mdx +++ b/api_docs/kbn_core_rendering_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-rendering-server-mocks title: "@kbn/core-rendering-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-rendering-server-mocks plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-rendering-server-mocks'] --- import kbnCoreRenderingServerMocksObj from './kbn_core_rendering_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_root_server_internal.mdx b/api_docs/kbn_core_root_server_internal.mdx index 985a16b0261ea..f8899741c8460 100644 --- a/api_docs/kbn_core_root_server_internal.mdx +++ b/api_docs/kbn_core_root_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-root-server-internal title: "@kbn/core-root-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-root-server-internal plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-root-server-internal'] --- import kbnCoreRootServerInternalObj from './kbn_core_root_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_saved_objects_api_browser.mdx b/api_docs/kbn_core_saved_objects_api_browser.mdx index c3e93e7242086..1a90b731a4887 100644 --- a/api_docs/kbn_core_saved_objects_api_browser.mdx +++ b/api_docs/kbn_core_saved_objects_api_browser.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-saved-objects-api-browser title: "@kbn/core-saved-objects-api-browser" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-saved-objects-api-browser plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-saved-objects-api-browser'] --- import kbnCoreSavedObjectsApiBrowserObj from './kbn_core_saved_objects_api_browser.devdocs.json'; diff --git a/api_docs/kbn_core_saved_objects_api_server.mdx b/api_docs/kbn_core_saved_objects_api_server.mdx index 5389c790c3889..64389307dc138 100644 --- a/api_docs/kbn_core_saved_objects_api_server.mdx +++ b/api_docs/kbn_core_saved_objects_api_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-saved-objects-api-server title: "@kbn/core-saved-objects-api-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-saved-objects-api-server plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-saved-objects-api-server'] --- import kbnCoreSavedObjectsApiServerObj from './kbn_core_saved_objects_api_server.devdocs.json'; diff --git a/api_docs/kbn_core_saved_objects_api_server_mocks.mdx b/api_docs/kbn_core_saved_objects_api_server_mocks.mdx index 24d6094fecad2..0f8a33bebb2e9 100644 --- a/api_docs/kbn_core_saved_objects_api_server_mocks.mdx +++ b/api_docs/kbn_core_saved_objects_api_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-saved-objects-api-server-mocks title: "@kbn/core-saved-objects-api-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-saved-objects-api-server-mocks plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-saved-objects-api-server-mocks'] --- import kbnCoreSavedObjectsApiServerMocksObj from './kbn_core_saved_objects_api_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_saved_objects_base_server_internal.mdx b/api_docs/kbn_core_saved_objects_base_server_internal.mdx index 3348a66f9503c..dd9f7170f150b 100644 --- a/api_docs/kbn_core_saved_objects_base_server_internal.mdx +++ b/api_docs/kbn_core_saved_objects_base_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-saved-objects-base-server-internal title: "@kbn/core-saved-objects-base-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-saved-objects-base-server-internal plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-saved-objects-base-server-internal'] --- import kbnCoreSavedObjectsBaseServerInternalObj from './kbn_core_saved_objects_base_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_saved_objects_base_server_mocks.mdx b/api_docs/kbn_core_saved_objects_base_server_mocks.mdx index 00ec9085ed5b0..90e9ac5bd716d 100644 --- a/api_docs/kbn_core_saved_objects_base_server_mocks.mdx +++ b/api_docs/kbn_core_saved_objects_base_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-saved-objects-base-server-mocks title: "@kbn/core-saved-objects-base-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-saved-objects-base-server-mocks plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-saved-objects-base-server-mocks'] --- import kbnCoreSavedObjectsBaseServerMocksObj from './kbn_core_saved_objects_base_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_saved_objects_browser.mdx b/api_docs/kbn_core_saved_objects_browser.mdx index 46cca04b8c670..a1817a6a07a17 100644 --- a/api_docs/kbn_core_saved_objects_browser.mdx +++ b/api_docs/kbn_core_saved_objects_browser.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-saved-objects-browser title: "@kbn/core-saved-objects-browser" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-saved-objects-browser plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-saved-objects-browser'] --- import kbnCoreSavedObjectsBrowserObj from './kbn_core_saved_objects_browser.devdocs.json'; diff --git a/api_docs/kbn_core_saved_objects_browser_internal.mdx b/api_docs/kbn_core_saved_objects_browser_internal.mdx index 15a10088397da..39c4cf7af65a6 100644 --- a/api_docs/kbn_core_saved_objects_browser_internal.mdx +++ b/api_docs/kbn_core_saved_objects_browser_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-saved-objects-browser-internal title: "@kbn/core-saved-objects-browser-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-saved-objects-browser-internal plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-saved-objects-browser-internal'] --- import kbnCoreSavedObjectsBrowserInternalObj from './kbn_core_saved_objects_browser_internal.devdocs.json'; diff --git a/api_docs/kbn_core_saved_objects_browser_mocks.mdx b/api_docs/kbn_core_saved_objects_browser_mocks.mdx index f11d1ea3fd27b..e54de71bfcbc2 100644 --- a/api_docs/kbn_core_saved_objects_browser_mocks.mdx +++ b/api_docs/kbn_core_saved_objects_browser_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-saved-objects-browser-mocks title: "@kbn/core-saved-objects-browser-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-saved-objects-browser-mocks plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-saved-objects-browser-mocks'] --- import kbnCoreSavedObjectsBrowserMocksObj from './kbn_core_saved_objects_browser_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_saved_objects_common.mdx b/api_docs/kbn_core_saved_objects_common.mdx index b38bf406d436f..3ff296d3868fc 100644 --- a/api_docs/kbn_core_saved_objects_common.mdx +++ b/api_docs/kbn_core_saved_objects_common.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-saved-objects-common title: "@kbn/core-saved-objects-common" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-saved-objects-common plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-saved-objects-common'] --- import kbnCoreSavedObjectsCommonObj from './kbn_core_saved_objects_common.devdocs.json'; diff --git a/api_docs/kbn_core_saved_objects_import_export_server_internal.mdx b/api_docs/kbn_core_saved_objects_import_export_server_internal.mdx index dcc9f8b8c8e94..f6960165a3be9 100644 --- a/api_docs/kbn_core_saved_objects_import_export_server_internal.mdx +++ b/api_docs/kbn_core_saved_objects_import_export_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-saved-objects-import-export-server-internal title: "@kbn/core-saved-objects-import-export-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-saved-objects-import-export-server-internal plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-saved-objects-import-export-server-internal'] --- import kbnCoreSavedObjectsImportExportServerInternalObj from './kbn_core_saved_objects_import_export_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_saved_objects_import_export_server_mocks.mdx b/api_docs/kbn_core_saved_objects_import_export_server_mocks.mdx index d87aa7fa00c18..f19151f739d6f 100644 --- a/api_docs/kbn_core_saved_objects_import_export_server_mocks.mdx +++ b/api_docs/kbn_core_saved_objects_import_export_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-saved-objects-import-export-server-mocks title: "@kbn/core-saved-objects-import-export-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-saved-objects-import-export-server-mocks plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-saved-objects-import-export-server-mocks'] --- import kbnCoreSavedObjectsImportExportServerMocksObj from './kbn_core_saved_objects_import_export_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_saved_objects_migration_server_internal.mdx b/api_docs/kbn_core_saved_objects_migration_server_internal.mdx index 0243585e35df1..25f1f95e6a02e 100644 --- a/api_docs/kbn_core_saved_objects_migration_server_internal.mdx +++ b/api_docs/kbn_core_saved_objects_migration_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-saved-objects-migration-server-internal title: "@kbn/core-saved-objects-migration-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-saved-objects-migration-server-internal plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-saved-objects-migration-server-internal'] --- import kbnCoreSavedObjectsMigrationServerInternalObj from './kbn_core_saved_objects_migration_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_saved_objects_migration_server_mocks.mdx b/api_docs/kbn_core_saved_objects_migration_server_mocks.mdx index 089cd4f11e138..c937a174fb823 100644 --- a/api_docs/kbn_core_saved_objects_migration_server_mocks.mdx +++ b/api_docs/kbn_core_saved_objects_migration_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-saved-objects-migration-server-mocks title: "@kbn/core-saved-objects-migration-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-saved-objects-migration-server-mocks plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-saved-objects-migration-server-mocks'] --- import kbnCoreSavedObjectsMigrationServerMocksObj from './kbn_core_saved_objects_migration_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_saved_objects_server.mdx b/api_docs/kbn_core_saved_objects_server.mdx index 0d93a2c9924c8..6e626b240d86f 100644 --- a/api_docs/kbn_core_saved_objects_server.mdx +++ b/api_docs/kbn_core_saved_objects_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-saved-objects-server title: "@kbn/core-saved-objects-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-saved-objects-server plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-saved-objects-server'] --- import kbnCoreSavedObjectsServerObj from './kbn_core_saved_objects_server.devdocs.json'; diff --git a/api_docs/kbn_core_saved_objects_server_internal.mdx b/api_docs/kbn_core_saved_objects_server_internal.mdx index 038594c4e6f50..4fd533bb4bd96 100644 --- a/api_docs/kbn_core_saved_objects_server_internal.mdx +++ b/api_docs/kbn_core_saved_objects_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-saved-objects-server-internal title: "@kbn/core-saved-objects-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-saved-objects-server-internal plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-saved-objects-server-internal'] --- import kbnCoreSavedObjectsServerInternalObj from './kbn_core_saved_objects_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_saved_objects_server_mocks.mdx b/api_docs/kbn_core_saved_objects_server_mocks.mdx index 8de8c4fc312c4..9f52c18dfbf58 100644 --- a/api_docs/kbn_core_saved_objects_server_mocks.mdx +++ b/api_docs/kbn_core_saved_objects_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-saved-objects-server-mocks title: "@kbn/core-saved-objects-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-saved-objects-server-mocks plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-saved-objects-server-mocks'] --- import kbnCoreSavedObjectsServerMocksObj from './kbn_core_saved_objects_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_saved_objects_utils_server.mdx b/api_docs/kbn_core_saved_objects_utils_server.mdx index 14872988849f1..9d8cb3332c731 100644 --- a/api_docs/kbn_core_saved_objects_utils_server.mdx +++ b/api_docs/kbn_core_saved_objects_utils_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-saved-objects-utils-server title: "@kbn/core-saved-objects-utils-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-saved-objects-utils-server plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-saved-objects-utils-server'] --- import kbnCoreSavedObjectsUtilsServerObj from './kbn_core_saved_objects_utils_server.devdocs.json'; diff --git a/api_docs/kbn_core_status_common.mdx b/api_docs/kbn_core_status_common.mdx index 0707f752b2a6c..94fd11c66372d 100644 --- a/api_docs/kbn_core_status_common.mdx +++ b/api_docs/kbn_core_status_common.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-status-common title: "@kbn/core-status-common" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-status-common plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-status-common'] --- import kbnCoreStatusCommonObj from './kbn_core_status_common.devdocs.json'; diff --git a/api_docs/kbn_core_status_common_internal.mdx b/api_docs/kbn_core_status_common_internal.mdx index 35c63747efecb..dda2c0825eaa3 100644 --- a/api_docs/kbn_core_status_common_internal.mdx +++ b/api_docs/kbn_core_status_common_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-status-common-internal title: "@kbn/core-status-common-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-status-common-internal plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-status-common-internal'] --- import kbnCoreStatusCommonInternalObj from './kbn_core_status_common_internal.devdocs.json'; diff --git a/api_docs/kbn_core_status_server.mdx b/api_docs/kbn_core_status_server.mdx index b13279c38b32f..a19249d60f01d 100644 --- a/api_docs/kbn_core_status_server.mdx +++ b/api_docs/kbn_core_status_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-status-server title: "@kbn/core-status-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-status-server plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-status-server'] --- import kbnCoreStatusServerObj from './kbn_core_status_server.devdocs.json'; diff --git a/api_docs/kbn_core_status_server_internal.mdx b/api_docs/kbn_core_status_server_internal.mdx index 5740bf4cbada0..c966bb6c9d67a 100644 --- a/api_docs/kbn_core_status_server_internal.mdx +++ b/api_docs/kbn_core_status_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-status-server-internal title: "@kbn/core-status-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-status-server-internal plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-status-server-internal'] --- import kbnCoreStatusServerInternalObj from './kbn_core_status_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_status_server_mocks.mdx b/api_docs/kbn_core_status_server_mocks.mdx index 3126e14f0581c..b587cc553b72a 100644 --- a/api_docs/kbn_core_status_server_mocks.mdx +++ b/api_docs/kbn_core_status_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-status-server-mocks title: "@kbn/core-status-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-status-server-mocks plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-status-server-mocks'] --- import kbnCoreStatusServerMocksObj from './kbn_core_status_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_test_helpers_deprecations_getters.mdx b/api_docs/kbn_core_test_helpers_deprecations_getters.mdx index d2910acd94f73..1e629acc9f8dc 100644 --- a/api_docs/kbn_core_test_helpers_deprecations_getters.mdx +++ b/api_docs/kbn_core_test_helpers_deprecations_getters.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-test-helpers-deprecations-getters title: "@kbn/core-test-helpers-deprecations-getters" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-test-helpers-deprecations-getters plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-test-helpers-deprecations-getters'] --- import kbnCoreTestHelpersDeprecationsGettersObj from './kbn_core_test_helpers_deprecations_getters.devdocs.json'; diff --git a/api_docs/kbn_core_test_helpers_http_setup_browser.mdx b/api_docs/kbn_core_test_helpers_http_setup_browser.mdx index caca10c2fd48f..3bb3db62ea820 100644 --- a/api_docs/kbn_core_test_helpers_http_setup_browser.mdx +++ b/api_docs/kbn_core_test_helpers_http_setup_browser.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-test-helpers-http-setup-browser title: "@kbn/core-test-helpers-http-setup-browser" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-test-helpers-http-setup-browser plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-test-helpers-http-setup-browser'] --- import kbnCoreTestHelpersHttpSetupBrowserObj from './kbn_core_test_helpers_http_setup_browser.devdocs.json'; diff --git a/api_docs/kbn_core_test_helpers_kbn_server.mdx b/api_docs/kbn_core_test_helpers_kbn_server.mdx index 96d43fb283968..4555f0c0cd81e 100644 --- a/api_docs/kbn_core_test_helpers_kbn_server.mdx +++ b/api_docs/kbn_core_test_helpers_kbn_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-test-helpers-kbn-server title: "@kbn/core-test-helpers-kbn-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-test-helpers-kbn-server plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-test-helpers-kbn-server'] --- import kbnCoreTestHelpersKbnServerObj from './kbn_core_test_helpers_kbn_server.devdocs.json'; diff --git a/api_docs/kbn_core_test_helpers_so_type_serializer.mdx b/api_docs/kbn_core_test_helpers_so_type_serializer.mdx index 52d1fb852d224..c165846077470 100644 --- a/api_docs/kbn_core_test_helpers_so_type_serializer.mdx +++ b/api_docs/kbn_core_test_helpers_so_type_serializer.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-test-helpers-so-type-serializer title: "@kbn/core-test-helpers-so-type-serializer" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-test-helpers-so-type-serializer plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-test-helpers-so-type-serializer'] --- import kbnCoreTestHelpersSoTypeSerializerObj from './kbn_core_test_helpers_so_type_serializer.devdocs.json'; diff --git a/api_docs/kbn_core_test_helpers_test_utils.mdx b/api_docs/kbn_core_test_helpers_test_utils.mdx index e256f3ba6d69e..a91080213c357 100644 --- a/api_docs/kbn_core_test_helpers_test_utils.mdx +++ b/api_docs/kbn_core_test_helpers_test_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-test-helpers-test-utils title: "@kbn/core-test-helpers-test-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-test-helpers-test-utils plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-test-helpers-test-utils'] --- import kbnCoreTestHelpersTestUtilsObj from './kbn_core_test_helpers_test_utils.devdocs.json'; diff --git a/api_docs/kbn_core_theme_browser.mdx b/api_docs/kbn_core_theme_browser.mdx index c883b482a9c69..9867d7595e2d6 100644 --- a/api_docs/kbn_core_theme_browser.mdx +++ b/api_docs/kbn_core_theme_browser.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-theme-browser title: "@kbn/core-theme-browser" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-theme-browser plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-theme-browser'] --- import kbnCoreThemeBrowserObj from './kbn_core_theme_browser.devdocs.json'; diff --git a/api_docs/kbn_core_theme_browser_mocks.mdx b/api_docs/kbn_core_theme_browser_mocks.mdx index 513db41d2f316..49a95f55c685f 100644 --- a/api_docs/kbn_core_theme_browser_mocks.mdx +++ b/api_docs/kbn_core_theme_browser_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-theme-browser-mocks title: "@kbn/core-theme-browser-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-theme-browser-mocks plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-theme-browser-mocks'] --- import kbnCoreThemeBrowserMocksObj from './kbn_core_theme_browser_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_ui_settings_browser.mdx b/api_docs/kbn_core_ui_settings_browser.mdx index 38cfbeb018997..4f4a82e3edb6b 100644 --- a/api_docs/kbn_core_ui_settings_browser.mdx +++ b/api_docs/kbn_core_ui_settings_browser.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-ui-settings-browser title: "@kbn/core-ui-settings-browser" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-ui-settings-browser plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-ui-settings-browser'] --- import kbnCoreUiSettingsBrowserObj from './kbn_core_ui_settings_browser.devdocs.json'; diff --git a/api_docs/kbn_core_ui_settings_browser_internal.mdx b/api_docs/kbn_core_ui_settings_browser_internal.mdx index cfe6994c0bbf7..9cc0c2c5ccd1b 100644 --- a/api_docs/kbn_core_ui_settings_browser_internal.mdx +++ b/api_docs/kbn_core_ui_settings_browser_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-ui-settings-browser-internal title: "@kbn/core-ui-settings-browser-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-ui-settings-browser-internal plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-ui-settings-browser-internal'] --- import kbnCoreUiSettingsBrowserInternalObj from './kbn_core_ui_settings_browser_internal.devdocs.json'; diff --git a/api_docs/kbn_core_ui_settings_browser_mocks.mdx b/api_docs/kbn_core_ui_settings_browser_mocks.mdx index 0bacde75c8ed3..c8480d7b9aebd 100644 --- a/api_docs/kbn_core_ui_settings_browser_mocks.mdx +++ b/api_docs/kbn_core_ui_settings_browser_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-ui-settings-browser-mocks title: "@kbn/core-ui-settings-browser-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-ui-settings-browser-mocks plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-ui-settings-browser-mocks'] --- import kbnCoreUiSettingsBrowserMocksObj from './kbn_core_ui_settings_browser_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_ui_settings_common.mdx b/api_docs/kbn_core_ui_settings_common.mdx index f1671013301da..c3b16d9766a8d 100644 --- a/api_docs/kbn_core_ui_settings_common.mdx +++ b/api_docs/kbn_core_ui_settings_common.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-ui-settings-common title: "@kbn/core-ui-settings-common" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-ui-settings-common plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-ui-settings-common'] --- import kbnCoreUiSettingsCommonObj from './kbn_core_ui_settings_common.devdocs.json'; diff --git a/api_docs/kbn_core_ui_settings_server.mdx b/api_docs/kbn_core_ui_settings_server.mdx index 3f0b161976b96..6c6d03f53fba5 100644 --- a/api_docs/kbn_core_ui_settings_server.mdx +++ b/api_docs/kbn_core_ui_settings_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-ui-settings-server title: "@kbn/core-ui-settings-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-ui-settings-server plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-ui-settings-server'] --- import kbnCoreUiSettingsServerObj from './kbn_core_ui_settings_server.devdocs.json'; diff --git a/api_docs/kbn_core_ui_settings_server_internal.mdx b/api_docs/kbn_core_ui_settings_server_internal.mdx index 696ae1d316070..75dc24f2e5847 100644 --- a/api_docs/kbn_core_ui_settings_server_internal.mdx +++ b/api_docs/kbn_core_ui_settings_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-ui-settings-server-internal title: "@kbn/core-ui-settings-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-ui-settings-server-internal plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-ui-settings-server-internal'] --- import kbnCoreUiSettingsServerInternalObj from './kbn_core_ui_settings_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_ui_settings_server_mocks.mdx b/api_docs/kbn_core_ui_settings_server_mocks.mdx index 6461a930f9926..86303d6f9925b 100644 --- a/api_docs/kbn_core_ui_settings_server_mocks.mdx +++ b/api_docs/kbn_core_ui_settings_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-ui-settings-server-mocks title: "@kbn/core-ui-settings-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-ui-settings-server-mocks plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-ui-settings-server-mocks'] --- import kbnCoreUiSettingsServerMocksObj from './kbn_core_ui_settings_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_usage_data_server.mdx b/api_docs/kbn_core_usage_data_server.mdx index 11e95f64326de..7585ebcdc8491 100644 --- a/api_docs/kbn_core_usage_data_server.mdx +++ b/api_docs/kbn_core_usage_data_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-usage-data-server title: "@kbn/core-usage-data-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-usage-data-server plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-usage-data-server'] --- import kbnCoreUsageDataServerObj from './kbn_core_usage_data_server.devdocs.json'; diff --git a/api_docs/kbn_core_usage_data_server_internal.mdx b/api_docs/kbn_core_usage_data_server_internal.mdx index 2fff03abb2438..0ea42f83373ff 100644 --- a/api_docs/kbn_core_usage_data_server_internal.mdx +++ b/api_docs/kbn_core_usage_data_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-usage-data-server-internal title: "@kbn/core-usage-data-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-usage-data-server-internal plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-usage-data-server-internal'] --- import kbnCoreUsageDataServerInternalObj from './kbn_core_usage_data_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_usage_data_server_mocks.mdx b/api_docs/kbn_core_usage_data_server_mocks.mdx index 3d8450614de08..fe1bd0e1c356e 100644 --- a/api_docs/kbn_core_usage_data_server_mocks.mdx +++ b/api_docs/kbn_core_usage_data_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-usage-data-server-mocks title: "@kbn/core-usage-data-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-usage-data-server-mocks plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-usage-data-server-mocks'] --- import kbnCoreUsageDataServerMocksObj from './kbn_core_usage_data_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_user_settings_server.mdx b/api_docs/kbn_core_user_settings_server.mdx index 8a4e30bc7f65e..c29d4fa88fcb8 100644 --- a/api_docs/kbn_core_user_settings_server.mdx +++ b/api_docs/kbn_core_user_settings_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-user-settings-server title: "@kbn/core-user-settings-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-user-settings-server plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-user-settings-server'] --- import kbnCoreUserSettingsServerObj from './kbn_core_user_settings_server.devdocs.json'; diff --git a/api_docs/kbn_core_user_settings_server_internal.mdx b/api_docs/kbn_core_user_settings_server_internal.mdx index bbc16de105137..c0f46d66768c2 100644 --- a/api_docs/kbn_core_user_settings_server_internal.mdx +++ b/api_docs/kbn_core_user_settings_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-user-settings-server-internal title: "@kbn/core-user-settings-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-user-settings-server-internal plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-user-settings-server-internal'] --- import kbnCoreUserSettingsServerInternalObj from './kbn_core_user_settings_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_user_settings_server_mocks.mdx b/api_docs/kbn_core_user_settings_server_mocks.mdx index f2235fdee4dee..69d4bc3d102b6 100644 --- a/api_docs/kbn_core_user_settings_server_mocks.mdx +++ b/api_docs/kbn_core_user_settings_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-user-settings-server-mocks title: "@kbn/core-user-settings-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-user-settings-server-mocks plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-user-settings-server-mocks'] --- import kbnCoreUserSettingsServerMocksObj from './kbn_core_user_settings_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_crypto.mdx b/api_docs/kbn_crypto.mdx index c14fe4df54dc4..50e5bd19b4768 100644 --- a/api_docs/kbn_crypto.mdx +++ b/api_docs/kbn_crypto.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-crypto title: "@kbn/crypto" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/crypto plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/crypto'] --- import kbnCryptoObj from './kbn_crypto.devdocs.json'; diff --git a/api_docs/kbn_crypto_browser.mdx b/api_docs/kbn_crypto_browser.mdx index cd44c94dbb706..3c831c1d0ee89 100644 --- a/api_docs/kbn_crypto_browser.mdx +++ b/api_docs/kbn_crypto_browser.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-crypto-browser title: "@kbn/crypto-browser" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/crypto-browser plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/crypto-browser'] --- import kbnCryptoBrowserObj from './kbn_crypto_browser.devdocs.json'; diff --git a/api_docs/kbn_cypress_config.mdx b/api_docs/kbn_cypress_config.mdx index 1244ed0c0da4c..78a73de5d1867 100644 --- a/api_docs/kbn_cypress_config.mdx +++ b/api_docs/kbn_cypress_config.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-cypress-config title: "@kbn/cypress-config" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/cypress-config plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/cypress-config'] --- import kbnCypressConfigObj from './kbn_cypress_config.devdocs.json'; diff --git a/api_docs/kbn_data_service.mdx b/api_docs/kbn_data_service.mdx index 76ecfb8d270ca..a6105789f0523 100644 --- a/api_docs/kbn_data_service.mdx +++ b/api_docs/kbn_data_service.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-data-service title: "@kbn/data-service" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/data-service plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/data-service'] --- import kbnDataServiceObj from './kbn_data_service.devdocs.json'; diff --git a/api_docs/kbn_datemath.mdx b/api_docs/kbn_datemath.mdx index 8a115eeed4cf6..766b8051ca37a 100644 --- a/api_docs/kbn_datemath.mdx +++ b/api_docs/kbn_datemath.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-datemath title: "@kbn/datemath" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/datemath plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/datemath'] --- import kbnDatemathObj from './kbn_datemath.devdocs.json'; diff --git a/api_docs/kbn_deeplinks_analytics.mdx b/api_docs/kbn_deeplinks_analytics.mdx index bda8d0b6b8ab1..cb1ffb4254106 100644 --- a/api_docs/kbn_deeplinks_analytics.mdx +++ b/api_docs/kbn_deeplinks_analytics.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-deeplinks-analytics title: "@kbn/deeplinks-analytics" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/deeplinks-analytics plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/deeplinks-analytics'] --- import kbnDeeplinksAnalyticsObj from './kbn_deeplinks_analytics.devdocs.json'; diff --git a/api_docs/kbn_deeplinks_devtools.mdx b/api_docs/kbn_deeplinks_devtools.mdx index 023e5b73ca23d..b047cb06b1511 100644 --- a/api_docs/kbn_deeplinks_devtools.mdx +++ b/api_docs/kbn_deeplinks_devtools.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-deeplinks-devtools title: "@kbn/deeplinks-devtools" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/deeplinks-devtools plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/deeplinks-devtools'] --- import kbnDeeplinksDevtoolsObj from './kbn_deeplinks_devtools.devdocs.json'; diff --git a/api_docs/kbn_deeplinks_management.mdx b/api_docs/kbn_deeplinks_management.mdx index 247745c07f508..9219e6753b699 100644 --- a/api_docs/kbn_deeplinks_management.mdx +++ b/api_docs/kbn_deeplinks_management.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-deeplinks-management title: "@kbn/deeplinks-management" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/deeplinks-management plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/deeplinks-management'] --- import kbnDeeplinksManagementObj from './kbn_deeplinks_management.devdocs.json'; diff --git a/api_docs/kbn_deeplinks_ml.mdx b/api_docs/kbn_deeplinks_ml.mdx index bb3308665a207..44e124a7514ad 100644 --- a/api_docs/kbn_deeplinks_ml.mdx +++ b/api_docs/kbn_deeplinks_ml.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-deeplinks-ml title: "@kbn/deeplinks-ml" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/deeplinks-ml plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/deeplinks-ml'] --- import kbnDeeplinksMlObj from './kbn_deeplinks_ml.devdocs.json'; diff --git a/api_docs/kbn_deeplinks_observability.mdx b/api_docs/kbn_deeplinks_observability.mdx index 315988ced942c..f75e59835c071 100644 --- a/api_docs/kbn_deeplinks_observability.mdx +++ b/api_docs/kbn_deeplinks_observability.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-deeplinks-observability title: "@kbn/deeplinks-observability" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/deeplinks-observability plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/deeplinks-observability'] --- import kbnDeeplinksObservabilityObj from './kbn_deeplinks_observability.devdocs.json'; diff --git a/api_docs/kbn_deeplinks_search.mdx b/api_docs/kbn_deeplinks_search.mdx index 8777eb2ca54ef..0180e463d2d72 100644 --- a/api_docs/kbn_deeplinks_search.mdx +++ b/api_docs/kbn_deeplinks_search.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-deeplinks-search title: "@kbn/deeplinks-search" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/deeplinks-search plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/deeplinks-search'] --- import kbnDeeplinksSearchObj from './kbn_deeplinks_search.devdocs.json'; diff --git a/api_docs/kbn_default_nav_analytics.mdx b/api_docs/kbn_default_nav_analytics.mdx index 387d6797cd5a5..840bef3ce72ef 100644 --- a/api_docs/kbn_default_nav_analytics.mdx +++ b/api_docs/kbn_default_nav_analytics.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-default-nav-analytics title: "@kbn/default-nav-analytics" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/default-nav-analytics plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/default-nav-analytics'] --- import kbnDefaultNavAnalyticsObj from './kbn_default_nav_analytics.devdocs.json'; diff --git a/api_docs/kbn_default_nav_devtools.mdx b/api_docs/kbn_default_nav_devtools.mdx index efaffaf33ca7c..176cd083cf18e 100644 --- a/api_docs/kbn_default_nav_devtools.mdx +++ b/api_docs/kbn_default_nav_devtools.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-default-nav-devtools title: "@kbn/default-nav-devtools" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/default-nav-devtools plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/default-nav-devtools'] --- import kbnDefaultNavDevtoolsObj from './kbn_default_nav_devtools.devdocs.json'; diff --git a/api_docs/kbn_default_nav_management.mdx b/api_docs/kbn_default_nav_management.mdx index ef7beaef0f6a9..0ac9edfdd54fc 100644 --- a/api_docs/kbn_default_nav_management.mdx +++ b/api_docs/kbn_default_nav_management.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-default-nav-management title: "@kbn/default-nav-management" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/default-nav-management plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/default-nav-management'] --- import kbnDefaultNavManagementObj from './kbn_default_nav_management.devdocs.json'; diff --git a/api_docs/kbn_default_nav_ml.mdx b/api_docs/kbn_default_nav_ml.mdx index 763e602b18868..b20c3bdd080da 100644 --- a/api_docs/kbn_default_nav_ml.mdx +++ b/api_docs/kbn_default_nav_ml.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-default-nav-ml title: "@kbn/default-nav-ml" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/default-nav-ml plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/default-nav-ml'] --- import kbnDefaultNavMlObj from './kbn_default_nav_ml.devdocs.json'; diff --git a/api_docs/kbn_dev_cli_errors.mdx b/api_docs/kbn_dev_cli_errors.mdx index 918307a7aea1f..113cd6a82a2b5 100644 --- a/api_docs/kbn_dev_cli_errors.mdx +++ b/api_docs/kbn_dev_cli_errors.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-dev-cli-errors title: "@kbn/dev-cli-errors" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/dev-cli-errors plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/dev-cli-errors'] --- import kbnDevCliErrorsObj from './kbn_dev_cli_errors.devdocs.json'; diff --git a/api_docs/kbn_dev_cli_runner.mdx b/api_docs/kbn_dev_cli_runner.mdx index 8889c66a849e1..d6bc349a21507 100644 --- a/api_docs/kbn_dev_cli_runner.mdx +++ b/api_docs/kbn_dev_cli_runner.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-dev-cli-runner title: "@kbn/dev-cli-runner" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/dev-cli-runner plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/dev-cli-runner'] --- import kbnDevCliRunnerObj from './kbn_dev_cli_runner.devdocs.json'; diff --git a/api_docs/kbn_dev_proc_runner.mdx b/api_docs/kbn_dev_proc_runner.mdx index 787be9b13f6ff..56d8fec5c0828 100644 --- a/api_docs/kbn_dev_proc_runner.mdx +++ b/api_docs/kbn_dev_proc_runner.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-dev-proc-runner title: "@kbn/dev-proc-runner" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/dev-proc-runner plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/dev-proc-runner'] --- import kbnDevProcRunnerObj from './kbn_dev_proc_runner.devdocs.json'; diff --git a/api_docs/kbn_dev_utils.mdx b/api_docs/kbn_dev_utils.mdx index d0134b6dd43c5..b9d6443d12d88 100644 --- a/api_docs/kbn_dev_utils.mdx +++ b/api_docs/kbn_dev_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-dev-utils title: "@kbn/dev-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/dev-utils plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/dev-utils'] --- import kbnDevUtilsObj from './kbn_dev_utils.devdocs.json'; diff --git a/api_docs/kbn_discover_utils.mdx b/api_docs/kbn_discover_utils.mdx index 1ee3655894d70..53a748f72b7e0 100644 --- a/api_docs/kbn_discover_utils.mdx +++ b/api_docs/kbn_discover_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-discover-utils title: "@kbn/discover-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/discover-utils plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/discover-utils'] --- import kbnDiscoverUtilsObj from './kbn_discover_utils.devdocs.json'; diff --git a/api_docs/kbn_doc_links.mdx b/api_docs/kbn_doc_links.mdx index 32a41d70a9325..e10d05ddd78de 100644 --- a/api_docs/kbn_doc_links.mdx +++ b/api_docs/kbn_doc_links.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-doc-links title: "@kbn/doc-links" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/doc-links plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/doc-links'] --- import kbnDocLinksObj from './kbn_doc_links.devdocs.json'; diff --git a/api_docs/kbn_docs_utils.mdx b/api_docs/kbn_docs_utils.mdx index a276ef5f584e8..a670edb9d3018 100644 --- a/api_docs/kbn_docs_utils.mdx +++ b/api_docs/kbn_docs_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-docs-utils title: "@kbn/docs-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/docs-utils plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/docs-utils'] --- import kbnDocsUtilsObj from './kbn_docs_utils.devdocs.json'; diff --git a/api_docs/kbn_dom_drag_drop.mdx b/api_docs/kbn_dom_drag_drop.mdx index bd3a9ef6ceb82..23edb0ca7fe72 100644 --- a/api_docs/kbn_dom_drag_drop.mdx +++ b/api_docs/kbn_dom_drag_drop.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-dom-drag-drop title: "@kbn/dom-drag-drop" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/dom-drag-drop plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/dom-drag-drop'] --- import kbnDomDragDropObj from './kbn_dom_drag_drop.devdocs.json'; diff --git a/api_docs/kbn_ebt_tools.mdx b/api_docs/kbn_ebt_tools.mdx index ae8ce838528bd..c95007904924d 100644 --- a/api_docs/kbn_ebt_tools.mdx +++ b/api_docs/kbn_ebt_tools.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ebt-tools title: "@kbn/ebt-tools" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ebt-tools plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ebt-tools'] --- import kbnEbtToolsObj from './kbn_ebt_tools.devdocs.json'; diff --git a/api_docs/kbn_ecs.mdx b/api_docs/kbn_ecs.mdx index 31679eb5a4ee6..58903a3c81abd 100644 --- a/api_docs/kbn_ecs.mdx +++ b/api_docs/kbn_ecs.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ecs title: "@kbn/ecs" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ecs plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ecs'] --- import kbnEcsObj from './kbn_ecs.devdocs.json'; diff --git a/api_docs/kbn_ecs_data_quality_dashboard.mdx b/api_docs/kbn_ecs_data_quality_dashboard.mdx index 6af12ec235d93..10bad964f02e3 100644 --- a/api_docs/kbn_ecs_data_quality_dashboard.mdx +++ b/api_docs/kbn_ecs_data_quality_dashboard.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ecs-data-quality-dashboard title: "@kbn/ecs-data-quality-dashboard" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ecs-data-quality-dashboard plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ecs-data-quality-dashboard'] --- import kbnEcsDataQualityDashboardObj from './kbn_ecs_data_quality_dashboard.devdocs.json'; diff --git a/api_docs/kbn_elastic_assistant.mdx b/api_docs/kbn_elastic_assistant.mdx index 057d553c9c272..bebee29d1038a 100644 --- a/api_docs/kbn_elastic_assistant.mdx +++ b/api_docs/kbn_elastic_assistant.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-elastic-assistant title: "@kbn/elastic-assistant" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/elastic-assistant plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/elastic-assistant'] --- import kbnElasticAssistantObj from './kbn_elastic_assistant.devdocs.json'; diff --git a/api_docs/kbn_es.mdx b/api_docs/kbn_es.mdx index 2626b9b5e3793..5d064f79a07bd 100644 --- a/api_docs/kbn_es.mdx +++ b/api_docs/kbn_es.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-es title: "@kbn/es" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/es plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/es'] --- import kbnEsObj from './kbn_es.devdocs.json'; diff --git a/api_docs/kbn_es_archiver.mdx b/api_docs/kbn_es_archiver.mdx index 9ce008af48794..a9952ec8ee4af 100644 --- a/api_docs/kbn_es_archiver.mdx +++ b/api_docs/kbn_es_archiver.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-es-archiver title: "@kbn/es-archiver" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/es-archiver plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/es-archiver'] --- import kbnEsArchiverObj from './kbn_es_archiver.devdocs.json'; diff --git a/api_docs/kbn_es_errors.mdx b/api_docs/kbn_es_errors.mdx index a8ab926401b82..0e57d7bc1d6bd 100644 --- a/api_docs/kbn_es_errors.mdx +++ b/api_docs/kbn_es_errors.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-es-errors title: "@kbn/es-errors" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/es-errors plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/es-errors'] --- import kbnEsErrorsObj from './kbn_es_errors.devdocs.json'; diff --git a/api_docs/kbn_es_query.mdx b/api_docs/kbn_es_query.mdx index 34abd1a51f0fd..eec6a2e640015 100644 --- a/api_docs/kbn_es_query.mdx +++ b/api_docs/kbn_es_query.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-es-query title: "@kbn/es-query" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/es-query plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/es-query'] --- import kbnEsQueryObj from './kbn_es_query.devdocs.json'; diff --git a/api_docs/kbn_es_types.mdx b/api_docs/kbn_es_types.mdx index ca7517756e605..7196f80f9f763 100644 --- a/api_docs/kbn_es_types.mdx +++ b/api_docs/kbn_es_types.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-es-types title: "@kbn/es-types" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/es-types plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/es-types'] --- import kbnEsTypesObj from './kbn_es_types.devdocs.json'; diff --git a/api_docs/kbn_eslint_plugin_imports.mdx b/api_docs/kbn_eslint_plugin_imports.mdx index 7899f9650cd30..46a0a1ea92a11 100644 --- a/api_docs/kbn_eslint_plugin_imports.mdx +++ b/api_docs/kbn_eslint_plugin_imports.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-eslint-plugin-imports title: "@kbn/eslint-plugin-imports" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/eslint-plugin-imports plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/eslint-plugin-imports'] --- import kbnEslintPluginImportsObj from './kbn_eslint_plugin_imports.devdocs.json'; diff --git a/api_docs/kbn_event_annotation_common.mdx b/api_docs/kbn_event_annotation_common.mdx index fdd6e0c7f3fc3..4269e7ed98e83 100644 --- a/api_docs/kbn_event_annotation_common.mdx +++ b/api_docs/kbn_event_annotation_common.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-event-annotation-common title: "@kbn/event-annotation-common" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/event-annotation-common plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/event-annotation-common'] --- import kbnEventAnnotationCommonObj from './kbn_event_annotation_common.devdocs.json'; diff --git a/api_docs/kbn_event_annotation_components.mdx b/api_docs/kbn_event_annotation_components.mdx index fc83a934bf7e1..e0b8669cdc1dd 100644 --- a/api_docs/kbn_event_annotation_components.mdx +++ b/api_docs/kbn_event_annotation_components.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-event-annotation-components title: "@kbn/event-annotation-components" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/event-annotation-components plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/event-annotation-components'] --- import kbnEventAnnotationComponentsObj from './kbn_event_annotation_components.devdocs.json'; diff --git a/api_docs/kbn_expandable_flyout.mdx b/api_docs/kbn_expandable_flyout.mdx index 0788687a910fe..9bc0c96297a67 100644 --- a/api_docs/kbn_expandable_flyout.mdx +++ b/api_docs/kbn_expandable_flyout.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-expandable-flyout title: "@kbn/expandable-flyout" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/expandable-flyout plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/expandable-flyout'] --- import kbnExpandableFlyoutObj from './kbn_expandable_flyout.devdocs.json'; diff --git a/api_docs/kbn_field_types.mdx b/api_docs/kbn_field_types.mdx index 8af6fb11bde12..e9b8161b5dc7d 100644 --- a/api_docs/kbn_field_types.mdx +++ b/api_docs/kbn_field_types.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-field-types title: "@kbn/field-types" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/field-types plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/field-types'] --- import kbnFieldTypesObj from './kbn_field_types.devdocs.json'; diff --git a/api_docs/kbn_find_used_node_modules.mdx b/api_docs/kbn_find_used_node_modules.mdx index c99be713b8d90..bbd8695bcee88 100644 --- a/api_docs/kbn_find_used_node_modules.mdx +++ b/api_docs/kbn_find_used_node_modules.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-find-used-node-modules title: "@kbn/find-used-node-modules" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/find-used-node-modules plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/find-used-node-modules'] --- import kbnFindUsedNodeModulesObj from './kbn_find_used_node_modules.devdocs.json'; diff --git a/api_docs/kbn_ftr_common_functional_services.mdx b/api_docs/kbn_ftr_common_functional_services.mdx index b911c6e1e1952..568548ff4aa6f 100644 --- a/api_docs/kbn_ftr_common_functional_services.mdx +++ b/api_docs/kbn_ftr_common_functional_services.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ftr-common-functional-services title: "@kbn/ftr-common-functional-services" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ftr-common-functional-services plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ftr-common-functional-services'] --- import kbnFtrCommonFunctionalServicesObj from './kbn_ftr_common_functional_services.devdocs.json'; diff --git a/api_docs/kbn_generate.mdx b/api_docs/kbn_generate.mdx index b5bda95c806cb..fa5768753b039 100644 --- a/api_docs/kbn_generate.mdx +++ b/api_docs/kbn_generate.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-generate title: "@kbn/generate" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/generate plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/generate'] --- import kbnGenerateObj from './kbn_generate.devdocs.json'; diff --git a/api_docs/kbn_generate_console_definitions.mdx b/api_docs/kbn_generate_console_definitions.mdx index e3d7321f12ea1..419f938af074e 100644 --- a/api_docs/kbn_generate_console_definitions.mdx +++ b/api_docs/kbn_generate_console_definitions.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-generate-console-definitions title: "@kbn/generate-console-definitions" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/generate-console-definitions plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/generate-console-definitions'] --- import kbnGenerateConsoleDefinitionsObj from './kbn_generate_console_definitions.devdocs.json'; diff --git a/api_docs/kbn_generate_csv.mdx b/api_docs/kbn_generate_csv.mdx index 65b0ac1dd0ecd..c1bfcd5bb2818 100644 --- a/api_docs/kbn_generate_csv.mdx +++ b/api_docs/kbn_generate_csv.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-generate-csv title: "@kbn/generate-csv" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/generate-csv plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/generate-csv'] --- import kbnGenerateCsvObj from './kbn_generate_csv.devdocs.json'; diff --git a/api_docs/kbn_generate_csv_types.mdx b/api_docs/kbn_generate_csv_types.mdx index a68e429f6013e..6c563f87fe9c4 100644 --- a/api_docs/kbn_generate_csv_types.mdx +++ b/api_docs/kbn_generate_csv_types.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-generate-csv-types title: "@kbn/generate-csv-types" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/generate-csv-types plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/generate-csv-types'] --- import kbnGenerateCsvTypesObj from './kbn_generate_csv_types.devdocs.json'; diff --git a/api_docs/kbn_guided_onboarding.mdx b/api_docs/kbn_guided_onboarding.mdx index df6dcbf68a99c..9d8254b6d4c5f 100644 --- a/api_docs/kbn_guided_onboarding.mdx +++ b/api_docs/kbn_guided_onboarding.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-guided-onboarding title: "@kbn/guided-onboarding" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/guided-onboarding plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/guided-onboarding'] --- import kbnGuidedOnboardingObj from './kbn_guided_onboarding.devdocs.json'; diff --git a/api_docs/kbn_handlebars.mdx b/api_docs/kbn_handlebars.mdx index 7fe9a26ba9dd7..ccc8ed8e145b8 100644 --- a/api_docs/kbn_handlebars.mdx +++ b/api_docs/kbn_handlebars.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-handlebars title: "@kbn/handlebars" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/handlebars plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/handlebars'] --- import kbnHandlebarsObj from './kbn_handlebars.devdocs.json'; diff --git a/api_docs/kbn_hapi_mocks.mdx b/api_docs/kbn_hapi_mocks.mdx index f64d1c6af5206..cd799193dec7a 100644 --- a/api_docs/kbn_hapi_mocks.mdx +++ b/api_docs/kbn_hapi_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-hapi-mocks title: "@kbn/hapi-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/hapi-mocks plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/hapi-mocks'] --- import kbnHapiMocksObj from './kbn_hapi_mocks.devdocs.json'; diff --git a/api_docs/kbn_health_gateway_server.mdx b/api_docs/kbn_health_gateway_server.mdx index 8676c7107d4dd..80c18b02ac5d9 100644 --- a/api_docs/kbn_health_gateway_server.mdx +++ b/api_docs/kbn_health_gateway_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-health-gateway-server title: "@kbn/health-gateway-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/health-gateway-server plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/health-gateway-server'] --- import kbnHealthGatewayServerObj from './kbn_health_gateway_server.devdocs.json'; diff --git a/api_docs/kbn_home_sample_data_card.mdx b/api_docs/kbn_home_sample_data_card.mdx index a0f2a90b37a14..fccf61bb0964f 100644 --- a/api_docs/kbn_home_sample_data_card.mdx +++ b/api_docs/kbn_home_sample_data_card.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-home-sample-data-card title: "@kbn/home-sample-data-card" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/home-sample-data-card plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/home-sample-data-card'] --- import kbnHomeSampleDataCardObj from './kbn_home_sample_data_card.devdocs.json'; diff --git a/api_docs/kbn_home_sample_data_tab.mdx b/api_docs/kbn_home_sample_data_tab.mdx index 8024bad81452e..b7f726363dba7 100644 --- a/api_docs/kbn_home_sample_data_tab.mdx +++ b/api_docs/kbn_home_sample_data_tab.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-home-sample-data-tab title: "@kbn/home-sample-data-tab" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/home-sample-data-tab plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/home-sample-data-tab'] --- import kbnHomeSampleDataTabObj from './kbn_home_sample_data_tab.devdocs.json'; diff --git a/api_docs/kbn_i18n.mdx b/api_docs/kbn_i18n.mdx index 79f69a5cc71a0..4eee0d1ff683e 100644 --- a/api_docs/kbn_i18n.mdx +++ b/api_docs/kbn_i18n.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-i18n title: "@kbn/i18n" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/i18n plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/i18n'] --- import kbnI18nObj from './kbn_i18n.devdocs.json'; diff --git a/api_docs/kbn_i18n_react.mdx b/api_docs/kbn_i18n_react.mdx index cc4337a22a137..4884deac439ee 100644 --- a/api_docs/kbn_i18n_react.mdx +++ b/api_docs/kbn_i18n_react.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-i18n-react title: "@kbn/i18n-react" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/i18n-react plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/i18n-react'] --- import kbnI18nReactObj from './kbn_i18n_react.devdocs.json'; diff --git a/api_docs/kbn_import_resolver.mdx b/api_docs/kbn_import_resolver.mdx index 81ae937e1aabc..d77d54b054703 100644 --- a/api_docs/kbn_import_resolver.mdx +++ b/api_docs/kbn_import_resolver.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-import-resolver title: "@kbn/import-resolver" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/import-resolver plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/import-resolver'] --- import kbnImportResolverObj from './kbn_import_resolver.devdocs.json'; diff --git a/api_docs/kbn_infra_forge.mdx b/api_docs/kbn_infra_forge.mdx index 903ff74457bd2..89ce0ace7f38c 100644 --- a/api_docs/kbn_infra_forge.mdx +++ b/api_docs/kbn_infra_forge.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-infra-forge title: "@kbn/infra-forge" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/infra-forge plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/infra-forge'] --- import kbnInfraForgeObj from './kbn_infra_forge.devdocs.json'; diff --git a/api_docs/kbn_interpreter.mdx b/api_docs/kbn_interpreter.mdx index 2d1f2dd1b4f3e..94444ebdea104 100644 --- a/api_docs/kbn_interpreter.mdx +++ b/api_docs/kbn_interpreter.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-interpreter title: "@kbn/interpreter" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/interpreter plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/interpreter'] --- import kbnInterpreterObj from './kbn_interpreter.devdocs.json'; diff --git a/api_docs/kbn_io_ts_utils.mdx b/api_docs/kbn_io_ts_utils.mdx index d3f8fb3e152da..bdd68dda0749d 100644 --- a/api_docs/kbn_io_ts_utils.mdx +++ b/api_docs/kbn_io_ts_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-io-ts-utils title: "@kbn/io-ts-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/io-ts-utils plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/io-ts-utils'] --- import kbnIoTsUtilsObj from './kbn_io_ts_utils.devdocs.json'; diff --git a/api_docs/kbn_jest_serializers.mdx b/api_docs/kbn_jest_serializers.mdx index 3b5fe7bcd0bb7..b1b983d226fc9 100644 --- a/api_docs/kbn_jest_serializers.mdx +++ b/api_docs/kbn_jest_serializers.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-jest-serializers title: "@kbn/jest-serializers" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/jest-serializers plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/jest-serializers'] --- import kbnJestSerializersObj from './kbn_jest_serializers.devdocs.json'; diff --git a/api_docs/kbn_journeys.mdx b/api_docs/kbn_journeys.mdx index eea14a63ba6ba..4f0bc0218e945 100644 --- a/api_docs/kbn_journeys.mdx +++ b/api_docs/kbn_journeys.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-journeys title: "@kbn/journeys" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/journeys plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/journeys'] --- import kbnJourneysObj from './kbn_journeys.devdocs.json'; diff --git a/api_docs/kbn_json_ast.mdx b/api_docs/kbn_json_ast.mdx index 5c11668ffa71e..5dd173d676d19 100644 --- a/api_docs/kbn_json_ast.mdx +++ b/api_docs/kbn_json_ast.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-json-ast title: "@kbn/json-ast" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/json-ast plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/json-ast'] --- import kbnJsonAstObj from './kbn_json_ast.devdocs.json'; diff --git a/api_docs/kbn_kibana_manifest_schema.mdx b/api_docs/kbn_kibana_manifest_schema.mdx index f4b3cbee7bc65..b37f26feca8fb 100644 --- a/api_docs/kbn_kibana_manifest_schema.mdx +++ b/api_docs/kbn_kibana_manifest_schema.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-kibana-manifest-schema title: "@kbn/kibana-manifest-schema" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/kibana-manifest-schema plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/kibana-manifest-schema'] --- import kbnKibanaManifestSchemaObj from './kbn_kibana_manifest_schema.devdocs.json'; diff --git a/api_docs/kbn_language_documentation_popover.mdx b/api_docs/kbn_language_documentation_popover.mdx index 277d89eeb2666..f5ee3dc45859c 100644 --- a/api_docs/kbn_language_documentation_popover.mdx +++ b/api_docs/kbn_language_documentation_popover.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-language-documentation-popover title: "@kbn/language-documentation-popover" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/language-documentation-popover plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/language-documentation-popover'] --- import kbnLanguageDocumentationPopoverObj from './kbn_language_documentation_popover.devdocs.json'; diff --git a/api_docs/kbn_lens_embeddable_utils.mdx b/api_docs/kbn_lens_embeddable_utils.mdx index 3121954ab3512..80ec92818f67d 100644 --- a/api_docs/kbn_lens_embeddable_utils.mdx +++ b/api_docs/kbn_lens_embeddable_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-lens-embeddable-utils title: "@kbn/lens-embeddable-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/lens-embeddable-utils plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/lens-embeddable-utils'] --- import kbnLensEmbeddableUtilsObj from './kbn_lens_embeddable_utils.devdocs.json'; diff --git a/api_docs/kbn_logging.mdx b/api_docs/kbn_logging.mdx index 6d1e806fffcf2..4d9107defc8a9 100644 --- a/api_docs/kbn_logging.mdx +++ b/api_docs/kbn_logging.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-logging title: "@kbn/logging" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/logging plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/logging'] --- import kbnLoggingObj from './kbn_logging.devdocs.json'; diff --git a/api_docs/kbn_logging_mocks.mdx b/api_docs/kbn_logging_mocks.mdx index ffb235143b227..dabeeff20ae91 100644 --- a/api_docs/kbn_logging_mocks.mdx +++ b/api_docs/kbn_logging_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-logging-mocks title: "@kbn/logging-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/logging-mocks plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/logging-mocks'] --- import kbnLoggingMocksObj from './kbn_logging_mocks.devdocs.json'; diff --git a/api_docs/kbn_managed_vscode_config.mdx b/api_docs/kbn_managed_vscode_config.mdx index 6dac7d9151945..cb57687c88b52 100644 --- a/api_docs/kbn_managed_vscode_config.mdx +++ b/api_docs/kbn_managed_vscode_config.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-managed-vscode-config title: "@kbn/managed-vscode-config" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/managed-vscode-config plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/managed-vscode-config'] --- import kbnManagedVscodeConfigObj from './kbn_managed_vscode_config.devdocs.json'; diff --git a/api_docs/kbn_management_cards_navigation.mdx b/api_docs/kbn_management_cards_navigation.mdx index c13b36d6a01b5..e26a3332382d8 100644 --- a/api_docs/kbn_management_cards_navigation.mdx +++ b/api_docs/kbn_management_cards_navigation.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-management-cards-navigation title: "@kbn/management-cards-navigation" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/management-cards-navigation plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/management-cards-navigation'] --- import kbnManagementCardsNavigationObj from './kbn_management_cards_navigation.devdocs.json'; diff --git a/api_docs/kbn_management_settings_section_registry.mdx b/api_docs/kbn_management_settings_section_registry.mdx index 0643d300555bb..10cb7f1612594 100644 --- a/api_docs/kbn_management_settings_section_registry.mdx +++ b/api_docs/kbn_management_settings_section_registry.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-management-settings-section-registry title: "@kbn/management-settings-section-registry" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/management-settings-section-registry plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/management-settings-section-registry'] --- import kbnManagementSettingsSectionRegistryObj from './kbn_management_settings_section_registry.devdocs.json'; diff --git a/api_docs/kbn_management_storybook_config.mdx b/api_docs/kbn_management_storybook_config.mdx index 8bcf6ef9da913..4d78f021e9b8e 100644 --- a/api_docs/kbn_management_storybook_config.mdx +++ b/api_docs/kbn_management_storybook_config.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-management-storybook-config title: "@kbn/management-storybook-config" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/management-storybook-config plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/management-storybook-config'] --- import kbnManagementStorybookConfigObj from './kbn_management_storybook_config.devdocs.json'; diff --git a/api_docs/kbn_mapbox_gl.mdx b/api_docs/kbn_mapbox_gl.mdx index 268c13ee40c21..25b8eddaed820 100644 --- a/api_docs/kbn_mapbox_gl.mdx +++ b/api_docs/kbn_mapbox_gl.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-mapbox-gl title: "@kbn/mapbox-gl" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/mapbox-gl plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/mapbox-gl'] --- import kbnMapboxGlObj from './kbn_mapbox_gl.devdocs.json'; diff --git a/api_docs/kbn_maps_vector_tile_utils.mdx b/api_docs/kbn_maps_vector_tile_utils.mdx index cda3b46c2c802..a486f91c6ce80 100644 --- a/api_docs/kbn_maps_vector_tile_utils.mdx +++ b/api_docs/kbn_maps_vector_tile_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-maps-vector-tile-utils title: "@kbn/maps-vector-tile-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/maps-vector-tile-utils plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/maps-vector-tile-utils'] --- import kbnMapsVectorTileUtilsObj from './kbn_maps_vector_tile_utils.devdocs.json'; diff --git a/api_docs/kbn_ml_agg_utils.mdx b/api_docs/kbn_ml_agg_utils.mdx index d4c39692829a9..1f573f178aa48 100644 --- a/api_docs/kbn_ml_agg_utils.mdx +++ b/api_docs/kbn_ml_agg_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-agg-utils title: "@kbn/ml-agg-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ml-agg-utils plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-agg-utils'] --- import kbnMlAggUtilsObj from './kbn_ml_agg_utils.devdocs.json'; diff --git a/api_docs/kbn_ml_anomaly_utils.mdx b/api_docs/kbn_ml_anomaly_utils.mdx index edb82b7d856a9..9aae44e563071 100644 --- a/api_docs/kbn_ml_anomaly_utils.mdx +++ b/api_docs/kbn_ml_anomaly_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-anomaly-utils title: "@kbn/ml-anomaly-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ml-anomaly-utils plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-anomaly-utils'] --- import kbnMlAnomalyUtilsObj from './kbn_ml_anomaly_utils.devdocs.json'; diff --git a/api_docs/kbn_ml_category_validator.mdx b/api_docs/kbn_ml_category_validator.mdx index 9ee3a48b1ed90..b61bae7f686c0 100644 --- a/api_docs/kbn_ml_category_validator.mdx +++ b/api_docs/kbn_ml_category_validator.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-category-validator title: "@kbn/ml-category-validator" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ml-category-validator plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-category-validator'] --- import kbnMlCategoryValidatorObj from './kbn_ml_category_validator.devdocs.json'; diff --git a/api_docs/kbn_ml_data_frame_analytics_utils.mdx b/api_docs/kbn_ml_data_frame_analytics_utils.mdx index d4fcdeafed66b..d028bcdd292c2 100644 --- a/api_docs/kbn_ml_data_frame_analytics_utils.mdx +++ b/api_docs/kbn_ml_data_frame_analytics_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-data-frame-analytics-utils title: "@kbn/ml-data-frame-analytics-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ml-data-frame-analytics-utils plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-data-frame-analytics-utils'] --- import kbnMlDataFrameAnalyticsUtilsObj from './kbn_ml_data_frame_analytics_utils.devdocs.json'; diff --git a/api_docs/kbn_ml_data_grid.mdx b/api_docs/kbn_ml_data_grid.mdx index 8e0369f66c66b..46160457cfb40 100644 --- a/api_docs/kbn_ml_data_grid.mdx +++ b/api_docs/kbn_ml_data_grid.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-data-grid title: "@kbn/ml-data-grid" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ml-data-grid plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-data-grid'] --- import kbnMlDataGridObj from './kbn_ml_data_grid.devdocs.json'; diff --git a/api_docs/kbn_ml_date_picker.mdx b/api_docs/kbn_ml_date_picker.mdx index 0a44b471adea8..b49d37521dfc5 100644 --- a/api_docs/kbn_ml_date_picker.mdx +++ b/api_docs/kbn_ml_date_picker.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-date-picker title: "@kbn/ml-date-picker" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ml-date-picker plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-date-picker'] --- import kbnMlDatePickerObj from './kbn_ml_date_picker.devdocs.json'; diff --git a/api_docs/kbn_ml_date_utils.mdx b/api_docs/kbn_ml_date_utils.mdx index 1a8bff8e80c51..f36efa6260bed 100644 --- a/api_docs/kbn_ml_date_utils.mdx +++ b/api_docs/kbn_ml_date_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-date-utils title: "@kbn/ml-date-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ml-date-utils plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-date-utils'] --- import kbnMlDateUtilsObj from './kbn_ml_date_utils.devdocs.json'; diff --git a/api_docs/kbn_ml_error_utils.mdx b/api_docs/kbn_ml_error_utils.mdx index f376e5de94cbd..e67965622abf2 100644 --- a/api_docs/kbn_ml_error_utils.mdx +++ b/api_docs/kbn_ml_error_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-error-utils title: "@kbn/ml-error-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ml-error-utils plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-error-utils'] --- import kbnMlErrorUtilsObj from './kbn_ml_error_utils.devdocs.json'; diff --git a/api_docs/kbn_ml_in_memory_table.mdx b/api_docs/kbn_ml_in_memory_table.mdx index 5a614d4f7e906..2293abb378091 100644 --- a/api_docs/kbn_ml_in_memory_table.mdx +++ b/api_docs/kbn_ml_in_memory_table.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-in-memory-table title: "@kbn/ml-in-memory-table" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ml-in-memory-table plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-in-memory-table'] --- import kbnMlInMemoryTableObj from './kbn_ml_in_memory_table.devdocs.json'; diff --git a/api_docs/kbn_ml_is_defined.mdx b/api_docs/kbn_ml_is_defined.mdx index cc1cd6b7c29c3..76d18ea443e22 100644 --- a/api_docs/kbn_ml_is_defined.mdx +++ b/api_docs/kbn_ml_is_defined.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-is-defined title: "@kbn/ml-is-defined" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ml-is-defined plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-is-defined'] --- import kbnMlIsDefinedObj from './kbn_ml_is_defined.devdocs.json'; diff --git a/api_docs/kbn_ml_is_populated_object.mdx b/api_docs/kbn_ml_is_populated_object.mdx index 88af0e128fe6d..b63ebb802ae4b 100644 --- a/api_docs/kbn_ml_is_populated_object.mdx +++ b/api_docs/kbn_ml_is_populated_object.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-is-populated-object title: "@kbn/ml-is-populated-object" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ml-is-populated-object plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-is-populated-object'] --- import kbnMlIsPopulatedObjectObj from './kbn_ml_is_populated_object.devdocs.json'; diff --git a/api_docs/kbn_ml_kibana_theme.mdx b/api_docs/kbn_ml_kibana_theme.mdx index 5004023259bfa..0e95c8df6db6c 100644 --- a/api_docs/kbn_ml_kibana_theme.mdx +++ b/api_docs/kbn_ml_kibana_theme.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-kibana-theme title: "@kbn/ml-kibana-theme" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ml-kibana-theme plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-kibana-theme'] --- import kbnMlKibanaThemeObj from './kbn_ml_kibana_theme.devdocs.json'; diff --git a/api_docs/kbn_ml_local_storage.mdx b/api_docs/kbn_ml_local_storage.mdx index 8ab31c0810681..09f3f34afa52f 100644 --- a/api_docs/kbn_ml_local_storage.mdx +++ b/api_docs/kbn_ml_local_storage.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-local-storage title: "@kbn/ml-local-storage" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ml-local-storage plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-local-storage'] --- import kbnMlLocalStorageObj from './kbn_ml_local_storage.devdocs.json'; diff --git a/api_docs/kbn_ml_nested_property.mdx b/api_docs/kbn_ml_nested_property.mdx index de7246615f050..c2686005a1b47 100644 --- a/api_docs/kbn_ml_nested_property.mdx +++ b/api_docs/kbn_ml_nested_property.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-nested-property title: "@kbn/ml-nested-property" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ml-nested-property plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-nested-property'] --- import kbnMlNestedPropertyObj from './kbn_ml_nested_property.devdocs.json'; diff --git a/api_docs/kbn_ml_number_utils.mdx b/api_docs/kbn_ml_number_utils.mdx index 300345dc19e9f..e364f70c184f4 100644 --- a/api_docs/kbn_ml_number_utils.mdx +++ b/api_docs/kbn_ml_number_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-number-utils title: "@kbn/ml-number-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ml-number-utils plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-number-utils'] --- import kbnMlNumberUtilsObj from './kbn_ml_number_utils.devdocs.json'; diff --git a/api_docs/kbn_ml_query_utils.mdx b/api_docs/kbn_ml_query_utils.mdx index 65e39c56c54cf..e7fe7ad9957c3 100644 --- a/api_docs/kbn_ml_query_utils.mdx +++ b/api_docs/kbn_ml_query_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-query-utils title: "@kbn/ml-query-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ml-query-utils plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-query-utils'] --- import kbnMlQueryUtilsObj from './kbn_ml_query_utils.devdocs.json'; diff --git a/api_docs/kbn_ml_random_sampler_utils.mdx b/api_docs/kbn_ml_random_sampler_utils.mdx index 5989125209f3c..096a5f9b29ae8 100644 --- a/api_docs/kbn_ml_random_sampler_utils.mdx +++ b/api_docs/kbn_ml_random_sampler_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-random-sampler-utils title: "@kbn/ml-random-sampler-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ml-random-sampler-utils plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-random-sampler-utils'] --- import kbnMlRandomSamplerUtilsObj from './kbn_ml_random_sampler_utils.devdocs.json'; diff --git a/api_docs/kbn_ml_route_utils.mdx b/api_docs/kbn_ml_route_utils.mdx index 8c2fe6d0f842b..7208fd4f27840 100644 --- a/api_docs/kbn_ml_route_utils.mdx +++ b/api_docs/kbn_ml_route_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-route-utils title: "@kbn/ml-route-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ml-route-utils plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-route-utils'] --- import kbnMlRouteUtilsObj from './kbn_ml_route_utils.devdocs.json'; diff --git a/api_docs/kbn_ml_runtime_field_utils.mdx b/api_docs/kbn_ml_runtime_field_utils.mdx index b87966a18bcc8..cb41d872a670c 100644 --- a/api_docs/kbn_ml_runtime_field_utils.mdx +++ b/api_docs/kbn_ml_runtime_field_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-runtime-field-utils title: "@kbn/ml-runtime-field-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ml-runtime-field-utils plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-runtime-field-utils'] --- import kbnMlRuntimeFieldUtilsObj from './kbn_ml_runtime_field_utils.devdocs.json'; diff --git a/api_docs/kbn_ml_string_hash.mdx b/api_docs/kbn_ml_string_hash.mdx index 54cb3c3ed4458..93bb955960964 100644 --- a/api_docs/kbn_ml_string_hash.mdx +++ b/api_docs/kbn_ml_string_hash.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-string-hash title: "@kbn/ml-string-hash" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ml-string-hash plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-string-hash'] --- import kbnMlStringHashObj from './kbn_ml_string_hash.devdocs.json'; diff --git a/api_docs/kbn_ml_trained_models_utils.mdx b/api_docs/kbn_ml_trained_models_utils.mdx index 032e218c58780..4c283c282c8db 100644 --- a/api_docs/kbn_ml_trained_models_utils.mdx +++ b/api_docs/kbn_ml_trained_models_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-trained-models-utils title: "@kbn/ml-trained-models-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ml-trained-models-utils plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-trained-models-utils'] --- import kbnMlTrainedModelsUtilsObj from './kbn_ml_trained_models_utils.devdocs.json'; diff --git a/api_docs/kbn_ml_url_state.mdx b/api_docs/kbn_ml_url_state.mdx index 7aed7a647acd3..a9c038be9f5c2 100644 --- a/api_docs/kbn_ml_url_state.mdx +++ b/api_docs/kbn_ml_url_state.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-url-state title: "@kbn/ml-url-state" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ml-url-state plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-url-state'] --- import kbnMlUrlStateObj from './kbn_ml_url_state.devdocs.json'; diff --git a/api_docs/kbn_monaco.mdx b/api_docs/kbn_monaco.mdx index e1d4a47d80bc5..463ab406fd55f 100644 --- a/api_docs/kbn_monaco.mdx +++ b/api_docs/kbn_monaco.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-monaco title: "@kbn/monaco" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/monaco plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/monaco'] --- import kbnMonacoObj from './kbn_monaco.devdocs.json'; diff --git a/api_docs/kbn_object_versioning.mdx b/api_docs/kbn_object_versioning.mdx index 7e85861952f55..bda7e1b72a441 100644 --- a/api_docs/kbn_object_versioning.mdx +++ b/api_docs/kbn_object_versioning.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-object-versioning title: "@kbn/object-versioning" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/object-versioning plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/object-versioning'] --- import kbnObjectVersioningObj from './kbn_object_versioning.devdocs.json'; diff --git a/api_docs/kbn_observability_alert_details.mdx b/api_docs/kbn_observability_alert_details.mdx index 3fb6a56259ba7..b8f82ea078ebd 100644 --- a/api_docs/kbn_observability_alert_details.mdx +++ b/api_docs/kbn_observability_alert_details.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-observability-alert-details title: "@kbn/observability-alert-details" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/observability-alert-details plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/observability-alert-details'] --- import kbnObservabilityAlertDetailsObj from './kbn_observability_alert_details.devdocs.json'; diff --git a/api_docs/kbn_optimizer.mdx b/api_docs/kbn_optimizer.mdx index ab04f163b40df..bb6ff9ee4a617 100644 --- a/api_docs/kbn_optimizer.mdx +++ b/api_docs/kbn_optimizer.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-optimizer title: "@kbn/optimizer" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/optimizer plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/optimizer'] --- import kbnOptimizerObj from './kbn_optimizer.devdocs.json'; diff --git a/api_docs/kbn_optimizer_webpack_helpers.mdx b/api_docs/kbn_optimizer_webpack_helpers.mdx index b3d04d8b790ae..c84308de8a868 100644 --- a/api_docs/kbn_optimizer_webpack_helpers.mdx +++ b/api_docs/kbn_optimizer_webpack_helpers.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-optimizer-webpack-helpers title: "@kbn/optimizer-webpack-helpers" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/optimizer-webpack-helpers plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/optimizer-webpack-helpers'] --- import kbnOptimizerWebpackHelpersObj from './kbn_optimizer_webpack_helpers.devdocs.json'; diff --git a/api_docs/kbn_osquery_io_ts_types.mdx b/api_docs/kbn_osquery_io_ts_types.mdx index 5680da729406a..066a71a3ae5cc 100644 --- a/api_docs/kbn_osquery_io_ts_types.mdx +++ b/api_docs/kbn_osquery_io_ts_types.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-osquery-io-ts-types title: "@kbn/osquery-io-ts-types" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/osquery-io-ts-types plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/osquery-io-ts-types'] --- import kbnOsqueryIoTsTypesObj from './kbn_osquery_io_ts_types.devdocs.json'; diff --git a/api_docs/kbn_performance_testing_dataset_extractor.mdx b/api_docs/kbn_performance_testing_dataset_extractor.mdx index 6e12225151607..5f2f2e6c06ab9 100644 --- a/api_docs/kbn_performance_testing_dataset_extractor.mdx +++ b/api_docs/kbn_performance_testing_dataset_extractor.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-performance-testing-dataset-extractor title: "@kbn/performance-testing-dataset-extractor" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/performance-testing-dataset-extractor plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/performance-testing-dataset-extractor'] --- import kbnPerformanceTestingDatasetExtractorObj from './kbn_performance_testing_dataset_extractor.devdocs.json'; diff --git a/api_docs/kbn_plugin_generator.mdx b/api_docs/kbn_plugin_generator.mdx index 0c622fb705406..26eda92de104d 100644 --- a/api_docs/kbn_plugin_generator.mdx +++ b/api_docs/kbn_plugin_generator.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-plugin-generator title: "@kbn/plugin-generator" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/plugin-generator plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/plugin-generator'] --- import kbnPluginGeneratorObj from './kbn_plugin_generator.devdocs.json'; diff --git a/api_docs/kbn_plugin_helpers.mdx b/api_docs/kbn_plugin_helpers.mdx index 149efa170d300..d4bc0aa7aeb60 100644 --- a/api_docs/kbn_plugin_helpers.mdx +++ b/api_docs/kbn_plugin_helpers.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-plugin-helpers title: "@kbn/plugin-helpers" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/plugin-helpers plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/plugin-helpers'] --- import kbnPluginHelpersObj from './kbn_plugin_helpers.devdocs.json'; diff --git a/api_docs/kbn_random_sampling.mdx b/api_docs/kbn_random_sampling.mdx index 70d41bb5964de..d960522fa72fd 100644 --- a/api_docs/kbn_random_sampling.mdx +++ b/api_docs/kbn_random_sampling.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-random-sampling title: "@kbn/random-sampling" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/random-sampling plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/random-sampling'] --- import kbnRandomSamplingObj from './kbn_random_sampling.devdocs.json'; diff --git a/api_docs/kbn_react_field.mdx b/api_docs/kbn_react_field.mdx index 037d30c889f87..da88dd664e8ff 100644 --- a/api_docs/kbn_react_field.mdx +++ b/api_docs/kbn_react_field.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-react-field title: "@kbn/react-field" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/react-field plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/react-field'] --- import kbnReactFieldObj from './kbn_react_field.devdocs.json'; diff --git a/api_docs/kbn_react_kibana_context_common.mdx b/api_docs/kbn_react_kibana_context_common.mdx index 58fbeeee2d187..eecec8d83ceec 100644 --- a/api_docs/kbn_react_kibana_context_common.mdx +++ b/api_docs/kbn_react_kibana_context_common.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-react-kibana-context-common title: "@kbn/react-kibana-context-common" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/react-kibana-context-common plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/react-kibana-context-common'] --- import kbnReactKibanaContextCommonObj from './kbn_react_kibana_context_common.devdocs.json'; diff --git a/api_docs/kbn_react_kibana_context_render.mdx b/api_docs/kbn_react_kibana_context_render.mdx index 959e2a057f24c..c82f905d9cae0 100644 --- a/api_docs/kbn_react_kibana_context_render.mdx +++ b/api_docs/kbn_react_kibana_context_render.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-react-kibana-context-render title: "@kbn/react-kibana-context-render" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/react-kibana-context-render plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/react-kibana-context-render'] --- import kbnReactKibanaContextRenderObj from './kbn_react_kibana_context_render.devdocs.json'; diff --git a/api_docs/kbn_react_kibana_context_root.mdx b/api_docs/kbn_react_kibana_context_root.mdx index 7613d4be794d4..987e08f19e998 100644 --- a/api_docs/kbn_react_kibana_context_root.mdx +++ b/api_docs/kbn_react_kibana_context_root.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-react-kibana-context-root title: "@kbn/react-kibana-context-root" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/react-kibana-context-root plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/react-kibana-context-root'] --- import kbnReactKibanaContextRootObj from './kbn_react_kibana_context_root.devdocs.json'; diff --git a/api_docs/kbn_react_kibana_context_styled.mdx b/api_docs/kbn_react_kibana_context_styled.mdx index 0323e7ebc62b4..56a9cf9e42403 100644 --- a/api_docs/kbn_react_kibana_context_styled.mdx +++ b/api_docs/kbn_react_kibana_context_styled.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-react-kibana-context-styled title: "@kbn/react-kibana-context-styled" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/react-kibana-context-styled plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/react-kibana-context-styled'] --- import kbnReactKibanaContextStyledObj from './kbn_react_kibana_context_styled.devdocs.json'; diff --git a/api_docs/kbn_react_kibana_context_theme.mdx b/api_docs/kbn_react_kibana_context_theme.mdx index cf70a70947460..6c1db92f4085f 100644 --- a/api_docs/kbn_react_kibana_context_theme.mdx +++ b/api_docs/kbn_react_kibana_context_theme.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-react-kibana-context-theme title: "@kbn/react-kibana-context-theme" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/react-kibana-context-theme plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/react-kibana-context-theme'] --- import kbnReactKibanaContextThemeObj from './kbn_react_kibana_context_theme.devdocs.json'; diff --git a/api_docs/kbn_react_kibana_mount.mdx b/api_docs/kbn_react_kibana_mount.mdx index d04209a9f3568..a16b44419d80c 100644 --- a/api_docs/kbn_react_kibana_mount.mdx +++ b/api_docs/kbn_react_kibana_mount.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-react-kibana-mount title: "@kbn/react-kibana-mount" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/react-kibana-mount plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/react-kibana-mount'] --- import kbnReactKibanaMountObj from './kbn_react_kibana_mount.devdocs.json'; diff --git a/api_docs/kbn_repo_file_maps.mdx b/api_docs/kbn_repo_file_maps.mdx index c2e009a4b77fb..3fb309c33bca7 100644 --- a/api_docs/kbn_repo_file_maps.mdx +++ b/api_docs/kbn_repo_file_maps.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-repo-file-maps title: "@kbn/repo-file-maps" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/repo-file-maps plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/repo-file-maps'] --- import kbnRepoFileMapsObj from './kbn_repo_file_maps.devdocs.json'; diff --git a/api_docs/kbn_repo_linter.mdx b/api_docs/kbn_repo_linter.mdx index 31eb94cd3909e..9b7f9cae664f2 100644 --- a/api_docs/kbn_repo_linter.mdx +++ b/api_docs/kbn_repo_linter.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-repo-linter title: "@kbn/repo-linter" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/repo-linter plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/repo-linter'] --- import kbnRepoLinterObj from './kbn_repo_linter.devdocs.json'; diff --git a/api_docs/kbn_repo_path.mdx b/api_docs/kbn_repo_path.mdx index 0ea939bbde996..425b657af6cfc 100644 --- a/api_docs/kbn_repo_path.mdx +++ b/api_docs/kbn_repo_path.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-repo-path title: "@kbn/repo-path" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/repo-path plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/repo-path'] --- import kbnRepoPathObj from './kbn_repo_path.devdocs.json'; diff --git a/api_docs/kbn_repo_source_classifier.mdx b/api_docs/kbn_repo_source_classifier.mdx index bd5a2b4bf7477..8215af139a97c 100644 --- a/api_docs/kbn_repo_source_classifier.mdx +++ b/api_docs/kbn_repo_source_classifier.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-repo-source-classifier title: "@kbn/repo-source-classifier" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/repo-source-classifier plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/repo-source-classifier'] --- import kbnRepoSourceClassifierObj from './kbn_repo_source_classifier.devdocs.json'; diff --git a/api_docs/kbn_reporting_common.mdx b/api_docs/kbn_reporting_common.mdx index ece34b24df02d..d56d17b99edbb 100644 --- a/api_docs/kbn_reporting_common.mdx +++ b/api_docs/kbn_reporting_common.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-reporting-common title: "@kbn/reporting-common" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/reporting-common plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/reporting-common'] --- import kbnReportingCommonObj from './kbn_reporting_common.devdocs.json'; diff --git a/api_docs/kbn_rison.mdx b/api_docs/kbn_rison.mdx index dcec40e3a89da..ba5d06f60e55a 100644 --- a/api_docs/kbn_rison.mdx +++ b/api_docs/kbn_rison.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-rison title: "@kbn/rison" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/rison plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/rison'] --- import kbnRisonObj from './kbn_rison.devdocs.json'; diff --git a/api_docs/kbn_rrule.mdx b/api_docs/kbn_rrule.mdx index ef9900034a6d5..0ce562174ec43 100644 --- a/api_docs/kbn_rrule.mdx +++ b/api_docs/kbn_rrule.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-rrule title: "@kbn/rrule" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/rrule plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/rrule'] --- import kbnRruleObj from './kbn_rrule.devdocs.json'; diff --git a/api_docs/kbn_rule_data_utils.mdx b/api_docs/kbn_rule_data_utils.mdx index 0393965e2ebb2..a3b3283db157c 100644 --- a/api_docs/kbn_rule_data_utils.mdx +++ b/api_docs/kbn_rule_data_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-rule-data-utils title: "@kbn/rule-data-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/rule-data-utils plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/rule-data-utils'] --- import kbnRuleDataUtilsObj from './kbn_rule_data_utils.devdocs.json'; diff --git a/api_docs/kbn_saved_objects_settings.mdx b/api_docs/kbn_saved_objects_settings.mdx index 3605f1aba2368..65c3223d3705c 100644 --- a/api_docs/kbn_saved_objects_settings.mdx +++ b/api_docs/kbn_saved_objects_settings.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-saved-objects-settings title: "@kbn/saved-objects-settings" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/saved-objects-settings plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/saved-objects-settings'] --- import kbnSavedObjectsSettingsObj from './kbn_saved_objects_settings.devdocs.json'; diff --git a/api_docs/kbn_search_api_panels.devdocs.json b/api_docs/kbn_search_api_panels.devdocs.json index 8c1ce9f259ef6..e493e1db46fd8 100644 --- a/api_docs/kbn_search_api_panels.devdocs.json +++ b/api_docs/kbn_search_api_panels.devdocs.json @@ -926,6 +926,34 @@ "path": "packages/kbn-search-api-panels/types.ts", "deprecated": false, "trackAdoption": false + }, + { + "parentPluginId": "@kbn/search-api-panels", + "id": "def-common.LanguageDefinitionSnippetArguments.ingestPipeline", + "type": "string", + "tags": [], + "label": "ingestPipeline", + "description": [], + "signature": [ + "string | undefined" + ], + "path": "packages/kbn-search-api-panels/types.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/search-api-panels", + "id": "def-common.LanguageDefinitionSnippetArguments.extraIngestDocumentValues", + "type": "Object", + "tags": [], + "label": "extraIngestDocumentValues", + "description": [], + "signature": [ + "Record | undefined" + ], + "path": "packages/kbn-search-api-panels/types.ts", + "deprecated": false, + "trackAdoption": false } ], "initialIsOpen": false diff --git a/api_docs/kbn_search_api_panels.mdx b/api_docs/kbn_search_api_panels.mdx index 23d87424f2b07..f928c35ff17e3 100644 --- a/api_docs/kbn_search_api_panels.mdx +++ b/api_docs/kbn_search_api_panels.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-search-api-panels title: "@kbn/search-api-panels" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/search-api-panels plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/search-api-panels'] --- import kbnSearchApiPanelsObj from './kbn_search_api_panels.devdocs.json'; @@ -21,7 +21,7 @@ Contact [@elastic/enterprise-search-frontend](https://github.com/orgs/elastic/te | Public API count | Any count | Items lacking comments | Missing exports | |-------------------|-----------|------------------------|-----------------| -| 65 | 0 | 65 | 0 | +| 67 | 0 | 67 | 0 | ## Common diff --git a/api_docs/kbn_search_response_warnings.mdx b/api_docs/kbn_search_response_warnings.mdx index a7f3a7c301a2f..b61b3acebc30b 100644 --- a/api_docs/kbn_search_response_warnings.mdx +++ b/api_docs/kbn_search_response_warnings.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-search-response-warnings title: "@kbn/search-response-warnings" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/search-response-warnings plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/search-response-warnings'] --- import kbnSearchResponseWarningsObj from './kbn_search_response_warnings.devdocs.json'; diff --git a/api_docs/kbn_security_solution_features.mdx b/api_docs/kbn_security_solution_features.mdx index feff9a8532c37..52f9bf0331d66 100644 --- a/api_docs/kbn_security_solution_features.mdx +++ b/api_docs/kbn_security_solution_features.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-security-solution-features title: "@kbn/security-solution-features" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/security-solution-features plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/security-solution-features'] --- import kbnSecuritySolutionFeaturesObj from './kbn_security_solution_features.devdocs.json'; diff --git a/api_docs/kbn_security_solution_navigation.mdx b/api_docs/kbn_security_solution_navigation.mdx index 43b8698ec5add..21a9a0d4229eb 100644 --- a/api_docs/kbn_security_solution_navigation.mdx +++ b/api_docs/kbn_security_solution_navigation.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-security-solution-navigation title: "@kbn/security-solution-navigation" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/security-solution-navigation plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/security-solution-navigation'] --- import kbnSecuritySolutionNavigationObj from './kbn_security_solution_navigation.devdocs.json'; diff --git a/api_docs/kbn_security_solution_side_nav.mdx b/api_docs/kbn_security_solution_side_nav.mdx index 0edc300b7fbb8..8535e3c2ceb45 100644 --- a/api_docs/kbn_security_solution_side_nav.mdx +++ b/api_docs/kbn_security_solution_side_nav.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-security-solution-side-nav title: "@kbn/security-solution-side-nav" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/security-solution-side-nav plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/security-solution-side-nav'] --- import kbnSecuritySolutionSideNavObj from './kbn_security_solution_side_nav.devdocs.json'; diff --git a/api_docs/kbn_security_solution_storybook_config.mdx b/api_docs/kbn_security_solution_storybook_config.mdx index 303b370aed662..0989d2c61bc6c 100644 --- a/api_docs/kbn_security_solution_storybook_config.mdx +++ b/api_docs/kbn_security_solution_storybook_config.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-security-solution-storybook-config title: "@kbn/security-solution-storybook-config" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/security-solution-storybook-config plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/security-solution-storybook-config'] --- import kbnSecuritySolutionStorybookConfigObj from './kbn_security_solution_storybook_config.devdocs.json'; diff --git a/api_docs/kbn_securitysolution_autocomplete.mdx b/api_docs/kbn_securitysolution_autocomplete.mdx index 0e8e3606673c7..618fce3049404 100644 --- a/api_docs/kbn_securitysolution_autocomplete.mdx +++ b/api_docs/kbn_securitysolution_autocomplete.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-securitysolution-autocomplete title: "@kbn/securitysolution-autocomplete" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/securitysolution-autocomplete plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/securitysolution-autocomplete'] --- import kbnSecuritysolutionAutocompleteObj from './kbn_securitysolution_autocomplete.devdocs.json'; diff --git a/api_docs/kbn_securitysolution_data_table.mdx b/api_docs/kbn_securitysolution_data_table.mdx index 39fd4b1f96d01..b59feab2155c5 100644 --- a/api_docs/kbn_securitysolution_data_table.mdx +++ b/api_docs/kbn_securitysolution_data_table.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-securitysolution-data-table title: "@kbn/securitysolution-data-table" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/securitysolution-data-table plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/securitysolution-data-table'] --- import kbnSecuritysolutionDataTableObj from './kbn_securitysolution_data_table.devdocs.json'; diff --git a/api_docs/kbn_securitysolution_ecs.mdx b/api_docs/kbn_securitysolution_ecs.mdx index e1881be0c8187..9b6e5f38500a4 100644 --- a/api_docs/kbn_securitysolution_ecs.mdx +++ b/api_docs/kbn_securitysolution_ecs.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-securitysolution-ecs title: "@kbn/securitysolution-ecs" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/securitysolution-ecs plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/securitysolution-ecs'] --- import kbnSecuritysolutionEcsObj from './kbn_securitysolution_ecs.devdocs.json'; diff --git a/api_docs/kbn_securitysolution_es_utils.mdx b/api_docs/kbn_securitysolution_es_utils.mdx index 1c4796084d273..de06ac2178b85 100644 --- a/api_docs/kbn_securitysolution_es_utils.mdx +++ b/api_docs/kbn_securitysolution_es_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-securitysolution-es-utils title: "@kbn/securitysolution-es-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/securitysolution-es-utils plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/securitysolution-es-utils'] --- import kbnSecuritysolutionEsUtilsObj from './kbn_securitysolution_es_utils.devdocs.json'; diff --git a/api_docs/kbn_securitysolution_exception_list_components.mdx b/api_docs/kbn_securitysolution_exception_list_components.mdx index 057fd8ddd0154..8dc2abd94a379 100644 --- a/api_docs/kbn_securitysolution_exception_list_components.mdx +++ b/api_docs/kbn_securitysolution_exception_list_components.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-securitysolution-exception-list-components title: "@kbn/securitysolution-exception-list-components" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/securitysolution-exception-list-components plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/securitysolution-exception-list-components'] --- import kbnSecuritysolutionExceptionListComponentsObj from './kbn_securitysolution_exception_list_components.devdocs.json'; diff --git a/api_docs/kbn_securitysolution_grouping.mdx b/api_docs/kbn_securitysolution_grouping.mdx index bcab35e3734e8..b0b4e63b53415 100644 --- a/api_docs/kbn_securitysolution_grouping.mdx +++ b/api_docs/kbn_securitysolution_grouping.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-securitysolution-grouping title: "@kbn/securitysolution-grouping" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/securitysolution-grouping plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/securitysolution-grouping'] --- import kbnSecuritysolutionGroupingObj from './kbn_securitysolution_grouping.devdocs.json'; diff --git a/api_docs/kbn_securitysolution_hook_utils.mdx b/api_docs/kbn_securitysolution_hook_utils.mdx index 6188b4f538622..98e145e6c291a 100644 --- a/api_docs/kbn_securitysolution_hook_utils.mdx +++ b/api_docs/kbn_securitysolution_hook_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-securitysolution-hook-utils title: "@kbn/securitysolution-hook-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/securitysolution-hook-utils plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/securitysolution-hook-utils'] --- import kbnSecuritysolutionHookUtilsObj from './kbn_securitysolution_hook_utils.devdocs.json'; diff --git a/api_docs/kbn_securitysolution_io_ts_alerting_types.mdx b/api_docs/kbn_securitysolution_io_ts_alerting_types.mdx index ee9589bd9fdab..be1b7c054f509 100644 --- a/api_docs/kbn_securitysolution_io_ts_alerting_types.mdx +++ b/api_docs/kbn_securitysolution_io_ts_alerting_types.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-securitysolution-io-ts-alerting-types title: "@kbn/securitysolution-io-ts-alerting-types" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/securitysolution-io-ts-alerting-types plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/securitysolution-io-ts-alerting-types'] --- import kbnSecuritysolutionIoTsAlertingTypesObj from './kbn_securitysolution_io_ts_alerting_types.devdocs.json'; diff --git a/api_docs/kbn_securitysolution_io_ts_list_types.mdx b/api_docs/kbn_securitysolution_io_ts_list_types.mdx index 55ab104bac818..f8c8e1d9bce9e 100644 --- a/api_docs/kbn_securitysolution_io_ts_list_types.mdx +++ b/api_docs/kbn_securitysolution_io_ts_list_types.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-securitysolution-io-ts-list-types title: "@kbn/securitysolution-io-ts-list-types" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/securitysolution-io-ts-list-types plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/securitysolution-io-ts-list-types'] --- import kbnSecuritysolutionIoTsListTypesObj from './kbn_securitysolution_io_ts_list_types.devdocs.json'; diff --git a/api_docs/kbn_securitysolution_io_ts_types.mdx b/api_docs/kbn_securitysolution_io_ts_types.mdx index 16df8b1d3143c..9fd2114f82497 100644 --- a/api_docs/kbn_securitysolution_io_ts_types.mdx +++ b/api_docs/kbn_securitysolution_io_ts_types.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-securitysolution-io-ts-types title: "@kbn/securitysolution-io-ts-types" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/securitysolution-io-ts-types plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/securitysolution-io-ts-types'] --- import kbnSecuritysolutionIoTsTypesObj from './kbn_securitysolution_io_ts_types.devdocs.json'; diff --git a/api_docs/kbn_securitysolution_io_ts_utils.mdx b/api_docs/kbn_securitysolution_io_ts_utils.mdx index 9d02dbe8bf408..4674d7f39cc79 100644 --- a/api_docs/kbn_securitysolution_io_ts_utils.mdx +++ b/api_docs/kbn_securitysolution_io_ts_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-securitysolution-io-ts-utils title: "@kbn/securitysolution-io-ts-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/securitysolution-io-ts-utils plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/securitysolution-io-ts-utils'] --- import kbnSecuritysolutionIoTsUtilsObj from './kbn_securitysolution_io_ts_utils.devdocs.json'; diff --git a/api_docs/kbn_securitysolution_list_api.mdx b/api_docs/kbn_securitysolution_list_api.mdx index 47fd8f9a4d494..812a2357c9c1c 100644 --- a/api_docs/kbn_securitysolution_list_api.mdx +++ b/api_docs/kbn_securitysolution_list_api.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-securitysolution-list-api title: "@kbn/securitysolution-list-api" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/securitysolution-list-api plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/securitysolution-list-api'] --- import kbnSecuritysolutionListApiObj from './kbn_securitysolution_list_api.devdocs.json'; diff --git a/api_docs/kbn_securitysolution_list_constants.mdx b/api_docs/kbn_securitysolution_list_constants.mdx index 5c0ca05384879..f23fad4563b05 100644 --- a/api_docs/kbn_securitysolution_list_constants.mdx +++ b/api_docs/kbn_securitysolution_list_constants.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-securitysolution-list-constants title: "@kbn/securitysolution-list-constants" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/securitysolution-list-constants plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/securitysolution-list-constants'] --- import kbnSecuritysolutionListConstantsObj from './kbn_securitysolution_list_constants.devdocs.json'; diff --git a/api_docs/kbn_securitysolution_list_hooks.mdx b/api_docs/kbn_securitysolution_list_hooks.mdx index 806945c74d6ef..2684bdf0d61e2 100644 --- a/api_docs/kbn_securitysolution_list_hooks.mdx +++ b/api_docs/kbn_securitysolution_list_hooks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-securitysolution-list-hooks title: "@kbn/securitysolution-list-hooks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/securitysolution-list-hooks plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/securitysolution-list-hooks'] --- import kbnSecuritysolutionListHooksObj from './kbn_securitysolution_list_hooks.devdocs.json'; diff --git a/api_docs/kbn_securitysolution_list_utils.mdx b/api_docs/kbn_securitysolution_list_utils.mdx index 67c024298e1af..4aa83b1b2a28a 100644 --- a/api_docs/kbn_securitysolution_list_utils.mdx +++ b/api_docs/kbn_securitysolution_list_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-securitysolution-list-utils title: "@kbn/securitysolution-list-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/securitysolution-list-utils plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/securitysolution-list-utils'] --- import kbnSecuritysolutionListUtilsObj from './kbn_securitysolution_list_utils.devdocs.json'; diff --git a/api_docs/kbn_securitysolution_rules.mdx b/api_docs/kbn_securitysolution_rules.mdx index ae9982c0af157..fb5c6248a7aa4 100644 --- a/api_docs/kbn_securitysolution_rules.mdx +++ b/api_docs/kbn_securitysolution_rules.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-securitysolution-rules title: "@kbn/securitysolution-rules" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/securitysolution-rules plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/securitysolution-rules'] --- import kbnSecuritysolutionRulesObj from './kbn_securitysolution_rules.devdocs.json'; diff --git a/api_docs/kbn_securitysolution_t_grid.mdx b/api_docs/kbn_securitysolution_t_grid.mdx index f9802c7fe0576..272b283e3809f 100644 --- a/api_docs/kbn_securitysolution_t_grid.mdx +++ b/api_docs/kbn_securitysolution_t_grid.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-securitysolution-t-grid title: "@kbn/securitysolution-t-grid" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/securitysolution-t-grid plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/securitysolution-t-grid'] --- import kbnSecuritysolutionTGridObj from './kbn_securitysolution_t_grid.devdocs.json'; diff --git a/api_docs/kbn_securitysolution_utils.mdx b/api_docs/kbn_securitysolution_utils.mdx index 6dc1d8f5b2b13..6cfe959f3b6a8 100644 --- a/api_docs/kbn_securitysolution_utils.mdx +++ b/api_docs/kbn_securitysolution_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-securitysolution-utils title: "@kbn/securitysolution-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/securitysolution-utils plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/securitysolution-utils'] --- import kbnSecuritysolutionUtilsObj from './kbn_securitysolution_utils.devdocs.json'; diff --git a/api_docs/kbn_server_http_tools.mdx b/api_docs/kbn_server_http_tools.mdx index 1b4eefb68fc5f..fc08e81a4f1d4 100644 --- a/api_docs/kbn_server_http_tools.mdx +++ b/api_docs/kbn_server_http_tools.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-server-http-tools title: "@kbn/server-http-tools" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/server-http-tools plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/server-http-tools'] --- import kbnServerHttpToolsObj from './kbn_server_http_tools.devdocs.json'; diff --git a/api_docs/kbn_server_route_repository.mdx b/api_docs/kbn_server_route_repository.mdx index e106cb033c5c2..e75c15121e929 100644 --- a/api_docs/kbn_server_route_repository.mdx +++ b/api_docs/kbn_server_route_repository.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-server-route-repository title: "@kbn/server-route-repository" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/server-route-repository plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/server-route-repository'] --- import kbnServerRouteRepositoryObj from './kbn_server_route_repository.devdocs.json'; diff --git a/api_docs/kbn_serverless_project_switcher.mdx b/api_docs/kbn_serverless_project_switcher.mdx index f9ad4f267548f..a15223e4a5b18 100644 --- a/api_docs/kbn_serverless_project_switcher.mdx +++ b/api_docs/kbn_serverless_project_switcher.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-serverless-project-switcher title: "@kbn/serverless-project-switcher" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/serverless-project-switcher plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/serverless-project-switcher'] --- import kbnServerlessProjectSwitcherObj from './kbn_serverless_project_switcher.devdocs.json'; diff --git a/api_docs/kbn_serverless_storybook_config.mdx b/api_docs/kbn_serverless_storybook_config.mdx index 8f8629d869e68..45f677c9b03a8 100644 --- a/api_docs/kbn_serverless_storybook_config.mdx +++ b/api_docs/kbn_serverless_storybook_config.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-serverless-storybook-config title: "@kbn/serverless-storybook-config" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/serverless-storybook-config plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/serverless-storybook-config'] --- import kbnServerlessStorybookConfigObj from './kbn_serverless_storybook_config.devdocs.json'; diff --git a/api_docs/kbn_shared_svg.mdx b/api_docs/kbn_shared_svg.mdx index 82f04c8c1f8f3..d7e66c2dfcafb 100644 --- a/api_docs/kbn_shared_svg.mdx +++ b/api_docs/kbn_shared_svg.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-svg title: "@kbn/shared-svg" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-svg plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-svg'] --- import kbnSharedSvgObj from './kbn_shared_svg.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_avatar_solution.mdx b/api_docs/kbn_shared_ux_avatar_solution.mdx index e4ec0a2a0470d..2a7a12643f66c 100644 --- a/api_docs/kbn_shared_ux_avatar_solution.mdx +++ b/api_docs/kbn_shared_ux_avatar_solution.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-avatar-solution title: "@kbn/shared-ux-avatar-solution" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-avatar-solution plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-avatar-solution'] --- import kbnSharedUxAvatarSolutionObj from './kbn_shared_ux_avatar_solution.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_avatar_user_profile_components.mdx b/api_docs/kbn_shared_ux_avatar_user_profile_components.mdx index 332ee7b559786..6d03355f6bb90 100644 --- a/api_docs/kbn_shared_ux_avatar_user_profile_components.mdx +++ b/api_docs/kbn_shared_ux_avatar_user_profile_components.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-avatar-user-profile-components title: "@kbn/shared-ux-avatar-user-profile-components" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-avatar-user-profile-components plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-avatar-user-profile-components'] --- import kbnSharedUxAvatarUserProfileComponentsObj from './kbn_shared_ux_avatar_user_profile_components.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_button_exit_full_screen.mdx b/api_docs/kbn_shared_ux_button_exit_full_screen.mdx index b342b28412dd3..5000f6af0f8f1 100644 --- a/api_docs/kbn_shared_ux_button_exit_full_screen.mdx +++ b/api_docs/kbn_shared_ux_button_exit_full_screen.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-button-exit-full-screen title: "@kbn/shared-ux-button-exit-full-screen" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-button-exit-full-screen plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-button-exit-full-screen'] --- import kbnSharedUxButtonExitFullScreenObj from './kbn_shared_ux_button_exit_full_screen.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_button_exit_full_screen_mocks.mdx b/api_docs/kbn_shared_ux_button_exit_full_screen_mocks.mdx index ea0dee0f20096..78930ef11a46c 100644 --- a/api_docs/kbn_shared_ux_button_exit_full_screen_mocks.mdx +++ b/api_docs/kbn_shared_ux_button_exit_full_screen_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-button-exit-full-screen-mocks title: "@kbn/shared-ux-button-exit-full-screen-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-button-exit-full-screen-mocks plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-button-exit-full-screen-mocks'] --- import kbnSharedUxButtonExitFullScreenMocksObj from './kbn_shared_ux_button_exit_full_screen_mocks.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_button_toolbar.mdx b/api_docs/kbn_shared_ux_button_toolbar.mdx index bed943cf01244..2fb5ef4f4d1ab 100644 --- a/api_docs/kbn_shared_ux_button_toolbar.mdx +++ b/api_docs/kbn_shared_ux_button_toolbar.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-button-toolbar title: "@kbn/shared-ux-button-toolbar" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-button-toolbar plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-button-toolbar'] --- import kbnSharedUxButtonToolbarObj from './kbn_shared_ux_button_toolbar.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_card_no_data.mdx b/api_docs/kbn_shared_ux_card_no_data.mdx index 298b26586d47f..c401fc4ae57cc 100644 --- a/api_docs/kbn_shared_ux_card_no_data.mdx +++ b/api_docs/kbn_shared_ux_card_no_data.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-card-no-data title: "@kbn/shared-ux-card-no-data" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-card-no-data plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-card-no-data'] --- import kbnSharedUxCardNoDataObj from './kbn_shared_ux_card_no_data.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_card_no_data_mocks.mdx b/api_docs/kbn_shared_ux_card_no_data_mocks.mdx index f8e4d0340abe9..2f49e7214e438 100644 --- a/api_docs/kbn_shared_ux_card_no_data_mocks.mdx +++ b/api_docs/kbn_shared_ux_card_no_data_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-card-no-data-mocks title: "@kbn/shared-ux-card-no-data-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-card-no-data-mocks plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-card-no-data-mocks'] --- import kbnSharedUxCardNoDataMocksObj from './kbn_shared_ux_card_no_data_mocks.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_chrome_navigation.mdx b/api_docs/kbn_shared_ux_chrome_navigation.mdx index a9cfd49bd9006..932e071d8c4e3 100644 --- a/api_docs/kbn_shared_ux_chrome_navigation.mdx +++ b/api_docs/kbn_shared_ux_chrome_navigation.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-chrome-navigation title: "@kbn/shared-ux-chrome-navigation" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-chrome-navigation plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-chrome-navigation'] --- import kbnSharedUxChromeNavigationObj from './kbn_shared_ux_chrome_navigation.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_file_context.mdx b/api_docs/kbn_shared_ux_file_context.mdx index 571aa579476e0..1e6a87987a4f2 100644 --- a/api_docs/kbn_shared_ux_file_context.mdx +++ b/api_docs/kbn_shared_ux_file_context.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-file-context title: "@kbn/shared-ux-file-context" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-file-context plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-file-context'] --- import kbnSharedUxFileContextObj from './kbn_shared_ux_file_context.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_file_image.mdx b/api_docs/kbn_shared_ux_file_image.mdx index d320a6fe79159..195ca50f84803 100644 --- a/api_docs/kbn_shared_ux_file_image.mdx +++ b/api_docs/kbn_shared_ux_file_image.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-file-image title: "@kbn/shared-ux-file-image" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-file-image plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-file-image'] --- import kbnSharedUxFileImageObj from './kbn_shared_ux_file_image.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_file_image_mocks.mdx b/api_docs/kbn_shared_ux_file_image_mocks.mdx index 7a01e2db59806..56aae935b33b6 100644 --- a/api_docs/kbn_shared_ux_file_image_mocks.mdx +++ b/api_docs/kbn_shared_ux_file_image_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-file-image-mocks title: "@kbn/shared-ux-file-image-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-file-image-mocks plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-file-image-mocks'] --- import kbnSharedUxFileImageMocksObj from './kbn_shared_ux_file_image_mocks.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_file_mocks.mdx b/api_docs/kbn_shared_ux_file_mocks.mdx index 05b8167d72a32..be3191df40254 100644 --- a/api_docs/kbn_shared_ux_file_mocks.mdx +++ b/api_docs/kbn_shared_ux_file_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-file-mocks title: "@kbn/shared-ux-file-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-file-mocks plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-file-mocks'] --- import kbnSharedUxFileMocksObj from './kbn_shared_ux_file_mocks.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_file_picker.mdx b/api_docs/kbn_shared_ux_file_picker.mdx index 7fe50b1e6efa5..cbafafdf15054 100644 --- a/api_docs/kbn_shared_ux_file_picker.mdx +++ b/api_docs/kbn_shared_ux_file_picker.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-file-picker title: "@kbn/shared-ux-file-picker" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-file-picker plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-file-picker'] --- import kbnSharedUxFilePickerObj from './kbn_shared_ux_file_picker.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_file_types.mdx b/api_docs/kbn_shared_ux_file_types.mdx index 341baae0eddc6..ca5b614f31f5e 100644 --- a/api_docs/kbn_shared_ux_file_types.mdx +++ b/api_docs/kbn_shared_ux_file_types.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-file-types title: "@kbn/shared-ux-file-types" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-file-types plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-file-types'] --- import kbnSharedUxFileTypesObj from './kbn_shared_ux_file_types.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_file_upload.mdx b/api_docs/kbn_shared_ux_file_upload.mdx index b5bdafbe3406e..e93ae95420c38 100644 --- a/api_docs/kbn_shared_ux_file_upload.mdx +++ b/api_docs/kbn_shared_ux_file_upload.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-file-upload title: "@kbn/shared-ux-file-upload" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-file-upload plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-file-upload'] --- import kbnSharedUxFileUploadObj from './kbn_shared_ux_file_upload.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_file_util.mdx b/api_docs/kbn_shared_ux_file_util.mdx index bd9f0e5e054b5..e700985ce82b4 100644 --- a/api_docs/kbn_shared_ux_file_util.mdx +++ b/api_docs/kbn_shared_ux_file_util.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-file-util title: "@kbn/shared-ux-file-util" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-file-util plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-file-util'] --- import kbnSharedUxFileUtilObj from './kbn_shared_ux_file_util.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_link_redirect_app.mdx b/api_docs/kbn_shared_ux_link_redirect_app.mdx index bdb21965fe310..f04034c8db728 100644 --- a/api_docs/kbn_shared_ux_link_redirect_app.mdx +++ b/api_docs/kbn_shared_ux_link_redirect_app.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-link-redirect-app title: "@kbn/shared-ux-link-redirect-app" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-link-redirect-app plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-link-redirect-app'] --- import kbnSharedUxLinkRedirectAppObj from './kbn_shared_ux_link_redirect_app.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_link_redirect_app_mocks.mdx b/api_docs/kbn_shared_ux_link_redirect_app_mocks.mdx index f8166ef3df380..221bc0e89d69b 100644 --- a/api_docs/kbn_shared_ux_link_redirect_app_mocks.mdx +++ b/api_docs/kbn_shared_ux_link_redirect_app_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-link-redirect-app-mocks title: "@kbn/shared-ux-link-redirect-app-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-link-redirect-app-mocks plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-link-redirect-app-mocks'] --- import kbnSharedUxLinkRedirectAppMocksObj from './kbn_shared_ux_link_redirect_app_mocks.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_markdown.mdx b/api_docs/kbn_shared_ux_markdown.mdx index 034c8d773754d..9304bde1efab8 100644 --- a/api_docs/kbn_shared_ux_markdown.mdx +++ b/api_docs/kbn_shared_ux_markdown.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-markdown title: "@kbn/shared-ux-markdown" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-markdown plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-markdown'] --- import kbnSharedUxMarkdownObj from './kbn_shared_ux_markdown.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_markdown_mocks.mdx b/api_docs/kbn_shared_ux_markdown_mocks.mdx index 47ecb7343d741..76c8f65bf9a38 100644 --- a/api_docs/kbn_shared_ux_markdown_mocks.mdx +++ b/api_docs/kbn_shared_ux_markdown_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-markdown-mocks title: "@kbn/shared-ux-markdown-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-markdown-mocks plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-markdown-mocks'] --- import kbnSharedUxMarkdownMocksObj from './kbn_shared_ux_markdown_mocks.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_page_analytics_no_data.mdx b/api_docs/kbn_shared_ux_page_analytics_no_data.mdx index c5369259e7b4d..c51b4524362ff 100644 --- a/api_docs/kbn_shared_ux_page_analytics_no_data.mdx +++ b/api_docs/kbn_shared_ux_page_analytics_no_data.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-page-analytics-no-data title: "@kbn/shared-ux-page-analytics-no-data" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-page-analytics-no-data plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-page-analytics-no-data'] --- import kbnSharedUxPageAnalyticsNoDataObj from './kbn_shared_ux_page_analytics_no_data.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_page_analytics_no_data_mocks.mdx b/api_docs/kbn_shared_ux_page_analytics_no_data_mocks.mdx index b9d0e9b498902..ead37eb00cd9d 100644 --- a/api_docs/kbn_shared_ux_page_analytics_no_data_mocks.mdx +++ b/api_docs/kbn_shared_ux_page_analytics_no_data_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-page-analytics-no-data-mocks title: "@kbn/shared-ux-page-analytics-no-data-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-page-analytics-no-data-mocks plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-page-analytics-no-data-mocks'] --- import kbnSharedUxPageAnalyticsNoDataMocksObj from './kbn_shared_ux_page_analytics_no_data_mocks.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_page_kibana_no_data.mdx b/api_docs/kbn_shared_ux_page_kibana_no_data.mdx index 2bd6c3050ac8f..5138e162e33f4 100644 --- a/api_docs/kbn_shared_ux_page_kibana_no_data.mdx +++ b/api_docs/kbn_shared_ux_page_kibana_no_data.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-page-kibana-no-data title: "@kbn/shared-ux-page-kibana-no-data" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-page-kibana-no-data plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-page-kibana-no-data'] --- import kbnSharedUxPageKibanaNoDataObj from './kbn_shared_ux_page_kibana_no_data.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_page_kibana_no_data_mocks.mdx b/api_docs/kbn_shared_ux_page_kibana_no_data_mocks.mdx index 35e91bb002744..7239a015c29f4 100644 --- a/api_docs/kbn_shared_ux_page_kibana_no_data_mocks.mdx +++ b/api_docs/kbn_shared_ux_page_kibana_no_data_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-page-kibana-no-data-mocks title: "@kbn/shared-ux-page-kibana-no-data-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-page-kibana-no-data-mocks plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-page-kibana-no-data-mocks'] --- import kbnSharedUxPageKibanaNoDataMocksObj from './kbn_shared_ux_page_kibana_no_data_mocks.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_page_kibana_template.mdx b/api_docs/kbn_shared_ux_page_kibana_template.mdx index c1cf40e7bc764..fa8bd59e552a6 100644 --- a/api_docs/kbn_shared_ux_page_kibana_template.mdx +++ b/api_docs/kbn_shared_ux_page_kibana_template.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-page-kibana-template title: "@kbn/shared-ux-page-kibana-template" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-page-kibana-template plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-page-kibana-template'] --- import kbnSharedUxPageKibanaTemplateObj from './kbn_shared_ux_page_kibana_template.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_page_kibana_template_mocks.mdx b/api_docs/kbn_shared_ux_page_kibana_template_mocks.mdx index 86fa9e7c1891f..ff4e2959c6d3e 100644 --- a/api_docs/kbn_shared_ux_page_kibana_template_mocks.mdx +++ b/api_docs/kbn_shared_ux_page_kibana_template_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-page-kibana-template-mocks title: "@kbn/shared-ux-page-kibana-template-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-page-kibana-template-mocks plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-page-kibana-template-mocks'] --- import kbnSharedUxPageKibanaTemplateMocksObj from './kbn_shared_ux_page_kibana_template_mocks.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_page_no_data.mdx b/api_docs/kbn_shared_ux_page_no_data.mdx index 3c8e084113bee..4f737aa135efc 100644 --- a/api_docs/kbn_shared_ux_page_no_data.mdx +++ b/api_docs/kbn_shared_ux_page_no_data.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-page-no-data title: "@kbn/shared-ux-page-no-data" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-page-no-data plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-page-no-data'] --- import kbnSharedUxPageNoDataObj from './kbn_shared_ux_page_no_data.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_page_no_data_config.mdx b/api_docs/kbn_shared_ux_page_no_data_config.mdx index 28f32b9dc5257..96f74da39a60e 100644 --- a/api_docs/kbn_shared_ux_page_no_data_config.mdx +++ b/api_docs/kbn_shared_ux_page_no_data_config.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-page-no-data-config title: "@kbn/shared-ux-page-no-data-config" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-page-no-data-config plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-page-no-data-config'] --- import kbnSharedUxPageNoDataConfigObj from './kbn_shared_ux_page_no_data_config.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_page_no_data_config_mocks.mdx b/api_docs/kbn_shared_ux_page_no_data_config_mocks.mdx index 997a796e86d22..88245cb24a015 100644 --- a/api_docs/kbn_shared_ux_page_no_data_config_mocks.mdx +++ b/api_docs/kbn_shared_ux_page_no_data_config_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-page-no-data-config-mocks title: "@kbn/shared-ux-page-no-data-config-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-page-no-data-config-mocks plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-page-no-data-config-mocks'] --- import kbnSharedUxPageNoDataConfigMocksObj from './kbn_shared_ux_page_no_data_config_mocks.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_page_no_data_mocks.mdx b/api_docs/kbn_shared_ux_page_no_data_mocks.mdx index f470445bd947b..39f5d7cd276e7 100644 --- a/api_docs/kbn_shared_ux_page_no_data_mocks.mdx +++ b/api_docs/kbn_shared_ux_page_no_data_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-page-no-data-mocks title: "@kbn/shared-ux-page-no-data-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-page-no-data-mocks plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-page-no-data-mocks'] --- import kbnSharedUxPageNoDataMocksObj from './kbn_shared_ux_page_no_data_mocks.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_page_solution_nav.mdx b/api_docs/kbn_shared_ux_page_solution_nav.mdx index 33873f09e4810..96fc64390daf1 100644 --- a/api_docs/kbn_shared_ux_page_solution_nav.mdx +++ b/api_docs/kbn_shared_ux_page_solution_nav.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-page-solution-nav title: "@kbn/shared-ux-page-solution-nav" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-page-solution-nav plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-page-solution-nav'] --- import kbnSharedUxPageSolutionNavObj from './kbn_shared_ux_page_solution_nav.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_prompt_no_data_views.mdx b/api_docs/kbn_shared_ux_prompt_no_data_views.mdx index 274db8e8bfa85..beb8813a7170f 100644 --- a/api_docs/kbn_shared_ux_prompt_no_data_views.mdx +++ b/api_docs/kbn_shared_ux_prompt_no_data_views.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-prompt-no-data-views title: "@kbn/shared-ux-prompt-no-data-views" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-prompt-no-data-views plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-prompt-no-data-views'] --- import kbnSharedUxPromptNoDataViewsObj from './kbn_shared_ux_prompt_no_data_views.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_prompt_no_data_views_mocks.mdx b/api_docs/kbn_shared_ux_prompt_no_data_views_mocks.mdx index 9a775023878d6..6df2460db09a5 100644 --- a/api_docs/kbn_shared_ux_prompt_no_data_views_mocks.mdx +++ b/api_docs/kbn_shared_ux_prompt_no_data_views_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-prompt-no-data-views-mocks title: "@kbn/shared-ux-prompt-no-data-views-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-prompt-no-data-views-mocks plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-prompt-no-data-views-mocks'] --- import kbnSharedUxPromptNoDataViewsMocksObj from './kbn_shared_ux_prompt_no_data_views_mocks.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_prompt_not_found.mdx b/api_docs/kbn_shared_ux_prompt_not_found.mdx index aed9adc9f36ba..7d9bdd1d9570d 100644 --- a/api_docs/kbn_shared_ux_prompt_not_found.mdx +++ b/api_docs/kbn_shared_ux_prompt_not_found.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-prompt-not-found title: "@kbn/shared-ux-prompt-not-found" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-prompt-not-found plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-prompt-not-found'] --- import kbnSharedUxPromptNotFoundObj from './kbn_shared_ux_prompt_not_found.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_router.mdx b/api_docs/kbn_shared_ux_router.mdx index 07c8ac15e2ccb..0f5fb94765341 100644 --- a/api_docs/kbn_shared_ux_router.mdx +++ b/api_docs/kbn_shared_ux_router.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-router title: "@kbn/shared-ux-router" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-router plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-router'] --- import kbnSharedUxRouterObj from './kbn_shared_ux_router.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_router_mocks.mdx b/api_docs/kbn_shared_ux_router_mocks.mdx index 129749e6731df..6912120abed7c 100644 --- a/api_docs/kbn_shared_ux_router_mocks.mdx +++ b/api_docs/kbn_shared_ux_router_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-router-mocks title: "@kbn/shared-ux-router-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-router-mocks plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-router-mocks'] --- import kbnSharedUxRouterMocksObj from './kbn_shared_ux_router_mocks.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_storybook_config.mdx b/api_docs/kbn_shared_ux_storybook_config.mdx index d36240ef6c53e..68926ed3daf26 100644 --- a/api_docs/kbn_shared_ux_storybook_config.mdx +++ b/api_docs/kbn_shared_ux_storybook_config.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-storybook-config title: "@kbn/shared-ux-storybook-config" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-storybook-config plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-storybook-config'] --- import kbnSharedUxStorybookConfigObj from './kbn_shared_ux_storybook_config.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_storybook_mock.mdx b/api_docs/kbn_shared_ux_storybook_mock.mdx index cf78e32a622ed..7e9cb4fc44597 100644 --- a/api_docs/kbn_shared_ux_storybook_mock.mdx +++ b/api_docs/kbn_shared_ux_storybook_mock.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-storybook-mock title: "@kbn/shared-ux-storybook-mock" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-storybook-mock plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-storybook-mock'] --- import kbnSharedUxStorybookMockObj from './kbn_shared_ux_storybook_mock.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_utility.mdx b/api_docs/kbn_shared_ux_utility.mdx index d3a1875b6ce61..e3919b804ff70 100644 --- a/api_docs/kbn_shared_ux_utility.mdx +++ b/api_docs/kbn_shared_ux_utility.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-utility title: "@kbn/shared-ux-utility" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-utility plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-utility'] --- import kbnSharedUxUtilityObj from './kbn_shared_ux_utility.devdocs.json'; diff --git a/api_docs/kbn_slo_schema.devdocs.json b/api_docs/kbn_slo_schema.devdocs.json index 02eec6e3a39cb..0666cd886ffa9 100644 --- a/api_docs/kbn_slo_schema.devdocs.json +++ b/api_docs/kbn_slo_schema.devdocs.json @@ -628,6 +628,36 @@ "trackAdoption": false, "initialIsOpen": false }, + { + "parentPluginId": "@kbn/slo-schema", + "id": "def-common.DeleteSLOInstancesInput", + "type": "Type", + "tags": [], + "label": "DeleteSLOInstancesInput", + "description": [], + "signature": [ + "{ list: { sloId: string; instanceId: string; }[]; }" + ], + "path": "x-pack/packages/kbn-slo-schema/src/rest_specs/slo.ts", + "deprecated": false, + "trackAdoption": false, + "initialIsOpen": false + }, + { + "parentPluginId": "@kbn/slo-schema", + "id": "def-common.DeleteSLOInstancesParams", + "type": "Type", + "tags": [], + "label": "DeleteSLOInstancesParams", + "description": [], + "signature": [ + "{ list: { sloId: string; instanceId: string; }[]; }" + ], + "path": "x-pack/packages/kbn-slo-schema/src/rest_specs/slo.ts", + "deprecated": false, + "trackAdoption": false, + "initialIsOpen": false + }, { "parentPluginId": "@kbn/slo-schema", "id": "def-common.FetchHistoricalSummaryParams", @@ -2079,6 +2109,32 @@ "trackAdoption": false, "initialIsOpen": false }, + { + "parentPluginId": "@kbn/slo-schema", + "id": "def-common.deleteSLOInstancesParamsSchema", + "type": "Object", + "tags": [], + "label": "deleteSLOInstancesParamsSchema", + "description": [], + "signature": [ + "TypeC", + "<{ body: ", + "TypeC", + "<{ list: ", + "ArrayC", + "<", + "TypeC", + "<{ sloId: ", + "StringC", + "; instanceId: ", + "StringC", + "; }>>; }>; }>" + ], + "path": "x-pack/packages/kbn-slo-schema/src/rest_specs/slo.ts", + "deprecated": false, + "trackAdoption": false, + "initialIsOpen": false + }, { "parentPluginId": "@kbn/slo-schema", "id": "def-common.deleteSLOParamsSchema", diff --git a/api_docs/kbn_slo_schema.mdx b/api_docs/kbn_slo_schema.mdx index 0839df57edc00..a3231fcbe7b8c 100644 --- a/api_docs/kbn_slo_schema.mdx +++ b/api_docs/kbn_slo_schema.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-slo-schema title: "@kbn/slo-schema" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/slo-schema plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/slo-schema'] --- import kbnSloSchemaObj from './kbn_slo_schema.devdocs.json'; @@ -21,7 +21,7 @@ Contact [@elastic/actionable-observability](https://github.com/orgs/elastic/team | Public API count | Any count | Items lacking comments | Missing exports | |-------------------|-----------|------------------------|-----------------| -| 132 | 0 | 129 | 0 | +| 135 | 0 | 132 | 0 | ## Common diff --git a/api_docs/kbn_some_dev_log.mdx b/api_docs/kbn_some_dev_log.mdx index 407b4ab1645d0..625a1baf66680 100644 --- a/api_docs/kbn_some_dev_log.mdx +++ b/api_docs/kbn_some_dev_log.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-some-dev-log title: "@kbn/some-dev-log" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/some-dev-log plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/some-dev-log'] --- import kbnSomeDevLogObj from './kbn_some_dev_log.devdocs.json'; diff --git a/api_docs/kbn_std.mdx b/api_docs/kbn_std.mdx index 8a7b3d8d10eba..67f61e7309c88 100644 --- a/api_docs/kbn_std.mdx +++ b/api_docs/kbn_std.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-std title: "@kbn/std" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/std plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/std'] --- import kbnStdObj from './kbn_std.devdocs.json'; diff --git a/api_docs/kbn_stdio_dev_helpers.mdx b/api_docs/kbn_stdio_dev_helpers.mdx index 8af618fd3428f..9488d28e11bbe 100644 --- a/api_docs/kbn_stdio_dev_helpers.mdx +++ b/api_docs/kbn_stdio_dev_helpers.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-stdio-dev-helpers title: "@kbn/stdio-dev-helpers" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/stdio-dev-helpers plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/stdio-dev-helpers'] --- import kbnStdioDevHelpersObj from './kbn_stdio_dev_helpers.devdocs.json'; diff --git a/api_docs/kbn_storybook.mdx b/api_docs/kbn_storybook.mdx index dbffcc85a47b8..837b297215919 100644 --- a/api_docs/kbn_storybook.mdx +++ b/api_docs/kbn_storybook.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-storybook title: "@kbn/storybook" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/storybook plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/storybook'] --- import kbnStorybookObj from './kbn_storybook.devdocs.json'; diff --git a/api_docs/kbn_telemetry_tools.mdx b/api_docs/kbn_telemetry_tools.mdx index 6b1ecb4fc1a93..163e9fad938f4 100644 --- a/api_docs/kbn_telemetry_tools.mdx +++ b/api_docs/kbn_telemetry_tools.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-telemetry-tools title: "@kbn/telemetry-tools" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/telemetry-tools plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/telemetry-tools'] --- import kbnTelemetryToolsObj from './kbn_telemetry_tools.devdocs.json'; diff --git a/api_docs/kbn_test.mdx b/api_docs/kbn_test.mdx index f25b8eca3b096..9d077f5729f64 100644 --- a/api_docs/kbn_test.mdx +++ b/api_docs/kbn_test.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-test title: "@kbn/test" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/test plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/test'] --- import kbnTestObj from './kbn_test.devdocs.json'; diff --git a/api_docs/kbn_test_jest_helpers.mdx b/api_docs/kbn_test_jest_helpers.mdx index 5077de40d935f..f7448b3c6e089 100644 --- a/api_docs/kbn_test_jest_helpers.mdx +++ b/api_docs/kbn_test_jest_helpers.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-test-jest-helpers title: "@kbn/test-jest-helpers" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/test-jest-helpers plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/test-jest-helpers'] --- import kbnTestJestHelpersObj from './kbn_test_jest_helpers.devdocs.json'; diff --git a/api_docs/kbn_test_subj_selector.mdx b/api_docs/kbn_test_subj_selector.mdx index 43372f3125e20..e5765ce453870 100644 --- a/api_docs/kbn_test_subj_selector.mdx +++ b/api_docs/kbn_test_subj_selector.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-test-subj-selector title: "@kbn/test-subj-selector" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/test-subj-selector plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/test-subj-selector'] --- import kbnTestSubjSelectorObj from './kbn_test_subj_selector.devdocs.json'; diff --git a/api_docs/kbn_text_based_editor.devdocs.json b/api_docs/kbn_text_based_editor.devdocs.json index e0ba49c3e1b0e..252a6537ae639 100644 --- a/api_docs/kbn_text_based_editor.devdocs.json +++ b/api_docs/kbn_text_based_editor.devdocs.json @@ -3,6 +3,136 @@ "client": { "classes": [], "functions": [ + { + "parentPluginId": "@kbn/text-based-editor", + "id": "def-public.fetchFieldsFromESQL", + "type": "Function", + "tags": [], + "label": "fetchFieldsFromESQL", + "description": [], + "signature": [ + "(query: ", + { + "pluginId": "@kbn/es-query", + "scope": "common", + "docId": "kibKbnEsQueryPluginApi", + "section": "def-common.Query", + "text": "Query" + }, + " | ", + { + "pluginId": "@kbn/es-query", + "scope": "common", + "docId": "kibKbnEsQueryPluginApi", + "section": "def-common.AggregateQuery", + "text": "AggregateQuery" + }, + ", expressions: ", + { + "pluginId": "expressions", + "scope": "public", + "docId": "kibExpressionsPluginApi", + "section": "def-public.ExpressionsStart", + "text": "ExpressionsStart" + }, + ", time: ", + { + "pluginId": "@kbn/es-query", + "scope": "common", + "docId": "kibKbnEsQueryPluginApi", + "section": "def-common.TimeRange", + "text": "TimeRange" + }, + " | undefined) => Promise<", + { + "pluginId": "expressions", + "scope": "common", + "docId": "kibExpressionsPluginApi", + "section": "def-common.Datatable", + "text": "Datatable" + }, + " | undefined>" + ], + "path": "packages/kbn-text-based-editor/src/fetch_fields_from_esql.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "@kbn/text-based-editor", + "id": "def-public.fetchFieldsFromESQL.$1", + "type": "CompoundType", + "tags": [], + "label": "query", + "description": [], + "signature": [ + { + "pluginId": "@kbn/es-query", + "scope": "common", + "docId": "kibKbnEsQueryPluginApi", + "section": "def-common.Query", + "text": "Query" + }, + " | ", + { + "pluginId": "@kbn/es-query", + "scope": "common", + "docId": "kibKbnEsQueryPluginApi", + "section": "def-common.AggregateQuery", + "text": "AggregateQuery" + } + ], + "path": "packages/kbn-text-based-editor/src/fetch_fields_from_esql.ts", + "deprecated": false, + "trackAdoption": false, + "isRequired": true + }, + { + "parentPluginId": "@kbn/text-based-editor", + "id": "def-public.fetchFieldsFromESQL.$2", + "type": "Object", + "tags": [], + "label": "expressions", + "description": [], + "signature": [ + { + "pluginId": "expressions", + "scope": "public", + "docId": "kibExpressionsPluginApi", + "section": "def-public.ExpressionsStart", + "text": "ExpressionsStart" + } + ], + "path": "packages/kbn-text-based-editor/src/fetch_fields_from_esql.ts", + "deprecated": false, + "trackAdoption": false, + "isRequired": true + }, + { + "parentPluginId": "@kbn/text-based-editor", + "id": "def-public.fetchFieldsFromESQL.$3", + "type": "Object", + "tags": [], + "label": "time", + "description": [], + "signature": [ + { + "pluginId": "@kbn/es-query", + "scope": "common", + "docId": "kibKbnEsQueryPluginApi", + "section": "def-common.TimeRange", + "text": "TimeRange" + }, + " | undefined" + ], + "path": "packages/kbn-text-based-editor/src/fetch_fields_from_esql.ts", + "deprecated": false, + "trackAdoption": false, + "isRequired": false + } + ], + "returnComment": [], + "initialIsOpen": false + }, { "parentPluginId": "@kbn/text-based-editor", "id": "def-public.TextBasedLanguagesEditor", @@ -272,6 +402,20 @@ "path": "packages/kbn-text-based-editor/src/text_based_languages_editor.tsx", "deprecated": false, "trackAdoption": false + }, + { + "parentPluginId": "@kbn/text-based-editor", + "id": "def-public.TextBasedLanguagesEditorProps.hideRunQueryText", + "type": "CompoundType", + "tags": [], + "label": "hideRunQueryText", + "description": [], + "signature": [ + "boolean | undefined" + ], + "path": "packages/kbn-text-based-editor/src/text_based_languages_editor.tsx", + "deprecated": false, + "trackAdoption": false } ], "initialIsOpen": false diff --git a/api_docs/kbn_text_based_editor.mdx b/api_docs/kbn_text_based_editor.mdx index 9e04bda94e0e3..64e7ed9a883be 100644 --- a/api_docs/kbn_text_based_editor.mdx +++ b/api_docs/kbn_text_based_editor.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-text-based-editor title: "@kbn/text-based-editor" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/text-based-editor plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/text-based-editor'] --- import kbnTextBasedEditorObj from './kbn_text_based_editor.devdocs.json'; @@ -21,7 +21,7 @@ Contact [@elastic/kibana-visualizations](https://github.com/orgs/elastic/teams/k | Public API count | Any count | Items lacking comments | Missing exports | |-------------------|-----------|------------------------|-----------------| -| 17 | 0 | 16 | 0 | +| 22 | 0 | 21 | 0 | ## Client diff --git a/api_docs/kbn_tooling_log.mdx b/api_docs/kbn_tooling_log.mdx index 871c6c2b8e718..2e4e64028de10 100644 --- a/api_docs/kbn_tooling_log.mdx +++ b/api_docs/kbn_tooling_log.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-tooling-log title: "@kbn/tooling-log" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/tooling-log plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/tooling-log'] --- import kbnToolingLogObj from './kbn_tooling_log.devdocs.json'; diff --git a/api_docs/kbn_ts_projects.mdx b/api_docs/kbn_ts_projects.mdx index be3c8e29d5516..e8f536396cd3c 100644 --- a/api_docs/kbn_ts_projects.mdx +++ b/api_docs/kbn_ts_projects.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ts-projects title: "@kbn/ts-projects" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ts-projects plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ts-projects'] --- import kbnTsProjectsObj from './kbn_ts_projects.devdocs.json'; diff --git a/api_docs/kbn_typed_react_router_config.mdx b/api_docs/kbn_typed_react_router_config.mdx index 46f8c19cf89ec..b32fffce5ce5f 100644 --- a/api_docs/kbn_typed_react_router_config.mdx +++ b/api_docs/kbn_typed_react_router_config.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-typed-react-router-config title: "@kbn/typed-react-router-config" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/typed-react-router-config plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/typed-react-router-config'] --- import kbnTypedReactRouterConfigObj from './kbn_typed_react_router_config.devdocs.json'; diff --git a/api_docs/kbn_ui_actions_browser.mdx b/api_docs/kbn_ui_actions_browser.mdx index d8b53fc2d669f..6af725a802219 100644 --- a/api_docs/kbn_ui_actions_browser.mdx +++ b/api_docs/kbn_ui_actions_browser.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ui-actions-browser title: "@kbn/ui-actions-browser" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ui-actions-browser plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ui-actions-browser'] --- import kbnUiActionsBrowserObj from './kbn_ui_actions_browser.devdocs.json'; diff --git a/api_docs/kbn_ui_shared_deps_src.mdx b/api_docs/kbn_ui_shared_deps_src.mdx index a08cefa0974a5..175f75d1c9c72 100644 --- a/api_docs/kbn_ui_shared_deps_src.mdx +++ b/api_docs/kbn_ui_shared_deps_src.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ui-shared-deps-src title: "@kbn/ui-shared-deps-src" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ui-shared-deps-src plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ui-shared-deps-src'] --- import kbnUiSharedDepsSrcObj from './kbn_ui_shared_deps_src.devdocs.json'; diff --git a/api_docs/kbn_ui_theme.mdx b/api_docs/kbn_ui_theme.mdx index 68e956c6a9fd7..cf4823a41b994 100644 --- a/api_docs/kbn_ui_theme.mdx +++ b/api_docs/kbn_ui_theme.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ui-theme title: "@kbn/ui-theme" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ui-theme plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ui-theme'] --- import kbnUiThemeObj from './kbn_ui_theme.devdocs.json'; diff --git a/api_docs/kbn_unified_data_table.mdx b/api_docs/kbn_unified_data_table.mdx index 91091dbb7a330..30d39fbab123b 100644 --- a/api_docs/kbn_unified_data_table.mdx +++ b/api_docs/kbn_unified_data_table.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-unified-data-table title: "@kbn/unified-data-table" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/unified-data-table plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/unified-data-table'] --- import kbnUnifiedDataTableObj from './kbn_unified_data_table.devdocs.json'; diff --git a/api_docs/kbn_unified_doc_viewer.mdx b/api_docs/kbn_unified_doc_viewer.mdx index 40c628ad3325c..86f54f4a13e60 100644 --- a/api_docs/kbn_unified_doc_viewer.mdx +++ b/api_docs/kbn_unified_doc_viewer.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-unified-doc-viewer title: "@kbn/unified-doc-viewer" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/unified-doc-viewer plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/unified-doc-viewer'] --- import kbnUnifiedDocViewerObj from './kbn_unified_doc_viewer.devdocs.json'; diff --git a/api_docs/kbn_unified_field_list.mdx b/api_docs/kbn_unified_field_list.mdx index f22127f77ae44..861b929e842e1 100644 --- a/api_docs/kbn_unified_field_list.mdx +++ b/api_docs/kbn_unified_field_list.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-unified-field-list title: "@kbn/unified-field-list" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/unified-field-list plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/unified-field-list'] --- import kbnUnifiedFieldListObj from './kbn_unified_field_list.devdocs.json'; diff --git a/api_docs/kbn_url_state.mdx b/api_docs/kbn_url_state.mdx index 1e294e99efaba..931a77d995dd5 100644 --- a/api_docs/kbn_url_state.mdx +++ b/api_docs/kbn_url_state.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-url-state title: "@kbn/url-state" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/url-state plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/url-state'] --- import kbnUrlStateObj from './kbn_url_state.devdocs.json'; diff --git a/api_docs/kbn_use_tracked_promise.mdx b/api_docs/kbn_use_tracked_promise.mdx index b8c701132cb88..5fa41d11ace3c 100644 --- a/api_docs/kbn_use_tracked_promise.mdx +++ b/api_docs/kbn_use_tracked_promise.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-use-tracked-promise title: "@kbn/use-tracked-promise" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/use-tracked-promise plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/use-tracked-promise'] --- import kbnUseTrackedPromiseObj from './kbn_use_tracked_promise.devdocs.json'; diff --git a/api_docs/kbn_user_profile_components.mdx b/api_docs/kbn_user_profile_components.mdx index ed3eb341e30b8..bd6a2a9fea7ae 100644 --- a/api_docs/kbn_user_profile_components.mdx +++ b/api_docs/kbn_user_profile_components.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-user-profile-components title: "@kbn/user-profile-components" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/user-profile-components plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/user-profile-components'] --- import kbnUserProfileComponentsObj from './kbn_user_profile_components.devdocs.json'; diff --git a/api_docs/kbn_utility_types.mdx b/api_docs/kbn_utility_types.mdx index fabeb02cc299a..2266479569fb7 100644 --- a/api_docs/kbn_utility_types.mdx +++ b/api_docs/kbn_utility_types.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-utility-types title: "@kbn/utility-types" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/utility-types plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/utility-types'] --- import kbnUtilityTypesObj from './kbn_utility_types.devdocs.json'; diff --git a/api_docs/kbn_utility_types_jest.mdx b/api_docs/kbn_utility_types_jest.mdx index 9e9cb5759dee2..85666acc83ea4 100644 --- a/api_docs/kbn_utility_types_jest.mdx +++ b/api_docs/kbn_utility_types_jest.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-utility-types-jest title: "@kbn/utility-types-jest" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/utility-types-jest plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/utility-types-jest'] --- import kbnUtilityTypesJestObj from './kbn_utility_types_jest.devdocs.json'; diff --git a/api_docs/kbn_utils.mdx b/api_docs/kbn_utils.mdx index 7b5a3ae2edbf2..d6cf87ff8567d 100644 --- a/api_docs/kbn_utils.mdx +++ b/api_docs/kbn_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-utils title: "@kbn/utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/utils plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/utils'] --- import kbnUtilsObj from './kbn_utils.devdocs.json'; diff --git a/api_docs/kbn_visualization_ui_components.mdx b/api_docs/kbn_visualization_ui_components.mdx index 0dc5954a37433..5cc15cfbba8a8 100644 --- a/api_docs/kbn_visualization_ui_components.mdx +++ b/api_docs/kbn_visualization_ui_components.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-visualization-ui-components title: "@kbn/visualization-ui-components" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/visualization-ui-components plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/visualization-ui-components'] --- import kbnVisualizationUiComponentsObj from './kbn_visualization_ui_components.devdocs.json'; diff --git a/api_docs/kbn_yarn_lock_validator.mdx b/api_docs/kbn_yarn_lock_validator.mdx index aa2fb5154468f..8958468bc9f2d 100644 --- a/api_docs/kbn_yarn_lock_validator.mdx +++ b/api_docs/kbn_yarn_lock_validator.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-yarn-lock-validator title: "@kbn/yarn-lock-validator" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/yarn-lock-validator plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/yarn-lock-validator'] --- import kbnYarnLockValidatorObj from './kbn_yarn_lock_validator.devdocs.json'; diff --git a/api_docs/kibana_overview.mdx b/api_docs/kibana_overview.mdx index 9fa0c25531795..148fbff039e18 100644 --- a/api_docs/kibana_overview.mdx +++ b/api_docs/kibana_overview.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kibanaOverview title: "kibanaOverview" image: https://source.unsplash.com/400x175/?github description: API docs for the kibanaOverview plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'kibanaOverview'] --- import kibanaOverviewObj from './kibana_overview.devdocs.json'; diff --git a/api_docs/kibana_react.devdocs.json b/api_docs/kibana_react.devdocs.json index 3133e29cbacf4..242e917a38c35 100644 --- a/api_docs/kibana_react.devdocs.json +++ b/api_docs/kibana_react.devdocs.json @@ -3726,14 +3726,6 @@ "plugin": "graph", "path": "x-pack/plugins/graph/public/helpers/saved_objects_utils/confirm_modal_promise.tsx" }, - { - "plugin": "graph", - "path": "x-pack/plugins/graph/public/components/workspace_layout/workspace_top_nav_menu.tsx" - }, - { - "plugin": "graph", - "path": "x-pack/plugins/graph/public/components/workspace_layout/workspace_top_nav_menu.tsx" - }, { "plugin": "graph", "path": "x-pack/plugins/graph/public/application.tsx" diff --git a/api_docs/kibana_react.mdx b/api_docs/kibana_react.mdx index 72e61b9db565c..6bfcbb46328e6 100644 --- a/api_docs/kibana_react.mdx +++ b/api_docs/kibana_react.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kibanaReact title: "kibanaReact" image: https://source.unsplash.com/400x175/?github description: API docs for the kibanaReact plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'kibanaReact'] --- import kibanaReactObj from './kibana_react.devdocs.json'; diff --git a/api_docs/kibana_utils.mdx b/api_docs/kibana_utils.mdx index 91d17d9fcde72..5163dcb316e50 100644 --- a/api_docs/kibana_utils.mdx +++ b/api_docs/kibana_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kibanaUtils title: "kibanaUtils" image: https://source.unsplash.com/400x175/?github description: API docs for the kibanaUtils plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'kibanaUtils'] --- import kibanaUtilsObj from './kibana_utils.devdocs.json'; diff --git a/api_docs/kubernetes_security.mdx b/api_docs/kubernetes_security.mdx index eeb74883b2962..bb869216c84f1 100644 --- a/api_docs/kubernetes_security.mdx +++ b/api_docs/kubernetes_security.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kubernetesSecurity title: "kubernetesSecurity" image: https://source.unsplash.com/400x175/?github description: API docs for the kubernetesSecurity plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'kubernetesSecurity'] --- import kubernetesSecurityObj from './kubernetes_security.devdocs.json'; diff --git a/api_docs/lens.mdx b/api_docs/lens.mdx index 7640d66033c05..b11450706ba43 100644 --- a/api_docs/lens.mdx +++ b/api_docs/lens.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/lens title: "lens" image: https://source.unsplash.com/400x175/?github description: API docs for the lens plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'lens'] --- import lensObj from './lens.devdocs.json'; diff --git a/api_docs/license_api_guard.mdx b/api_docs/license_api_guard.mdx index 51aee902356a6..0b7294a36838d 100644 --- a/api_docs/license_api_guard.mdx +++ b/api_docs/license_api_guard.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/licenseApiGuard title: "licenseApiGuard" image: https://source.unsplash.com/400x175/?github description: API docs for the licenseApiGuard plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'licenseApiGuard'] --- import licenseApiGuardObj from './license_api_guard.devdocs.json'; diff --git a/api_docs/license_management.mdx b/api_docs/license_management.mdx index 6d5783871cdc4..c84037bdb1fdc 100644 --- a/api_docs/license_management.mdx +++ b/api_docs/license_management.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/licenseManagement title: "licenseManagement" image: https://source.unsplash.com/400x175/?github description: API docs for the licenseManagement plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'licenseManagement'] --- import licenseManagementObj from './license_management.devdocs.json'; diff --git a/api_docs/licensing.mdx b/api_docs/licensing.mdx index 8514ee21fcd37..e210d8a6bfe13 100644 --- a/api_docs/licensing.mdx +++ b/api_docs/licensing.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/licensing title: "licensing" image: https://source.unsplash.com/400x175/?github description: API docs for the licensing plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'licensing'] --- import licensingObj from './licensing.devdocs.json'; diff --git a/api_docs/lists.mdx b/api_docs/lists.mdx index 7d88a913416d4..3271d5e1f245c 100644 --- a/api_docs/lists.mdx +++ b/api_docs/lists.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/lists title: "lists" image: https://source.unsplash.com/400x175/?github description: API docs for the lists plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'lists'] --- import listsObj from './lists.devdocs.json'; diff --git a/api_docs/log_explorer.mdx b/api_docs/log_explorer.mdx index 88da234919d93..befcc70437a54 100644 --- a/api_docs/log_explorer.mdx +++ b/api_docs/log_explorer.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/logExplorer title: "logExplorer" image: https://source.unsplash.com/400x175/?github description: API docs for the logExplorer plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'logExplorer'] --- import logExplorerObj from './log_explorer.devdocs.json'; diff --git a/api_docs/logs_shared.mdx b/api_docs/logs_shared.mdx index 6a569ad488335..ffa98ecee1830 100644 --- a/api_docs/logs_shared.mdx +++ b/api_docs/logs_shared.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/logsShared title: "logsShared" image: https://source.unsplash.com/400x175/?github description: API docs for the logsShared plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'logsShared'] --- import logsSharedObj from './logs_shared.devdocs.json'; diff --git a/api_docs/management.mdx b/api_docs/management.mdx index 506e3bdaa1684..b98088ff6fca4 100644 --- a/api_docs/management.mdx +++ b/api_docs/management.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/management title: "management" image: https://source.unsplash.com/400x175/?github description: API docs for the management plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'management'] --- import managementObj from './management.devdocs.json'; diff --git a/api_docs/maps.mdx b/api_docs/maps.mdx index 415d96478e799..7ccc3846ad0d1 100644 --- a/api_docs/maps.mdx +++ b/api_docs/maps.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/maps title: "maps" image: https://source.unsplash.com/400x175/?github description: API docs for the maps plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'maps'] --- import mapsObj from './maps.devdocs.json'; diff --git a/api_docs/maps_ems.mdx b/api_docs/maps_ems.mdx index a76d920efbd05..0f06b54ce9df8 100644 --- a/api_docs/maps_ems.mdx +++ b/api_docs/maps_ems.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/mapsEms title: "mapsEms" image: https://source.unsplash.com/400x175/?github description: API docs for the mapsEms plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'mapsEms'] --- import mapsEmsObj from './maps_ems.devdocs.json'; diff --git a/api_docs/ml.mdx b/api_docs/ml.mdx index 87679e97ee10f..9550b03ca8ef3 100644 --- a/api_docs/ml.mdx +++ b/api_docs/ml.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/ml title: "ml" image: https://source.unsplash.com/400x175/?github description: API docs for the ml plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'ml'] --- import mlObj from './ml.devdocs.json'; diff --git a/api_docs/monitoring.mdx b/api_docs/monitoring.mdx index 2f9c10a8d601f..9f00d4a1b3112 100644 --- a/api_docs/monitoring.mdx +++ b/api_docs/monitoring.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/monitoring title: "monitoring" image: https://source.unsplash.com/400x175/?github description: API docs for the monitoring plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'monitoring'] --- import monitoringObj from './monitoring.devdocs.json'; diff --git a/api_docs/monitoring_collection.mdx b/api_docs/monitoring_collection.mdx index 1f3f4c9e84b3c..ff84af9508421 100644 --- a/api_docs/monitoring_collection.mdx +++ b/api_docs/monitoring_collection.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/monitoringCollection title: "monitoringCollection" image: https://source.unsplash.com/400x175/?github description: API docs for the monitoringCollection plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'monitoringCollection'] --- import monitoringCollectionObj from './monitoring_collection.devdocs.json'; diff --git a/api_docs/navigation.mdx b/api_docs/navigation.mdx index 58358d769e1c8..f1420e4cfa2f3 100644 --- a/api_docs/navigation.mdx +++ b/api_docs/navigation.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/navigation title: "navigation" image: https://source.unsplash.com/400x175/?github description: API docs for the navigation plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'navigation'] --- import navigationObj from './navigation.devdocs.json'; diff --git a/api_docs/newsfeed.mdx b/api_docs/newsfeed.mdx index 5c0fda7795ffc..ea0effc9fea3a 100644 --- a/api_docs/newsfeed.mdx +++ b/api_docs/newsfeed.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/newsfeed title: "newsfeed" image: https://source.unsplash.com/400x175/?github description: API docs for the newsfeed plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'newsfeed'] --- import newsfeedObj from './newsfeed.devdocs.json'; diff --git a/api_docs/no_data_page.mdx b/api_docs/no_data_page.mdx index 4b84d2688576b..859779de519dc 100644 --- a/api_docs/no_data_page.mdx +++ b/api_docs/no_data_page.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/noDataPage title: "noDataPage" image: https://source.unsplash.com/400x175/?github description: API docs for the noDataPage plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'noDataPage'] --- import noDataPageObj from './no_data_page.devdocs.json'; diff --git a/api_docs/notifications.mdx b/api_docs/notifications.mdx index 844c63784a8e7..cdec51c565667 100644 --- a/api_docs/notifications.mdx +++ b/api_docs/notifications.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/notifications title: "notifications" image: https://source.unsplash.com/400x175/?github description: API docs for the notifications plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'notifications'] --- import notificationsObj from './notifications.devdocs.json'; diff --git a/api_docs/observability.devdocs.json b/api_docs/observability.devdocs.json index 24d66a3f94a94..009e122a6a378 100644 --- a/api_docs/observability.devdocs.json +++ b/api_docs/observability.devdocs.json @@ -155,9 +155,7 @@ "label": "AlertSummary", "description": [], "signature": [ - "({ alertSummaryFields }: ", - "AlertSummaryProps", - ") => JSX.Element" + "({ alertSummaryFields }: AlertSummaryProps) => JSX.Element" ], "path": "x-pack/plugins/observability/public/pages/alert_details/components/alert_summary.tsx", "deprecated": false, @@ -418,9 +416,7 @@ "label": "DatePicker", "description": [], "signature": [ - "({\n rangeFrom,\n rangeTo,\n refreshPaused,\n refreshInterval,\n width = 'restricted',\n onTimeRangeRefresh,\n}: ", - "DatePickerProps", - ") => JSX.Element" + "({\n rangeFrom,\n rangeTo,\n refreshPaused,\n refreshInterval,\n width = 'restricted',\n onTimeRangeRefresh,\n}: DatePickerProps) => JSX.Element" ], "path": "x-pack/plugins/observability/public/pages/overview/components/date_picker/date_picker.tsx", "deprecated": false, @@ -9231,6 +9227,34 @@ "section": "def-server.ObservabilityRouteCreateOptions", "text": "ObservabilityRouteCreateOptions" }, + "; \"POST /api/observability/slos/_delete_instances 2023-10-31\": { endpoint: \"POST /api/observability/slos/_delete_instances 2023-10-31\"; params?: ", + "TypeC", + "<{ body: ", + "TypeC", + "<{ list: ", + "ArrayC", + "<", + "TypeC", + "<{ sloId: ", + "StringC", + "; instanceId: ", + "StringC", + "; }>>; }>; }> | undefined; handler: ({}: ", + { + "pluginId": "observability", + "scope": "server", + "docId": "kibObservabilityPluginApi", + "section": "def-server.ObservabilityRouteHandlerResources", + "text": "ObservabilityRouteHandlerResources" + }, + " & { params: { body: { list: { sloId: string; instanceId: string; }[]; }; }; }) => Promise; } & ", + { + "pluginId": "observability", + "scope": "server", + "docId": "kibObservabilityPluginApi", + "section": "def-server.ObservabilityRouteCreateOptions", + "text": "ObservabilityRouteCreateOptions" + }, "; \"DELETE /api/observability/slos/{id} 2023-10-31\": { endpoint: \"DELETE /api/observability/slos/{id} 2023-10-31\"; params?: ", "TypeC", "<{ path: ", @@ -10937,6 +10961,34 @@ "section": "def-server.ObservabilityRouteCreateOptions", "text": "ObservabilityRouteCreateOptions" }, + "; \"POST /api/observability/slos/_delete_instances 2023-10-31\": { endpoint: \"POST /api/observability/slos/_delete_instances 2023-10-31\"; params?: ", + "TypeC", + "<{ body: ", + "TypeC", + "<{ list: ", + "ArrayC", + "<", + "TypeC", + "<{ sloId: ", + "StringC", + "; instanceId: ", + "StringC", + "; }>>; }>; }> | undefined; handler: ({}: ", + { + "pluginId": "observability", + "scope": "server", + "docId": "kibObservabilityPluginApi", + "section": "def-server.ObservabilityRouteHandlerResources", + "text": "ObservabilityRouteHandlerResources" + }, + " & { params: { body: { list: { sloId: string; instanceId: string; }[]; }; }; }) => Promise; } & ", + { + "pluginId": "observability", + "scope": "server", + "docId": "kibObservabilityPluginApi", + "section": "def-server.ObservabilityRouteCreateOptions", + "text": "ObservabilityRouteCreateOptions" + }, "; \"DELETE /api/observability/slos/{id} 2023-10-31\": { endpoint: \"DELETE /api/observability/slos/{id} 2023-10-31\"; params?: ", "TypeC", "<{ path: ", diff --git a/api_docs/observability.mdx b/api_docs/observability.mdx index 4f5365797c3b2..d10fd512c30be 100644 --- a/api_docs/observability.mdx +++ b/api_docs/observability.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/observability title: "observability" image: https://source.unsplash.com/400x175/?github description: API docs for the observability plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'observability'] --- import observabilityObj from './observability.devdocs.json'; @@ -21,7 +21,7 @@ Contact [@elastic/actionable-observability](https://github.com/orgs/elastic/team | Public API count | Any count | Items lacking comments | Missing exports | |-------------------|-----------|------------------------|-----------------| -| 542 | 2 | 533 | 16 | +| 542 | 2 | 533 | 14 | ## Client diff --git a/api_docs/observability_a_i_assistant.mdx b/api_docs/observability_a_i_assistant.mdx index 31e4264930aee..e3520b084ccac 100644 --- a/api_docs/observability_a_i_assistant.mdx +++ b/api_docs/observability_a_i_assistant.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/observabilityAIAssistant title: "observabilityAIAssistant" image: https://source.unsplash.com/400x175/?github description: API docs for the observabilityAIAssistant plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'observabilityAIAssistant'] --- import observabilityAIAssistantObj from './observability_a_i_assistant.devdocs.json'; diff --git a/api_docs/observability_onboarding.mdx b/api_docs/observability_onboarding.mdx index 939e6d954a9b7..ccc3104347e34 100644 --- a/api_docs/observability_onboarding.mdx +++ b/api_docs/observability_onboarding.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/observabilityOnboarding title: "observabilityOnboarding" image: https://source.unsplash.com/400x175/?github description: API docs for the observabilityOnboarding plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'observabilityOnboarding'] --- import observabilityOnboardingObj from './observability_onboarding.devdocs.json'; diff --git a/api_docs/observability_shared.mdx b/api_docs/observability_shared.mdx index 040d247a44432..e544473677fd3 100644 --- a/api_docs/observability_shared.mdx +++ b/api_docs/observability_shared.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/observabilityShared title: "observabilityShared" image: https://source.unsplash.com/400x175/?github description: API docs for the observabilityShared plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'observabilityShared'] --- import observabilitySharedObj from './observability_shared.devdocs.json'; diff --git a/api_docs/osquery.mdx b/api_docs/osquery.mdx index b9a92bd0e15a9..58b1aeeb72c30 100644 --- a/api_docs/osquery.mdx +++ b/api_docs/osquery.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/osquery title: "osquery" image: https://source.unsplash.com/400x175/?github description: API docs for the osquery plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'osquery'] --- import osqueryObj from './osquery.devdocs.json'; diff --git a/api_docs/plugin_directory.mdx b/api_docs/plugin_directory.mdx index 8c9256f9f511c..f8a0a349a4ea1 100644 --- a/api_docs/plugin_directory.mdx +++ b/api_docs/plugin_directory.mdx @@ -7,7 +7,7 @@ id: kibDevDocsPluginDirectory slug: /kibana-dev-docs/api-meta/plugin-api-directory title: Directory description: Directory of public APIs available through plugins or packages. -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana'] --- @@ -21,13 +21,13 @@ tags: ['contributor', 'dev', 'apidocs', 'kibana'] | API Count | Any Count | Missing comments | Missing exports | |--------------|----------|-----------------|--------| -| 72503 | 223 | 61894 | 1513 | +| 72529 | 223 | 61920 | 1511 | ## Plugin Directory | Plugin name           | Maintaining team | Description | API Cnt | Any Cnt | Missing
comments | Missing
exports | |--------------|----------------|-----------|--------------|----------|---------------|--------| -| | [@elastic/response-ops](https://github.com/orgs/elastic/teams/response-ops) | - | 267 | 0 | 261 | 30 | +| | [@elastic/response-ops](https://github.com/orgs/elastic/teams/response-ops) | - | 269 | 0 | 263 | 30 | | | [@elastic/appex-sharedux @elastic/platform-deployment-management](https://github.com/orgs/elastic/teams/appex-sharedux ) | - | 17 | 1 | 15 | 2 | | | [@elastic/ml-ui](https://github.com/orgs/elastic/teams/ml-ui) | AIOps plugin maintained by ML team. | 61 | 1 | 3 | 0 | | | [@elastic/response-ops](https://github.com/orgs/elastic/teams/response-ops) | - | 790 | 1 | 759 | 49 | @@ -135,7 +135,7 @@ tags: ['contributor', 'dev', 'apidocs', 'kibana'] | | [@elastic/kibana-core](https://github.com/orgs/elastic/teams/kibana-core) | - | 17 | 0 | 17 | 0 | | | [@elastic/appex-sharedux](https://github.com/orgs/elastic/teams/appex-sharedux) | - | 3 | 0 | 3 | 0 | | | [@elastic/appex-sharedux](https://github.com/orgs/elastic/teams/appex-sharedux) | - | 2 | 0 | 2 | 1 | -| | [@elastic/actionable-observability](https://github.com/orgs/elastic/teams/actionable-observability) | - | 542 | 2 | 533 | 16 | +| | [@elastic/actionable-observability](https://github.com/orgs/elastic/teams/actionable-observability) | - | 542 | 2 | 533 | 14 | | | [@elastic/obs-ai-assistant](https://github.com/orgs/elastic/teams/obs-ai-assistant) | - | 42 | 0 | 39 | 7 | | observabilityLogExplorer | [@elastic/infra-monitoring-ui](https://github.com/orgs/elastic/teams/infra-monitoring-ui) | This plugin exposes and registers observability log consumption features. | 0 | 0 | 0 | 0 | | | [@elastic/apm-ui](https://github.com/orgs/elastic/teams/apm-ui) | - | 14 | 0 | 14 | 0 | @@ -170,7 +170,7 @@ tags: ['contributor', 'dev', 'apidocs', 'kibana'] | | [@elastic/appex-sharedux](https://github.com/orgs/elastic/teams/appex-sharedux) | Adds URL Service and sharing capabilities to Kibana | 119 | 0 | 60 | 10 | | | [@elastic/platform-deployment-management](https://github.com/orgs/elastic/teams/platform-deployment-management) | - | 22 | 1 | 22 | 1 | | | [@elastic/kibana-security](https://github.com/orgs/elastic/teams/kibana-security) | This plugin provides the Spaces feature, which allows saved objects to be organized into meaningful categories. | 253 | 0 | 65 | 0 | -| | [@elastic/response-ops](https://github.com/orgs/elastic/teams/response-ops) | - | 14 | 0 | 14 | 3 | +| | [@elastic/response-ops](https://github.com/orgs/elastic/teams/response-ops) | - | 24 | 0 | 24 | 3 | | | [@elastic/response-ops](https://github.com/orgs/elastic/teams/response-ops) | - | 4 | 0 | 4 | 1 | | synthetics | [@elastic/uptime](https://github.com/orgs/elastic/teams/uptime) | This plugin visualizes data from Synthetics and Heartbeat, and integrates with other Observability solutions. | 0 | 0 | 0 | 0 | | | [@elastic/response-ops](https://github.com/orgs/elastic/teams/response-ops) | - | 96 | 0 | 53 | 6 | @@ -178,12 +178,12 @@ tags: ['contributor', 'dev', 'apidocs', 'kibana'] | | [@elastic/kibana-core](https://github.com/orgs/elastic/teams/kibana-core) | - | 31 | 0 | 26 | 6 | | | [@elastic/kibana-core](https://github.com/orgs/elastic/teams/kibana-core) | - | 1 | 0 | 1 | 0 | | | [@elastic/kibana-core](https://github.com/orgs/elastic/teams/kibana-core) | - | 6 | 0 | 0 | 0 | -| | [@elastic/kibana-visualizations](https://github.com/orgs/elastic/teams/kibana-visualizations) | - | 19 | 0 | 19 | 0 | +| | [@elastic/kibana-visualizations](https://github.com/orgs/elastic/teams/kibana-visualizations) | - | 20 | 0 | 20 | 0 | | | [@elastic/protections-experience](https://github.com/orgs/elastic/teams/protections-experience) | Elastic threat intelligence helps you see if you are open to or have been subject to current or historical known threats | 30 | 0 | 14 | 5 | | | [@elastic/security-threat-hunting-investigations](https://github.com/orgs/elastic/teams/security-threat-hunting-investigations) | - | 257 | 1 | 213 | 22 | | | [@elastic/ml-ui](https://github.com/orgs/elastic/teams/ml-ui) | This plugin provides access to the transforms features provided by Elastic. Transforms enable you to convert existing Elasticsearch indices into summarized indices, which provide opportunities for new insights and analytics. | 4 | 0 | 4 | 1 | | translations | [@elastic/kibana-localization](https://github.com/orgs/elastic/teams/kibana-localization) | - | 0 | 0 | 0 | 0 | -| | [@elastic/response-ops](https://github.com/orgs/elastic/teams/response-ops) | - | 573 | 1 | 547 | 51 | +| | [@elastic/response-ops](https://github.com/orgs/elastic/teams/response-ops) | - | 576 | 1 | 550 | 51 | | | [@elastic/appex-sharedux](https://github.com/orgs/elastic/teams/appex-sharedux) | Adds UI Actions service to Kibana | 145 | 0 | 103 | 9 | | | [@elastic/appex-sharedux](https://github.com/orgs/elastic/teams/appex-sharedux) | Extends UI Actions plugin with more functionality | 206 | 0 | 140 | 9 | | | [@elastic/kibana-data-discovery](https://github.com/orgs/elastic/teams/kibana-data-discovery) | This plugin contains services reliant on the plugin lifecycle for the unified doc viewer component (see @kbn/unified-doc-viewer). | 13 | 0 | 10 | 3 | @@ -526,7 +526,7 @@ tags: ['contributor', 'dev', 'apidocs', 'kibana'] | | [@elastic/response-ops](https://github.com/orgs/elastic/teams/response-ops) | - | 16 | 0 | 16 | 1 | | | [@elastic/security-detections-response](https://github.com/orgs/elastic/teams/security-detections-response) | - | 107 | 0 | 104 | 0 | | | [@elastic/appex-sharedux](https://github.com/orgs/elastic/teams/appex-sharedux) | - | 2 | 0 | 2 | 0 | -| | [@elastic/enterprise-search-frontend](https://github.com/orgs/elastic/teams/enterprise-search-frontend) | - | 65 | 0 | 65 | 0 | +| | [@elastic/enterprise-search-frontend](https://github.com/orgs/elastic/teams/enterprise-search-frontend) | - | 67 | 0 | 67 | 0 | | | [@elastic/kibana-data-discovery](https://github.com/orgs/elastic/teams/kibana-data-discovery) | - | 16 | 0 | 8 | 0 | | | [@elastic/security-threat-hunting-explore](https://github.com/orgs/elastic/teams/security-threat-hunting-explore) | - | 14 | 0 | 14 | 6 | | | [@elastic/security-threat-hunting-explore](https://github.com/orgs/elastic/teams/security-threat-hunting-explore) | - | 50 | 0 | 47 | 0 | @@ -594,7 +594,7 @@ tags: ['contributor', 'dev', 'apidocs', 'kibana'] | | [@elastic/appex-sharedux](https://github.com/orgs/elastic/teams/appex-sharedux) | - | 2 | 0 | 0 | 0 | | | [@elastic/appex-sharedux](https://github.com/orgs/elastic/teams/appex-sharedux) | - | 15 | 0 | 4 | 0 | | | [@elastic/appex-sharedux](https://github.com/orgs/elastic/teams/appex-sharedux) | - | 9 | 0 | 3 | 0 | -| | [@elastic/actionable-observability](https://github.com/orgs/elastic/teams/actionable-observability) | - | 132 | 0 | 129 | 0 | +| | [@elastic/actionable-observability](https://github.com/orgs/elastic/teams/actionable-observability) | - | 135 | 0 | 132 | 0 | | | [@elastic/kibana-operations](https://github.com/orgs/elastic/teams/kibana-operations) | - | 20 | 0 | 12 | 0 | | | [@elastic/kibana-core](https://github.com/orgs/elastic/teams/kibana-core) | - | 102 | 2 | 65 | 1 | | | [@elastic/kibana-operations](https://github.com/orgs/elastic/teams/kibana-operations) | - | 4 | 0 | 2 | 0 | @@ -603,7 +603,7 @@ tags: ['contributor', 'dev', 'apidocs', 'kibana'] | | [@elastic/kibana-operations](https://github.com/orgs/elastic/teams/kibana-operations) | - | 289 | 4 | 242 | 12 | | | [@elastic/kibana-operations](https://github.com/orgs/elastic/teams/kibana-operations) | - | 137 | 5 | 105 | 2 | | | [@elastic/kibana-operations](https://github.com/orgs/elastic/teams/kibana-operations) | - | 2 | 0 | 1 | 0 | -| | [@elastic/kibana-visualizations](https://github.com/orgs/elastic/teams/kibana-visualizations) | - | 17 | 0 | 16 | 0 | +| | [@elastic/kibana-visualizations](https://github.com/orgs/elastic/teams/kibana-visualizations) | - | 22 | 0 | 21 | 0 | | | [@elastic/kibana-operations](https://github.com/orgs/elastic/teams/kibana-operations) | - | 72 | 0 | 55 | 0 | | | [@elastic/kibana-operations](https://github.com/orgs/elastic/teams/kibana-operations) | - | 39 | 0 | 25 | 1 | | | [@elastic/apm-ui](https://github.com/orgs/elastic/teams/apm-ui) | - | 86 | 0 | 86 | 1 | diff --git a/api_docs/presentation_util.mdx b/api_docs/presentation_util.mdx index 17307c56df40b..8baaad3c6c961 100644 --- a/api_docs/presentation_util.mdx +++ b/api_docs/presentation_util.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/presentationUtil title: "presentationUtil" image: https://source.unsplash.com/400x175/?github description: API docs for the presentationUtil plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'presentationUtil'] --- import presentationUtilObj from './presentation_util.devdocs.json'; diff --git a/api_docs/profiling.mdx b/api_docs/profiling.mdx index c733c69c88c29..bfbb359943027 100644 --- a/api_docs/profiling.mdx +++ b/api_docs/profiling.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/profiling title: "profiling" image: https://source.unsplash.com/400x175/?github description: API docs for the profiling plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'profiling'] --- import profilingObj from './profiling.devdocs.json'; diff --git a/api_docs/profiling_data_access.mdx b/api_docs/profiling_data_access.mdx index 7dfef9cbc7f5d..be115e09b2ccf 100644 --- a/api_docs/profiling_data_access.mdx +++ b/api_docs/profiling_data_access.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/profilingDataAccess title: "profilingDataAccess" image: https://source.unsplash.com/400x175/?github description: API docs for the profilingDataAccess plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'profilingDataAccess'] --- import profilingDataAccessObj from './profiling_data_access.devdocs.json'; diff --git a/api_docs/remote_clusters.mdx b/api_docs/remote_clusters.mdx index 46f7029e4c437..cfbfdbe19c2d7 100644 --- a/api_docs/remote_clusters.mdx +++ b/api_docs/remote_clusters.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/remoteClusters title: "remoteClusters" image: https://source.unsplash.com/400x175/?github description: API docs for the remoteClusters plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'remoteClusters'] --- import remoteClustersObj from './remote_clusters.devdocs.json'; diff --git a/api_docs/reporting.mdx b/api_docs/reporting.mdx index 652db20d467be..6ceb583f5e701 100644 --- a/api_docs/reporting.mdx +++ b/api_docs/reporting.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/reporting title: "reporting" image: https://source.unsplash.com/400x175/?github description: API docs for the reporting plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'reporting'] --- import reportingObj from './reporting.devdocs.json'; diff --git a/api_docs/rollup.mdx b/api_docs/rollup.mdx index f05dfff64c6eb..19e06683b4eac 100644 --- a/api_docs/rollup.mdx +++ b/api_docs/rollup.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/rollup title: "rollup" image: https://source.unsplash.com/400x175/?github description: API docs for the rollup plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'rollup'] --- import rollupObj from './rollup.devdocs.json'; diff --git a/api_docs/rule_registry.mdx b/api_docs/rule_registry.mdx index 04ca4e478bd01..912d13f8bbe28 100644 --- a/api_docs/rule_registry.mdx +++ b/api_docs/rule_registry.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/ruleRegistry title: "ruleRegistry" image: https://source.unsplash.com/400x175/?github description: API docs for the ruleRegistry plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'ruleRegistry'] --- import ruleRegistryObj from './rule_registry.devdocs.json'; diff --git a/api_docs/runtime_fields.mdx b/api_docs/runtime_fields.mdx index deb21fb5af459..e015e177cbba5 100644 --- a/api_docs/runtime_fields.mdx +++ b/api_docs/runtime_fields.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/runtimeFields title: "runtimeFields" image: https://source.unsplash.com/400x175/?github description: API docs for the runtimeFields plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'runtimeFields'] --- import runtimeFieldsObj from './runtime_fields.devdocs.json'; diff --git a/api_docs/saved_objects.mdx b/api_docs/saved_objects.mdx index a389e8c341df1..92c55394f4209 100644 --- a/api_docs/saved_objects.mdx +++ b/api_docs/saved_objects.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/savedObjects title: "savedObjects" image: https://source.unsplash.com/400x175/?github description: API docs for the savedObjects plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'savedObjects'] --- import savedObjectsObj from './saved_objects.devdocs.json'; diff --git a/api_docs/saved_objects_finder.mdx b/api_docs/saved_objects_finder.mdx index 51f2eac47f7ee..142c9ae875e69 100644 --- a/api_docs/saved_objects_finder.mdx +++ b/api_docs/saved_objects_finder.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/savedObjectsFinder title: "savedObjectsFinder" image: https://source.unsplash.com/400x175/?github description: API docs for the savedObjectsFinder plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'savedObjectsFinder'] --- import savedObjectsFinderObj from './saved_objects_finder.devdocs.json'; diff --git a/api_docs/saved_objects_management.mdx b/api_docs/saved_objects_management.mdx index cc16ca5a190d2..f61d87c732506 100644 --- a/api_docs/saved_objects_management.mdx +++ b/api_docs/saved_objects_management.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/savedObjectsManagement title: "savedObjectsManagement" image: https://source.unsplash.com/400x175/?github description: API docs for the savedObjectsManagement plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'savedObjectsManagement'] --- import savedObjectsManagementObj from './saved_objects_management.devdocs.json'; diff --git a/api_docs/saved_objects_tagging.mdx b/api_docs/saved_objects_tagging.mdx index 6e99575f34bea..b517eca82a928 100644 --- a/api_docs/saved_objects_tagging.mdx +++ b/api_docs/saved_objects_tagging.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/savedObjectsTagging title: "savedObjectsTagging" image: https://source.unsplash.com/400x175/?github description: API docs for the savedObjectsTagging plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'savedObjectsTagging'] --- import savedObjectsTaggingObj from './saved_objects_tagging.devdocs.json'; diff --git a/api_docs/saved_objects_tagging_oss.mdx b/api_docs/saved_objects_tagging_oss.mdx index 32fbb58ee3493..abc9de3307deb 100644 --- a/api_docs/saved_objects_tagging_oss.mdx +++ b/api_docs/saved_objects_tagging_oss.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/savedObjectsTaggingOss title: "savedObjectsTaggingOss" image: https://source.unsplash.com/400x175/?github description: API docs for the savedObjectsTaggingOss plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'savedObjectsTaggingOss'] --- import savedObjectsTaggingOssObj from './saved_objects_tagging_oss.devdocs.json'; diff --git a/api_docs/saved_search.mdx b/api_docs/saved_search.mdx index f606643f4009d..61bc012db63a9 100644 --- a/api_docs/saved_search.mdx +++ b/api_docs/saved_search.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/savedSearch title: "savedSearch" image: https://source.unsplash.com/400x175/?github description: API docs for the savedSearch plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'savedSearch'] --- import savedSearchObj from './saved_search.devdocs.json'; diff --git a/api_docs/screenshot_mode.mdx b/api_docs/screenshot_mode.mdx index fffd6ea49de6f..dbb975cc061ed 100644 --- a/api_docs/screenshot_mode.mdx +++ b/api_docs/screenshot_mode.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/screenshotMode title: "screenshotMode" image: https://source.unsplash.com/400x175/?github description: API docs for the screenshotMode plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'screenshotMode'] --- import screenshotModeObj from './screenshot_mode.devdocs.json'; diff --git a/api_docs/screenshotting.mdx b/api_docs/screenshotting.mdx index ffd1930565da5..b4bd667da42a4 100644 --- a/api_docs/screenshotting.mdx +++ b/api_docs/screenshotting.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/screenshotting title: "screenshotting" image: https://source.unsplash.com/400x175/?github description: API docs for the screenshotting plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'screenshotting'] --- import screenshottingObj from './screenshotting.devdocs.json'; diff --git a/api_docs/security.mdx b/api_docs/security.mdx index 3950548c880fb..bde9ff25f6e97 100644 --- a/api_docs/security.mdx +++ b/api_docs/security.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/security title: "security" image: https://source.unsplash.com/400x175/?github description: API docs for the security plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'security'] --- import securityObj from './security.devdocs.json'; diff --git a/api_docs/security_solution.mdx b/api_docs/security_solution.mdx index 56c700c517970..ed2dae2824bab 100644 --- a/api_docs/security_solution.mdx +++ b/api_docs/security_solution.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/securitySolution title: "securitySolution" image: https://source.unsplash.com/400x175/?github description: API docs for the securitySolution plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'securitySolution'] --- import securitySolutionObj from './security_solution.devdocs.json'; diff --git a/api_docs/security_solution_ess.mdx b/api_docs/security_solution_ess.mdx index 98f2cb7869788..d07f98a7332b0 100644 --- a/api_docs/security_solution_ess.mdx +++ b/api_docs/security_solution_ess.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/securitySolutionEss title: "securitySolutionEss" image: https://source.unsplash.com/400x175/?github description: API docs for the securitySolutionEss plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'securitySolutionEss'] --- import securitySolutionEssObj from './security_solution_ess.devdocs.json'; diff --git a/api_docs/security_solution_serverless.mdx b/api_docs/security_solution_serverless.mdx index fe15bc4706c25..d715d1010ba65 100644 --- a/api_docs/security_solution_serverless.mdx +++ b/api_docs/security_solution_serverless.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/securitySolutionServerless title: "securitySolutionServerless" image: https://source.unsplash.com/400x175/?github description: API docs for the securitySolutionServerless plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'securitySolutionServerless'] --- import securitySolutionServerlessObj from './security_solution_serverless.devdocs.json'; diff --git a/api_docs/serverless.mdx b/api_docs/serverless.mdx index 0528a3c42d91c..d78f273a7755b 100644 --- a/api_docs/serverless.mdx +++ b/api_docs/serverless.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/serverless title: "serverless" image: https://source.unsplash.com/400x175/?github description: API docs for the serverless plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'serverless'] --- import serverlessObj from './serverless.devdocs.json'; diff --git a/api_docs/serverless_observability.mdx b/api_docs/serverless_observability.mdx index ca487148446ab..93287788f8645 100644 --- a/api_docs/serverless_observability.mdx +++ b/api_docs/serverless_observability.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/serverlessObservability title: "serverlessObservability" image: https://source.unsplash.com/400x175/?github description: API docs for the serverlessObservability plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'serverlessObservability'] --- import serverlessObservabilityObj from './serverless_observability.devdocs.json'; diff --git a/api_docs/serverless_search.mdx b/api_docs/serverless_search.mdx index 2382a958e93a4..684d74bc88e77 100644 --- a/api_docs/serverless_search.mdx +++ b/api_docs/serverless_search.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/serverlessSearch title: "serverlessSearch" image: https://source.unsplash.com/400x175/?github description: API docs for the serverlessSearch plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'serverlessSearch'] --- import serverlessSearchObj from './serverless_search.devdocs.json'; diff --git a/api_docs/session_view.mdx b/api_docs/session_view.mdx index 0c2b0290e9db7..e1b29a4b77478 100644 --- a/api_docs/session_view.mdx +++ b/api_docs/session_view.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/sessionView title: "sessionView" image: https://source.unsplash.com/400x175/?github description: API docs for the sessionView plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'sessionView'] --- import sessionViewObj from './session_view.devdocs.json'; diff --git a/api_docs/share.mdx b/api_docs/share.mdx index 6385220853e90..0117b9138ccee 100644 --- a/api_docs/share.mdx +++ b/api_docs/share.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/share title: "share" image: https://source.unsplash.com/400x175/?github description: API docs for the share plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'share'] --- import shareObj from './share.devdocs.json'; diff --git a/api_docs/snapshot_restore.mdx b/api_docs/snapshot_restore.mdx index 7d25378cd6f0e..c93a024b3b41b 100644 --- a/api_docs/snapshot_restore.mdx +++ b/api_docs/snapshot_restore.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/snapshotRestore title: "snapshotRestore" image: https://source.unsplash.com/400x175/?github description: API docs for the snapshotRestore plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'snapshotRestore'] --- import snapshotRestoreObj from './snapshot_restore.devdocs.json'; diff --git a/api_docs/spaces.mdx b/api_docs/spaces.mdx index 54715a2f5bf55..9f61d5283f5e5 100644 --- a/api_docs/spaces.mdx +++ b/api_docs/spaces.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/spaces title: "spaces" image: https://source.unsplash.com/400x175/?github description: API docs for the spaces plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'spaces'] --- import spacesObj from './spaces.devdocs.json'; diff --git a/api_docs/stack_alerts.devdocs.json b/api_docs/stack_alerts.devdocs.json index 65ec1191d667f..cced9a721c32e 100644 --- a/api_docs/stack_alerts.devdocs.json +++ b/api_docs/stack_alerts.devdocs.json @@ -210,9 +210,201 @@ ], "returnComment": [], "initialIsOpen": false + }, + { + "parentPluginId": "stackAlerts", + "id": "def-common.rowToDocument", + "type": "Function", + "tags": [], + "label": "rowToDocument", + "description": [], + "signature": [ + "(columns: EsqlResultColumn[], row: EsqlResultRow) => EsqlDocument" + ], + "path": "x-pack/plugins/stack_alerts/common/esql_query_utils.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "stackAlerts", + "id": "def-common.rowToDocument.$1", + "type": "Array", + "tags": [], + "label": "columns", + "description": [], + "signature": [ + "EsqlResultColumn[]" + ], + "path": "x-pack/plugins/stack_alerts/common/esql_query_utils.ts", + "deprecated": false, + "trackAdoption": false, + "isRequired": true + }, + { + "parentPluginId": "stackAlerts", + "id": "def-common.rowToDocument.$2", + "type": "Array", + "tags": [], + "label": "row", + "description": [], + "signature": [ + "EsqlResultRow" + ], + "path": "x-pack/plugins/stack_alerts/common/esql_query_utils.ts", + "deprecated": false, + "trackAdoption": false, + "isRequired": true + } + ], + "returnComment": [], + "initialIsOpen": false + }, + { + "parentPluginId": "stackAlerts", + "id": "def-common.toEsQueryHits", + "type": "Function", + "tags": [], + "label": "toEsQueryHits", + "description": [], + "signature": [ + "(results: ", + { + "pluginId": "stackAlerts", + "scope": "common", + "docId": "kibStackAlertsPluginApi", + "section": "def-common.EsqlTable", + "text": "EsqlTable" + }, + ") => { hits: EsqlHit[]; total: number; }" + ], + "path": "x-pack/plugins/stack_alerts/common/esql_query_utils.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "stackAlerts", + "id": "def-common.toEsQueryHits.$1", + "type": "Object", + "tags": [], + "label": "results", + "description": [], + "signature": [ + { + "pluginId": "stackAlerts", + "scope": "common", + "docId": "kibStackAlertsPluginApi", + "section": "def-common.EsqlTable", + "text": "EsqlTable" + } + ], + "path": "x-pack/plugins/stack_alerts/common/esql_query_utils.ts", + "deprecated": false, + "trackAdoption": false, + "isRequired": true + } + ], + "returnComment": [], + "initialIsOpen": false + }, + { + "parentPluginId": "stackAlerts", + "id": "def-common.transformDatatableToEsqlTable", + "type": "Function", + "tags": [], + "label": "transformDatatableToEsqlTable", + "description": [], + "signature": [ + "(results: ", + { + "pluginId": "expressions", + "scope": "common", + "docId": "kibExpressionsPluginApi", + "section": "def-common.Datatable", + "text": "Datatable" + }, + ") => ", + { + "pluginId": "stackAlerts", + "scope": "common", + "docId": "kibStackAlertsPluginApi", + "section": "def-common.EsqlTable", + "text": "EsqlTable" + } + ], + "path": "x-pack/plugins/stack_alerts/common/esql_query_utils.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "stackAlerts", + "id": "def-common.transformDatatableToEsqlTable.$1", + "type": "Object", + "tags": [], + "label": "results", + "description": [], + "signature": [ + { + "pluginId": "expressions", + "scope": "common", + "docId": "kibExpressionsPluginApi", + "section": "def-common.Datatable", + "text": "Datatable" + } + ], + "path": "x-pack/plugins/stack_alerts/common/esql_query_utils.ts", + "deprecated": false, + "trackAdoption": false, + "isRequired": true + } + ], + "returnComment": [], + "initialIsOpen": false + } + ], + "interfaces": [ + { + "parentPluginId": "stackAlerts", + "id": "def-common.EsqlTable", + "type": "Interface", + "tags": [], + "label": "EsqlTable", + "description": [], + "path": "x-pack/plugins/stack_alerts/common/esql_query_utils.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "stackAlerts", + "id": "def-common.EsqlTable.columns", + "type": "Array", + "tags": [], + "label": "columns", + "description": [], + "signature": [ + "EsqlResultColumn[]" + ], + "path": "x-pack/plugins/stack_alerts/common/esql_query_utils.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "stackAlerts", + "id": "def-common.EsqlTable.values", + "type": "Array", + "tags": [], + "label": "values", + "description": [], + "signature": [ + "EsqlResultRow[]" + ], + "path": "x-pack/plugins/stack_alerts/common/esql_query_utils.ts", + "deprecated": false, + "trackAdoption": false + } + ], + "initialIsOpen": false } ], - "interfaces": [], "enums": [], "misc": [ { diff --git a/api_docs/stack_alerts.mdx b/api_docs/stack_alerts.mdx index 546ab4089308b..598ea05dd18d8 100644 --- a/api_docs/stack_alerts.mdx +++ b/api_docs/stack_alerts.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/stackAlerts title: "stackAlerts" image: https://source.unsplash.com/400x175/?github description: API docs for the stackAlerts plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'stackAlerts'] --- import stackAlertsObj from './stack_alerts.devdocs.json'; @@ -21,7 +21,7 @@ Contact [@elastic/response-ops](https://github.com/orgs/elastic/teams/response-o | Public API count | Any count | Items lacking comments | Missing exports | |-------------------|-----------|------------------------|-----------------| -| 14 | 0 | 14 | 3 | +| 24 | 0 | 24 | 3 | ## Client @@ -44,6 +44,9 @@ Contact [@elastic/response-ops](https://github.com/orgs/elastic/teams/response-o ### Functions +### Interfaces + + ### Consts, variables and types diff --git a/api_docs/stack_connectors.mdx b/api_docs/stack_connectors.mdx index cfe538fc4b18e..cacc8c975df10 100644 --- a/api_docs/stack_connectors.mdx +++ b/api_docs/stack_connectors.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/stackConnectors title: "stackConnectors" image: https://source.unsplash.com/400x175/?github description: API docs for the stackConnectors plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'stackConnectors'] --- import stackConnectorsObj from './stack_connectors.devdocs.json'; diff --git a/api_docs/task_manager.mdx b/api_docs/task_manager.mdx index c110a53377d03..f3a1b5c7e0e57 100644 --- a/api_docs/task_manager.mdx +++ b/api_docs/task_manager.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/taskManager title: "taskManager" image: https://source.unsplash.com/400x175/?github description: API docs for the taskManager plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'taskManager'] --- import taskManagerObj from './task_manager.devdocs.json'; diff --git a/api_docs/telemetry.mdx b/api_docs/telemetry.mdx index 7bfe57d68a2d1..0d92ce6df2bc2 100644 --- a/api_docs/telemetry.mdx +++ b/api_docs/telemetry.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/telemetry title: "telemetry" image: https://source.unsplash.com/400x175/?github description: API docs for the telemetry plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'telemetry'] --- import telemetryObj from './telemetry.devdocs.json'; diff --git a/api_docs/telemetry_collection_manager.mdx b/api_docs/telemetry_collection_manager.mdx index 40acb98da6933..4e74bf052b9cb 100644 --- a/api_docs/telemetry_collection_manager.mdx +++ b/api_docs/telemetry_collection_manager.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/telemetryCollectionManager title: "telemetryCollectionManager" image: https://source.unsplash.com/400x175/?github description: API docs for the telemetryCollectionManager plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'telemetryCollectionManager'] --- import telemetryCollectionManagerObj from './telemetry_collection_manager.devdocs.json'; diff --git a/api_docs/telemetry_collection_xpack.mdx b/api_docs/telemetry_collection_xpack.mdx index 0df30daa7aa12..5eff47d932a72 100644 --- a/api_docs/telemetry_collection_xpack.mdx +++ b/api_docs/telemetry_collection_xpack.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/telemetryCollectionXpack title: "telemetryCollectionXpack" image: https://source.unsplash.com/400x175/?github description: API docs for the telemetryCollectionXpack plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'telemetryCollectionXpack'] --- import telemetryCollectionXpackObj from './telemetry_collection_xpack.devdocs.json'; diff --git a/api_docs/telemetry_management_section.mdx b/api_docs/telemetry_management_section.mdx index 7a11b41d310d4..384f4633571aa 100644 --- a/api_docs/telemetry_management_section.mdx +++ b/api_docs/telemetry_management_section.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/telemetryManagementSection title: "telemetryManagementSection" image: https://source.unsplash.com/400x175/?github description: API docs for the telemetryManagementSection plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'telemetryManagementSection'] --- import telemetryManagementSectionObj from './telemetry_management_section.devdocs.json'; diff --git a/api_docs/text_based_languages.devdocs.json b/api_docs/text_based_languages.devdocs.json index 85e21f93ca908..c44e1664a3fe1 100644 --- a/api_docs/text_based_languages.devdocs.json +++ b/api_docs/text_based_languages.devdocs.json @@ -279,6 +279,20 @@ "path": "packages/kbn-text-based-editor/src/text_based_languages_editor.tsx", "deprecated": false, "trackAdoption": false + }, + { + "parentPluginId": "textBasedLanguages", + "id": "def-public.TextBasedLanguagesEditorProps.hideRunQueryText", + "type": "CompoundType", + "tags": [], + "label": "hideRunQueryText", + "description": [], + "signature": [ + "boolean | undefined" + ], + "path": "packages/kbn-text-based-editor/src/text_based_languages_editor.tsx", + "deprecated": false, + "trackAdoption": false } ], "initialIsOpen": false diff --git a/api_docs/text_based_languages.mdx b/api_docs/text_based_languages.mdx index 0742546f60027..30272f75bfcf6 100644 --- a/api_docs/text_based_languages.mdx +++ b/api_docs/text_based_languages.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/textBasedLanguages title: "textBasedLanguages" image: https://source.unsplash.com/400x175/?github description: API docs for the textBasedLanguages plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'textBasedLanguages'] --- import textBasedLanguagesObj from './text_based_languages.devdocs.json'; @@ -21,7 +21,7 @@ Contact [@elastic/kibana-visualizations](https://github.com/orgs/elastic/teams/k | Public API count | Any count | Items lacking comments | Missing exports | |-------------------|-----------|------------------------|-----------------| -| 19 | 0 | 19 | 0 | +| 20 | 0 | 20 | 0 | ## Client diff --git a/api_docs/threat_intelligence.mdx b/api_docs/threat_intelligence.mdx index c7145498c1a5c..1d77c0df3a97c 100644 --- a/api_docs/threat_intelligence.mdx +++ b/api_docs/threat_intelligence.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/threatIntelligence title: "threatIntelligence" image: https://source.unsplash.com/400x175/?github description: API docs for the threatIntelligence plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'threatIntelligence'] --- import threatIntelligenceObj from './threat_intelligence.devdocs.json'; diff --git a/api_docs/timelines.mdx b/api_docs/timelines.mdx index bbc1eb06c8e39..23ceb4fe61e6a 100644 --- a/api_docs/timelines.mdx +++ b/api_docs/timelines.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/timelines title: "timelines" image: https://source.unsplash.com/400x175/?github description: API docs for the timelines plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'timelines'] --- import timelinesObj from './timelines.devdocs.json'; diff --git a/api_docs/transform.mdx b/api_docs/transform.mdx index e5d3181a1d8d6..bab5d6c094c68 100644 --- a/api_docs/transform.mdx +++ b/api_docs/transform.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/transform title: "transform" image: https://source.unsplash.com/400x175/?github description: API docs for the transform plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'transform'] --- import transformObj from './transform.devdocs.json'; diff --git a/api_docs/triggers_actions_ui.devdocs.json b/api_docs/triggers_actions_ui.devdocs.json index 9d84568f429d3..a153daf2744a9 100644 --- a/api_docs/triggers_actions_ui.devdocs.json +++ b/api_docs/triggers_actions_ui.devdocs.json @@ -803,6 +803,47 @@ "returnComment": [], "initialIsOpen": false }, + { + "parentPluginId": "triggersActionsUi", + "id": "def-public.getTimeOptions", + "type": "Function", + "tags": [], + "label": "getTimeOptions", + "description": [], + "signature": [ + "(unitSize: number) => { text: string; value: ", + { + "pluginId": "triggersActionsUi", + "scope": "public", + "docId": "kibTriggersActionsUiPluginApi", + "section": "def-public.TIME_UNITS", + "text": "TIME_UNITS" + }, + "; }[]" + ], + "path": "x-pack/plugins/triggers_actions_ui/public/common/lib/get_time_options.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "triggersActionsUi", + "id": "def-public.getTimeOptions.$1", + "type": "number", + "tags": [], + "label": "unitSize", + "description": [], + "signature": [ + "number" + ], + "path": "x-pack/plugins/triggers_actions_ui/public/common/lib/get_time_options.ts", + "deprecated": false, + "trackAdoption": false, + "isRequired": true + } + ], + "returnComment": [], + "initialIsOpen": false + }, { "parentPluginId": "triggersActionsUi", "id": "def-public.getTimeUnitLabel", @@ -5688,6 +5729,26 @@ "path": "x-pack/plugins/triggers_actions_ui/public/application/app.tsx", "deprecated": false, "trackAdoption": false + }, + { + "parentPluginId": "triggersActionsUi", + "id": "def-public.TriggersAndActionsUiServices.expressions", + "type": "Object", + "tags": [], + "label": "expressions", + "description": [], + "signature": [ + { + "pluginId": "expressions", + "scope": "public", + "docId": "kibExpressionsPluginApi", + "section": "def-public.ExpressionsStart", + "text": "ExpressionsStart" + } + ], + "path": "x-pack/plugins/triggers_actions_ui/public/application/app.tsx", + "deprecated": false, + "trackAdoption": false } ], "initialIsOpen": false diff --git a/api_docs/triggers_actions_ui.mdx b/api_docs/triggers_actions_ui.mdx index 51693988db001..5f23ec23ba53d 100644 --- a/api_docs/triggers_actions_ui.mdx +++ b/api_docs/triggers_actions_ui.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/triggersActionsUi title: "triggersActionsUi" image: https://source.unsplash.com/400x175/?github description: API docs for the triggersActionsUi plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'triggersActionsUi'] --- import triggersActionsUiObj from './triggers_actions_ui.devdocs.json'; @@ -21,7 +21,7 @@ Contact [@elastic/response-ops](https://github.com/orgs/elastic/teams/response-o | Public API count | Any count | Items lacking comments | Missing exports | |-------------------|-----------|------------------------|-----------------| -| 573 | 1 | 547 | 51 | +| 576 | 1 | 550 | 51 | ## Client diff --git a/api_docs/ui_actions.mdx b/api_docs/ui_actions.mdx index a60e9a0225c50..891ed57dca705 100644 --- a/api_docs/ui_actions.mdx +++ b/api_docs/ui_actions.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/uiActions title: "uiActions" image: https://source.unsplash.com/400x175/?github description: API docs for the uiActions plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'uiActions'] --- import uiActionsObj from './ui_actions.devdocs.json'; diff --git a/api_docs/ui_actions_enhanced.mdx b/api_docs/ui_actions_enhanced.mdx index 8acfb4007dac3..fa0e10091834f 100644 --- a/api_docs/ui_actions_enhanced.mdx +++ b/api_docs/ui_actions_enhanced.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/uiActionsEnhanced title: "uiActionsEnhanced" image: https://source.unsplash.com/400x175/?github description: API docs for the uiActionsEnhanced plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'uiActionsEnhanced'] --- import uiActionsEnhancedObj from './ui_actions_enhanced.devdocs.json'; diff --git a/api_docs/unified_doc_viewer.mdx b/api_docs/unified_doc_viewer.mdx index 603f48d60f203..39bdf05d8be5e 100644 --- a/api_docs/unified_doc_viewer.mdx +++ b/api_docs/unified_doc_viewer.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/unifiedDocViewer title: "unifiedDocViewer" image: https://source.unsplash.com/400x175/?github description: API docs for the unifiedDocViewer plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'unifiedDocViewer'] --- import unifiedDocViewerObj from './unified_doc_viewer.devdocs.json'; diff --git a/api_docs/unified_histogram.mdx b/api_docs/unified_histogram.mdx index 7b1d9e1b20dad..8ae211ab4a1fe 100644 --- a/api_docs/unified_histogram.mdx +++ b/api_docs/unified_histogram.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/unifiedHistogram title: "unifiedHistogram" image: https://source.unsplash.com/400x175/?github description: API docs for the unifiedHistogram plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'unifiedHistogram'] --- import unifiedHistogramObj from './unified_histogram.devdocs.json'; diff --git a/api_docs/unified_search.mdx b/api_docs/unified_search.mdx index fd7beddabd867..3eea6ef3a5403 100644 --- a/api_docs/unified_search.mdx +++ b/api_docs/unified_search.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/unifiedSearch title: "unifiedSearch" image: https://source.unsplash.com/400x175/?github description: API docs for the unifiedSearch plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'unifiedSearch'] --- import unifiedSearchObj from './unified_search.devdocs.json'; diff --git a/api_docs/unified_search_autocomplete.mdx b/api_docs/unified_search_autocomplete.mdx index a72a03bf4fac3..d66fa6a04e945 100644 --- a/api_docs/unified_search_autocomplete.mdx +++ b/api_docs/unified_search_autocomplete.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/unifiedSearch-autocomplete title: "unifiedSearch.autocomplete" image: https://source.unsplash.com/400x175/?github description: API docs for the unifiedSearch.autocomplete plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'unifiedSearch.autocomplete'] --- import unifiedSearchAutocompleteObj from './unified_search_autocomplete.devdocs.json'; diff --git a/api_docs/uptime.mdx b/api_docs/uptime.mdx index 62c01dfb2cc5f..3987d3bcc9316 100644 --- a/api_docs/uptime.mdx +++ b/api_docs/uptime.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/uptime title: "uptime" image: https://source.unsplash.com/400x175/?github description: API docs for the uptime plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'uptime'] --- import uptimeObj from './uptime.devdocs.json'; diff --git a/api_docs/url_forwarding.mdx b/api_docs/url_forwarding.mdx index 11d978023890f..5f956a0d5b10e 100644 --- a/api_docs/url_forwarding.mdx +++ b/api_docs/url_forwarding.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/urlForwarding title: "urlForwarding" image: https://source.unsplash.com/400x175/?github description: API docs for the urlForwarding plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'urlForwarding'] --- import urlForwardingObj from './url_forwarding.devdocs.json'; diff --git a/api_docs/usage_collection.mdx b/api_docs/usage_collection.mdx index 960eb658ca681..aaf47c8abd982 100644 --- a/api_docs/usage_collection.mdx +++ b/api_docs/usage_collection.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/usageCollection title: "usageCollection" image: https://source.unsplash.com/400x175/?github description: API docs for the usageCollection plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'usageCollection'] --- import usageCollectionObj from './usage_collection.devdocs.json'; diff --git a/api_docs/ux.mdx b/api_docs/ux.mdx index 15e9fd60eafed..993e491bb3987 100644 --- a/api_docs/ux.mdx +++ b/api_docs/ux.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/ux title: "ux" image: https://source.unsplash.com/400x175/?github description: API docs for the ux plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'ux'] --- import uxObj from './ux.devdocs.json'; diff --git a/api_docs/vis_default_editor.mdx b/api_docs/vis_default_editor.mdx index 59c3f306ced16..493ba55128160 100644 --- a/api_docs/vis_default_editor.mdx +++ b/api_docs/vis_default_editor.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/visDefaultEditor title: "visDefaultEditor" image: https://source.unsplash.com/400x175/?github description: API docs for the visDefaultEditor plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'visDefaultEditor'] --- import visDefaultEditorObj from './vis_default_editor.devdocs.json'; diff --git a/api_docs/vis_type_gauge.mdx b/api_docs/vis_type_gauge.mdx index 0010c70cfdbde..7ab3f9c575f7b 100644 --- a/api_docs/vis_type_gauge.mdx +++ b/api_docs/vis_type_gauge.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/visTypeGauge title: "visTypeGauge" image: https://source.unsplash.com/400x175/?github description: API docs for the visTypeGauge plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'visTypeGauge'] --- import visTypeGaugeObj from './vis_type_gauge.devdocs.json'; diff --git a/api_docs/vis_type_heatmap.mdx b/api_docs/vis_type_heatmap.mdx index 6173477d3c7a5..377532248eac0 100644 --- a/api_docs/vis_type_heatmap.mdx +++ b/api_docs/vis_type_heatmap.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/visTypeHeatmap title: "visTypeHeatmap" image: https://source.unsplash.com/400x175/?github description: API docs for the visTypeHeatmap plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'visTypeHeatmap'] --- import visTypeHeatmapObj from './vis_type_heatmap.devdocs.json'; diff --git a/api_docs/vis_type_pie.mdx b/api_docs/vis_type_pie.mdx index fc76ac9c6fc64..e0318e12ac9df 100644 --- a/api_docs/vis_type_pie.mdx +++ b/api_docs/vis_type_pie.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/visTypePie title: "visTypePie" image: https://source.unsplash.com/400x175/?github description: API docs for the visTypePie plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'visTypePie'] --- import visTypePieObj from './vis_type_pie.devdocs.json'; diff --git a/api_docs/vis_type_table.mdx b/api_docs/vis_type_table.mdx index ce5bbdddd2e36..a2ad41cc88773 100644 --- a/api_docs/vis_type_table.mdx +++ b/api_docs/vis_type_table.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/visTypeTable title: "visTypeTable" image: https://source.unsplash.com/400x175/?github description: API docs for the visTypeTable plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'visTypeTable'] --- import visTypeTableObj from './vis_type_table.devdocs.json'; diff --git a/api_docs/vis_type_timelion.mdx b/api_docs/vis_type_timelion.mdx index c44173caff05c..c6cad2abd1b16 100644 --- a/api_docs/vis_type_timelion.mdx +++ b/api_docs/vis_type_timelion.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/visTypeTimelion title: "visTypeTimelion" image: https://source.unsplash.com/400x175/?github description: API docs for the visTypeTimelion plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'visTypeTimelion'] --- import visTypeTimelionObj from './vis_type_timelion.devdocs.json'; diff --git a/api_docs/vis_type_timeseries.mdx b/api_docs/vis_type_timeseries.mdx index d61f09f713d1b..2359fb1e3d51d 100644 --- a/api_docs/vis_type_timeseries.mdx +++ b/api_docs/vis_type_timeseries.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/visTypeTimeseries title: "visTypeTimeseries" image: https://source.unsplash.com/400x175/?github description: API docs for the visTypeTimeseries plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'visTypeTimeseries'] --- import visTypeTimeseriesObj from './vis_type_timeseries.devdocs.json'; diff --git a/api_docs/vis_type_vega.mdx b/api_docs/vis_type_vega.mdx index bde589e42f805..a73a33c6af0ce 100644 --- a/api_docs/vis_type_vega.mdx +++ b/api_docs/vis_type_vega.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/visTypeVega title: "visTypeVega" image: https://source.unsplash.com/400x175/?github description: API docs for the visTypeVega plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'visTypeVega'] --- import visTypeVegaObj from './vis_type_vega.devdocs.json'; diff --git a/api_docs/vis_type_vislib.mdx b/api_docs/vis_type_vislib.mdx index 78696e8ff2b7d..f5e16234f7811 100644 --- a/api_docs/vis_type_vislib.mdx +++ b/api_docs/vis_type_vislib.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/visTypeVislib title: "visTypeVislib" image: https://source.unsplash.com/400x175/?github description: API docs for the visTypeVislib plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'visTypeVislib'] --- import visTypeVislibObj from './vis_type_vislib.devdocs.json'; diff --git a/api_docs/vis_type_xy.mdx b/api_docs/vis_type_xy.mdx index a98046d0fe69a..91ba1aeb857f8 100644 --- a/api_docs/vis_type_xy.mdx +++ b/api_docs/vis_type_xy.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/visTypeXy title: "visTypeXy" image: https://source.unsplash.com/400x175/?github description: API docs for the visTypeXy plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'visTypeXy'] --- import visTypeXyObj from './vis_type_xy.devdocs.json'; diff --git a/api_docs/visualizations.mdx b/api_docs/visualizations.mdx index bc11233812a61..cb7ba41730b13 100644 --- a/api_docs/visualizations.mdx +++ b/api_docs/visualizations.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/visualizations title: "visualizations" image: https://source.unsplash.com/400x175/?github description: API docs for the visualizations plugin -date: 2023-09-05 +date: 2023-09-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'visualizations'] --- import visualizationsObj from './visualizations.devdocs.json'; diff --git a/docs/api-generated/connectors/connector-apis-passthru.asciidoc b/docs/api-generated/connectors/connector-apis-passthru.asciidoc index f5128f88f1b1e..aefb065281d3a 100644 --- a/docs/api-generated/connectors/connector-apis-passthru.asciidoc +++ b/docs/api-generated/connectors/connector-apis-passthru.asciidoc @@ -1389,7 +1389,7 @@ Any modifications made to this file will be overwritten.

config_properties_index - Connector request properties for an index connector Up

Defines properties for connectors when type is .index.
-
executionTimeField (optional)
String Specifies a field that will contain the time the alert condition was detected.
+
executionTimeField (optional)
String A field that indicates when the document was indexed.
index
String The Elasticsearch index to be written to.
refresh (optional)
Boolean The refresh policy for the write request, which affects when changes are made visible to search. Refer to the refresh setting for Elasticsearch document APIs.
diff --git a/docs/management/connectors/action-types/index.asciidoc b/docs/management/connectors/action-types/index.asciidoc index 87c7494df23ea..5a09ab2d23c5f 100644 --- a/docs/management/connectors/action-types/index.asciidoc +++ b/docs/management/connectors/action-types/index.asciidoc @@ -3,13 +3,13 @@ ++++ Index ++++ +:frontmatter-description: Add a connector that can add documents to {es} indices. +:frontmatter-tags-products: [kibana] +:frontmatter-tags-content-type: [how-to] +:frontmatter-tags-user-goals: [configure] -An index connector indexes a document into {es}. -You can create index connectors in {kib} or by using the -<>. Alternatively, you can use the <>. -If you are running {kib} on-prem, you can also create more preconfigured index -connectors. +An index connector indexes a document into {es}. [float] [[define-index-ui]] @@ -26,72 +26,14 @@ image::management/connectors/images/index-connector.png[Index connector] [[index-connector-configuration]] ==== Connector configuration -Index connectors must have a name and an {es} index. You can optionally set the time field, which contains the -details about when each alert condition was detected. - -[float] -[[preconfigured-index-configuration]] -=== Create preconfigured connectors - -If you are running {kib} on-prem, you can define connectors by -adding `xpack.actions.preconfigured` settings to your `kibana.yml` file. -For example: - -[source,text] --- -xpack.actions.preconfigured: - my-index: - name: preconfigured-index-connector-type - actionTypeId: .index - config: - index: .kibana - executionTimeField: my-field --- - -For more information, go to <>. - -[float] -[[preconfigured-connector-alert-history]] -==== Preconfigured alert history {es} index connector - -preview::[] - -{kib} offers a preconfigured index connector to facilitate indexing active alert -data into {es}. - -To use this connector, set -<> to `true`. - -When you subsequently create rules, you can use the -`Alert history Elasticsearch index (preconfigured)` connector. - -[role="screenshot"] -image::images/pre-configured-alert-history-connector.png[Select pre-configured alert history connectors] - -Documents are indexed using a preconfigured schema that captures the -<> available for the rule. -By default, these documents are indexed into the `kibana-alert-history-default` -index, but you can specify a different index. Index names must start with -`kibana-alert-history-` to take advantage of the preconfigured alert history -index template. - -[IMPORTANT] -==== -* To write documents to the preconfigured index, you must have `all` or `write` -privileges to the `kibana-alert-history-*` indices. Refer to -<> for more information. -* The `kibana-alert-history-*` indices are not configured to use ILM so they must -be maintained manually. If the index size grows large, consider using the -{ref}/docs-delete-by-query.html[delete by query] API to clean up older documents -in the index. -==== +Index connectors must have a name and an {es} index. +You can optionally choose a field that indicates when the document was indexed. [float] [[index-action-configuration]] === Test connectors -You can test connectors with the <> or -as you're creating or editing the connector in {kib}. For example: +You can test connectors as you're creating or editing the connector in {kib}. For example: [role="screenshot"] image::management/connectors/images/index-params-test.png[Index params test] diff --git a/docs/management/connectors/action-types/opsgenie.asciidoc b/docs/management/connectors/action-types/opsgenie.asciidoc index 453aa8c00b811..e7cb784ca31fc 100644 --- a/docs/management/connectors/action-types/opsgenie.asciidoc +++ b/docs/management/connectors/action-types/opsgenie.asciidoc @@ -15,6 +15,7 @@ or as needed when you're creating a rule. For example: [role="screenshot"] image::management/connectors/images/opsgenie-connector.png[Opsgenie connector] +// NOTE: This is an autogenerated screenshot. Do not edit it directly. [float] [[opsgenie-connector-configuration]] @@ -28,34 +29,6 @@ URL:: The Opsgenie URL. For example, https://api.opsgenie.com or https://api.eu. NOTE: If you are using the <> setting, make sure the hostname is added to the allowed hosts. API Key:: The Opsgenie API authentication key for HTTP Basic authentication. For more details about generating Opsgenie API keys, refer to https://support.atlassian.com/opsgenie/docs/create-a-default-api-integration/[Opsgenie documentation]. -[float] -[[preconfigured-opsgenie-configuration]] -=== Create preconfigured connectors - -If you are running {kib} on-prem, you can define connectors by -adding `xpack.actions.preconfigured` settings to your `kibana.yml` file. -For example: - -[source,text] --- -xpack.actions.preconfigured: - my-opsgenie: - name: preconfigured-opsgenie-connector-type - actionTypeId: .opsgenie - config: - apiUrl: https://api.opsgenie.com - secrets: - apiKey: apikey --- - -Config defines information for the connector type. - -`apiUrl`:: A string that corresponds to *URL*. - -Secrets defines sensitive information for the connector type. - -`apiKey`:: A string that corresponds to *API Key*. - [float] [[opsgenie-action-configuration]] === Test connectors @@ -65,6 +38,7 @@ as you're creating or editing the connector in {kib}. For example: [role="screenshot"] image::management/connectors/images/opsgenie-params-test.png[Opsgenie params test] +// NOTE: This is an autogenerated screenshot. Do not edit it directly. The Opsgenie connector supports two types of actions: Create alert and Close alert. The properties supported for each action are different because Opsgenie defines different properties for each operation. diff --git a/docs/management/connectors/action-types/pagerduty.asciidoc b/docs/management/connectors/action-types/pagerduty.asciidoc index ed98e4259d0eb..a82a9639beee6 100644 --- a/docs/management/connectors/action-types/pagerduty.asciidoc +++ b/docs/management/connectors/action-types/pagerduty.asciidoc @@ -15,6 +15,7 @@ or as needed when you're creating a rule. For example: [role="screenshot"] image::management/connectors/images/pagerduty-connector.png[PagerDuty connector] +// NOTE: This is an autogenerated screenshot. Do not edit it directly. [float] [[pagerduty-connector-configuration]] @@ -63,6 +64,7 @@ as you're creating or editing the connector in {kib}. For example: [role="screenshot"] image::management/connectors/images/pagerduty-params-test.png[PagerDuty params test] +// NOTE: This is an autogenerated screenshot. Do not edit it directly. PagerDuty actions have the following properties. diff --git a/docs/management/connectors/images/opsgenie-connector.png b/docs/management/connectors/images/opsgenie-connector.png index ccb08b27d6934..29b9db891a5d5 100644 Binary files a/docs/management/connectors/images/opsgenie-connector.png and b/docs/management/connectors/images/opsgenie-connector.png differ diff --git a/docs/management/connectors/images/opsgenie-params-test.png b/docs/management/connectors/images/opsgenie-params-test.png index f23cff704f440..c727579f89cad 100644 Binary files a/docs/management/connectors/images/opsgenie-params-test.png and b/docs/management/connectors/images/opsgenie-params-test.png differ diff --git a/docs/management/connectors/images/pagerduty-connector.png b/docs/management/connectors/images/pagerduty-connector.png index 2e5d240f42c11..6613c1321f6b5 100644 Binary files a/docs/management/connectors/images/pagerduty-connector.png and b/docs/management/connectors/images/pagerduty-connector.png differ diff --git a/docs/management/connectors/images/pagerduty-params-test.png b/docs/management/connectors/images/pagerduty-params-test.png index 3fb4a9bb5dc82..b12f599b58bf7 100644 Binary files a/docs/management/connectors/images/pagerduty-params-test.png and b/docs/management/connectors/images/pagerduty-params-test.png differ diff --git a/docs/management/connectors/images/pre-configured-alert-history-connector.png b/docs/management/connectors/images/pre-configured-alert-history-connector.png index 98cfbd0f39f7b..dd72a96a761c9 100644 Binary files a/docs/management/connectors/images/pre-configured-alert-history-connector.png and b/docs/management/connectors/images/pre-configured-alert-history-connector.png differ diff --git a/docs/management/connectors/pre-configured-connectors.asciidoc b/docs/management/connectors/pre-configured-connectors.asciidoc index 3584207a88364..443fda6cba218 100644 --- a/docs/management/connectors/pre-configured-connectors.asciidoc +++ b/docs/management/connectors/pre-configured-connectors.asciidoc @@ -57,35 +57,100 @@ Sensitive properties, such as passwords, can also be stored in the <>. ============================================== +[float] +[[managing-pre-configured-connectors]] +=== View preconfigured connectors + +When you open the main menu, click *{stack-manage-app} > {connectors-ui}*. +Preconfigured connectors appear regardless of which space you are in. +They are tagged as “preconfigured”, and you cannot delete them. + +[role="screenshot"] +image::images/preconfigured-connectors-managing.png[Connectors managing tab with pre-configured] + +Clicking a preconfigured connector shows the description, but not the configuration. + [float] [[build-in-preconfigured-connectors]] === Built-in preconfigured connectors {kib} provides the following built-in preconfigured connectors: -* <> +* <> * <> [float] -[[managing-pre-configured-connectors]] -=== View preconfigured connectors +[[preconfigured-connector-alert-history]] +==== Preconfigured alert history {es} index connector -When you open the main menu, click *{stack-manage-app} > {connectors-ui}*. -Preconfigured connectors appear regardless of which space you are -in. They are tagged as “preconfigured”, and you cannot delete them. +preview::[] + +{kib} offers a preconfigured index connector to facilitate indexing active alert data into {es}. +To use this connector, set <> to `true`. + +When you subsequently create rules, you can use the `Alert history Elasticsearch index (preconfigured)` connector. [role="screenshot"] -image::images/preconfigured-connectors-managing.png[Connectors managing tab with pre-configured] +image::images/pre-configured-alert-history-connector.png[Creating a rule action that uses the pre-configured alert history connector] + +Documents are indexed using a preconfigured schema that captures the <> available for the rule. +By default, these documents are indexed into the `kibana-alert-history-default` index, but you can specify a different index. +Index names must start with `kibana-alert-history-` to take advantage of the preconfigured alert history index template. -Clicking a preconfigured connector shows the description, but not the -configuration. +[IMPORTANT] +==== +* To write documents to the preconfigured index, you must have `all` or `write` privileges to the `kibana-alert-history-*` indices. +* The `kibana-alert-history-*` indices are not configured to use ILM so they must be maintained manually. If the index size grows large, consider using the {ref}/docs-delete-by-query.html[delete by query] API to clean up older documents in the index. +==== [float] === Examples +* <> +* <> * <> * <> + +[float] +[[preconfigured-index-configuration]] +==== Index connectors + +The following example creates a <>: + +[source,text] +-- +xpack.actions.preconfigured: + my-index: + name: preconfigured-index-connector-type + actionTypeId: .index + config: + index: .kibana <1> + executionTimeField: my-field <2> +-- +<1> The {es} index to be written to. +<2> A field that indicates when the document was indexed. + +[float] +[[preconfigured-opsgenie-configuration]] +==== {opsgenie} connectors + +The following example creates an <>: + +[source,text] +-- +xpack.actions.preconfigured: + my-opsgenie: + name: preconfigured-opsgenie-connector-type + actionTypeId: .opsgenie + config: + apiUrl: https://api.opsgenie.com <1> + secrets: + apiKey: apikey <2> +-- +<1> The {opsgenie} URL. +<2> The {opsgenie} API authentication key for HTTP basic authentication. + [float] [[preconfigured-server-log-configuration]] ==== Server log connectors diff --git a/docs/settings/alert-action-settings.asciidoc b/docs/settings/alert-action-settings.asciidoc index c48483224ec52..c7a43932fa1f8 100644 --- a/docs/settings/alert-action-settings.asciidoc +++ b/docs/settings/alert-action-settings.asciidoc @@ -252,9 +252,40 @@ Specifies configuration details that are specific to the type of preconfigured c The type of preconfigured connector. For example: `.email`, `.index`, `.opsgenie`, `.server-log`, `.resilient`, `.slack`, and `.webhook`. +`xpack.actions.preconfigured..config`:: +The configuration details, which are specific to the type of preconfigured connector. + +`xpack.actions.preconfigured..config.apiUrl`:: +A configuration URL that varies by connector: ++ +-- +* For an <>, specifies the {opsgenie} URL. For example, `https://api.opsgenie.com` or `https://api.eu.opsgenie.com`. + +NOTE: If you are using the `xpack.actions.allowedHosts` setting, make sure the hostname in the URL is added to the allowed hosts. +-- + +`xpack.actions.preconfigured..config.executionTimeField`:: +For an <>, a field that indicates when the document was indexed. + +`xpack.actions.preconfigured..config.index`:: +For an <>, specifies the {es} index. + `xpack.actions.preconfigured..name`:: The name of the preconfigured connector. +`xpack.actions.preconfigured..secrets`:: +Sensitive configuration details, such as username, password, and keys, which are specific to the connector type. ++ +TIP: Sensitive properties, such as passwords, should be stored in the <>. + +`xpack.actions.preconfigured..secrets.apikey`:: +An API key secret that varies by connector: ++ +-- +* For an <>, specifies the {opsgenie} API authentication key for HTTP basic authentication. +-- + + [float] [[alert-settings]] === Alerting settings diff --git a/package.json b/package.json index 06e36a7baf297..80d1b5b6faf59 100644 --- a/package.json +++ b/package.json @@ -100,7 +100,7 @@ "@elastic/datemath": "5.0.3", "@elastic/elasticsearch": "npm:@elastic/elasticsearch-canary@8.9.1-canary.1", "@elastic/ems-client": "8.4.0", - "@elastic/eui": "87.2.0", + "@elastic/eui": "88.1.0", "@elastic/filesaver": "1.1.2", "@elastic/node-crypto": "1.2.1", "@elastic/numeral": "^2.5.1", @@ -841,6 +841,7 @@ "core-js": "^3.31.0", "cronstrue": "^1.51.0", "css-box-model": "^1.2.1", + "css.escape": "^1.5.1", "cuid": "^2.1.8", "cytoscape": "^3.10.0", "cytoscape-dagre": "^2.2.2", diff --git a/packages/kbn-check-mappings-update-cli/current_mappings.json b/packages/kbn-check-mappings-update-cli/current_mappings.json index c2e1b05850689..4e0e5a1028fa1 100644 --- a/packages/kbn-check-mappings-update-cli/current_mappings.json +++ b/packages/kbn-check-mappings-update-cli/current_mappings.json @@ -616,6 +616,10 @@ } } }, + "apm-indices": { + "dynamic": false, + "properties": {} + }, "tag": { "properties": { "name": { @@ -2987,6 +2991,14 @@ } } }, + "policy-settings-protection-updates-note": { + "properties": { + "note": { + "type": "text", + "index": false + } + } + }, "infrastructure-ui-source": { "dynamic": false, "properties": {} @@ -3031,10 +3043,6 @@ } } }, - "apm-indices": { - "dynamic": false, - "properties": {} - }, "apm-telemetry": { "dynamic": false, "properties": {} diff --git a/packages/kbn-doc-links/src/get_doc_links.ts b/packages/kbn-doc-links/src/get_doc_links.ts index a8d63137fa0a9..147b26fc6e03a 100644 --- a/packages/kbn-doc-links/src/get_doc_links.ts +++ b/packages/kbn-doc-links/src/get_doc_links.ts @@ -552,7 +552,7 @@ export const getDocLinks = ({ kibanaBranch }: GetDocLinkOptions): DocLinks => { maintenanceWindows: `${KIBANA_DOCS}maintenance-windows.html`, pagerDutyAction: `${KIBANA_DOCS}pagerduty-action-type.html`, preconfiguredConnectors: `${KIBANA_DOCS}pre-configured-connectors.html`, - preconfiguredAlertHistoryConnector: `${KIBANA_DOCS}index-action-type.html#preconfigured-connector-alert-history`, + preconfiguredAlertHistoryConnector: `${KIBANA_DOCS}pre-configured-connectors.html#preconfigured-connector-alert-history`, serviceNowAction: `${KIBANA_DOCS}servicenow-action-type.html#configuring-servicenow`, serviceNowSIRAction: `${KIBANA_DOCS}servicenow-sir-action-type.html`, setupPrerequisites: `${KIBANA_DOCS}alerting-setup.html#alerting-prerequisites`, diff --git a/packages/kbn-es/src/utils/docker.ts b/packages/kbn-es/src/utils/docker.ts index 01db89a14c6ab..7a014d9fc19b9 100644 --- a/packages/kbn-es/src/utils/docker.ts +++ b/packages/kbn-es/src/utils/docker.ts @@ -10,11 +10,16 @@ import execa from 'execa'; import fs from 'fs'; import Fsp from 'fs/promises'; import { resolve, basename, join } from 'path'; -import { Client, HttpConnection } from '@elastic/elasticsearch'; +import { Client, ClientOptions, HttpConnection } from '@elastic/elasticsearch'; import { ToolingLog } from '@kbn/tooling-log'; import { kibanaPackageJson as pkg, REPO_ROOT } from '@kbn/repo-info'; -import { ES_P12_PASSWORD, ES_P12_PATH } from '@kbn/dev-utils'; +import { + CA_CERT_PATH, + ES_P12_PASSWORD, + ES_P12_PATH, + kibanaDevServiceAccount, +} from '@kbn/dev-utils'; import { createCliError } from '../errors'; import { EsClusterExecOptions } from '../cluster_exec_options'; @@ -547,19 +552,21 @@ export async function runServerlessEsNode( ); } -function getESClient( - { node }: { node: string } = { node: `http://localhost:${DEFAULT_PORT}` } -): Client { +function getESClient(clientOptions: ClientOptions): Client { return new Client({ - node, Connection: HttpConnection, + ...clientOptions, }); } const delay = (ms: number) => new Promise((res) => setTimeout(res, ms)); -async function waitUntilClusterReady(timeoutMs = 60 * 1000): Promise { +async function waitUntilClusterReady( + clientOptions: ClientOptions, + timeoutMs = 60 * 1000 +): Promise { const started = Date.now(); - const client = getESClient(); + const client = getESClient(clientOptions); + while (started + timeoutMs > Date.now()) { try { await client.info(); @@ -579,6 +586,7 @@ export async function runServerlessCluster(log: ToolingLog, options: ServerlessO await setupDocker({ log, image, options }); const volumeCmd = await setupServerlessVolumes(log, options); + const portCmd = resolvePort(options); const nodeNames = await Promise.all( SERVERLESS_NODES.map(async (node, i) => { @@ -593,7 +601,7 @@ export async function runServerlessCluster(log: ToolingLog, options: ServerlessO ), options ), - i === 0 ? resolvePort(options) : [], + i === 0 ? portCmd : [], volumeCmd ), }); @@ -621,7 +629,30 @@ export async function runServerlessCluster(log: ToolingLog, options: ServerlessO if (options.waitForReady) { log.info('Waiting until ES is ready to serve requests...'); - await waitUntilClusterReady(); + + const esNodeUrl = `${options.ssl ? 'https' : 'http'}://${portCmd[1].substring( + 0, + portCmd[1].lastIndexOf(':') + )}`; + + await waitUntilClusterReady({ + node: esNodeUrl, + ...(options.ssl + ? { + auth: { bearer: kibanaDevServiceAccount.token }, + tls: { + ca: [fs.readFileSync(CA_CERT_PATH)], + // NOTE: Even though we've added ca into the tls options, we are using 127.0.0.1 instead of localhost + // for the ip which is not validated. As such we are getting the error + // Hostname/IP does not match certificate's altnames: IP: 127.0.0.1 is not in the cert's list: + // To work around that we are overriding the function checkServerIdentity too + checkServerIdentity: () => { + return undefined; + }, + }, + } + : {}), + }); log.success('ES is ready'); } diff --git a/packages/kbn-eslint-plugin-telemetry/helpers/check_node_for_existing_data_test_subj_prop.ts b/packages/kbn-eslint-plugin-telemetry/helpers/check_node_for_existing_data_test_subj_prop.ts index b739dc5116c1c..ef0e32c1d2755 100644 --- a/packages/kbn-eslint-plugin-telemetry/helpers/check_node_for_existing_data_test_subj_prop.ts +++ b/packages/kbn-eslint-plugin-telemetry/helpers/check_node_for_existing_data_test_subj_prop.ts @@ -37,7 +37,7 @@ export function checkNodeForExistingDataTestSubjProp( const variable = getScope().variables.find((v) => v.name === name); // the variable definition of the spreaded variable return variable && variable.defs.length > 0 - ? variable.defs[0].node.init.properties.find((property: TSESTree.Property) => { + ? variable.defs[0].node.init?.properties.find((property: TSESTree.Property) => { if ('value' in property.key) { return property.key.value === 'data-test-subj'; } diff --git a/packages/kbn-eslint-plugin-telemetry/rules/event_generating_elements_should_be_instrumented.test.ts b/packages/kbn-eslint-plugin-telemetry/rules/event_generating_elements_should_be_instrumented.test.ts index c8829f05efd21..f08cfa26cbc90 100644 --- a/packages/kbn-eslint-plugin-telemetry/rules/event_generating_elements_should_be_instrumented.test.ts +++ b/packages/kbn-eslint-plugin-telemetry/rules/event_generating_elements_should_be_instrumented.test.ts @@ -63,7 +63,8 @@ for (const [name, tester] of [tsTester, babelTester]) { ], output: `<${element} data-test-subj="Value${element .replace('Eui', '') - .replace('Empty', '')}">Value`, + .replace('Empty', '') + .replace('Icon', '')}">Value`, })), } ); diff --git a/packages/kbn-eslint-plugin-telemetry/rules/event_generating_elements_should_be_instrumented.ts b/packages/kbn-eslint-plugin-telemetry/rules/event_generating_elements_should_be_instrumented.ts index d2069d2845e59..7242ff1645f5e 100644 --- a/packages/kbn-eslint-plugin-telemetry/rules/event_generating_elements_should_be_instrumented.ts +++ b/packages/kbn-eslint-plugin-telemetry/rules/event_generating_elements_should_be_instrumented.ts @@ -17,6 +17,7 @@ import { getFunctionName } from '../helpers/get_function_name'; export const EVENT_GENERATING_ELEMENTS = [ 'EuiButton', 'EuiButtonEmpty', + 'EuiButtonIcon', 'EuiLink', 'EuiFieldText', 'EuiFieldSearch', @@ -74,7 +75,7 @@ export const EventGeneratingElementsShouldBeInstrumented: Rule.RuleModule = { const intent = getIntentFromNode(parent); // 4. The element name that generates the events - const element = name.replace('Eui', '').replace('Empty', ''); + const element = name.replace('Eui', '').replace('Empty', '').replace('Icon', ''); const suggestion = `${appName}${componentName}${intent}${element}`; // 'o11yHeaderActionsSubmitButton' diff --git a/packages/kbn-search-api-panels/types.ts b/packages/kbn-search-api-panels/types.ts index 63edec82c345d..5aba2d7b46bc0 100644 --- a/packages/kbn-search-api-panels/types.ts +++ b/packages/kbn-search-api-panels/types.ts @@ -24,6 +24,8 @@ export interface LanguageDefinitionSnippetArguments { apiKey: string; indexName?: string; cloudId?: string; + ingestPipeline?: string; + extraIngestDocumentValues?: Record; } type CodeSnippet = string | ((args: LanguageDefinitionSnippetArguments) => string); diff --git a/packages/kbn-test/src/es/test_es_cluster.ts b/packages/kbn-test/src/es/test_es_cluster.ts index 580840b6b35a8..31efd5ef709e8 100644 --- a/packages/kbn-test/src/es/test_es_cluster.ts +++ b/packages/kbn-test/src/es/test_es_cluster.ts @@ -238,6 +238,7 @@ export function createTestEsCluster< background: true, files, kill: true, // likely don't need this but avoids any issues where the ESS cluster wasn't cleaned up + waitForReady: true, }); } else if (Path.isAbsolute(esFrom)) { installPath = esFrom; diff --git a/packages/kbn-text-based-editor/index.ts b/packages/kbn-text-based-editor/index.ts index fd7b19839b87f..01f106af6639f 100644 --- a/packages/kbn-text-based-editor/index.ts +++ b/packages/kbn-text-based-editor/index.ts @@ -7,6 +7,7 @@ */ export type { TextBasedLanguagesEditorProps } from './src/text_based_languages_editor'; +export { fetchFieldsFromESQL } from './src/fetch_fields_from_esql'; import { TextBasedLanguagesEditor } from './src/text_based_languages_editor'; // React.lazy support diff --git a/packages/kbn-text-based-editor/src/editor_footer.tsx b/packages/kbn-text-based-editor/src/editor_footer.tsx index 6f1e6cdd0b130..f89a14d06f106 100644 --- a/packages/kbn-text-based-editor/src/editor_footer.tsx +++ b/packages/kbn-text-based-editor/src/editor_footer.tsx @@ -155,6 +155,7 @@ interface EditorFooterProps { detectTimestamp: boolean; onErrorClick: (error: MonacoError) => void; refreshErrors: () => void; + hideRunQueryText?: boolean; } export const EditorFooter = memo(function EditorFooter({ @@ -165,6 +166,7 @@ export const EditorFooter = memo(function EditorFooter({ detectTimestamp, onErrorClick, refreshErrors, + hideRunQueryText, }: EditorFooterProps) { const [isPopoverOpen, setIsPopoverOpen] = useState(false); return ( @@ -235,27 +237,29 @@ export const EditorFooter = memo(function EditorFooter({ - - - - -

- {i18n.translate('textBasedEditor.query.textBasedLanguagesEditor.runQuery', { - defaultMessage: 'Run query', - })} -

-
-
- - {`${COMMAND_KEY} + Enter`} - -
-
+ {!hideRunQueryText && ( + + + + +

+ {i18n.translate('textBasedEditor.query.textBasedLanguagesEditor.runQuery', { + defaultMessage: 'Run query', + })} +

+
+
+ + {`${COMMAND_KEY} + Enter`} + +
+
+ )} ); }); diff --git a/packages/kbn-text-based-editor/src/fetch_fields_from_esql.ts b/packages/kbn-text-based-editor/src/fetch_fields_from_esql.ts index b847e4cb0bb43..7b9ebd66d76c6 100644 --- a/packages/kbn-text-based-editor/src/fetch_fields_from_esql.ts +++ b/packages/kbn-text-based-editor/src/fetch_fields_from_esql.ts @@ -8,7 +8,7 @@ import { pluck } from 'rxjs/operators'; import { lastValueFrom } from 'rxjs'; -import { Query, AggregateQuery } from '@kbn/es-query'; +import { Query, AggregateQuery, TimeRange } from '@kbn/es-query'; import type { ExpressionsStart } from '@kbn/expressions-plugin/public'; import type { Datatable } from '@kbn/expressions-plugin/public'; import { textBasedQueryStateToAstWithValidation } from '@kbn/data-plugin/common'; @@ -20,9 +20,14 @@ interface TextBasedLanguagesErrorResponse { type: 'error'; } -export function fetchFieldsFromESQL(query: Query | AggregateQuery, expressions: ExpressionsStart) { +export function fetchFieldsFromESQL( + query: Query | AggregateQuery, + expressions: ExpressionsStart, + time?: TimeRange +) { return textBasedQueryStateToAstWithValidation({ query, + time, }) .then((ast) => { if (ast) { diff --git a/packages/kbn-text-based-editor/src/text_based_languages_editor.test.tsx b/packages/kbn-text-based-editor/src/text_based_languages_editor.test.tsx index 4e3853970d7a2..0be4c38eed749 100644 --- a/packages/kbn-text-based-editor/src/text_based_languages_editor.test.tsx +++ b/packages/kbn-text-based-editor/src/text_based_languages_editor.test.tsx @@ -242,4 +242,27 @@ describe('TextBasedLanguagesEditor', () => { ).toBe('1 line'); }); }); + + it('should render the run query text', async () => { + const newProps = { + ...props, + isCodeEditorExpanded: true, + }; + await act(async () => { + const component = mount(renderTextBasedLanguagesEditorComponent({ ...newProps })); + expect(component.find('[data-test-subj="TextBasedLangEditor-run-query"]').length).not.toBe(0); + }); + }); + + it('should not render the run query text if the hideRunQueryText prop is set to true', async () => { + const newProps = { + ...props, + isCodeEditorExpanded: true, + hideRunQueryText: true, + }; + await act(async () => { + const component = mount(renderTextBasedLanguagesEditorComponent({ ...newProps })); + expect(component.find('[data-test-subj="TextBasedLangEditor-run-query"]').length).toBe(0); + }); + }); }); diff --git a/packages/kbn-text-based-editor/src/text_based_languages_editor.tsx b/packages/kbn-text-based-editor/src/text_based_languages_editor.tsx index 5eb83f625493a..3aada71f81ab0 100644 --- a/packages/kbn-text-based-editor/src/text_based_languages_editor.tsx +++ b/packages/kbn-text-based-editor/src/text_based_languages_editor.tsx @@ -75,6 +75,7 @@ export interface TextBasedLanguagesEditorProps { isDarkMode?: boolean; dataTestSubj?: string; hideMinimizeButton?: boolean; + hideRunQueryText?: boolean; } interface TextBasedEditorDeps { @@ -120,6 +121,7 @@ export const TextBasedLanguagesEditor = memo(function TextBasedLanguagesEditor({ isDisabled, isDarkMode, hideMinimizeButton, + hideRunQueryText, dataTestSubj, }: TextBasedLanguagesEditorProps) { const { euiTheme } = useEuiTheme(); @@ -781,6 +783,7 @@ export const TextBasedLanguagesEditor = memo(function TextBasedLanguagesEditor({ onErrorClick={onErrorClick} refreshErrors={onTextLangQuerySubmit} detectTimestamp={detectTimestamp} + hideRunQueryText={hideRunQueryText} /> )} {isCodeEditorExpanded && ( diff --git a/renovate.json b/renovate.json index cab03197e4c42..7d6ccf6a22c88 100644 --- a/renovate.json +++ b/renovate.json @@ -278,6 +278,7 @@ { "groupName": "platform security modules", "matchPackageNames": [ + "css.escape", "node-forge", "formik", "@types/node-forge", @@ -610,4 +611,4 @@ "enabled": true } ] -} +} \ No newline at end of file diff --git a/src/core/server/integration_tests/saved_objects/migrations/group2/check_registered_types.test.ts b/src/core/server/integration_tests/saved_objects/migrations/group2/check_registered_types.test.ts index 6bea2a8d7f2e2..43890b88dbdb5 100644 --- a/src/core/server/integration_tests/saved_objects/migrations/group2/check_registered_types.test.ts +++ b/src/core/server/integration_tests/saved_objects/migrations/group2/check_registered_types.test.ts @@ -125,6 +125,7 @@ describe('checking migration metadata changes on all registered SO types', () => "osquery-pack": "6ab4358ca4304a12dcfc1777c8135b75cffb4397", "osquery-pack-asset": "b14101d3172c4b60eb5404696881ce5275c84152", "osquery-saved-query": "44f1161e165defe3f9b6ad643c68c542a765fcdb", + "policy-settings-protection-updates-note": "33924bb246f9e5bcb876109cc83e3c7a28308352", "query": "21cbbaa09abb679078145ce90087b1e88b7eae95", "risk-engine-configuration": "b105d4a3c6adce40708d729d12e5ef3c8fbd9508", "rules-settings": "892a2918ebaeba809a612b8d97cec0b07c800b5f", diff --git a/src/core/server/integration_tests/saved_objects/migrations/group3/type_registrations.test.ts b/src/core/server/integration_tests/saved_objects/migrations/group3/type_registrations.test.ts index 3235c6cfa057e..61294c22a160e 100644 --- a/src/core/server/integration_tests/saved_objects/migrations/group3/type_registrations.test.ts +++ b/src/core/server/integration_tests/saved_objects/migrations/group3/type_registrations.test.ts @@ -96,6 +96,7 @@ const previouslyRegisteredTypes = [ 'osquery-saved-query', 'osquery-usage-metric', 'osquery-manager-usage-metric', + 'policy-settings-protection-updates-note', 'query', 'rules-settings', 'sample-data-telemetry', diff --git a/src/core/server/integration_tests/saved_objects/migrations/group5/dot_kibana_split.test.ts b/src/core/server/integration_tests/saved_objects/migrations/group5/dot_kibana_split.test.ts index 32ac61f0d2711..6581541e70244 100644 --- a/src/core/server/integration_tests/saved_objects/migrations/group5/dot_kibana_split.test.ts +++ b/src/core/server/integration_tests/saved_objects/migrations/group5/dot_kibana_split.test.ts @@ -245,6 +245,7 @@ describe('split .kibana index into multiple system indices', () => { "osquery-pack", "osquery-pack-asset", "osquery-saved-query", + "policy-settings-protection-updates-note", "query", "risk-engine-configuration", "rules-settings", diff --git a/src/dev/license_checker/config.ts b/src/dev/license_checker/config.ts index c239333d00590..448c7f900ffd1 100644 --- a/src/dev/license_checker/config.ts +++ b/src/dev/license_checker/config.ts @@ -85,7 +85,7 @@ export const LICENSE_OVERRIDES = { 'jsts@1.6.2': ['Eclipse Distribution License - v 1.0'], // cf. https://github.com/bjornharrtell/jsts '@mapbox/jsonlint-lines-primitives@2.0.2': ['MIT'], // license in readme https://github.com/tmcw/jsonlint '@elastic/ems-client@8.4.0': ['Elastic License 2.0'], - '@elastic/eui@87.2.0': ['SSPL-1.0 OR Elastic License 2.0'], + '@elastic/eui@88.1.0': ['SSPL-1.0 OR Elastic License 2.0'], 'language-subtag-registry@0.3.21': ['CC-BY-4.0'], // retired ODC‑By license https://github.com/mattcg/language-subtag-registry 'buffers@0.1.1': ['MIT'], // license in importing module https://www.npmjs.com/package/binary }; diff --git a/src/plugins/console/public/lib/autocomplete/autocomplete.ts b/src/plugins/console/public/lib/autocomplete/autocomplete.ts index 04634e635ac12..167a0e0ab1bd3 100644 --- a/src/plugins/console/public/lib/autocomplete/autocomplete.ts +++ b/src/plugins/console/public/lib/autocomplete/autocomplete.ts @@ -1056,6 +1056,12 @@ export default function ({ return context; } + const t = editor.getTokenAt(pos); + if (t && t.type === 'punctuation.end_triple_quote' && pos.column !== t.position.column + 3) { + // skip to populate context as the current position is not on the edge of end_triple_quote + return context; + } + // needed for scope linking + global term resolving context.endpointComponentResolver = getEndpointBodyCompleteComponents; context.globalComponentResolver = getGlobalAutocompleteComponents; diff --git a/src/plugins/console/server/lib/spec_definitions/js/search.ts b/src/plugins/console/server/lib/spec_definitions/js/search.ts index 25e1a782fa0a6..6dc30ba7f8906 100644 --- a/src/plugins/console/server/lib/spec_definitions/js/search.ts +++ b/src/plugins/console/server/lib/spec_definitions/js/search.ts @@ -222,6 +222,37 @@ export const search = (specService: SpecDefinitionsService) => { timeout: '1s', version: { __one_of: [true, false] }, track_total_hits: { __one_of: [true, false] }, + knn: { + __template: { + field: '', + k: 10, + num_candidates: 100, + }, + __one_of: [ + { + field: '{field}', + filter: { __scope_link: 'GLOBAL.filter' }, + k: 10, + num_candidates: 100, + query_vector: [], + query_vector_builder: {}, + similarity: { __one_of: ['l2_norm', 'cosine', 'dot_product'] }, + boost: 1.0, + }, + [ + { + field: '{field}', + filter: { __scope_link: 'GLOBAL.filter' }, + k: 10, + num_candidates: 100, + query_vector: [], + query_vector_builder: {}, + similarity: { __one_of: ['l2_norm', 'cosine', 'dot_product'] }, + boost: 1.0, + }, + ], + ], + }, }, }); diff --git a/src/plugins/data/common/search/aggs/buckets/_terms_other_bucket_helper.test.ts b/src/plugins/data/common/search/aggs/buckets/_terms_other_bucket_helper.test.ts index 981ff3664fbec..b68893847ed64 100644 --- a/src/plugins/data/common/search/aggs/buckets/_terms_other_bucket_helper.test.ts +++ b/src/plugins/data/common/search/aggs/buckets/_terms_other_bucket_helper.test.ts @@ -545,6 +545,119 @@ describe('Terms Agg Other bucket helper', () => { expect(agg).toEqual(false); }); + + test('returns true when nested filter agg has buckets', () => { + const aggConfigs = getAggConfigs([ + { + id: '0', + type: BUCKET_TYPES.FILTERS, + params: [ + { + input: { + language: 'kuery', + query: '', + }, + label: '', + }, + ], + }, + ...nestedTerm.aggs, + ]); + + const nestedTermResponseWithRootFilter = wrapResponse({ + '0': { + buckets: { + '*': { + '1': { + doc_count_error_upper_bound: 0, + sum_other_doc_count: 8325, + buckets: [ + { + '2': { + doc_count_error_upper_bound: 0, + sum_other_doc_count: 8325, + buckets: [ + { key: 'ios', doc_count: 2850 }, + { key: 'win xp', doc_count: 2830 }, + { key: '__missing__', doc_count: 1430 }, + ], + }, + key: 'US-with-dash', + doc_count: 2850, + }, + { + '2': { + doc_count_error_upper_bound: 0, + sum_other_doc_count: 8325, + buckets: [ + { key: 'ios', doc_count: 1850 }, + { key: 'win xp', doc_count: 1830 }, + { key: '__missing__', doc_count: 130 }, + ], + }, + key: 'IN-with-dash', + doc_count: 2830, + }, + ], + }, + doc_count: 1148, + }, + }, + }, + }); + + const otherAggConfig = buildOtherBucketAgg( + aggConfigs, + aggConfigs.aggs[2] as IBucketAggConfig, + enrichResponseWithSampling(nestedTermResponseWithRootFilter) + ); + + expect(otherAggConfig).toBeDefined(); + if (otherAggConfig) { + const expectedResponse = { + 'other-filter': { + aggs: undefined, + filters: { + filters: { + [`${SEP}*${SEP}IN-with-dash`]: { + bool: { + must: [], + filter: [ + { bool: { filter: [], must: [], must_not: [], should: [] } }, + { match_phrase: { 'geo.src': 'IN-with-dash' } }, + { exists: { field: 'machine.os.raw' } }, + ], + should: [], + must_not: [ + { match_phrase: { 'machine.os.raw': 'ios' } }, + { match_phrase: { 'machine.os.raw': 'win xp' } }, + ], + }, + }, + [`${SEP}*${SEP}US-with-dash`]: { + bool: { + must: [], + filter: [ + { bool: { filter: [], must: [], must_not: [], should: [] } }, + { match_phrase: { 'geo.src': 'US-with-dash' } }, + { exists: { field: 'machine.os.raw' } }, + ], + should: [], + must_not: [ + { match_phrase: { 'machine.os.raw': 'ios' } }, + { match_phrase: { 'machine.os.raw': 'win xp' } }, + ], + }, + }, + }, + }, + }, + }; + const resp = otherAggConfig(); + const topAgg = !isSamplingEnabled(probability) ? resp : resp.sampling!.aggs; + expect(topAgg).toEqual(expectedResponse); + } + }); }); describe(`mergeOtherBucketAggResponse${getTitlePostfix()}`, () => { diff --git a/src/plugins/data/common/search/aggs/buckets/_terms_other_bucket_helper.ts b/src/plugins/data/common/search/aggs/buckets/_terms_other_bucket_helper.ts index 9737883733266..924564744962f 100644 --- a/src/plugins/data/common/search/aggs/buckets/_terms_other_bucket_helper.ts +++ b/src/plugins/data/common/search/aggs/buckets/_terms_other_bucket_helper.ts @@ -206,7 +206,11 @@ export const buildOtherBucketAgg = ( ) => { // make sure there are actually results for the buckets const agg = aggregations[aggId]; - if (!agg || !agg.buckets.length) { + if ( + !agg || + // buckets can be either an array or an object in case there's also a filter at the same level + (Array.isArray(agg.buckets) ? !agg.buckets.length : !Object.values(agg.buckets).length) + ) { noAggBucketResults = true; return; } diff --git a/src/plugins/data/public/shard_failure_modal/__snapshots__/shard_failure_description.test.tsx.snap b/src/plugins/data/public/shard_failure_modal/__snapshots__/shard_failure_description.test.tsx.snap index 56581d0f3f019..fbad1c1f3dc80 100644 --- a/src/plugins/data/public/shard_failure_modal/__snapshots__/shard_failure_description.test.tsx.snap +++ b/src/plugins/data/public/shard_failure_modal/__snapshots__/shard_failure_description.test.tsx.snap @@ -11,13 +11,18 @@ exports[`ShardFailureDescription renders matching snapshot given valid propertie > (); - const { application, data, storage, dataViews, dataViewEditor } = kibana.services; + const { application, data, storage, dataViews, dataViewEditor, appName, usageCollection } = + kibana.services; + const reportUiCounter = usageCollection?.reportUiCounter.bind(usageCollection, appName); const styles = changeDataViewStyles({ fullWidth: trigger.fullWidth }); const [isTextLangTransitionModalDismissed, setIsTextLangTransitionModalDismissed] = useState(() => Boolean(storage.get(TEXT_LANG_TRANSITION_MODAL_KEY)) @@ -366,8 +369,9 @@ export function ChangeDataView({ (q: AggregateQuery) => { onTextLangQuerySubmit?.(q); setPopoverIsOpen(false); + reportUiCounter?.(METRIC_TYPE.CLICK, `esql:unified_search_clicked`); }, - [onTextLangQuerySubmit] + [onTextLangQuerySubmit, reportUiCounter] ); const cleanup = useCallback( diff --git a/test/functional/apps/discover/group1/_discover.ts b/test/functional/apps/discover/group1/_discover.ts index a3cf7b2d29fcf..286a30a6bb227 100644 --- a/test/functional/apps/discover/group1/_discover.ts +++ b/test/functional/apps/discover/group1/_discover.ts @@ -31,7 +31,8 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { defaultIndex: 'logstash-*', }; - describe('discover test', function describeIndexTests() { + // FLAKY: https://github.com/elastic/kibana/issues/146223 + describe.skip('discover test', function describeIndexTests() { before(async function () { log.debug('load kibana index with default index pattern'); await kibanaServer.importExport.load('test/functional/fixtures/kbn_archiver/discover'); diff --git a/x-pack/packages/kbn-slo-schema/src/rest_specs/slo.ts b/x-pack/packages/kbn-slo-schema/src/rest_specs/slo.ts index 17b8e86d9fc5a..706213003250b 100644 --- a/x-pack/packages/kbn-slo-schema/src/rest_specs/slo.ts +++ b/x-pack/packages/kbn-slo-schema/src/rest_specs/slo.ts @@ -158,6 +158,10 @@ const findSLOResponseSchema = t.type({ results: t.array(sloWithSummaryResponseSchema), }); +const deleteSLOInstancesParamsSchema = t.type({ + body: t.type({ list: t.array(t.type({ sloId: sloIdSchema, instanceId: t.string })) }), +}); + const fetchHistoricalSummaryParamsSchema = t.type({ body: t.type({ list: t.array(t.type({ sloId: sloIdSchema, instanceId: allOrAnyString })) }), }); @@ -239,6 +243,9 @@ type UpdateSLOResponse = t.OutputOf; type FindSLOParams = t.TypeOf; type FindSLOResponse = t.OutputOf; +type DeleteSLOInstancesInput = t.OutputOf; +type DeleteSLOInstancesParams = t.TypeOf; + type FetchHistoricalSummaryParams = t.TypeOf; type FetchHistoricalSummaryResponse = t.OutputOf; type HistoricalSummaryResponse = t.OutputOf; @@ -269,6 +276,7 @@ type KQLCustomIndicator = t.OutputOf; export { createSLOParamsSchema, deleteSLOParamsSchema, + deleteSLOInstancesParamsSchema, findSLOParamsSchema, findSLOResponseSchema, getPreviewDataParamsSchema, @@ -294,6 +302,8 @@ export type { CreateSLOInput, CreateSLOParams, CreateSLOResponse, + DeleteSLOInstancesInput, + DeleteSLOInstancesParams, FindSLOParams, FindSLOResponse, GetPreviewDataParams, diff --git a/x-pack/packages/security-solution/features/src/constants.ts b/x-pack/packages/security-solution/features/src/constants.ts index 2054749d0eabb..c92376fd36209 100644 --- a/x-pack/packages/security-solution/features/src/constants.ts +++ b/x-pack/packages/security-solution/features/src/constants.ts @@ -15,6 +15,9 @@ export const ASSISTANT_FEATURE_ID = 'securitySolutionAssistant' as const; // Same as the plugin id defined by Cloud Security Posture export const CLOUD_POSTURE_APP_ID = 'csp' as const; +// Same as the plugin id defined by Defend for containers (cloud_defend) +export const CLOUD_DEFEND_APP_ID = 'cloudDefend' as const; + /** * Id for the notifications alerting type * @deprecated Once we are confident all rules relying on side-car actions SO's have been migrated to SO references we should remove this function diff --git a/x-pack/packages/security-solution/features/src/security/kibana_features.ts b/x-pack/packages/security-solution/features/src/security/kibana_features.ts index 34252ec1a35be..f4176dfa53719 100644 --- a/x-pack/packages/security-solution/features/src/security/kibana_features.ts +++ b/x-pack/packages/security-solution/features/src/security/kibana_features.ts @@ -18,7 +18,13 @@ import { THRESHOLD_RULE_TYPE_ID, } from '@kbn/securitysolution-rules'; import type { BaseKibanaFeatureConfig } from '../types'; -import { APP_ID, SERVER_APP_ID, LEGACY_NOTIFICATIONS_ID, CLOUD_POSTURE_APP_ID } from '../constants'; +import { + APP_ID, + SERVER_APP_ID, + LEGACY_NOTIFICATIONS_ID, + CLOUD_POSTURE_APP_ID, + CLOUD_DEFEND_APP_ID, +} from '../constants'; import type { SecurityFeatureParams } from './types'; const SECURITY_RULE_TYPES = [ @@ -44,7 +50,7 @@ export const getSecurityBaseKibanaFeature = ({ ), order: 1100, category: DEFAULT_APP_CATEGORIES.security, - app: [APP_ID, CLOUD_POSTURE_APP_ID, 'kibana'], + app: [APP_ID, CLOUD_POSTURE_APP_ID, CLOUD_DEFEND_APP_ID, 'kibana'], catalogue: [APP_ID], management: { insightsAndAlerting: ['triggersActions'], @@ -52,7 +58,7 @@ export const getSecurityBaseKibanaFeature = ({ alerting: SECURITY_RULE_TYPES, privileges: { all: { - app: [APP_ID, CLOUD_POSTURE_APP_ID, 'kibana'], + app: [APP_ID, CLOUD_POSTURE_APP_ID, CLOUD_DEFEND_APP_ID, 'kibana'], catalogue: [APP_ID], api: [ APP_ID, @@ -62,6 +68,8 @@ export const getSecurityBaseKibanaFeature = ({ 'rac', 'cloud-security-posture-all', 'cloud-security-posture-read', + 'cloud-defend-all', + 'cloud-defend-read', ], savedObject: { all: ['alert', ...savedObjects], @@ -81,9 +89,9 @@ export const getSecurityBaseKibanaFeature = ({ ui: ['show', 'crud'], }, read: { - app: [APP_ID, CLOUD_POSTURE_APP_ID, 'kibana'], + app: [APP_ID, CLOUD_POSTURE_APP_ID, CLOUD_DEFEND_APP_ID, 'kibana'], catalogue: [APP_ID], - api: [APP_ID, 'lists-read', 'rac', 'cloud-security-posture-read'], + api: [APP_ID, 'lists-read', 'rac', 'cloud-security-posture-read', 'cloud-defend-read'], savedObject: { all: [], read: [...savedObjects], diff --git a/x-pack/packages/security-solution/features/src/security/kibana_sub_features.ts b/x-pack/packages/security-solution/features/src/security/kibana_sub_features.ts index 86cbf89f26a6f..d9a090f1313f0 100644 --- a/x-pack/packages/security-solution/features/src/security/kibana_sub_features.ts +++ b/x-pack/packages/security-solution/features/src/security/kibana_sub_features.ts @@ -9,6 +9,7 @@ import { i18n } from '@kbn/i18n'; import type { SubFeatureConfig } from '@kbn/features-plugin/common'; import { EXCEPTION_LIST_NAMESPACE_AGNOSTIC } from '@kbn/securitysolution-list-constants'; import { AppFeaturesPrivilegeId, AppFeaturesPrivileges } from '../app_features_privileges'; + import { SecuritySubFeatureId } from '../app_features_keys'; import { APP_ID } from '../constants'; import type { SecurityFeatureParams } from './types'; @@ -320,7 +321,7 @@ const policyManagementSubFeature: SubFeatureConfig = { includeIn: 'none', name: 'All', savedObject: { - all: [], + all: ['policy-settings-protection-updates-note'], read: [], }, ui: ['writePolicyManagement', 'readPolicyManagement'], @@ -332,7 +333,7 @@ const policyManagementSubFeature: SubFeatureConfig = { name: 'Read', savedObject: { all: [], - read: [], + read: ['policy-settings-protection-updates-note'], }, ui: ['readPolicyManagement'], }, diff --git a/x-pack/plugins/actions/docs/openapi/bundled.json b/x-pack/plugins/actions/docs/openapi/bundled.json index 67191da3842d6..ebd18fad973a3 100644 --- a/x-pack/plugins/actions/docs/openapi/bundled.json +++ b/x-pack/plugins/actions/docs/openapi/bundled.json @@ -1659,7 +1659,7 @@ "type": "object", "properties": { "executionTimeField": { - "description": "Specifies a field that will contain the time the alert condition was detected.", + "description": "A field that indicates when the document was indexed.", "default": null, "type": "string", "nullable": true diff --git a/x-pack/plugins/actions/docs/openapi/bundled.yaml b/x-pack/plugins/actions/docs/openapi/bundled.yaml index 5da86f4563a6c..39a6bea27385f 100644 --- a/x-pack/plugins/actions/docs/openapi/bundled.yaml +++ b/x-pack/plugins/actions/docs/openapi/bundled.yaml @@ -1028,7 +1028,7 @@ components: type: object properties: executionTimeField: - description: Specifies a field that will contain the time the alert condition was detected. + description: A field that indicates when the document was indexed. default: null type: string nullable: true diff --git a/x-pack/plugins/actions/docs/openapi/components/schemas/config_properties_index.yaml b/x-pack/plugins/actions/docs/openapi/components/schemas/config_properties_index.yaml index c82f775fe15dc..6c335b166d20a 100644 --- a/x-pack/plugins/actions/docs/openapi/components/schemas/config_properties_index.yaml +++ b/x-pack/plugins/actions/docs/openapi/components/schemas/config_properties_index.yaml @@ -5,7 +5,7 @@ description: Defines properties for connectors when type is `.index`. type: object properties: executionTimeField: - description: Specifies a field that will contain the time the alert condition was detected. + description: A field that indicates when the document was indexed. default: null type: string nullable: true diff --git a/x-pack/plugins/actions/kibana.jsonc b/x-pack/plugins/actions/kibana.jsonc index 9152e64ba898a..78f66742c2a03 100644 --- a/x-pack/plugins/actions/kibana.jsonc +++ b/x-pack/plugins/actions/kibana.jsonc @@ -21,7 +21,8 @@ "usageCollection", "spaces", "security", - "monitoringCollection" + "monitoringCollection", + "serverless" ], "extraPublicDirs": [ "common" diff --git a/x-pack/plugins/actions/server/config.ts b/x-pack/plugins/actions/server/config.ts index 9a620d1452f23..da45fd40cf925 100644 --- a/x-pack/plugins/actions/server/config.ts +++ b/x-pack/plugins/actions/server/config.ts @@ -64,6 +64,15 @@ const connectorTypeSchema = schema.object({ maxAttempts: schema.maybe(schema.number({ min: MIN_MAX_ATTEMPTS, max: MAX_MAX_ATTEMPTS })), }); +// We leverage enabledActionTypes list by allowing the other plugins to overwrite it by using "setEnabledConnectorTypes" in the plugin setup. +// The list can be overwritten only if it's not already been set in the config. +const enabledConnectorTypesSchema = schema.arrayOf( + schema.oneOf([schema.string(), schema.literal(EnabledActionTypes.Any)]), + { + defaultValue: [AllowedHosts.Any], + } +); + export const configSchema = schema.object({ allowedHosts: schema.arrayOf( schema.oneOf([schema.string({ hostname: true }), schema.literal(AllowedHosts.Any)]), @@ -71,12 +80,7 @@ export const configSchema = schema.object({ defaultValue: [AllowedHosts.Any], } ), - enabledActionTypes: schema.arrayOf( - schema.oneOf([schema.string(), schema.literal(EnabledActionTypes.Any)]), - { - defaultValue: [AllowedHosts.Any], - } - ), + enabledActionTypes: enabledConnectorTypesSchema, preconfiguredAlertHistoryEsIndex: schema.boolean({ defaultValue: false }), preconfigured: schema.recordOf(schema.string(), preconfiguredActionSchema, { defaultValue: {}, @@ -129,6 +133,7 @@ export const configSchema = schema.object({ }); export type ActionsConfig = TypeOf; +export type EnabledConnectorTypes = TypeOf; // It would be nicer to add the proxyBypassHosts / proxyOnlyHosts restriction on // simultaneous usage in the config validator directly, but there's no good way to express diff --git a/x-pack/plugins/actions/server/mocks.ts b/x-pack/plugins/actions/server/mocks.ts index ad26114cf7d07..70a2cfd9f8e85 100644 --- a/x-pack/plugins/actions/server/mocks.ts +++ b/x-pack/plugins/actions/server/mocks.ts @@ -31,6 +31,7 @@ const createSetupMock = () => { getCaseConnectorClass: jest.fn(), getActionsHealth: jest.fn(), getActionsConfigurationUtilities: jest.fn(), + setEnabledConnectorTypes: jest.fn(), }; return mock; }; diff --git a/x-pack/plugins/actions/server/plugin.test.ts b/x-pack/plugins/actions/server/plugin.test.ts index 66d75da5fd7cf..d3bc3be1a9deb 100644 --- a/x-pack/plugins/actions/server/plugin.test.ts +++ b/x-pack/plugins/actions/server/plugin.test.ts @@ -348,6 +348,163 @@ describe('Actions Plugin', () => { expect(pluginSetup.isPreconfiguredConnector('anotherConnectorId')).toEqual(false); }); }); + + describe('setEnabledConnectorTypes (works only on serverless)', () => { + function setup(config: ActionsConfig) { + context = coreMock.createPluginInitializerContext(config); + plugin = new ActionsPlugin(context); + coreSetup = coreMock.createSetup(); + pluginsSetup = { + taskManager: taskManagerMock.createSetup(), + encryptedSavedObjects: encryptedSavedObjectsMock.createSetup(), + licensing: licensingMock.createSetup(), + eventLog: eventLogMock.createSetup(), + usageCollection: usageCollectionPluginMock.createSetupContract(), + features: featuresPluginMock.createSetup(), + serverless: {}, + }; + } + + it('should set connector type enabled', async () => { + setup(getConfig()); + // coreMock.createSetup doesn't support Plugin generics + // eslint-disable-next-line @typescript-eslint/no-explicit-any + const pluginSetup = await plugin.setup(coreSetup as any, pluginsSetup); + const coreStart = coreMock.createStart(); + const pluginsStart = { + licensing: licensingMock.createStart(), + taskManager: taskManagerMock.createStart(), + encryptedSavedObjects: encryptedSavedObjectsMock.createStart(), + eventLog: eventLogMock.createStart(), + }; + const pluginStart = plugin.start(coreStart, pluginsStart); + + pluginSetup.registerType({ + id: '.server-log', + name: 'Server log', + minimumLicenseRequired: 'basic', + supportedFeatureIds: ['alerting'], + validate: { + config: { schema: schema.object({}) }, + secrets: { schema: schema.object({}) }, + params: { schema: schema.object({}) }, + }, + executor, + }); + pluginSetup.registerType({ + id: '.slack', + name: 'Slack', + minimumLicenseRequired: 'gold', + supportedFeatureIds: ['alerting'], + validate: { + config: { schema: schema.object({}) }, + secrets: { schema: schema.object({}) }, + params: { schema: schema.object({}) }, + }, + executor, + }); + pluginSetup.setEnabledConnectorTypes(['.server-log']); + expect(pluginStart.isActionTypeEnabled('.server-log')).toBeTruthy(); + expect(pluginStart.isActionTypeEnabled('.slack')).toBeFalsy(); + }); + + it('should set all the connector types enabled when null or ["*"] passed', async () => { + setup(getConfig()); + // coreMock.createSetup doesn't support Plugin generics + // eslint-disable-next-line @typescript-eslint/no-explicit-any + const pluginSetup = await plugin.setup(coreSetup as any, pluginsSetup); + const coreStart = coreMock.createStart(); + const pluginsStart = { + licensing: licensingMock.createStart(), + taskManager: taskManagerMock.createStart(), + encryptedSavedObjects: encryptedSavedObjectsMock.createStart(), + eventLog: eventLogMock.createStart(), + }; + const pluginStart = plugin.start(coreStart, pluginsStart); + + pluginSetup.registerType({ + id: '.server-log', + name: 'Server log', + minimumLicenseRequired: 'basic', + supportedFeatureIds: ['alerting'], + validate: { + config: { schema: schema.object({}) }, + secrets: { schema: schema.object({}) }, + params: { schema: schema.object({}) }, + }, + executor, + }); + pluginSetup.registerType({ + id: '.index', + name: 'Index', + minimumLicenseRequired: 'basic', + supportedFeatureIds: ['alerting'], + validate: { + config: { schema: schema.object({}) }, + secrets: { schema: schema.object({}) }, + params: { schema: schema.object({}) }, + }, + executor, + }); + pluginSetup.setEnabledConnectorTypes(['*']); + expect(pluginStart.isActionTypeEnabled('.server-log')).toBeTruthy(); + expect(pluginStart.isActionTypeEnabled('.index')).toBeTruthy(); + }); + + it('should set all the connector types disabled when [] passed', async () => { + setup(getConfig()); + // coreMock.createSetup doesn't support Plugin generics + // eslint-disable-next-line @typescript-eslint/no-explicit-any + const pluginSetup = await plugin.setup(coreSetup as any, pluginsSetup); + const coreStart = coreMock.createStart(); + const pluginsStart = { + licensing: licensingMock.createStart(), + taskManager: taskManagerMock.createStart(), + encryptedSavedObjects: encryptedSavedObjectsMock.createStart(), + eventLog: eventLogMock.createStart(), + }; + const pluginStart = plugin.start(coreStart, pluginsStart); + + pluginSetup.registerType({ + id: '.server-log', + name: 'Server log', + minimumLicenseRequired: 'basic', + supportedFeatureIds: ['alerting'], + validate: { + config: { schema: schema.object({}) }, + secrets: { schema: schema.object({}) }, + params: { schema: schema.object({}) }, + }, + executor, + }); + pluginSetup.registerType({ + id: '.index', + name: 'Index', + minimumLicenseRequired: 'basic', + supportedFeatureIds: ['alerting'], + validate: { + config: { schema: schema.object({}) }, + secrets: { schema: schema.object({}) }, + params: { schema: schema.object({}) }, + }, + executor, + }); + pluginSetup.setEnabledConnectorTypes([]); + expect(pluginStart.isActionTypeEnabled('.server-log')).toBeFalsy(); + expect(pluginStart.isActionTypeEnabled('.index')).toBeFalsy(); + }); + + it('should throw if the enabledActionTypes is already set by the config', async () => { + setup({ ...getConfig(), enabledActionTypes: ['.email'] }); + // coreMock.createSetup doesn't support Plugin generics + // eslint-disable-next-line @typescript-eslint/no-explicit-any + const pluginSetup = await plugin.setup(coreSetup as any, pluginsSetup); + + expect(() => pluginSetup.setEnabledConnectorTypes(['.index'])).toThrow( + "Enabled connector types can be set only if they haven't already been set in the config" + ); + }); + }); }); describe('start()', () => { @@ -396,6 +553,38 @@ describe('Actions Plugin', () => { }; }); + it('should throw when there is an invalid connector type in enabledActionTypes', async () => { + const pluginSetup = await plugin.setup(coreSetup, { + ...pluginsSetup, + encryptedSavedObjects: { + ...pluginsSetup.encryptedSavedObjects, + canEncrypt: true, + }, + serverless: {}, + }); + + pluginSetup.registerType({ + id: '.server-log', + name: 'Server log', + minimumLicenseRequired: 'basic', + supportedFeatureIds: ['alerting'], + validate: { + config: { schema: schema.object({}) }, + secrets: { schema: schema.object({}) }, + params: { schema: schema.object({}) }, + }, + executor, + }); + + pluginSetup.setEnabledConnectorTypes(['.server-log', 'non-existing']); + + await expect(async () => + plugin.start(coreStart, { ...pluginsStart, serverless: {} }) + ).rejects.toThrowErrorMatchingInlineSnapshot( + `"Action type \\"non-existing\\" is not registered."` + ); + }); + describe('getActionsClientWithRequest()', () => { it('should not throw error when ESO plugin has encryption key', async () => { await plugin.setup(coreSetup, { diff --git a/x-pack/plugins/actions/server/plugin.ts b/x-pack/plugins/actions/server/plugin.ts index b8b88b05049ca..415a9e36a1c01 100644 --- a/x-pack/plugins/actions/server/plugin.ts +++ b/x-pack/plugins/actions/server/plugin.ts @@ -40,7 +40,8 @@ import { } from '@kbn/event-log-plugin/server'; import { MonitoringCollectionSetup } from '@kbn/monitoring-collection-plugin/server'; -import { ActionsConfig, getValidatedConfig } from './config'; +import { ServerlessPluginSetup } from '@kbn/serverless/server'; +import { ActionsConfig, AllowedHosts, EnabledConnectorTypes, getValidatedConfig } from './config'; import { resolveCustomHosts } from './lib/custom_host_settings'; import { ActionsClient } from './actions_client/actions_client'; import { ActionTypeRegistry } from './action_type_registry'; @@ -100,10 +101,8 @@ import { createSubActionConnectorFramework } from './sub_action_framework'; import { IServiceAbstract, SubActionConnectorType } from './sub_action_framework/types'; import { SubActionConnector } from './sub_action_framework/sub_action_connector'; import { CaseConnector } from './sub_action_framework/case'; -import { - type IUnsecuredActionsClient, - UnsecuredActionsClient, -} from './unsecured_actions_client/unsecured_actions_client'; +import type { IUnsecuredActionsClient } from './unsecured_actions_client/unsecured_actions_client'; +import { UnsecuredActionsClient } from './unsecured_actions_client/unsecured_actions_client'; import { createBulkUnsecuredExecutionEnqueuerFunction } from './create_unsecured_execute_function'; import { createSystemConnectors } from './create_system_actions'; @@ -130,6 +129,7 @@ export interface PluginSetupContract { getCaseConnectorClass: () => IServiceAbstract; getActionsHealth: () => { hasPermanentEncryptionKey: boolean }; getActionsConfigurationUtilities: () => ActionsConfigurationUtilities; + setEnabledConnectorTypes: (connectorTypes: EnabledConnectorTypes) => void; } export interface PluginStartContract { @@ -169,6 +169,7 @@ export interface ActionsPluginsSetup { features: FeaturesPluginSetup; spaces?: SpacesPluginSetup; monitoringCollection?: MonitoringCollectionSetup; + serverless?: ServerlessPluginSetup; } export interface ActionsPluginsStart { @@ -178,6 +179,7 @@ export interface ActionsPluginsStart { eventLog: IEventLogClientService; spaces?: SpacesPluginStart; security?: SecurityPluginStart; + serverless?: ServerlessPluginSetup; } const includedHiddenTypes = [ @@ -375,6 +377,20 @@ export class ActionsPlugin implements Plugin actionsConfigUtils, + setEnabledConnectorTypes: (connectorTypes) => { + if ( + !!plugins.serverless && + this.actionsConfig.enabledActionTypes.length === 1 && + this.actionsConfig.enabledActionTypes[0] === AllowedHosts.Any + ) { + this.actionsConfig.enabledActionTypes.pop(); + this.actionsConfig.enabledActionTypes.push(...connectorTypes); + } else { + throw new Error( + "Enabled connector types can be set only if they haven't already been set in the config" + ); + } + }, }; } @@ -542,6 +558,8 @@ export class ActionsPlugin implements Plugin { return this.actionTypeRegistry!.isActionTypeEnabled(id, options); @@ -695,6 +713,19 @@ export class ActionsPlugin implements Plugin { + if ( + !!plugins.serverless && + this.actionsConfig.enabledActionTypes.length > 0 && + this.actionsConfig.enabledActionTypes[0] !== AllowedHosts.Any + ) { + this.actionsConfig.enabledActionTypes.forEach((connectorType) => { + // Throws error if action type doesn't exist + this.actionTypeRegistry?.get(connectorType); + }); + } + }; + public stop() { if (this.licenseState) { this.licenseState.clean(); diff --git a/x-pack/plugins/actions/tsconfig.json b/x-pack/plugins/actions/tsconfig.json index 0f4d2faf03e1a..3beeddef429b2 100644 --- a/x-pack/plugins/actions/tsconfig.json +++ b/x-pack/plugins/actions/tsconfig.json @@ -43,6 +43,7 @@ "@kbn/core-saved-objects-api-server-mocks", "@kbn/core-elasticsearch-server-mocks", "@kbn/core-logging-server-mocks", + "@kbn/serverless" ], "exclude": [ "target/**/*", diff --git a/x-pack/plugins/apm/public/components/alerting/rule_types/error_count_rule_type/index.tsx b/x-pack/plugins/apm/public/components/alerting/rule_types/error_count_rule_type/index.tsx index b42a3eb3b528f..e8fa1b130b2d7 100644 --- a/x-pack/plugins/apm/public/components/alerting/rule_types/error_count_rule_type/index.tsx +++ b/x-pack/plugins/apm/public/components/alerting/rule_types/error_count_rule_type/index.tsx @@ -106,7 +106,9 @@ export function ErrorCountRuleType(props: Props) { start, end, groupBy: params.groupBy, - searchConfiguration: JSON.stringify(params.searchConfiguration), + searchConfiguration: params.searchConfiguration?.query?.query + ? JSON.stringify(params.searchConfiguration) + : undefined, }, }, } diff --git a/x-pack/plugins/apm/public/components/alerting/rule_types/transaction_duration_rule_type/index.tsx b/x-pack/plugins/apm/public/components/alerting/rule_types/transaction_duration_rule_type/index.tsx index 900f90253a6e1..cd8abf26c74d4 100644 --- a/x-pack/plugins/apm/public/components/alerting/rule_types/transaction_duration_rule_type/index.tsx +++ b/x-pack/plugins/apm/public/components/alerting/rule_types/transaction_duration_rule_type/index.tsx @@ -136,7 +136,9 @@ export function TransactionDurationRuleType(props: Props) { start, end, groupBy: params.groupBy, - searchConfiguration: JSON.stringify(params.searchConfiguration), + searchConfiguration: params.searchConfiguration?.query?.query + ? JSON.stringify(params.searchConfiguration) + : undefined, }, }, } diff --git a/x-pack/plugins/apm/public/components/alerting/rule_types/transaction_error_rate_rule_type/index.tsx b/x-pack/plugins/apm/public/components/alerting/rule_types/transaction_error_rate_rule_type/index.tsx index cf1132e58b9e0..dd37092a260ef 100644 --- a/x-pack/plugins/apm/public/components/alerting/rule_types/transaction_error_rate_rule_type/index.tsx +++ b/x-pack/plugins/apm/public/components/alerting/rule_types/transaction_error_rate_rule_type/index.tsx @@ -108,7 +108,9 @@ export function TransactionErrorRateRuleType(props: Props) { start, end, groupBy: params.groupBy, - searchConfiguration: JSON.stringify(params.searchConfiguration), + searchConfiguration: params.searchConfiguration?.query?.query + ? JSON.stringify(params.searchConfiguration) + : undefined, }, }, } diff --git a/x-pack/plugins/apm/public/components/app/help_popover/help_popover.tsx b/x-pack/plugins/apm/public/components/app/help_popover/help_popover.tsx index 3a972b44f9a41..c883376cac4e1 100644 --- a/x-pack/plugins/apm/public/components/app/help_popover/help_popover.tsx +++ b/x-pack/plugins/apm/public/components/app/help_popover/help_popover.tsx @@ -51,6 +51,7 @@ export function HelpPopoverButton({ return ( {value && ( {value && ( ( ( setConfigToBeDeleted(config)} diff --git a/x-pack/plugins/apm/public/components/app/settings/agent_keys/create_agent_key/agent_key_callout.tsx b/x-pack/plugins/apm/public/components/app/settings/agent_keys/create_agent_key/agent_key_callout.tsx index 7f5d83f5beb1a..535bd2ed6b4f0 100644 --- a/x-pack/plugins/apm/public/components/app/settings/agent_keys/create_agent_key/agent_key_callout.tsx +++ b/x-pack/plugins/apm/public/components/app/settings/agent_keys/create_agent_key/agent_key_callout.tsx @@ -58,6 +58,7 @@ export function AgentKeyCallOut({ name, token }: Props) { {(copy) => ( { @@ -108,6 +109,7 @@ export function DiscoveryRule({ { diff --git a/x-pack/plugins/apm/public/components/shared/popover_tooltip/index.tsx b/x-pack/plugins/apm/public/components/shared/popover_tooltip/index.tsx index 4e119c52c8046..df3330a12c590 100644 --- a/x-pack/plugins/apm/public/components/shared/popover_tooltip/index.tsx +++ b/x-pack/plugins/apm/public/components/shared/popover_tooltip/index.tsx @@ -28,6 +28,7 @@ export function PopoverTooltip({ closePopover={() => setIsPopoverOpen(false)} button={ ) => { setIsPopoverOpen(!isPopoverOpen); diff --git a/x-pack/plugins/apm/public/components/shared/span_links/span_links_table.tsx b/x-pack/plugins/apm/public/components/shared/span_links/span_links_table.tsx index f223cf0036114..167ce52572dc8 100644 --- a/x-pack/plugins/apm/public/components/shared/span_links/span_links_table.tsx +++ b/x-pack/plugins/apm/public/components/shared/span_links/span_links_table.tsx @@ -142,6 +142,7 @@ export function SpanLinksTable({ items }: Props) { { diff --git a/x-pack/plugins/apm/public/tutorial/config_agent/opentelemetry_instructions.tsx b/x-pack/plugins/apm/public/tutorial/config_agent/opentelemetry_instructions.tsx index 2ea2a993816b7..0b105d0550143 100644 --- a/x-pack/plugins/apm/public/tutorial/config_agent/opentelemetry_instructions.tsx +++ b/x-pack/plugins/apm/public/tutorial/config_agent/opentelemetry_instructions.tsx @@ -83,6 +83,7 @@ export function OpenTelemetryInstructions({ {value && ( -) { - return withApmSpan('save_apm_indices', () => - savedObjectsClient.create( - APM_INDEX_SETTINGS_SAVED_OBJECT_TYPE, - { apmIndices: removeEmpty(apmIndices), isSpaceAware: true }, - { id: APM_INDEX_SETTINGS_SAVED_OBJECT_ID, overwrite: true } - ) - ); -} - -// remove empty/undefined values -function removeEmpty(apmIndices: Partial) { - return Object.entries(apmIndices) - .map(([key, value]) => [key, value?.trim()]) - .filter(([_, value]) => !!value) - .reduce((obj, [key, value]) => { - obj[key] = value; - return obj; - }, {} as Record); -} diff --git a/x-pack/plugins/apm_data_access/server/saved_objects/apm_indices.ts b/x-pack/plugins/apm_data_access/server/saved_objects/apm_indices.ts index 7ab90ef0a605c..96b9c31d6b91c 100644 --- a/x-pack/plugins/apm_data_access/server/saved_objects/apm_indices.ts +++ b/x-pack/plugins/apm_data_access/server/saved_objects/apm_indices.ts @@ -11,6 +11,7 @@ import { schema } from '@kbn/config-schema'; import { SavedObjectsErrorHelpers } from '@kbn/core/server'; import { SavedObjectsClientContract } from '@kbn/core/server'; import { updateApmOssIndexPaths } from './migrations/update_apm_oss_index_paths'; +import { APMIndices } from '..'; export const APM_INDEX_SETTINGS_SAVED_OBJECT_TYPE = 'apm-indices'; export const APM_INDEX_SETTINGS_SAVED_OBJECT_ID = 'apm-indices'; @@ -73,6 +74,28 @@ export const apmIndicesSavedObjectDefinition: SavedObjectsType = { }, }; +export function saveApmIndices( + savedObjectsClient: SavedObjectsClientContract, + apmIndices: Partial +) { + return savedObjectsClient.create( + APM_INDEX_SETTINGS_SAVED_OBJECT_TYPE, + { apmIndices: removeEmpty(apmIndices), isSpaceAware: true }, + { id: APM_INDEX_SETTINGS_SAVED_OBJECT_ID, overwrite: true } + ); +} + +// remove empty/undefined values +function removeEmpty(apmIndices: Partial) { + return Object.entries(apmIndices) + .map(([key, value]) => [key, value?.trim()]) + .filter(([_, value]) => !!value) + .reduce((obj, [key, value]) => { + obj[key] = value; + return obj; + }, {} as Record); +} + export async function getApmIndicesSavedObject(savedObjectsClient: SavedObjectsClientContract) { try { const apmIndicesSavedObject = await savedObjectsClient.get>( diff --git a/x-pack/plugins/apm/server/routes/settings/apm_indices/save_apm_indices.test.ts b/x-pack/plugins/apm_data_access/server/saved_objects/save_apm_indices.test.ts similarity index 95% rename from x-pack/plugins/apm/server/routes/settings/apm_indices/save_apm_indices.test.ts rename to x-pack/plugins/apm_data_access/server/saved_objects/save_apm_indices.test.ts index e72282ba6275a..22278e6c16b56 100644 --- a/x-pack/plugins/apm/server/routes/settings/apm_indices/save_apm_indices.test.ts +++ b/x-pack/plugins/apm_data_access/server/saved_objects/save_apm_indices.test.ts @@ -5,7 +5,7 @@ * 2.0. */ -import { saveApmIndices } from './save_apm_indices'; +import { saveApmIndices } from './apm_indices'; import { SavedObjectsClientContract } from '@kbn/core/server'; describe('saveApmIndices', () => { diff --git a/x-pack/plugins/canvas/public/components/workpad_filters/filter.component.tsx b/x-pack/plugins/canvas/public/components/workpad_filters/filter.component.tsx index bec6bec090d62..24cc383cfaed0 100644 --- a/x-pack/plugins/canvas/public/components/workpad_filters/filter.component.tsx +++ b/x-pack/plugins/canvas/public/components/workpad_filters/filter.component.tsx @@ -16,14 +16,6 @@ interface Props { type CustomComponentProps = Omit & { value: string }; -const titleStyle = { - width: '30%', -}; - -const descriptionStyle = { - width: '70%', -}; - const renderElement = ( Component: FC< Omit & { onChange?: CustomComponentProps['updateFilter'] } @@ -53,11 +45,12 @@ export const Filter: FC = ({ filter, ...restProps }) => { ); diff --git a/x-pack/plugins/cloud_security_posture/public/pages/vulnerabilities/vulnerabilities_by_resource/severity_map.tsx b/x-pack/plugins/cloud_security_posture/public/pages/vulnerabilities/vulnerabilities_by_resource/severity_map.tsx index 5c6888eca7494..94ebaf30572b3 100644 --- a/x-pack/plugins/cloud_security_posture/public/pages/vulnerabilities/vulnerabilities_by_resource/severity_map.tsx +++ b/x-pack/plugins/cloud_security_posture/public/pages/vulnerabilities/vulnerabilities_by_resource/severity_map.tsx @@ -14,7 +14,7 @@ import { EuiFlexItem, EuiText, } from '@elastic/eui'; -import { ColorStop } from '@elastic/eui/src/components/color_picker/color_stops'; +import { PaletteColorStop } from '@elastic/eui/src/components/color_picker/color_palette_picker'; import { i18n } from '@kbn/i18n'; import { getSeverityStatusColor } from '../../../common/utils/get_vulnerability_colors'; import { VulnSeverity } from '../../../../common/types'; @@ -53,7 +53,7 @@ const formatPercentage = (percentage: number) => { export const SeverityMap = ({ severityMap, total }: Props) => { const { euiTheme } = useEuiTheme(); - const severityMapPallet: ColorStop[] = []; + const severityMapPallet: PaletteColorStop[] = []; const severityMapTooltip: SeverityMapTooltip[] = []; if (total > 0) { diff --git a/x-pack/plugins/data_visualizer/public/application/file_data_visualizer/components/_index.scss b/x-pack/plugins/data_visualizer/public/application/file_data_visualizer/components/_index.scss index 1973f51e0a59e..0477913cd0beb 100644 --- a/x-pack/plugins/data_visualizer/public/application/file_data_visualizer/components/_index.scss +++ b/x-pack/plugins/data_visualizer/public/application/file_data_visualizer/components/_index.scss @@ -1,4 +1,3 @@ -@import 'analysis_summary/index'; @import 'edit_flyout/index'; @import 'file_contents/index'; @import 'import_summary/index'; diff --git a/x-pack/plugins/data_visualizer/public/application/file_data_visualizer/components/analysis_summary/_analysis_summary.scss b/x-pack/plugins/data_visualizer/public/application/file_data_visualizer/components/analysis_summary/_analysis_summary.scss deleted file mode 100644 index 50496ef9b23e0..0000000000000 --- a/x-pack/plugins/data_visualizer/public/application/file_data_visualizer/components/analysis_summary/_analysis_summary.scss +++ /dev/null @@ -1,11 +0,0 @@ -.analysis-summary-list.euiDescriptionList { - // adding overrides for title and desciption - // these have to be overridden here as they are not - // accessable as overrides in the EuiDescriptionList component - .euiDescriptionList__title { - flex-basis: 15%; - } - .euiDescriptionList__description { - flex-basis: 85%; - } -} diff --git a/x-pack/plugins/data_visualizer/public/application/file_data_visualizer/components/analysis_summary/_index.scss b/x-pack/plugins/data_visualizer/public/application/file_data_visualizer/components/analysis_summary/_index.scss deleted file mode 100644 index 61cd703f53067..0000000000000 --- a/x-pack/plugins/data_visualizer/public/application/file_data_visualizer/components/analysis_summary/_index.scss +++ /dev/null @@ -1 +0,0 @@ -@import 'analysis_summary'; diff --git a/x-pack/plugins/data_visualizer/public/application/file_data_visualizer/components/analysis_summary/analysis_summary.tsx b/x-pack/plugins/data_visualizer/public/application/file_data_visualizer/components/analysis_summary/analysis_summary.tsx index 91baf60ed065a..1ce06cc07dc9e 100644 --- a/x-pack/plugins/data_visualizer/public/application/file_data_visualizer/components/analysis_summary/analysis_summary.tsx +++ b/x-pack/plugins/data_visualizer/public/application/file_data_visualizer/components/analysis_summary/analysis_summary.tsx @@ -28,7 +28,12 @@ export const AnalysisSummary: FC<{ results: FindFileStructureResponse }> = ({ re - + ); }; diff --git a/x-pack/plugins/data_visualizer/public/application/file_data_visualizer/components/import_summary/_import_summary.scss b/x-pack/plugins/data_visualizer/public/application/file_data_visualizer/components/import_summary/_import_summary.scss index b21c35e430456..a2b4e36fcbe5e 100644 --- a/x-pack/plugins/data_visualizer/public/application/file_data_visualizer/components/import_summary/_import_summary.scss +++ b/x-pack/plugins/data_visualizer/public/application/file_data_visualizer/components/import_summary/_import_summary.scss @@ -1,15 +1,3 @@ -.import-summary-list.euiDescriptionList { - // adding overrides for title and desciption - // these have to be overridden here as they are not - // accessable as overrides in the EuiDescriptionList component - .euiDescriptionList__title { - flex-basis: 15%; - } - .euiDescriptionList__description { - flex-basis: 85%; - } -} - .failure-list { max-height: 200px; overflow-y: auto; diff --git a/x-pack/plugins/data_visualizer/public/application/file_data_visualizer/components/import_summary/import_summary.tsx b/x-pack/plugins/data_visualizer/public/application/file_data_visualizer/components/import_summary/import_summary.tsx index 202110ccbd358..04b8330eae234 100644 --- a/x-pack/plugins/data_visualizer/public/application/file_data_visualizer/components/import_summary/import_summary.tsx +++ b/x-pack/plugins/data_visualizer/public/application/file_data_visualizer/components/import_summary/import_summary.tsx @@ -53,7 +53,12 @@ export const ImportSummary: FC = ({ iconType="check" data-test-subj="dataVisualizerFileImportSuccessCallout" > - + {importFailures && importFailures.length > 0 && ( diff --git a/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/api/pipelines/fetch_index_pipeline_parameters.test.ts b/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/api/pipelines/fetch_index_pipeline_parameters.test.ts new file mode 100644 index 0000000000000..9290289a76b72 --- /dev/null +++ b/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/api/pipelines/fetch_index_pipeline_parameters.test.ts @@ -0,0 +1,34 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { mockHttpValues } from '../../../__mocks__/kea_logic'; + +import { nextTick } from '@kbn/test-jest-helpers'; + +import { fetchIndexPipelineParams } from './fetch_index_pipeline_parameters'; + +describe('FetchIndexPipelineParametersApiLogic', () => { + const { http } = mockHttpValues; + beforeEach(() => { + jest.clearAllMocks(); + }); + describe('fetchIndexPipelineParams', () => { + it('calls correct api', async () => { + const response = { + 'pipeline-name': {}, + }; + const promise = Promise.resolve(response); + http.get.mockReturnValue(promise); + const result = fetchIndexPipelineParams({ indexName: 'index-name' }); + await nextTick(); + expect(http.get).toHaveBeenCalledWith( + '/internal/enterprise_search/indices/index-name/pipeline_parameters' + ); + await expect(result).resolves.toEqual(response); + }); + }); +}); diff --git a/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/api/pipelines/fetch_index_pipeline_parameters.ts b/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/api/pipelines/fetch_index_pipeline_parameters.ts new file mode 100644 index 0000000000000..901a40e5c9e23 --- /dev/null +++ b/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/api/pipelines/fetch_index_pipeline_parameters.ts @@ -0,0 +1,34 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { IngestPipelineParams } from '../../../../../common/types/connectors'; +import { Actions, createApiLogic } from '../../../shared/api_logic/create_api_logic'; +import { HttpLogic } from '../../../shared/http'; + +export interface FetchIndexPipelineParametersArgs { + indexName: string; +} +export type FetchIndexPipelineParametersResponse = IngestPipelineParams; + +export const fetchIndexPipelineParams = async ({ indexName }: FetchIndexPipelineParametersArgs) => { + const route = `/internal/enterprise_search/indices/${indexName}/pipeline_parameters`; + + return await HttpLogic.values.http.get(route); +}; + +export const FetchIndexPipelineParametersApiLogic = createApiLogic( + ['fetch_index_pipeline_params_api_logic'], + fetchIndexPipelineParams, + { + showErrorFlash: false, + } +); + +export type FetchIndexPipelineParametersApiLogicActions = Actions< + FetchIndexPipelineParametersArgs, + FetchIndexPipelineParametersResponse +>; diff --git a/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/search_index/components/getting_started/getting_started.tsx b/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/search_index/components/getting_started/getting_started.tsx index 804dd5f09eee1..5d0a53f93d013 100644 --- a/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/search_index/components/getting_started/getting_started.tsx +++ b/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/search_index/components/getting_started/getting_started.tsx @@ -5,7 +5,7 @@ * 2.0. */ -import React, { useState } from 'react'; +import React, { useEffect, useState } from 'react'; import { css } from '@emotion/react'; import dedent from 'dedent'; @@ -29,6 +29,7 @@ import { useKibana } from '@kbn/kibana-react-plugin/public'; import { SelectClientPanel, LanguageDefinition, + LanguageDefinitionSnippetArguments, LanguageClientPanel, InstallClientPanel, OverviewPanel, @@ -50,30 +51,41 @@ import { IndexViewLogic } from '../../index_view_logic'; import { OverviewLogic } from '../../overview.logic'; import { GenerateApiKeyModal } from '../generate_api_key_modal/modal'; -import { javascriptDefinition } from './languages/javascript'; +import { consoleDefinition } from './languages/console'; +import { curlDefinition } from './languages/curl'; import { languageDefinitions } from './languages/languages'; const DEFAULT_URL = 'https://localhost:9200'; export const APIGettingStarted = () => { const { http } = useValues(HttpLogic); - const { apiKey, isGenerateModalOpen } = useValues(OverviewLogic); - const { openGenerateModal, closeGenerateModal } = useActions(OverviewLogic); + const { apiKey, isGenerateModalOpen, indexPipelineParameters } = useValues(OverviewLogic); + const { fetchIndexPipelineParameters, openGenerateModal, closeGenerateModal } = + useActions(OverviewLogic); const { indexName } = useValues(IndexViewLogic); const { services } = useKibana(); const cloudContext = useCloudDetails(); - const codeArgs = { + useEffect(() => { + fetchIndexPipelineParameters({ indexName }); + }, [indexName]); + + const codeArgs: LanguageDefinitionSnippetArguments = { apiKey, cloudId: cloudContext.cloudId, + extraIngestDocumentValues: { + _extract_binary_content: indexPipelineParameters.extract_binary_content, + _reduce_whitespace: indexPipelineParameters.reduce_whitespace, + _run_ml_inference: indexPipelineParameters.run_ml_inference, + }, indexName, + ingestPipeline: indexPipelineParameters.name, url: cloudContext.elasticsearchUrl || DEFAULT_URL, }; const assetBasePath = http.basePath.prepend(`/plugins/${PLUGIN_ID}/assets/client_libraries/`); - const [selectedLanguage, setSelectedLanguage] = - useState(javascriptDefinition); + const [selectedLanguage, setSelectedLanguage] = useState(curlDefinition); return ( <> {isGenerateModalOpen && ( @@ -344,7 +356,11 @@ export const APIGettingStarted = () => { { 'buildSearchQuery', codeArgs )} - consoleRequest={getConsoleRequest('buildSearchQuery')} + consoleRequest={getLanguageDefinitionCodeSnippet( + consoleDefinition, + 'buildSearchQuery', + codeArgs + )} selectedLanguage={selectedLanguage} setSelectedLanguage={setSelectedLanguage} assetBasePath={assetBasePath} diff --git a/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/search_index/components/getting_started/languages/console.ts b/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/search_index/components/getting_started/languages/console.ts new file mode 100644 index 0000000000000..9d395b0a68c67 --- /dev/null +++ b/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/search_index/components/getting_started/languages/console.ts @@ -0,0 +1,37 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { LanguageDefinition } from '@kbn/search-api-panels'; + +import { ingestKeysToJSON } from './helpers'; + +export const consoleDefinition: Partial = { + buildSearchQuery: ({ indexName }) => `POST /${indexName ?? 'books'}/_search?pretty + { + "query": { + "query_string": { + "query": "snow" + } + } + }`, + ingestData: ({ indexName, ingestPipeline, extraIngestDocumentValues }) => { + const ingestDocumentKeys = ingestPipeline ? ingestKeysToJSON(extraIngestDocumentValues) : ''; + return `POST _bulk?pretty${ingestPipeline ? `&pipeline=${ingestPipeline}` : ''} + { "index" : { "_index" : "${indexName}" } } + {"name": "Snow Crash", "author": "Neal Stephenson", "release_date": "1992-06-01", "page_count": 470${ingestDocumentKeys}} + { "index" : { "_index" : "${indexName}" } } + {"name": "Revelation Space", "author": "Alastair Reynolds", "release_date": "2000-03-15", "page_count": 585${ingestDocumentKeys}} + { "index" : { "_index" : "${indexName}" } } + {"name": "1984", "author": "George Orwell", "release_date": "1985-06-01", "page_count": 328${ingestDocumentKeys}} + { "index" : { "_index" : "${indexName}" } } + {"name": "Fahrenheit 451", "author": "Ray Bradbury", "release_date": "1953-10-15", "page_count": 227${ingestDocumentKeys}} + { "index" : { "_index" : "${indexName}" } } + {"name": "Brave New World", "author": "Aldous Huxley", "release_date": "1932-06-01", "page_count": 268${ingestDocumentKeys}} + { "index" : { "_index" : "${indexName}" } } + {"name": "The Handmaid's Tale", "author": "Margaret Atwood", "release_date": "1985-06-01", "page_count": 311${ingestDocumentKeys}}`; + }, +}; diff --git a/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/search_index/components/getting_started/languages/curl.ts b/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/search_index/components/getting_started/languages/curl.ts index 45c67a02798ec..8bac32d754064 100644 --- a/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/search_index/components/getting_started/languages/curl.ts +++ b/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/search_index/components/getting_started/languages/curl.ts @@ -10,6 +10,8 @@ import { Languages, LanguageDefinition } from '@kbn/search-api-panels'; import { docLinks } from '../../../../../../shared/doc_links'; +import { ingestKeysToJSON } from './helpers'; + export const curlDefinition: LanguageDefinition = { buildSearchQuery: ({ indexName }) => `curl -X POST "\$\{ES_URL\}/${indexName}/_search?pretty" \\ -H "Authorization: ApiKey "\$\{API_KEY\}"" \\ @@ -33,23 +35,28 @@ export API_KEY="${apiKey}"`, }, iconType: 'curl.svg', id: Languages.CURL, - ingestData: ({ indexName }) => `curl -X POST "\$\{ES_URL\}/_bulk?pretty" \\ + ingestData: ({ indexName, ingestPipeline, extraIngestDocumentValues }) => { + const ingestDocumentKeys = ingestPipeline ? ingestKeysToJSON(extraIngestDocumentValues) : ''; + return `curl -X POST "\$\{ES_URL\}/_bulk?pretty${ + ingestPipeline ? `&pipeline=${ingestPipeline}` : '' + }" \\ -H "Authorization: ApiKey "\$\{API_KEY\}"" \\ -H "Content-Type: application/json" \\ -d' { "index" : { "_index" : "${indexName}" } } -{"name": "Snow Crash", "author": "Neal Stephenson", "release_date": "1992-06-01", "page_count": 470} +{"name": "Snow Crash", "author": "Neal Stephenson", "release_date": "1992-06-01", "page_count": 470${ingestDocumentKeys}} { "index" : { "_index" : "${indexName}" } } -{"name": "Revelation Space", "author": "Alastair Reynolds", "release_date": "2000-03-15", "page_count": 585} +{"name": "Revelation Space", "author": "Alastair Reynolds", "release_date": "2000-03-15", "page_count": 585${ingestDocumentKeys}} { "index" : { "_index" : "${indexName}" } } -{"name": "1984", "author": "George Orwell", "release_date": "1985-06-01", "page_count": 328} +{"name": "1984", "author": "George Orwell", "release_date": "1985-06-01", "page_count": 328${ingestDocumentKeys}} { "index" : { "_index" : "${indexName}" } } -{"name": "Fahrenheit 451", "author": "Ray Bradbury", "release_date": "1953-10-15", "page_count": 227} +{"name": "Fahrenheit 451", "author": "Ray Bradbury", "release_date": "1953-10-15", "page_count": 227${ingestDocumentKeys}} { "index" : { "_index" : "${indexName}" } } -{"name": "Brave New World", "author": "Aldous Huxley", "release_date": "1932-06-01", "page_count": 268} +{"name": "Brave New World", "author": "Aldous Huxley", "release_date": "1932-06-01", "page_count": 268${ingestDocumentKeys}} { "index" : { "_index" : "${indexName}" } } -{"name": "The Handmaid'"'"'s Tale", "author": "Margaret Atwood", "release_date": "1985-06-01", "page_count": 311} -'`, +{"name": "The Handmaid'"'"'s Tale", "author": "Margaret Atwood", "release_date": "1985-06-01", "page_count": 311${ingestDocumentKeys}} +'`; + }, ingestDataIndex: '', installClient: `# if cURL is not already installed on your system # then install it with the package manager of your choice diff --git a/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/search_index/components/getting_started/languages/go.ts b/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/search_index/components/getting_started/languages/go.ts index fc3d8226f9a0c..6c504bba26bdc 100644 --- a/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/search_index/components/getting_started/languages/go.ts +++ b/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/search_index/components/getting_started/languages/go.ts @@ -10,6 +10,8 @@ import { Languages, LanguageDefinition } from '@kbn/search-api-panels'; import { docLinks } from '../../../../../../shared/doc_links'; +import { ingestKeysToJSON } from './helpers'; + export const goDefinition: LanguageDefinition = { buildSearchQuery: ({ indexName }) => `searchResp, err := es.Search( es.Search.WithContext(context.Background()), @@ -56,27 +58,32 @@ if err != nil { }, iconType: 'go.svg', id: Languages.GO, - ingestData: ({ indexName }) => `buf := bytes.NewBufferString(\` + ingestData: ({ indexName, ingestPipeline, extraIngestDocumentValues }) => { + const ingestDocumentKeys = ingestPipeline ? ingestKeysToJSON(extraIngestDocumentValues) : ''; + return `buf := bytes.NewBufferString(\` {"index":{"_id":"9780553351927"}} -{"name":"Snow Crash","author":"Neal Stephenson","release_date":"1992-06-01","page_count": 470} +{"name":"Snow Crash","author":"Neal Stephenson","release_date":"1992-06-01","page_count": 470${ingestDocumentKeys}} { "index": { "_id": "9780441017225"}} -{"name": "Revelation Space", "author": "Alastair Reynolds", "release_date": "2000-03-15", "page_count": 585} +{"name": "Revelation Space", "author": "Alastair Reynolds", "release_date": "2000-03-15", "page_count": 585${ingestDocumentKeys}} { "index": { "_id": "9780451524935"}} -{"name": "1984", "author": "George Orwell", "release_date": "1985-06-01", "page_count": 328} +{"name": "1984", "author": "George Orwell", "release_date": "1985-06-01", "page_count": 328${ingestDocumentKeys}} { "index": { "_id": "9781451673319"}} -{"name": "Fahrenheit 451", "author": "Ray Bradbury", "release_date": "1953-10-15", "page_count": 227} +{"name": "Fahrenheit 451", "author": "Ray Bradbury", "release_date": "1953-10-15", "page_count": 227${ingestDocumentKeys}} { "index": { "_id": "9780060850524"}} -{"name": "Brave New World", "author": "Aldous Huxley", "release_date": "1932-06-01", "page_count": 268} +{"name": "Brave New World", "author": "Aldous Huxley", "release_date": "1932-06-01", "page_count": 268${ingestDocumentKeys}} { "index": { "_id": "9780385490818"}} -{"name": "The Handmaid's Tale", "author": "Margaret Atwood", "release_date": "1985-06-01", "page_count": 311} +{"name": "The Handmaid's Tale", "author": "Margaret Atwood", "release_date": "1985-06-01", "page_count": 311${ingestDocumentKeys}} \`) ingestResult, err := es.Bulk( bytes.NewReader(buf.Bytes()), - es.Bulk.WithIndex("${indexName}"), + es.Bulk.WithIndex("${indexName}"),${ + ingestPipeline ? `\n es.Bulk.WithPipeline("${ingestPipeline}"),` : '' + } ) -fmt.Println(ingestResult, err)`, +fmt.Println(ingestResult, err)`; + }, ingestDataIndex: '', installClient: 'go get github.com/elastic/go-elasticsearch/v8@latest', name: i18n.translate('xpack.enterpriseSearch.languages.go', { diff --git a/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/search_index/components/getting_started/languages/helpers.test.ts b/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/search_index/components/getting_started/languages/helpers.test.ts new file mode 100644 index 0000000000000..df13ea273061e --- /dev/null +++ b/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/search_index/components/getting_started/languages/helpers.test.ts @@ -0,0 +1,39 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { ingestKeysToJSON, ingestKeysToPHP, ingestKeysToRuby } from './helpers'; + +describe('getting started language helpers', () => { + describe('ingestKeysToJSON', () => { + it('return empty string when given undefined', () => { + expect(ingestKeysToJSON(undefined)).toEqual(''); + }); + it('return json keys with quotes when given expected data', () => { + expect(ingestKeysToJSON({ _foo: true, _bar: false })).toEqual( + ', "_foo": true, "_bar": false' + ); + }); + }); + describe('ingestKeysToPHP', () => { + it('return empty string when given undefined', () => { + expect(ingestKeysToPHP(undefined)).toEqual(''); + }); + it('return json keys with quotes when given expected data', () => { + expect(ingestKeysToPHP({ _foo: true, _bar: false })).toEqual( + `\n '_foo' => true,\n '_bar' => false,` + ); + }); + }); + describe('ingestKeysToRuby', () => { + it('return empty string when given undefined', () => { + expect(ingestKeysToRuby(undefined)).toEqual(''); + }); + it('return json keys with quotes when given expected data', () => { + expect(ingestKeysToRuby({ _foo: true, _bar: false })).toEqual(', _foo: true, _bar: false'); + }); + }); +}); diff --git a/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/search_index/components/getting_started/languages/helpers.ts b/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/search_index/components/getting_started/languages/helpers.ts new file mode 100644 index 0000000000000..5d98779a851b3 --- /dev/null +++ b/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/search_index/components/getting_started/languages/helpers.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 { LanguageDefinitionSnippetArguments } from '@kbn/search-api-panels'; + +export const ingestKeysToJSON = ( + extraIngestDocumentValues: LanguageDefinitionSnippetArguments['extraIngestDocumentValues'] +) => + extraIngestDocumentValues + ? Object.entries(extraIngestDocumentValues).reduce((result, value) => { + result += `, "${value[0]}": ${value[1]}`; + return result; + }, '') + : ''; + +export const ingestKeysToPHP = ( + extraIngestDocumentValues: LanguageDefinitionSnippetArguments['extraIngestDocumentValues'] +) => + extraIngestDocumentValues + ? Object.entries(extraIngestDocumentValues).reduce((result, value) => { + result += `\n '${value[0]}' => ${value[1]},`; + return result; + }, '') + : ''; + +export const ingestKeysToRuby = ( + extraIngestDocumentValues: LanguageDefinitionSnippetArguments['extraIngestDocumentValues'] +) => + extraIngestDocumentValues + ? Object.entries(extraIngestDocumentValues).reduce((result, value) => { + result += `, ${value[0]}: ${value[1]}`; + return result; + }, '') + : ''; diff --git a/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/search_index/components/getting_started/languages/javascript.ts b/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/search_index/components/getting_started/languages/javascript.ts index c73461a1aa396..51d7e4ef68625 100644 --- a/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/search_index/components/getting_started/languages/javascript.ts +++ b/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/search_index/components/getting_started/languages/javascript.ts @@ -10,11 +10,13 @@ import { Languages, LanguageDefinition } from '@kbn/search-api-panels'; import { docLinks } from '../../../../../../shared/doc_links'; +import { ingestKeysToJSON } from './helpers'; + export const javascriptDefinition: LanguageDefinition = { buildSearchQuery: ({ indexName }) => `// Let's search! const searchResult = await client.search({ index: '${indexName}', - q: '9HY9SWR' + q: 'snow' }); console.log(searchResult.hits.hits) @@ -35,34 +37,38 @@ const client = new Client({ }, iconType: 'javascript.svg', id: Languages.JAVASCRIPT, - ingestData: ({ indexName }) => `// Sample flight data + ingestData: ({ indexName, ingestPipeline, extraIngestDocumentValues }) => { + const ingestDocumentKeys = ingestPipeline ? ingestKeysToJSON(extraIngestDocumentValues) : ''; + return `// Sample data books const dataset = [ - {'flight': '9HY9SWR', 'price': 841.2656419677076, 'delayed': false}, - {'flight': 'X98CCZO', 'price': 882.9826615595518, 'delayed': false}, - {'flight': 'UFK2WIZ', 'price': 190.6369038508356, 'delayed': true}, + {"name": "Snow Crash", "author": "Neal Stephenson", "release_date": "1992-06-01", "page_count": 470${ingestDocumentKeys}}, + {"name": "Revelation Space", "author": "Alastair Reynolds", "release_date": "2000-03-15", "page_count": 585${ingestDocumentKeys}}, + {"name": "1984", "author": "George Orwell", "release_date": "1985-06-01", "page_count": 328${ingestDocumentKeys}}, + {"name": "Fahrenheit 451", "author": "Ray Bradbury", "release_date": "1953-10-15", "page_count": 227${ingestDocumentKeys}}, + {"name": "Brave New World", "author": "Aldous Huxley", "release_date": "1932-06-01", "page_count": 268${ingestDocumentKeys}}, + {"name": "The Handmaid's Tale", "author": "Margaret Atwood", "release_date": "1985-06-01", "page_count": 311${ingestDocumentKeys}}, ]; // Index with the bulk helper const result = await client.helpers.bulk({ - datasource: dataset, - onDocument (doc) { - return { index: { _index: '${indexName}' }}; - } + datasource: dataset,${ingestPipeline ? `\n pipeline: "${ingestPipeline}",` : ''} + onDocument: (doc) => ({ index: { _index: '${indexName}' }}), }); console.log(result); /** { - total: 3, + total: 6, failed: 0, retry: 0, - successful: 3, + successful: 6, noop: 0, - time: 421, - bytes: 293, + time: 82, + bytes: 1273, aborted: false } -*/`, +*/`; + }, ingestDataIndex: '', installClient: 'npm install @elastic/elasticsearch@8', name: i18n.translate('xpack.enterpriseSearch.languages.javascript', { @@ -80,10 +86,10 @@ console.log(resp); version: { build_flavor: 'default', build_type: 'docker', - build_hash: 'c94b4700cda13820dad5aa74fae6db185ca5c304', - build_date: '2022-10-24T16:54:16.433628434Z', - build_snapshot: false, - lucene_version: '9.4.1', + build_hash: 'ca3dc3a882d76f14d2765906ce3b1cf421948d19', + build_date: '2023-08-28T11:24:16.383660553Z', + build_snapshot: true, + lucene_version: '9.7.0', minimum_wire_compatibility_version: '7.17.0', minimum_index_compatibility_version: '7.0.0' }, diff --git a/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/search_index/components/getting_started/languages/php.ts b/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/search_index/components/getting_started/languages/php.ts index 51ea055c23ae8..3146ca60af306 100644 --- a/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/search_index/components/getting_started/languages/php.ts +++ b/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/search_index/components/getting_started/languages/php.ts @@ -10,6 +10,8 @@ import { Languages, LanguageDefinition } from '@kbn/search-api-panels'; import { docLinks } from '../../../../../../shared/doc_links'; +import { ingestKeysToPHP } from './helpers'; + export const phpDefinition: LanguageDefinition = { buildSearchQuery: ({ indexName }) => `$params = [ 'index' => '${indexName}', @@ -33,7 +35,9 @@ print_r($response->asArray());`, }, iconType: 'php.svg', id: Languages.PHP, - ingestData: ({ indexName }) => `$params = [ + ingestData: ({ indexName, ingestPipeline, extraIngestDocumentValues }) => { + const ingestDocumentKeys = ingestPipeline ? ingestKeysToPHP(extraIngestDocumentValues) : ''; + return `$params = [${ingestPipeline ? `\n 'pipeline' => '${ingestPipeline}',` : ''} 'body' => [ [ 'index' => [ @@ -45,7 +49,7 @@ print_r($response->asArray());`, 'name' => 'Snow Crash', 'author' => 'Neal Stephenson', 'release_date' => '1992-06-01', - 'page_count' => 470, + 'page_count' => 470,${ingestDocumentKeys} ], [ 'index' => [ @@ -57,7 +61,7 @@ print_r($response->asArray());`, 'name' => 'Revelation Space', 'author' => 'Alastair Reynolds', 'release_date' => '2000-03-15', - 'page_count' => 585, + 'page_count' => 585,${ingestDocumentKeys} ], [ 'index' => [ @@ -69,7 +73,7 @@ print_r($response->asArray());`, 'name' => '1984', 'author' => 'George Orwell', 'release_date' => '1985-06-01', - 'page_count' => 328, + 'page_count' => 328,${ingestDocumentKeys} ], [ 'index' => [ @@ -81,7 +85,7 @@ print_r($response->asArray());`, 'name' => 'Fahrenheit 451', 'author' => 'Ray Bradbury', 'release_date' => '1953-10-15', - 'page_count' => 227, + 'page_count' => 227,${ingestDocumentKeys} ], [ 'index' => [ @@ -93,7 +97,7 @@ print_r($response->asArray());`, 'name' => 'Brave New World', 'author' => 'Aldous Huxley', 'release_date' => '1932-06-01', - 'page_count' => 268, + 'page_count' => 268,${ingestDocumentKeys} ], [ 'index' => [ @@ -102,17 +106,18 @@ print_r($response->asArray());`, ], ], [ - 'name' => 'The Handmaid\'s Tale', + 'name' => 'The Handmaid\\'s Tale', 'author' => 'Margaret Atwood', 'release_date' => '1985-06-01', - 'page_count' => 311, + 'page_count' => 311,${ingestDocumentKeys} ], ], ]; $response = $client->bulk($params); echo $response->getStatusCode(); - echo (string) $response->getBody();`, + echo (string) $response->getBody();`; + }, ingestDataIndex: '', installClient: 'composer require elasticsearch/elasticsearch', name: i18n.translate('xpack.enterpriseSearch.languages.php', { diff --git a/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/search_index/components/getting_started/languages/python.ts b/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/search_index/components/getting_started/languages/python.ts index 79fb811185f18..24723ba3632da 100644 --- a/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/search_index/components/getting_started/languages/python.ts +++ b/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/search_index/components/getting_started/languages/python.ts @@ -10,6 +10,8 @@ import { Languages, LanguageDefinition } from '@kbn/search-api-panels'; import { docLinks } from '../../../../../../shared/doc_links'; +import { ingestKeysToJSON } from './helpers'; + export const pythonDefinition: LanguageDefinition = { buildSearchQuery: ({ indexName }) => `client.search(index="${indexName}", q="snow")`, configureClient: ({ url, apiKey }) => `from elasticsearch import Elasticsearch @@ -27,22 +29,25 @@ client = Elasticsearch( }, iconType: 'python.svg', id: Languages.PYTHON, - ingestData: ({ indexName }) => `documents = [ + ingestData: ({ indexName, ingestPipeline, extraIngestDocumentValues }) => { + const ingestDocumentKeys = ingestPipeline ? ingestKeysToJSON(extraIngestDocumentValues) : ''; + return `documents = [ { "index": { "_index": "${indexName}", "_id": "9780553351927"}}, - {"name": "Snow Crash", "author": "Neal Stephenson", "release_date": "1992-06-01", "page_count": 470}, + {"name": "Snow Crash", "author": "Neal Stephenson", "release_date": "1992-06-01", "page_count": 470${ingestDocumentKeys}}, { "index": { "_index": "${indexName}", "_id": "9780441017225"}}, - {"name": "Revelation Space", "author": "Alastair Reynolds", "release_date": "2000-03-15", "page_count": 585}, + {"name": "Revelation Space", "author": "Alastair Reynolds", "release_date": "2000-03-15", "page_count": 585${ingestDocumentKeys}}, { "index": { "_index": "${indexName}", "_id": "9780451524935"}}, - {"name": "1984", "author": "George Orwell", "release_date": "1985-06-01", "page_count": 328}, + {"name": "1984", "author": "George Orwell", "release_date": "1985-06-01", "page_count": 328${ingestDocumentKeys}}, { "index": { "_index": "${indexName}", "_id": "9781451673319"}}, - {"name": "Fahrenheit 451", "author": "Ray Bradbury", "release_date": "1953-10-15", "page_count": 227}, + {"name": "Fahrenheit 451", "author": "Ray Bradbury", "release_date": "1953-10-15", "page_count": 227${ingestDocumentKeys}}, { "index": { "_index": "${indexName}", "_id": "9780060850524"}}, - {"name": "Brave New World", "author": "Aldous Huxley", "release_date": "1932-06-01", "page_count": 268}, + {"name": "Brave New World", "author": "Aldous Huxley", "release_date": "1932-06-01", "page_count": 268${ingestDocumentKeys}}, { "index": { "_index": "${indexName}", "_id": "9780385490818"}}, - {"name": "The Handmaid's Tale", "author": "Margaret Atwood", "release_date": "1985-06-01", "page_count": 311}, + {"name": "The Handmaid's Tale", "author": "Margaret Atwood", "release_date": "1985-06-01", "page_count": 311${ingestDocumentKeys}}, ] -client.bulk(operations=documents)`, +client.bulk(operations=documents${ingestPipeline ? `, pipeline="${ingestPipeline}"` : ''})`; + }, ingestDataIndex: '', installClient: `python -m pip install elasticsearch diff --git a/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/search_index/components/getting_started/languages/ruby.ts b/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/search_index/components/getting_started/languages/ruby.ts index 779aa3a99f1fb..43a104b0f7a8b 100644 --- a/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/search_index/components/getting_started/languages/ruby.ts +++ b/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/search_index/components/getting_started/languages/ruby.ts @@ -10,6 +10,8 @@ import { Languages, LanguageDefinition } from '@kbn/search-api-panels'; import { docLinks } from '../../../../../../shared/doc_links'; +import { ingestKeysToRuby } from './helpers'; + export const rubyDefinition: LanguageDefinition = { buildSearchQuery: ({ indexName }) => `client.search(index: '${indexName}', q: 'snow')`, configureClient: ({ url, apiKey, cloudId }) => `client = Elasticsearch::Client.new( @@ -26,15 +28,18 @@ export const rubyDefinition: LanguageDefinition = { }, iconType: 'ruby.svg', id: Languages.RUBY, - ingestData: ({ indexName }) => `documents = [ - { index: { _index: '${indexName}', data: {name: "Snow Crash", "author": "Neal Stephenson", "release_date": "1992-06-01", "page_count": 470} } }, - { index: { _index: '${indexName}', data: {name: "Revelation Space", "author": "Alastair Reynolds", "release_date": "2000-03-15", "page_count": 585} } }, - { index: { _index: '${indexName}', data: {name: "1984", "author": "George Orwell", "release_date": "1985-06-01", "page_count": 328} } }, - { index: { _index: '${indexName}', data: {name: "Fahrenheit 451", "author": "Ray Bradbury", "release_date": "1953-10-15", "page_count": 227} } }, - { index: { _index: '${indexName}', data: {name: "Brave New World", "author": "Aldous Huxley", "release_date": "1932-06-01", "page_count": 268} } }, - { index: { _index: '${indexName}', data: {name: "The Handmaid's Tale", "author": "Margaret Atwood", "release_date": "1985-06-01", "page_count": 311} } } + ingestData: ({ indexName, ingestPipeline, extraIngestDocumentValues }) => { + const ingestDocumentKeys = ingestPipeline ? ingestKeysToRuby(extraIngestDocumentValues) : ''; + return `documents = [ + { index: { _index: '${indexName}', data: {name: "Snow Crash", author: "Neal Stephenson", release_date: "1992-06-01", page_count: 470${ingestDocumentKeys}} } }, + { index: { _index: '${indexName}', data: {name: "Revelation Space", author: "Alastair Reynolds", release_date: "2000-03-15", page_count: 585${ingestDocumentKeys}} } }, + { index: { _index: '${indexName}', data: {name: "1984", author: "George Orwell", release_date: "1985-06-01", page_count: 328${ingestDocumentKeys}} } }, + { index: { _index: '${indexName}', data: {name: "Fahrenheit 451", author: "Ray Bradbury", release_date: "1953-10-15", page_count: 227${ingestDocumentKeys}} } }, + { index: { _index: '${indexName}', data: {name: "Brave New World", author: "Aldous Huxley", release_date: "1932-06-01", page_count: 268${ingestDocumentKeys}} } }, + { index: { _index: '${indexName}', data: {name: "The Handmaid's Tale", author: "Margaret Atwood", release_date: "1985-06-01", page_count: 311${ingestDocumentKeys}} } } ] -client.bulk(body: documents)`, +client.bulk(body: documents${ingestPipeline ? `, pipeline: "${ingestPipeline}"` : ''})`; + }, ingestDataIndex: '', installClient: `$ gem install elasticsearch`, name: i18n.translate('xpack.enterpriseSearch.languages.ruby', { diff --git a/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/search_index/overview.logic.ts b/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/search_index/overview.logic.ts index 34584d394b93a..dbe0610b4a855 100644 --- a/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/search_index/overview.logic.ts +++ b/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/search_index/overview.logic.ts @@ -7,7 +7,9 @@ import { kea, MakeLogicType } from 'kea'; +import { DEFAULT_PIPELINE_VALUES } from '../../../../../common/constants'; import { Status } from '../../../../../common/types/api'; +import { IngestPipelineParams } from '../../../../../common/types/connectors'; import { KibanaLogic } from '../../../shared/kibana'; import { GenerateApiKeyLogic } from '../../api/generate_api_key/generate_api_key_logic'; @@ -15,6 +17,10 @@ import { CachedFetchIndexApiLogic, CachedFetchIndexApiLogicActions, } from '../../api/index/cached_fetch_index_api_logic'; +import { + FetchIndexPipelineParametersApiLogic, + FetchIndexPipelineParametersApiLogicActions, +} from '../../api/pipelines/fetch_index_pipeline_parameters'; import { SEARCH_INDICES_PATH } from '../../routes'; @@ -22,6 +28,7 @@ interface OverviewLogicActions { apiError: CachedFetchIndexApiLogicActions['apiError']; apiReset: typeof GenerateApiKeyLogic.actions.apiReset; closeGenerateModal: void; + fetchIndexPipelineParameters: FetchIndexPipelineParametersApiLogicActions['makeRequest']; openGenerateModal: void; toggleClientsPopover: void; toggleManageApiKeyPopover: void; @@ -32,6 +39,8 @@ interface OverviewLogicValues { apiKeyData: typeof GenerateApiKeyLogic.values.data; apiKeyStatus: typeof GenerateApiKeyLogic.values.status; indexData: typeof CachedFetchIndexApiLogic.values.indexData; + indexPipelineData: typeof FetchIndexPipelineParametersApiLogic.values.data; + indexPipelineParameters: IngestPipelineParams; isClientsPopoverOpen: boolean; isError: boolean; isGenerateModalOpen: boolean; @@ -48,12 +57,21 @@ export const OverviewLogic = kea ({ @@ -95,6 +113,11 @@ export const OverviewLogic = kea apiKeyStatus === Status.SUCCESS ? apiKeyData.apiKey.encoded : '', ], + indexPipelineParameters: [ + () => [selectors.indexPipelineData], + (indexPipelineData: typeof FetchIndexPipelineParametersApiLogic.values.data) => + indexPipelineData ?? DEFAULT_PIPELINE_VALUES, + ], isError: [() => [selectors.status], (status) => status === Status.ERROR], isLoading: [ () => [selectors.status, selectors.indexData], diff --git a/x-pack/plugins/enterprise_search/server/lib/pipelines/get_index_pipeline.test.ts b/x-pack/plugins/enterprise_search/server/lib/pipelines/get_index_pipeline.test.ts new file mode 100644 index 0000000000000..58476ed18b741 --- /dev/null +++ b/x-pack/plugins/enterprise_search/server/lib/pipelines/get_index_pipeline.test.ts @@ -0,0 +1,164 @@ +/* + * Copyright 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 { IScopedClusterClient } from '@kbn/core/server'; + +import { DEFAULT_PIPELINE_VALUES } from '../../../common/constants'; + +import { getIndexPipelineParameters } from './get_index_pipeline'; + +describe('getIndexPipelineParameters', () => { + const defaultMockClient = () => ({ + asCurrentUser: { + get: jest.fn().mockResolvedValue({}), + indices: { + getMapping: jest.fn().mockResolvedValue({}), + }, + ingest: { + getPipeline: jest.fn().mockRejectedValue('Pipeline not found'), + }, + search: jest.fn().mockResolvedValue({ + hits: { + hits: [], + }, + }), + }, + }); + let mockClient = defaultMockClient(); + let client: IScopedClusterClient; + beforeEach(() => { + jest.resetAllMocks(); + + mockClient = defaultMockClient(); + client = mockClient as unknown as IScopedClusterClient; + }); + it('returns default pipeline if custom not found', async () => { + await expect(getIndexPipelineParameters('my-index', client)).resolves.toEqual( + DEFAULT_PIPELINE_VALUES + ); + }); + it('returns connector pipeline params if found', async () => { + mockClient.asCurrentUser.search = jest.fn().mockResolvedValue({ + hits: { + hits: [ + { + _id: 'unit-test', + _source: {}, + }, + ], + }, + }); + mockClient.asCurrentUser.get = jest.fn().mockResolvedValue({ + _id: 'unit-test', + _source: { + pipeline: { + extract_binary_content: false, + name: 'unit-test-pipeline', + reduce_whitespace: true, + run_ml_inference: true, + }, + }, + }); + await expect(getIndexPipelineParameters('my-index', client)).resolves.toEqual({ + extract_binary_content: false, + name: 'unit-test-pipeline', + reduce_whitespace: true, + run_ml_inference: true, + }); + }); + it('returns default pipeline if fetch custom throws', async () => { + mockClient.asCurrentUser.ingest.getPipeline = jest.fn().mockRejectedValue('Boom'); + + await expect(getIndexPipelineParameters('my-index', client)).resolves.toEqual( + DEFAULT_PIPELINE_VALUES + ); + }); + it('returns custom pipeline if found', async () => { + mockClient.asCurrentUser.ingest.getPipeline = jest.fn().mockResolvedValueOnce({ + 'my-index': { + fake: 'ingest-pipeline', + }, + }); + + await expect(getIndexPipelineParameters('my-index', client)).resolves.toEqual({ + extract_binary_content: true, + name: 'my-index', + reduce_whitespace: true, + run_ml_inference: false, + }); + }); + it('returns default connector index pipeline if found in mapping', async () => { + mockClient.asCurrentUser.indices.getMapping = jest.fn().mockResolvedValueOnce({ + '.elastic-connectors-v1': { + mappings: { + _meta: { + pipeline: { + default_extract_binary_content: false, + default_name: 'my-unit-test-index', + default_reduce_whitespace: false, + default_run_ml_inference: true, + }, + }, + }, + }, + }); + + await expect(getIndexPipelineParameters('my-index', client)).resolves.toEqual({ + extract_binary_content: false, + name: 'my-unit-test-index', + reduce_whitespace: false, + run_ml_inference: true, + }); + }); + it('returns connector params with custom pipeline name', async () => { + mockClient.asCurrentUser.indices.getMapping = jest.fn().mockResolvedValueOnce({ + '.elastic-connectors-v1': { + mappings: { + _meta: { + pipeline: { + default_extract_binary_content: false, + default_name: 'my-unit-test-index', + default_reduce_whitespace: false, + default_run_ml_inference: true, + }, + }, + }, + }, + }); + mockClient.asCurrentUser.ingest.getPipeline = jest.fn().mockResolvedValueOnce({ + 'my-index': { + fake: 'ingest-pipeline', + }, + }); + + await expect(getIndexPipelineParameters('my-index', client)).resolves.toEqual({ + extract_binary_content: false, + name: 'my-index', + reduce_whitespace: false, + run_ml_inference: true, + }); + }); + it('returns defaults if get mapping fails with IndexNotFoundException', async () => { + mockClient.asCurrentUser.indices.getMapping = jest.fn().mockRejectedValue({ + meta: { + body: { + error: { + type: 'index_not_found_exception', + }, + }, + }, + }); + + await expect(getIndexPipelineParameters('my-index', client)).resolves.toEqual( + DEFAULT_PIPELINE_VALUES + ); + }); + it('throws if get mapping fails with non-IndexNotFoundException', async () => { + mockClient.asCurrentUser.indices.getMapping = jest.fn().mockRejectedValue('Boom'); + + await expect(getIndexPipelineParameters('my-index', client)).rejects.toEqual('Boom'); + }); +}); diff --git a/x-pack/plugins/enterprise_search/server/lib/pipelines/get_index_pipeline.ts b/x-pack/plugins/enterprise_search/server/lib/pipelines/get_index_pipeline.ts new file mode 100644 index 0000000000000..45813a109de76 --- /dev/null +++ b/x-pack/plugins/enterprise_search/server/lib/pipelines/get_index_pipeline.ts @@ -0,0 +1,43 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { IScopedClusterClient } from '@kbn/core/server'; + +import { IngestPipelineParams } from '../../../common/types/connectors'; +import { fetchConnectorByIndexName } from '../connectors/fetch_connectors'; + +import { getDefaultPipeline } from './get_default_pipeline'; + +export const getIndexPipelineParameters = async ( + indexName: string, + client: IScopedClusterClient +): Promise => { + // Get the default pipeline data and check for a custom pipeline in parallel + // we want to throw the error if getDefaultPipeline() fails so we're not catching it on purpose + const [defaultPipeline, connector, customPipelineResp] = await Promise.all([ + getDefaultPipeline(client), + fetchConnectorByIndexName(client, indexName), + client.asCurrentUser.ingest + .getPipeline({ + id: `${indexName}`, + }) + .catch(() => null), + ]); + if (connector && connector.pipeline) { + return connector.pipeline; + } + let pipelineName = defaultPipeline.name; + + if (customPipelineResp && customPipelineResp[indexName]) { + pipelineName = indexName; + } + + return { + ...defaultPipeline, + name: pipelineName, + }; +}; diff --git a/x-pack/plugins/enterprise_search/server/routes/enterprise_search/indices.ts b/x-pack/plugins/enterprise_search/server/routes/enterprise_search/indices.ts index b41f391fd66f6..25342217e5192 100644 --- a/x-pack/plugins/enterprise_search/server/routes/enterprise_search/indices.ts +++ b/x-pack/plugins/enterprise_search/server/routes/enterprise_search/indices.ts @@ -44,6 +44,7 @@ import { startMlModelDownload } from '../../lib/ml/start_ml_model_download'; import { createIndexPipelineDefinitions } from '../../lib/pipelines/create_pipeline_definitions'; import { deleteIndexPipelines } from '../../lib/pipelines/delete_pipelines'; import { getCustomPipelines } from '../../lib/pipelines/get_custom_pipelines'; +import { getIndexPipelineParameters } from '../../lib/pipelines/get_index_pipeline'; import { getPipeline } from '../../lib/pipelines/get_pipeline'; import { getMlInferencePipelines } from '../../lib/pipelines/ml_inference/get_ml_inference_pipelines'; import { revertCustomPipeline } from '../../lib/pipelines/revert_custom_pipeline'; @@ -354,6 +355,26 @@ export function registerIndexRoutes({ }) ); + router.get( + { + path: '/internal/enterprise_search/indices/{indexName}/pipeline_parameters', + validate: { + params: schema.object({ + indexName: schema.string(), + }), + }, + }, + elasticsearchErrorHandler(log, async (context, request, response) => { + const indexName = decodeURIComponent(request.params.indexName); + const { client } = (await context.core).elasticsearch; + const body = await getIndexPipelineParameters(indexName, client); + return response.ok({ + body, + headers: { 'content-type': 'application/json' }, + }); + }) + ); + router.get( { path: '/internal/enterprise_search/indices/{indexName}/ml_inference/pipeline_processors', diff --git a/x-pack/plugins/exploratory_view/public/components/shared/exploratory_view/components/url_search/selectable_url_list.tsx b/x-pack/plugins/exploratory_view/public/components/shared/exploratory_view/components/url_search/selectable_url_list.tsx index d7422c35ebacf..714b8bd629e44 100644 --- a/x-pack/plugins/exploratory_view/public/components/shared/exploratory_view/components/url_search/selectable_url_list.tsx +++ b/x-pack/plugins/exploratory_view/public/components/shared/exploratory_view/components/url_search/selectable_url_list.tsx @@ -136,6 +136,7 @@ export function SelectableUrlList({ closePopover()} aria-label={i18n.translate('xpack.exploratoryView.search.url.close', { diff --git a/x-pack/plugins/exploratory_view/public/components/shared/exploratory_view/configurations/lens_attributes.ts b/x-pack/plugins/exploratory_view/public/components/shared/exploratory_view/configurations/lens_attributes.ts index f7503acf77179..10225de1a1ad4 100644 --- a/x-pack/plugins/exploratory_view/public/components/shared/exploratory_view/configurations/lens_attributes.ts +++ b/x-pack/plugins/exploratory_view/public/components/shared/exploratory_view/configurations/lens_attributes.ts @@ -424,6 +424,7 @@ export class LensAttributes { operationType: capitalize(operationType), }, }), + customLabel: true, filter: columnFilter, operationType, params: diff --git a/x-pack/plugins/exploratory_view/public/components/shared/exploratory_view/configurations/test_data/mobile_test_attribute.ts b/x-pack/plugins/exploratory_view/public/components/shared/exploratory_view/configurations/test_data/mobile_test_attribute.ts index c083962b0e21b..7e479fad1db0d 100644 --- a/x-pack/plugins/exploratory_view/public/components/shared/exploratory_view/configurations/test_data/mobile_test_attribute.ts +++ b/x-pack/plugins/exploratory_view/public/components/shared/exploratory_view/configurations/test_data/mobile_test_attribute.ts @@ -48,6 +48,7 @@ export const testMobileKPIAttr = { params: {}, scale: 'ratio', sourceField: 'system.memory.usage', + customLabel: true, dataType: 'number', filter: { query: diff --git a/x-pack/plugins/exploratory_view/public/components/shared/exploratory_view/series_editor/columns/series_actions.tsx b/x-pack/plugins/exploratory_view/public/components/shared/exploratory_view/series_editor/columns/series_actions.tsx index a2e78fb36c41f..fec7360b253f2 100644 --- a/x-pack/plugins/exploratory_view/public/components/shared/exploratory_view/series_editor/columns/series_actions.tsx +++ b/x-pack/plugins/exploratory_view/public/components/shared/exploratory_view/series_editor/columns/series_actions.tsx @@ -72,6 +72,7 @@ export function SeriesActions({ seriesId, series, seriesConfig, onEditClick }: P const popoverButton = ( setIsEditingEnabled(!isEditingEnabled)} iconType="pencil" aria-label={i18n.translate('xpack.exploratoryView.expView.seriesEditor.editName', { diff --git a/x-pack/plugins/fleet/common/constants/routes.ts b/x-pack/plugins/fleet/common/constants/routes.ts index e40b9f8606fdb..d675b1b42bb36 100644 --- a/x-pack/plugins/fleet/common/constants/routes.ts +++ b/x-pack/plugins/fleet/common/constants/routes.ts @@ -204,3 +204,16 @@ export const DOWNLOAD_SOURCE_API_ROUTES = { UPDATE_PATTERN: `${API_ROOT}/agent_download_sources/{sourceId}`, DELETE_PATTERN: `${API_ROOT}/agent_download_sources/{sourceId}`, }; + +// API versioning constants +export const API_VERSIONS = { + public: { + v1: '2023-10-31', + }, + internal: { + v1: '1', + }, +}; + +export const PUBLIC_API_ACCESS = 'public'; +export const INTERNAL_API_ACCESS = 'internal'; diff --git a/x-pack/plugins/fleet/cypress/e2e/a11y/home_page.cy.ts b/x-pack/plugins/fleet/cypress/e2e/a11y/home_page.cy.ts index 39debfc94662a..7af771d60f9ef 100644 --- a/x-pack/plugins/fleet/cypress/e2e/a11y/home_page.cy.ts +++ b/x-pack/plugins/fleet/cypress/e2e/a11y/home_page.cy.ts @@ -33,6 +33,8 @@ import { AGENT_POLICY_NAME_LINK } from '../../screens/integrations'; import { cleanupAgentPolicies, unenrollAgent } from '../../tasks/cleanup'; import { setFleetServerHost } from '../../tasks/fleet_server'; +import { API_VERSIONS } from '../../../common/constants'; + describe('Home page', () => { before(() => { setFleetServerHost('https://fleetserver:8220'); @@ -152,7 +154,7 @@ describe('Home page', () => { method: 'POST', url: '/api/fleet/agent_policies', body: { name: 'Agent policy for A11y test', namespace: 'default', id: 'agent-policy-a11y' }, - headers: { 'kbn-xsrf': 'cypress' }, + headers: { 'kbn-xsrf': 'cypress', 'Elastic-Api-Version': `${API_VERSIONS.public.v1}` }, }); }); beforeEach(() => { @@ -164,7 +166,7 @@ describe('Home page', () => { method: 'POST', url: '/api/fleet/agent_policies/delete', body: { agentPolicyId: 'agent-policy-a11y' }, - headers: { 'kbn-xsrf': 'kibana' }, + headers: { 'kbn-xsrf': 'kibana', 'Elastic-Api-Version': `${API_VERSIONS.public.v1}` }, }); }); it('Uninstall Tokens Table', () => { diff --git a/x-pack/plugins/fleet/cypress/e2e/agent_binary_download_source.cy.ts b/x-pack/plugins/fleet/cypress/e2e/agent_binary_download_source.cy.ts index 095a87a28e130..3d5fa3f98fe25 100644 --- a/x-pack/plugins/fleet/cypress/e2e/agent_binary_download_source.cy.ts +++ b/x-pack/plugins/fleet/cypress/e2e/agent_binary_download_source.cy.ts @@ -15,6 +15,8 @@ import { cleanupDownloadSources } from '../tasks/cleanup'; import { FLEET, navigateTo } from '../tasks/navigation'; import { CONFIRM_MODAL } from '../screens/navigation'; +import { API_VERSIONS } from '../../common/constants'; + describe('Agent binary download source section', () => { beforeEach(() => { cleanupDownloadSources(); @@ -80,7 +82,7 @@ describe('Agent binary download source section', () => { id: 'fleet-local-registry', host: 'https://new-custom-host.co', }, - headers: { 'kbn-xsrf': 'kibana' }, + headers: { 'kbn-xsrf': 'kibana', 'Elastic-Api-Version': `${API_VERSIONS.public.v1}` }, }); cy.request({ method: 'POST', @@ -93,7 +95,7 @@ describe('Agent binary download source section', () => { id: 'new-agent-policy', download_source_id: 'fleet-local-registry', }, - headers: { 'kbn-xsrf': 'kibana' }, + headers: { 'kbn-xsrf': 'kibana', 'Elastic-Api-Version': `${API_VERSIONS.public.v1}` }, }).then((response: any) => { navigateTo('app/fleet/policies/new-agent-policy/settings'); cy.getBySel(AGENT_POLICY_FORM.DOWNLOAD_SOURCE_SELECT).contains('Custom Host'); diff --git a/x-pack/plugins/fleet/cypress/e2e/agents/agent_list.cy.ts b/x-pack/plugins/fleet/cypress/e2e/agents/agent_list.cy.ts index fd85e05e51aec..1e3bf95bb2356 100644 --- a/x-pack/plugins/fleet/cypress/e2e/agents/agent_list.cy.ts +++ b/x-pack/plugins/fleet/cypress/e2e/agents/agent_list.cy.ts @@ -13,6 +13,8 @@ import { deleteFleetServerDocs, deleteAgentDocs, cleanupAgentPolicies } from '.. import type { CreateAgentPolicyRequest } from '../../../common/types'; import { setUISettings } from '../../tasks/ui_settings'; +import { API_VERSIONS } from '../../../common/constants'; + const createAgentDocs = (kibanaVersion: string) => [ createAgentDoc('agent-1', 'policy-1'), // this agent will have upgrade available createAgentDoc('agent-2', 'policy-2', 'error', kibanaVersion), @@ -66,7 +68,7 @@ function createAgentPolicy(body: CreateAgentPolicyRequest['body']) { cy.request({ method: 'POST', url: '/api/fleet/agent_policies', - headers: { 'kbn-xsrf': 'xx' }, + headers: { 'kbn-xsrf': 'xx', 'Elastic-Api-Version': `${API_VERSIONS.public.v1}` }, body, }); } diff --git a/x-pack/plugins/fleet/cypress/e2e/enrollment_token.cy.ts b/x-pack/plugins/fleet/cypress/e2e/enrollment_token.cy.ts index 84b910c856dfb..57149b435e433 100644 --- a/x-pack/plugins/fleet/cypress/e2e/enrollment_token.cy.ts +++ b/x-pack/plugins/fleet/cypress/e2e/enrollment_token.cy.ts @@ -8,6 +8,8 @@ import { cleanupAgentPolicies } from '../tasks/cleanup'; import { ENROLLMENT_TOKENS } from '../screens/fleet'; +import { API_VERSIONS } from '../../common/constants'; + describe('Enrollment token page', () => { before(() => { cy.request({ @@ -20,7 +22,7 @@ describe('Enrollment token page', () => { monitoring_enabled: ['logs', 'metrics'], id: 'agent-policy-1', }, - headers: { 'kbn-xsrf': 'cypress' }, + headers: { 'kbn-xsrf': 'cypress', 'Elastic-Api-Version': `${API_VERSIONS.public.v1}` }, }); }); diff --git a/x-pack/plugins/fleet/cypress/e2e/fleet_agent_flyout.cy.ts b/x-pack/plugins/fleet/cypress/e2e/fleet_agent_flyout.cy.ts index b907fb8ef4c79..6ca1eb669da19 100644 --- a/x-pack/plugins/fleet/cypress/e2e/fleet_agent_flyout.cy.ts +++ b/x-pack/plugins/fleet/cypress/e2e/fleet_agent_flyout.cy.ts @@ -11,6 +11,8 @@ import { createAgentDoc } from '../tasks/agents'; import { setFleetServerHost } from '../tasks/fleet_server'; import { FLEET, navigateTo } from '../tasks/navigation'; +import { API_VERSIONS } from '../../common/constants'; + const FLEET_SERVER_POLICY_ID = 'fleet-server-policy'; function cleanUp() { @@ -28,7 +30,7 @@ describe('Fleet add agent flyout', () => { cy.request({ method: 'POST', url: '/api/fleet/agent_policies', - headers: { 'kbn-xsrf': 'xx' }, + headers: { 'kbn-xsrf': 'xx', 'Elastic-Api-Version': `${API_VERSIONS.public.v1}` }, body: { id: FLEET_SERVER_POLICY_ID, name: 'Fleet Server policy', diff --git a/x-pack/plugins/fleet/cypress/e2e/integrations_real.cy.ts b/x-pack/plugins/fleet/cypress/e2e/integrations_real.cy.ts index c3f7f117f8f36..1ce6636198fe7 100644 --- a/x-pack/plugins/fleet/cypress/e2e/integrations_real.cy.ts +++ b/x-pack/plugins/fleet/cypress/e2e/integrations_real.cy.ts @@ -31,6 +31,7 @@ import { import { LOADING_SPINNER, CONFIRM_MODAL } from '../screens/navigation'; import { ADD_PACKAGE_POLICY_BTN } from '../screens/fleet'; import { cleanupAgentPolicies } from '../tasks/cleanup'; +import { API_VERSIONS } from '../../common/constants'; function setupIntegrations() { cy.intercept( @@ -135,7 +136,7 @@ describe('Add Integration - Real API', () => { namespace: 'default', monitoring_enabled: ['logs', 'metrics'], }, - headers: { 'kbn-xsrf': 'cypress' }, + headers: { 'kbn-xsrf': 'cypress', 'Elastic-Api-Version': `${API_VERSIONS.public.v1}` }, }); cy.request('/api/fleet/agent_policies').then((response: any) => { diff --git a/x-pack/plugins/fleet/cypress/e2e/package_policy_pipelines_and_mappings_real.cy.ts b/x-pack/plugins/fleet/cypress/e2e/package_policy_pipelines_and_mappings_real.cy.ts index 3fed3fef1d94b..60c75327f06ad 100644 --- a/x-pack/plugins/fleet/cypress/e2e/package_policy_pipelines_and_mappings_real.cy.ts +++ b/x-pack/plugins/fleet/cypress/e2e/package_policy_pipelines_and_mappings_real.cy.ts @@ -17,6 +17,8 @@ const INPUT_TEST_PACKAGE = 'input_package-1.0.0'; const INTEGRATION_TEST_PACKAGE = 'logs_integration-1.0.0'; const INTEGRATION_TEST_PACKAGE_NO_DATASET = 'logs_int_no_dataset-1.0.0'; +import { API_VERSIONS } from '../../common/constants'; + describe('Input package create and edit package policy', () => { const agentPolicyId = 'test-input-package-policy'; const agentPolicyName = 'Test input package policy'; @@ -45,7 +47,7 @@ describe('Input package create and edit package policy', () => { namespace: 'default', monitoring_enabled: [], }, - headers: { 'kbn-xsrf': 'cypress' }, + headers: { 'kbn-xsrf': 'cypress', 'Elastic-Api-Version': `${API_VERSIONS.public.v1}` }, }); }); after(() => { @@ -53,7 +55,7 @@ describe('Input package create and edit package policy', () => { cy.request({ method: 'POST', url: `/api/fleet/agent_policies/delete`, - headers: { 'kbn-xsrf': 'cypress' }, + headers: { 'kbn-xsrf': 'cypress', 'Elastic-Api-Version': `${API_VERSIONS.public.v1}` }, body: JSON.stringify({ agentPolicyId, }), @@ -120,7 +122,7 @@ describe('Integration package with custom dataset create and edit package policy namespace: 'default', monitoring_enabled: [], }, - headers: { 'kbn-xsrf': 'cypress' }, + headers: { 'kbn-xsrf': 'cypress', 'Elastic-Api-Version': `${API_VERSIONS.public.v1}` }, }); }); after(() => { @@ -128,7 +130,7 @@ describe('Integration package with custom dataset create and edit package policy cy.request({ method: 'POST', url: `/api/fleet/agent_policies/delete`, - headers: { 'kbn-xsrf': 'cypress' }, + headers: { 'kbn-xsrf': 'cypress', 'Elastic-Api-Version': `${API_VERSIONS.public.v1}` }, body: JSON.stringify({ agentPolicyId, }), @@ -184,7 +186,7 @@ describe('Integration package with fixed dataset create and edit package policy' namespace: 'default', monitoring_enabled: [], }, - headers: { 'kbn-xsrf': 'cypress' }, + headers: { 'kbn-xsrf': 'cypress', 'Elastic-Api-Version': `${API_VERSIONS.public.v1}` }, }); }); after(() => { @@ -192,7 +194,7 @@ describe('Integration package with fixed dataset create and edit package policy' cy.request({ method: 'POST', url: `/api/fleet/agent_policies/delete`, - headers: { 'kbn-xsrf': 'cypress' }, + headers: { 'kbn-xsrf': 'cypress', 'Elastic-Api-Version': `${API_VERSIONS.public.v1}` }, body: JSON.stringify({ agentPolicyId, }), diff --git a/x-pack/plugins/fleet/cypress/e2e/uninstall_token.cy.ts b/x-pack/plugins/fleet/cypress/e2e/uninstall_token.cy.ts index 212e7aa0b3a9e..3832feefe10e1 100644 --- a/x-pack/plugins/fleet/cypress/e2e/uninstall_token.cy.ts +++ b/x-pack/plugins/fleet/cypress/e2e/uninstall_token.cy.ts @@ -11,6 +11,8 @@ import { cleanupAgentPolicies } from '../tasks/cleanup'; import { UNINSTALL_TOKENS } from '../screens/fleet'; import type { GetUninstallTokenResponse } from '../../common/types/rest_spec/uninstall_token'; +import { API_VERSIONS } from '../../common/constants'; + describe('Uninstall token page', () => { before(() => { cleanupAgentPolicies(); @@ -78,7 +80,7 @@ describe('Uninstall token page', () => { method: 'POST', url: '/api/fleet/agent_policies', body: { name: `Agent policy ${i}00`, namespace: 'default', id: `agent-policy-${i}00` }, - headers: { 'kbn-xsrf': 'cypress' }, + headers: { 'kbn-xsrf': 'cypress', 'Elastic-Api-Version': `${API_VERSIONS.public.v1}` }, }); } }; diff --git a/x-pack/plugins/fleet/cypress/plugins/index.ts b/x-pack/plugins/fleet/cypress/plugins/index.ts index ee01dd20c470c..23f50d0e23197 100644 --- a/x-pack/plugins/fleet/cypress/plugins/index.ts +++ b/x-pack/plugins/fleet/cypress/plugins/index.ts @@ -12,6 +12,8 @@ import fs from 'fs'; import fetch from 'node-fetch'; import { createEsClientForTesting } from '@kbn/test'; +import { API_VERSIONS } from '../../common/constants'; + const plugin: Cypress.PluginConfig = (on, config) => { const client = createEsClientForTesting({ esUrl: config.env.ELASTICSEARCH_URL, @@ -22,8 +24,9 @@ const plugin: Cypress.PluginConfig = (on, config) => { path: string; body?: any; contentType?: string; + version?: string; }) { - const { method, path, body, contentType } = opts; + const { method, path, body, contentType, version } = opts; const Authorization = `Basic ${Buffer.from( `elastic:${config.env.ELASTICSEARCH_PASSWORD}` ).toString('base64')}`; @@ -35,6 +38,7 @@ const plugin: Cypress.PluginConfig = (on, config) => { 'kbn-xsrf': 'cypress', 'Content-Type': contentType || 'application/json', Authorization, + ...(version ? { 'Elastic-Api-Version': version } : {}), }, ...(body ? { body } : {}), }); @@ -75,6 +79,7 @@ const plugin: Cypress.PluginConfig = (on, config) => { path: '/api/fleet/epm/packages', body: Buffer.from(zipContent, 'base64'), contentType: 'application/zip', + version: API_VERSIONS.public.v1, }); }, @@ -82,6 +87,7 @@ const plugin: Cypress.PluginConfig = (on, config) => { return kibanaFetch({ method: 'DELETE', path: `/api/fleet/epm/packages/${packageName}`, + version: API_VERSIONS.public.v1, }); }, }); diff --git a/x-pack/plugins/fleet/cypress/tasks/cleanup.ts b/x-pack/plugins/fleet/cypress/tasks/cleanup.ts index 2a1e57271f08a..8ca9a1cb32d25 100644 --- a/x-pack/plugins/fleet/cypress/tasks/cleanup.ts +++ b/x-pack/plugins/fleet/cypress/tasks/cleanup.ts @@ -4,6 +4,7 @@ * 2.0; you may not use this file except in compliance with the Elastic License * 2.0. */ +import { API_VERSIONS } from '../../common/constants'; export function cleanupAgentPolicies() { cy.request('/api/fleet/agent_policies').then((response: any) => { @@ -14,7 +15,7 @@ export function cleanupAgentPolicies() { method: 'POST', url: '/api/fleet/agent_policies/delete', body: { agentPolicyId: policy.id }, - headers: { 'kbn-xsrf': 'kibana' }, + headers: { 'kbn-xsrf': 'kibana', 'Elastic-Api-Version': `${API_VERSIONS.public.v1}` }, }); }); }); @@ -28,7 +29,7 @@ export function unenrollAgent() { method: 'POST', url: `api/fleet/agents/${agent.id}/unenroll`, body: { revoke: true }, - headers: { 'kbn-xsrf': 'kibana' }, + headers: { 'kbn-xsrf': 'kibana', 'Elastic-Api-Version': `${API_VERSIONS.public.v1}` }, }); }); } @@ -43,7 +44,7 @@ export function cleanupDownloadSources() { cy.request({ method: 'DELETE', url: `/api/fleet/agent_download_sources/${ds.id}`, - headers: { 'kbn-xsrf': 'kibana' }, + headers: { 'kbn-xsrf': 'kibana', 'Elastic-Api-Version': `${API_VERSIONS.public.v1}` }, }); }); }); diff --git a/x-pack/plugins/fleet/cypress/tasks/fleet_server.ts b/x-pack/plugins/fleet/cypress/tasks/fleet_server.ts index 2b696f7d7edfb..4f9df31eeba60 100644 --- a/x-pack/plugins/fleet/cypress/tasks/fleet_server.ts +++ b/x-pack/plugins/fleet/cypress/tasks/fleet_server.ts @@ -4,6 +4,8 @@ * 2.0; you may not use this file except in compliance with the Elastic License * 2.0. */ +import { API_VERSIONS } from '../../common/constants'; + import { createAgentDoc } from './agents'; const FLEET_SERVER_POLICY_ID = 'fleet-server-policy'; @@ -66,7 +68,7 @@ export function setFleetServerHost(host = 'https://fleetserver:8220') { cy.request({ method: 'POST', url: '/api/fleet/fleet_server_hosts', - headers: { 'kbn-xsrf': 'xx' }, + headers: { 'kbn-xsrf': 'xx', 'Elastic-Api-Version': `${API_VERSIONS.public.v1}` }, body: { name: 'Default host', host_urls: [host], diff --git a/x-pack/plugins/fleet/cypress/tasks/integrations.ts b/x-pack/plugins/fleet/cypress/tasks/integrations.ts index cef6322985d06..1cbb68cd58bff 100644 --- a/x-pack/plugins/fleet/cypress/tasks/integrations.ts +++ b/x-pack/plugins/fleet/cypress/tasks/integrations.ts @@ -15,6 +15,8 @@ import { import { AGENT_POLICY_SYSTEM_MONITORING_CHECKBOX, EXISTING_HOSTS_TAB } from '../screens/fleet'; import { TOAST_CLOSE_BTN, CONFIRM_MODAL } from '../screens/navigation'; +import { API_VERSIONS } from '../../common/constants'; + export const addIntegration = ({ useExistingPolicy } = { useExistingPolicy: false }) => { cy.getBySel(ADD_INTEGRATION_POLICY_BTN).click(); if (useExistingPolicy) { @@ -54,7 +56,7 @@ export const deleteIntegrations = async () => { response.body.items.forEach((policy: any) => ids.push(policy.id)); cy.request({ url: `/api/fleet/package_policies/delete`, - headers: { 'kbn-xsrf': 'cypress' }, + headers: { 'kbn-xsrf': 'cypress', 'Elastic-Api-Version': `${API_VERSIONS.public.v1}` }, body: `{ "packagePolicyIds": ${JSON.stringify(ids)}, "force": true }`, method: 'POST', }); @@ -64,7 +66,7 @@ export const deleteIntegrations = async () => { export const installPackageWithVersion = (integration: string, version: string) => { cy.request({ url: `/api/fleet/epm/packages/${integration}/${version}`, - headers: { 'kbn-xsrf': 'cypress' }, + headers: { 'kbn-xsrf': 'cypress', 'Elastic-Api-Version': `${API_VERSIONS.public.v1}` }, body: '{ "force": true }', method: 'POST', }); diff --git a/x-pack/plugins/fleet/public/applications/fleet/sections/agent_policy/components/agent_policy_delete_provider.tsx b/x-pack/plugins/fleet/public/applications/fleet/sections/agent_policy/components/agent_policy_delete_provider.tsx index 96bbc5b82565e..5a1ca420a6227 100644 --- a/x-pack/plugins/fleet/public/applications/fleet/sections/agent_policy/components/agent_policy_delete_provider.tsx +++ b/x-pack/plugins/fleet/public/applications/fleet/sections/agent_policy/components/agent_policy_delete_provider.tsx @@ -12,6 +12,7 @@ import { FormattedMessage } from '@kbn/i18n-react'; import { AGENTS_PREFIX } from '../../../constants'; import { sendDeleteAgentPolicy, useStartServices, useConfig, sendRequest } from '../../../hooks'; +import { API_VERSIONS } from '../../../../../../common/constants'; interface Props { children: (deleteAgentPolicy: DeleteAgentPolicy) => React.ReactElement; @@ -104,6 +105,7 @@ export const AgentPolicyDeleteProvider: React.FunctionComponent = ({ query: { kuery: `${AGENTS_PREFIX}.policy_id : ${agentPolicyToCheck}`, }, + version: API_VERSIONS.public.v1, }); setAgentsCount(data?.total || 0); setIsLoadingAgentsCount(false); diff --git a/x-pack/plugins/fleet/public/components/package_policy_delete_provider.tsx b/x-pack/plugins/fleet/public/components/package_policy_delete_provider.tsx index 683ba398f6669..5e5a657e0d4b8 100644 --- a/x-pack/plugins/fleet/public/components/package_policy_delete_provider.tsx +++ b/x-pack/plugins/fleet/public/components/package_policy_delete_provider.tsx @@ -11,7 +11,7 @@ import { i18n } from '@kbn/i18n'; import { FormattedMessage } from '@kbn/i18n-react'; import { useStartServices, sendRequest, sendDeletePackagePolicy, useConfig } from '../hooks'; -import { AGENT_API_ROUTES, AGENTS_PREFIX } from '../../common/constants'; +import { AGENT_API_ROUTES, AGENTS_PREFIX, API_VERSIONS } from '../../common/constants'; import type { AgentPolicy } from '../types'; interface Props { @@ -55,6 +55,7 @@ export const PackagePolicyDeleteProvider: React.FunctionComponent = ({ perPage: 1, kuery: `${AGENTS_PREFIX}.policy_id : ${agentPolicy.id}`, }, + version: API_VERSIONS.public.v1, }); setAgentsCount(data?.total || 0); setIsLoadingAgentsCount(false); diff --git a/x-pack/plugins/fleet/public/hooks/use_request/agent_policy.ts b/x-pack/plugins/fleet/public/hooks/use_request/agent_policy.ts index 39372fcc5c508..ee0481bd373af 100644 --- a/x-pack/plugins/fleet/public/hooks/use_request/agent_policy.ts +++ b/x-pack/plugins/fleet/public/hooks/use_request/agent_policy.ts @@ -7,6 +7,7 @@ import { useQuery } from '@tanstack/react-query'; import { agentPolicyRouteService } from '../../services'; +import { API_VERSIONS } from '../../../common/constants'; import type { GetAgentPoliciesRequest, @@ -31,6 +32,7 @@ export const useGetAgentPolicies = (query?: GetAgentPoliciesRequest['query']) => path: agentPolicyRouteService.getListPath(), method: 'get', query, + version: API_VERSIONS.public.v1, }); }; @@ -40,6 +42,7 @@ export const useGetAgentPoliciesQuery = (query?: GetAgentPoliciesRequest['query' path: agentPolicyRouteService.getListPath(), method: 'get', query, + version: API_VERSIONS.public.v1, }) ); }; @@ -49,6 +52,7 @@ export const sendGetAgentPolicies = (query?: GetAgentPoliciesRequest['query']) = path: agentPolicyRouteService.getListPath(), method: 'get', query, + version: API_VERSIONS.public.v1, }); }; @@ -57,6 +61,7 @@ export const useGetOneAgentPolicy = (agentPolicyId: string | undefined) => { path: agentPolicyId ? agentPolicyRouteService.getInfoPath(agentPolicyId) : undefined, method: 'get', shouldSendRequest: !!agentPolicyId, + version: API_VERSIONS.public.v1, } as SendConditionalRequestConfig); }; @@ -64,6 +69,7 @@ export const useGetOneAgentPolicyFull = (agentPolicyId: string) => { return useRequest({ path: agentPolicyRouteService.getInfoFullPath(agentPolicyId), method: 'get', + version: API_VERSIONS.public.v1, }); }; @@ -75,6 +81,7 @@ export const sendGetOneAgentPolicyFull = ( path: agentPolicyRouteService.getInfoFullPath(agentPolicyId), method: 'get', query, + version: API_VERSIONS.public.v1, }); }; @@ -82,6 +89,7 @@ export const sendGetOneAgentPolicy = (agentPolicyId: string) => { return sendRequest({ path: agentPolicyRouteService.getInfoPath(agentPolicyId), method: 'get', + version: API_VERSIONS.public.v1, }); }; @@ -94,6 +102,7 @@ export const sendCreateAgentPolicy = ( method: 'post', body: JSON.stringify(body), query: withSysMonitoring ? { sys_monitoring: true } : {}, + version: API_VERSIONS.public.v1, }); }; @@ -105,6 +114,7 @@ export const sendUpdateAgentPolicy = ( path: agentPolicyRouteService.getUpdatePath(agentPolicyId), method: 'put', body: JSON.stringify(body), + version: API_VERSIONS.public.v1, }); }; @@ -124,6 +134,7 @@ export const sendDeleteAgentPolicy = (body: DeleteAgentPolicyRequest['body']) => path: agentPolicyRouteService.getDeletePath(), method: 'post', body: JSON.stringify(body), + version: API_VERSIONS.public.v1, }); }; @@ -132,6 +143,7 @@ export const sendResetOnePreconfiguredAgentPolicy = (agentPolicyId: string) => { path: agentPolicyRouteService.getResetOnePreconfiguredAgentPolicyPath(agentPolicyId), method: 'post', body: JSON.stringify({}), + version: API_VERSIONS.internal.v1, }); }; @@ -140,5 +152,6 @@ export const sendResetAllPreconfiguredAgentPolicies = () => { path: agentPolicyRouteService.getResetAllPreconfiguredAgentPolicyPath(), method: 'post', body: JSON.stringify({}), + version: API_VERSIONS.internal.v1, }); }; diff --git a/x-pack/plugins/fleet/public/hooks/use_request/agents.ts b/x-pack/plugins/fleet/public/hooks/use_request/agents.ts index f6a132e2090f1..9b43a600b62b8 100644 --- a/x-pack/plugins/fleet/public/hooks/use_request/agents.ts +++ b/x-pack/plugins/fleet/public/hooks/use_request/agents.ts @@ -18,6 +18,8 @@ import type { UpdateAgentRequest, } from '../../../common/types'; +import { API_VERSIONS } from '../../../common/constants'; + import { agentRouteService } from '../../services'; import type { @@ -62,6 +64,7 @@ export function useGetOneAgent( return useRequest({ path: agentRouteService.getInfoPath(agentId), method: 'get', + version: API_VERSIONS.public.v1, ...options, }); } @@ -70,22 +73,25 @@ export function useGetAgents(query: GetAgentsRequest['query'], options?: Request return useRequest({ method: 'get', path: agentRouteService.getListPath(), + version: API_VERSIONS.public.v1, query, ...options, }); } - export function useGetAgentsQuery( query: GetAgentsRequest['query'], options: Partial<{ enabled: boolean }> = {} ) { - return useQuery(['agents', query], () => sendGetAgents(query), { enabled: options.enabled }); + return useQuery(['agents', query], () => sendGetAgents(query), { + enabled: options.enabled, + }); } export function sendGetAgents(query: GetAgentsRequest['query'], options?: RequestOptions) { return sendRequest({ method: 'get', path: agentRouteService.getListPath(), + version: API_VERSIONS.public.v1, query, ...options, }); @@ -95,6 +101,7 @@ export function useGetAgentStatus(query: GetAgentStatusRequest['query'], options return useRequest({ method: 'get', path: agentRouteService.getStatusPath(), + version: API_VERSIONS.public.v1, query, ...options, }); @@ -104,6 +111,7 @@ export function sendGetAgentIncomingData(query: GetAgentIncomingDataRequest['que method: 'get', path: agentRouteService.getIncomingDataPath(), query, + version: API_VERSIONS.public.v1, }); } @@ -115,6 +123,7 @@ export function sendGetAgentStatus( method: 'get', path: agentRouteService.getStatusPath(), query, + version: API_VERSIONS.public.v1, ...options, }); } @@ -124,6 +133,7 @@ export function sendGetAgentTags(query: GetAgentsRequest['query'], options?: Req method: 'get', path: agentRouteService.getListTagsPath(), query, + version: API_VERSIONS.public.v1, ...options, }); } @@ -137,6 +147,7 @@ export function sendPostAgentReassign( method: 'post', path: agentRouteService.getReassignPath(agentId), body, + version: API_VERSIONS.public.v1, ...options, }); } @@ -149,6 +160,7 @@ export function sendPostBulkAgentReassign( method: 'post', path: agentRouteService.getBulkReassignPath(), body, + version: API_VERSIONS.public.v1, ...options, }); } @@ -162,6 +174,7 @@ export function sendPostAgentUnenroll( path: agentRouteService.getUnenrollPath(agentId), method: 'post', body, + version: API_VERSIONS.public.v1, ...options, }); } @@ -174,6 +187,7 @@ export function sendPostBulkAgentUnenroll( path: agentRouteService.getBulkUnenrollPath(), method: 'post', body, + version: API_VERSIONS.public.v1, ...options, }); } @@ -187,6 +201,7 @@ export function sendPostAgentUpgrade( path: agentRouteService.getUpgradePath(agentId), method: 'post', body, + version: API_VERSIONS.public.v1, ...options, }); } @@ -195,6 +210,7 @@ export function sendPostRequestDiagnostics(agentId: string, options?: RequestOpt return sendRequest({ path: agentRouteService.getRequestDiagnosticsPath(agentId), method: 'post', + version: API_VERSIONS.public.v1, ...options, }); } @@ -207,6 +223,7 @@ export function sendPostBulkRequestDiagnostics( path: agentRouteService.getBulkRequestDiagnosticsPath(), method: 'post', body, + version: API_VERSIONS.public.v1, ...options, }); } @@ -223,6 +240,7 @@ export const useGetAgentUploads = (agentId: string, options?: RequestOptions) => return useRequest({ path: agentRouteService.getListAgentUploads(agentId), method: 'get', + version: API_VERSIONS.public.v1, ...options, }); }; @@ -236,6 +254,7 @@ export function sendPostAgentAction( path: agentRouteService.getCreateActionPath(agentId), method: 'post', body, + version: API_VERSIONS.public.v1, ...options, }); } @@ -248,6 +267,7 @@ export function sendPostBulkAgentUpgrade( path: agentRouteService.getBulkUpgradePath(), method: 'post', body, + version: API_VERSIONS.public.v1, ...options, }); } @@ -256,6 +276,7 @@ export function sendGetActionStatus() { return sendRequest({ path: agentRouteService.getActionStatusPath(), method: 'get', + version: API_VERSIONS.public.v1, }); } @@ -263,6 +284,7 @@ export function sendPostCancelAction(actionId: string) { return sendRequest({ path: agentRouteService.getCancelActionPath(actionId), method: 'post', + version: API_VERSIONS.public.v1, }); } @@ -270,6 +292,7 @@ export function sendPostRetrieveAgentsByActions(body: PostRetrieveAgentsByAction return sendRequest({ path: agentRouteService.getAgentsByActionsPath(), method: 'post', + version: API_VERSIONS.public.v1, body, }); } @@ -283,6 +306,7 @@ export function sendPutAgentTagsUpdate( method: 'put', path: agentRouteService.getUpdatePath(agentId), body, + version: API_VERSIONS.public.v1, ...options, }); } @@ -295,6 +319,7 @@ export function sendPostBulkAgentTagsUpdate( method: 'post', path: agentRouteService.getBulkUpdateTagsPath(), body, + version: API_VERSIONS.public.v1, ...options, }); } @@ -303,5 +328,6 @@ export function sendGetAgentsAvailableVersions() { return sendRequest({ method: 'get', path: agentRouteService.getAvailableVersionsPath(), + version: API_VERSIONS.public.v1, }); } diff --git a/x-pack/plugins/fleet/public/hooks/use_request/app.ts b/x-pack/plugins/fleet/public/hooks/use_request/app.ts index 5236356180d83..321e296a1e584 100644 --- a/x-pack/plugins/fleet/public/hooks/use_request/app.ts +++ b/x-pack/plugins/fleet/public/hooks/use_request/app.ts @@ -9,6 +9,7 @@ import { useQuery } from '@tanstack/react-query'; import { appRoutesService } from '../../services'; import type { CheckPermissionsResponse, GenerateServiceTokenResponse } from '../../types'; +import { API_VERSIONS } from '../../../common/constants'; import { sendRequest, sendRequestForRq, useRequest } from './use_request'; @@ -17,6 +18,7 @@ export const sendGetPermissionsCheck = (fleetServerSetup?: boolean) => { path: appRoutesService.getCheckPermissionsPath(), method: 'get', query: { fleetServerSetup }, + version: API_VERSIONS.public.v1, }); }; @@ -24,6 +26,7 @@ export const sendGenerateServiceToken = () => { return sendRequest({ path: appRoutesService.getRegenerateServiceTokenPath(), method: 'post', + version: API_VERSIONS.public.v1, }); }; @@ -34,6 +37,7 @@ export const usePermissionCheckQuery = () => { sendRequestForRq({ path: appRoutesService.getCheckPermissionsPath(), method: 'get', + version: API_VERSIONS.public.v1, }) ); }; @@ -42,5 +46,6 @@ export const usePermissionCheck = () => { return useRequest({ path: appRoutesService.getCheckPermissionsPath(), method: 'get', + version: API_VERSIONS.public.v1, }); }; diff --git a/x-pack/plugins/fleet/public/hooks/use_request/data_stream.ts b/x-pack/plugins/fleet/public/hooks/use_request/data_stream.ts index 25215b6e623b1..7f136f628bafc 100644 --- a/x-pack/plugins/fleet/public/hooks/use_request/data_stream.ts +++ b/x-pack/plugins/fleet/public/hooks/use_request/data_stream.ts @@ -7,6 +7,7 @@ import { dataStreamRouteService } from '../../services'; import type { GetDataStreamsResponse } from '../../types'; +import { API_VERSIONS } from '../../../common/constants'; import { useRequest, sendRequest } from './use_request'; @@ -14,6 +15,7 @@ export const useGetDataStreams = () => { return useRequest({ path: dataStreamRouteService.getListPath(), method: 'get', + version: API_VERSIONS.public.v1, }); }; diff --git a/x-pack/plugins/fleet/public/hooks/use_request/download_source.ts b/x-pack/plugins/fleet/public/hooks/use_request/download_source.ts index 2b213501170e1..672fc6beddf09 100644 --- a/x-pack/plugins/fleet/public/hooks/use_request/download_source.ts +++ b/x-pack/plugins/fleet/public/hooks/use_request/download_source.ts @@ -12,12 +12,15 @@ import type { PutDownloadSourceRequest, } from '../../types'; +import { API_VERSIONS } from '../../../common/constants'; + import { useRequest, sendRequest } from './use_request'; export function useGetDownloadSources() { return useRequest({ method: 'get', path: downloadSourceRoutesService.getListPath(), + version: API_VERSIONS.public.v1, }); } @@ -35,6 +38,7 @@ export function sendPutDownloadSource( return sendRequest({ method: 'put', path: downloadSourceRoutesService.getUpdatePath(downloadSourceId), + version: API_VERSIONS.public.v1, body, }); } @@ -43,6 +47,7 @@ export function sendPostDownloadSource(body: PostDownloadSourceRequest['body']) return sendRequest({ method: 'post', path: downloadSourceRoutesService.getCreatePath(), + version: API_VERSIONS.public.v1, body, }); } @@ -51,5 +56,6 @@ export function sendDeleteDownloadSource(downloadSourceId: string) { return sendRequest({ method: 'delete', path: downloadSourceRoutesService.getDeletePath(downloadSourceId), + version: API_VERSIONS.public.v1, }); } diff --git a/x-pack/plugins/fleet/public/hooks/use_request/enrollment_api_keys.ts b/x-pack/plugins/fleet/public/hooks/use_request/enrollment_api_keys.ts index 7b3ddaada8001..c63360a73474d 100644 --- a/x-pack/plugins/fleet/public/hooks/use_request/enrollment_api_keys.ts +++ b/x-pack/plugins/fleet/public/hooks/use_request/enrollment_api_keys.ts @@ -15,6 +15,8 @@ import type { PostEnrollmentAPIKeyResponse, } from '../../types'; +import { API_VERSIONS } from '../../../common/constants'; + import { useRequest, sendRequest, useConditionalRequest } from './use_request'; import type { UseRequestConfig, SendConditionalRequestConfig } from './use_request'; @@ -25,6 +27,7 @@ export function useGetOneEnrollmentAPIKey(keyId: string | undefined) { method: 'get', path: keyId ? enrollmentAPIKeyRouteService.getInfoPath(keyId) : undefined, shouldSendRequest: !!keyId, + version: API_VERSIONS.public.v1, } as SendConditionalRequestConfig); } @@ -32,6 +35,7 @@ export function sendGetOneEnrollmentAPIKey(keyId: string, options?: RequestOptio return sendRequest({ method: 'get', path: enrollmentAPIKeyRouteService.getInfoPath(keyId), + version: API_VERSIONS.public.v1, ...options, }); } @@ -40,6 +44,7 @@ export function sendDeleteOneEnrollmentAPIKey(keyId: string, options?: RequestOp return sendRequest({ method: 'delete', path: enrollmentAPIKeyRouteService.getDeletePath(keyId), + version: API_VERSIONS.public.v1, ...options, }); } @@ -51,6 +56,7 @@ export function sendGetEnrollmentAPIKeys( return sendRequest({ method: 'get', path: enrollmentAPIKeyRouteService.getListPath(), + version: API_VERSIONS.public.v1, query, ...options, }); @@ -63,6 +69,7 @@ export function useGetEnrollmentAPIKeys( return useRequest({ method: 'get', path: enrollmentAPIKeyRouteService.getListPath(), + version: API_VERSIONS.public.v1, query, ...options, }); @@ -72,6 +79,7 @@ export function sendCreateEnrollmentAPIKey(body: PostEnrollmentAPIKeyRequest['bo return sendRequest({ method: 'post', path: enrollmentAPIKeyRouteService.getCreatePath(), + version: API_VERSIONS.public.v1, body, }); } diff --git a/x-pack/plugins/fleet/public/hooks/use_request/epm.ts b/x-pack/plugins/fleet/public/hooks/use_request/epm.ts index 35871c27f1dac..24a36f969247d 100644 --- a/x-pack/plugins/fleet/public/hooks/use_request/epm.ts +++ b/x-pack/plugins/fleet/public/hooks/use_request/epm.ts @@ -28,6 +28,7 @@ import type { GetVerificationKeyIdResponse, } from '../../types'; import type { FleetErrorResponse, GetStatsResponse } from '../../../common/types'; +import { API_VERSIONS } from '../../../common/constants'; import { getCustomIntegrations } from '../../services/custom_integrations'; @@ -56,6 +57,7 @@ export function useGetCategoriesQuery(query: GetCategoriesRequest['query'] = {}) path: epmRouteService.getCategoriesPath(), method: 'get', query, + version: API_VERSIONS.public.v1, }) ); } @@ -64,6 +66,7 @@ export const sendGetCategories = (query: GetCategoriesRequest['query'] = {}) => return sendRequest({ path: epmRouteService.getCategoriesPath(), method: 'get', + version: API_VERSIONS.public.v1, query, }); }; @@ -72,6 +75,7 @@ export const useGetPackages = (query: GetPackagesRequest['query'] = {}) => { return useRequest({ path: epmRouteService.getListPath(), method: 'get', + version: API_VERSIONS.public.v1, query, }); }; @@ -81,6 +85,7 @@ export const useGetPackagesQuery = (query: GetPackagesRequest['query']) => { sendRequestForRq({ path: epmRouteService.getListPath(), method: 'get', + version: API_VERSIONS.public.v1, query, }) ); @@ -90,6 +95,7 @@ export const sendGetPackages = (query: GetPackagesRequest['query'] = {}) => { return sendRequest({ path: epmRouteService.getListPath(), method: 'get', + version: API_VERSIONS.public.v1, query, }); }; @@ -98,6 +104,7 @@ export const useGetLimitedPackages = () => { return useRequest({ path: epmRouteService.getListLimitedPath(), method: 'get', + version: API_VERSIONS.public.v1, }); }; @@ -128,6 +135,7 @@ export const useGetPackageInfoByKeyQuery = ( sendRequestForRq({ path: epmRouteService.getInfoPath(pkgName, pkgVersion), method: 'get', + version: API_VERSIONS.public.v1, query: { ...options, ...(ignoreUnverifiedQueryParam && { ignoreUnverified: ignoreUnverifiedQueryParam }), @@ -155,6 +163,7 @@ export const useGetPackageStats = (pkgName: string) => { return useRequest({ path: epmRouteService.getStatsPath(pkgName), method: 'get', + version: API_VERSIONS.public.v1, }); }; @@ -165,6 +174,7 @@ export const useGetPackageVerificationKeyId = () => { sendRequestForRq({ path: epmRouteService.getVerificationKeyIdPath(), method: 'get', + version: API_VERSIONS.public.v1, }) ); @@ -186,6 +196,7 @@ export const sendGetPackageInfoByKey = ( return sendRequest({ path: epmRouteService.getInfoPath(pkgName, pkgVersion), method: 'get', + version: API_VERSIONS.public.v1, query: options, }); }; @@ -194,12 +205,17 @@ export const useGetFileByPath = (filePath: string) => { return useRequest({ path: epmRouteService.getFilePath(filePath), method: 'get', + version: API_VERSIONS.public.v1, }); }; export const useGetFileByPathQuery = (filePath: string) => { return useQuery, RequestError>(['get-file', filePath], () => - sendRequest({ path: epmRouteService.getFilePath(filePath), method: 'get' }) + sendRequest({ + path: epmRouteService.getFilePath(filePath), + method: 'get', + version: API_VERSIONS.public.v1, + }) ); }; @@ -207,6 +223,7 @@ export const sendGetFileByPath = (filePath: string) => { return sendRequest({ path: epmRouteService.getFilePath(filePath), method: 'get', + version: API_VERSIONS.public.v1, }); }; @@ -215,6 +232,7 @@ export const sendInstallPackage = (pkgName: string, pkgVersion: string, force: b return sendRequest({ path: epmRouteService.getInstallPath(pkgName, pkgVersion), method: 'post', + version: API_VERSIONS.public.v1, body, }); }; @@ -225,6 +243,7 @@ export const sendBulkInstallPackages = ( return sendRequest({ path: epmRouteService.getBulkInstallPath(), method: 'post', + version: API_VERSIONS.public.v1, body: { packages, }, @@ -235,6 +254,7 @@ export const sendRemovePackage = (pkgName: string, pkgVersion: string, force: bo return sendRequest({ path: epmRouteService.getRemovePath(pkgName, pkgVersion), method: 'delete', + version: API_VERSIONS.public.v1, body: { force, }, @@ -249,6 +269,7 @@ export const sendRequestReauthorizeTransforms = ( return sendRequest({ path: epmRouteService.getReauthorizeTransformsPath(pkgName, pkgVersion), method: 'post', + version: API_VERSIONS.public.v1, body: { transforms }, }); }; @@ -265,6 +286,7 @@ export const useUpdatePackageMutation = () => { sendRequestForRq({ path: epmRouteService.getUpdatePath(pkgName, pkgVersion), method: 'put', + version: API_VERSIONS.public.v1, body, }) ); @@ -278,6 +300,7 @@ export const sendUpdatePackage = ( return sendRequest({ path: epmRouteService.getUpdatePath(pkgName, pkgVersion), method: 'put', + version: API_VERSIONS.public.v1, body, }); }; @@ -286,6 +309,7 @@ export const sendGetBulkAssets = (body: GetBulkAssetsRequest['body']) => { return sendRequest({ path: epmRouteService.getBulkAssetsPath(), method: 'post', + version: API_VERSIONS.public.v1, body, }); }; diff --git a/x-pack/plugins/fleet/public/hooks/use_request/fleet_proxies.ts b/x-pack/plugins/fleet/public/hooks/use_request/fleet_proxies.ts index 0e058f900c442..9cb09486980d3 100644 --- a/x-pack/plugins/fleet/public/hooks/use_request/fleet_proxies.ts +++ b/x-pack/plugins/fleet/public/hooks/use_request/fleet_proxies.ts @@ -6,6 +6,8 @@ */ import { fleetProxiesRoutesService } from '../../../common/services'; +import { API_VERSIONS } from '../../../common/constants'; + import type { GetFleetProxiesResponse, PostFleetProxiesRequest, @@ -18,21 +20,32 @@ export function useGetFleetProxies() { return useRequest({ method: 'get', path: fleetProxiesRoutesService.getListPath(), + version: API_VERSIONS.public.v1, }); } export function sendDeleteFleetProxy(proxyId: string) { - return sendRequest({ method: 'delete', path: fleetProxiesRoutesService.getDeletePath(proxyId) }); + return sendRequest({ + method: 'delete', + path: fleetProxiesRoutesService.getDeletePath(proxyId), + version: API_VERSIONS.public.v1, + }); } export function sendPostFleetProxy(body: PostFleetProxiesRequest['body']) { - return sendRequest({ method: 'post', path: fleetProxiesRoutesService.getCreatePath(), body }); + return sendRequest({ + method: 'post', + path: fleetProxiesRoutesService.getCreatePath(), + body, + version: API_VERSIONS.public.v1, + }); } export function sendPutFleetProxy(proxyId: string, body: PutFleetProxiesRequest['body']) { return sendRequest({ method: 'put', path: fleetProxiesRoutesService.getUpdatePath(proxyId), + version: API_VERSIONS.public.v1, body, }); } diff --git a/x-pack/plugins/fleet/public/hooks/use_request/fleet_server_hosts.ts b/x-pack/plugins/fleet/public/hooks/use_request/fleet_server_hosts.ts index f066da66dba12..db1968332d6b4 100644 --- a/x-pack/plugins/fleet/public/hooks/use_request/fleet_server_hosts.ts +++ b/x-pack/plugins/fleet/public/hooks/use_request/fleet_server_hosts.ts @@ -6,6 +6,9 @@ */ import { fleetServerHostsRoutesService } from '../../../common/services'; + +import { API_VERSIONS } from '../../../common/constants'; + import type { GetFleetServerHostsResponse, PostFleetServerHostsRequest, @@ -19,6 +22,7 @@ export function useGetFleetServerHosts() { return useRequest({ method: 'get', path: fleetServerHostsRoutesService.getListPath(), + version: API_VERSIONS.public.v1, }); } @@ -26,6 +30,7 @@ export function sendDeleteFleetServerHost(itemId: string) { return sendRequest({ method: 'delete', path: fleetServerHostsRoutesService.getDeletePath(itemId), + version: API_VERSIONS.public.v1, }); } @@ -33,6 +38,7 @@ export function sendPutFleetServerHost(itemId: string, body: PutFleetServerHosts return sendRequest({ method: 'put', path: fleetServerHostsRoutesService.getUpdatePath(itemId), + version: API_VERSIONS.public.v1, body, }); } @@ -41,6 +47,7 @@ export function sendPostFleetServerHost(body: PostFleetServerHostsRequest['body' return sendRequest({ method: 'post', path: fleetServerHostsRoutesService.getCreatePath(), + version: API_VERSIONS.public.v1, body, }); } diff --git a/x-pack/plugins/fleet/public/hooks/use_request/health_check.ts b/x-pack/plugins/fleet/public/hooks/use_request/health_check.ts index c5fdc7886faac..e9cfe36c66062 100644 --- a/x-pack/plugins/fleet/public/hooks/use_request/health_check.ts +++ b/x-pack/plugins/fleet/public/hooks/use_request/health_check.ts @@ -7,6 +7,7 @@ import type { PostHealthCheckRequest, PostHealthCheckResponse } from '../../types'; import { appRoutesService } from '../../services'; +import { API_VERSIONS } from '../../../common/constants'; import { sendRequest } from './use_request'; @@ -14,6 +15,7 @@ export function sendPostHealthCheck(body: PostHealthCheckRequest['body']) { return sendRequest({ method: 'post', path: appRoutesService.postHealthCheckPath(), + version: API_VERSIONS.public.v1, body, }); } diff --git a/x-pack/plugins/fleet/public/hooks/use_request/k8s.ts b/x-pack/plugins/fleet/public/hooks/use_request/k8s.ts index 2102fe6f5fe93..1f725ea3e8c5a 100644 --- a/x-pack/plugins/fleet/public/hooks/use_request/k8s.ts +++ b/x-pack/plugins/fleet/public/hooks/use_request/k8s.ts @@ -8,6 +8,7 @@ import { agentPolicyRouteService } from '../../services'; import type { GetFullAgentManifestResponse } from '../../../common/types'; +import { API_VERSIONS } from '../../../common/constants'; import { sendRequest } from './use_request'; @@ -15,6 +16,7 @@ export const sendGetK8sManifest = (query: { fleetServer?: string; enrolToken?: s return sendRequest({ path: agentPolicyRouteService.getK8sInfoPath(), method: 'get', + version: API_VERSIONS.public.v1, query, }); }; diff --git a/x-pack/plugins/fleet/public/hooks/use_request/outputs.ts b/x-pack/plugins/fleet/public/hooks/use_request/outputs.ts index 24b36df68a5fa..ccd6f2364250c 100644 --- a/x-pack/plugins/fleet/public/hooks/use_request/outputs.ts +++ b/x-pack/plugins/fleet/public/hooks/use_request/outputs.ts @@ -13,6 +13,8 @@ import type { PostLogstashApiKeyResponse, } from '../../types'; +import { API_VERSIONS } from '../../../common/constants'; + import { sendRequest, useRequest } from './use_request'; export function useGetOutputs() { @@ -33,6 +35,7 @@ export function sendPutOutput(outputId: string, body: PutOutputRequest['body']) return sendRequest({ method: 'put', path: outputRoutesService.getUpdatePath(outputId), + version: API_VERSIONS.public.v1, body, }); } @@ -41,6 +44,7 @@ export function sendPostLogstashApiKeys() { return sendRequest({ method: 'post', path: outputRoutesService.getCreateLogstashApiKeyPath(), + version: API_VERSIONS.public.v1, }); } @@ -48,6 +52,7 @@ export function sendPostOutput(body: PostOutputRequest['body']) { return sendRequest({ method: 'post', path: outputRoutesService.getCreatePath(), + version: API_VERSIONS.public.v1, body, }); } @@ -56,5 +61,6 @@ export function sendDeleteOutput(outputId: string) { return sendRequest({ method: 'delete', path: outputRoutesService.getDeletePath(outputId), + version: API_VERSIONS.public.v1, }); } diff --git a/x-pack/plugins/fleet/public/hooks/use_request/package_policy.ts b/x-pack/plugins/fleet/public/hooks/use_request/package_policy.ts index 4a573bb5e5883..fb23f740ed0bc 100644 --- a/x-pack/plugins/fleet/public/hooks/use_request/package_policy.ts +++ b/x-pack/plugins/fleet/public/hooks/use_request/package_policy.ts @@ -24,6 +24,8 @@ import type { UpgradePackagePolicyResponse, } from '../../../common/types/rest_spec'; +import { API_VERSIONS } from '../../../common/constants'; + import type { RequestError } from './use_request'; import { sendRequest, sendRequestForRq, useRequest } from './use_request'; @@ -31,6 +33,7 @@ export const sendCreatePackagePolicy = (body: CreatePackagePolicyRequest['body'] return sendRequest({ path: packagePolicyRouteService.getCreatePath(), method: 'post', + version: API_VERSIONS.public.v1, body: JSON.stringify(body), }); }; @@ -42,6 +45,7 @@ export const sendUpdatePackagePolicy = ( return sendRequest({ path: packagePolicyRouteService.getUpdatePath(packagePolicyId), method: 'put', + version: API_VERSIONS.public.v1, body: JSON.stringify(body), }); }; @@ -50,6 +54,7 @@ export const sendDeletePackagePolicy = (body: DeletePackagePoliciesRequest['body return sendRequest({ path: packagePolicyRouteService.getDeletePath(), method: 'post', + version: API_VERSIONS.public.v1, body: JSON.stringify(body), }); }; @@ -58,6 +63,7 @@ export function useGetPackagePoliciesQuery(query: GetPackagePoliciesRequest['que return useQuery(['packagePolicies'], () => sendRequestForRq({ method: 'get', + version: API_VERSIONS.public.v1, path: packagePolicyRouteService.getListPath(), query, }) @@ -67,6 +73,7 @@ export function useGetPackagePoliciesQuery(query: GetPackagePoliciesRequest['que export function useGetPackagePolicies(query: GetPackagePoliciesRequest['query']) { return useRequest({ method: 'get', + version: API_VERSIONS.public.v1, path: packagePolicyRouteService.getListPath(), query, }); @@ -75,6 +82,7 @@ export function useGetPackagePolicies(query: GetPackagePoliciesRequest['query']) export const sendGetPackagePolicies = (query: GetPackagePoliciesRequest['query']) => { return sendRequest({ method: 'get', + version: API_VERSIONS.public.v1, path: packagePolicyRouteService.getListPath(), query, }); @@ -86,6 +94,7 @@ export const useGetOnePackagePolicyQuery = (packagePolicyId: string) => { () => sendRequestForRq({ method: 'get', + version: API_VERSIONS.public.v1, path: packagePolicyRouteService.getInfoPath(packagePolicyId), }) ); @@ -95,6 +104,7 @@ export const useGetOnePackagePolicy = (packagePolicyId: string) => { return useRequest({ path: packagePolicyRouteService.getInfoPath(packagePolicyId), method: 'get', + version: API_VERSIONS.public.v1, }); }; @@ -102,6 +112,7 @@ export const sendGetOnePackagePolicy = (packagePolicyId: string) => { return sendRequest({ path: packagePolicyRouteService.getInfoPath(packagePolicyId), method: 'get', + version: API_VERSIONS.public.v1, }); }; @@ -124,6 +135,7 @@ export function useUpgradePackagePolicyDryRunQuery( sendRequestForRq({ path: packagePolicyRouteService.getDryRunPath(), method: 'post', + version: API_VERSIONS.public.v1, body: JSON.stringify(body), }), { enabled } @@ -145,6 +157,7 @@ export function sendUpgradePackagePolicyDryRun( return sendRequest({ path: packagePolicyRouteService.getDryRunPath(), method: 'post', + version: API_VERSIONS.public.v1, body: JSON.stringify(body), }); } @@ -158,6 +171,7 @@ export function useUpgradePackagePoliciesMutation() { sendRequestForRq({ path: packagePolicyRouteService.getUpgradePath(), method: 'post', + version: API_VERSIONS.public.v1, body: JSON.stringify({ packagePolicyIds, }), @@ -169,6 +183,7 @@ export function sendUpgradePackagePolicy(packagePolicyIds: string[]) { return sendRequest({ path: packagePolicyRouteService.getUpgradePath(), method: 'post', + version: API_VERSIONS.public.v1, body: JSON.stringify({ packagePolicyIds, }), @@ -179,5 +194,6 @@ export function sendGetOrphanedIntegrationPolicies() { return sendRequest({ path: packagePolicyRouteService.getOrphanedIntegrationPoliciesPath(), method: 'get', + version: API_VERSIONS.public.v1, }); } diff --git a/x-pack/plugins/fleet/public/hooks/use_request/settings.ts b/x-pack/plugins/fleet/public/hooks/use_request/settings.ts index 41131a32593de..d074644a9d26a 100644 --- a/x-pack/plugins/fleet/public/hooks/use_request/settings.ts +++ b/x-pack/plugins/fleet/public/hooks/use_request/settings.ts @@ -10,6 +10,8 @@ import { useQuery } from '@tanstack/react-query'; import { settingsRoutesService } from '../../services'; import type { PutSettingsResponse, PutSettingsRequest, GetSettingsResponse } from '../../types'; +import { API_VERSIONS } from '../../../common/constants'; + import type { RequestError } from './use_request'; import { sendRequest, sendRequestForRq, useRequest } from './use_request'; @@ -18,6 +20,7 @@ export function useGetSettingsQuery() { sendRequestForRq({ method: 'get', path: settingsRoutesService.getInfoPath(), + version: API_VERSIONS.public.v1, }) ); } @@ -26,6 +29,7 @@ export function useGetSettings() { return useRequest({ method: 'get', path: settingsRoutesService.getInfoPath(), + version: API_VERSIONS.public.v1, }); } @@ -33,6 +37,7 @@ export function sendGetSettings() { return sendRequest({ method: 'get', path: settingsRoutesService.getInfoPath(), + version: API_VERSIONS.public.v1, }); } @@ -40,6 +45,7 @@ export function sendPutSettings(body: PutSettingsRequest['body']) { return sendRequest({ method: 'put', path: settingsRoutesService.getUpdatePath(), + version: API_VERSIONS.public.v1, body, }); } diff --git a/x-pack/plugins/fleet/public/hooks/use_request/setup.ts b/x-pack/plugins/fleet/public/hooks/use_request/setup.ts index 67d631d5d55bc..59e5692df966f 100644 --- a/x-pack/plugins/fleet/public/hooks/use_request/setup.ts +++ b/x-pack/plugins/fleet/public/hooks/use_request/setup.ts @@ -7,6 +7,7 @@ import { setupRouteService, fleetSetupRouteService } from '../../services'; import type { GetFleetStatusResponse } from '../../types'; +import { API_VERSIONS } from '../../../common/constants'; import { sendRequest } from './use_request'; @@ -14,6 +15,7 @@ export const sendSetup = () => { return sendRequest({ path: setupRouteService.getSetupPath(), method: 'post', + version: API_VERSIONS.public.v1, }); }; @@ -21,6 +23,7 @@ export const sendGetFleetStatus = () => { return sendRequest({ path: fleetSetupRouteService.getFleetSetupPath(), method: 'get', + version: API_VERSIONS.public.v1, }); }; @@ -28,6 +31,7 @@ export const sendPostFleetSetup = ({ forceRecreate }: { forceRecreate: boolean } return sendRequest({ method: 'post', path: fleetSetupRouteService.postFleetSetupPath(), + version: API_VERSIONS.public.v1, body: { forceRecreate, }, diff --git a/x-pack/plugins/fleet/public/hooks/use_request/uninstall_tokens.ts b/x-pack/plugins/fleet/public/hooks/use_request/uninstall_tokens.ts index a851c572cf21d..5ba60daea0cc1 100644 --- a/x-pack/plugins/fleet/public/hooks/use_request/uninstall_tokens.ts +++ b/x-pack/plugins/fleet/public/hooks/use_request/uninstall_tokens.ts @@ -9,6 +9,8 @@ import { useQuery } from '@tanstack/react-query'; import { uninstallTokensRouteService } from '../../../common/services'; +import { API_VERSIONS } from '../../../common/constants'; + import type { GetUninstallTokensMetadataRequest, GetUninstallTokensMetadataResponse, @@ -23,6 +25,7 @@ export const useGetUninstallTokens = (query: GetUninstallTokensMetadataRequest[' sendRequestForRq({ method: 'get', path: uninstallTokensRouteService.getListPath(), + version: API_VERSIONS.public.v1, query, }) ); @@ -34,6 +37,7 @@ export const useGetUninstallToken = (uninstallTokenId: string) => sendRequestForRq({ method: 'get', path: uninstallTokensRouteService.getInfoPath(uninstallTokenId), + version: API_VERSIONS.public.v1, }) ); @@ -41,4 +45,5 @@ export const sendGetUninstallToken = (uninstallTokenId: string) => sendRequest({ method: 'get', path: uninstallTokensRouteService.getInfoPath(uninstallTokenId), + version: API_VERSIONS.public.v1, }); diff --git a/x-pack/plugins/fleet/public/plugin.ts b/x-pack/plugins/fleet/public/plugin.ts index ecef1c469e954..eb087b257bc1e 100644 --- a/x-pack/plugins/fleet/public/plugin.ts +++ b/x-pack/plugins/fleet/public/plugin.ts @@ -16,6 +16,7 @@ import type { import { i18n } from '@kbn/i18n'; import type { NavigationPublicPluginStart } from '@kbn/navigation-plugin/public'; +import { ELASTIC_HTTP_VERSION_HEADER } from '@kbn/core-http-common'; import type { CustomIntegrationsStart, @@ -60,6 +61,8 @@ import type { ExperimentalFeatures } from '../common/experimental_features'; import type { FleetConfigType } from '../common/types'; +import { API_VERSIONS } from '../common/constants'; + import { CUSTOM_LOGS_INTEGRATION_NAME, INTEGRATIONS_BASE_PATH } from './constants'; import { licenseService } from './hooks'; import { setHttpClient } from './hooks/use_request'; @@ -287,7 +290,12 @@ export class FleetPlugin implements Plugin - core.http.get(appRoutesService.getCheckPermissionsPath()) + core.http.fetch(appRoutesService.getCheckPermissionsPath(), { + headers: { + [ELASTIC_HTTP_VERSION_HEADER]: API_VERSIONS.public.v1, + }, + version: API_VERSIONS.public.v1, + }) ); // Set up license service diff --git a/x-pack/plugins/fleet/scripts/create_agents/create_agents.ts b/x-pack/plugins/fleet/scripts/create_agents/create_agents.ts index d8dc5bc4ba13e..206d30cabbb79 100644 --- a/x-pack/plugins/fleet/scripts/create_agents/create_agents.ts +++ b/x-pack/plugins/fleet/scripts/create_agents/create_agents.ts @@ -34,6 +34,7 @@ const printUsage = () => const DEFAULT_KIBANA_URL = 'http://localhost:5601'; const DEFAULT_KIBANA_USERNAME = 'elastic'; const DEFAULT_KIBANA_PASSWORD = 'changeme'; +const PUBLIC_VERSION_V1 = '2023-10-31'; const DEFAULT_UNENROLL_TIMEOUT = 300; // 5 minutes const ES_URL = 'http://localhost:9200'; @@ -300,6 +301,8 @@ async function createAgentPolicy(id: string, name: string) { 'Content-Type': 'application/json', 'kbn-xsrf': 'kibana', 'x-elastic-product-origin': 'fleet', + // Note: version can change in the future + 'Elastic-Api-Version': PUBLIC_VERSION_V1, }, }); const data = await res.json(); diff --git a/x-pack/plugins/fleet/scripts/get_all_packages/get_all_packages.ts b/x-pack/plugins/fleet/scripts/get_all_packages/get_all_packages.ts index b29709190f15d..e8950be1a57b8 100644 --- a/x-pack/plugins/fleet/scripts/get_all_packages/get_all_packages.ts +++ b/x-pack/plugins/fleet/scripts/get_all_packages/get_all_packages.ts @@ -19,6 +19,7 @@ const KIBANA_URL = 'http://localhost:5601'; const KIBANA_USERNAME = 'elastic'; const KIBANA_PASSWORD = 'changeme'; const KIBANA_VERSION = kibanaPackageJson.version; +const PUBLIC_VERSION_V1 = '2023-10-31'; const { base = '', prerelease = false, batchSize = 1 } = yargs(process.argv).argv; @@ -50,6 +51,8 @@ async function getPackage(name: string, version: string, full: boolean = false) 'kbn-xsrf': 'xyz', Authorization: 'Basic ' + Buffer.from(`${KIBANA_USERNAME}:${KIBANA_PASSWORD}`).toString('base64'), + // Note: version can change in the future + 'Elastic-Api-Version': PUBLIC_VERSION_V1, }, method: 'GET', } diff --git a/x-pack/plugins/fleet/scripts/install_all_packages/install_all_packages.ts b/x-pack/plugins/fleet/scripts/install_all_packages/install_all_packages.ts index 3ff907ceff761..afd874264a7f4 100644 --- a/x-pack/plugins/fleet/scripts/install_all_packages/install_all_packages.ts +++ b/x-pack/plugins/fleet/scripts/install_all_packages/install_all_packages.ts @@ -15,6 +15,7 @@ const DEFAULT_KIBANA_URL = 'http://localhost:5601'; const DEFAULT_KIBANA_USERNAME = 'elastic'; const DEFAULT_KIBANA_PASSWORD = 'changeme'; const KIBANA_VERSION = kibanaPackageJson.version; +const PUBLIC_VERSION_V1 = '2023-10-31'; const logger = new ToolingLog({ level: 'info', @@ -59,6 +60,8 @@ async function installPackage(name: string, version: string) { 'content-type': 'application/json', 'kbn-xsrf': 'xyz', Authorization, + // Note: version can change in the future + 'Elastic-Api-Version': PUBLIC_VERSION_V1, }, body: JSON.stringify({ force: true }), method: 'POST', @@ -77,6 +80,8 @@ async function deletePackage(name: string, version: string) { 'content-type': 'application/json', 'kbn-xsrf': 'xyz', Authorization, + // Note: version can change in the future + 'Elastic-Api-Version': PUBLIC_VERSION_V1, }, method: 'DELETE', }); diff --git a/x-pack/plugins/fleet/server/integration_tests/reset_preconfiguration.test.ts b/x-pack/plugins/fleet/server/integration_tests/reset_preconfiguration.test.ts index a30f0a47304a3..97a5af5f8b6d5 100644 --- a/x-pack/plugins/fleet/server/integration_tests/reset_preconfiguration.test.ts +++ b/x-pack/plugins/fleet/server/integration_tests/reset_preconfiguration.test.ts @@ -16,6 +16,7 @@ import { import type { AgentPolicySOAttributes } from '../types'; import { PRECONFIGURATION_DELETION_RECORD_SAVED_OBJECT_TYPE } from '../../common'; +import { API_VERSIONS } from '../../common/constants'; import { useDockerRegistry, waitForFleetSetup, getSupertestWithAdminUser } from './helpers'; @@ -184,7 +185,11 @@ describe('Fleet preconfiguration reset', () => { 'post', '/internal/fleet/reset_preconfigured_agent_policies' ); - await resetAPI.set('kbn-sxrf', 'xx').expect(200).send(); + await resetAPI + .set('kbn-sxrf', 'xx') + .set('Elastic-Api-Version', `${API_VERSIONS.internal.v1}`) + .expect(200) + .send(); const agentPolicies = await kbnServer.coreStart.savedObjects .createInternalRepository() @@ -226,7 +231,11 @@ describe('Fleet preconfiguration reset', () => { 'post', '/internal/fleet/reset_preconfigured_agent_policies/test-12345' ); - await resetAPI.set('kbn-sxrf', 'xx').expect(200).send(); + await resetAPI + .set('kbn-sxrf', 'xx') + .set('Elastic-Api-Version', `${API_VERSIONS.internal.v1}`) + .expect(200) + .send(); const agentPolicies = await kbnServer.coreStart.savedObjects .createInternalRepository() @@ -260,7 +269,11 @@ describe('Fleet preconfiguration reset', () => { 'post', '/internal/fleet/reset_preconfigured_agent_policies/test-12345' ); - await resetAPI.set('kbn-sxrf', 'xx').expect(200).send(); + await resetAPI + .set('kbn-sxrf', 'xx') + .set('Elastic-Api-Version', `${API_VERSIONS.internal.v1}`) + .expect(200) + .send(); const agentPolicies = await soClient.find({ type: 'ingest-agent-policies', @@ -292,7 +305,11 @@ describe('Fleet preconfiguration reset', () => { 'post', `/internal/fleet/reset_preconfigured_agent_policies/${POLICY_ID}` ); - await resetAPI.set('kbn-sxrf', 'xx').expect(200).send(); + await resetAPI + .set('kbn-sxrf', 'xx') + .set('Elastic-Api-Version', `${API_VERSIONS.internal.v1}`) + .expect(200) + .send(); const agentPolicies = await kbnServer.coreStart.savedObjects .createInternalRepository() diff --git a/x-pack/plugins/fleet/server/routes/agent/index.ts b/x-pack/plugins/fleet/server/routes/agent/index.ts index 44a43ccb732bf..0d261fc24a16e 100644 --- a/x-pack/plugins/fleet/server/routes/agent/index.ts +++ b/x-pack/plugins/fleet/server/routes/agent/index.ts @@ -6,6 +6,7 @@ */ import type { FleetAuthz } from '../../../common'; +import { API_VERSIONS, INTERNAL_API_ACCESS } from '../../../common/constants'; import { getRouteRequiredAuthz, type FleetAuthzRouter } from '../../services/security'; @@ -72,297 +73,406 @@ import { export const registerAPIRoutes = (router: FleetAuthzRouter, config: FleetConfigType) => { // Get one - router.get( - { + router.versioned + .get({ path: AGENT_API_ROUTES.INFO_PATTERN, - validate: GetOneAgentRequestSchema, fleetAuthz: { fleet: { all: true }, }, - }, - getAgentHandler - ); + }) + .addVersion( + { + version: API_VERSIONS.public.v1, + validate: { request: GetOneAgentRequestSchema }, + }, + getAgentHandler + ); + // Update - router.put( - { + router.versioned + .put({ path: AGENT_API_ROUTES.UPDATE_PATTERN, - validate: UpdateAgentRequestSchema, fleetAuthz: { fleet: { all: true }, }, - }, - updateAgentHandler - ); + }) + .addVersion( + { + version: API_VERSIONS.public.v1, + validate: { request: UpdateAgentRequestSchema }, + }, + updateAgentHandler + ); + // Bulk Update Tags - router.post( - { + router.versioned + .post({ path: AGENT_API_ROUTES.BULK_UPDATE_AGENT_TAGS_PATTERN, - validate: PostBulkUpdateAgentTagsRequestSchema, fleetAuthz: { fleet: { all: true }, }, - }, - bulkUpdateAgentTagsHandler - ); + }) + .addVersion( + { + version: API_VERSIONS.public.v1, + validate: { request: PostBulkUpdateAgentTagsRequestSchema }, + }, + bulkUpdateAgentTagsHandler + ); + // Delete - router.delete( - { + router.versioned + .delete({ path: AGENT_API_ROUTES.DELETE_PATTERN, - validate: DeleteAgentRequestSchema, fleetAuthz: { fleet: { all: true }, }, - }, - deleteAgentHandler - ); + }) + .addVersion( + { + version: API_VERSIONS.public.v1, + validate: { request: DeleteAgentRequestSchema }, + }, + deleteAgentHandler + ); + // List - router.get( - { + router.versioned + .get({ path: AGENT_API_ROUTES.LIST_PATTERN, - validate: GetAgentsRequestSchema, + fleetAuthz: { fleet: { all: true }, }, - }, - getAgentsHandler - ); + }) + .addVersion( + { + version: API_VERSIONS.public.v1, + validate: { request: GetAgentsRequestSchema }, + }, + getAgentsHandler + ); + // List Agent Tags - router.get( - { + router.versioned + .get({ path: AGENT_API_ROUTES.LIST_TAGS_PATTERN, - validate: GetTagsRequestSchema, fleetAuthz: { fleet: { all: true }, }, - }, - getAgentTagsHandler - ); + }) + .addVersion( + { + version: API_VERSIONS.public.v1, + validate: { request: GetTagsRequestSchema }, + }, + getAgentTagsHandler + ); // Agent actions - router.post( - { + router.versioned + .post({ path: AGENT_API_ROUTES.ACTIONS_PATTERN, - validate: PostNewAgentActionRequestSchema, fleetAuthz: { fleet: { all: true }, }, - }, - postNewAgentActionHandlerBuilder({ - getAgent: AgentService.getAgentById, - cancelAgentAction: AgentService.cancelAgentAction, - createAgentAction: AgentService.createAgentAction, - getAgentActions: AgentService.getAgentActions, }) - ); + .addVersion( + { + version: API_VERSIONS.public.v1, + validate: { request: PostNewAgentActionRequestSchema }, + }, + postNewAgentActionHandlerBuilder({ + getAgent: AgentService.getAgentById, + cancelAgentAction: AgentService.cancelAgentAction, + createAgentAction: AgentService.createAgentAction, + getAgentActions: AgentService.getAgentActions, + }) + ); - router.post( - { + router.versioned + .post({ path: AGENT_API_ROUTES.CANCEL_ACTIONS_PATTERN, - validate: PostCancelActionRequestSchema, fleetAuthz: { fleet: { all: true }, }, - }, - postCancelActionHandlerBuilder({ - getAgent: AgentService.getAgentById, - cancelAgentAction: AgentService.cancelAgentAction, - createAgentAction: AgentService.createAgentAction, - getAgentActions: AgentService.getAgentActions, }) - ); + .addVersion( + { + version: API_VERSIONS.public.v1, + validate: { request: PostCancelActionRequestSchema }, + }, + postCancelActionHandlerBuilder({ + getAgent: AgentService.getAgentById, + cancelAgentAction: AgentService.cancelAgentAction, + createAgentAction: AgentService.createAgentAction, + getAgentActions: AgentService.getAgentActions, + }) + ); + // Get agents by Action_Ids - router.post( - { + router.versioned + .post({ path: AGENT_API_ROUTES.LIST_PATTERN, - validate: PostRetrieveAgentsByActionsRequestSchema, fleetAuthz: { fleet: { all: true }, // Authorizations? }, - }, - postRetrieveAgentsByActionsHandler - ); + }) + .addVersion( + { + version: API_VERSIONS.public.v1, + validate: { request: PostRetrieveAgentsByActionsRequestSchema }, + }, + postRetrieveAgentsByActionsHandler + ); - router.post( - { + router.versioned + .post({ path: AGENT_API_ROUTES.UNENROLL_PATTERN, - validate: PostAgentUnenrollRequestSchema, fleetAuthz: { fleet: { all: true }, }, - }, - postAgentUnenrollHandler - ); + }) + .addVersion( + { + version: API_VERSIONS.public.v1, + validate: { request: PostAgentUnenrollRequestSchema }, + }, + postAgentUnenrollHandler + ); // mark as deprecated - router.put( - { + router.versioned + .put({ path: AGENT_API_ROUTES.REASSIGN_PATTERN, - validate: PutAgentReassignRequestSchemaDeprecated, fleetAuthz: { fleet: { all: true }, }, - }, - putAgentsReassignHandlerDeprecated - ); + }) + .addVersion( + { + version: API_VERSIONS.public.v1, + validate: { request: PutAgentReassignRequestSchemaDeprecated }, + }, + putAgentsReassignHandlerDeprecated + ); - router.post( - { + router.versioned + .post({ path: AGENT_API_ROUTES.REASSIGN_PATTERN, - validate: PostAgentReassignRequestSchema, fleetAuthz: { fleet: { all: true }, }, - }, - postAgentsReassignHandler - ); + }) + .addVersion( + { + version: API_VERSIONS.public.v1, + validate: { request: PostAgentReassignRequestSchema }, + }, + postAgentsReassignHandler + ); - router.post( - { + router.versioned + .post({ path: AGENT_API_ROUTES.REQUEST_DIAGNOSTICS_PATTERN, - validate: PostRequestDiagnosticsActionRequestSchema, fleetAuthz: { fleet: { all: true }, }, - }, - requestDiagnosticsHandler - ); + }) + .addVersion( + { + version: API_VERSIONS.public.v1, + validate: { request: PostRequestDiagnosticsActionRequestSchema }, + }, + requestDiagnosticsHandler + ); - router.post( - { + router.versioned + .post({ path: AGENT_API_ROUTES.BULK_REQUEST_DIAGNOSTICS_PATTERN, - validate: PostBulkRequestDiagnosticsActionRequestSchema, fleetAuthz: { fleet: { all: true }, }, - }, - bulkRequestDiagnosticsHandler - ); + }) + .addVersion( + { + version: API_VERSIONS.public.v1, + validate: { request: PostBulkRequestDiagnosticsActionRequestSchema }, + }, + bulkRequestDiagnosticsHandler + ); - router.get( - { + router.versioned + .get({ path: AGENT_API_ROUTES.LIST_UPLOADS_PATTERN, - validate: ListAgentUploadsRequestSchema, fleetAuthz: { fleet: { all: true }, }, - }, - getAgentUploadsHandler - ); + }) + .addVersion( + { + version: API_VERSIONS.public.v1, + validate: { request: ListAgentUploadsRequestSchema }, + }, + getAgentUploadsHandler + ); - router.get( - { + router.versioned + .get({ path: AGENT_API_ROUTES.GET_UPLOAD_FILE_PATTERN, - validate: GetAgentUploadFileRequestSchema, fleetAuthz: { fleet: { all: true }, }, - }, - getAgentUploadFileHandler - ); + }) + .addVersion( + { + version: API_VERSIONS.public.v1, + validate: { request: GetAgentUploadFileRequestSchema }, + }, + getAgentUploadFileHandler + ); // Get agent status for policy - router.get( - { + router.versioned + .get({ path: AGENT_API_ROUTES.STATUS_PATTERN, - validate: GetAgentStatusRequestSchema, fleetAuthz: (fleetAuthz: FleetAuthz): boolean => calculateRouteAuthz( fleetAuthz, getRouteRequiredAuthz('get', AGENT_API_ROUTES.STATUS_PATTERN) ).granted, - }, - getAgentStatusForAgentPolicyHandler - ); - router.get( - { + }) + .addVersion( + { + version: API_VERSIONS.public.v1, + validate: { request: GetAgentStatusRequestSchema }, + }, + getAgentStatusForAgentPolicyHandler + ); + router.versioned + .get({ + access: INTERNAL_API_ACCESS, path: AGENT_API_ROUTES.STATUS_PATTERN_DEPRECATED, - validate: GetAgentStatusRequestSchema, fleetAuthz: { fleet: { all: true }, }, - }, - getAgentStatusForAgentPolicyHandler - ); + }) + .addVersion( + { + version: API_VERSIONS.internal.v1, + validate: { request: GetAgentStatusRequestSchema }, + }, + getAgentStatusForAgentPolicyHandler + ); // Agent data - router.get( - { + router.versioned + .get({ path: AGENT_API_ROUTES.DATA_PATTERN, - validate: GetAgentDataRequestSchema, fleetAuthz: { fleet: { all: true }, }, - }, - getAgentDataHandler - ); + }) + .addVersion( + { + version: API_VERSIONS.public.v1, + validate: { request: GetAgentDataRequestSchema }, + }, + getAgentDataHandler + ); // upgrade agent - router.post( - { + router.versioned + .post({ path: AGENT_API_ROUTES.UPGRADE_PATTERN, - validate: PostAgentUpgradeRequestSchema, fleetAuthz: { fleet: { all: true }, }, - }, - postAgentUpgradeHandler - ); + }) + .addVersion( + { + version: API_VERSIONS.public.v1, + validate: { request: PostAgentUpgradeRequestSchema }, + }, + postAgentUpgradeHandler + ); // bulk upgrade - router.post( - { + router.versioned + .post({ path: AGENT_API_ROUTES.BULK_UPGRADE_PATTERN, - validate: PostBulkAgentUpgradeRequestSchema, fleetAuthz: { fleet: { all: true }, }, - }, - postBulkAgentsUpgradeHandler - ); + }) + .addVersion( + { + version: API_VERSIONS.public.v1, + validate: { request: PostBulkAgentUpgradeRequestSchema }, + }, + postBulkAgentsUpgradeHandler + ); // Current actions - router.get( - { + router.versioned + .get({ path: AGENT_API_ROUTES.ACTION_STATUS_PATTERN, - validate: GetActionStatusRequestSchema, + fleetAuthz: { fleet: { all: true }, }, - }, - getActionStatusHandler - ); + }) + .addVersion( + { + version: API_VERSIONS.public.v1, + validate: { request: GetActionStatusRequestSchema }, + }, + getActionStatusHandler + ); // Bulk reassign - router.post( - { + router.versioned + .post({ path: AGENT_API_ROUTES.BULK_REASSIGN_PATTERN, - validate: PostBulkAgentReassignRequestSchema, fleetAuthz: { fleet: { all: true }, }, - }, - postBulkAgentsReassignHandler - ); + }) + .addVersion( + { + version: API_VERSIONS.public.v1, + validate: { request: PostBulkAgentReassignRequestSchema }, + }, + postBulkAgentsReassignHandler + ); // Bulk unenroll - router.post( - { + router.versioned + .post({ path: AGENT_API_ROUTES.BULK_UNENROLL_PATTERN, - validate: PostBulkAgentUnenrollRequestSchema, fleetAuthz: { fleet: { all: true }, }, - }, - postBulkAgentsUnenrollHandler - ); + }) + .addVersion( + { + version: API_VERSIONS.public.v1, + validate: { request: PostBulkAgentUnenrollRequestSchema }, + }, + postBulkAgentsUnenrollHandler + ); // Available versions for upgrades - router.get( - { + router.versioned + .get({ path: AGENT_API_ROUTES.AVAILABLE_VERSIONS_PATTERN, - validate: false, fleetAuthz: { fleet: { all: true }, }, - }, - getAvailableVersionsHandler - ); + }) + .addVersion( + { + version: API_VERSIONS.public.v1, + validate: false, + }, + getAvailableVersionsHandler + ); }; diff --git a/x-pack/plugins/fleet/server/routes/agent_policy/index.ts b/x-pack/plugins/fleet/server/routes/agent_policy/index.ts index 4482d02119887..7ca3409f72b88 100644 --- a/x-pack/plugins/fleet/server/routes/agent_policy/index.ts +++ b/x-pack/plugins/fleet/server/routes/agent_policy/index.ts @@ -7,6 +7,8 @@ import type { FleetAuthzRouter } from '../../services/security'; +import { API_VERSIONS } from '../../../common/constants'; + import { AGENT_POLICY_API_ROUTES } from '../../constants'; import { GetAgentPoliciesRequestSchema, @@ -38,135 +40,178 @@ import { export const registerRoutes = (router: FleetAuthzRouter) => { // List - Fleet Server needs access to run setup - router.get( - { + router.versioned + .get({ path: AGENT_POLICY_API_ROUTES.LIST_PATTERN, - validate: GetAgentPoliciesRequestSchema, - options: { access: 'public' }, fleetAuthz: { fleet: { readAgentPolicies: true }, }, - }, - getAgentPoliciesHandler - ); + }) + .addVersion( + { + version: API_VERSIONS.public.v1, + validate: { request: GetAgentPoliciesRequestSchema }, + }, + getAgentPoliciesHandler + ); // Bulk GET - router.post( - { + router.versioned + .post({ path: AGENT_POLICY_API_ROUTES.BULK_GET_PATTERN, - validate: BulkGetAgentPoliciesRequestSchema, fleetAuthz: { fleet: { readAgentPolicies: true }, }, - }, - bulkGetAgentPoliciesHandler - ); + }) + .addVersion( + { + version: API_VERSIONS.public.v1, + validate: { request: BulkGetAgentPoliciesRequestSchema }, + }, + bulkGetAgentPoliciesHandler + ); // Get one - router.get( - { + router.versioned + .get({ path: AGENT_POLICY_API_ROUTES.INFO_PATTERN, - validate: GetOneAgentPolicyRequestSchema, fleetAuthz: { fleet: { all: true }, }, - }, - getOneAgentPolicyHandler - ); + }) + .addVersion( + { + version: API_VERSIONS.public.v1, + validate: { request: GetOneAgentPolicyRequestSchema }, + }, + getOneAgentPolicyHandler + ); // Create - router.post( - { + router.versioned + .post({ path: AGENT_POLICY_API_ROUTES.CREATE_PATTERN, - validate: CreateAgentPolicyRequestSchema, fleetAuthz: { fleet: { all: true }, }, - }, - createAgentPolicyHandler - ); + }) + .addVersion( + { + version: API_VERSIONS.public.v1, + validate: { request: CreateAgentPolicyRequestSchema }, + }, + createAgentPolicyHandler + ); // Update - router.put( - { + router.versioned + .put({ path: AGENT_POLICY_API_ROUTES.UPDATE_PATTERN, - validate: UpdateAgentPolicyRequestSchema, fleetAuthz: { fleet: { all: true }, }, - }, - updateAgentPolicyHandler - ); + }) + .addVersion( + { + version: API_VERSIONS.public.v1, + validate: { request: UpdateAgentPolicyRequestSchema }, + }, + updateAgentPolicyHandler + ); // Copy - router.post( - { + router.versioned + .post({ path: AGENT_POLICY_API_ROUTES.COPY_PATTERN, - validate: CopyAgentPolicyRequestSchema, fleetAuthz: { fleet: { all: true }, }, - }, - copyAgentPolicyHandler - ); + }) + .addVersion( + { + version: API_VERSIONS.public.v1, + validate: { request: CopyAgentPolicyRequestSchema }, + }, + copyAgentPolicyHandler + ); // Delete - router.post( - { + router.versioned + .post({ path: AGENT_POLICY_API_ROUTES.DELETE_PATTERN, - validate: DeleteAgentPolicyRequestSchema, fleetAuthz: { fleet: { all: true }, }, - }, - deleteAgentPoliciesHandler - ); + }) + .addVersion( + { + version: API_VERSIONS.public.v1, + validate: { request: DeleteAgentPolicyRequestSchema }, + }, + deleteAgentPoliciesHandler + ); // Get one full agent policy - router.get( - { + router.versioned + .get({ path: AGENT_POLICY_API_ROUTES.FULL_INFO_PATTERN, - validate: GetFullAgentPolicyRequestSchema, fleetAuthz: { fleet: { all: true }, }, - }, - getFullAgentPolicy - ); + }) + .addVersion( + { + version: API_VERSIONS.public.v1, + validate: { request: GetFullAgentPolicyRequestSchema }, + }, + getFullAgentPolicy + ); // Download one full agent policy - router.get( - { + router.versioned + .get({ path: AGENT_POLICY_API_ROUTES.FULL_INFO_DOWNLOAD_PATTERN, - validate: GetFullAgentPolicyRequestSchema, fleetAuthz: { fleet: { all: true }, }, - }, - downloadFullAgentPolicy - ); + }) + .addVersion( + { + version: API_VERSIONS.public.v1, + validate: { request: GetFullAgentPolicyRequestSchema }, + }, + downloadFullAgentPolicy + ); // Get agent manifest - router.get( - { + router.versioned + .get({ path: K8S_API_ROUTES.K8S_INFO_PATTERN, - validate: GetK8sManifestRequestSchema, fleetAuthz: { fleet: { all: true }, }, - }, - getK8sManifest - ); + }) + .addVersion( + { + version: API_VERSIONS.public.v1, + validate: { request: GetK8sManifestRequestSchema }, + }, + getK8sManifest + ); // Download agent manifest - router.get( - { + router.versioned + .get({ path: K8S_API_ROUTES.K8S_DOWNLOAD_PATTERN, - validate: GetK8sManifestRequestSchema, fleetAuthz: { fleet: { all: true }, }, - }, - downloadK8sManifest - ); + }) + .addVersion( + { + version: API_VERSIONS.public.v1, + validate: { request: GetK8sManifestRequestSchema }, + }, + downloadK8sManifest + ); }; diff --git a/x-pack/plugins/fleet/server/routes/app/index.ts b/x-pack/plugins/fleet/server/routes/app/index.ts index cb0c12f9211aa..cb7b5f284962d 100644 --- a/x-pack/plugins/fleet/server/routes/app/index.ts +++ b/x-pack/plugins/fleet/server/routes/app/index.ts @@ -11,6 +11,8 @@ import type { TypeOf } from '@kbn/config-schema'; import type { FleetAuthzRouter } from '../../services/security'; import { APP_API_ROUTES } from '../../constants'; +import { API_VERSIONS, INTERNAL_API_ACCESS } from '../../../common/constants'; + import { appContextService } from '../../services'; import type { CheckPermissionsResponse, GenerateServiceTokenResponse } from '../../../common/types'; import { defaultFleetErrorHandler, GenerateServiceTokenError } from '../../errors'; @@ -87,33 +89,47 @@ export const generateServiceTokenHandler: RequestHandler = async (context, reque }; export const registerRoutes = (router: FleetAuthzRouter) => { - router.get( - { + router.versioned + .get({ path: APP_API_ROUTES.CHECK_PERMISSIONS_PATTERN, - validate: CheckPermissionsRequestSchema, - }, - getCheckPermissionsHandler - ); + }) + .addVersion( + { + version: API_VERSIONS.public.v1, + validate: { request: CheckPermissionsRequestSchema }, + }, + getCheckPermissionsHandler + ); - router.post( - { + router.versioned + .post({ path: APP_API_ROUTES.GENERATE_SERVICE_TOKEN_PATTERN, - validate: {}, fleetAuthz: { fleet: { all: true }, }, - }, - generateServiceTokenHandler - ); + }) + .addVersion( + { + version: API_VERSIONS.public.v1, + validate: {}, + }, - router.post( - { + generateServiceTokenHandler + ); + + router.versioned + .post({ path: APP_API_ROUTES.GENERATE_SERVICE_TOKEN_PATTERN_DEPRECATED, - validate: {}, fleetAuthz: { fleet: { all: true }, }, - }, - generateServiceTokenHandler - ); + access: INTERNAL_API_ACCESS, + }) + .addVersion( + { + version: API_VERSIONS.internal.v1, + validate: {}, + }, + generateServiceTokenHandler + ); }; diff --git a/x-pack/plugins/fleet/server/routes/data_streams/index.ts b/x-pack/plugins/fleet/server/routes/data_streams/index.ts index 861ade8771922..cb2af8be110f8 100644 --- a/x-pack/plugins/fleet/server/routes/data_streams/index.ts +++ b/x-pack/plugins/fleet/server/routes/data_streams/index.ts @@ -7,20 +7,26 @@ import type { FleetAuthzRouter } from '../../services/security'; +import { API_VERSIONS } from '../../../common/constants'; + import { DATA_STREAM_API_ROUTES } from '../../constants'; import { getListHandler } from './handlers'; export const registerRoutes = (router: FleetAuthzRouter) => { // List of data streams - router.get( - { + router.versioned + .get({ path: DATA_STREAM_API_ROUTES.LIST_PATTERN, - validate: false, fleetAuthz: { fleet: { all: true }, }, - }, - getListHandler - ); + }) + .addVersion( + { + version: API_VERSIONS.public.v1, + validate: false, + }, + getListHandler + ); }; diff --git a/x-pack/plugins/fleet/server/routes/download_source/index.tsx b/x-pack/plugins/fleet/server/routes/download_source/index.tsx index 135cbf5700784..a307d5a3296da 100644 --- a/x-pack/plugins/fleet/server/routes/download_source/index.tsx +++ b/x-pack/plugins/fleet/server/routes/download_source/index.tsx @@ -7,6 +7,8 @@ import type { FleetAuthzRouter } from '../../services/security'; +import { API_VERSIONS } from '../../../common/constants'; + import { DOWNLOAD_SOURCE_API_ROUTES } from '../../constants'; import { getDownloadSourcesRequestSchema, @@ -25,56 +27,78 @@ import { } from './handler'; export const registerRoutes = (router: FleetAuthzRouter) => { - router.get( - { + router.versioned + .get({ path: DOWNLOAD_SOURCE_API_ROUTES.LIST_PATTERN, - validate: getDownloadSourcesRequestSchema, fleetAuthz: { fleet: { all: true }, }, - }, - getDownloadSourcesHandler - ); - router.get( - { + }) + .addVersion( + { + version: API_VERSIONS.public.v1, + validate: { request: getDownloadSourcesRequestSchema }, + }, + getDownloadSourcesHandler + ); + + router.versioned + .get({ path: DOWNLOAD_SOURCE_API_ROUTES.INFO_PATTERN, - validate: GetOneDownloadSourcesRequestSchema, fleetAuthz: { fleet: { all: true }, }, - }, - getOneDownloadSourcesHandler - ); - router.put( - { + }) + .addVersion( + { + version: API_VERSIONS.public.v1, + validate: { request: GetOneDownloadSourcesRequestSchema }, + }, + getOneDownloadSourcesHandler + ); + + router.versioned + .put({ path: DOWNLOAD_SOURCE_API_ROUTES.UPDATE_PATTERN, - validate: PutDownloadSourcesRequestSchema, fleetAuthz: { fleet: { all: true }, }, - }, - putDownloadSourcesHandler - ); + }) + .addVersion( + { + version: API_VERSIONS.public.v1, + validate: { request: PutDownloadSourcesRequestSchema }, + }, + putDownloadSourcesHandler + ); - router.post( - { + router.versioned + .post({ path: DOWNLOAD_SOURCE_API_ROUTES.CREATE_PATTERN, - validate: PostDownloadSourcesRequestSchema, fleetAuthz: { fleet: { all: true }, }, - }, - postDownloadSourcesHandler - ); + }) + .addVersion( + { + version: API_VERSIONS.public.v1, + validate: { request: PostDownloadSourcesRequestSchema }, + }, + postDownloadSourcesHandler + ); - router.delete( - { + router.versioned + .delete({ path: DOWNLOAD_SOURCE_API_ROUTES.DELETE_PATTERN, - validate: DeleteDownloadSourcesRequestSchema, fleetAuthz: { fleet: { all: true }, }, - }, - deleteDownloadSourcesHandler - ); + }) + .addVersion( + { + version: API_VERSIONS.public.v1, + validate: { request: DeleteDownloadSourcesRequestSchema }, + }, + deleteDownloadSourcesHandler + ); }; diff --git a/x-pack/plugins/fleet/server/routes/enrollment_api_key/index.ts b/x-pack/plugins/fleet/server/routes/enrollment_api_key/index.ts index 496ec7ae705ce..222e5752abe49 100644 --- a/x-pack/plugins/fleet/server/routes/enrollment_api_key/index.ts +++ b/x-pack/plugins/fleet/server/routes/enrollment_api_key/index.ts @@ -8,6 +8,8 @@ import type { FleetAuthzRouter } from '../../services/security'; import { ENROLLMENT_API_KEY_ROUTES } from '../../constants'; +import { API_VERSIONS, INTERNAL_API_ACCESS } from '../../../common/constants'; + import { GetEnrollmentAPIKeysRequestSchema, GetOneEnrollmentAPIKeyRequestSchema, @@ -23,91 +25,127 @@ import { } from './handler'; export const registerRoutes = (router: FleetAuthzRouter) => { - router.get( - { + router.versioned + .get({ path: ENROLLMENT_API_KEY_ROUTES.INFO_PATTERN, - validate: GetOneEnrollmentAPIKeyRequestSchema, fleetAuthz: { fleet: { readEnrollmentTokens: true }, }, - }, - getOneEnrollmentApiKeyHandler - ); + }) + .addVersion( + { + version: API_VERSIONS.public.v1, + validate: { request: GetOneEnrollmentAPIKeyRequestSchema }, + }, + getOneEnrollmentApiKeyHandler + ); - router.delete( - { + router.versioned + .delete({ path: ENROLLMENT_API_KEY_ROUTES.DELETE_PATTERN, - validate: DeleteEnrollmentAPIKeyRequestSchema, fleetAuthz: { fleet: { all: true }, }, - }, - deleteEnrollmentApiKeyHandler - ); + }) + .addVersion( + { + version: API_VERSIONS.public.v1, + validate: { request: DeleteEnrollmentAPIKeyRequestSchema }, + }, + deleteEnrollmentApiKeyHandler + ); - router.get( - { + router.versioned + .get({ path: ENROLLMENT_API_KEY_ROUTES.LIST_PATTERN, - validate: GetEnrollmentAPIKeysRequestSchema, fleetAuthz: { fleet: { readEnrollmentTokens: true }, }, - }, - getEnrollmentApiKeysHandler - ); + }) + .addVersion( + { + version: API_VERSIONS.public.v1, + validate: { request: GetEnrollmentAPIKeysRequestSchema }, + }, + getEnrollmentApiKeysHandler + ); - router.post( - { + router.versioned + .post({ path: ENROLLMENT_API_KEY_ROUTES.CREATE_PATTERN, - validate: PostEnrollmentAPIKeyRequestSchema, fleetAuthz: { fleet: { all: true }, }, - }, - postEnrollmentApiKeyHandler - ); + }) + .addVersion( + { + version: API_VERSIONS.public.v1, + validate: { request: PostEnrollmentAPIKeyRequestSchema }, + }, + postEnrollmentApiKeyHandler + ); - router.get( - { + router.versioned + .get({ path: ENROLLMENT_API_KEY_ROUTES.INFO_PATTERN_DEPRECATED, - validate: GetOneEnrollmentAPIKeyRequestSchema, fleetAuthz: { fleet: { readEnrollmentTokens: true }, }, - }, - getOneEnrollmentApiKeyHandler - ); + access: INTERNAL_API_ACCESS, + }) + .addVersion( + { + version: API_VERSIONS.internal.v1, + validate: { request: GetOneEnrollmentAPIKeyRequestSchema }, + }, + getOneEnrollmentApiKeyHandler + ); - router.delete( - { + router.versioned + .delete({ path: ENROLLMENT_API_KEY_ROUTES.DELETE_PATTERN_DEPRECATED, - validate: DeleteEnrollmentAPIKeyRequestSchema, fleetAuthz: { fleet: { all: true }, }, - }, - deleteEnrollmentApiKeyHandler - ); + access: INTERNAL_API_ACCESS, + }) + .addVersion( + { + version: API_VERSIONS.internal.v1, + validate: { request: DeleteEnrollmentAPIKeyRequestSchema }, + }, + deleteEnrollmentApiKeyHandler + ); - router.get( - { + router.versioned + .get({ path: ENROLLMENT_API_KEY_ROUTES.LIST_PATTERN_DEPRECATED, - validate: GetEnrollmentAPIKeysRequestSchema, fleetAuthz: { fleet: { readEnrollmentTokens: true }, }, - }, - getEnrollmentApiKeysHandler - ); + access: INTERNAL_API_ACCESS, + }) + .addVersion( + { + version: API_VERSIONS.internal.v1, + validate: { request: GetEnrollmentAPIKeysRequestSchema }, + }, + getEnrollmentApiKeysHandler + ); - router.post( - { + router.versioned + .post({ path: ENROLLMENT_API_KEY_ROUTES.CREATE_PATTERN_DEPRECATED, - validate: PostEnrollmentAPIKeyRequestSchema, fleetAuthz: { fleet: { all: true }, }, - }, - postEnrollmentApiKeyHandler - ); + access: INTERNAL_API_ACCESS, + }) + .addVersion( + { + version: API_VERSIONS.internal.v1, + validate: { request: PostEnrollmentAPIKeyRequestSchema }, + }, + postEnrollmentApiKeyHandler + ); }; diff --git a/x-pack/plugins/fleet/server/routes/epm/index.ts b/x-pack/plugins/fleet/server/routes/epm/index.ts index 11dc43edbc4d8..4f354ae77d7f0 100644 --- a/x-pack/plugins/fleet/server/routes/epm/index.ts +++ b/x-pack/plugins/fleet/server/routes/epm/index.ts @@ -7,6 +7,8 @@ import type { IKibanaResponse } from '@kbn/core/server'; +import { API_VERSIONS, INTERNAL_API_ACCESS } from '../../../common/constants'; + import type { FleetAuthz } from '../../../common'; import { @@ -78,107 +80,146 @@ export const READ_PACKAGE_INFO_AUTHZ: FleetAuthzRouteConfig['fleetAuthz'] = { }; export const registerRoutes = (router: FleetAuthzRouter) => { - router.get( - { + router.versioned + .get({ path: EPM_API_ROUTES.CATEGORIES_PATTERN, - validate: GetCategoriesRequestSchema, fleetAuthz: READ_PACKAGE_INFO_AUTHZ, - }, - getCategoriesHandler - ); + }) + .addVersion( + { + version: API_VERSIONS.public.v1, + validate: { request: GetCategoriesRequestSchema }, + }, + getCategoriesHandler + ); - router.get( - { + router.versioned + .get({ path: EPM_API_ROUTES.LIST_PATTERN, - validate: GetPackagesRequestSchema, fleetAuthz: READ_PACKAGE_INFO_AUTHZ, - }, - getListHandler - ); + }) + .addVersion( + { + version: API_VERSIONS.public.v1, + validate: { request: GetPackagesRequestSchema }, + }, + getListHandler + ); - router.get( - { + router.versioned + .get({ path: EPM_API_ROUTES.INSTALLED_LIST_PATTERN, - validate: GetInstalledPackagesRequestSchema, fleetAuthz: READ_PACKAGE_INFO_AUTHZ, - }, - getInstalledListHandler - ); + }) + .addVersion( + { + version: API_VERSIONS.public.v1, + validate: { request: GetInstalledPackagesRequestSchema }, + }, + getInstalledListHandler + ); - router.get( - { + router.versioned + .get({ path: EPM_API_ROUTES.LIMITED_LIST_PATTERN, - validate: false, fleetAuthz: READ_PACKAGE_INFO_AUTHZ, - }, - getLimitedListHandler - ); + }) + .addVersion( + { + version: API_VERSIONS.public.v1, + validate: false, + }, + getLimitedListHandler + ); - router.get( - { + router.versioned + .get({ path: EPM_API_ROUTES.STATS_PATTERN, - validate: GetStatsRequestSchema, fleetAuthz: READ_PACKAGE_INFO_AUTHZ, - }, - getStatsHandler - ); + }) + .addVersion( + { + version: API_VERSIONS.public.v1, + validate: { request: GetStatsRequestSchema }, + }, + getStatsHandler + ); - router.get( - { + router.versioned + .get({ path: EPM_API_ROUTES.FILEPATH_PATTERN, - validate: GetFileRequestSchema, fleetAuthz: READ_PACKAGE_INFO_AUTHZ, - }, - getFileHandler - ); + }) + .addVersion( + { + version: API_VERSIONS.public.v1, + validate: { request: GetFileRequestSchema }, + }, + getFileHandler + ); - router.get( - { + router.versioned + .get({ path: EPM_API_ROUTES.INFO_PATTERN, - validate: GetInfoRequestSchema, fleetAuthz: (fleetAuthz: FleetAuthz): boolean => calculateRouteAuthz(fleetAuthz, getRouteRequiredAuthz('get', EPM_API_ROUTES.INFO_PATTERN)) .granted, - }, - getInfoHandler - ); + }) + .addVersion( + { + version: API_VERSIONS.public.v1, + validate: { request: GetInfoRequestSchema }, + }, + getInfoHandler + ); - router.put( - { + router.versioned + .put({ path: EPM_API_ROUTES.INFO_PATTERN, - validate: UpdatePackageRequestSchema, fleetAuthz: { integrations: { upgradePackages: true, writePackageSettings: true }, }, - }, - updatePackageHandler - ); + }) + .addVersion( + { + version: API_VERSIONS.public.v1, + validate: { request: UpdatePackageRequestSchema }, + }, + updatePackageHandler + ); - router.post( - { + router.versioned + .post({ path: EPM_API_ROUTES.INSTALL_FROM_REGISTRY_PATTERN, - validate: InstallPackageFromRegistryRequestSchema, fleetAuthz: INSTALL_PACKAGES_AUTHZ, - }, - installPackageFromRegistryHandler - ); + }) + .addVersion( + { + version: API_VERSIONS.public.v1, + validate: { request: InstallPackageFromRegistryRequestSchema }, + }, + installPackageFromRegistryHandler + ); - router.post( - { + router.versioned + .post({ path: EPM_API_ROUTES.BULK_INSTALL_PATTERN, - validate: BulkInstallPackagesFromRegistryRequestSchema, fleetAuthz: { integrations: { installPackages: true, upgradePackages: true }, }, - }, - bulkInstallPackagesFromRegistryHandler - ); + }) + .addVersion( + { + version: API_VERSIONS.public.v1, + validate: { request: BulkInstallPackagesFromRegistryRequestSchema }, + }, + bulkInstallPackagesFromRegistryHandler + ); // Only allow upload for superuser - router.post( - { + router.versioned + .post({ path: EPM_API_ROUTES.INSTALL_BY_UPLOAD_PATTERN, - validate: InstallPackageByUploadRequestSchema, options: { body: { accepts: ['application/gzip', 'application/zip'], @@ -189,157 +230,202 @@ export const registerRoutes = (router: FleetAuthzRouter) => { fleetAuthz: { integrations: { uploadPackages: true }, }, - }, - installPackageByUploadHandler - ); + }) + .addVersion( + { + version: API_VERSIONS.public.v1, + validate: { request: InstallPackageByUploadRequestSchema }, + }, + installPackageByUploadHandler + ); - router.post( - { + router.versioned + .post({ path: EPM_API_ROUTES.CUSTOM_INTEGRATIONS_PATTERN, - validate: CreateCustomIntegrationRequestSchema, fleetAuthz: INSTALL_PACKAGES_AUTHZ, - }, - createCustomIntegrationHandler - ); + }) + .addVersion( + { + version: API_VERSIONS.public.v1, + validate: { request: CreateCustomIntegrationRequestSchema }, + }, + createCustomIntegrationHandler + ); - router.delete( - { + router.versioned + .delete({ path: EPM_API_ROUTES.DELETE_PATTERN, - validate: DeletePackageRequestSchema, fleetAuthz: { integrations: { removePackages: true }, }, - }, - deletePackageHandler - ); + }) + .addVersion( + { + version: API_VERSIONS.public.v1, + validate: { request: DeletePackageRequestSchema }, + }, + + deletePackageHandler + ); - router.get( - { + router.versioned + .get({ path: EPM_API_ROUTES.VERIFICATION_KEY_ID, - validate: false, fleetAuthz: READ_PACKAGE_INFO_AUTHZ, - }, - getVerificationKeyIdHandler - ); + }) + .addVersion( + { + version: API_VERSIONS.public.v1, + validate: false, + }, + getVerificationKeyIdHandler + ); - router.get( - { + router.versioned + .get({ path: EPM_API_ROUTES.DATA_STREAMS_PATTERN, - validate: GetDataStreamsRequestSchema, fleetAuthz: READ_PACKAGE_INFO_AUTHZ, - }, - getDataStreamsHandler - ); + }) + .addVersion( + { + version: API_VERSIONS.public.v1, + validate: { request: GetDataStreamsRequestSchema }, + }, + getDataStreamsHandler + ); - router.post( - { + router.versioned + .post({ path: EPM_API_ROUTES.BULK_ASSETS_PATTERN, - validate: GetBulkAssetsRequestSchema, fleetAuthz: READ_PACKAGE_INFO_AUTHZ, - }, - getBulkAssetsHandler - ); + }) + .addVersion( + { + version: API_VERSIONS.public.v1, + validate: { request: GetBulkAssetsRequestSchema }, + }, + getBulkAssetsHandler + ); // deprecated since 8.0 - router.get( - { + // This endpoint should be marked as internal but the router selects this endpoint over the new GET one + // For now keeping it public + router.versioned + .get({ path: EPM_API_ROUTES.INFO_PATTERN_DEPRECATED, - validate: GetInfoRequestSchemaDeprecated, fleetAuthz: (fleetAuthz: FleetAuthz): boolean => calculateRouteAuthz( fleetAuthz, getRouteRequiredAuthz('get', EPM_API_ROUTES.INFO_PATTERN_DEPRECATED) ).granted, - }, - async (context, request, response) => { - const newRequest = { ...request, params: splitPkgKey(request.params.pkgkey) } as any; - const resp: IKibanaResponse = await getInfoHandler( - context, - newRequest, - response - ); - if (resp.payload?.item) { - // returning item as well here, because pkgVersion is optional in new GET endpoint, and if not specified, the router selects the deprecated route - return response.ok({ body: { item: resp.payload.item, response: resp.payload.item } }); + }) + .addVersion( + { + version: API_VERSIONS.public.v1, + validate: { request: GetInfoRequestSchemaDeprecated }, + }, + async (context, request, response) => { + const newRequest = { ...request, params: splitPkgKey(request.params.pkgkey) } as any; + const resp: IKibanaResponse = await getInfoHandler( + context, + newRequest, + response + ); + if (resp.payload?.item) { + // returning item as well here, because pkgVersion is optional in new GET endpoint, and if not specified, the router selects the deprecated route + return response.ok({ body: { item: resp.payload.item, response: resp.payload.item } }); + } + return resp; } - return resp; - } - ); + ); - router.put( - { + router.versioned + .put({ path: EPM_API_ROUTES.INFO_PATTERN_DEPRECATED, - validate: UpdatePackageRequestSchemaDeprecated, + fleetAuthz: { integrations: { upgradePackages: true, writePackageSettings: true }, }, - }, - async (context, request, response) => { - const newRequest = { ...request, params: splitPkgKey(request.params.pkgkey) } as any; - const resp: IKibanaResponse = await updatePackageHandler( - context, - newRequest, - response - ); - if (resp.payload?.item) { - return response.ok({ body: { response: resp.payload.item } }); + access: INTERNAL_API_ACCESS, + }) + .addVersion( + { + version: API_VERSIONS.internal.v1, + validate: { request: UpdatePackageRequestSchemaDeprecated }, + }, + async (context, request, response) => { + const newRequest = { ...request, params: splitPkgKey(request.params.pkgkey) } as any; + const resp: IKibanaResponse = await updatePackageHandler( + context, + newRequest, + response + ); + if (resp.payload?.item) { + return response.ok({ body: { response: resp.payload.item } }); + } + return resp; } - return resp; - } - ); + ); - router.post( - { + // This endpoint should be marked as internal but the router selects this endpoint over the new POST + router.versioned + .post({ path: EPM_API_ROUTES.INSTALL_FROM_REGISTRY_PATTERN_DEPRECATED, - validate: InstallPackageFromRegistryRequestSchemaDeprecated, fleetAuthz: INSTALL_PACKAGES_AUTHZ, - }, - async (context, request, response) => { - const newRequest = { - ...request, - params: splitPkgKey(request.params.pkgkey), - query: request.query, - } as any; - const resp: IKibanaResponse = await installPackageFromRegistryHandler( - context, - newRequest, - response - ); - if (resp.payload?.items) { - return response.ok({ body: { ...resp.payload, response: resp.payload.items } }); + }) + .addVersion( + { + version: API_VERSIONS.public.v1, + validate: { request: InstallPackageFromRegistryRequestSchemaDeprecated }, + }, + async (context, request, response) => { + const newRequest = { + ...request, + params: splitPkgKey(request.params.pkgkey), + query: request.query, + } as any; + const resp: IKibanaResponse = + await installPackageFromRegistryHandler(context, newRequest, response); + if (resp.payload?.items) { + return response.ok({ body: { ...resp.payload, response: resp.payload.items } }); + } + return resp; } - return resp; - } - ); + ); - router.delete( - { + router.versioned + .delete({ path: EPM_API_ROUTES.DELETE_PATTERN_DEPRECATED, - validate: DeletePackageRequestSchemaDeprecated, + fleetAuthz: { integrations: { removePackages: true }, }, - }, - async (context, request, response) => { - const newRequest = { ...request, params: splitPkgKey(request.params.pkgkey) } as any; - const resp: IKibanaResponse = await deletePackageHandler( - context, - newRequest, - response - ); - if (resp.payload?.items) { - return response.ok({ body: { response: resp.payload.items } }); + access: INTERNAL_API_ACCESS, + }) + .addVersion( + { + version: API_VERSIONS.internal.v1, + validate: { request: DeletePackageRequestSchemaDeprecated }, + }, + async (context, request, response) => { + const newRequest = { ...request, params: splitPkgKey(request.params.pkgkey) } as any; + const resp: IKibanaResponse = await deletePackageHandler( + context, + newRequest, + response + ); + if (resp.payload?.items) { + return response.ok({ body: { response: resp.payload.items } }); + } + return resp; } - return resp; - } - ); + ); // Update transforms with es-secondary-authorization headers, // append authorized_by to transform's _meta, and start transforms - router.post( - { + router.versioned + .post({ path: EPM_API_ROUTES.REAUTHORIZE_TRANSFORMS, - validate: ReauthorizeTransformRequestSchema, fleetAuthz: { ...INSTALL_PACKAGES_AUTHZ, packagePrivileges: { @@ -352,7 +438,12 @@ export const registerRoutes = (router: FleetAuthzRouter) => { }, }, }, - }, - reauthorizeTransformsHandler - ); + }) + .addVersion( + { + version: API_VERSIONS.public.v1, + validate: { request: ReauthorizeTransformRequestSchema }, + }, + reauthorizeTransformsHandler + ); }; diff --git a/x-pack/plugins/fleet/server/routes/fleet_proxies/index.ts b/x-pack/plugins/fleet/server/routes/fleet_proxies/index.ts index 079b475e4f533..5cd35e027275a 100644 --- a/x-pack/plugins/fleet/server/routes/fleet_proxies/index.ts +++ b/x-pack/plugins/fleet/server/routes/fleet_proxies/index.ts @@ -5,6 +5,7 @@ * 2.0. */ import type { FleetAuthzRouter } from '../../services/security'; +import { API_VERSIONS } from '../../../common/constants'; import { FLEET_PROXY_API_ROUTES } from '../../../common/constants'; import { @@ -22,58 +23,78 @@ import { } from './handler'; export const registerRoutes = (router: FleetAuthzRouter) => { - router.get( - { + router.versioned + .get({ path: FLEET_PROXY_API_ROUTES.LIST_PATTERN, - validate: false, fleetAuthz: { fleet: { all: true }, }, - }, - getAllFleetProxyHandler - ); + }) + .addVersion( + { + version: API_VERSIONS.public.v1, + validate: false, + }, + getAllFleetProxyHandler + ); - router.post( - { + router.versioned + .post({ path: FLEET_PROXY_API_ROUTES.CREATE_PATTERN, - validate: PostFleetProxyRequestSchema, fleetAuthz: { fleet: { all: true }, }, - }, - postFleetProxyHandler - ); + }) + .addVersion( + { + version: API_VERSIONS.public.v1, + validate: { request: PostFleetProxyRequestSchema }, + }, + postFleetProxyHandler + ); - router.put( - { + router.versioned + .put({ path: FLEET_PROXY_API_ROUTES.UPDATE_PATTERN, - validate: PutFleetProxyRequestSchema, fleetAuthz: { fleet: { all: true }, }, - }, - putFleetProxyHandler - ); + }) + .addVersion( + { + version: API_VERSIONS.public.v1, + validate: { request: PutFleetProxyRequestSchema }, + }, + putFleetProxyHandler + ); - router.get( - { + router.versioned + .get({ path: FLEET_PROXY_API_ROUTES.DELETE_PATTERN, - validate: GetOneFleetProxyRequestSchema, fleetAuthz: { fleet: { all: true }, }, - }, - getFleetProxyHandler - ); + }) + .addVersion( + { + version: API_VERSIONS.public.v1, + validate: { request: GetOneFleetProxyRequestSchema }, + }, + getFleetProxyHandler + ); - router.delete( - { + router.versioned + .delete({ path: FLEET_PROXY_API_ROUTES.DELETE_PATTERN, - validate: GetOneFleetProxyRequestSchema, fleetAuthz: { fleet: { all: true }, }, - }, - deleteFleetProxyHandler - ); + }) + .addVersion( + { + version: API_VERSIONS.public.v1, + validate: { request: GetOneFleetProxyRequestSchema }, + }, + deleteFleetProxyHandler + ); }; diff --git a/x-pack/plugins/fleet/server/routes/fleet_server_hosts/index.ts b/x-pack/plugins/fleet/server/routes/fleet_server_hosts/index.ts index 6132216846824..5dddc693206b0 100644 --- a/x-pack/plugins/fleet/server/routes/fleet_server_hosts/index.ts +++ b/x-pack/plugins/fleet/server/routes/fleet_server_hosts/index.ts @@ -7,6 +7,8 @@ import type { FleetAuthzRouter } from '../../services/security'; +import { API_VERSIONS } from '../../../common/constants'; + import { FLEET_SERVER_HOST_API_ROUTES } from '../../../common/constants'; import { GetAllFleetServerHostRequestSchema, @@ -24,54 +26,74 @@ import { } from './handler'; export const registerRoutes = (router: FleetAuthzRouter) => { - router.get( - { + router.versioned + .get({ path: FLEET_SERVER_HOST_API_ROUTES.LIST_PATTERN, - validate: GetAllFleetServerHostRequestSchema, fleetAuthz: { fleet: { all: true }, }, - }, - getAllFleetServerHostsHandler - ); - router.post( - { + }) + .addVersion( + { + version: API_VERSIONS.public.v1, + validate: { request: GetAllFleetServerHostRequestSchema }, + }, + getAllFleetServerHostsHandler + ); + router.versioned + .post({ path: FLEET_SERVER_HOST_API_ROUTES.CREATE_PATTERN, - validate: PostFleetServerHostRequestSchema, fleetAuthz: { fleet: { all: true }, }, - }, - postFleetServerHost - ); - router.get( - { + }) + .addVersion( + { + version: API_VERSIONS.public.v1, + validate: { request: PostFleetServerHostRequestSchema }, + }, + postFleetServerHost + ); + router.versioned + .get({ path: FLEET_SERVER_HOST_API_ROUTES.INFO_PATTERN, - validate: GetOneFleetServerHostRequestSchema, fleetAuthz: { fleet: { all: true }, }, - }, - getFleetServerHostHandler - ); - router.delete( - { + }) + .addVersion( + { + version: API_VERSIONS.public.v1, + validate: { request: GetOneFleetServerHostRequestSchema }, + }, + getFleetServerHostHandler + ); + router.versioned + .delete({ path: FLEET_SERVER_HOST_API_ROUTES.DELETE_PATTERN, - validate: GetOneFleetServerHostRequestSchema, fleetAuthz: { fleet: { all: true }, }, - }, - deleteFleetServerHostHandler - ); - router.put( - { + }) + .addVersion( + { + version: API_VERSIONS.public.v1, + validate: { request: GetOneFleetServerHostRequestSchema }, + }, + deleteFleetServerHostHandler + ); + router.versioned + .put({ path: FLEET_SERVER_HOST_API_ROUTES.UPDATE_PATTERN, - validate: PutFleetServerHostRequestSchema, fleetAuthz: { fleet: { all: true }, }, - }, - putFleetServerHostHandler - ); + }) + .addVersion( + { + version: API_VERSIONS.public.v1, + validate: { request: PutFleetServerHostRequestSchema }, + }, + putFleetServerHostHandler + ); }; diff --git a/x-pack/plugins/fleet/server/routes/health_check/index.ts b/x-pack/plugins/fleet/server/routes/health_check/index.ts index 55bd4bf7029ee..44f26e2a66167 100644 --- a/x-pack/plugins/fleet/server/routes/health_check/index.ts +++ b/x-pack/plugins/fleet/server/routes/health_check/index.ts @@ -9,6 +9,7 @@ import https from 'https'; import type { TypeOf } from '@kbn/config-schema'; import fetch from 'node-fetch'; +import { API_VERSIONS } from '../../../common/constants'; import type { FleetAuthzRouter } from '../../services/security'; import { APP_API_ROUTES } from '../../constants'; @@ -18,16 +19,20 @@ import { PostHealthCheckRequestSchema } from '../../types'; export const registerRoutes = (router: FleetAuthzRouter) => { // get fleet server health check by host - router.post( - { + router.versioned + .post({ path: APP_API_ROUTES.HEALTH_CHECK_PATTERN, - validate: PostHealthCheckRequestSchema, fleetAuthz: { fleet: { all: true }, }, - }, - postHealthCheckHandler - ); + }) + .addVersion( + { + version: API_VERSIONS.public.v1, + validate: { request: PostHealthCheckRequestSchema }, + }, + postHealthCheckHandler + ); }; export const postHealthCheckHandler: FleetRequestHandler< diff --git a/x-pack/plugins/fleet/server/routes/message_signing_service/index.ts b/x-pack/plugins/fleet/server/routes/message_signing_service/index.ts index 56c64fb2b4ddf..c2d7f125bd082 100644 --- a/x-pack/plugins/fleet/server/routes/message_signing_service/index.ts +++ b/x-pack/plugins/fleet/server/routes/message_signing_service/index.ts @@ -6,6 +6,7 @@ */ import type { FleetAuthzRouter } from '../../services/security'; +import { API_VERSIONS } from '../../../common/constants'; import { MESSAGE_SIGNING_SERVICE_API_ROUTES } from '../../constants'; import { RotateKeyPairSchema } from '../../types'; @@ -13,14 +14,18 @@ import { rotateKeyPairHandler } from './handlers'; export const registerRoutes = (router: FleetAuthzRouter) => { // Rotate fleet message signing key pair - router.post( - { + router.versioned + .post({ path: MESSAGE_SIGNING_SERVICE_API_ROUTES.ROTATE_KEY_PAIR, - validate: RotateKeyPairSchema, fleetAuthz: { fleet: { all: true }, }, - }, - rotateKeyPairHandler - ); + }) + .addVersion( + { + version: API_VERSIONS.public.v1, + validate: { request: RotateKeyPairSchema }, + }, + rotateKeyPairHandler + ); }; diff --git a/x-pack/plugins/fleet/server/routes/output/index.ts b/x-pack/plugins/fleet/server/routes/output/index.ts index 330d9f57cc653..3b769118da5a3 100644 --- a/x-pack/plugins/fleet/server/routes/output/index.ts +++ b/x-pack/plugins/fleet/server/routes/output/index.ts @@ -7,6 +7,8 @@ import type { FleetAuthzRouter } from '../../services/security'; +import { API_VERSIONS } from '../../../common/constants'; + import { OUTPUT_API_ROUTES } from '../../constants'; import { DeleteOutputRequestSchema, @@ -26,67 +28,91 @@ import { } from './handler'; export const registerRoutes = (router: FleetAuthzRouter) => { - router.get( - { + router.versioned + .get({ path: OUTPUT_API_ROUTES.LIST_PATTERN, - validate: GetOutputsRequestSchema, fleetAuthz: { fleet: { all: true }, }, - }, - getOutputsHandler - ); - router.get( - { + }) + .addVersion( + { + version: API_VERSIONS.public.v1, + validate: { request: GetOutputsRequestSchema }, + }, + getOutputsHandler + ); + router.versioned + .get({ path: OUTPUT_API_ROUTES.INFO_PATTERN, - validate: GetOneOutputRequestSchema, fleetAuthz: { fleet: { all: true }, }, - }, - getOneOuputHandler - ); - router.put( - { + }) + .addVersion( + { + version: API_VERSIONS.public.v1, + validate: { request: GetOneOutputRequestSchema }, + }, + getOneOuputHandler + ); + router.versioned + .put({ path: OUTPUT_API_ROUTES.UPDATE_PATTERN, - validate: PutOutputRequestSchema, fleetAuthz: { fleet: { all: true }, }, - }, - putOutputHandler - ); + }) + .addVersion( + { + version: API_VERSIONS.public.v1, + validate: { request: PutOutputRequestSchema }, + }, + putOutputHandler + ); - router.post( - { + router.versioned + .post({ path: OUTPUT_API_ROUTES.CREATE_PATTERN, - validate: PostOutputRequestSchema, fleetAuthz: { fleet: { all: true }, }, - }, - postOutputHandler - ); + }) + .addVersion( + { + version: API_VERSIONS.public.v1, + validate: { request: PostOutputRequestSchema }, + }, + postOutputHandler + ); - router.delete( - { + router.versioned + .delete({ path: OUTPUT_API_ROUTES.DELETE_PATTERN, - validate: DeleteOutputRequestSchema, fleetAuthz: { fleet: { all: true }, }, - }, - deleteOutputHandler - ); + }) + .addVersion( + { + version: API_VERSIONS.public.v1, + validate: { request: DeleteOutputRequestSchema }, + }, + deleteOutputHandler + ); - router.post( - { + router.versioned + .post({ path: OUTPUT_API_ROUTES.LOGSTASH_API_KEY_PATTERN, - validate: false, fleetAuthz: { fleet: { all: true }, }, - }, - postLogstashApiKeyHandler - ); + }) + .addVersion( + { + version: API_VERSIONS.public.v1, + validate: false, + }, + postLogstashApiKeyHandler + ); }; diff --git a/x-pack/plugins/fleet/server/routes/package_policy/handlers.test.ts b/x-pack/plugins/fleet/server/routes/package_policy/handlers.test.ts index 92ab414eab2b1..b4fb34ef377fa 100644 --- a/x-pack/plugins/fleet/server/routes/package_policy/handlers.test.ts +++ b/x-pack/plugins/fleet/server/routes/package_policy/handlers.test.ts @@ -187,9 +187,13 @@ describe('When calling package policy', () => { }; beforeEach(() => { - [routeConfig, routeHandler] = routerMock.put.mock.calls.find(([{ path }]) => + // @ts-ignore + const putMock = routerMock.versioned.put.mock; + // @ts-ignore + routeConfig = putMock.calls.find(([{ path }]) => path.startsWith(PACKAGE_POLICY_API_ROUTES.UPDATE_PATTERN) )!; + routeHandler = putMock.results[0].value.addVersion.mock.calls[0][1]; }); beforeEach(() => { diff --git a/x-pack/plugins/fleet/server/routes/package_policy/index.ts b/x-pack/plugins/fleet/server/routes/package_policy/index.ts index 393bbb2fd982b..893eb37a9b1bc 100644 --- a/x-pack/plugins/fleet/server/routes/package_policy/index.ts +++ b/x-pack/plugins/fleet/server/routes/package_policy/index.ts @@ -10,6 +10,7 @@ import { getRouteRequiredAuthz } from '../../services/security'; import type { FleetAuthzRouter } from '../../services/security'; import type { FleetAuthz } from '../../../common'; +import { API_VERSIONS } from '../../../common/constants'; import { PACKAGE_POLICY_API_ROUTES } from '../../constants'; import { GetPackagePoliciesRequestSchema, @@ -39,125 +40,166 @@ import { export const registerRoutes = (router: FleetAuthzRouter) => { // List - router.get( - { + router.versioned + .get({ path: PACKAGE_POLICY_API_ROUTES.LIST_PATTERN, - validate: GetPackagePoliciesRequestSchema, fleetAuthz: (fleetAuthz: FleetAuthz): boolean => calculateRouteAuthz( fleetAuthz, getRouteRequiredAuthz('get', PACKAGE_POLICY_API_ROUTES.LIST_PATTERN) ).granted, - }, - getPackagePoliciesHandler - ); + }) + .addVersion( + { + version: API_VERSIONS.public.v1, + validate: { request: GetPackagePoliciesRequestSchema }, + }, + getPackagePoliciesHandler + ); // Get bulk - router.post( - { + router.versioned + .post({ path: PACKAGE_POLICY_API_ROUTES.BULK_GET_PATTERN, - validate: BulkGetPackagePoliciesRequestSchema, fleetAuthz: (fleetAuthz: FleetAuthz): boolean => calculateRouteAuthz( fleetAuthz, getRouteRequiredAuthz('post', PACKAGE_POLICY_API_ROUTES.BULK_GET_PATTERN) ).granted, - }, - bulkGetPackagePoliciesHandler - ); + }) + .addVersion( + { + version: API_VERSIONS.public.v1, + validate: { request: BulkGetPackagePoliciesRequestSchema }, + }, + bulkGetPackagePoliciesHandler + ); // Get one - router.get( - { + router.versioned + .get({ path: PACKAGE_POLICY_API_ROUTES.INFO_PATTERN, - validate: GetOnePackagePolicyRequestSchema, fleetAuthz: (fleetAuthz: FleetAuthz): boolean => calculateRouteAuthz( fleetAuthz, getRouteRequiredAuthz('get', PACKAGE_POLICY_API_ROUTES.INFO_PATTERN) ).granted, - }, - getOnePackagePolicyHandler - ); + }) + .addVersion( + { + version: API_VERSIONS.public.v1, + validate: { request: GetOnePackagePolicyRequestSchema }, + }, + getOnePackagePolicyHandler + ); - router.get( - { + router.versioned + .get({ path: PACKAGE_POLICY_API_ROUTES.ORPHANED_INTEGRATION_POLICIES, - validate: {}, fleetAuthz: { integrations: { readIntegrationPolicies: true }, }, - }, - getOrphanedPackagePolicies - ); + }) + .addVersion( + { + version: API_VERSIONS.public.v1, + validate: {}, + }, + getOrphanedPackagePolicies + ); // Create - router.post( - { + router.versioned + .post({ path: PACKAGE_POLICY_API_ROUTES.CREATE_PATTERN, - validate: CreatePackagePolicyRequestSchema, - }, - createPackagePolicyHandler - ); + }) + .addVersion( + { + version: API_VERSIONS.public.v1, + validate: { request: CreatePackagePolicyRequestSchema }, + }, + createPackagePolicyHandler + ); // Update - router.put( - { + router.versioned + .put({ path: PACKAGE_POLICY_API_ROUTES.UPDATE_PATTERN, - validate: UpdatePackagePolicyRequestSchema, fleetAuthz: (fleetAuthz: FleetAuthz): boolean => calculateRouteAuthz( fleetAuthz, getRouteRequiredAuthz('put', PACKAGE_POLICY_API_ROUTES.UPDATE_PATTERN) ).granted, - }, - updatePackagePolicyHandler - ); + }) + .addVersion( + { + version: API_VERSIONS.public.v1, + validate: { request: UpdatePackagePolicyRequestSchema }, + }, + + updatePackagePolicyHandler + ); // Delete (bulk) - router.post( - { + router.versioned + .post({ path: PACKAGE_POLICY_API_ROUTES.DELETE_PATTERN, - validate: DeletePackagePoliciesRequestSchema, fleetAuthz: { integrations: { writeIntegrationPolicies: true }, }, - }, - deletePackagePolicyHandler - ); + }) + .addVersion( + { + version: API_VERSIONS.public.v1, + validate: { request: DeletePackagePoliciesRequestSchema }, + }, + deletePackagePolicyHandler + ); - router.delete( - { + router.versioned + .delete({ path: PACKAGE_POLICY_API_ROUTES.INFO_PATTERN, - validate: DeleteOnePackagePolicyRequestSchema, fleetAuthz: { integrations: { writeIntegrationPolicies: true }, }, - }, - deleteOnePackagePolicyHandler - ); + }) + .addVersion( + { + version: API_VERSIONS.public.v1, + validate: { request: DeleteOnePackagePolicyRequestSchema }, + }, + deleteOnePackagePolicyHandler + ); // Upgrade - router.post( - { + router.versioned + .post({ path: PACKAGE_POLICY_API_ROUTES.UPGRADE_PATTERN, - validate: UpgradePackagePoliciesRequestSchema, fleetAuthz: { integrations: { writeIntegrationPolicies: true }, }, - }, - upgradePackagePolicyHandler - ); + }) + .addVersion( + { + version: API_VERSIONS.public.v1, + validate: { request: UpgradePackagePoliciesRequestSchema }, + }, + upgradePackagePolicyHandler + ); // Upgrade - DryRun - router.post( - { + router.versioned + .post({ path: PACKAGE_POLICY_API_ROUTES.DRYRUN_PATTERN, - validate: DryRunPackagePoliciesRequestSchema, fleetAuthz: { integrations: { readIntegrationPolicies: true }, }, - }, - dryRunUpgradePackagePolicyHandler - ); + }) + .addVersion( + { + version: API_VERSIONS.public.v1, + validate: { request: DryRunPackagePoliciesRequestSchema }, + }, + dryRunUpgradePackagePolicyHandler + ); }; diff --git a/x-pack/plugins/fleet/server/routes/preconfiguration/index.ts b/x-pack/plugins/fleet/server/routes/preconfiguration/index.ts index 2d46599988f1a..e78396005d4c2 100644 --- a/x-pack/plugins/fleet/server/routes/preconfiguration/index.ts +++ b/x-pack/plugins/fleet/server/routes/preconfiguration/index.ts @@ -7,36 +7,43 @@ import type { FleetAuthzRouter } from '../../services/security'; +import { API_VERSIONS } from '../../../common/constants'; + import { PRECONFIGURATION_API_ROUTES } from '../../constants'; import { PostResetOnePreconfiguredAgentPoliciesSchema } from '../../types'; import { resetPreconfigurationHandler, resetOnePreconfigurationHandler } from './handler'; export const registerRoutes = (router: FleetAuthzRouter) => { - router.post( - { + router.versioned + .post({ path: PRECONFIGURATION_API_ROUTES.RESET_PATTERN, - validate: false, - options: { - access: 'internal', - }, + access: 'internal', fleetAuthz: { fleet: { all: true }, }, - }, - resetPreconfigurationHandler - ); - router.post( - { - path: PRECONFIGURATION_API_ROUTES.RESET_ONE_PATTERN, - validate: PostResetOnePreconfiguredAgentPoliciesSchema, - options: { - access: 'internal', + }) + .addVersion( + { + version: API_VERSIONS.internal.v1, + validate: false, }, + + resetPreconfigurationHandler + ); + router.versioned + .post({ + path: PRECONFIGURATION_API_ROUTES.RESET_ONE_PATTERN, + access: 'internal', fleetAuthz: { fleet: { all: true }, }, - }, - resetOnePreconfigurationHandler - ); + }) + .addVersion( + { + version: API_VERSIONS.internal.v1, + validate: { request: PostResetOnePreconfiguredAgentPoliciesSchema }, + }, + resetOnePreconfigurationHandler + ); }; diff --git a/x-pack/plugins/fleet/server/routes/settings/index.ts b/x-pack/plugins/fleet/server/routes/settings/index.ts index 881541b569805..89da7496dc0c2 100644 --- a/x-pack/plugins/fleet/server/routes/settings/index.ts +++ b/x-pack/plugins/fleet/server/routes/settings/index.ts @@ -7,6 +7,7 @@ import type { TypeOf } from '@kbn/config-schema'; +import { API_VERSIONS } from '../../../common/constants'; import type { FleetAuthzRouter } from '../../services/security'; import { SETTINGS_API_ROUTES } from '../../constants'; @@ -65,24 +66,32 @@ export const putSettingsHandler: FleetRequestHandler< }; export const registerRoutes = (router: FleetAuthzRouter) => { - router.get( - { + router.versioned + .get({ path: SETTINGS_API_ROUTES.INFO_PATTERN, - validate: GetSettingsRequestSchema, fleetAuthz: { fleet: { all: true }, }, - }, - getSettingsHandler - ); - router.put( - { + }) + .addVersion( + { + version: API_VERSIONS.public.v1, + validate: { request: GetSettingsRequestSchema }, + }, + getSettingsHandler + ); + router.versioned + .put({ path: SETTINGS_API_ROUTES.UPDATE_PATTERN, - validate: PutSettingsRequestSchema, fleetAuthz: { fleet: { all: true }, }, - }, - putSettingsHandler - ); + }) + .addVersion( + { + version: API_VERSIONS.public.v1, + validate: { request: PutSettingsRequestSchema }, + }, + putSettingsHandler + ); }; diff --git a/x-pack/plugins/fleet/server/routes/setup/handlers.test.ts b/x-pack/plugins/fleet/server/routes/setup/handlers.test.ts index acf5b1a301a60..3a38d30b1da9f 100644 --- a/x-pack/plugins/fleet/server/routes/setup/handlers.test.ts +++ b/x-pack/plugins/fleet/server/routes/setup/handlers.test.ts @@ -9,6 +9,7 @@ import type { AwaitedProperties } from '@kbn/utility-types'; import { httpServerMock, savedObjectsClientMock, coreMock } from '@kbn/core/server/mocks'; import type { PostFleetSetupResponse } from '../../../common/types'; +import { API_VERSIONS } from '../../../common/constants'; import { RegistryError } from '../../errors'; import { createAppContextStartContractMock, @@ -62,6 +63,7 @@ describe('FleetSetupHandler', () => { request = httpServerMock.createKibanaRequest({ method: 'post', path: '/api/fleet/setup', + headers: { 'Elastic-Api-Version': `${API_VERSIONS.public.v1}` }, }); // prevents `Logger not set.` and other appContext errors appContextService.start(createAppContextStartContractMock()); @@ -145,6 +147,7 @@ describe('FleetStatusHandler', () => { request = httpServerMock.createKibanaRequest({ method: 'post', path: '/api/fleet/status', + headers: { 'Elastic-Api-Version': `${API_VERSIONS.public.v1}` }, }); // prevents `Logger not set.` and other appContext errors appContextService.start(createAppContextStartContractMock()); diff --git a/x-pack/plugins/fleet/server/routes/setup/index.ts b/x-pack/plugins/fleet/server/routes/setup/index.ts index b4470e648dcab..f09ff70e145aa 100644 --- a/x-pack/plugins/fleet/server/routes/setup/index.ts +++ b/x-pack/plugins/fleet/server/routes/setup/index.ts @@ -8,48 +8,62 @@ import type { FleetAuthzRouter } from '../../services/security'; import { AGENTS_SETUP_API_ROUTES, SETUP_API_ROUTE } from '../../constants'; +import { API_VERSIONS } from '../../../common/constants'; + import type { FleetConfigType } from '../../../common/types'; import { getFleetStatusHandler, fleetSetupHandler } from './handlers'; export const registerFleetSetupRoute = (router: FleetAuthzRouter) => { - router.post( - { + router.versioned + .post({ path: SETUP_API_ROUTE, - validate: false, fleetAuthz: { fleet: { setup: true }, }, - }, - fleetSetupHandler - ); + }) + .addVersion( + { + version: API_VERSIONS.public.v1, + validate: false, + }, + fleetSetupHandler + ); }; // That route is used by agent to setup Fleet export const registerCreateFleetSetupRoute = (router: FleetAuthzRouter) => { - router.post( - { + router.versioned + .post({ path: AGENTS_SETUP_API_ROUTES.CREATE_PATTERN, - validate: false, fleetAuthz: { fleet: { setup: true }, }, - }, - fleetSetupHandler - ); + }) + .addVersion( + { + version: API_VERSIONS.public.v1, + validate: false, + }, + fleetSetupHandler + ); }; export const registerGetFleetStatusRoute = (router: FleetAuthzRouter) => { - router.get( - { + router.versioned + .get({ path: AGENTS_SETUP_API_ROUTES.INFO_PATTERN, - validate: false, fleetAuthz: { fleet: { setup: true }, }, - }, - getFleetStatusHandler - ); + }) + .addVersion( + { + version: API_VERSIONS.public.v1, + validate: false, + }, + getFleetStatusHandler + ); }; export const registerRoutes = (router: FleetAuthzRouter, config: FleetConfigType) => { diff --git a/x-pack/plugins/fleet/server/routes/uninstall_token/handlers.test.ts b/x-pack/plugins/fleet/server/routes/uninstall_token/handlers.test.ts index d69cef4a14042..3767c9a8d66ee 100644 --- a/x-pack/plugins/fleet/server/routes/uninstall_token/handlers.test.ts +++ b/x-pack/plugins/fleet/server/routes/uninstall_token/handlers.test.ts @@ -6,11 +6,12 @@ */ import type { TypeOf } from '@kbn/config-schema'; -import type { KibanaRequest } from '@kbn/core-http-server'; -import { httpServerMock, coreMock } from '@kbn/core/server/mocks'; +import type { KibanaRequest, VersionedRouter } from '@kbn/core-http-server'; +import { httpServerMock, coreMock, loggingSystemMock } from '@kbn/core/server/mocks'; +import type { RequestHandler } from '@kbn/core/server'; -import type { RouterMock } from '@kbn/core-http-router-server-mocks'; -import { mockRouter } from '@kbn/core-http-router-server-mocks'; +import { makeRouterWithFleetAuthz } from '../../services/security/fleet_router'; +import type { FleetAuthzRouter } from '../../services/security/types'; import type { UninstallToken, @@ -185,30 +186,44 @@ describe('uninstall token handlers', () => { describe('Agent Tamper Protection feature flag', () => { let config: { enableExperimental: string[] }; - let router: RouterMock; + let fakeRouter: jest.Mocked>; + let fleetAuthzRouter: FleetAuthzRouter; beforeEach(() => { - router = mockRouter.create(); + fakeRouter = { + versioned: { + get: jest.fn().mockImplementation(() => { + return { + addVersion: jest + .fn() + .mockImplementation((options: any, handler: RequestHandler) => Promise.resolve()), + }; + }), + }, + } as unknown as jest.Mocked>; + + const mockLogger = loggingSystemMock.createLogger(); + fleetAuthzRouter = makeRouterWithFleetAuthz(fakeRouter as any, mockLogger); }); it('should register handlers if feature flag is enabled', () => { config = { enableExperimental: ['agentTamperProtectionEnabled'] }; - registerRoutes(router, config); + registerRoutes(fleetAuthzRouter, config); + const wrappedHandler = + // @ts-ignore + fakeRouter.versioned.get.mock.results[0].value.addVersion; - expect(router.get).toHaveBeenCalledWith( - expect.any(Object), - getUninstallTokensMetadataHandler - ); - expect(router.get).toHaveBeenCalledWith(expect.any(Object), getUninstallTokenHandler); + expect(wrappedHandler).toHaveBeenCalled(); }); it('should NOT register handlers if feature flag is disabled', async () => { config = { enableExperimental: [] }; + registerRoutes(fleetAuthzRouter, config); + // @ts-ignore + const mockGet = fakeRouter.versioned.get; - registerRoutes(router, config); - - expect(router.get).not.toHaveBeenCalled(); + expect(mockGet).not.toHaveBeenCalled(); }); }); }); diff --git a/x-pack/plugins/fleet/server/routes/uninstall_token/index.ts b/x-pack/plugins/fleet/server/routes/uninstall_token/index.ts index f22d77f70385e..a7214607cb309 100644 --- a/x-pack/plugins/fleet/server/routes/uninstall_token/index.ts +++ b/x-pack/plugins/fleet/server/routes/uninstall_token/index.ts @@ -4,7 +4,7 @@ * 2.0; you may not use this file except in compliance with the Elastic License * 2.0. */ -import { UNINSTALL_TOKEN_ROUTES } from '../../../common/constants'; +import { UNINSTALL_TOKEN_ROUTES, API_VERSIONS } from '../../../common/constants'; import type { FleetConfigType } from '../../config'; import type { FleetAuthzRouter } from '../../services/security'; @@ -20,26 +20,34 @@ export const registerRoutes = (router: FleetAuthzRouter, config: FleetConfigType const experimentalFeatures = parseExperimentalConfigValue(config.enableExperimental); if (experimentalFeatures.agentTamperProtectionEnabled) { - router.get( - { + router.versioned + .get({ path: UNINSTALL_TOKEN_ROUTES.LIST_PATTERN, - validate: GetUninstallTokensMetadataRequestSchema, fleetAuthz: { fleet: { all: true }, }, - }, - getUninstallTokensMetadataHandler - ); + }) + .addVersion( + { + version: API_VERSIONS.public.v1, + validate: { request: GetUninstallTokensMetadataRequestSchema }, + }, + getUninstallTokensMetadataHandler + ); - router.get( - { + router.versioned + .get({ path: UNINSTALL_TOKEN_ROUTES.INFO_PATTERN, - validate: GetUninstallTokenRequestSchema, fleetAuthz: { fleet: { all: true }, }, - }, - getUninstallTokenHandler - ); + }) + .addVersion( + { + version: API_VERSIONS.public.v1, + validate: { request: GetUninstallTokenRequestSchema }, + }, + getUninstallTokenHandler + ); } }; diff --git a/x-pack/plugins/fleet/server/services/security/fleet_router.test.ts b/x-pack/plugins/fleet/server/services/security/fleet_router.test.ts index bb6ea59eeec82..1e7d09f261603 100644 --- a/x-pack/plugins/fleet/server/services/security/fleet_router.test.ts +++ b/x-pack/plugins/fleet/server/services/security/fleet_router.test.ts @@ -6,7 +6,8 @@ */ import type { CheckPrivilegesDynamically } from '@kbn/security-plugin/server/authorization/check_privileges_dynamically'; -import type { IRouter, RequestHandler, RouteConfig } from '@kbn/core/server'; +import type { RequestHandler } from '@kbn/core/server'; +import type { VersionedRouter } from '@kbn/core-http-server'; import { loggingSystemMock } from '@kbn/core/server/mocks'; import type { AuthenticatedUser } from '@kbn/security-plugin/common'; @@ -17,6 +18,8 @@ import type { CheckPrivilegesPayload } from '@kbn/security-plugin/server'; import type { CheckPrivilegesResponse } from '@kbn/security-plugin/server/authorization/types'; +import { API_VERSIONS } from '../../../common/constants'; + import type { FleetRequestHandlerContext } from '../..'; import { createAppContextStartContractMock } from '../../mocks'; import { appContextService } from '..'; @@ -64,8 +67,16 @@ describe('FleetAuthzRouter', () => { routeConfig?: any; }) => { const fakeRouter = { - get: jest.fn(), - } as unknown as jest.Mocked>; + versioned: { + get: jest.fn().mockImplementation(() => { + return { + addVersion: jest + .fn() + .mockImplementation((options: any, handler: RequestHandler) => Promise.resolve()), + }; + }), + }, + } as unknown as jest.Mocked>; const fakeHandler: RequestHandler = jest.fn((ctx, req, res) => res.ok()); const mockContext = createAppContextStartContractMock(); @@ -92,10 +103,15 @@ describe('FleetAuthzRouter', () => { appContextService.start(mockContext); - const fleetAuthzRouter = makeRouterWithFleetAuthz(fakeRouter, mockLogger); - fleetAuthzRouter.get({ ...routeConfig } as RouteConfig, fakeHandler); - const wrappedHandler = fakeRouter.get.mock.calls[0][1]; - const wrappedRouteConfig = fakeRouter.get.mock.calls[0][0]; + const fleetAuthzRouter = makeRouterWithFleetAuthz(fakeRouter as any, mockLogger); + fleetAuthzRouter.versioned + .get({ ...routeConfig }) + .addVersion({ version: API_VERSIONS.public.v1, validate: false }, fakeHandler); + // @ts-ignore + const wrappedRouteConfig = fakeRouter.versioned.get.mock.calls[0][0]; + const wrappedHandler = + // @ts-ignore + fakeRouter.versioned.get.mock.results[0].value.addVersion.mock.calls[0][1]; const resFactory = { forbidden: jest.fn(() => 'forbidden'), ok: jest.fn(() => 'ok') }; const fakeReq = { @@ -203,15 +219,48 @@ describe('FleetAuthzRouter', () => { }); describe('default access', () => { - let fakeRouter: jest.Mocked>; + let fakeRouter: jest.Mocked>; + beforeEach(() => { fakeRouter = { - get: jest.fn(), - post: jest.fn(), - delete: jest.fn(), - put: jest.fn(), - patch: jest.fn(), - } as unknown as jest.Mocked>; + versioned: { + get: jest.fn().mockImplementation(() => { + return { + addVersion: jest + .fn() + .mockImplementation((options: any, handler: RequestHandler) => Promise.resolve()), + }; + }), + post: jest.fn().mockImplementation(() => { + return { + addVersion: jest + .fn() + .mockImplementation((options: any, handler: RequestHandler) => Promise.resolve()), + }; + }), + delete: jest.fn().mockImplementation(() => { + return { + addVersion: jest + .fn() + .mockImplementation((options: any, handler: RequestHandler) => Promise.resolve()), + }; + }), + put: jest.fn().mockImplementation(() => { + return { + addVersion: jest + .fn() + .mockImplementation((options: any, handler: RequestHandler) => Promise.resolve()), + }; + }), + patch: jest.fn().mockImplementation(() => { + return { + addVersion: jest + .fn() + .mockImplementation((options: any, handler: RequestHandler) => Promise.resolve()), + }; + }), + }, + } as unknown as jest.Mocked>; }); const METHODS: Array<'get' | 'post' | 'delete' | 'put' | 'patch'> = [ @@ -225,37 +274,30 @@ describe('FleetAuthzRouter', () => { for (const method of METHODS) { describe(`${method}`, () => { it('should set default access to public', () => { - const fleetAuthzRouter = makeRouterWithFleetAuthz(fakeRouter, mockLogger); - fleetAuthzRouter[method]( - { - path: '/test', - validate: false, - }, - (() => {}) as any - ); - expect(fakeRouter[method]).toBeCalledWith( + const fleetAuthzRouter = makeRouterWithFleetAuthz(fakeRouter as any, mockLogger); + + fleetAuthzRouter.versioned[method]({ + path: '/test', + }); + // @ts-ignore + expect(fakeRouter.versioned[method]).toBeCalledWith( expect.objectContaining({ - options: { access: 'public' }, - }), - expect.anything() + access: 'public', + }) ); }); - it('should not allow to define internal routes', () => { - const fleetAuthzRouter = makeRouterWithFleetAuthz(fakeRouter, mockLogger); - fleetAuthzRouter[method]( - { - path: '/test', - validate: false, - options: { access: 'internal' }, - }, - (() => {}) as any - ); - expect(fakeRouter[method]).toBeCalledWith( + it('should allow to define internal routes when called with access: internal', () => { + const fleetAuthzRouter = makeRouterWithFleetAuthz(fakeRouter as any, mockLogger); + fleetAuthzRouter.versioned[method]({ + path: '/test', + access: 'internal', + }); + // @ts-ignore + expect(fakeRouter.versioned[method]).toBeCalledWith( expect.objectContaining({ - options: { access: 'internal' }, - }), - expect.anything() + access: 'internal', + }) ); }); }); diff --git a/x-pack/plugins/fleet/server/services/security/fleet_router.ts b/x-pack/plugins/fleet/server/services/security/fleet_router.ts index a956f1522161c..f8e374c458344 100644 --- a/x-pack/plugins/fleet/server/services/security/fleet_router.ts +++ b/x-pack/plugins/fleet/server/services/security/fleet_router.ts @@ -13,38 +13,40 @@ import type { Logger, RequestHandler, RouteMethod, - RouteConfig, - RouteConfigOptions, } from '@kbn/core/server'; +import type { VersionedRouteConfig } from '@kbn/core-http-server'; + +import { PUBLIC_API_ACCESS } from '../../../common/constants'; import type { FleetRequestHandlerContext } from '../..'; import { getRequestStore } from '../request_store'; -import type { FleetAuthzRouteConfig, FleetAuthzRouter } from './types'; +import type { FleetVersionedRouteConfig } from './types'; + +import type { + FleetAuthzRouteConfig, + FleetAuthzRouter, + FleetAddVersionOpts, + FleetHandler, +} from './types'; import { checkSecurityEnabled, getAuthzFromRequest, doesNotHaveRequiredFleetAuthz, } from './security'; -function withDefaultPublicAccess( - routeConfig: RouteConfig -): RouteConfig { - let newOptions: RouteConfigOptions; - if (routeConfig?.options) { - newOptions = { ...routeConfig?.options }; +function withDefaultPublicAccess( + options: FleetVersionedRouteConfig +): VersionedRouteConfig { + if (options?.access) { + return options as VersionedRouteConfig; } else { - newOptions = {}; - } - - if (!newOptions.access) { - newOptions.access = 'public'; + return { + ...options, + access: PUBLIC_API_ACCESS, + }; } - return { - ...routeConfig, - options: newOptions, - }; } export function makeRouterWithFleetAuthz( @@ -126,35 +128,113 @@ export function makeRouterWithFleetAuthz = { - get: ({ fleetAuthz: hasRequiredAuthz, ...options }, handler) => { - router.get(withDefaultPublicAccess(options), (context, request, response) => - fleetHandlerWrapper({ context, request, response, handler, hasRequiredAuthz }) - ); - }, - delete: ({ fleetAuthz: hasRequiredAuthz, ...options }, handler) => { - router.delete(withDefaultPublicAccess(options), (context, request, response) => - fleetHandlerWrapper({ context, request, response, handler, hasRequiredAuthz }) - ); - }, - post: ({ fleetAuthz: hasRequiredAuthz, ...options }, handler) => { - router.post(withDefaultPublicAccess(options), (context, request, response) => - fleetHandlerWrapper({ context, request, response, handler, hasRequiredAuthz }) - ); - }, - put: ({ fleetAuthz: hasRequiredAuthz, ...options }, handler) => { - router.put(withDefaultPublicAccess(options), (context, request, response) => - fleetHandlerWrapper({ context, request, response, handler, hasRequiredAuthz }) - ); - }, - patch: ({ fleetAuthz: hasRequiredAuthz, ...options }, handler) => { - router.patch(withDefaultPublicAccess(options), (context, request, response) => - fleetHandlerWrapper({ context, request, response, handler, hasRequiredAuthz }) - ); + versioned: { + get: ({ fleetAuthz, ...options }) => { + const res = router.versioned.get(withDefaultPublicAccess(options)); + const originalAddVersion = res.addVersion.bind(res); + + function addVersion( + { fleetAuthz: versionAuthz, ...opts }: FleetAddVersionOpts, + handler: FleetHandler + ) { + originalAddVersion({ ...opts }, (context, request, response) => + fleetHandlerWrapper({ + context, + request, + response, + handler, + hasRequiredAuthz: versionAuthz || fleetAuthz, + }) + ); + return { addVersion }; + } + return { addVersion }; + }, + delete: ({ fleetAuthz, ...options }) => { + const res = router.versioned.delete(withDefaultPublicAccess(options)); + const originalAddVersion = res.addVersion.bind(res); + + function addVersion( + { fleetAuthz: versionAuthz, ...opts }: FleetAddVersionOpts, + handler: FleetHandler + ) { + originalAddVersion({ ...opts }, (context, request, response) => + fleetHandlerWrapper({ + context, + request, + response, + handler, + hasRequiredAuthz: versionAuthz || fleetAuthz, + }) + ); + return { addVersion }; + } + return { addVersion }; + }, + put: ({ fleetAuthz, ...options }) => { + const res = router.versioned.put(withDefaultPublicAccess(options)); + const originalAddVersion = res.addVersion.bind(res); + + function addVersion( + { fleetAuthz: versionAuthz, ...opts }: FleetAddVersionOpts, + handler: FleetHandler + ) { + originalAddVersion({ ...opts }, (context, request, response) => + fleetHandlerWrapper({ + context, + request, + response, + handler, + hasRequiredAuthz: versionAuthz || fleetAuthz, + }) + ); + return { addVersion }; + } + return { addVersion }; + }, + post: ({ fleetAuthz, ...options }) => { + const res = router.versioned.post(withDefaultPublicAccess(options)); + const originalAddVersion = res.addVersion.bind(res); + + function addVersion( + { fleetAuthz: versionAuthz, ...opts }: FleetAddVersionOpts, + handler: FleetHandler + ) { + originalAddVersion({ ...opts }, (context, request, response) => + fleetHandlerWrapper({ + context, + request, + response, + handler, + hasRequiredAuthz: versionAuthz || fleetAuthz, + }) + ); + return { addVersion }; + } + return { addVersion }; + }, + patch: ({ fleetAuthz, ...options }) => { + const res = router.versioned.patch(withDefaultPublicAccess(options)); + const originalAddVersion = res.addVersion.bind(res); + + function addVersion( + { fleetAuthz: versionAuthz, ...opts }: FleetAddVersionOpts, + handler: FleetHandler + ) { + originalAddVersion({ ...opts }, (context, request, response) => + fleetHandlerWrapper({ + context, + request, + response, + handler, + hasRequiredAuthz: versionAuthz || fleetAuthz, + }) + ); + return { addVersion }; + } + return { addVersion }; + }, }, - handleLegacyErrors: (handler) => router.handleLegacyErrors(handler), - getRoutes: () => router.getRoutes(), - routerPath: router.routerPath, - versioned: router.versioned, }; return fleetAuthzRouter; diff --git a/x-pack/plugins/fleet/server/services/security/types.ts b/x-pack/plugins/fleet/server/services/security/types.ts index 8559ee57b35e8..258872388c505 100644 --- a/x-pack/plugins/fleet/server/services/security/types.ts +++ b/x-pack/plugins/fleet/server/services/security/types.ts @@ -5,9 +5,16 @@ * 2.0. */ -import type { RouteConfig, RouteMethod } from '@kbn/core-http-server'; +import type { + RouteMethod, + VersionedRouteConfig, + AddVersionOpts, + IKibanaResponse, + RouteConfigOptions, +} from '@kbn/core-http-server'; import type { RequestHandlerContext } from '@kbn/core-http-request-handler-context-server'; -import type { IRouter, RequestHandler } from '@kbn/core/server'; +import type { RequestHandler } from '@kbn/core/server'; +import type { MaybePromise } from '@kbn/utility-types'; import type { FleetRequestHandlerContext } from '../..'; @@ -19,10 +26,7 @@ type FleetAuthzRouterConfigParam = FleetAuthzRequirements | ((userAuthz: FleetAu type FleetAuthzRouteRegistrar< Method extends RouteMethod, Context extends RequestHandlerContext = RequestHandlerContext -> = ( - route: FleetRouteConfig, - handler: RequestHandler -) => void; +> = (config: FleetRouteConfig) => FleetVersionedRoute; export interface FleetAuthzRouteConfig< T extends FleetAuthzRouterConfigParam = FleetAuthzRouterConfigParam @@ -30,13 +34,27 @@ export interface FleetAuthzRouteConfig< fleetAuthz?: T; } -export type FleetRouteConfig = RouteConfig & +/** + * Internal type necessary to make access in VersionedRouteConfig optional + */ +export type FleetVersionedRouteConfig = Omit< + VersionedRouteConfig, + 'access' +> & { + access?: Exclude['access'], undefined>; +}; +/** + * Interface replacing the native VersionedRouteConfig to accept fleetAuthz + */ +export type FleetRouteConfig = FleetVersionedRouteConfig & FleetAuthzRouteConfig; -// Fleet router that allow to add required access when registering route -export interface FleetAuthzRouter< +/** + * Interface replacing the native VersionedRouter to handle fleetAuthz + */ +export interface FleetVersionedRouter< TContext extends FleetRequestHandlerContext = FleetRequestHandlerContext -> extends IRouter { +> { get: FleetAuthzRouteRegistrar<'get', TContext>; delete: FleetAuthzRouteRegistrar<'delete', TContext>; post: FleetAuthzRouteRegistrar<'post', TContext>; @@ -44,6 +62,15 @@ export interface FleetAuthzRouter< patch: FleetAuthzRouteRegistrar<'patch', TContext>; } +/** + * Fleet router that handles versions and authorizations when registering routes + */ +export interface FleetAuthzRouter< + TContext extends FleetRequestHandlerContext = FleetRequestHandlerContext +> { + versioned: FleetVersionedRouter; +} + type DeepPartialTruthy = { [P in keyof T]?: T[P] extends boolean ? true : DeepPartialTruthy; }; @@ -60,3 +87,27 @@ export type FleetRouteRequiredAuthz = Partial<{ any: FleetAuthzRequirements; all: FleetAuthzRequirements; }>; + +/** + * Interface used to extend Core native addVersionOpts interface to accept fleetAuthz + */ +export interface FleetAddVersionOpts extends AddVersionOpts { + fleetAuthz?: FleetAuthzRouteConfig['fleetAuthz']; +} + +export type FleetHandler = ( + ...params: Parameters> +) => MaybePromise; + +/** + * Interface that redefines Core native VersionedRoute interface to accept Fleet custom types + */ +export interface FleetVersionedRoute< + Method extends RouteMethod = RouteMethod, + Context extends RequestHandlerContext = RequestHandlerContext +> { + addVersion

( + options: FleetAddVersionOpts, + handler: FleetHandler + ): FleetVersionedRoute; +} diff --git a/x-pack/plugins/fleet/tsconfig.json b/x-pack/plugins/fleet/tsconfig.json index e0d261d7b7e72..b3f8a96417f9a 100644 --- a/x-pack/plugins/fleet/tsconfig.json +++ b/x-pack/plugins/fleet/tsconfig.json @@ -97,9 +97,9 @@ "@kbn/core-http-router-server-internal", "@kbn/safer-lodash-set", "@kbn/shared-ux-file-types", - "@kbn/core-http-router-server-mocks", "@kbn/core-application-browser", "@kbn/core-saved-objects-base-server-internal", + "@kbn/core-http-common", "@kbn/dashboard-plugin", ] } diff --git a/x-pack/plugins/graph/public/components/workspace_layout/workspace_top_nav_menu.tsx b/x-pack/plugins/graph/public/components/workspace_layout/workspace_top_nav_menu.tsx index 99ec4a3d5ce5f..f4dc33f73176c 100644 --- a/x-pack/plugins/graph/public/components/workspace_layout/workspace_top_nav_menu.tsx +++ b/x-pack/plugins/graph/public/components/workspace_layout/workspace_top_nav_menu.tsx @@ -12,7 +12,7 @@ import { AppMountParameters, Capabilities, CoreStart } from '@kbn/core/public'; import { useHistory, useLocation } from 'react-router-dom'; import { Start as InspectorPublicPluginStart, RequestAdapter } from '@kbn/inspector-plugin/public'; import { NavigationPublicPluginStart as NavigationStart } from '@kbn/navigation-plugin/public'; -import { toMountPoint, wrapWithTheme } from '@kbn/kibana-react-plugin/public'; +import { toMountPoint } from '@kbn/react-kibana-mount'; import { datasourceSelector, hasFieldsSelector } from '../../state_management'; import { GraphSavePolicy, GraphWorkspaceSavedObject, Workspace } from '../../types'; import { AsObservable, Settings, SettingsWorkspaceProps } from '../settings'; @@ -162,12 +162,10 @@ export const WorkspaceTopNavMenu = (props: WorkspaceTopNavMenuProps) => { props.coreStart.overlays.openFlyout( toMountPoint( - wrapWithTheme( - - - , - props.coreStart.theme.theme$ - ) + + + , + { theme: props.coreStart.theme, i18n: props.coreStart.i18n } ), { size: 'm', diff --git a/x-pack/plugins/graph/tsconfig.json b/x-pack/plugins/graph/tsconfig.json index f4dc6a3faaf73..1e8059c99c5d7 100644 --- a/x-pack/plugins/graph/tsconfig.json +++ b/x-pack/plugins/graph/tsconfig.json @@ -46,6 +46,7 @@ "@kbn/content-management-table-list-view-table", "@kbn/content-management-table-list-view", "@kbn/core-ui-settings-browser", + "@kbn/react-kibana-mount", ], "exclude": [ "target/**/*", diff --git a/x-pack/plugins/index_lifecycle_management/__jest__/__snapshots__/extend_index_management.test.tsx.snap b/x-pack/plugins/index_lifecycle_management/__jest__/__snapshots__/extend_index_management.test.tsx.snap index 7d7a293d7ae87..72c481a2ee613 100644 --- a/x-pack/plugins/index_lifecycle_management/__jest__/__snapshots__/extend_index_management.test.tsx.snap +++ b/x-pack/plugins/index_lifecycle_management/__jest__/__snapshots__/extend_index_management.test.tsx.snap @@ -134,18 +134,18 @@ Array [ class="euiFlexItem emotion-euiFlexItem-grow-1" >

Lifecycle policy
Current action
rollover
Failed step
check-rollover-ready
@@ -185,42 +185,42 @@ Array [ class="euiFlexItem emotion-euiFlexItem-grow-1" >
Current phase
hot
Current action time
2018-12-07 13:02:55
Phase definition
Lifecycle policy
Current action
complete
Failed step
-
@@ -312,30 +312,30 @@ Array [ class="euiFlexItem emotion-euiFlexItem-grow-1" >
Current phase
new
Current action time
2018-12-07 13:02:55
diff --git a/x-pack/plugins/infra/public/alerting/inventory/components/expression.tsx b/x-pack/plugins/infra/public/alerting/inventory/components/expression.tsx index f06335145877d..340c00b9f48cc 100644 --- a/x-pack/plugins/infra/public/alerting/inventory/components/expression.tsx +++ b/x-pack/plugins/infra/public/alerting/inventory/components/expression.tsx @@ -578,6 +578,7 @@ export const ExpressionRow: React.FC = (props) => { = (props) => { /> = (props) => { {canDelete && ( {children} {children} = ({ {canDelete && ( {children} {children} = (props) => { /> = (props) => { {canDelete && ( ({ return ( = ({ = ({ = ({ {page} {page} - + diff --git a/x-pack/plugins/infra/public/pages/metrics/inventory_view/components/node_details/tabs/properties/table.tsx b/x-pack/plugins/infra/public/pages/metrics/inventory_view/components/node_details/tabs/properties/table.tsx index 197e0ae1cb2a1..01b047f2e3664 100644 --- a/x-pack/plugins/infra/public/pages/metrics/inventory_view/components/node_details/tabs/properties/table.tsx +++ b/x-pack/plugins/infra/public/pages/metrics/inventory_view/components/node_details/tabs/properties/table.tsx @@ -65,6 +65,7 @@ export const Table = (props: Props) => { )} > onEdit(metric)} aria-label={i18n.translate( @@ -55,6 +56,7 @@ export const MetricsEditMode = withTheme( onDelete(metric)} diff --git a/x-pack/plugins/infra/public/pages/metrics/metric_detail/components/metadata_details.tsx b/x-pack/plugins/infra/public/pages/metrics/metric_detail/components/metadata_details.tsx index edd760bc17f64..e1596f52aa3c3 100644 --- a/x-pack/plugins/infra/public/pages/metrics/metric_detail/components/metadata_details.tsx +++ b/x-pack/plugins/infra/public/pages/metrics/metric_detail/components/metadata_details.tsx @@ -142,6 +142,7 @@ export const MetadataDetails = (props: Props) => { {filteredFields.length > NUMBER_OF_COLUMNS ? ( { .prop('value') ).toEqual('miaou'); }); + + it('should support decimals on dimension edit', () => { + const updateLayerSpy = jest.fn(); + const instance = mount( + + ); + + const input = instance + .find('[data-test-subj="lns-indexPattern-percentile_ranks-input"]') + .find(EuiFieldNumber); + + act(() => { + input.prop('onChange')!({ + currentTarget: { value: '10.5' }, + } as React.ChangeEvent); + }); + + instance.update(); + + expect(updateLayerSpy).toHaveBeenCalled(); + }); + + it('should not support decimals on inline edit', () => { + const updateLayerSpy = jest.fn(); + const instance = mount( + + ); + + const input = instance + .find('[data-test-subj="lns-indexPattern-percentile_ranks-input"]') + .find(EuiFieldNumber); + + act(() => { + input.prop('onChange')!({ + currentTarget: { value: '10.5' }, + } as React.ChangeEvent); + }); + + instance.update(); + + expect(updateLayerSpy).not.toHaveBeenCalled(); + + expect( + instance + .find('[data-test-subj="lns-indexPattern-percentile_ranks-form"]') + .first() + .prop('isInvalid') + ).toEqual(true); + expect( + instance + .find('[data-test-subj="lns-indexPattern-percentile_ranks-input"]') + .find(EuiFieldNumber) + .prop('value') + ).toEqual('10.5'); + }); }); }); diff --git a/x-pack/plugins/lens/public/datasources/form_based/operations/definitions/percentile_ranks.tsx b/x-pack/plugins/lens/public/datasources/form_based/operations/definitions/percentile_ranks.tsx index 7e071f8ddbd98..eda66e93765a5 100644 --- a/x-pack/plugins/lens/public/datasources/form_based/operations/definitions/percentile_ranks.tsx +++ b/x-pack/plugins/lens/public/datasources/form_based/operations/definitions/percentile_ranks.tsx @@ -189,7 +189,7 @@ export const percentileRanksOperation: OperationDefinition< }); const onChange = useCallback( (value) => { - if (!isValidNumber(value) || Number(value) === currentColumn.params.value) { + if (!isValidNumber(value, isInline) || Number(value) === currentColumn.params.value) { return; } paramEditorUpdater({ @@ -209,7 +209,7 @@ export const percentileRanksOperation: OperationDefinition< }, } as PercentileRanksIndexPatternColumn); }, - [paramEditorUpdater, currentColumn, indexPattern] + [isInline, currentColumn, paramEditorUpdater, indexPattern] ); const { inputValue, handleInputChange: handleInputChangeWithoutValidation } = useDebouncedValue< string | undefined @@ -220,7 +220,7 @@ export const percentileRanksOperation: OperationDefinition< }, { allowFalsyValue: true } ); - const inputValueIsValid = isValidNumber(inputValue); + const inputValueIsValid = isValidNumber(inputValue, isInline); const handleInputChange: EuiFieldNumberProps['onChange'] = useCallback( (e) => { @@ -250,7 +250,7 @@ export const percentileRanksOperation: OperationDefinition< compressed value={inputValue ?? ''} onChange={handleInputChange} - step="any" + step={isInline ? 1 : 'any'} aria-label={percentileRanksLabel} /> diff --git a/x-pack/plugins/lens/public/datasources/text_based/text_based_languages.tsx b/x-pack/plugins/lens/public/datasources/text_based/text_based_languages.tsx index e2dc541e77e2d..a76e2edd623b0 100644 --- a/x-pack/plugins/lens/public/datasources/text_based/text_based_languages.tsx +++ b/x-pack/plugins/lens/public/datasources/text_based/text_based_languages.tsx @@ -10,7 +10,7 @@ import React from 'react'; import { CoreStart } from '@kbn/core/public'; import { i18n } from '@kbn/i18n'; import { IStorageWrapper } from '@kbn/kibana-utils-plugin/public'; -import type { AggregateQuery } from '@kbn/es-query'; +import { AggregateQuery, isOfAggregateQueryType, getAggregateQueryMode } from '@kbn/es-query'; import type { SavedObjectReference } from '@kbn/core/public'; import { EuiFormRow } from '@elastic/eui'; import type { ExpressionsStart } from '@kbn/expressions-plugin/public'; @@ -371,6 +371,12 @@ export function getTextBasedDatasource({ }, getRenderEventCounters(state: TextBasedPrivateState): string[] { + const context = state?.initialContext; + if (context && 'query' in context && context.query && isOfAggregateQueryType(context.query)) { + const language = getAggregateQueryMode(context.query); + // it will eventually log render_lens_esql_chart + return [`${language}_chart`]; + } return []; }, diff --git a/x-pack/plugins/ml/public/application/components/annotations/annotation_description_list/__snapshots__/index.test.tsx.snap b/x-pack/plugins/ml/public/application/components/annotations/annotation_description_list/__snapshots__/index.test.tsx.snap index 275b46d154ed6..98026a92071b9 100644 --- a/x-pack/plugins/ml/public/application/components/annotations/annotation_description_list/__snapshots__/index.test.tsx.snap +++ b/x-pack/plugins/ml/public/application/components/annotations/annotation_description_list/__snapshots__/index.test.tsx.snap @@ -3,6 +3,12 @@ exports[`AnnotationDescriptionList Initialization with annotation. 1`] = ` * { - margin-top: $euiSizeXS; +.ml-annotation-description-list { + row-gap: $euiSizeXS; } diff --git a/x-pack/plugins/ml/public/application/components/annotations/annotation_description_list/index.tsx b/x-pack/plugins/ml/public/application/components/annotations/annotation_description_list/index.tsx index a32e18bb8940b..8ff86208435cf 100644 --- a/x-pack/plugins/ml/public/application/components/annotations/annotation_description_list/index.tsx +++ b/x-pack/plugins/ml/public/application/components/annotations/annotation_description_list/index.tsx @@ -116,6 +116,7 @@ export const AnnotationDescriptionList = ({ annotation, detectorDescription }: P data-test-subj={'mlAnnotationDescriptionList'} className="ml-annotation-description-list" type="column" + columnWidths={[3, 7]} listItems={listItems} /> ); diff --git a/x-pack/plugins/ml/public/application/components/rule_editor/_rule_editor.scss b/x-pack/plugins/ml/public/application/components/rule_editor/_rule_editor.scss index 26767dd1e24db..03eca2842c300 100644 --- a/x-pack/plugins/ml/public/application/components/rule_editor/_rule_editor.scss +++ b/x-pack/plugins/ml/public/application/components/rule_editor/_rule_editor.scss @@ -11,15 +11,12 @@ // SASSTODO: Dangerous EUI overwrite .euiDescriptionList { + row-gap: $euiSizeXS; + .euiDescriptionList__title { - flex-basis: 15%; padding: 0 $euiSize; } - .euiDescriptionList__description { - flex-basis: 85%; - } - .euiDescriptionList__title:nth-child(1), .euiDescriptionList__description:nth-child(2) { color: $euiTitleColor; @@ -33,11 +30,6 @@ padding-top: $euiSizeS; } } - - // SASSTODO: Dangerous EUI overwrite - .euiDescriptionList.euiDescriptionList--column > * { - margin-top: $euiSizeXS; - } } // SASSTODO: Dangerous EUI overwrite diff --git a/x-pack/plugins/ml/public/application/components/rule_editor/components/detector_description_list/__snapshots__/detector_description_list.test.js.snap b/x-pack/plugins/ml/public/application/components/rule_editor/components/detector_description_list/__snapshots__/detector_description_list.test.js.snap index 2126624420d7c..6c92a5d5a30e5 100644 --- a/x-pack/plugins/ml/public/application/components/rule_editor/components/detector_description_list/__snapshots__/detector_description_list.test.js.snap +++ b/x-pack/plugins/ml/public/application/components/rule_editor/components/detector_description_list/__snapshots__/detector_description_list.test.js.snap @@ -3,6 +3,12 @@ exports[`DetectorDescriptionList render for detector with anomaly values 1`] = ` * { - margin-top: $euiSizeXS; +.rule-detector-description-list { + row-gap: $euiSizeXS; } diff --git a/x-pack/plugins/ml/public/application/components/rule_editor/components/detector_description_list/detector_description_list.js b/x-pack/plugins/ml/public/application/components/rule_editor/components/detector_description_list/detector_description_list.js index 6e5cd75124c18..f19c915a2d0da 100644 --- a/x-pack/plugins/ml/public/application/components/rule_editor/components/detector_description_list/detector_description_list.js +++ b/x-pack/plugins/ml/public/application/components/rule_editor/components/detector_description_list/detector_description_list.js @@ -69,6 +69,7 @@ export function DetectorDescriptionList({ job, detector, anomaly }) { ); diff --git a/x-pack/plugins/ml/public/application/components/rule_editor/select_rule_action/__snapshots__/rule_action_panel.test.js.snap b/x-pack/plugins/ml/public/application/components/rule_editor/select_rule_action/__snapshots__/rule_action_panel.test.js.snap index d54f3c710b584..de98d9efc1cdf 100644 --- a/x-pack/plugins/ml/public/application/components/rule_editor/select_rule_action/__snapshots__/rule_action_panel.test.js.snap +++ b/x-pack/plugins/ml/public/application/components/rule_editor/select_rule_action/__snapshots__/rule_action_panel.test.js.snap @@ -6,6 +6,12 @@ exports[`RuleActionPanel renders panel for rule with a condition 1`] = ` paddingSize="m" > - + ); } diff --git a/x-pack/plugins/monitoring/public/components/no_data/__snapshots__/checker_errors.test.js.snap b/x-pack/plugins/monitoring/public/components/no_data/__snapshots__/checker_errors.test.js.snap index d995e36569959..429c292e423cc 100644 --- a/x-pack/plugins/monitoring/public/components/no_data/__snapshots__/checker_errors.test.js.snap +++ b/x-pack/plugins/monitoring/public/components/no_data/__snapshots__/checker_errors.test.js.snap @@ -26,7 +26,7 @@ Array [ data-type="row" >
403 Forbidden
@@ -36,7 +36,7 @@ Array [ no access for you
500 Internal Server Error
diff --git a/x-pack/plugins/observability/docs/openapi/slo/bundled.json b/x-pack/plugins/observability/docs/openapi/slo/bundled.json index 374d35c9dd212..559f5713e2c35 100644 --- a/x-pack/plugins/observability/docs/openapi/slo/bundled.json +++ b/x-pack/plugins/observability/docs/openapi/slo/bundled.json @@ -677,6 +677,74 @@ } } } + }, + "/s/{spaceId}/api/observability/slos/_delete_instances": { + "post": { + "summary": "Batch delete rollup and summary data for the matching list of sloId and instanceId", + "operationId": "deleteSloInstancesOp", + "description": "You must have `all` privileges for the **SLOs** feature in the **Observability** section of the Kibana feature privileges.\n", + "tags": [ + "slo" + ], + "parameters": [ + { + "$ref": "#/components/parameters/kbn_xsrf" + }, + { + "$ref": "#/components/parameters/space_id" + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/delete_slo_instances_request" + } + } + } + }, + "responses": { + "204": { + "description": "Successful request" + }, + "400": { + "description": "Bad request", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/400_response" + } + } + } + }, + "401": { + "description": "Unauthorized response", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/401_response" + } + } + } + }, + "403": { + "description": "Unauthorized response", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/403_response" + } + } + } + } + }, + "servers": [ + { + "url": "https://localhost:5601" + } + ] + } } }, "components": { @@ -1718,10 +1786,10 @@ "title": "Historical summary request", "type": "object", "required": [ - "sloIds" + "list" ], "properties": { - "sloIds": { + "list": { "description": "The list of SLO identifiers to get the historical summary for", "type": "array", "items": { @@ -1756,6 +1824,39 @@ } } } + }, + "delete_slo_instances_request": { + "title": "Delete SLO instances request", + "description": "The delete SLO instances request takes a list of SLO id and instance id, then delete the rollup and summary data. This API can be used to remove the staled data of an instance SLO that no longer get updated.\n", + "type": "object", + "required": [ + "list" + ], + "properties": { + "list": { + "description": "An array of slo id and instance id", + "type": "array", + "items": { + "type": "object", + "required": [ + "sloId", + "instanceId" + ], + "properties": { + "sloId": { + "description": "The SLO unique identifier", + "type": "string", + "example": "8853df00-ae2e-11ed-90af-09bb6422b258" + }, + "instanceId": { + "description": "The SLO instance identifier", + "type": "string", + "example": "8853df00-ae2e-11ed-90af-09bb6422b258" + } + } + } + } + } } } } diff --git a/x-pack/plugins/observability/docs/openapi/slo/bundled.yaml b/x-pack/plugins/observability/docs/openapi/slo/bundled.yaml index a6cdf5c376485..efeeb090f0156 100644 --- a/x-pack/plugins/observability/docs/openapi/slo/bundled.yaml +++ b/x-pack/plugins/observability/docs/openapi/slo/bundled.yaml @@ -408,6 +408,46 @@ paths: application/json: schema: $ref: '#/components/schemas/403_response' + /s/{spaceId}/api/observability/slos/_delete_instances: + post: + summary: Batch delete rollup and summary data for the matching list of sloId and instanceId + operationId: deleteSloInstancesOp + description: | + You must have `all` privileges for the **SLOs** feature in the **Observability** section of the Kibana feature privileges. + tags: + - slo + parameters: + - $ref: '#/components/parameters/kbn_xsrf' + - $ref: '#/components/parameters/space_id' + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/delete_slo_instances_request' + responses: + '204': + description: Successful request + '400': + description: Bad request + content: + application/json: + schema: + $ref: '#/components/schemas/400_response' + '401': + description: Unauthorized response + content: + application/json: + schema: + $ref: '#/components/schemas/401_response' + '403': + description: Unauthorized response + content: + application/json: + schema: + $ref: '#/components/schemas/403_response' + servers: + - url: https://localhost:5601 components: securitySchemes: basicAuth: @@ -1190,9 +1230,9 @@ components: title: Historical summary request type: object required: - - sloIds + - list properties: - sloIds: + list: description: The list of SLO identifiers to get the historical summary for type: array items: @@ -1216,3 +1256,28 @@ components: example: 0.9836 errorBudget: $ref: '#/components/schemas/error_budget' + delete_slo_instances_request: + title: Delete SLO instances request + description: | + The delete SLO instances request takes a list of SLO id and instance id, then delete the rollup and summary data. This API can be used to remove the staled data of an instance SLO that no longer get updated. + type: object + required: + - list + properties: + list: + description: An array of slo id and instance id + type: array + items: + type: object + required: + - sloId + - instanceId + properties: + sloId: + description: The SLO unique identifier + type: string + example: 8853df00-ae2e-11ed-90af-09bb6422b258 + instanceId: + description: The SLO instance identifier + type: string + example: 8853df00-ae2e-11ed-90af-09bb6422b258 diff --git a/x-pack/plugins/observability/docs/openapi/slo/components/schemas/delete_slo_instances_request.yaml b/x-pack/plugins/observability/docs/openapi/slo/components/schemas/delete_slo_instances_request.yaml new file mode 100644 index 0000000000000..819050a915df5 --- /dev/null +++ b/x-pack/plugins/observability/docs/openapi/slo/components/schemas/delete_slo_instances_request.yaml @@ -0,0 +1,26 @@ +title: Delete SLO instances request +description: > + The delete SLO instances request takes a list of SLO id and instance id, then delete the rollup and summary data. + This API can be used to remove the staled data of an instance SLO that no longer get updated. +type: object +required: + - list +properties: + list: + description: An array of slo id and instance id + type: array + items: + type: object + required: + - sloId + - instanceId + properties: + sloId: + description: The SLO unique identifier + type: string + example: 8853df00-ae2e-11ed-90af-09bb6422b258 + instanceId: + description: The SLO instance identifier + type: string + example: 8853df00-ae2e-11ed-90af-09bb6422b258 + \ No newline at end of file diff --git a/x-pack/plugins/observability/docs/openapi/slo/components/schemas/historical_summary_request.yaml b/x-pack/plugins/observability/docs/openapi/slo/components/schemas/historical_summary_request.yaml index 737a5b83f03f9..a2be13fc9842d 100644 --- a/x-pack/plugins/observability/docs/openapi/slo/components/schemas/historical_summary_request.yaml +++ b/x-pack/plugins/observability/docs/openapi/slo/components/schemas/historical_summary_request.yaml @@ -1,9 +1,9 @@ title: Historical summary request type: object required: - - sloIds + - list properties: - sloIds: + list: description: The list of SLO identifiers to get the historical summary for type: array items: diff --git a/x-pack/plugins/observability/docs/openapi/slo/entrypoint.yaml b/x-pack/plugins/observability/docs/openapi/slo/entrypoint.yaml index 44f16ed4585e0..ee722573efa91 100644 --- a/x-pack/plugins/observability/docs/openapi/slo/entrypoint.yaml +++ b/x-pack/plugins/observability/docs/openapi/slo/entrypoint.yaml @@ -31,6 +31,8 @@ paths: $ref: "paths/s@{spaceid}@api@slos@{sloid}@{disable}.yaml" "/s/{spaceId}/internal/observability/slos/_historical_summary": $ref: "paths/s@{spaceid}@api@slos@_historical_summary.yaml" + "/s/{spaceId}/api/observability/slos/_delete_instances": + $ref: "paths/s@{spaceid}@api@slos@_delete_instances.yaml" components: securitySchemes: basicAuth: diff --git a/x-pack/plugins/observability/docs/openapi/slo/paths/s@{spaceid}@api@slos@_delete_instances.yaml b/x-pack/plugins/observability/docs/openapi/slo/paths/s@{spaceid}@api@slos@_delete_instances.yaml new file mode 100644 index 0000000000000..e9775576695a2 --- /dev/null +++ b/x-pack/plugins/observability/docs/openapi/slo/paths/s@{spaceid}@api@slos@_delete_instances.yaml @@ -0,0 +1,40 @@ +post: + summary: Batch delete rollup and summary data for the matching list of sloId and instanceId + operationId: deleteSloInstancesOp + description: > + You must have `all` privileges for the **SLOs** feature in the + **Observability** section of the Kibana feature privileges. + tags: + - slo + parameters: + - $ref: ../components/headers/kbn_xsrf.yaml + - $ref: ../components/parameters/space_id.yaml + requestBody: + required: true + content: + application/json: + schema: + $ref: '../components/schemas/delete_slo_instances_request.yaml' + responses: + '204': + description: Successful request + '400': + description: Bad request + content: + application/json: + schema: + $ref: '../components/schemas/400_response.yaml' + '401': + description: Unauthorized response + content: + application/json: + schema: + $ref: '../components/schemas/401_response.yaml' + '403': + description: Unauthorized response + content: + application/json: + schema: + $ref: '../components/schemas/403_response.yaml' + servers: + - url: https://localhost:5601 diff --git a/x-pack/plugins/observability/public/components/threshold/components/closable_popover_title.tsx b/x-pack/plugins/observability/public/components/threshold/components/closable_popover_title.tsx index 7fe5d73783011..1caa7c82940aa 100644 --- a/x-pack/plugins/observability/public/components/threshold/components/closable_popover_title.tsx +++ b/x-pack/plugins/observability/public/components/threshold/components/closable_popover_title.tsx @@ -21,6 +21,7 @@ export function ClosablePopoverTitle({ children, onClose }: ClosablePopoverTitle {children} = (props) => { {canDelete && ( setIsPopoverOpen(true)} color={'text'} @@ -110,6 +111,7 @@ export function WebCoreVitalsTitle({ isOpen={isBrowserPopoverOpen} button={ setIsBrowserPopoverOpen(true)} color={'text'} diff --git a/x-pack/plugins/observability/public/pages/slo_edit/components/custom_metric/metric_indicator.tsx b/x-pack/plugins/observability/public/pages/slo_edit/components/custom_metric/metric_indicator.tsx index f451d5d98007c..a333a353f97d9 100644 --- a/x-pack/plugins/observability/public/pages/slo_edit/components/custom_metric/metric_indicator.tsx +++ b/x-pack/plugins/observability/public/pages/slo_edit/components/custom_metric/metric_indicator.tsx @@ -213,6 +213,7 @@ export function MetricIndicator({ type, indexFields, isLoadingIndex }: MetricInd { + await assertPlatinumLicense(context); + + const esClient = (await context.core).elasticsearch.client.asCurrentUser; + const deleteSloInstances = new DeleteSLOInstances(esClient); + + await deleteSloInstances.execute(params.body); + }, +}); + const findSloDefinitionsRoute = createObservabilityServerRoute({ endpoint: 'GET /internal/observability/slos/_definitions', options: { @@ -351,6 +369,7 @@ const getPreviewData = createObservabilityServerRoute({ export const sloRouteRepository = { ...createSLORoute, ...deleteSLORoute, + ...deleteSloInstancesRoute, ...disableSLORoute, ...enableSLORoute, ...fetchHistoricalSummary, diff --git a/x-pack/plugins/observability/server/services/slo/delete_slo_instances.test.ts b/x-pack/plugins/observability/server/services/slo/delete_slo_instances.test.ts new file mode 100644 index 0000000000000..bd3826e31fa92 --- /dev/null +++ b/x-pack/plugins/observability/server/services/slo/delete_slo_instances.test.ts @@ -0,0 +1,165 @@ +/* + * Copyright 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 { ElasticsearchClient } from '@kbn/core/server'; +import { elasticsearchServiceMock } from '@kbn/core/server/mocks'; +import { DeleteSLOInstances } from './delete_slo_instances'; + +describe('DeleteSLOInstances', () => { + let mockEsClient: jest.Mocked; + let deleteSLOInstances: DeleteSLOInstances; + + beforeEach(() => { + mockEsClient = elasticsearchServiceMock.createElasticsearchClient(); + deleteSLOInstances = new DeleteSLOInstances(mockEsClient); + }); + + describe('validation', () => { + it("forbids deleting an SLO with an '*' (all) instance id", async () => { + await expect( + deleteSLOInstances.execute({ + list: [ + { sloId: 'first', instanceId: 'irrelevant' }, + { sloId: 'second', instanceId: '*' }, + ], + }) + ).rejects.toThrowError("Cannot delete an SLO instance '*'"); + }); + }); + + it('deletes the roll up and the summary data for each tuple', async () => { + await deleteSLOInstances.execute({ + list: [ + { sloId: 'first', instanceId: 'host-foo' }, + { sloId: 'second', instanceId: 'host-foo' }, + { sloId: 'third', instanceId: 'cluster-eu' }, + ], + }); + + expect(mockEsClient.deleteByQuery).toHaveBeenCalledTimes(2); + expect(mockEsClient.deleteByQuery.mock.calls[0][0]).toMatchInlineSnapshot(` + Object { + "index": ".slo-observability.sli-v2*", + "query": Object { + "bool": Object { + "should": Array [ + Object { + "bool": Object { + "must": Array [ + Object { + "term": Object { + "slo.id": "first", + }, + }, + Object { + "term": Object { + "slo.instanceId": "host-foo", + }, + }, + ], + }, + }, + Object { + "bool": Object { + "must": Array [ + Object { + "term": Object { + "slo.id": "second", + }, + }, + Object { + "term": Object { + "slo.instanceId": "host-foo", + }, + }, + ], + }, + }, + Object { + "bool": Object { + "must": Array [ + Object { + "term": Object { + "slo.id": "third", + }, + }, + Object { + "term": Object { + "slo.instanceId": "cluster-eu", + }, + }, + ], + }, + }, + ], + }, + }, + "wait_for_completion": false, + } + `); + expect(mockEsClient.deleteByQuery.mock.calls[1][0]).toMatchInlineSnapshot(` + Object { + "index": ".slo-observability.summary-v2*", + "query": Object { + "bool": Object { + "should": Array [ + Object { + "bool": Object { + "must": Array [ + Object { + "term": Object { + "slo.id": "first", + }, + }, + Object { + "term": Object { + "slo.instanceId": "host-foo", + }, + }, + ], + }, + }, + Object { + "bool": Object { + "must": Array [ + Object { + "term": Object { + "slo.id": "second", + }, + }, + Object { + "term": Object { + "slo.instanceId": "host-foo", + }, + }, + ], + }, + }, + Object { + "bool": Object { + "must": Array [ + Object { + "term": Object { + "slo.id": "third", + }, + }, + Object { + "term": Object { + "slo.instanceId": "cluster-eu", + }, + }, + ], + }, + }, + ], + }, + }, + "wait_for_completion": false, + } + `); + }); +}); diff --git a/x-pack/plugins/observability/server/services/slo/delete_slo_instances.ts b/x-pack/plugins/observability/server/services/slo/delete_slo_instances.ts new file mode 100644 index 0000000000000..f1892122622d6 --- /dev/null +++ b/x-pack/plugins/observability/server/services/slo/delete_slo_instances.ts @@ -0,0 +1,71 @@ +/* + * Copyright 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 { ElasticsearchClient } from '@kbn/core/server'; +import { ALL_VALUE, DeleteSLOInstancesParams } from '@kbn/slo-schema'; +import { + SLO_DESTINATION_INDEX_PATTERN, + SLO_SUMMARY_DESTINATION_INDEX_PATTERN, +} from '../../assets/constants'; +import { IllegalArgumentError } from '../../errors'; + +interface SloInstanceTuple { + sloId: string; + instanceId: string; +} + +export class DeleteSLOInstances { + constructor(private esClient: ElasticsearchClient) {} + + public async execute(params: DeleteSLOInstancesParams): Promise { + const containsAllValueInstanceId = params.list.some((item) => item.instanceId === ALL_VALUE); + if (containsAllValueInstanceId) { + throw new IllegalArgumentError("Cannot delete an SLO instance '*'"); + } + + await this.deleteRollupData(params.list); + await this.deleteSummaryData(params.list); + } + + private async deleteRollupData(list: SloInstanceTuple[]): Promise { + await this.esClient.deleteByQuery({ + index: SLO_DESTINATION_INDEX_PATTERN, + wait_for_completion: false, + query: { + bool: { + should: list.map((item) => ({ + bool: { + must: [ + { term: { 'slo.id': item.sloId } }, + { term: { 'slo.instanceId': item.instanceId } }, + ], + }, + })), + }, + }, + }); + } + + private async deleteSummaryData(list: SloInstanceTuple[]): Promise { + await this.esClient.deleteByQuery({ + index: SLO_SUMMARY_DESTINATION_INDEX_PATTERN, + wait_for_completion: false, + query: { + bool: { + should: list.map((item) => ({ + bool: { + must: [ + { term: { 'slo.id': item.sloId } }, + { term: { 'slo.instanceId': item.instanceId } }, + ], + }, + })), + }, + }, + }); + } +} diff --git a/x-pack/plugins/observability/server/services/slo/index.ts b/x-pack/plugins/observability/server/services/slo/index.ts index 396b443be7eeb..7c99c289ae90b 100644 --- a/x-pack/plugins/observability/server/services/slo/index.ts +++ b/x-pack/plugins/observability/server/services/slo/index.ts @@ -7,6 +7,7 @@ export * from './create_slo'; export * from './delete_slo'; +export * from './delete_slo_instances'; export * from './fetch_historical_summary'; export * from './find_slo'; export * from './get_slo'; diff --git a/x-pack/plugins/observability_ai_assistant/public/functions/kibana.ts b/x-pack/plugins/observability_ai_assistant/public/functions/kibana.ts index 5ad877b2c2bff..a47acdb02d433 100644 --- a/x-pack/plugins/observability_ai_assistant/public/functions/kibana.ts +++ b/x-pack/plugins/observability_ai_assistant/public/functions/kibana.ts @@ -50,7 +50,7 @@ export function registerKibanaFunction({ description: 'The body of the request', }, }, - required: ['method', 'pathname', 'body'] as const, + required: ['method', 'pathname'] as const, }, }, ({ arguments: { method, pathname, body, query } }, signal) => { diff --git a/x-pack/plugins/observability_ai_assistant/public/functions/lens.tsx b/x-pack/plugins/observability_ai_assistant/public/functions/lens.tsx index efacbe07816e1..aab0b6aa4ac59 100644 --- a/x-pack/plugins/observability_ai_assistant/public/functions/lens.tsx +++ b/x-pack/plugins/observability_ai_assistant/public/functions/lens.tsx @@ -89,6 +89,7 @@ function Lens({ { lens.navigateToPrefilledEditor(lensEmbeddableInput); @@ -101,6 +102,7 @@ function Lens({ { setIsSaveModalOpen(() => true); diff --git a/x-pack/plugins/observability_onboarding/public/components/app/custom_logs/wizard/api_key_banner.tsx b/x-pack/plugins/observability_onboarding/public/components/app/custom_logs/wizard/api_key_banner.tsx index c55f554fc4845..b0d6b5f9e6c26 100644 --- a/x-pack/plugins/observability_onboarding/public/components/app/custom_logs/wizard/api_key_banner.tsx +++ b/x-pack/plugins/observability_onboarding/public/components/app/custom_logs/wizard/api_key_banner.tsx @@ -93,6 +93,7 @@ export function ApiKeyBanner({ {(copy) => ( void }) { return ( , 0 && ( removeLogFilePath(index)} @@ -265,7 +268,11 @@ export function ConfigureLogs() { gutterSize="xs" > - + {i18n.translate( 'xpack.observability_onboarding.configureLogs.logFile.addRow', { @@ -313,6 +320,7 @@ export function ConfigureLogs() { } > setCustomConfigurations(event.target.value) @@ -514,6 +526,7 @@ export function ConfigureLogs() { error={integrationNameError} > , - + {i18n.translate( 'xpack.observability_onboarding.steps.inspect', { defaultMessage: 'Inspect' } @@ -242,6 +245,7 @@ export function InstallElasticAgent() { + {i18n.translate('xpack.observability_onboarding.steps.back', { defaultMessage: 'Back', })} @@ -183,6 +187,7 @@ export function SelectLogs() { { diff --git a/x-pack/plugins/observability_onboarding/public/components/app/home/index.tsx b/x-pack/plugins/observability_onboarding/public/components/app/home/index.tsx index 6dcb343b222cb..13aec2ff31c06 100644 --- a/x-pack/plugins/observability_onboarding/public/components/app/home/index.tsx +++ b/x-pack/plugins/observability_onboarding/public/components/app/home/index.tsx @@ -334,6 +334,7 @@ export function Home() { + {i18n.translate( 'xpack.observability_onboarding.systemLogs.back', { defaultMessage: 'Back' } diff --git a/x-pack/plugins/observability_onboarding/public/components/shared/install_elastic_agent_steps.tsx b/x-pack/plugins/observability_onboarding/public/components/shared/install_elastic_agent_steps.tsx index 282591e0a1487..2d5a42f7c287e 100644 --- a/x-pack/plugins/observability_onboarding/public/components/shared/install_elastic_agent_steps.tsx +++ b/x-pack/plugins/observability_onboarding/public/components/shared/install_elastic_agent_steps.tsx @@ -221,6 +221,7 @@ export function InstallElasticAgentSteps({ values={{ hostRequirementsLink: ( diff --git a/x-pack/plugins/observability_onboarding/public/components/shared/troubleshooting_link.tsx b/x-pack/plugins/observability_onboarding/public/components/shared/troubleshooting_link.tsx index 5b6a1588d643c..71ab94a9bade8 100644 --- a/x-pack/plugins/observability_onboarding/public/components/shared/troubleshooting_link.tsx +++ b/x-pack/plugins/observability_onboarding/public/components/shared/troubleshooting_link.tsx @@ -13,6 +13,7 @@ export function TroubleshootingLink() { return ( { - const { core, plugins, kibanaVersion } = resources; + const { core, plugins } = resources; const coreStart = await core.start(); const kibanaUrl = @@ -53,7 +53,7 @@ const installShipperSetupRoute = createObservabilityOnboardingServerRoute({ return { apiEndpoint, scriptDownloadUrl, - elasticAgentVersion: kibanaVersion, + elasticAgentVersion: '8.9.1', }; }, }); diff --git a/x-pack/plugins/profiling/public/components/check_setup.tsx b/x-pack/plugins/profiling/public/components/check_setup.tsx index cec2cc6f81c96..3bfb920f25eb1 100644 --- a/x-pack/plugins/profiling/public/components/check_setup.tsx +++ b/x-pack/plugins/profiling/public/components/check_setup.tsx @@ -130,6 +130,7 @@ export function CheckSetup({ children }: { children: React.ReactElement }) { values={{ dataRetentionLink: ( @@ -152,6 +153,7 @@ export function CheckSetup({ children }: { children: React.ReactElement }) { }, button: ( { event.preventDefault(); diff --git a/x-pack/plugins/profiling/public/components/flamegraph/flamegraph_tooltip.tsx b/x-pack/plugins/profiling/public/components/flamegraph/flamegraph_tooltip.tsx index ae37ebf65c9f0..7a3b661cdac6d 100644 --- a/x-pack/plugins/profiling/public/components/flamegraph/flamegraph_tooltip.tsx +++ b/x-pack/plugins/profiling/public/components/flamegraph/flamegraph_tooltip.tsx @@ -160,7 +160,12 @@ export function FlameGraphTooltip({ style={{ background: theme.euiTheme.border.color }} /> - + {i18n.translate('xpack.profiling.flameGraphTooltip.showMoreButton', { defaultMessage: `Show more information`, diff --git a/x-pack/plugins/profiling/public/components/frame_information_window/missing_symbols_callout.tsx b/x-pack/plugins/profiling/public/components/frame_information_window/missing_symbols_callout.tsx index 1f9d40d23a648..ac2c2e7a2407b 100644 --- a/x-pack/plugins/profiling/public/components/frame_information_window/missing_symbols_callout.tsx +++ b/x-pack/plugins/profiling/public/components/frame_information_window/missing_symbols_callout.tsx @@ -41,6 +41,7 @@ export function MissingSymbolsCallout({ frameType }: Props) { values={{ readMore: ( @@ -54,6 +55,7 @@ export function MissingSymbolsCallout({ frameType }: Props) { />

- + {i18n.translate( 'xpack.profiling.frameInformationWindow.missingSymbols.interpreted.reportProblem', { defaultMessage: 'Report a problem' } diff --git a/x-pack/plugins/profiling/public/components/license_prompt/index.tsx b/x-pack/plugins/profiling/public/components/license_prompt/index.tsx index 5ec11800d176e..43af8257efea3 100644 --- a/x-pack/plugins/profiling/public/components/license_prompt/index.tsx +++ b/x-pack/plugins/profiling/public/components/license_prompt/index.tsx @@ -38,7 +38,11 @@ export function LicensePrompt() {

} actions={[ - + {i18n.translate('xpack.profiling.invalidLicense.subscriptionManagementLink', { defaultMessage: 'Upgrade subscription', })} diff --git a/x-pack/plugins/profiling/public/components/normalization_menu/index.tsx b/x-pack/plugins/profiling/public/components/normalization_menu/index.tsx index 3d80d43bbe89c..da17c339814e4 100644 --- a/x-pack/plugins/profiling/public/components/normalization_menu/index.tsx +++ b/x-pack/plugins/profiling/public/components/normalization_menu/index.tsx @@ -95,6 +95,7 @@ export function NormalizationMenu(props: Props) { prepend={NORMALIZE_BY_LABEL} append={ {SCALE_LABEL}} > {SCALE_LABEL}} > { props.onChange(mode, options); setIsPopoverOpen(false); diff --git a/x-pack/plugins/profiling/public/components/primary_and_comparison_search_bar.tsx b/x-pack/plugins/profiling/public/components/primary_and_comparison_search_bar.tsx index 12375925bb606..e5a60a7d95149 100644 --- a/x-pack/plugins/profiling/public/components/primary_and_comparison_search_bar.tsx +++ b/x-pack/plugins/profiling/public/components/primary_and_comparison_search_bar.tsx @@ -91,6 +91,7 @@ export function PrimaryAndComparisonSearchBar() { { diff --git a/x-pack/plugins/profiling/public/components/profiling_app_page_template/index.tsx b/x-pack/plugins/profiling/public/components/profiling_app_page_template/index.tsx index a62d342b3919e..e094038e2f190 100644 --- a/x-pack/plugins/profiling/public/components/profiling_app_page_template/index.tsx +++ b/x-pack/plugins/profiling/public/components/profiling_app_page_template/index.tsx @@ -70,6 +70,7 @@ export function ProfilingAppPageTemplate({ 'data-test-subj': 'profilingPageTemplate', rightSideItems: [ { setPrivilegesWarningDismissed(true); }} diff --git a/x-pack/plugins/profiling/public/components/stack_frame_summary/index.tsx b/x-pack/plugins/profiling/public/components/stack_frame_summary/index.tsx index 5533df8479d4e..d73c382962a59 100644 --- a/x-pack/plugins/profiling/public/components/stack_frame_summary/index.tsx +++ b/x-pack/plugins/profiling/public/components/stack_frame_summary/index.tsx @@ -39,7 +39,7 @@ export function StackFrameSummary({ frame, onFrameClick }: Props) {
{onFrameClick ? ( - + ) : ( diff --git a/x-pack/plugins/profiling/public/components/subchart.tsx b/x-pack/plugins/profiling/public/components/subchart.tsx index ee388b851d0ed..4100425cb05d6 100644 --- a/x-pack/plugins/profiling/public/components/subchart.tsx +++ b/x-pack/plugins/profiling/public/components/subchart.tsx @@ -135,7 +135,7 @@ export function SubChart({ {hasMoreFrames && !!onShowMoreClick && ( - + {i18n.translate('xpack.profiling.stackTracesView.showMoreTracesButton', { defaultMessage: 'Show more', })} @@ -185,13 +185,13 @@ export function SubChart({ {showFrames ? ( - onShowMoreClick?.()}> + onShowMoreClick?.()}> {label} ) : category === OTHER_BUCKET_LABEL ? ( {label} ) : ( - + {label} )} diff --git a/x-pack/plugins/profiling/public/components/topn_functions/index.tsx b/x-pack/plugins/profiling/public/components/topn_functions/index.tsx index ec99236cb135f..4ec9bb8631327 100644 --- a/x-pack/plugins/profiling/public/components/topn_functions/index.tsx +++ b/x-pack/plugins/profiling/public/components/topn_functions/index.tsx @@ -227,6 +227,7 @@ export const TopNFunctionsGrid = forwardRef( } return ( @@ -430,6 +432,7 @@ EOF`} values={{ link: ( @@ -493,6 +496,7 @@ EOF`} versionTo: 6.4, linuxLink: ( @@ -503,6 +507,7 @@ EOF`} ), debianLink: ( @@ -513,6 +518,7 @@ EOF`} ), fedoraLink: ( @@ -523,6 +529,7 @@ EOF`} ), advancedLink: ( diff --git a/x-pack/plugins/profiling/public/views/delete_data_view/index.tsx b/x-pack/plugins/profiling/public/views/delete_data_view/index.tsx index 7e07ba4a1ec86..c4f1399edafe7 100644 --- a/x-pack/plugins/profiling/public/views/delete_data_view/index.tsx +++ b/x-pack/plugins/profiling/public/views/delete_data_view/index.tsx @@ -28,6 +28,7 @@ export function DeleteDataView() { footer={
diff --git a/x-pack/plugins/profiling/public/views/stack_traces_view/index.tsx b/x-pack/plugins/profiling/public/views/stack_traces_view/index.tsx index 0df1f9ae855f9..f024b8a21dcce 100644 --- a/x-pack/plugins/profiling/public/views/stack_traces_view/index.tsx +++ b/x-pack/plugins/profiling/public/views/stack_traces_view/index.tsx @@ -170,6 +170,7 @@ export function StackTracesView() { {(data?.charts.length ?? 0) > limit && ( { profilingRouter.push(routePath, { path, diff --git a/x-pack/plugins/profiling/public/views/storage_explorer/distinct_probabilistic_values_warning.tsx b/x-pack/plugins/profiling/public/views/storage_explorer/distinct_probabilistic_values_warning.tsx index 1427eed54de41..4c963c79a2e7a 100644 --- a/x-pack/plugins/profiling/public/views/storage_explorer/distinct_probabilistic_values_warning.tsx +++ b/x-pack/plugins/profiling/public/views/storage_explorer/distinct_probabilistic_values_warning.tsx @@ -43,6 +43,7 @@ export function DistinctProbabilisticValuesWarning({ { const themeOptions = themeMenu.find('EuiKeyPadMenuItem'); expect(themeOptions).toHaveLength(3); themeOptions.forEach((option) => { - expect(option.getDOMNode().classList.contains('euiKeyPadMenuItem-isDisabled')).toEqual( - false - ); + const menuItemEl = (option.getDOMNode() as unknown as Element[])[1]; + expect(menuItemEl.className).not.toContain('disabled'); }); }); @@ -353,9 +352,8 @@ describe('useUserProfileForm', () => { const themeOptions = themeMenu.find('EuiKeyPadMenuItem'); expect(themeOptions).toHaveLength(3); themeOptions.forEach((option) => { - expect(option.getDOMNode().classList.contains('euiKeyPadMenuItem-isDisabled')).toEqual( - true - ); + const menuItemEl = (option.getDOMNode() as unknown as Element[])[1]; + expect(menuItemEl.className).toContain('disabled'); }); }); @@ -391,9 +389,8 @@ describe('useUserProfileForm', () => { const themeOptions = themeMenu.find('EuiKeyPadMenuItem'); expect(themeOptions).toHaveLength(3); themeOptions.forEach((option) => { - expect(option.getDOMNode().classList.contains('euiKeyPadMenuItem-isDisabled')).toEqual( - true - ); + const menuItemEl = (option.getDOMNode() as unknown as Element[])[1]; + expect(menuItemEl.className).toContain('disabled'); }); }); }); diff --git a/x-pack/plugins/security/server/__snapshots__/prompt_page.test.tsx.snap b/x-pack/plugins/security/server/__snapshots__/prompt_page.test.tsx.snap index b6e5caaf0d95d..b5486ba5d649d 100644 --- a/x-pack/plugins/security/server/__snapshots__/prompt_page.test.tsx.snap +++ b/x-pack/plugins/security/server/__snapshots__/prompt_page.test.tsx.snap @@ -1,5 +1,5 @@ // Jest Snapshot v1, https://goo.gl/fbAQLP -exports[`PromptPage renders as expected with additional scripts 1`] = `"ElasticMockedFonts

Some Title

Some Body
Action#1
Action#2
"`; +exports[`PromptPage renders as expected with additional scripts 1`] = `"ElasticMockedFonts

Some Title

Some Body
Action#1
Action#2
"`; -exports[`PromptPage renders as expected without additional scripts 1`] = `"ElasticMockedFonts

Some Title

Some Body
Action#1
Action#2
"`; +exports[`PromptPage renders as expected without additional scripts 1`] = `"ElasticMockedFonts

Some Title

Some Body
Action#1
Action#2
"`; diff --git a/x-pack/plugins/security/server/authentication/__snapshots__/unauthenticated_page.test.tsx.snap b/x-pack/plugins/security/server/authentication/__snapshots__/unauthenticated_page.test.tsx.snap index 27612db490f4b..a752facec0213 100644 --- a/x-pack/plugins/security/server/authentication/__snapshots__/unauthenticated_page.test.tsx.snap +++ b/x-pack/plugins/security/server/authentication/__snapshots__/unauthenticated_page.test.tsx.snap @@ -1,5 +1,5 @@ // Jest Snapshot v1, https://goo.gl/fbAQLP -exports[`UnauthenticatedPage renders as expected 1`] = `"ElasticMockedFonts
"`; +exports[`UnauthenticatedPage renders as expected 1`] = `"ElasticMockedFonts"`; -exports[`UnauthenticatedPage renders as expected with custom title 1`] = `"My Company NameMockedFonts"`; +exports[`UnauthenticatedPage renders as expected with custom title 1`] = `"My Company NameMockedFonts"`; diff --git a/x-pack/plugins/security/server/authorization/__snapshots__/reset_session_page.test.tsx.snap b/x-pack/plugins/security/server/authorization/__snapshots__/reset_session_page.test.tsx.snap index a6b592367d47b..cc55a03d84555 100644 --- a/x-pack/plugins/security/server/authorization/__snapshots__/reset_session_page.test.tsx.snap +++ b/x-pack/plugins/security/server/authorization/__snapshots__/reset_session_page.test.tsx.snap @@ -1,5 +1,5 @@ // Jest Snapshot v1, https://goo.gl/fbAQLP -exports[`ResetSessionPage renders as expected 1`] = `"ElasticMockedFonts"`; +exports[`ResetSessionPage renders as expected 1`] = `"ElasticMockedFonts"`; -exports[`ResetSessionPage renders as expected with custom page title 1`] = `"My Company NameMockedFonts"`; +exports[`ResetSessionPage renders as expected with custom page title 1`] = `"My Company NameMockedFonts"`; diff --git a/x-pack/plugins/security/server/authorization/reset_session_page.tsx b/x-pack/plugins/security/server/authorization/reset_session_page.tsx index 9cb85f324fab9..85c78ddfcbaec 100644 --- a/x-pack/plugins/security/server/authorization/reset_session_page.tsx +++ b/x-pack/plugins/security/server/authorization/reset_session_page.tsx @@ -15,6 +15,11 @@ import { FormattedMessage } from '@kbn/i18n-react'; import { PromptPage } from '../prompt_page'; +/** + * Static error page (rendered server-side) when user does not have permission to access the requested page. + * + * To trigger this error create a user without any roles and try to login. + */ export function ResetSessionPage({ logoutUrl, buildNumber, diff --git a/x-pack/plugins/security/server/prompt_page.tsx b/x-pack/plugins/security/server/prompt_page.tsx index 31c1f057942de..c0947aed8477b 100644 --- a/x-pack/plugins/security/server/prompt_page.tsx +++ b/x-pack/plugins/security/server/prompt_page.tsx @@ -5,13 +5,8 @@ * 2.0. */ -import { - EuiEmptyPrompt, - EuiPage, - EuiPageBody, - EuiPageContent_Deprecated as EuiPageContent, - EuiProvider, -} from '@elastic/eui'; +import 'css.escape'; // Polyfill required to render `EuiPageTemplate` server-side +import { EuiPageTemplate, EuiProvider } from '@elastic/eui'; // @ts-expect-error no definitions in component folder import { icon as EuiIconWarning } from '@elastic/eui/lib/components/icon/assets/warning'; // @ts-expect-error no definitions in component folder @@ -61,19 +56,15 @@ export function PromptPage({ const content = ( - - - - {title}} - body={body} - actions={actions} - /> - - - + + {title}} + body={body} + actions={actions} + /> + ); @@ -88,8 +79,6 @@ export function PromptPage({ const styleSheetPaths = [ `${regularBundlePath}/kbn-ui-shared-deps-src/${UiSharedDepsSrc.cssDistFilename}`, `${regularBundlePath}/kbn-ui-shared-deps-npm/${UiSharedDepsNpm.lightCssDistFilename('v8')}`, - `${basePath.serverBasePath}/node_modules/@kbn/ui-framework/dist/kui_light.css`, - `${basePath.serverBasePath}/ui/legacy_light_theme.css`, ]; return ( diff --git a/x-pack/plugins/security_solution/common/api/endpoint/protection_updates_note/protection_updates_note_schema.ts b/x-pack/plugins/security_solution/common/api/endpoint/protection_updates_note/protection_updates_note_schema.ts new file mode 100644 index 0000000000000..1207d3d2418fa --- /dev/null +++ b/x-pack/plugins/security_solution/common/api/endpoint/protection_updates_note/protection_updates_note_schema.ts @@ -0,0 +1,23 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { schema } from '@kbn/config-schema'; + +export const GetProtectionUpdatesNoteSchema = { + params: schema.object({ + package_policy_id: schema.string(), + }), +}; + +export const CreateUpdateProtectionUpdatesNoteSchema = { + body: schema.object({ + note: schema.string(), + }), + params: schema.object({ + package_policy_id: schema.string(), + }), +}; diff --git a/x-pack/plugins/security_solution/common/endpoint/constants.ts b/x-pack/plugins/security_solution/common/endpoint/constants.ts index 19c77f230eea5..6f2d4832e5727 100644 --- a/x-pack/plugins/security_solution/common/endpoint/constants.ts +++ b/x-pack/plugins/security_solution/common/endpoint/constants.ts @@ -63,6 +63,7 @@ export const METADATA_TRANSFORMS_STATUS_ROUTE = `${BASE_ENDPOINT_ROUTE}/metadata export const BASE_POLICY_RESPONSE_ROUTE = `${BASE_ENDPOINT_ROUTE}/policy_response`; export const BASE_POLICY_ROUTE = `${BASE_ENDPOINT_ROUTE}/policy`; export const AGENT_POLICY_SUMMARY_ROUTE = `${BASE_POLICY_ROUTE}/summaries`; +export const PROTECTION_UPDATES_NOTE_ROUTE = `${BASE_ENDPOINT_ROUTE}/protection_updates_note/{package_policy_id}`; /** Suggestions routes */ export const SUGGESTIONS_ROUTE = `${BASE_ENDPOINT_ROUTE}/suggestions/{suggestion_type}`; diff --git a/x-pack/plugins/security_solution/public/common/components/inspect/modal.tsx b/x-pack/plugins/security_solution/public/common/components/inspect/modal.tsx index b9e27c921704a..9cb27d7b6a7ad 100644 --- a/x-pack/plugins/security_solution/public/common/components/inspect/modal.tsx +++ b/x-pack/plugins/security_solution/public/common/components/inspect/modal.tsx @@ -30,20 +30,6 @@ import * as i18n from './translations'; import { getScopeFromPath, useSourcererDataView } from '../../containers/sourcerer'; import { SourcererScopeName } from '../../store/sourcerer/model'; -const DescriptionListStyled = styled(EuiDescriptionList)` - @media only screen and (min-width: ${(props) => props.theme.eui.euiBreakpoints.s}) { - .euiDescriptionList__title { - width: 30% !important; - } - - .euiDescriptionList__description { - width: 70% !important; - } - } -`; - -DescriptionListStyled.displayName = 'DescriptionListStyled'; - export interface ModalInspectProps { adHocDataViews?: string[] | null; additionalRequests?: string[] | null; @@ -209,7 +195,11 @@ export const ModalInspectQuery = ({ content: ( <> - + ), }, diff --git a/x-pack/plugins/security_solution/public/common/components/ml/score/__snapshots__/create_descriptions_list.test.tsx.snap b/x-pack/plugins/security_solution/public/common/components/ml/score/__snapshots__/create_descriptions_list.test.tsx.snap index ddf64d1c066c3..d472238b65359 100644 --- a/x-pack/plugins/security_solution/public/common/components/ml/score/__snapshots__/create_descriptions_list.test.tsx.snap +++ b/x-pack/plugins/security_solution/public/common/components/ml/score/__snapshots__/create_descriptions_list.test.tsx.snap @@ -6,7 +6,7 @@ exports[`create_description_list renders correctly against snapshot 1`] = ` Object { "align": "left", "compressed": false, - "gutterSize": "m", + "rowGutterSize": "s", "textStyle": "normal", "type": "row", } diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/constants.ts b/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/constants.ts new file mode 100644 index 0000000000000..1561be4f4d8a4 --- /dev/null +++ b/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/constants.ts @@ -0,0 +1,8 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +export const DESCRIPTION_LIST_COLUMN_WIDTHS: [string, string] = ['50%', '50%']; diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/rule_about_section.tsx b/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/rule_about_section.tsx index 5c3002946baf6..aef4eccaa4299 100644 --- a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/rule_about_section.tsx +++ b/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/rule_about_section.tsx @@ -32,6 +32,7 @@ import { filterEmptyThreats } from '../../../rule_creation_ui/pages/rule_creatio import { ThreatEuiFlexGroup } from '../../../../detections/components/rules/description_step/threat_description'; import { BadgeList } from './badge_list'; +import { DESCRIPTION_LIST_COLUMN_WIDTHS } from './constants'; import * as i18n from './translations'; const OverrideColumn = styled(EuiFlexItem)` @@ -357,7 +358,12 @@ export const RuleAboutSection = ({ rule }: RuleAboutSectionProps) => { /> )} - +
); }; diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/rule_definition_section.tsx b/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/rule_definition_section.tsx index de9e257c798bc..72057da4d963a 100644 --- a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/rule_definition_section.tsx +++ b/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/rule_definition_section.tsx @@ -44,6 +44,7 @@ import { MlJobLink } from '../../../../detections/components/rules/ml_job_link/m import { useSecurityJobs } from '../../../../common/components/ml_popover/hooks/use_security_jobs'; import { useKibana } from '../../../../common/lib/kibana/kibana_react'; import { BadgeList } from './badge_list'; +import { DESCRIPTION_LIST_COLUMN_WIDTHS } from './constants'; import * as i18n from './translations'; interface SavedQueryNameProps { @@ -497,7 +498,12 @@ export const RuleDefinitionSection = ({ rule }: RuleDefinitionSectionProps) => { return (
- +
); }; diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/rule_schedule_section.tsx b/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/rule_schedule_section.tsx index e7d2bbaeb831d..1d4f4290c4b03 100644 --- a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/rule_schedule_section.tsx +++ b/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/rule_schedule_section.tsx @@ -9,6 +9,7 @@ import React from 'react'; import { EuiDescriptionList, EuiText } from '@elastic/eui'; import type { RuleResponse } from '../../../../../common/api/detection_engine/model/rule_schema/rule_schemas'; import { getHumanizedDuration } from '../../../../detections/pages/detection_engine/rules/helpers'; +import { DESCRIPTION_LIST_COLUMN_WIDTHS } from './constants'; import * as i18n from './translations'; interface IntervalProps { @@ -46,7 +47,12 @@ export const RuleScheduleSection = ({ rule }: RuleScheduleSectionProps) => { return (
- +
); }; diff --git a/x-pack/plugins/security_solution/public/detections/components/rules/description_step/index.tsx b/x-pack/plugins/security_solution/public/detections/components/rules/description_step/index.tsx index 8d7c21e386e40..a55d229bb1b97 100644 --- a/x-pack/plugins/security_solution/public/detections/components/rules/description_step/index.tsx +++ b/x-pack/plugins/security_solution/public/detections/components/rules/description_step/index.tsx @@ -60,11 +60,7 @@ import type { LicenseService } from '../../../../../common/license'; const DescriptionListContainer = styled(EuiDescriptionList)` max-width: 600px; - &.euiDescriptionList--column .euiDescriptionList__title { - width: 30%; - } - &.euiDescriptionList--column .euiDescriptionList__description { - width: 70%; + .euiDescriptionList__description { overflow-wrap: anywhere; } `; @@ -76,6 +72,8 @@ const panelViewStyle = css` text-overflow: ellipsis; `; +const DESCRIPTION_LIST_COLUMN_WIDTHS: [string, string] = ['50%', '50%']; + interface StepRuleDescriptionProps { columns?: 'multi' | 'single' | 'singleSplit'; data: unknown; @@ -155,6 +153,8 @@ export const StepRuleDescriptionComponent = ({ )} diff --git a/x-pack/plugins/security_solution/public/management/components/console/components/command_usage.tsx b/x-pack/plugins/security_solution/public/management/components/console/components/command_usage.tsx index 66d97b0da5451..7d1895ba7d1b7 100644 --- a/x-pack/plugins/security_solution/public/management/components/console/components/command_usage.tsx +++ b/x-pack/plugins/security_solution/public/management/components/console/components/command_usage.tsx @@ -38,7 +38,7 @@ export const CommandInputUsage = memo>(({ >(({ (({ commandDef, errorMessage {title}, description }]} descriptionProps={additionalProps} titleProps={additionalProps} @@ -191,7 +191,7 @@ export const CommandUsage = memo(({ commandDef, errorMessage .euiDescriptionList__title { - width: 20%; - margin-top: ${({ theme: { eui } }) => eui.euiSizeS}; - } - - > .euiDescriptionList__description { - width: 80%; - margin-top: ${({ theme: { eui } }) => eui.euiSizeS}; - } - } - } `; export const Console = memo( diff --git a/x-pack/plugins/security_solution/public/management/components/endpoint_responder/command_render_components/status_action.tsx b/x-pack/plugins/security_solution/public/management/components/endpoint_responder/command_render_components/status_action.tsx index 357d0e566e328..2de29f621c7ec 100644 --- a/x-pack/plugins/security_solution/public/management/components/endpoint_responder/command_render_components/status_action.tsx +++ b/x-pack/plugins/security_solution/public/management/components/endpoint_responder/command_render_components/status_action.tsx @@ -252,7 +252,7 @@ export const EndpointStatusActionResult = memo< diff --git a/x-pack/plugins/security_solution/public/management/components/endpoint_response_actions_list/components/action_log_expanded_tray.tsx b/x-pack/plugins/security_solution/public/management/components/endpoint_response_actions_list/components/action_log_expanded_tray.tsx index 849e9e484b008..7920bae8b22d7 100644 --- a/x-pack/plugins/security_solution/public/management/components/endpoint_response_actions_list/components/action_log_expanded_tray.tsx +++ b/x-pack/plugins/security_solution/public/management/components/endpoint_response_actions_list/components/action_log_expanded_tray.tsx @@ -36,7 +36,6 @@ const customDescriptionListCss = css` > .euiDescriptionList__title, > .euiDescriptionList__description { font-weight: ${(props) => props.theme.eui.euiFontWeightRegular}; - margin-top: ${(props) => props.theme.eui.euiSizeS}; } } `; diff --git a/x-pack/plugins/security_solution/public/management/cypress/e2e/endpoint/policy_details.cy.ts b/x-pack/plugins/security_solution/public/management/cypress/e2e/endpoint/policy_details.cy.ts index 6e63264f63e2e..577164ff4d893 100644 --- a/x-pack/plugins/security_solution/public/management/cypress/e2e/endpoint/policy_details.cy.ts +++ b/x-pack/plugins/security_solution/public/management/cypress/e2e/endpoint/policy_details.cy.ts @@ -9,7 +9,10 @@ import moment from 'moment/moment'; import type { IndexedFleetEndpointPolicyResponse } from '../../../../../common/endpoint/data_loaders/index_fleet_endpoint_policy'; import type { PolicyData } from '../../../../../common/endpoint/types'; import { createAgentPolicyTask, getEndpointIntegrationVersion } from '../../tasks/fleet'; -import { setCustomProtectionUpdatesManifestVersion } from '../../tasks/endpoint_policy'; +import { + setCustomProtectionUpdatesManifestVersion, + setCustomProtectionUpdatesNote, +} from '../../tasks/endpoint_policy'; import { login, ROLE } from '../../tasks/login'; import { disableExpandableFlyoutAdvancedSettings, loadPage } from '../../tasks/common'; @@ -17,6 +20,8 @@ describe('Policy Details', () => { describe('Protection updates', () => { const loadProtectionUpdatesUrl = (policyId: string) => loadPage(`/app/security/administration/policy/${policyId}/protectionUpdates`); + const testNote = 'test note'; + const updatedTestNote = 'updated test note'; describe('Renders and saves protection updates', () => { let indexedPolicy: IndexedFleetEndpointPolicyResponse; @@ -59,13 +64,18 @@ describe('Policy Details', () => { cy.getByTestSubj('protection-updates-version-to-deploy-picker').within(() => { cy.get('input').should('have.value', formattedToday); }); + cy.getByTestSubj('protection-updates-manifest-name-note-title'); + cy.getByTestSubj('protection-updates-manifest-note'); cy.getByTestSubj('policyDetailsSaveButton'); }); it('should successfully update the manifest version to custom date', () => { loadProtectionUpdatesUrl(policy.id); cy.getByTestSubj('protection-updates-manifest-switch').click(); + cy.getByTestSubj('protection-updates-manifest-note').type(testNote); + cy.intercept('PUT', `/api/fleet/package_policies/${policy.id}`).as('policy'); + cy.intercept('POST', `/api/endpoint/protection_updates_note/*`).as('note'); cy.getByTestSubj('policyDetailsSaveButton').click(); cy.wait('@policy').then(({ request, response }) => { expect(request.body.inputs[0].config.policy.value.global_manifest_version).to.equal( @@ -73,8 +83,15 @@ describe('Policy Details', () => { ); expect(response?.statusCode).to.equal(200); }); + + cy.wait('@note').then(({ request, response }) => { + expect(request.body.note).to.equal(testNote); + expect(response?.statusCode).to.equal(200); + }); + cy.getByTestSubj('protectionUpdatesSuccessfulMessage'); cy.getByTestSubj('protection-updates-deployed-version').contains(formattedToday); + cy.getByTestSubj('protection-updates-manifest-note').contains(testNote); }); }); @@ -122,6 +139,50 @@ describe('Policy Details', () => { }); }); + describe('Renders and saves protection updates with custom note', () => { + let indexedPolicy: IndexedFleetEndpointPolicyResponse; + let policy: PolicyData; + + const twoMonthsAgo = moment().subtract(2, 'months').format('YYYY-MM-DD'); + + beforeEach(() => { + login(); + disableExpandableFlyoutAdvancedSettings(); + }); + + before(() => { + getEndpointIntegrationVersion().then((version) => { + createAgentPolicyTask(version).then((data) => { + indexedPolicy = data; + policy = indexedPolicy.integrationPolicies[0]; + setCustomProtectionUpdatesManifestVersion(policy.id, twoMonthsAgo); + setCustomProtectionUpdatesNote(policy.id, testNote); + }); + }); + }); + + after(() => { + if (indexedPolicy) { + cy.task('deleteIndexedFleetEndpointPolicies', indexedPolicy); + } + }); + + it('should update note on save', () => { + loadProtectionUpdatesUrl(policy.id); + cy.getByTestSubj('protection-updates-manifest-note').contains(testNote); + cy.getByTestSubj('protection-updates-manifest-note').clear().type(updatedTestNote); + + cy.intercept('POST', `/api/endpoint/protection_updates_note/*`).as('note_updated'); + cy.getByTestSubj('policyDetailsSaveButton').click(); + cy.wait('@note_updated').then(({ request, response }) => { + expect(request.body.note).to.equal(updatedTestNote); + expect(response?.statusCode).to.equal(200); + }); + cy.getByTestSubj('protectionUpdatesSuccessfulMessage'); + cy.getByTestSubj('protection-updates-manifest-note').contains(updatedTestNote); + }); + }); + describe('Renders read only protection updates for user without write permissions', () => { let indexedPolicy: IndexedFleetEndpointPolicyResponse; let policy: PolicyData; @@ -138,6 +199,7 @@ describe('Policy Details', () => { indexedPolicy = data; policy = indexedPolicy.integrationPolicies[0]; setCustomProtectionUpdatesManifestVersion(policy.id, twoMonthsAgo.format('YYYY-MM-DD')); + setCustomProtectionUpdatesNote(policy.id, testNote); }); }); }); @@ -162,6 +224,10 @@ describe('Policy Details', () => { cy.getByTestSubj('protection-updates-manifest-name-version-to-deploy-title'); cy.getByTestSubj('protection-updates-version-to-deploy-view-mode'); cy.getByTestSubj('protection-updates-version-to-deploy-picker').should('not.exist'); + + cy.getByTestSubj('protection-updates-manifest-name-note-title'); + cy.getByTestSubj('protection-updates-manifest-note').should('not.exist'); + cy.getByTestSubj('protection-updates-manifest-note-view-mode').contains(testNote); cy.getByTestSubj('policyDetailsSaveButton').should('be.disabled'); }); }); diff --git a/x-pack/plugins/security_solution/public/management/cypress/tasks/endpoint_policy.ts b/x-pack/plugins/security_solution/public/management/cypress/tasks/endpoint_policy.ts index f597e9ae4e225..9353cdf9ed822 100644 --- a/x-pack/plugins/security_solution/public/management/cypress/tasks/endpoint_policy.ts +++ b/x-pack/plugins/security_solution/public/management/cypress/tasks/endpoint_policy.ts @@ -94,3 +94,15 @@ export const setCustomProtectionUpdatesManifestVersion = ( }); }); }; + +export const setCustomProtectionUpdatesNote = ( + endpointPolicyId: string, + note: string +): Cypress.Chainable> => { + return request<{ note: string }>({ + method: 'POST', + url: `/api/endpoint/protection_updates_note/${endpointPolicyId}`, + body: { note }, + headers: { 'Elastic-Api-Version': '2023-10-31' }, + }); +}; diff --git a/x-pack/plugins/security_solution/public/management/links.test.ts b/x-pack/plugins/security_solution/public/management/links.test.ts index 17116530e6467..28d3c727ce2a4 100644 --- a/x-pack/plugins/security_solution/public/management/links.test.ts +++ b/x-pack/plugins/security_solution/public/management/links.test.ts @@ -93,7 +93,8 @@ describe('links', () => { SecurityPageName.hostIsolationExceptions, SecurityPageName.policies, SecurityPageName.responseActionsHistory, - SecurityPageName.trustedApps + SecurityPageName.trustedApps, + SecurityPageName.cloudDefendPolicies ) ); }); @@ -234,7 +235,9 @@ describe('links', () => { const filteredLinks = await getManagementFilteredLinks(coreMockStarted, getPlugins()); - expect(filteredLinks).toEqual(getLinksWithout(SecurityPageName.policies)); + expect(filteredLinks).toEqual( + getLinksWithout(SecurityPageName.policies, SecurityPageName.cloudDefendPolicies) + ); }); }); diff --git a/x-pack/plugins/security_solution/public/management/links.ts b/x-pack/plugins/security_solution/public/management/links.ts index 309e9a093979b..60c4c93d43fa6 100644 --- a/x-pack/plugins/security_solution/public/management/links.ts +++ b/x-pack/plugins/security_solution/public/management/links.ts @@ -235,6 +235,7 @@ export const getManagementFilteredLinks = async ( if (!canReadPolicyManagement) { linksToExclude.push(SecurityPageName.policies); + linksToExclude.push(SecurityPageName.cloudDefendPolicies); } if (!canReadActionsLogManagement) { diff --git a/x-pack/plugins/security_solution/public/management/pages/policy/view/protection_updates/hooks/use_get_protection_updates_note.ts b/x-pack/plugins/security_solution/public/management/pages/policy/view/protection_updates/hooks/use_get_protection_updates_note.ts new file mode 100644 index 0000000000000..0ac3db09b35a2 --- /dev/null +++ b/x-pack/plugins/security_solution/public/management/pages/policy/view/protection_updates/hooks/use_get_protection_updates_note.ts @@ -0,0 +1,42 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { useQuery } from '@tanstack/react-query'; +import { resolvePathVariables } from '../../../../../../common/utils/resolve_path_variables'; +import { PROTECTION_UPDATES_NOTE_ROUTE } from '../../../../../../../common/endpoint/constants'; +import { useKibana } from '../../../../../../common/lib/kibana'; + +export const getProtectionUpdatesNoteQueryKey = (packagePolicyId: string) => + `protection-updates-note-${packagePolicyId}`; + +interface UseProtectionUpdatesNote { + packagePolicyId: string; +} + +interface NoteResponse { + note: string; +} + +export const useGetProtectionUpdatesNote = ({ packagePolicyId }: UseProtectionUpdatesNote) => { + const { http } = useKibana().services; + + return useQuery<{ data: NoteResponse }, unknown, NoteResponse>( + [getProtectionUpdatesNoteQueryKey(packagePolicyId)], + () => + http.get( + resolvePathVariables(PROTECTION_UPDATES_NOTE_ROUTE, { package_policy_id: packagePolicyId }), + { + version: '2023-10-31', + } + ), + { + keepPreviousData: true, + enabled: !!packagePolicyId, + retry: false, + } + ); +}; diff --git a/x-pack/plugins/security_solution/public/management/pages/policy/view/protection_updates/hooks/use_post_protection_updates_note.ts b/x-pack/plugins/security_solution/public/management/pages/policy/view/protection_updates/hooks/use_post_protection_updates_note.ts new file mode 100644 index 0000000000000..16b6ee66f07ca --- /dev/null +++ b/x-pack/plugins/security_solution/public/management/pages/policy/view/protection_updates/hooks/use_post_protection_updates_note.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 { useMutation, useQueryClient } from '@tanstack/react-query'; +import { getProtectionUpdatesNoteQueryKey } from './use_get_protection_updates_note'; +import { useKibana } from '../../../../../../common/lib/kibana'; +import { resolvePathVariables } from '../../../../../../common/utils/resolve_path_variables'; +import { PROTECTION_UPDATES_NOTE_ROUTE } from '../../../../../../../common/endpoint/constants'; + +interface ProtectionUpdatesNoteParams { + packagePolicyId: string; +} + +interface NoteResponse { + note: string; +} + +export const useCreateProtectionUpdatesNote = ({ + packagePolicyId, +}: ProtectionUpdatesNoteParams) => { + const { http } = useKibana().services; + const queryClient = useQueryClient(); + + return useMutation< + { data: NoteResponse }, + { body: { error: string; message: string } }, + NoteResponse + >( + (payload) => + http.post( + resolvePathVariables(PROTECTION_UPDATES_NOTE_ROUTE, { policy_id: packagePolicyId }), + { + version: '2023-10-31', + body: JSON.stringify(payload), + } + ), + { + onSuccess: () => { + queryClient.invalidateQueries([getProtectionUpdatesNoteQueryKey(packagePolicyId)]); + }, + } + ); +}; diff --git a/x-pack/plugins/security_solution/public/management/pages/policy/view/protection_updates/protection_updates_layout.tsx b/x-pack/plugins/security_solution/public/management/pages/policy/view/protection_updates/protection_updates_layout.tsx index 09439918dfde0..499be2cf31284 100644 --- a/x-pack/plugins/security_solution/public/management/pages/policy/view/protection_updates/protection_updates_layout.tsx +++ b/x-pack/plugins/security_solution/public/management/pages/policy/view/protection_updates/protection_updates_layout.tsx @@ -13,14 +13,16 @@ import { EuiFlexGroup, EuiFlexItem, EuiHorizontalRule, + EuiIconTip, EuiPanel, EuiShowFor, EuiSpacer, EuiSwitch, EuiText, + EuiTextArea, EuiTitle, } from '@elastic/eui'; -import React, { useCallback, useContext, useState } from 'react'; +import React, { useCallback, useContext, useEffect, useState } from 'react'; import { useDispatch } from 'react-redux'; import { ThemeContext } from 'styled-components'; import { i18n } from '@kbn/i18n'; @@ -28,6 +30,8 @@ import { FormattedMessage } from '@kbn/i18n-react'; import type { Moment } from 'moment'; import moment from 'moment'; import { cloneDeep } from 'lodash'; +import { useCreateProtectionUpdatesNote } from './hooks/use_post_protection_updates_note'; +import { useGetProtectionUpdatesNote } from './hooks/use_get_protection_updates_note'; import { useUserPrivileges } from '../../../../../common/components/user_privileges'; import { useToasts } from '../../../../../common/lib/kibana'; import { useUpdateEndpointPolicy } from '../../../../hooks/policy/use_update_endpoint_policy'; @@ -67,6 +71,20 @@ export const ProtectionUpdatesLayout = React.memo( const today = moment(); const [selectedDate, setSelectedDate] = useState(today); + const { data: fetchedNote, isLoading: getNoteInProgress } = useGetProtectionUpdatesNote({ + packagePolicyId: _policy.id, + }); + const { isLoading: createNoteInProgress, mutate: createNote } = useCreateProtectionUpdatesNote({ + packagePolicyId: _policy.id, + }); + const [note, setNote] = useState(''); + + useEffect(() => { + if (fetchedNote && !getNoteInProgress) { + setNote(fetchedNote.note); + } + }, [fetchedNote, getNoteInProgress]); + const automaticUpdatesEnabled = manifestVersion === 'latest'; const internalDateFormat = 'YYYY-MM-DD'; const displayDateFormat = 'MMMM DD, YYYY'; @@ -119,8 +137,27 @@ export const ProtectionUpdatesLayout = React.memo( text: err.message, }); }); + if ((!fetchedNote && note !== '') || (fetchedNote && note !== fetchedNote.note)) { + createNote( + { note }, + { + onError: (error) => { + toasts.addDanger({ + 'data-test-subj': 'protectionUpdatesNoteUpdateFailureMessage', + title: i18n.translate( + 'xpack.securitySolution.endpoint.protectionUpdates.noteUpdateErrorTitle', + { + defaultMessage: 'Note update failed!', + } + ), + text: error.body.message, + }); + }, + } + ); + } }, - [dispatch, policy, sendPolicyUpdate, toasts] + [policy, sendPolicyUpdate, fetchedNote, note, toasts, dispatch, createNote] ); const toggleAutomaticUpdates = useCallback( @@ -260,16 +297,57 @@ export const ProtectionUpdatesLayout = React.memo( )} - + {deployedVersion === 'latest' ? 'latest' : formattedDate} + {renderVersionToDeployPicker()} + + +
+ {i18n.translate('xpack.securitySolution.endpoint.protectionUpdates.note.label', { + defaultMessage: 'Note', + })} +
+
+ + + + } + /> +
+ + {canWritePolicyManagement ? ( + setNote(e.target.value)} + fullWidth={true} + rows={3} + placeholder={i18n.translate( + 'xpack.securitySolution.endpoint.protectionUpdates.note.placeholder', + { + defaultMessage: 'Add relevant information about update here', + } + )} + data-test-subj={'protection-updates-manifest-note'} + /> + ) : ( + {note} + )} + ( {canWritePolicyManagement ? (
Host ID
@@ -378,7 +378,7 @@ exports[`Details Panel Component DetailsPanel:HostDetails: rendering it should r
First seen
@@ -393,7 +393,7 @@ exports[`Details Panel Component DetailsPanel:HostDetails: rendering it should r />
Last seen
@@ -417,7 +417,7 @@ exports[`Details Panel Component DetailsPanel:HostDetails: rendering it should r data-type="row" >
IP addresses
@@ -431,7 +431,7 @@ exports[`Details Panel Component DetailsPanel:HostDetails: rendering it should r
MAC addresses
@@ -445,7 +445,7 @@ exports[`Details Panel Component DetailsPanel:HostDetails: rendering it should r
Platform
@@ -468,7 +468,7 @@ exports[`Details Panel Component DetailsPanel:HostDetails: rendering it should r data-type="row" >
Operating system
@@ -482,7 +482,7 @@ exports[`Details Panel Component DetailsPanel:HostDetails: rendering it should r
Family
@@ -496,7 +496,7 @@ exports[`Details Panel Component DetailsPanel:HostDetails: rendering it should r
Version
@@ -510,7 +510,7 @@ exports[`Details Panel Component DetailsPanel:HostDetails: rendering it should r
Architecture
@@ -533,7 +533,7 @@ exports[`Details Panel Component DetailsPanel:HostDetails: rendering it should r data-type="row" >
Cloud provider
@@ -547,7 +547,7 @@ exports[`Details Panel Component DetailsPanel:HostDetails: rendering it should r
Region
@@ -561,7 +561,7 @@ exports[`Details Panel Component DetailsPanel:HostDetails: rendering it should r
Instance ID
@@ -575,7 +575,7 @@ exports[`Details Panel Component DetailsPanel:HostDetails: rendering it should r
Machine type
@@ -707,7 +707,7 @@ exports[`Details Panel Component DetailsPanel:NetworkDetails: rendering it shoul data-type="row" >
Location
@@ -721,7 +721,7 @@ exports[`Details Panel Component DetailsPanel:NetworkDetails: rendering it shoul
Autonomous system
@@ -744,7 +744,7 @@ exports[`Details Panel Component DetailsPanel:NetworkDetails: rendering it shoul data-type="row" >
First seen
@@ -759,7 +759,7 @@ exports[`Details Panel Component DetailsPanel:NetworkDetails: rendering it shoul />
Last seen
@@ -783,7 +783,7 @@ exports[`Details Panel Component DetailsPanel:NetworkDetails: rendering it shoul data-type="row" >
Host ID
@@ -797,7 +797,7 @@ exports[`Details Panel Component DetailsPanel:NetworkDetails: rendering it shoul
Host name
@@ -820,7 +820,7 @@ exports[`Details Panel Component DetailsPanel:NetworkDetails: rendering it shoul data-type="row" >
WhoIs
@@ -853,7 +853,7 @@ exports[`Details Panel Component DetailsPanel:NetworkDetails: rendering it shoul
Reputation
diff --git a/x-pack/plugins/security_solution/server/endpoint/endpoint_app_context_services.ts b/x-pack/plugins/security_solution/server/endpoint/endpoint_app_context_services.ts index d0d55753ba336..917d366354270 100644 --- a/x-pack/plugins/security_solution/server/endpoint/endpoint_app_context_services.ts +++ b/x-pack/plugins/security_solution/server/endpoint/endpoint_app_context_services.ts @@ -5,7 +5,12 @@ * 2.0. */ -import type { KibanaRequest, Logger, ElasticsearchClient } from '@kbn/core/server'; +import type { + KibanaRequest, + Logger, + ElasticsearchClient, + SavedObjectsClientContract, +} from '@kbn/core/server'; import type { ExceptionListClient, ListsServerExtensionRegistrar } from '@kbn/lists-plugin/server'; import type { CasesClient, CasesStart } from '@kbn/cases-plugin/server'; import type { SecurityPluginStart } from '@kbn/security-plugin/server'; @@ -71,6 +76,7 @@ export interface EndpointAppContextServiceStartContract { actionCreateService: ActionCreateService | undefined; esClient: ElasticsearchClient; appFeaturesService: AppFeaturesService; + savedObjectsClient: SavedObjectsClientContract; } /** @@ -108,6 +114,7 @@ export class EndpointAppContextService { endpointMetadataService, esClient, appFeaturesService, + savedObjectsClient, } = dependencies; registerIngestCallback( @@ -144,7 +151,7 @@ export class EndpointAppContextService { registerIngestCallback( 'packagePolicyPostDelete', - getPackagePolicyDeleteCallback(exceptionListsClient) + getPackagePolicyDeleteCallback(exceptionListsClient, savedObjectsClient) ); } diff --git a/x-pack/plugins/security_solution/server/endpoint/lib/protection_updates_note/saved_object_mappings.ts b/x-pack/plugins/security_solution/server/endpoint/lib/protection_updates_note/saved_object_mappings.ts new file mode 100644 index 0000000000000..1d805558e2875 --- /dev/null +++ b/x-pack/plugins/security_solution/server/endpoint/lib/protection_updates_note/saved_object_mappings.ts @@ -0,0 +1,28 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import type { SavedObjectsType } from '@kbn/core-saved-objects-server'; +import { SECURITY_SOLUTION_SAVED_OBJECT_INDEX } from '@kbn/core-saved-objects-server'; + +export const protectionUpdatesNoteSavedObjectType = 'policy-settings-protection-updates-note'; + +export const protectionUpdatesNoteSavedObjectMappings: SavedObjectsType['mappings'] = { + properties: { + note: { + type: 'text', + index: false, + }, + }, +}; + +export const protectionUpdatesNoteType: SavedObjectsType = { + name: protectionUpdatesNoteSavedObjectType, + indexPattern: SECURITY_SOLUTION_SAVED_OBJECT_INDEX, + hidden: false, + namespaceType: 'single', + mappings: protectionUpdatesNoteSavedObjectMappings, +}; diff --git a/x-pack/plugins/security_solution/server/endpoint/mocks.ts b/x-pack/plugins/security_solution/server/endpoint/mocks.ts index 0cd5c02a770ec..6376bf4554041 100644 --- a/x-pack/plugins/security_solution/server/endpoint/mocks.ts +++ b/x-pack/plugins/security_solution/server/endpoint/mocks.ts @@ -221,6 +221,7 @@ export const createMockEndpointAppContextServiceStartContract = createFleetActionsClient: jest.fn((_) => fleetActionsClientMock), esClient: elasticsearchClientMock.createElasticsearchClient(), appFeaturesService, + savedObjectsClient: savedObjectsClientMock.create(), }; }; diff --git a/x-pack/plugins/security_solution/server/endpoint/routes/protection_updates_note/handlers.test.ts b/x-pack/plugins/security_solution/server/endpoint/routes/protection_updates_note/handlers.test.ts new file mode 100644 index 0000000000000..029d652953861 --- /dev/null +++ b/x-pack/plugins/security_solution/server/endpoint/routes/protection_updates_note/handlers.test.ts @@ -0,0 +1,191 @@ +/* + * Copyright 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 { EndpointAppContextService } from '../../endpoint_app_context_services'; +import type { KibanaResponseFactory, SavedObjectsClientContract } from '@kbn/core/server'; + +import { + createMockEndpointAppContextServiceSetupContract, + createMockEndpointAppContextServiceStartContract, + createRouteHandlerContext, +} from '../../mocks'; +import type { ScopedClusterClientMock } from '@kbn/core/server/mocks'; +import { + elasticsearchServiceMock, + httpServerMock, + savedObjectsClientMock, +} from '@kbn/core/server/mocks'; +import { getProtectionUpdatesNoteHandler, postProtectionUpdatesNoteHandler } from './handlers'; +import { requestContextMock } from '../../../lib/detection_engine/routes/__mocks__'; + +const mockedSOSuccessfulFindResponse = { + total: 1, + saved_objects: [ + { + id: 'id', + type: 'type', + references: [ + { + id: 'id_package_policy', + name: 'package_policy', + type: 'ingest-package-policies', + }, + ], + attributes: { note: 'note' }, + score: 1, + }, + ], + page: 1, + per_page: 10, +}; + +const mockedSOSuccessfulFindResponseEmpty = { + total: 0, + saved_objects: [], + page: 1, + per_page: 10, +}; + +const createMockedSOSuccessfulCreateResponse = (note: string) => ({ + id: 'id', + type: 'type', + references: [], + attributes: { note }, +}); + +const mockedSOSuccessfulUpdateResponse = [ + 'policy-settings-protection-updates-note', + 'id', + { note: 'note2' }, + { + references: [ + { + id: 'id_package_policy', + name: 'package_policy', + type: 'ingest-package-policies', + }, + ], + refresh: 'wait_for', + }, +]; + +describe('test protection updates note handler', () => { + let endpointAppContextService: EndpointAppContextService; + let mockSavedObjectClient: jest.Mocked; + let mockResponse: jest.Mocked; + let mockScopedClient: ScopedClusterClientMock; + + describe('test protection updates note handler', () => { + beforeEach(() => { + mockScopedClient = elasticsearchServiceMock.createScopedClusterClient(); + mockSavedObjectClient = savedObjectsClientMock.create(); + mockResponse = httpServerMock.createResponseFactory(); + endpointAppContextService = new EndpointAppContextService(); + endpointAppContextService.setup(createMockEndpointAppContextServiceSetupContract()); + endpointAppContextService.start(createMockEndpointAppContextServiceStartContract()); + }); + + afterEach(() => endpointAppContextService.stop()); + + it('should create a new note if one does not exist', async () => { + const protectionUpdatesNoteHandler = postProtectionUpdatesNoteHandler(); + const mockRequest = httpServerMock.createKibanaRequest({ + params: { policyId: 'id' }, + body: { note: 'note' }, + }); + + mockSavedObjectClient.find.mockResolvedValueOnce(mockedSOSuccessfulFindResponseEmpty); + + mockSavedObjectClient.create.mockResolvedValueOnce( + createMockedSOSuccessfulCreateResponse('note') + ); + + await protectionUpdatesNoteHandler( + requestContextMock.convertContext( + createRouteHandlerContext(mockScopedClient, mockSavedObjectClient) + ), + mockRequest, + mockResponse + ); + + expect(mockResponse.ok).toBeCalled(); + expect(mockSavedObjectClient.create).toBeCalledWith( + 'policy-settings-protection-updates-note', + { note: 'note' }, + { + references: [{ id: undefined, name: 'package_policy', type: 'ingest-package-policies' }], + refresh: 'wait_for', + } + ); + }); + + it('should update an existing note on post if one exists', async () => { + const protectionUpdatesNoteHandler = postProtectionUpdatesNoteHandler(); + const mockRequest = httpServerMock.createKibanaRequest({ + params: { policyId: 'id' }, + body: { note: 'note2' }, + }); + + mockSavedObjectClient.find.mockResolvedValueOnce(mockedSOSuccessfulFindResponse); + + mockSavedObjectClient.update.mockResolvedValueOnce( + createMockedSOSuccessfulCreateResponse('note2') + ); + + await protectionUpdatesNoteHandler( + requestContextMock.convertContext( + createRouteHandlerContext(mockScopedClient, mockSavedObjectClient) + ), + mockRequest, + mockResponse + ); + + expect(mockResponse.ok).toBeCalled(); + expect(mockSavedObjectClient.update).toBeCalledWith(...mockedSOSuccessfulUpdateResponse); + }); + + it('should return the note if one exists', async () => { + const protectionUpdatesNoteHandler = getProtectionUpdatesNoteHandler(); + const mockRequest = httpServerMock.createKibanaRequest({ + params: { policyId: 'id' }, + }); + + mockSavedObjectClient.find.mockResolvedValueOnce(mockedSOSuccessfulFindResponse); + + await protectionUpdatesNoteHandler( + requestContextMock.convertContext( + createRouteHandlerContext(mockScopedClient, mockSavedObjectClient) + ), + mockRequest, + mockResponse + ); + + expect(mockResponse.ok).toBeCalled(); + const result = mockResponse.ok.mock.calls[0][0]?.body as { note: string }; + expect(result.note).toEqual('note'); + }); + + it('should return notFound if no note exists', async () => { + const protectionUpdatesNoteHandler = getProtectionUpdatesNoteHandler(); + const mockRequest = httpServerMock.createKibanaRequest({ + params: { policyId: 'id' }, + }); + + mockSavedObjectClient.find.mockResolvedValueOnce(mockedSOSuccessfulFindResponseEmpty); + + await protectionUpdatesNoteHandler( + requestContextMock.convertContext( + createRouteHandlerContext(mockScopedClient, mockSavedObjectClient) + ), + mockRequest, + mockResponse + ); + + expect(mockResponse.notFound).toBeCalled(); + }); + }); +}); diff --git a/x-pack/plugins/security_solution/server/endpoint/routes/protection_updates_note/handlers.ts b/x-pack/plugins/security_solution/server/endpoint/routes/protection_updates_note/handlers.ts new file mode 100644 index 0000000000000..e1677451ff577 --- /dev/null +++ b/x-pack/plugins/security_solution/server/endpoint/routes/protection_updates_note/handlers.ts @@ -0,0 +1,126 @@ +/* + * Copyright 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 { + RequestHandler, + SavedObjectReference, + SavedObjectsClientContract, +} from '@kbn/core/server'; +import type { TypeOf } from '@kbn/config-schema'; +import { PACKAGE_POLICY_SAVED_OBJECT_TYPE } from '@kbn/fleet-plugin/common'; +import { protectionUpdatesNoteSavedObjectType } from '../../lib/protection_updates_note/saved_object_mappings'; +import type { + CreateUpdateProtectionUpdatesNoteSchema, + GetProtectionUpdatesNoteSchema, +} from '../../../../common/api/endpoint/protection_updates_note/protection_updates_note_schema'; + +const getProtectionNote = async (SOClient: SavedObjectsClientContract, packagePolicyId: string) => { + return SOClient.find<{ note: string }>({ + type: protectionUpdatesNoteSavedObjectType, + hasReference: { type: PACKAGE_POLICY_SAVED_OBJECT_TYPE, id: packagePolicyId }, + }); +}; + +const updateProtectionNote = async ( + SOClient: SavedObjectsClientContract, + noteId: string, + note: string, + references: SavedObjectReference[] +) => { + return SOClient.update( + protectionUpdatesNoteSavedObjectType, + noteId, + { + note, + }, + { + references, + refresh: 'wait_for', + } + ); +}; + +const createProtectionNote = async ( + SOClient: SavedObjectsClientContract, + note: string, + references: SavedObjectReference[] +) => { + return SOClient.create( + protectionUpdatesNoteSavedObjectType, + { + note, + }, + { + references, + refresh: 'wait_for', + } + ); +}; + +export const postProtectionUpdatesNoteHandler = function (): RequestHandler< + TypeOf, + undefined, + TypeOf +> { + return async (context, request, response) => { + const SOClient = (await context.core).savedObjects.client; + const { package_policy_id: packagePolicyId } = request.params; + const { note } = request.body; + + const soClientResponse = await getProtectionNote(SOClient, packagePolicyId); + + if (soClientResponse.saved_objects[0]) { + const { references } = soClientResponse.saved_objects[0]; + + const updatedNoteSO = await updateProtectionNote( + SOClient, + soClientResponse.saved_objects[0].id, + note, + references + ); + + const { attributes } = updatedNoteSO; + + return response.ok({ body: attributes }); + } + + const references: SavedObjectReference[] = [ + { + id: packagePolicyId, + name: 'package_policy', + type: PACKAGE_POLICY_SAVED_OBJECT_TYPE, + }, + ]; + + const noteSO = await createProtectionNote(SOClient, note, references); + + const { attributes } = noteSO; + + return response.ok({ body: attributes }); + }; +}; + +export const getProtectionUpdatesNoteHandler = function (): RequestHandler< + TypeOf, + undefined, + undefined +> { + return async (context, request, response) => { + const SOClient = (await context.core).savedObjects.client; + const { package_policy_id: packagePolicyId } = request.params; + + const soClientResponse = await getProtectionNote(SOClient, packagePolicyId); + + if (!soClientResponse.saved_objects[0] || !soClientResponse.saved_objects[0].attributes) { + return response.notFound({ body: { message: 'No note found for this policy' } }); + } + + const { attributes } = soClientResponse.saved_objects[0]; + + return response.ok({ body: attributes }); + }; +}; diff --git a/x-pack/plugins/security_solution/server/endpoint/routes/protection_updates_note/index.ts b/x-pack/plugins/security_solution/server/endpoint/routes/protection_updates_note/index.ts new file mode 100644 index 0000000000000..4d398bbe14e6e --- /dev/null +++ b/x-pack/plugins/security_solution/server/endpoint/routes/protection_updates_note/index.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 { IRouter } from '@kbn/core/server'; +import { getProtectionUpdatesNoteHandler, postProtectionUpdatesNoteHandler } from './handlers'; +import { + GetProtectionUpdatesNoteSchema, + CreateUpdateProtectionUpdatesNoteSchema, +} from '../../../../common/api/endpoint/protection_updates_note/protection_updates_note_schema'; +import { withEndpointAuthz } from '../with_endpoint_authz'; +import { PROTECTION_UPDATES_NOTE_ROUTE } from '../../../../common/endpoint/constants'; +import type { EndpointAppContext } from '../../types'; + +export function registerProtectionUpdatesNoteRoutes( + router: IRouter, + endpointAppContext: EndpointAppContext +) { + const logger = endpointAppContext.logFactory.get('protectionUpdatesNote'); + + router.versioned + .post({ + access: 'public', + path: PROTECTION_UPDATES_NOTE_ROUTE, + options: { authRequired: true, tags: ['access:securitySolution'] }, + }) + .addVersion( + { + version: '2023-10-31', + validate: { + request: CreateUpdateProtectionUpdatesNoteSchema, + }, + }, + withEndpointAuthz( + { all: ['canWritePolicyManagement'] }, + logger, + postProtectionUpdatesNoteHandler() + ) + ); + + router.versioned + .get({ + access: 'public', + path: PROTECTION_UPDATES_NOTE_ROUTE, + options: { authRequired: true, tags: ['access:securitySolution'] }, + }) + .addVersion( + { + version: '2023-10-31', + validate: { + request: GetProtectionUpdatesNoteSchema, + }, + }, + withEndpointAuthz( + { all: ['canReadPolicyManagement'] }, + logger, + getProtectionUpdatesNoteHandler() + ) + ); +} 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 e2ce386337a85..43292c8436fdc 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 @@ -615,7 +615,7 @@ describe('ingest_integration tests ', () => { const esClient = elasticsearchServiceMock.createClusterClient().asInternalUser; const invokeDeleteCallback = async (): Promise => { - const callback = getPackagePolicyDeleteCallback(exceptionListClient); + const callback = getPackagePolicyDeleteCallback(exceptionListClient, soClient); await callback(deletePackagePolicyMock(), soClient, esClient); }; @@ -640,6 +640,27 @@ describe('ingest_integration tests ', () => { }); it('removes policy from artifact', async () => { + soClient.find.mockResolvedValueOnce({ + total: 1, + saved_objects: [ + { + id: 'id', + type: 'type', + references: [ + { + id: 'id_package_policy', + name: 'package_policy', + type: 'ingest-package-policies', + }, + ], + attributes: { note: 'note' }, + score: 1, + }, + ], + page: 1, + per_page: 10, + }); + await invokeDeleteCallback(); expect(exceptionListClient.findExceptionListsItem).toHaveBeenCalledWith({ @@ -660,6 +681,8 @@ describe('ingest_integration tests ', () => { osTypes: fakeArtifact.os_types, tags: [], }); + + expect(soClient.delete).toBeCalledWith('policy-settings-protection-updates-note', 'id'); }); }); }); diff --git a/x-pack/plugins/security_solution/server/fleet_integration/fleet_integration.ts b/x-pack/plugins/security_solution/server/fleet_integration/fleet_integration.ts index 554417eee480d..c2775f3f4794a 100644 --- a/x-pack/plugins/security_solution/server/fleet_integration/fleet_integration.ts +++ b/x-pack/plugins/security_solution/server/fleet_integration/fleet_integration.ts @@ -5,7 +5,7 @@ * 2.0. */ -import type { Logger, ElasticsearchClient } from '@kbn/core/server'; +import type { Logger, ElasticsearchClient, SavedObjectsClientContract } from '@kbn/core/server'; import type { ExceptionListClient } from '@kbn/lists-plugin/server'; import type { PluginStartContract as AlertsStartContract } from '@kbn/alerting-plugin/server'; import type { @@ -44,6 +44,7 @@ import type { AnyPolicyCreateConfig } from './types'; import { ENDPOINT_INTEGRATION_CONFIG_KEY } from './constants'; import { createEventFilters } from './handlers/create_event_filters'; import type { AppFeaturesService } from '../lib/app_features_service/app_features_service'; +import { removeProtectionUpdatesNote } from './handlers/remove_protection_updates_note'; const isEndpointPackagePolicy = ( packagePolicy: T @@ -280,7 +281,8 @@ export const getPackagePolicyPostCreateCallback = ( }; export const getPackagePolicyDeleteCallback = ( - exceptionsClient: ExceptionListClient | undefined + exceptionsClient: ExceptionListClient | undefined, + savedObjectsClient: SavedObjectsClientContract | undefined ): PostPackagePolicyPostDeleteCallback => { return async (deletePackagePolicy): Promise => { if (!exceptionsClient) { @@ -290,8 +292,12 @@ export const getPackagePolicyDeleteCallback = ( for (const policy of deletePackagePolicy) { if (isEndpointPackagePolicy(policy)) { policiesToRemove.push(removePolicyFromArtifacts(exceptionsClient, policy)); + if (savedObjectsClient) { + policiesToRemove.push(removeProtectionUpdatesNote(savedObjectsClient, policy)); + } } } + await Promise.all(policiesToRemove); }; }; diff --git a/x-pack/plugins/security_solution/server/fleet_integration/handlers/remove_protection_updates_note.ts b/x-pack/plugins/security_solution/server/fleet_integration/handlers/remove_protection_updates_note.ts new file mode 100644 index 0000000000000..9106eba06e780 --- /dev/null +++ b/x-pack/plugins/security_solution/server/fleet_integration/handlers/remove_protection_updates_note.ts @@ -0,0 +1,33 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import type { PostPackagePolicyPostDeleteCallback } from '@kbn/fleet-plugin/server'; +import type { SavedObjectsClientContract } from '@kbn/core-saved-objects-api-server'; +import { PACKAGE_POLICY_SAVED_OBJECT_TYPE } from '@kbn/fleet-plugin/common'; +import pMap from 'p-map'; +import { protectionUpdatesNoteSavedObjectType } from '../../endpoint/lib/protection_updates_note/saved_object_mappings'; + +export const removeProtectionUpdatesNote = async ( + soClient: SavedObjectsClientContract, + policy: Parameters[0][0] +) => { + if (policy.id) { + const foundProtectionUpdatesNotes = await soClient.find({ + type: protectionUpdatesNoteSavedObjectType, + hasReference: { + type: PACKAGE_POLICY_SAVED_OBJECT_TYPE, + id: policy.id, + }, + }); + await pMap( + foundProtectionUpdatesNotes.saved_objects, + (protectionUpdatesNote: { id: string }) => { + soClient.delete(protectionUpdatesNoteSavedObjectType, protectionUpdatesNote.id); + } + ); + } +}; diff --git a/x-pack/plugins/security_solution/server/plugin.ts b/x-pack/plugins/security_solution/server/plugin.ts index 65d66e4fde644..8d3bef07d19e1 100644 --- a/x-pack/plugins/security_solution/server/plugin.ts +++ b/x-pack/plugins/security_solution/server/plugin.ts @@ -98,6 +98,7 @@ import { import { AppFeaturesService } from './lib/app_features_service/app_features_service'; import { registerRiskScoringTask } from './lib/risk_engine/tasks/risk_scoring_task'; +import { registerProtectionUpdatesNoteRoutes } from './endpoint/routes/protection_updates_note'; export type { SetupPlugins, StartPlugins, PluginSetup, PluginStart } from './plugin_contract'; @@ -317,6 +318,7 @@ export class Plugin implements ISecuritySolutionPlugin { ); registerLimitedConcurrencyRoutes(core); registerPolicyRoutes(router, this.endpointContext); + registerProtectionUpdatesNoteRoutes(router, this.endpointContext); registerActionRoutes( router, this.endpointContext, @@ -533,6 +535,7 @@ export class Plugin implements ISecuritySolutionPlugin { createFleetActionsClient, esClient: core.elasticsearch.client.asInternalUser, appFeaturesService, + savedObjectsClient, }); this.telemetryReceiver.start( diff --git a/x-pack/plugins/security_solution/server/saved_objects.ts b/x-pack/plugins/security_solution/server/saved_objects.ts index 096b46528e76f..3f91bcf149ac6 100644 --- a/x-pack/plugins/security_solution/server/saved_objects.ts +++ b/x-pack/plugins/security_solution/server/saved_objects.ts @@ -7,6 +7,7 @@ import type { CoreSetup } from '@kbn/core/server'; +import { protectionUpdatesNoteType } from './endpoint/lib/protection_updates_note/saved_object_mappings'; import { noteType, pinnedEventType, timelineType } from './lib/timeline/saved_object_mappings'; // eslint-disable-next-line no-restricted-imports import { legacyType as legacyRuleActionsType } from './lib/detection_engine/rule_actions_legacy'; @@ -24,6 +25,7 @@ const types = [ manifestType, signalsMigrationType, riskEngineConfigurationType, + protectionUpdatesNoteType, ]; export const savedObjectTypes = types.map((type) => type.name); diff --git a/x-pack/plugins/session_view/public/components/detail_panel_description_list/index.tsx b/x-pack/plugins/session_view/public/components/detail_panel_description_list/index.tsx index 3d942fc42326e..99dc0d546233f 100644 --- a/x-pack/plugins/session_view/public/components/detail_panel_description_list/index.tsx +++ b/x-pack/plugins/session_view/public/components/detail_panel_description_list/index.tsx @@ -23,6 +23,7 @@ export const DetailPanelDescriptionList = ({ listItems }: DetailPanelDescription return ( { const descriptionList: CSSObject = { padding: `${euiTheme.size.base} ${euiTheme.size.s} `, alignItems: 'flex-start', + rowGap: 0, }; const tabListTitle = { - width: '40%', display: 'flex', - marginTop: '0px', }; const tabListDescription = { - width: '60%', display: 'flex', - marginTop: '0px', }; return { diff --git a/x-pack/plugins/spaces/public/nav_control/__snapshots__/nav_control_popover.test.tsx.snap b/x-pack/plugins/spaces/public/nav_control/__snapshots__/nav_control_popover.test.tsx.snap index 2c46a577810f1..77801c3f8dadd 100644 --- a/x-pack/plugins/spaces/public/nav_control/__snapshots__/nav_control_popover.test.tsx.snap +++ b/x-pack/plugins/spaces/public/nav_control/__snapshots__/nav_control_popover.test.tsx.snap @@ -1,171 +1,52 @@ // Jest Snapshot v1, https://goo.gl/fbAQLP exports[`NavControlPopover renders without crashing 1`] = ` - + +
+
+
+ +
+
+
+ `; diff --git a/x-pack/plugins/spaces/public/nav_control/nav_control_popover.test.tsx b/x-pack/plugins/spaces/public/nav_control/nav_control_popover.test.tsx index 54411b7ac85d5..420730ea696ac 100644 --- a/x-pack/plugins/spaces/public/nav_control/nav_control_popover.test.tsx +++ b/x-pack/plugins/spaces/public/nav_control/nav_control_popover.test.tsx @@ -12,8 +12,7 @@ import { EuiSelectable, EuiSelectableListItem, } from '@elastic/eui'; -import { act, waitFor } from '@testing-library/react'; -import { shallow } from 'enzyme'; +import { act, render, waitFor } from '@testing-library/react'; import React from 'react'; import * as Rx from 'rxjs'; @@ -70,7 +69,7 @@ describe('NavControlPopover', () => { it('renders without crashing', () => { const spacesManager = spacesManagerMock.create(); - const wrapper = shallow( + const { baseElement } = render( { navigateToUrl={jest.fn()} /> ); - expect(wrapper).toMatchSnapshot(); + expect(baseElement).toMatchSnapshot(); }); it('renders a SpaceAvatar with the active space', async () => { diff --git a/x-pack/plugins/stack_alerts/common/esql_query_utils.test.ts b/x-pack/plugins/stack_alerts/common/esql_query_utils.test.ts new file mode 100644 index 0000000000000..64aad9c156958 --- /dev/null +++ b/x-pack/plugins/stack_alerts/common/esql_query_utils.test.ts @@ -0,0 +1,95 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { rowToDocument, toEsQueryHits, transformDatatableToEsqlTable } from './esql_query_utils'; + +describe('ESQL query utils', () => { + describe('rowToDocument', () => { + it('correctly converts ESQL row to document', () => { + expect( + rowToDocument( + [ + { name: '@timestamp', type: 'date' }, + { name: 'ecs.version', type: 'keyword' }, + { name: 'error.code', type: 'keyword' }, + ], + ['2023-07-12T13:32:04.174Z', '1.8.0', null] + ) + ).toEqual({ + '@timestamp': '2023-07-12T13:32:04.174Z', + 'ecs.version': '1.8.0', + 'error.code': null, + }); + }); + }); + + describe('toEsQueryHits', () => { + it('correctly converts ESQL table to ES query hits', () => { + expect( + toEsQueryHits({ + columns: [ + { name: '@timestamp', type: 'date' }, + { name: 'ecs.version', type: 'keyword' }, + { name: 'error.code', type: 'keyword' }, + ], + values: [['2023-07-12T13:32:04.174Z', '1.8.0', null]], + }) + ).toEqual({ + hits: [ + { + _id: 'esql_query_document', + _index: '', + _source: { + '@timestamp': '2023-07-12T13:32:04.174Z', + 'ecs.version': '1.8.0', + 'error.code': null, + }, + }, + ], + total: 1, + }); + }); + }); + + describe('transformDatatableToEsqlTable', () => { + it('correctly converts data table to ESQL table', () => { + expect( + transformDatatableToEsqlTable({ + type: 'datatable', + columns: [ + { id: '@timestamp', name: '@timestamp', meta: { type: 'date' } }, + { id: 'ecs.version', name: 'ecs.version', meta: { type: 'string' } }, + { id: 'error.code', name: 'error.code', meta: { type: 'string' } }, + ], + rows: [ + { + '@timestamp': '2023-07-12T13:32:04.174Z', + 'ecs.version': '1.8.0', + 'error.code': null, + }, + ], + }) + ).toEqual({ + columns: [ + { + name: '@timestamp', + type: 'date', + }, + { + name: 'ecs.version', + type: 'string', + }, + { + name: 'error.code', + type: 'string', + }, + ], + values: [['2023-07-12T13:32:04.174Z', '1.8.0', null]], + }); + }); + }); +}); diff --git a/x-pack/plugins/stack_alerts/common/esql_query_utils.ts b/x-pack/plugins/stack_alerts/common/esql_query_utils.ts new file mode 100644 index 0000000000000..c74d3640c7fd7 --- /dev/null +++ b/x-pack/plugins/stack_alerts/common/esql_query_utils.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 { Datatable } from '@kbn/expressions-plugin/common'; + +type EsqlDocument = Record; + +interface EsqlHit { + _id: string; + _index: string; + _source: EsqlDocument; +} + +interface EsqlResultColumn { + name: string; + type: string; +} + +type EsqlResultRow = Array; + +export interface EsqlTable { + columns: EsqlResultColumn[]; + values: EsqlResultRow[]; +} + +const ESQL_DOCUMENT_ID = 'esql_query_document'; + +export const rowToDocument = (columns: EsqlResultColumn[], row: EsqlResultRow): EsqlDocument => { + return columns.reduce>((acc, column, i) => { + acc[column.name] = row[i]; + + return acc; + }, {}); +}; + +export const toEsQueryHits = (results: EsqlTable) => { + const hits: EsqlHit[] = results.values.map((row) => { + const document = rowToDocument(results.columns, row); + return { + _id: ESQL_DOCUMENT_ID, + _index: '', + _source: document, + }; + }); + + return { + hits, + total: hits.length, + }; +}; + +export const transformDatatableToEsqlTable = (results: Datatable): EsqlTable => { + const columns: EsqlResultColumn[] = results.columns.map((c) => ({ + name: c.id, + type: c.meta.type, + })); + const values: EsqlResultRow[] = results.rows.map((r) => Object.values(r)); + return { columns, values }; +}; diff --git a/x-pack/plugins/stack_alerts/common/index.ts b/x-pack/plugins/stack_alerts/common/index.ts index 4a9be641712f1..afafef61eb76b 100644 --- a/x-pack/plugins/stack_alerts/common/index.ts +++ b/x-pack/plugins/stack_alerts/common/index.ts @@ -12,3 +12,6 @@ export { getHumanReadableComparator, } from './comparator'; export { STACK_ALERTS_FEATURE_ID } from './constants'; + +export type { EsqlTable } from './esql_query_utils'; +export { rowToDocument, transformDatatableToEsqlTable, toEsQueryHits } from './esql_query_utils'; diff --git a/x-pack/plugins/stack_alerts/kibana.jsonc b/x-pack/plugins/stack_alerts/kibana.jsonc index 668d38d291a34..73b81c6dfd352 100644 --- a/x-pack/plugins/stack_alerts/kibana.jsonc +++ b/x-pack/plugins/stack_alerts/kibana.jsonc @@ -22,7 +22,8 @@ "kibanaUtils" ], "requiredBundles": [ - "esUiShared" + "esUiShared", + "textBasedLanguages" ] } } diff --git a/x-pack/plugins/stack_alerts/public/rule_types/es_query/constants.ts b/x-pack/plugins/stack_alerts/public/rule_types/es_query/constants.ts index 55a34c7b92a79..4cce902449d18 100644 --- a/x-pack/plugins/stack_alerts/public/rule_types/es_query/constants.ts +++ b/x-pack/plugins/stack_alerts/public/rule_types/es_query/constants.ts @@ -48,6 +48,13 @@ export const ONLY_ES_QUERY_EXPRESSION_ERRORS = { timeField: new Array(), }; +export const ONLY_ESQL_QUERY_EXPRESSION_ERRORS = { + esqlQuery: new Array(), + timeField: new Array(), + thresholdComparator: new Array(), + threshold0: new Array(), +}; + const ALL_EXPRESSION_ERROR_ENTRIES = { ...COMMON_EXPRESSION_ERRORS, ...SEARCH_SOURCE_ONLY_EXPRESSION_ERRORS, diff --git a/x-pack/plugins/stack_alerts/public/rule_types/es_query/expression/esql_query_expression.test.tsx b/x-pack/plugins/stack_alerts/public/rule_types/es_query/expression/esql_query_expression.test.tsx new file mode 100644 index 0000000000000..b9b8ba0dd38f7 --- /dev/null +++ b/x-pack/plugins/stack_alerts/public/rule_types/es_query/expression/esql_query_expression.test.tsx @@ -0,0 +1,196 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import React from 'react'; +import { fireEvent, render, waitFor } from '@testing-library/react'; +import { I18nProvider } from '@kbn/i18n-react'; + +import { dataPluginMock } from '@kbn/data-plugin/public/mocks'; +import { dataViewPluginMocks } from '@kbn/data-views-plugin/public/mocks'; +import { unifiedSearchPluginMock } from '@kbn/unified-search-plugin/public/mocks'; +import { chartPluginMock } from '@kbn/charts-plugin/public/mocks'; +import { EsqlQueryExpression } from './esql_query_expression'; +import { EsQueryRuleParams, SearchType } from '../types'; + +jest.mock('../validation', () => ({ + hasExpressionValidationErrors: jest.fn(), +})); +const { hasExpressionValidationErrors } = jest.requireMock('../validation'); + +jest.mock('@kbn/text-based-editor', () => ({ + fetchFieldsFromESQL: jest.fn(), +})); +const { fetchFieldsFromESQL } = jest.requireMock('@kbn/text-based-editor'); + +const AppWrapper: React.FC<{ children: React.ReactElement }> = React.memo(({ children }) => ( + {children} +)); + +const dataMock = dataPluginMock.createStartContract(); +const dataViewMock = dataViewPluginMocks.createStartContract(); +const unifiedSearchMock = unifiedSearchPluginMock.createStartContract(); +const chartsStartMock = chartPluginMock.createStartContract(); + +const defaultEsqlQueryExpressionParams: EsQueryRuleParams = { + size: 100, + thresholdComparator: '>', + threshold: [0], + timeWindowSize: 15, + timeWindowUnit: 's', + index: ['test-index'], + timeField: '@timestamp', + aggType: 'count', + groupBy: 'all', + searchType: SearchType.esqlQuery, + esqlQuery: { esql: '' }, + excludeHitsFromPreviousRun: false, +}; + +describe('EsqlQueryRuleTypeExpression', () => { + beforeEach(() => { + jest.clearAllMocks(); + + hasExpressionValidationErrors.mockReturnValue(false); + }); + + it('should render EsqlQueryRuleTypeExpression with expected components', () => { + const result = render( + {}} + setRuleProperty={() => {}} + errors={{ esqlQuery: [], timeField: [], timeWindowSize: [] }} + data={dataMock} + dataViews={dataViewMock} + defaultActionGroupId="" + actionGroups={[]} + charts={chartsStartMock} + onChangeMetaData={() => {}} + />, + { + wrapper: AppWrapper, + } + ); + + expect(result.getByTestId('queryEsqlEditor')).toBeInTheDocument(); + expect(result.getByTestId('timeFieldSelect')).toBeInTheDocument(); + expect(result.getByTestId('timeWindowSizeNumber')).toBeInTheDocument(); + expect(result.getByTestId('timeWindowUnitSelect')).toBeInTheDocument(); + expect(result.queryByTestId('testQuerySuccess')).not.toBeInTheDocument(); + expect(result.queryByTestId('testQueryError')).not.toBeInTheDocument(); + }); + + test('should render Test Query button disabled if alert params are invalid', async () => { + hasExpressionValidationErrors.mockReturnValue(true); + const result = render( + {}} + setRuleProperty={() => {}} + errors={{ esqlQuery: [], timeField: [], timeWindowSize: [] }} + data={dataMock} + dataViews={dataViewMock} + defaultActionGroupId="" + actionGroups={[]} + charts={chartsStartMock} + onChangeMetaData={() => {}} + />, + { + wrapper: AppWrapper, + } + ); + + const button = result.getByTestId('testQuery'); + expect(button).toBeInTheDocument(); + expect(button).toBeDisabled(); + }); + + test('should show success message if Test Query is successful', async () => { + fetchFieldsFromESQL.mockResolvedValue({ + type: 'datatable', + columns: [ + { id: '@timestamp', name: '@timestamp', meta: { type: 'date' } }, + { id: 'ecs.version', name: 'ecs.version', meta: { type: 'string' } }, + { id: 'error.code', name: 'error.code', meta: { type: 'string' } }, + ], + rows: [ + { + '@timestamp': '2023-07-12T13:32:04.174Z', + 'ecs.version': '1.8.0', + 'error.code': null, + }, + ], + }); + const result = render( + {}} + setRuleProperty={() => {}} + errors={{ esqlQuery: [], timeField: [], timeWindowSize: [] }} + data={dataMock} + dataViews={dataViewMock} + defaultActionGroupId="" + actionGroups={[]} + charts={chartsStartMock} + onChangeMetaData={() => {}} + />, + { + wrapper: AppWrapper, + } + ); + + fireEvent.click(result.getByTestId('testQuery')); + await waitFor(() => expect(fetchFieldsFromESQL).toBeCalled()); + + expect(result.getByTestId('testQuerySuccess')).toBeInTheDocument(); + expect(result.getByText('Query matched 1 documents in the last 15s.')).toBeInTheDocument(); + expect(result.queryByTestId('testQueryError')).not.toBeInTheDocument(); + }); + + test('should show error message if Test Query is throws error', async () => { + fetchFieldsFromESQL.mockRejectedValue('Error getting test results.!'); + const result = render( + {}} + setRuleProperty={() => {}} + errors={{ esqlQuery: [], timeField: [], timeWindowSize: [] }} + data={dataMock} + dataViews={dataViewMock} + defaultActionGroupId="" + actionGroups={[]} + charts={chartsStartMock} + onChangeMetaData={() => {}} + />, + { + wrapper: AppWrapper, + } + ); + + fireEvent.click(result.getByTestId('testQuery')); + await waitFor(() => expect(fetchFieldsFromESQL).toBeCalled()); + + expect(result.queryByTestId('testQuerySuccess')).not.toBeInTheDocument(); + expect(result.getByTestId('testQueryError')).toBeInTheDocument(); + }); +}); diff --git a/x-pack/plugins/stack_alerts/public/rule_types/es_query/expression/esql_query_expression.tsx b/x-pack/plugins/stack_alerts/public/rule_types/es_query/expression/esql_query_expression.tsx new file mode 100644 index 0000000000000..5a26839a7b284 --- /dev/null +++ b/x-pack/plugins/stack_alerts/public/rule_types/es_query/expression/esql_query_expression.tsx @@ -0,0 +1,255 @@ +/* + * Copyright 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, { useState, Fragment, useEffect, useCallback } from 'react'; +import { get } from 'lodash'; +import { FormattedMessage } from '@kbn/i18n-react'; +import { + EuiFieldNumber, + EuiFlexGroup, + EuiFlexItem, + EuiFormRow, + EuiSelect, + EuiSpacer, + EuiTitle, +} from '@elastic/eui'; +import { getFields, RuleTypeParamsExpressionProps } from '@kbn/triggers-actions-ui-plugin/public'; +import { TextBasedLangEditor } from '@kbn/text-based-languages/public'; +import { fetchFieldsFromESQL } from '@kbn/text-based-editor'; +import { AggregateQuery, getIndexPatternFromESQLQuery } from '@kbn/es-query'; +import { parseDuration } from '@kbn/alerting-plugin/common'; +import { + firstFieldOption, + getTimeFieldOptions, + getTimeOptions, + parseAggregationResults, +} from '@kbn/triggers-actions-ui-plugin/public/common'; +import { EsQueryRuleParams, EsQueryRuleMetaData, SearchType } from '../types'; +import { DEFAULT_VALUES } from '../constants'; +import { useTriggerUiActionServices } from '../util'; +import { hasExpressionValidationErrors } from '../validation'; +import { TestQueryRow } from '../test_query_row'; +import { rowToDocument, toEsQueryHits, transformDatatableToEsqlTable } from '../../../../common'; + +export const EsqlQueryExpression: React.FC< + RuleTypeParamsExpressionProps, EsQueryRuleMetaData> +> = ({ ruleParams, setRuleParams, setRuleProperty, errors }) => { + const { expressions, http } = useTriggerUiActionServices(); + const { esqlQuery, timeWindowSize, timeWindowUnit, timeField } = ruleParams; + + const [currentRuleParams, setCurrentRuleParams] = useState< + EsQueryRuleParams + >({ + ...ruleParams, + timeWindowSize: timeWindowSize ?? DEFAULT_VALUES.TIME_WINDOW_SIZE, + timeWindowUnit: timeWindowUnit ?? DEFAULT_VALUES.TIME_WINDOW_UNIT, + // ESQL queries compare conditions within the ES query + // so only 'met' results are returned, therefore the threshold should always be 0 + threshold: [0], + thresholdComparator: DEFAULT_VALUES.THRESHOLD_COMPARATOR, + size: DEFAULT_VALUES.SIZE, + esqlQuery: esqlQuery ?? { esql: '' }, + aggType: DEFAULT_VALUES.AGGREGATION_TYPE, + groupBy: DEFAULT_VALUES.GROUP_BY, + termSize: DEFAULT_VALUES.TERM_SIZE, + searchType: SearchType.esqlQuery, + }); + const [query, setQuery] = useState({ esql: '' }); + const [timeFieldOptions, setTimeFieldOptions] = useState([firstFieldOption]); + const [detectTimestamp, setDetectTimestamp] = useState(false); + + const setParam = useCallback( + (paramField: string, paramValue: unknown) => { + setCurrentRuleParams((currentParams) => ({ + ...currentParams, + [paramField]: paramValue, + })); + setRuleParams(paramField, paramValue); + }, + [setRuleParams] + ); + + const setDefaultExpressionValues = async () => { + setRuleProperty('params', currentRuleParams); + setQuery(esqlQuery ?? { esql: '' }); + if (timeField) { + setTimeFieldOptions([firstFieldOption, { text: timeField, value: timeField }]); + } + }; + useEffect(() => { + setDefaultExpressionValues(); + // eslint-disable-next-line react-hooks/exhaustive-deps + }, []); + + const onTestQuery = useCallback(async () => { + const window = `${timeWindowSize}${timeWindowUnit}`; + const emptyResult = { + testResults: { results: [], truncated: false }, + isGrouped: true, + timeWindow: window, + }; + + if (hasExpressionValidationErrors(currentRuleParams)) { + return emptyResult; + } + const timeWindow = parseDuration(window); + const now = Date.now(); + const table = await fetchFieldsFromESQL(esqlQuery, expressions, { + from: new Date(now - timeWindow).toISOString(), + to: new Date(now).toISOString(), + }); + if (table) { + const esqlTable = transformDatatableToEsqlTable(table); + const hits = toEsQueryHits(esqlTable); + return { + testResults: parseAggregationResults({ + isCountAgg: true, + isGroupAgg: false, + esResult: { + took: 0, + timed_out: false, + _shards: { failed: 0, successful: 0, total: 0 }, + hits, + }, + }), + isGrouped: false, + timeWindow: window, + rawResults: { + cols: esqlTable.columns.map((col) => ({ + id: col.name, + })), + rows: esqlTable.values.slice(0, 5).map((row) => rowToDocument(esqlTable.columns, row)), + }, + }; + } + return emptyResult; + }, [timeWindowSize, timeWindowUnit, currentRuleParams, esqlQuery, expressions]); + + const refreshTimeFields = async (q: AggregateQuery) => { + let hasTimestamp = false; + const indexPattern: string = getIndexPatternFromESQLQuery(get(q, 'esql')); + const currentEsFields = await getFields(http, [indexPattern]); + const timeFields = getTimeFieldOptions(currentEsFields); + setTimeFieldOptions([firstFieldOption, ...timeFields]); + + const timestampField = timeFields.find((field) => field.value === '@timestamp'); + if (timestampField) { + setParam('timeField', timestampField.value); + hasTimestamp = true; + } + setDetectTimestamp(hasTimestamp); + }; + + return ( + + +
+ +
+
+ + + { + setQuery(q); + setParam('esqlQuery', q); + refreshTimeFields(q); + }} + expandCodeEditor={() => true} + isCodeEditorExpanded={true} + onTextLangQuerySubmit={() => {}} + detectTimestamp={detectTimestamp} + hideMinimizeButton={true} + hideRunQueryText={true} + /> + + + +
+ +
+
+ + 0 && timeField !== undefined} + error={errors.timeField} + > + 0 && timeField !== undefined} + fullWidth + name="timeField" + data-test-subj="timeFieldSelect" + value={timeField || ''} + onChange={(e) => { + setParam('timeField', e.target.value); + }} + /> + + + +
+ +
+
+ + + + 0} + error={errors.timeWindowSize} + > + 0} + min={0} + value={timeWindowSize || ''} + onChange={(e) => { + const { value } = e.target; + const timeWindowSizeVal = value !== '' ? parseInt(value, 10) : undefined; + setParam('timeWindowSize', timeWindowSizeVal); + }} + /> + + + + + { + setParam('timeWindowUnit', e.target.value); + }} + options={getTimeOptions(timeWindowSize ?? 1)} + /> + + + + + +
+ ); +}; diff --git a/x-pack/plugins/stack_alerts/public/rule_types/es_query/expression/expression.test.tsx b/x-pack/plugins/stack_alerts/public/rule_types/es_query/expression/expression.test.tsx index ecbfd306e1ead..09a4c3da9b5ec 100644 --- a/x-pack/plugins/stack_alerts/public/rule_types/es_query/expression/expression.test.tsx +++ b/x-pack/plugins/stack_alerts/public/rule_types/es_query/expression/expression.test.tsx @@ -23,7 +23,6 @@ import { EsQueryRuleTypeExpression } from './expression'; import { chartPluginMock } from '@kbn/charts-plugin/public/mocks'; import { Subject } from 'rxjs'; import { ISearchSource } from '@kbn/data-plugin/common'; -import { IUiSettingsClient } from '@kbn/core/public'; import { findTestSubject } from '@elastic/eui/lib/test'; import { KibanaContextProvider } from '@kbn/kibana-react-plugin/public'; import { act } from 'react-dom/test-utils'; @@ -75,6 +74,20 @@ const defaultSearchSourceRuleParams: EsQueryRuleParams aggType: 'count', }; +const defaultEsqlRuleParams: EsQueryRuleParams = { + size: 100, + thresholdComparator: '>', + threshold: [0], + timeWindowSize: 15, + timeWindowUnit: 's', + index: ['test-index'], + timeField: '@timestamp', + searchType: SearchType.esqlQuery, + esqlQuery: { esql: 'test' }, + excludeHitsFromPreviousRun: true, + aggType: 'count', +}; + const dataViewPluginMock = dataViewPluginMocks.createStartContract(); const chartsStartMock = chartPluginMock.createStartContract(); const unifiedSearchMock = unifiedSearchPluginMock.createStartContract(); @@ -82,7 +95,7 @@ const httpMock = httpServiceMock.createStartContract(); const docLinksMock = docLinksServiceMock.createStartContract(); export const uiSettingsMock = { get: jest.fn(), -} as unknown as IUiSettingsClient; +}; const mockSearchResult = new Subject(); const searchSourceFieldsMock = { @@ -150,7 +163,10 @@ dataMock.query.savedQueries.findSavedQueries = jest.fn(() => (httpMock.post as jest.Mock).mockImplementation(() => Promise.resolve({ fields: [] })); const Wrapper: React.FC<{ - ruleParams: EsQueryRuleParams | EsQueryRuleParams; + ruleParams: + | EsQueryRuleParams + | EsQueryRuleParams + | EsQueryRuleParams; metadata?: EsQueryRuleMetaData; }> = ({ ruleParams, metadata }) => { const [currentRuleParams, setCurrentRuleParams] = useState(ruleParams); @@ -192,7 +208,10 @@ const Wrapper: React.FC<{ }; const setup = ( - ruleParams: EsQueryRuleParams | EsQueryRuleParams, + ruleParams: + | EsQueryRuleParams + | EsQueryRuleParams + | EsQueryRuleParams, metadata?: EsQueryRuleMetaData ) => { return mountWithIntl( @@ -213,11 +232,28 @@ const setup = ( }; describe('EsQueryRuleTypeExpression', () => { + beforeEach(() => { + jest.clearAllMocks(); + + uiSettingsMock.get.mockReturnValue(true); + }); + test('should render options by default', async () => { const wrapper = setup({} as EsQueryRuleParams); expect(findTestSubject(wrapper, 'queryFormTypeChooserTitle').exists()).toBeTruthy(); expect(findTestSubject(wrapper, 'queryFormType_searchSource').exists()).toBeTruthy(); expect(findTestSubject(wrapper, 'queryFormType_esQuery').exists()).toBeTruthy(); + expect(findTestSubject(wrapper, 'queryFormType_esqlQuery').exists()).toBeTruthy(); + expect(findTestSubject(wrapper, 'queryFormTypeChooserCancel').exists()).toBeFalsy(); + }); + + test('should hide ESQL option when not enabled', async () => { + uiSettingsMock.get.mockReturnValueOnce(false); + const wrapper = setup({} as EsQueryRuleParams); + expect(findTestSubject(wrapper, 'queryFormTypeChooserTitle').exists()).toBeTruthy(); + expect(findTestSubject(wrapper, 'queryFormType_searchSource').exists()).toBeTruthy(); + expect(findTestSubject(wrapper, 'queryFormType_esQuery').exists()).toBeTruthy(); + expect(findTestSubject(wrapper, 'queryFormType_esqlQuery').exists()).toBeFalsy(); expect(findTestSubject(wrapper, 'queryFormTypeChooserCancel').exists()).toBeFalsy(); }); @@ -257,6 +293,23 @@ describe('EsQueryRuleTypeExpression', () => { expect(findTestSubject(wrapper, 'queryFormTypeChooserTitle').exists()).toBeTruthy(); }); + test('should switch to ESQL form type on selection and return back on cancel', async () => { + let wrapper = setup({} as EsQueryRuleParams); + await act(async () => { + findTestSubject(wrapper, 'queryFormType_esqlQuery').simulate('click'); + }); + wrapper = await wrapper.update(); + expect(findTestSubject(wrapper, 'queryFormTypeChooserTitle').exists()).toBeFalsy(); + expect(wrapper.exists('[data-test-subj="queryEsqlEditor"]')).toBeTruthy(); + + await act(async () => { + findTestSubject(wrapper, 'queryFormTypeChooserCancel').simulate('click'); + }); + wrapper = await wrapper.update(); + expect(wrapper.exists('[data-test-subj="queryEsqlEditor"]')).toBeFalsy(); + expect(findTestSubject(wrapper, 'queryFormTypeChooserTitle').exists()).toBeTruthy(); + }); + test('should render QueryDSL view without the form type chooser', async () => { let wrapper: ReactWrapper; await act(async () => { @@ -282,4 +335,19 @@ describe('EsQueryRuleTypeExpression', () => { expect(findTestSubject(wrapper!, 'queryFormTypeChooserCancel').exists()).toBeFalsy(); expect(findTestSubject(wrapper!, 'selectDataViewExpression').exists()).toBeTruthy(); }); + + test('should render ESQL view without the form type chooser', async () => { + let wrapper: ReactWrapper; + await act(async () => { + wrapper = setup(defaultEsqlRuleParams, { + adHocDataViewList: [], + isManagementPage: false, + }); + wrapper = await wrapper.update(); + }); + wrapper = await wrapper!.update(); + expect(findTestSubject(wrapper!, 'queryFormTypeChooserTitle').exists()).toBeFalsy(); + expect(findTestSubject(wrapper!, 'queryFormTypeChooserCancel').exists()).toBeFalsy(); + expect(wrapper.exists('[data-test-subj="queryEsqlEditor"]')).toBeTruthy(); + }); }); diff --git a/x-pack/plugins/stack_alerts/public/rule_types/es_query/expression/expression.tsx b/x-pack/plugins/stack_alerts/public/rule_types/es_query/expression/expression.tsx index 30045fee81a29..1653799a233df 100644 --- a/x-pack/plugins/stack_alerts/public/rule_types/es_query/expression/expression.tsx +++ b/x-pack/plugins/stack_alerts/public/rule_types/es_query/expression/expression.tsx @@ -15,8 +15,9 @@ import { EsQueryRuleParams, EsQueryRuleMetaData, SearchType } from '../types'; import { SearchSourceExpression, SearchSourceExpressionProps } from './search_source_expression'; import { EsQueryExpression } from './es_query_expression'; import { QueryFormTypeChooser } from './query_form_type_chooser'; -import { isSearchSourceRule } from '../util'; +import { isEsqlQueryRule, isSearchSourceRule } from '../util'; import { ALL_EXPRESSION_ERROR_KEYS } from '../constants'; +import { EsqlQueryExpression } from './esql_query_expression'; function areSearchSourceExpressionPropsEqual( prevProps: Readonly>, @@ -37,6 +38,7 @@ export const EsQueryRuleTypeExpression: React.FunctionComponent< > = (props) => { const { ruleParams, errors, setRuleProperty, setRuleParams } = props; const isSearchSource = isSearchSourceRule(ruleParams); + const isEsqlQuery = isEsqlQueryRule(ruleParams); // metadata provided only when open alert from Discover page const isManagementPage = props.metadata?.isManagementPage ?? true; @@ -95,10 +97,14 @@ export const EsQueryRuleTypeExpression: React.FunctionComponent< )} - {ruleParams.searchType && !isSearchSource && ( + {ruleParams.searchType && !isSearchSource && !isEsqlQuery && ( )} + {ruleParams.searchType && isEsqlQuery && ( + + )} + ); diff --git a/x-pack/plugins/stack_alerts/public/rule_types/es_query/expression/query_form_type_chooser.tsx b/x-pack/plugins/stack_alerts/public/rule_types/es_query/expression/query_form_type_chooser.tsx index bff6792bdda3f..a2d45c78de9c9 100644 --- a/x-pack/plugins/stack_alerts/public/rule_types/es_query/expression/query_form_type_chooser.tsx +++ b/x-pack/plugins/stack_alerts/public/rule_types/es_query/expression/query_form_type_chooser.tsx @@ -5,7 +5,7 @@ * 2.0. */ -import React from 'react'; +import React, { useMemo } from 'react'; import { EuiButtonIcon, EuiFlexGroup, @@ -19,39 +19,7 @@ import { import { FormattedMessage } from '@kbn/i18n-react'; import { i18n } from '@kbn/i18n'; import { SearchType } from '../types'; - -const FORM_TYPE_ITEMS: Array<{ formType: SearchType; label: string; description: string }> = [ - { - formType: SearchType.searchSource, - label: i18n.translate( - 'xpack.stackAlerts.esQuery.ui.selectQueryFormType.kqlOrLuceneFormTypeLabel', - { - defaultMessage: 'KQL or Lucene', - } - ), - description: i18n.translate( - 'xpack.stackAlerts.esQuery.ui.selectQueryFormType.kqlOrLuceneFormTypeDescription', - { - defaultMessage: 'Use KQL or Lucene to define a text-based query.', - } - ), - }, - { - formType: SearchType.esQuery, - label: i18n.translate( - 'xpack.stackAlerts.esQuery.ui.selectQueryFormType.queryDslFormTypeLabel', - { - defaultMessage: 'Query DSL', - } - ), - description: i18n.translate( - 'xpack.stackAlerts.esQuery.ui.selectQueryFormType.queryDslFormTypeDescription', - { - defaultMessage: 'Use the Elasticsearch Query DSL to define a query.', - } - ), - }, -]; +import { useTriggerUiActionServices } from '../util'; export interface QueryFormTypeProps { searchType: SearchType | null; @@ -62,8 +30,65 @@ export const QueryFormTypeChooser: React.FC = ({ searchType, onFormTypeSelect, }) => { + const { uiSettings } = useTriggerUiActionServices(); + const isEsqlEnabled = uiSettings?.get('discover:enableESQL'); + + const formTypeItems = useMemo(() => { + const items: Array<{ formType: SearchType; label: string; description: string }> = [ + { + formType: SearchType.searchSource, + label: i18n.translate( + 'xpack.stackAlerts.esQuery.ui.selectQueryFormType.kqlOrLuceneFormTypeLabel', + { + defaultMessage: 'KQL or Lucene', + } + ), + description: i18n.translate( + 'xpack.stackAlerts.esQuery.ui.selectQueryFormType.kqlOrLuceneFormTypeDescription', + { + defaultMessage: 'Use KQL or Lucene to define a text-based query.', + } + ), + }, + { + formType: SearchType.esQuery, + label: i18n.translate( + 'xpack.stackAlerts.esQuery.ui.selectQueryFormType.queryDslFormTypeLabel', + { + defaultMessage: 'Query DSL', + } + ), + description: i18n.translate( + 'xpack.stackAlerts.esQuery.ui.selectQueryFormType.queryDslFormTypeDescription', + { + defaultMessage: 'Use the Elasticsearch Query DSL to define a query.', + } + ), + }, + ]; + + if (isEsqlEnabled) { + items.push({ + formType: SearchType.esqlQuery, + label: i18n.translate( + 'xpack.stackAlerts.esQuery.ui.selectQueryFormType.esqlFormTypeLabel', + { + defaultMessage: 'ESQL', + } + ), + description: i18n.translate( + 'xpack.stackAlerts.esQuery.ui.selectQueryFormType.esqlFormTypeDescription', + { + defaultMessage: 'Use ESQL to define a text-based query.', + } + ), + }); + } + return items; + }, [isEsqlEnabled]); + if (searchType) { - const activeFormTypeItem = FORM_TYPE_ITEMS.find((item) => item.formType === searchType); + const activeFormTypeItem = formTypeItems.find((item) => item.formType === searchType); return ( <> @@ -107,7 +132,7 @@ export const QueryFormTypeChooser: React.FC = ({ - {FORM_TYPE_ITEMS.map((item) => ( + {formTypeItems.map((item) => ( Promise<{ @@ -27,14 +29,24 @@ export interface TestQueryRowProps { }>; copyQuery?: () => string; hasValidationErrors: boolean; + showTable?: boolean; } export const TestQueryRow: React.FC = ({ fetch, copyQuery, hasValidationErrors, + showTable, }) => { - const { onTestQuery, testQueryResult, testQueryError, testQueryLoading } = useTestQuery(fetch); + const { + onTestQuery, + testQueryResult, + testQueryError, + testQueryLoading, + testQueryRawResults, + testQueryAlerts, + } = useTestQuery(fetch); + const [copiedMessage, setCopiedMessage] = useState(null); return ( @@ -124,6 +136,12 @@ export const TestQueryRow: React.FC = ({ )} + {showTable && testQueryRawResults && ( + <> + + + + )} ); }; diff --git a/x-pack/plugins/stack_alerts/public/rule_types/es_query/test_query_row/test_query_row_table.test.tsx b/x-pack/plugins/stack_alerts/public/rule_types/es_query/test_query_row/test_query_row_table.test.tsx new file mode 100644 index 0000000000000..54b575be36f11 --- /dev/null +++ b/x-pack/plugins/stack_alerts/public/rule_types/es_query/test_query_row/test_query_row_table.test.tsx @@ -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 React from 'react'; +import { render } from '@testing-library/react'; +import { I18nProvider } from '@kbn/i18n-react'; +import { TestQueryRowTable } from './test_query_row_table'; + +const AppWrapper: React.FC<{ children: React.ReactElement }> = React.memo(({ children }) => ( + {children} +)); + +describe('TestQueryRow', () => { + it('should render the datagrid', () => { + const result = render( + , + { + wrapper: AppWrapper, + } + ); + + expect(result.getByTestId('test-query-row-datagrid')).toBeInTheDocument(); + expect(result.getAllByTestId('dataGridRowCell')).toHaveLength(2); + expect(result.queryByText('Alerts generated')).not.toBeInTheDocument(); + expect(result.queryAllByTestId('alert-badge')).toHaveLength(0); + }); + + it('should render the datagrid and alerts if provided', () => { + const result = render( + , + { + wrapper: AppWrapper, + } + ); + + expect(result.getByTestId('test-query-row-datagrid')).toBeInTheDocument(); + expect(result.getAllByTestId('dataGridRowCell')).toHaveLength(2); + expect(result.getByText('Alerts generated')).toBeInTheDocument(); + expect(result.getAllByTestId('alert-badge')).toHaveLength(2); + }); +}); diff --git a/x-pack/plugins/stack_alerts/public/rule_types/es_query/test_query_row/test_query_row_table.tsx b/x-pack/plugins/stack_alerts/public/rule_types/es_query/test_query_row/test_query_row_table.tsx new file mode 100644 index 0000000000000..504880ee8da43 --- /dev/null +++ b/x-pack/plugins/stack_alerts/public/rule_types/es_query/test_query_row/test_query_row_table.tsx @@ -0,0 +1,90 @@ +/* + * Copyright 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 { css } from '@emotion/react'; +import { + EuiDataGrid, + EuiPanel, + EuiDataGridColumn, + EuiFlexGroup, + EuiFlexItem, + EuiText, + EuiBadge, + EuiSpacer, +} from '@elastic/eui'; +import { i18n } from '@kbn/i18n'; + +const styles = { + grid: css` + .euiDataGridHeaderCell { + background: none; + } + .euiDataGridHeader .euiDataGridHeaderCell { + border-top: none; + } + `, +}; + +export interface TestQueryRowTableProps { + rawResults: { cols: EuiDataGridColumn[]; rows: Array> }; + alerts: string[] | null; +} + +export const TestQueryRowTable: React.FC = ({ rawResults, alerts }) => { + return ( + + c.id), + setVisibleColumns: () => {}, + }} + rowCount={rawResults.rows.length} + gridStyle={{ + border: 'horizontal', + rowHover: 'none', + }} + renderCellValue={({ rowIndex, columnId }) => rawResults.rows[rowIndex][columnId]} + pagination={{ + pageIndex: 0, + pageSize: 10, + onChangeItemsPerPage: () => {}, + onChangePage: () => {}, + }} + toolbarVisibility={false} + /> + + {alerts && ( + + + +
+ {i18n.translate('xpack.stackAlerts.esQuery.ui.testQueryAlerts', { + defaultMessage: 'Alerts generated', + })} +
+
+
+ {alerts.map((alert, index) => { + return ( + + + {alert} + + + ); + })} +
+ )} +
+ ); +}; diff --git a/x-pack/plugins/stack_alerts/public/rule_types/es_query/test_query_row/use_test_query.test.ts b/x-pack/plugins/stack_alerts/public/rule_types/es_query/test_query_row/use_test_query.test.ts index 2067bf816eff7..44c2a1cf55717 100644 --- a/x-pack/plugins/stack_alerts/public/rule_types/es_query/test_query_row/use_test_query.test.ts +++ b/x-pack/plugins/stack_alerts/public/rule_types/es_query/test_query_row/use_test_query.test.ts @@ -20,6 +20,10 @@ describe('useTestQuery', () => { }, isGrouped: false, timeWindow: '1s', + rawResults: { + cols: [{ id: 'ungrouped', name: 'ungrouped', field: 'ungrouped', actions: false }], + rows: [{ ungrouped: 'test' }], + }, }), }); await act(async () => { @@ -29,6 +33,11 @@ describe('useTestQuery', () => { expect(result.current.testQueryError).toBe(null); expect(result.current.testQueryResult).toContain('1s'); expect(result.current.testQueryResult).toContain('1 document'); + expect(result.current.testQueryRawResults).toEqual({ + cols: [{ id: 'ungrouped', name: 'ungrouped', field: 'ungrouped', actions: false }], + rows: [{ ungrouped: 'test' }], + }); + expect(result.current.testQueryAlerts).toEqual(['query matched']); }); test('returning a valid result for grouped result', async () => { @@ -44,6 +53,10 @@ describe('useTestQuery', () => { }, isGrouped: true, timeWindow: '1s', + rawResults: { + cols: [{ id: 'grouped', name: 'grouped', field: 'grouped', actions: false }], + rows: [{ grouped: 'test' }], + }, }), }); await act(async () => { @@ -55,6 +68,11 @@ describe('useTestQuery', () => { expect(result.current.testQueryResult).toContain( 'Grouped query matched 2 groups in the last 1s.' ); + expect(result.current.testQueryRawResults).toEqual({ + cols: [{ id: 'grouped', name: 'grouped', field: 'grouped', actions: false }], + rows: [{ grouped: 'test' }], + }); + expect(result.current.testQueryAlerts).toEqual(['a', 'b']); }); test('returning an error', async () => { @@ -68,5 +86,7 @@ describe('useTestQuery', () => { expect(result.current.testQueryLoading).toBe(false); expect(result.current.testQueryError).toContain(errorMsg); expect(result.current.testQueryResult).toBe(null); + expect(result.current.testQueryRawResults).toBe(null); + expect(result.current.testQueryAlerts).toBe(null); }); }); diff --git a/x-pack/plugins/stack_alerts/public/rule_types/es_query/test_query_row/use_test_query.ts b/x-pack/plugins/stack_alerts/public/rule_types/es_query/test_query_row/use_test_query.ts index 06f230bafdccb..bac58eb2f0f43 100644 --- a/x-pack/plugins/stack_alerts/public/rule_types/es_query/test_query_row/use_test_query.ts +++ b/x-pack/plugins/stack_alerts/public/rule_types/es_query/test_query_row/use_test_query.ts @@ -8,17 +8,22 @@ import { useState, useCallback, useEffect } from 'react'; import { i18n } from '@kbn/i18n'; import type { ParsedAggregationResults } from '@kbn/triggers-actions-ui-plugin/common'; +import { EuiDataGridColumn } from '@elastic/eui'; interface TestQueryResponse { result: string | null; error: string | null; isLoading: boolean; + rawResults: { cols: EuiDataGridColumn[]; rows: Array> } | null; + alerts: string[] | null; } const TEST_QUERY_INITIAL_RESPONSE: TestQueryResponse = { result: null, error: null, isLoading: false, + rawResults: null, + alerts: null, }; /** @@ -30,6 +35,7 @@ export function useTestQuery( testResults: ParsedAggregationResults; isGrouped: boolean; timeWindow: string; + rawResults?: { cols: EuiDataGridColumn[]; rows: Array> }; }> ) { const [testQueryResponse, setTestQueryResponse] = useState( @@ -46,10 +52,12 @@ export function useTestQuery( result: null, error: null, isLoading: true, + rawResults: null, + alerts: null, }); try { - const { testResults, isGrouped, timeWindow } = await fetch(); + const { testResults, isGrouped, timeWindow, rawResults } = await fetch(); if (isGrouped) { setTestQueryResponse({ @@ -62,6 +70,11 @@ export function useTestQuery( }), error: null, isLoading: false, + rawResults: rawResults ?? null, + alerts: + testResults.results.length > 0 + ? testResults.results.map((result) => result.group) + : null, }); } else { const ungroupedQueryResponse = @@ -73,6 +86,8 @@ export function useTestQuery( }), error: null, isLoading: false, + rawResults: rawResults ?? null, + alerts: ungroupedQueryResponse.count > 0 ? ['query matched'] : null, }); } } catch (err) { @@ -85,6 +100,8 @@ export function useTestQuery( values: { message: message ? `${err.message}: ${message}` : err.message }, }), isLoading: false, + rawResults: null, + alerts: null, }); } }, [fetch]); @@ -94,5 +111,7 @@ export function useTestQuery( testQueryResult: testQueryResponse.result, testQueryError: testQueryResponse.error, testQueryLoading: testQueryResponse.isLoading, + testQueryRawResults: testQueryResponse.rawResults, + testQueryAlerts: testQueryResponse.alerts, }; } diff --git a/x-pack/plugins/stack_alerts/public/rule_types/es_query/types.ts b/x-pack/plugins/stack_alerts/public/rule_types/es_query/types.ts index d517d23af52b3..c7a298ebce22a 100644 --- a/x-pack/plugins/stack_alerts/public/rule_types/es_query/types.ts +++ b/x-pack/plugins/stack_alerts/public/rule_types/es_query/types.ts @@ -9,10 +9,12 @@ import { RuleTypeParams } from '@kbn/alerting-plugin/common'; import { SerializedSearchSourceFields } from '@kbn/data-plugin/common'; import { EuiComboBoxOptionOption } from '@elastic/eui'; import type { DataView } from '@kbn/data-views-plugin/public'; +import { AggregateQuery } from '@kbn/es-query'; export enum SearchType { esQuery = 'esQuery', searchSource = 'searchSource', + esqlQuery = 'esqlQuery', } export interface CommonRuleParams { @@ -38,6 +40,8 @@ export interface EsQueryRuleMetaData { export type EsQueryRuleParams = T extends SearchType.searchSource ? CommonEsQueryRuleParams & OnlySearchSourceRuleParams + : T extends SearchType.esqlQuery + ? CommonEsQueryRuleParams & OnlyEsqlQueryRuleParams : CommonEsQueryRuleParams & OnlyEsQueryRuleParams; export interface OnlyEsQueryRuleParams { @@ -53,4 +57,10 @@ export interface OnlySearchSourceRuleParams { savedQueryId?: string; } +export interface OnlyEsqlQueryRuleParams { + searchType?: 'esqlQuery'; + esqlQuery: AggregateQuery; + timeField: string; +} + export type DataViewOption = EuiComboBoxOptionOption; diff --git a/x-pack/plugins/stack_alerts/public/rule_types/es_query/util.ts b/x-pack/plugins/stack_alerts/public/rule_types/es_query/util.ts index 5568924e845e4..7ca42220c3ebf 100644 --- a/x-pack/plugins/stack_alerts/public/rule_types/es_query/util.ts +++ b/x-pack/plugins/stack_alerts/public/rule_types/es_query/util.ts @@ -17,6 +17,12 @@ export const isSearchSourceRule = ( return ruleParams.searchType === 'searchSource'; }; +export const isEsqlQueryRule = ( + ruleParams: EsQueryRuleParams +): ruleParams is EsQueryRuleParams => { + return ruleParams.searchType === 'esqlQuery'; +}; + export const convertFieldSpecToFieldOption = (fieldSpec: FieldSpec[]): FieldOption[] => { return (fieldSpec ?? []) .filter((spec: FieldSpec) => spec.isMapped || spec.runtimeField) diff --git a/x-pack/plugins/stack_alerts/public/rule_types/es_query/validation.test.ts b/x-pack/plugins/stack_alerts/public/rule_types/es_query/validation.test.ts index 0b40110f60072..f43adeab3a3a8 100644 --- a/x-pack/plugins/stack_alerts/public/rule_types/es_query/validation.test.ts +++ b/x-pack/plugins/stack_alerts/public/rule_types/es_query/validation.test.ts @@ -278,4 +278,63 @@ describe('expression params validation', () => { expect(validateExpression(initialParams).errors.size.length).toBe(0); expect(hasExpressionValidationErrors(initialParams)).toBe(false); }); + + test('if esqlQuery property is not set should return proper error message', () => { + const initialParams = { + size: 100, + timeWindowSize: 1, + timeWindowUnit: 's', + threshold: [0], + timeField: '@timestamp', + searchType: SearchType.esqlQuery, + } as EsQueryRuleParams; + expect(validateExpression(initialParams).errors.esqlQuery.length).toBeGreaterThan(0); + expect(validateExpression(initialParams).errors.esqlQuery[0]).toBe(`ESQL query is required.`); + }); + + test('if esqlQuery timeField property is not defined should return proper error message', () => { + const initialParams = { + size: 100, + timeWindowSize: 1, + timeWindowUnit: 's', + threshold: [0], + esqlQuery: { esql: 'test' }, + searchType: SearchType.esqlQuery, + } as EsQueryRuleParams; + expect(validateExpression(initialParams).errors.timeField.length).toBeGreaterThan(0); + expect(validateExpression(initialParams).errors.timeField[0]).toBe('Time field is required.'); + }); + + test('if esqlQuery thresholdComparator property is not gt should return proper error message', () => { + const initialParams = { + size: 100, + timeWindowSize: 1, + timeWindowUnit: 's', + threshold: [0], + esqlQuery: { esql: 'test' }, + searchType: SearchType.esqlQuery, + thresholdComparator: '<', + timeField: '@timestamp', + } as EsQueryRuleParams; + expect(validateExpression(initialParams).errors.thresholdComparator.length).toBeGreaterThan(0); + expect(validateExpression(initialParams).errors.thresholdComparator[0]).toBe( + 'Threshold comparator is required to be greater than.' + ); + }); + + test('if esqlQuery threshold property is not 0 should return proper error message', () => { + const initialParams = { + size: 100, + timeWindowSize: 1, + timeWindowUnit: 's', + threshold: [8], + esqlQuery: { esql: 'test' }, + searchType: SearchType.esqlQuery, + timeField: '@timestamp', + } as EsQueryRuleParams; + expect(validateExpression(initialParams).errors.threshold0.length).toBeGreaterThan(0); + expect(validateExpression(initialParams).errors.threshold0[0]).toBe( + 'Threshold is required to be 0.' + ); + }); }); diff --git a/x-pack/plugins/stack_alerts/public/rule_types/es_query/validation.ts b/x-pack/plugins/stack_alerts/public/rule_types/es_query/validation.ts index 9e6eaeb7b6de0..7d7c34a76927c 100644 --- a/x-pack/plugins/stack_alerts/public/rule_types/es_query/validation.ts +++ b/x-pack/plugins/stack_alerts/public/rule_types/es_query/validation.ts @@ -12,11 +12,13 @@ import { builtInComparators, builtInAggregationTypes, builtInGroupByTypes, + COMPARATORS, } from '@kbn/triggers-actions-ui-plugin/public'; import { EsQueryRuleParams, SearchType } from './types'; -import { isSearchSourceRule } from './util'; +import { isEsqlQueryRule, isSearchSourceRule } from './util'; import { COMMON_EXPRESSION_ERRORS, + ONLY_ESQL_QUERY_EXPRESSION_ERRORS, ONLY_ES_QUERY_EXPRESSION_ERRORS, SEARCH_SOURCE_ONLY_EXPRESSION_ERRORS, } from './constants'; @@ -221,6 +223,46 @@ const validateEsQueryParams = (ruleParams: EsQueryRuleParams return errors; }; +const validateEsqlQueryParams = (ruleParams: EsQueryRuleParams) => { + const errors: typeof ONLY_ESQL_QUERY_EXPRESSION_ERRORS = defaultsDeep( + {}, + ONLY_ESQL_QUERY_EXPRESSION_ERRORS + ); + if (!ruleParams.esqlQuery) { + errors.esqlQuery.push( + i18n.translate('xpack.stackAlerts.esqlQuery.ui.validation.error.requiredQueryText', { + defaultMessage: 'ESQL query is required.', + }) + ); + } + if (!ruleParams.timeField) { + errors.timeField.push( + i18n.translate('xpack.stackAlerts.esqlQuery.ui.validation.error.requiredTimeFieldText', { + defaultMessage: 'Time field is required.', + }) + ); + } + if (ruleParams.thresholdComparator !== COMPARATORS.GREATER_THAN) { + errors.thresholdComparator.push( + i18n.translate( + 'xpack.stackAlerts.esqlQuery.ui.validation.error.requiredThresholdComparatorText', + { + defaultMessage: 'Threshold comparator is required to be greater than.', + } + ) + ); + } + if (ruleParams.threshold && ruleParams.threshold[0] !== 0) { + errors.threshold0.push( + i18n.translate('xpack.stackAlerts.esqlQuery.ui.validation.error.requiredThreshold0Text', { + defaultMessage: 'Threshold is required to be 0.', + }) + ); + } + + return errors; +}; + export const validateExpression = (ruleParams: EsQueryRuleParams): ValidationResult => { const validationResult = { errors: {} }; @@ -234,8 +276,7 @@ export const validateExpression = (ruleParams: EsQueryRuleParams): ValidationRes * It's important to report searchSource rule related errors only into errors.searchConfiguration prop. * For example errors.index is a mistake to report searchSource rule related errors. It will lead to issues. */ - const isSearchSource = isSearchSourceRule(ruleParams); - if (isSearchSource) { + if (isSearchSourceRule(ruleParams)) { validationResult.errors = { ...validationResult.errors, ...validateSearchSourceParams(ruleParams), @@ -243,6 +284,14 @@ export const validateExpression = (ruleParams: EsQueryRuleParams): ValidationRes return validationResult; } + if (isEsqlQueryRule(ruleParams)) { + validationResult.errors = { + ...validationResult.errors, + ...validateEsqlQueryParams(ruleParams), + }; + return validationResult; + } + const esQueryErrors = validateEsQueryParams(ruleParams as EsQueryRuleParams); validationResult.errors = { ...validationResult.errors, ...esQueryErrors }; return validationResult; diff --git a/x-pack/plugins/stack_alerts/server/rule_types/es_query/action_context.test.ts b/x-pack/plugins/stack_alerts/server/rule_types/es_query/action_context.test.ts index 9936e63aa6ed1..f9f4ab51b660f 100644 --- a/x-pack/plugins/stack_alerts/server/rule_types/es_query/action_context.test.ts +++ b/x-pack/plugins/stack_alerts/server/rule_types/es_query/action_context.test.ts @@ -167,6 +167,7 @@ describe('getContextConditionsDescription', () => { comparator: Comparator.GT, threshold: [10], aggType: 'count', + searchType: 'esQuery', }); expect(result).toBe(`Number of matching documents is greater than 10`); }); @@ -177,6 +178,7 @@ describe('getContextConditionsDescription', () => { threshold: [10], aggType: 'count', isRecovered: true, + searchType: 'esQuery', }); expect(result).toBe(`Number of matching documents is NOT greater than 10`); }); @@ -187,6 +189,7 @@ describe('getContextConditionsDescription', () => { threshold: [10, 20], aggType: 'count', isRecovered: true, + searchType: 'esQuery', }); expect(result).toBe(`Number of matching documents is NOT between 10 and 20`); }); @@ -197,6 +200,7 @@ describe('getContextConditionsDescription', () => { threshold: [10], aggType: 'count', group: 'host-1', + searchType: 'esQuery', }); expect(result).toBe(`Number of matching documents for group "host-1" is greater than 10`); }); @@ -208,6 +212,7 @@ describe('getContextConditionsDescription', () => { aggType: 'count', isRecovered: true, group: 'host-1', + searchType: 'esQuery', }); expect(result).toBe(`Number of matching documents for group "host-1" is NOT greater than 10`); }); @@ -218,6 +223,7 @@ describe('getContextConditionsDescription', () => { threshold: [10], aggType: 'min', aggField: 'numericField', + searchType: 'esQuery', }); expect(result).toBe( `Number of matching documents where min of numericField is greater than 10` @@ -231,6 +237,7 @@ describe('getContextConditionsDescription', () => { aggType: 'min', aggField: 'numericField', isRecovered: true, + searchType: 'esQuery', }); expect(result).toBe( `Number of matching documents where min of numericField is NOT greater than 10` @@ -244,6 +251,7 @@ describe('getContextConditionsDescription', () => { group: 'host-1', aggType: 'max', aggField: 'numericField', + searchType: 'esQuery', }); expect(result).toBe( `Number of matching documents for group "host-1" where max of numericField is greater than 10` @@ -258,9 +266,31 @@ describe('getContextConditionsDescription', () => { group: 'host-1', aggType: 'max', aggField: 'numericField', + searchType: 'esQuery', }); expect(result).toBe( `Number of matching documents for group "host-1" where max of numericField is NOT greater than 10` ); }); + + it('should return conditions correctly for ESQL search type', () => { + const result = getContextConditionsDescription({ + comparator: Comparator.GT, + threshold: [0], + aggType: 'count', + searchType: 'esqlQuery', + }); + expect(result).toBe(`Query matched documents`); + }); + + it('should return conditions correctly ESQL search type when isRecovered is true', () => { + const result = getContextConditionsDescription({ + comparator: Comparator.GT, + threshold: [0], + aggType: 'count', + isRecovered: true, + searchType: 'esqlQuery', + }); + expect(result).toBe(`Query did NOT match documents`); + }); }); diff --git a/x-pack/plugins/stack_alerts/server/rule_types/es_query/action_context.ts b/x-pack/plugins/stack_alerts/server/rule_types/es_query/action_context.ts index b84601314fbdd..5de1fc15c1120 100644 --- a/x-pack/plugins/stack_alerts/server/rule_types/es_query/action_context.ts +++ b/x-pack/plugins/stack_alerts/server/rule_types/es_query/action_context.ts @@ -11,6 +11,7 @@ import { AlertInstanceContext } from '@kbn/alerting-plugin/server'; import { EsQueryRuleParams } from './rule_type_params'; import { Comparator } from '../../../common/comparator_types'; import { getHumanReadableComparator } from '../../../common'; +import { isEsqlQueryRule } from './util'; // rule type context provided to actions export interface ActionContext extends EsQueryRuleActionContext { @@ -79,6 +80,7 @@ export function addMessages({ } interface GetContextConditionsDescriptionOpts { + searchType: 'searchSource' | 'esQuery' | 'esqlQuery'; comparator: Comparator; threshold: number[]; aggType: string; @@ -88,6 +90,7 @@ interface GetContextConditionsDescriptionOpts { } export function getContextConditionsDescription({ + searchType, comparator, threshold, aggType, @@ -95,15 +98,23 @@ export function getContextConditionsDescription({ isRecovered = false, group, }: GetContextConditionsDescriptionOpts) { - return i18n.translate('xpack.stackAlerts.esQuery.alertTypeContextConditionsDescription', { - defaultMessage: - 'Number of matching documents{groupCondition}{aggCondition} is {negation}{thresholdComparator} {threshold}', - values: { - aggCondition: aggType === 'count' ? '' : ` where ${aggType} of ${aggField}`, - groupCondition: group ? ` for group "${group}"` : '', - thresholdComparator: getHumanReadableComparator(comparator), - threshold: threshold.join(' and '), - negation: isRecovered ? 'NOT ' : '', - }, - }); + return isEsqlQueryRule(searchType) + ? i18n.translate('xpack.stackAlerts.esQuery.esqlAlertTypeContextConditionsDescription', { + defaultMessage: 'Query{negation} documents{groupCondition}', + values: { + groupCondition: group ? ` for group "${group}"` : '', + negation: isRecovered ? ' did NOT match' : ' matched', + }, + }) + : i18n.translate('xpack.stackAlerts.esQuery.alertTypeContextConditionsDescription', { + defaultMessage: + 'Number of matching documents{groupCondition}{aggCondition} is {negation}{thresholdComparator} {threshold}', + values: { + aggCondition: aggType === 'count' ? '' : ` where ${aggType} of ${aggField}`, + groupCondition: group ? ` for group "${group}"` : '', + thresholdComparator: getHumanReadableComparator(comparator), + threshold: threshold.join(' and '), + negation: isRecovered ? 'NOT ' : '', + }, + }); } diff --git a/x-pack/plugins/stack_alerts/server/rule_types/es_query/executor.test.ts b/x-pack/plugins/stack_alerts/server/rule_types/es_query/executor.test.ts index c33457fab43b1..43f84acf65e78 100644 --- a/x-pack/plugins/stack_alerts/server/rule_types/es_query/executor.test.ts +++ b/x-pack/plugins/stack_alerts/server/rule_types/es_query/executor.test.ts @@ -17,6 +17,7 @@ import { ISearchStartSearchSource } from '@kbn/data-plugin/common'; import { EsQueryRuleParams } from './rule_type_params'; import { FetchEsQueryOpts } from './lib/fetch_es_query'; import { FetchSearchSourceQueryOpts } from './lib/fetch_search_source_query'; +import { FetchEsqlQueryOpts } from './lib/fetch_esql_query'; const logger = loggerMock.create(); const scopedClusterClientMock = elasticsearchServiceMock.createScopedClusterClient(); @@ -44,6 +45,10 @@ jest.mock('./lib/fetch_search_source_query', () => ({ fetchSearchSourceQuery: (...args: [FetchSearchSourceQueryOpts]) => mockFetchSearchSourceQuery(...args), })); +const mockFetchEsqlQuery = jest.fn(); +jest.mock('./lib/fetch_esql_query', () => ({ + fetchEsqlQuery: (...args: [FetchEsqlQueryOpts]) => mockFetchEsqlQuery(...args), +})); const mockGetRecoveredAlerts = jest.fn().mockReturnValue([]); const mockSetLimitReached = jest.fn(); @@ -86,6 +91,8 @@ describe('es_query executor', () => { excludeHitsFromPreviousRun: true, aggType: 'count', groupBy: 'all', + searchConfiguration: {}, + esqlQuery: { esql: 'test-query' }, }; describe('executor', () => { @@ -171,12 +178,12 @@ describe('es_query executor', () => { }); await executor(coreMock, { ...defaultExecutorOptions, - params: { ...defaultProps, searchConfiguration: {}, searchType: 'searchSource' }, + params: { ...defaultProps, searchType: 'searchSource' }, }); expect(mockFetchSearchSourceQuery).toHaveBeenCalledWith({ ruleId: 'test-rule-id', alertLimit: 1000, - params: { ...defaultProps, searchConfiguration: {}, searchType: 'searchSource' }, + params: { ...defaultProps, searchType: 'searchSource' }, latestTimestamp: undefined, services: { searchSourceClient: searchSourceClientMock, @@ -188,6 +195,42 @@ describe('es_query executor', () => { expect(mockFetchEsQuery).not.toHaveBeenCalled(); }); + it('should call fetchEsqlQuery if searchType is esqlQuery', async () => { + mockFetchEsqlQuery.mockResolvedValueOnce({ + parsedResults: { + results: [ + { + group: 'all documents', + count: 491, + hits: [], + }, + ], + truncated: false, + }, + dateStart: new Date().toISOString(), + dateEnd: new Date().toISOString(), + }); + await executor(coreMock, { + ...defaultExecutorOptions, + params: { ...defaultProps, searchType: 'esqlQuery' }, + }); + expect(mockFetchEsqlQuery).toHaveBeenCalledWith({ + ruleId: 'test-rule-id', + alertLimit: 1000, + params: { ...defaultProps, searchType: 'esqlQuery' }, + services: { + scopedClusterClient: scopedClusterClientMock, + logger, + share: undefined, + dataViews: undefined, + }, + spacePrefix: '', + publicBaseUrl: 'https://localhost:5601', + }); + expect(mockFetchEsQuery).not.toHaveBeenCalled(); + expect(mockFetchSearchSourceQuery).not.toHaveBeenCalled(); + }); + it('should not create alert if compare function returns false for ungrouped alert', async () => { mockFetchEsQuery.mockResolvedValueOnce({ parsedResults: { @@ -455,6 +498,78 @@ describe('es_query executor', () => { expect(mockSetLimitReached).toHaveBeenCalledWith(false); }); + it('should create alert if there are hits for ESQL alert', async () => { + mockFetchEsqlQuery.mockResolvedValueOnce({ + parsedResults: { + results: [ + { + group: 'all documents', + count: 198, + hits: [], + }, + ], + truncated: false, + }, + dateStart: new Date().toISOString(), + dateEnd: new Date().toISOString(), + link: 'https://localhost:5601/app/management/insightsAndAlerting/triggersActions/rule/test-rule-id', + }); + await executor(coreMock, { + ...defaultExecutorOptions, + params: { + ...defaultProps, + searchType: 'esqlQuery', + threshold: [0], + thresholdComparator: '>=' as Comparator, + }, + }); + + expect(mockReport).toHaveBeenCalledTimes(1); + expect(mockReport).toHaveBeenNthCalledWith(1, { + actionGroup: 'query matched', + context: { + conditions: 'Query matched documents', + date: new Date(mockNow).toISOString(), + hits: [], + link: 'https://localhost:5601/app/management/insightsAndAlerting/triggersActions/rule/test-rule-id', + message: `rule 'test-rule-name' is active: + +- Value: 198 +- Conditions Met: Query matched documents over 5m +- Timestamp: ${new Date(mockNow).toISOString()} +- Link: https://localhost:5601/app/management/insightsAndAlerting/triggersActions/rule/test-rule-id`, + title: "rule 'test-rule-name' matched query", + value: 198, + }, + id: 'query matched', + payload: { + kibana: { + alert: { + evaluation: { + conditions: 'Query matched documents', + value: 198, + }, + reason: `rule 'test-rule-name' is active: + +- Value: 198 +- Conditions Met: Query matched documents over 5m +- Timestamp: ${new Date(mockNow).toISOString()} +- Link: https://localhost:5601/app/management/insightsAndAlerting/triggersActions/rule/test-rule-id`, + title: "rule 'test-rule-name' matched query", + url: 'https://localhost:5601/app/management/insightsAndAlerting/triggersActions/rule/test-rule-id', + }, + }, + }, + state: { + dateEnd: new Date(mockNow).toISOString(), + dateStart: new Date(mockNow).toISOString(), + latestTimestamp: undefined, + }, + }); + expect(mockSetLimitReached).toHaveBeenCalledTimes(1); + expect(mockSetLimitReached).toHaveBeenCalledWith(false); + }); + it('should set limit as reached if results are truncated', async () => { mockFetchEsQuery.mockResolvedValueOnce({ parsedResults: { @@ -670,6 +785,74 @@ describe('es_query executor', () => { - Value: 0 - Conditions Met: Number of matching documents for group \"host-2\" is NOT greater than or equal to 200 over 5m - Timestamp: ${new Date(mockNow).toISOString()} +- Link: https://localhost:5601/app/management/insightsAndAlerting/triggersActions/rule/test-rule-id`, + title: "rule 'test-rule-name' recovered", + url: 'https://localhost:5601/app/management/insightsAndAlerting/triggersActions/rule/test-rule-id', + }, + }, + }, + }); + expect(mockSetLimitReached).toHaveBeenCalledTimes(1); + expect(mockSetLimitReached).toHaveBeenCalledWith(false); + }); + + it('should correctly handle recovered alerts for ESQL alert', async () => { + mockGetRecoveredAlerts.mockReturnValueOnce([ + { + alert: { + getId: () => 'query matched', + }, + }, + ]); + mockFetchEsqlQuery.mockResolvedValueOnce({ + parsedResults: { + results: [], + truncated: false, + }, + dateStart: new Date().toISOString(), + dateEnd: new Date().toISOString(), + link: 'https://localhost:5601/app/management/insightsAndAlerting/triggersActions/rule/test-rule-id', + }); + await executor(coreMock, { + ...defaultExecutorOptions, + params: { + ...defaultProps, + searchType: 'esqlQuery', + threshold: [0], + thresholdComparator: '>=' as Comparator, + }, + }); + + expect(mockReport).not.toHaveBeenCalled(); + expect(mockSetAlertData).toHaveBeenCalledTimes(1); + expect(mockSetAlertData).toHaveBeenNthCalledWith(1, { + id: 'query matched', + context: { + conditions: 'Query did NOT match documents', + date: new Date(mockNow).toISOString(), + hits: [], + link: 'https://localhost:5601/app/management/insightsAndAlerting/triggersActions/rule/test-rule-id', + message: `rule 'test-rule-name' is recovered: + +- Value: 0 +- Conditions Met: Query did NOT match documents over 5m +- Timestamp: ${new Date(mockNow).toISOString()} +- Link: https://localhost:5601/app/management/insightsAndAlerting/triggersActions/rule/test-rule-id`, + title: "rule 'test-rule-name' recovered", + value: 0, + }, + payload: { + kibana: { + alert: { + evaluation: { + conditions: 'Query did NOT match documents', + value: 0, + }, + reason: `rule 'test-rule-name' is recovered: + +- Value: 0 +- Conditions Met: Query did NOT match documents over 5m +- Timestamp: ${new Date(mockNow).toISOString()} - Link: https://localhost:5601/app/management/insightsAndAlerting/triggersActions/rule/test-rule-id`, title: "rule 'test-rule-name' recovered", url: 'https://localhost:5601/app/management/insightsAndAlerting/triggersActions/rule/test-rule-id', diff --git a/x-pack/plugins/stack_alerts/server/rule_types/es_query/executor.ts b/x-pack/plugins/stack_alerts/server/rule_types/es_query/executor.ts index ae8ae99ba26a2..ac2f619228996 100644 --- a/x-pack/plugins/stack_alerts/server/rule_types/es_query/executor.ts +++ b/x-pack/plugins/stack_alerts/server/rule_types/es_query/executor.ts @@ -19,15 +19,22 @@ import { EsQueryRuleActionContext, getContextConditionsDescription, } from './action_context'; -import { ExecutorOptions, OnlyEsQueryRuleParams, OnlySearchSourceRuleParams } from './types'; +import { + ExecutorOptions, + OnlyEsQueryRuleParams, + OnlySearchSourceRuleParams, + OnlyEsqlQueryRuleParams, +} from './types'; import { ActionGroupId, ConditionMetAlertInstanceId } from './constants'; import { fetchEsQuery } from './lib/fetch_es_query'; import { EsQueryRuleParams } from './rule_type_params'; import { fetchSearchSourceQuery } from './lib/fetch_search_source_query'; -import { isEsQueryRule } from './util'; +import { isEsqlQueryRule, isSearchSourceRule } from './util'; +import { fetchEsqlQuery } from './lib/fetch_esql_query'; export async function executor(core: CoreSetup, options: ExecutorOptions) { - const esQueryRule = isEsQueryRule(options.params.searchType); + const searchSourceRule = isSearchSourceRule(options.params.searchType); + const esqlQueryRule = isEsqlQueryRule(options.params.searchType); const { rule: { id: ruleId, name }, services, @@ -54,34 +61,47 @@ export async function executor(core: CoreSetup, options: ExecutorOptions = {}; for (const result of parsedResults.results) { const alertId = result.group; @@ -105,6 +125,7 @@ export async function executor(core: CoreSetup, options: ExecutorOptions { + const id = 'test-id'; + const { + type, + version, + attributes: { timeFieldName, fields, title }, + } = stubbedSavedObjectIndexPattern(id); + + return new DataView({ + spec: { id, type, version, timeFieldName, fields: JSON.parse(fields), title }, + fieldFormats: fieldFormatsMock, + shortDotsEnable: false, + metaFields: ['_id', '_type', '_score'], + }); +}; + +const defaultParams: OnlyEsqlQueryRuleParams = { + size: 100, + timeWindowSize: 5, + timeWindowUnit: 'm', + thresholdComparator: Comparator.GT, + threshold: [0], + esqlQuery: { esql: 'from test' }, + excludeHitsFromPreviousRun: false, + searchType: 'esqlQuery', + aggType: 'count', + groupBy: 'all', + timeField: 'time', +}; + +describe('fetchEsqlQuery', () => { + describe('getEsqlQuery', () => { + const dataViewMock = createDataView(); + afterAll(() => { + jest.resetAllMocks(); + }); + + const fakeNow = new Date('2020-02-09T23:15:41.941Z'); + + beforeAll(() => { + jest.resetAllMocks(); + global.Date.now = jest.fn(() => fakeNow.getTime()); + }); + + it('should generate the correct query', async () => { + const params = defaultParams; + const { query, dateStart, dateEnd } = getEsqlQuery(dataViewMock, params, undefined); + + expect(query).toMatchInlineSnapshot(` + Object { + "filter": Object { + "bool": Object { + "filter": Array [ + Object { + "range": Object { + "time": Object { + "format": "strict_date_optional_time", + "gt": "2020-02-09T23:10:41.941Z", + "lte": "2020-02-09T23:15:41.941Z", + }, + }, + }, + ], + }, + }, + "query": "from test", + } + `); + expect(dateStart).toMatch('2020-02-09T23:10:41.941Z'); + expect(dateEnd).toMatch('2020-02-09T23:15:41.941Z'); + }); + + it('should generate the correct query with the alertLimit', async () => { + const params = defaultParams; + const { query, dateStart, dateEnd } = getEsqlQuery(dataViewMock, params, 100); + + expect(query).toMatchInlineSnapshot(` + Object { + "filter": Object { + "bool": Object { + "filter": Array [ + Object { + "range": Object { + "time": Object { + "format": "strict_date_optional_time", + "gt": "2020-02-09T23:10:41.941Z", + "lte": "2020-02-09T23:15:41.941Z", + }, + }, + }, + ], + }, + }, + "query": "from test | limit 100", + } + `); + expect(dateStart).toMatch('2020-02-09T23:10:41.941Z'); + expect(dateEnd).toMatch('2020-02-09T23:15:41.941Z'); + }); + }); +}); diff --git a/x-pack/plugins/stack_alerts/server/rule_types/es_query/lib/fetch_esql_query.ts b/x-pack/plugins/stack_alerts/server/rule_types/es_query/lib/fetch_esql_query.ts new file mode 100644 index 0000000000000..07192254ca34f --- /dev/null +++ b/x-pack/plugins/stack_alerts/server/rule_types/es_query/lib/fetch_esql_query.ts @@ -0,0 +1,111 @@ +/* + * Copyright 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 { DataView, DataViewsContract, getTime } from '@kbn/data-plugin/common'; +import { parseAggregationResults } from '@kbn/triggers-actions-ui-plugin/common'; +import { SharePluginStart } from '@kbn/share-plugin/server'; +import { IScopedClusterClient, Logger } from '@kbn/core/server'; +import { OnlyEsqlQueryRuleParams } from '../types'; +import { EsqlTable, toEsQueryHits } from '../../../../common'; + +export interface FetchEsqlQueryOpts { + ruleId: string; + alertLimit: number | undefined; + params: OnlyEsqlQueryRuleParams; + spacePrefix: string; + publicBaseUrl: string; + services: { + logger: Logger; + scopedClusterClient: IScopedClusterClient; + share: SharePluginStart; + dataViews: DataViewsContract; + }; +} + +export async function fetchEsqlQuery({ + ruleId, + alertLimit, + params, + services, + spacePrefix, + publicBaseUrl, +}: FetchEsqlQueryOpts) { + const { logger, scopedClusterClient, dataViews } = services; + const esClient = scopedClusterClient.asCurrentUser; + const dataView = await dataViews.create({ + timeFieldName: params.timeField, + }); + + const { query, dateStart, dateEnd } = getEsqlQuery(dataView, params, alertLimit); + + logger.debug(`ESQL query rule (${ruleId}) query: ${JSON.stringify(query)}`); + + const response = await esClient.transport.request({ + method: 'POST', + path: '/_esql', + body: query, + }); + + const link = `${publicBaseUrl}${spacePrefix}/app/management/insightsAndAlerting/triggersActions/rule/${ruleId}`; + + return { + link, + numMatches: Number(response.values.length), + parsedResults: parseAggregationResults({ + isCountAgg: true, + isGroupAgg: false, + esResult: { + took: 0, + timed_out: false, + _shards: { failed: 0, successful: 0, total: 0 }, + hits: toEsQueryHits(response), + }, + resultLimit: alertLimit, + }), + dateStart, + dateEnd, + }; +} + +export const getEsqlQuery = ( + dataView: DataView, + params: OnlyEsqlQueryRuleParams, + alertLimit: number | undefined +) => { + const timeRange = { + from: `now-${params.timeWindowSize}${params.timeWindowUnit}`, + to: 'now', + }; + const timerangeFilter = getTime(dataView, timeRange); + const dateStart = timerangeFilter?.query.range[params.timeField].gte; + const dateEnd = timerangeFilter?.query.range[params.timeField].lte; + const rangeFilter: unknown[] = [ + { + range: { + [params.timeField]: { + lte: dateEnd, + gt: dateStart, + format: 'strict_date_optional_time', + }, + }, + }, + ]; + + const query = { + query: alertLimit ? `${params.esqlQuery.esql} | limit ${alertLimit}` : params.esqlQuery.esql, + filter: { + bool: { + filter: rangeFilter, + }, + }, + }; + return { + query, + dateStart, + dateEnd, + }; +}; diff --git a/x-pack/plugins/stack_alerts/server/rule_types/es_query/rule_type.test.ts b/x-pack/plugins/stack_alerts/server/rule_types/es_query/rule_type.test.ts index 199aa47240c54..6adb6e092d56f 100644 --- a/x-pack/plugins/stack_alerts/server/rule_types/es_query/rule_type.test.ts +++ b/x-pack/plugins/stack_alerts/server/rule_types/es_query/rule_type.test.ts @@ -19,7 +19,11 @@ import type { ESSearchResponse, ESSearchRequest } from '@kbn/es-types'; import { elasticsearchClientMock } from '@kbn/core-elasticsearch-client-server-mocks'; import { coreMock } from '@kbn/core/server/mocks'; import { ActionGroupId, ConditionMetAlertInstanceId } from './constants'; -import { OnlyEsQueryRuleParams, OnlySearchSourceRuleParams } from './types'; +import { + OnlyEsqlQueryRuleParams, + OnlyEsQueryRuleParams, + OnlySearchSourceRuleParams, +} from './types'; import { searchSourceInstanceMock } from '@kbn/data-plugin/common/search/search_source/mocks'; import { Comparator } from '../../../common/comparator_types'; import { DEFAULT_FLAPPING_SETTINGS } from '@kbn/alerting-plugin/common/rules_settings'; @@ -108,6 +112,10 @@ describe('ruleType', () => { "description": "The indices the rule queries.", "name": "index", }, + Object { + "description": "ESQL query field used to fetch data from Elasticsearch.", + "name": "esqlQuery", + }, ], } `); @@ -596,10 +604,6 @@ describe('ruleType', () => { groupBy: 'all', }; - afterAll(() => { - jest.resetAllMocks(); - }); - it('validator succeeds with valid search source params', async () => { expect(ruleType.validate.params.validate(defaultParams)).toBeTruthy(); }); @@ -710,6 +714,144 @@ describe('ruleType', () => { ); }); }); + + describe('ESQL query', () => { + const dataViewMock = { + id: 'test-id', + title: 'test-title', + timeFieldName: 'time-field', + fields: [ + { + name: 'message', + type: 'string', + displayName: 'message', + scripted: false, + filterable: false, + aggregatable: false, + }, + { + name: 'timestamp', + type: 'date', + displayName: 'timestamp', + scripted: false, + filterable: false, + aggregatable: false, + }, + ], + toSpec: () => { + return { id: 'test-id', title: 'test-title', timeFieldName: 'timestamp', fields: [] }; + }, + }; + const defaultParams: OnlyEsqlQueryRuleParams = { + size: 100, + timeWindowSize: 5, + timeWindowUnit: 'm', + thresholdComparator: Comparator.GT, + threshold: [0], + esqlQuery: { esql: 'test' }, + timeField: 'timestamp', + searchType: 'esqlQuery', + excludeHitsFromPreviousRun: true, + aggType: 'count', + groupBy: 'all', + }; + + it('validator succeeds with valid ESQL query params', async () => { + expect(ruleType.validate.params.validate(defaultParams)).toBeTruthy(); + }); + + it('validator fails with invalid ESQL query params - esQuery provided', async () => { + const paramsSchema = ruleType.validate.params; + const params: Partial> = { + size: 100, + timeWindowSize: 5, + timeWindowUnit: 'm', + thresholdComparator: Comparator.LT, + threshold: [0], + esQuery: '', + searchType: 'esqlQuery', + aggType: 'count', + groupBy: 'all', + }; + + expect(() => paramsSchema.validate(params)).toThrowErrorMatchingInlineSnapshot( + `"[esQuery]: a value wasn't expected to be present"` + ); + }); + + it('rule executor handles no documents returned by ES', async () => { + const params = defaultParams; + const ruleServices: RuleExecutorServicesMock = alertsMock.createRuleExecutorServices(); + + (ruleServices.dataViews.create as jest.Mock).mockResolvedValueOnce({ + ...dataViewMock.toSpec(), + toSpec: () => dataViewMock.toSpec(), + }); + + const searchResult = { + columns: [ + { name: 'timestamp', type: 'date' }, + { name: 'message', type: 'keyword' }, + ], + values: [], + }; + ruleServices.scopedClusterClient.asCurrentUser.transport.request.mockResolvedValueOnce( + searchResult + ); + + await invokeExecutor({ params, ruleServices }); + expect(ruleServices.alertsClient.report).not.toHaveBeenCalled(); + }); + + it('rule executor schedule actions when condition met', async () => { + const params = defaultParams; + const ruleServices: RuleExecutorServicesMock = alertsMock.createRuleExecutorServices(); + + (ruleServices.dataViews.create as jest.Mock).mockResolvedValueOnce({ + ...dataViewMock.toSpec(), + toSpec: () => dataViewMock.toSpec(), + }); + + const searchResult = { + columns: [ + { name: 'timestamp', type: 'date' }, + { name: 'message', type: 'keyword' }, + ], + values: [ + ['timestamp', 'message'], + ['timestamp', 'message'], + ['timestamp', 'message'], + ], + }; + ruleServices.scopedClusterClient.asCurrentUser.transport.request.mockResolvedValueOnce( + searchResult + ); + + await invokeExecutor({ params, ruleServices }); + + expect(ruleServices.alertsClient.report).toHaveBeenCalledTimes(1); + + expect(ruleServices.alertsClient.report).toHaveBeenCalledWith( + expect.objectContaining({ + actionGroup: 'query matched', + id: 'query matched', + payload: expect.objectContaining({ + kibana: { + alert: { + url: expect.any(String), + reason: expect.any(String), + title: "rule 'rule-name' matched query", + evaluation: { + conditions: 'Query matched documents', + value: 3, + }, + }, + }, + }), + }) + ); + }); + }); }); function generateResults( @@ -756,7 +898,7 @@ async function invokeExecutor({ ruleServices, state, }: { - params: OnlySearchSourceRuleParams | OnlyEsQueryRuleParams; + params: OnlySearchSourceRuleParams | OnlyEsQueryRuleParams | OnlyEsqlQueryRuleParams; ruleServices: RuleExecutorServicesMock; state?: EsQueryRuleState; }) { diff --git a/x-pack/plugins/stack_alerts/server/rule_types/es_query/rule_type.ts b/x-pack/plugins/stack_alerts/server/rule_types/es_query/rule_type.ts index 01d6ee1497b3c..eabe7bf346669 100644 --- a/x-pack/plugins/stack_alerts/server/rule_types/es_query/rule_type.ts +++ b/x-pack/plugins/stack_alerts/server/rule_types/es_query/rule_type.ts @@ -25,7 +25,7 @@ import { STACK_ALERTS_FEATURE_ID } from '../../../common'; import { ExecutorOptions } from './types'; import { ActionGroupId, ES_QUERY_ID } from './constants'; import { executor } from './executor'; -import { isEsQueryRule } from './util'; +import { isSearchSourceRule } from './util'; export function getRuleType( core: CoreSetup @@ -134,6 +134,13 @@ export function getRuleType( } ); + const actionVariableEsqlQueryLabel = i18n.translate( + 'xpack.stackAlerts.esQuery.actionVariableContextEsqlQueryLabel', + { + defaultMessage: 'ESQL query field used to fetch data from Elasticsearch.', + } + ); + const actionVariableContextLinkLabel = i18n.translate( 'xpack.stackAlerts.esQuery.actionVariableContextLinkLabel', { @@ -179,25 +186,27 @@ export function getRuleType( { name: 'searchConfiguration', description: actionVariableSearchConfigurationLabel }, { name: 'esQuery', description: actionVariableContextQueryLabel }, { name: 'index', description: actionVariableContextIndexLabel }, + { name: 'esqlQuery', description: actionVariableEsqlQueryLabel }, ], }, useSavedObjectReferences: { extractReferences: (params) => { - if (isEsQueryRule(params.searchType)) { - return { params: params as EsQueryRuleParamsExtractedParams, references: [] }; + if (isSearchSourceRule(params.searchType)) { + const [searchConfiguration, references] = extractReferences(params.searchConfiguration); + const newParams = { ...params, searchConfiguration } as EsQueryRuleParamsExtractedParams; + return { params: newParams, references }; } - const [searchConfiguration, references] = extractReferences(params.searchConfiguration); - const newParams = { ...params, searchConfiguration } as EsQueryRuleParamsExtractedParams; - return { params: newParams, references }; + + return { params: params as EsQueryRuleParamsExtractedParams, references: [] }; }, injectReferences: (params, references) => { - if (isEsQueryRule(params.searchType)) { - return params; + if (isSearchSourceRule(params.searchType)) { + return { + ...params, + searchConfiguration: injectReferences(params.searchConfiguration, references), + }; } - return { - ...params, - searchConfiguration: injectReferences(params.searchConfiguration, references), - }; + return params; }, }, minimumLicenseRequired: 'basic', diff --git a/x-pack/plugins/stack_alerts/server/rule_types/es_query/rule_type_params.ts b/x-pack/plugins/stack_alerts/server/rule_types/es_query/rule_type_params.ts index b9380eeafe304..1897ebad6c1ee 100644 --- a/x-pack/plugins/stack_alerts/server/rule_types/es_query/rule_type_params.ts +++ b/x-pack/plugins/stack_alerts/server/rule_types/es_query/rule_type_params.ts @@ -18,6 +18,7 @@ import { SerializedSearchSourceFields } from '@kbn/data-plugin/common'; import { ComparatorFnNames } from '../../../common'; import { Comparator } from '../../../common/comparator_types'; import { getComparatorSchemaType } from '../lib/comparator'; +import { isEsqlQueryRule, isSearchSourceRule } from './util'; export const ES_QUERY_MAX_HITS_PER_EXECUTION = 10000; @@ -50,9 +51,12 @@ const EsQueryRuleParamsSchemaProperties = { termField: schema.maybe(schema.string({ minLength: 1 })), // limit on number of groups returned termSize: schema.maybe(schema.number({ min: 1 })), - searchType: schema.oneOf([schema.literal('searchSource'), schema.literal('esQuery')], { - defaultValue: 'esQuery', - }), + searchType: schema.oneOf( + [schema.literal('searchSource'), schema.literal('esQuery'), schema.literal('esqlQuery')], + { + defaultValue: 'esQuery', + } + ), timeField: schema.conditional( schema.siblingRef('searchType'), schema.literal('esQuery'), @@ -79,6 +83,13 @@ const EsQueryRuleParamsSchemaProperties = { schema.arrayOf(schema.string({ minLength: 1 }), { minSize: 1 }), schema.never() ), + // esqlQuery rule params only + esqlQuery: schema.conditional( + schema.siblingRef('searchType'), + schema.literal('esqlQuery'), + schema.object({ esql: schema.string({ minLength: 1 }) }), + schema.never() + ), }; export const EsQueryRuleParamsSchema = schema.object(EsQueryRuleParamsSchemaProperties, { @@ -142,7 +153,7 @@ function validateParams(anyParams: unknown): string | undefined { } } - if (searchType === 'searchSource') { + if (isSearchSourceRule(searchType) || isEsqlQueryRule(searchType)) { return; } diff --git a/x-pack/plugins/stack_alerts/server/rule_types/es_query/types.ts b/x-pack/plugins/stack_alerts/server/rule_types/es_query/types.ts index b20f52f03ebe5..5f3ec1ba5e240 100644 --- a/x-pack/plugins/stack_alerts/server/rule_types/es_query/types.ts +++ b/x-pack/plugins/stack_alerts/server/rule_types/es_query/types.ts @@ -11,15 +11,26 @@ import { ActionContext } from './action_context'; import { EsQueryRuleParams, EsQueryRuleState } from './rule_type_params'; import { ActionGroupId } from './constants'; -export type OnlyEsQueryRuleParams = Omit & { +export type OnlyEsQueryRuleParams = Omit & { searchType: 'esQuery'; timeField: string; }; -export type OnlySearchSourceRuleParams = Omit & { +export type OnlySearchSourceRuleParams = Omit< + EsQueryRuleParams, + 'esQuery' | 'index' | 'esqlQuery' +> & { searchType: 'searchSource'; }; +export type OnlyEsqlQueryRuleParams = Omit< + EsQueryRuleParams, + 'esQuery' | 'index' | 'searchConfiguration' +> & { + searchType: 'esqlQuery'; + timeField: string; +}; + export type ExecutorOptions

= RuleExecutorOptions< P, EsQueryRuleState, diff --git a/x-pack/plugins/stack_alerts/server/rule_types/es_query/util.ts b/x-pack/plugins/stack_alerts/server/rule_types/es_query/util.ts index 064a7f64b4c32..d10218fea7d4f 100644 --- a/x-pack/plugins/stack_alerts/server/rule_types/es_query/util.ts +++ b/x-pack/plugins/stack_alerts/server/rule_types/es_query/util.ts @@ -8,5 +8,13 @@ import { EsQueryRuleParams } from './rule_type_params'; export function isEsQueryRule(searchType: EsQueryRuleParams['searchType']) { - return searchType !== 'searchSource'; + return searchType === 'esQuery'; +} + +export function isSearchSourceRule(searchType: EsQueryRuleParams['searchType']) { + return searchType === 'searchSource'; +} + +export function isEsqlQueryRule(searchType: EsQueryRuleParams['searchType']) { + return searchType === 'esqlQuery'; } diff --git a/x-pack/plugins/stack_alerts/tsconfig.json b/x-pack/plugins/stack_alerts/tsconfig.json index 207e883aa8902..08a4f0ca99e9c 100644 --- a/x-pack/plugins/stack_alerts/tsconfig.json +++ b/x-pack/plugins/stack_alerts/tsconfig.json @@ -44,6 +44,9 @@ "@kbn/discover-plugin", "@kbn/rule-data-utils", "@kbn/alerts-as-data-utils", + "@kbn/text-based-languages", + "@kbn/text-based-editor", + "@kbn/expressions-plugin", ], "exclude": [ "target/**/*", diff --git a/x-pack/plugins/stack_connectors/server/connector_types/es_index/index.test.ts b/x-pack/plugins/stack_connectors/server/connector_types/es_index/index.test.ts index d2961d4725d39..900f7cd334241 100644 --- a/x-pack/plugins/stack_connectors/server/connector_types/es_index/index.test.ts +++ b/x-pack/plugins/stack_connectors/server/connector_types/es_index/index.test.ts @@ -609,6 +609,21 @@ describe('execute()', () => { took: 0, errors: true, items: [ + { + create: { + _index: 'indexme', + _id: '7buTjHQB0SuNSiS9Hayt', + status: 400, + error: { + type: 'document_parsing_exception', + reason: `[1:10] failed to parse field [bytes] of type [long] in document with id '39XQLIoB8kAjguvyIMeJ'. Preview of field's value: 'foo'`, + caused_by: { + type: 'illegal_argument_exception', + reason: `For input string: \"foo\"`, + }, + }, + }, + }, { index: { _index: 'indexme', @@ -633,7 +648,175 @@ describe('execute()', () => { config, secrets, params, - services, + services: { ...services, scopedClusterClient }, + configurationUtilities, + logger: mockedLogger, + }) + ).toMatchInlineSnapshot(` + Object { + "actionId": "some-id", + "message": "error indexing documents", + "serviceMessage": "[1:10] failed to parse field [bytes] of type [long] in document with id '39XQLIoB8kAjguvyIMeJ'. Preview of field's value: 'foo';failed to parse (For input string: \\"foo\\";field name cannot be an empty string)", + "status": "error", + } + `); + }); + + test('resolves with an error when an error occurs in the indexing operation - malformed response', async () => { + const secrets = {}; + // minimal params + const config = { index: 'index-value', refresh: false, executionTimeField: null }; + const params = { + documents: [{ '': 'bob' }], + indexOverride: null, + }; + + const actionId = 'some-id'; + const scopedClusterClient = elasticsearchClientMock + .createClusterClient() + .asScoped().asCurrentUser; + // @ts-expect-error + scopedClusterClient.bulk.mockResponse({ + took: 0, + errors: true, + }); + + expect( + await connectorType.executor({ + actionId, + config, + secrets, + params, + services: { ...services, scopedClusterClient }, + configurationUtilities, + logger: mockedLogger, + }) + ).toMatchInlineSnapshot(` + Object { + "actionId": "some-id", + "message": "error indexing documents", + "serviceMessage": "Indexing error but no reason returned.", + "status": "error", + } + `); + }); + + test('resolves with an error when an error occurs in the indexing operation - malformed error response', async () => { + const secrets = {}; + // minimal params + const config = { index: 'index-value', refresh: false, executionTimeField: null }; + const params = { + documents: [{ '': 'bob' }], + indexOverride: null, + }; + + const actionId = 'some-id'; + const scopedClusterClient = elasticsearchClientMock + .createClusterClient() + .asScoped().asCurrentUser; + scopedClusterClient.bulk.mockResponse({ + took: 0, + errors: true, + items: [ + { + create: { + _index: 'indexme', + _id: '7buTjHQB0SuNSiS9Hayt', + status: 400, + error: { + type: 'document_parsing_exception', + reason: `[1:10] failed to parse field [bytes] of type [long] in document with id '39XQLIoB8kAjguvyIMeJ'. Preview of field's value: 'foo'`, + caused_by: { + type: 'illegal_argument_exception', + reason: `For input string: \"foo\"`, + }, + }, + }, + }, + { + index: { + _index: 'indexme', + _id: '7buTjHQB0SuNSiS9Hayt', + status: 400, + }, + }, + ], + }); + + expect( + await connectorType.executor({ + actionId, + config, + secrets, + params, + services: { ...services, scopedClusterClient }, + configurationUtilities, + logger: mockedLogger, + }) + ).toMatchInlineSnapshot(` + Object { + "actionId": "some-id", + "message": "error indexing documents", + "serviceMessage": "[1:10] failed to parse field [bytes] of type [long] in document with id '39XQLIoB8kAjguvyIMeJ'. Preview of field's value: 'foo' (For input string: \\"foo\\")", + "status": "error", + } + `); + }); + + test('resolves with an error when an error occurs in the indexing operation - error with no reason', async () => { + const secrets = {}; + // minimal params + const config = { index: 'index-value', refresh: false, executionTimeField: null }; + const params = { + documents: [{ '': 'bob' }], + indexOverride: null, + }; + + const actionId = 'some-id'; + const scopedClusterClient = elasticsearchClientMock + .createClusterClient() + .asScoped().asCurrentUser; + scopedClusterClient.bulk.mockResponse({ + took: 0, + errors: true, + items: [ + { + create: { + _index: 'indexme', + _id: '7buTjHQB0SuNSiS9Hayt', + status: 400, + error: { + type: 'document_parsing_exception', + caused_by: { + type: 'illegal_argument_exception', + }, + }, + }, + }, + { + index: { + _index: 'indexme', + _id: '7buTjHQB0SuNSiS9Hayt', + status: 400, + error: { + type: 'mapper_parsing_exception', + reason: 'failed to parse', + caused_by: { + type: 'illegal_argument_exception', + }, + }, + }, + }, + ], + }); + + expect( + await connectorType.executor({ + actionId, + config, + secrets, + params, + services: { ...services, scopedClusterClient }, configurationUtilities, logger: mockedLogger, }) @@ -641,7 +824,7 @@ describe('execute()', () => { Object { "actionId": "some-id", "message": "error indexing documents", - "serviceMessage": "Cannot read properties of undefined (reading 'items')", + "serviceMessage": "failed to parse", "status": "error", } `); diff --git a/x-pack/plugins/stack_connectors/server/connector_types/es_index/index.ts b/x-pack/plugins/stack_connectors/server/connector_types/es_index/index.ts index b4ee9ff01e474..5057fdb5d8312 100644 --- a/x-pack/plugins/stack_connectors/server/connector_types/es_index/index.ts +++ b/x-pack/plugins/stack_connectors/server/connector_types/es_index/index.ts @@ -5,7 +5,7 @@ * 2.0. */ -import { find } from 'lodash'; +import { get } from 'lodash'; import { i18n } from '@kbn/i18n'; import { schema, TypeOf } from '@kbn/config-schema'; import { Logger } from '@kbn/core/server'; @@ -25,6 +25,10 @@ import { ALERT_HISTORY_PREFIX, buildAlertHistoryDocument, } from '@kbn/actions-plugin/common'; +import { + BulkOperationType, + BulkResponseItem, +} from '@elastic/elasticsearch/lib/api/typesWithBodyKey'; export type ESIndexConnectorType = ConnectorType< ConnectorTypeConfigType, @@ -124,15 +128,29 @@ async function executor( try { const result = await services.scopedClusterClient.bulk(bulkParams); - const err = find(result.items, 'index.error.reason'); - if (err) { - return wrapErr( - `${err.index?.error?.reason}${ - err.index?.error?.caused_by ? ` (${err.index?.error?.caused_by?.reason})` : '' - }`, - actionId, - logger - ); + if (result.errors) { + const errReason: string[] = []; + const errCausedBy: string[] = []; + // extract error reason and caused by + (result.items ?? []).forEach((item: Partial>) => { + for (const [_, responseItem] of Object.entries(item)) { + const reason = get(responseItem, 'error.reason'); + const causedBy = get(responseItem, 'error.caused_by.reason'); + if (reason) { + errReason.push(reason); + } + if (causedBy) { + errCausedBy.push(causedBy); + } + } + }); + + const errMessage = + errReason.length > 0 + ? `${errReason.join(';')}${errCausedBy.length > 0 ? ` (${errCausedBy.join(';')})` : ''}` + : `Indexing error but no reason returned.`; + + return wrapErr(errMessage, actionId, logger); } return { status: 'ok', data: result, actionId }; diff --git a/x-pack/plugins/synthetics/kibana.jsonc b/x-pack/plugins/synthetics/kibana.jsonc index 511666996f829..d03d0d384938f 100644 --- a/x-pack/plugins/synthetics/kibana.jsonc +++ b/x-pack/plugins/synthetics/kibana.jsonc @@ -41,7 +41,8 @@ "kibanaUtils", "observability", "spaces", - "indexLifecycleManagement" + "indexLifecycleManagement", + "unifiedDocViewer" ] } } diff --git a/x-pack/plugins/synthetics/public/apps/synthetics/components/certificates/fingerprint_col.tsx b/x-pack/plugins/synthetics/public/apps/synthetics/components/certificates/fingerprint_col.tsx index 138ae4d1073cc..3e6fdd997f162 100644 --- a/x-pack/plugins/synthetics/public/apps/synthetics/components/certificates/fingerprint_col.tsx +++ b/x-pack/plugins/synthetics/public/apps/synthetics/components/certificates/fingerprint_col.tsx @@ -31,6 +31,7 @@ export const FingerprintCol: React.FC = ({ cert }) => { {(copy) => ( - - - - {!hideEnabled && ( - <> - {ENABLED_LABEL} - - {monitor && ( - { - dispatch(getMonitorAction.get({ monitorId: configId })); - }} - /> - )} - - + + + {!hideEnabled && ( + <> + {ENABLED_LABEL} + + {monitor && ( + { + dispatch(getMonitorAction.get({ monitorId: configId })); + }} + /> + )} + + + )} + {URL_LABEL} + + {url ? ( + + {url} + + ) : ( + + {UN_AVAILABLE_LABEL} + )} - {URL_LABEL} - - {url ? ( - - {url} - - ) : ( - - {UN_AVAILABLE_LABEL} - - )} - - {LAST_RUN_LABEL} - - {latestPing?.timestamp ? ( - - {LAST_MODIFIED_LABEL} - - - {monitor[ConfigKey.PROJECT_ID] && ( - <> - {PROJECT_ID_LABEL} - {monitor[ConfigKey.PROJECT_ID]} - + + {LAST_RUN_LABEL} + + {latestPing?.timestamp ? ( + + {LAST_MODIFIED_LABEL} + + + {monitor[ConfigKey.PROJECT_ID] && ( + <> + {PROJECT_ID_LABEL} + + {monitor[ConfigKey.PROJECT_ID]} + + + )} + {MONITOR_ID_ITEM_TEXT} + {monitor.id} + {MONITOR_TYPE_LABEL} + + + + {FREQUENCY_LABEL} + + {frequencyStr(monitor[ConfigKey.SCHEDULE])} + - {!hideLocations && ( - <> - {LOCATIONS_LABEL} - - - - - )} + {!hideLocations && ( + <> + {LOCATIONS_LABEL} + + + + + )} - {TAGS_LABEL} - - - - - + {TAGS_LABEL} + + + + ); }; @@ -213,13 +206,6 @@ const Time = ({ timestamp }: { timestamp?: string }) => { return timestamp ? : null; }; -export const WrapperStyle = euiStyled.div` - .euiDescriptionList.euiDescriptionList--column > *, - .euiDescriptionList.euiDescriptionList--responsiveColumn > * { - margin-top: ${({ theme }) => theme.eui.euiSizeS}; - } -`; - const FREQUENCY_LABEL = i18n.translate('xpack.synthetics.management.monitorList.frequency', { defaultMessage: 'Frequency', }); diff --git a/x-pack/plugins/synthetics/public/apps/synthetics/components/common/components/view_document.tsx b/x-pack/plugins/synthetics/public/apps/synthetics/components/common/components/view_document.tsx new file mode 100644 index 0000000000000..591c91a902146 --- /dev/null +++ b/x-pack/plugins/synthetics/public/apps/synthetics/components/common/components/view_document.tsx @@ -0,0 +1,94 @@ +/* + * Copyright 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 { EuiButtonIcon, EuiFlyout, EuiFlyoutBody, EuiFlyoutHeader, EuiTitle } from '@elastic/eui'; +import React, { useState } from 'react'; +import { useUnifiedDocViewerServices } from '@kbn/unified-doc-viewer-plugin/public'; +import { buildDataTableRecord } from '@kbn/discover-utils'; +import { UnifiedDocViewer } from '@kbn/unified-doc-viewer-plugin/public'; +import { i18n } from '@kbn/i18n'; +import { useFetcher } from '@kbn/observability-shared-plugin/public'; +import { DataTableRecord } from '@kbn/discover-utils/src/types'; +import { useDateFormat } from '../../../../../hooks/use_date_format'; +import { LoadingState } from '../../monitors_page/overview/overview/monitor_detail_flyout'; +import { useSyntheticsDataView } from '../../../contexts/synthetics_data_view_context'; +import { SYNTHETICS_INDEX_PATTERN } from '../../../../../../common/constants'; +import { Ping } from '../../../../../../common/runtime_types'; + +export const ViewDocument = ({ ping }: { ping: Ping }) => { + const { data } = useUnifiedDocViewerServices(); + const [isFlyoutVisible, setIsFlyoutVisible] = useState(false); + + const dataView = useSyntheticsDataView(); + const formatter = useDateFormat(); + + const { data: hit } = useFetcher>(async () => { + if (!dataView?.id || !isFlyoutVisible) return; + const response = await data.search + .search({ + params: { + index: SYNTHETICS_INDEX_PATTERN, + body: { + query: { + ids: { + values: [ping.docId], + }, + }, + fields: ['*'], + _source: false, + }, + }, + }) + .toPromise(); + const docs = response?.rawResponse?.hits?.hits ?? []; + if (docs.length > 0) { + return buildDataTableRecord(docs[0], dataView); + } + }, [data, dataView, ping.docId, isFlyoutVisible]); + + return ( + <> + { + setIsFlyoutVisible(true); + }} + /> + {isFlyoutVisible && ( + setIsFlyoutVisible(false)} ownFocus={true}> + + +

+ {INDEXED_AT} {formatter(ping.timestamp)} +

+ + + + {dataView?.id && hit ? ( + + ) : ( + + )} + + + )} + + ); +}; + +const INDEXED_AT = i18n.translate('xpack.synthetics.monitorDetails.summary.indexedAt', { + defaultMessage: 'Indexed at', +}); + +export const INSPECT_DOCUMENT = i18n.translate( + 'xpack.synthetics.monitorDetails.action.inspectDocument', + { + defaultMessage: 'Inspect document', + } +); diff --git a/x-pack/plugins/synthetics/public/apps/synthetics/components/common/links/step_details_link.tsx b/x-pack/plugins/synthetics/public/apps/synthetics/components/common/links/step_details_link.tsx index e66e852739d32..3414f2b2bfd13 100644 --- a/x-pack/plugins/synthetics/public/apps/synthetics/components/common/links/step_details_link.tsx +++ b/x-pack/plugins/synthetics/public/apps/synthetics/components/common/links/step_details_link.tsx @@ -50,6 +50,7 @@ export const StepDetailsLinkIcon = ({ return ( { return ( - + ); }; diff --git a/x-pack/plugins/synthetics/public/apps/synthetics/components/common/links/view_errors.tsx b/x-pack/plugins/synthetics/public/apps/synthetics/components/common/links/view_errors.tsx index 0ca0b19a4f58e..e41b2be1a7c11 100644 --- a/x-pack/plugins/synthetics/public/apps/synthetics/components/common/links/view_errors.tsx +++ b/x-pack/plugins/synthetics/public/apps/synthetics/components/common/links/view_errors.tsx @@ -16,6 +16,7 @@ export const ErrorsLink = ({ disabled }: { disabled?: boolean }) => { return ( ( toggleDetails(item)} aria-label={expandedMap[item._id] ? 'Collapse' : 'Expand'} iconType={expandedMap[item._id] ? 'arrowDown' : 'arrowRight'} diff --git a/x-pack/plugins/synthetics/public/apps/synthetics/components/common/monitor_test_result/result_details.tsx b/x-pack/plugins/synthetics/public/apps/synthetics/components/common/monitor_test_result/result_details.tsx index 3b863847968e9..558e42401d6ee 100644 --- a/x-pack/plugins/synthetics/public/apps/synthetics/components/common/monitor_test_result/result_details.tsx +++ b/x-pack/plugins/synthetics/public/apps/synthetics/components/common/monitor_test_result/result_details.tsx @@ -96,7 +96,6 @@ export const TimingDetails = ({ step }: { step: JourneyStep }) => { return ( { return ( { const button = ( ); }; - -export const WrapperStyle = euiStyled.div` - .euiDescriptionList.euiDescriptionList--column > *, - .euiDescriptionList.euiDescriptionList--responsiveColumn > * { - margin-top: ${({ theme }) => theme.eui.euiSizeS}; - } -`; diff --git a/x-pack/plugins/synthetics/public/apps/synthetics/components/monitor_details/monitor_summary/test_runs_table.tsx b/x-pack/plugins/synthetics/public/apps/synthetics/components/monitor_details/monitor_summary/test_runs_table.tsx index 97b5f2b521716..0bbbd3a5f247b 100644 --- a/x-pack/plugins/synthetics/public/apps/synthetics/components/monitor_details/monitor_summary/test_runs_table.tsx +++ b/x-pack/plugins/synthetics/public/apps/synthetics/components/monitor_details/monitor_summary/test_runs_table.tsx @@ -21,6 +21,7 @@ import { } from '@elastic/eui'; import { Criteria } from '@elastic/eui/src/components/basic_table/basic_table'; import { EuiTableSortingType } from '@elastic/eui/src/components/basic_table/table_types'; +import { INSPECT_DOCUMENT, ViewDocument } from '../../common/components/view_document'; import { ExpandRowColumn, toggleDetails, @@ -206,6 +207,20 @@ export const TestRunsTable = ({ show: false, }, }, + { + align: 'right' as const, + actions: [ + { + 'data-test-subj': 'syntheticsViewPingDocument', + isPrimary: true, + name: INSPECT_DOCUMENT, + description: INSPECT_DOCUMENT, + icon: 'inspect' as const, + type: 'button' as const, + render: (ping: Ping) => , + }, + ], + }, ...(!isBrowserMonitor ? [ { @@ -229,10 +244,17 @@ export const TestRunsTable = ({ 'data-test-subj': `row-${item.monitor.check_group}`, onClick: (evt: MouseEvent) => { const targetElem = evt.target as HTMLElement; + const isTableRow = + targetElem.parentElement?.classList.contains('euiTableCellContent') || + targetElem.parentElement?.classList.contains('euiTableCellContent__text') || + targetElem?.classList.contains('euiTableCellContent') || + targetElem?.classList.contains('euiBadge__text'); // we dont want to capture image click event if ( + isTableRow && targetElem.tagName !== 'IMG' && targetElem.tagName !== 'path' && + targetElem.tagName !== 'BUTTON' && !targetElem.parentElement?.classList.contains('euiLink') ) { if (item.monitor.type !== MONITOR_TYPES.BROWSER) { diff --git a/x-pack/plugins/synthetics/public/apps/synthetics/components/monitors_page/management/monitor_list_table/columns.tsx b/x-pack/plugins/synthetics/public/apps/synthetics/components/monitors_page/management/monitor_list_table/columns.tsx index 8c3d1a1fe1fd9..0c415ce3d4fb8 100644 --- a/x-pack/plugins/synthetics/public/apps/synthetics/components/monitors_page/management/monitor_list_table/columns.tsx +++ b/x-pack/plugins/synthetics/public/apps/synthetics/components/monitors_page/management/monitor_list_table/columns.tsx @@ -240,6 +240,7 @@ export function useMonitorListColumns({ render: () => ( {testTime} - + diff --git a/x-pack/plugins/synthetics/public/apps/synthetics/components/settings/global_params/params_text.tsx b/x-pack/plugins/synthetics/public/apps/synthetics/components/settings/global_params/params_text.tsx index 71024bf9899a7..42bb72f541648 100644 --- a/x-pack/plugins/synthetics/public/apps/synthetics/components/settings/global_params/params_text.tsx +++ b/x-pack/plugins/synthetics/public/apps/synthetics/components/settings/global_params/params_text.tsx @@ -16,6 +16,7 @@ export const ParamsText = ({ text }: { text: string }) => { , setExpandedRows: (update: Record) => any ) => { + // prevent expanding on row click if not expandable + if (!rowShouldExpand(ping)) { + return; + } + // If already expanded, collapse if (expandedRows[ping.docId]) { delete expandedRows[ping.docId]; diff --git a/x-pack/plugins/synthetics/public/apps/synthetics/contexts/synthetics_data_view_context.tsx b/x-pack/plugins/synthetics/public/apps/synthetics/contexts/synthetics_data_view_context.tsx new file mode 100644 index 0000000000000..4e38a3de25388 --- /dev/null +++ b/x-pack/plugins/synthetics/public/apps/synthetics/contexts/synthetics_data_view_context.tsx @@ -0,0 +1,25 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import React, { createContext, useContext } from 'react'; +import { useFetcher } from '@kbn/observability-shared-plugin/public'; +import { DataViewsPublicPluginStart, DataView } from '@kbn/data-views-plugin/public'; +import { SYNTHETICS_INDEX_PATTERN } from '../../../../common/constants'; + +export const SyntheticsDataViewContext = createContext({} as DataView); + +export const SyntheticsDataViewContextProvider: React.FC<{ + dataViews: DataViewsPublicPluginStart; +}> = ({ children, dataViews }) => { + const { data } = useFetcher>(async () => { + return dataViews.create({ title: SYNTHETICS_INDEX_PATTERN }); + }, []); + + return ; +}; + +export const useSyntheticsDataView = () => useContext(SyntheticsDataViewContext); diff --git a/x-pack/plugins/synthetics/public/apps/synthetics/synthetics_app.tsx b/x-pack/plugins/synthetics/public/apps/synthetics/synthetics_app.tsx index f9b37b64df403..bac16812f1bf2 100644 --- a/x-pack/plugins/synthetics/public/apps/synthetics/synthetics_app.tsx +++ b/x-pack/plugins/synthetics/public/apps/synthetics/synthetics_app.tsx @@ -18,6 +18,7 @@ import { import { EuiThemeProvider } from '@kbn/kibana-react-plugin/common'; import { InspectorContextProvider } from '@kbn/observability-shared-plugin/public'; import { ObservabilityAIAssistantProvider } from '@kbn/observability-ai-assistant-plugin/public'; +import { SyntheticsDataViewContextProvider } from './contexts/synthetics_data_view_context'; import { SyntheticsAppProps } from './contexts'; import { @@ -99,32 +100,34 @@ const Application = (props: SyntheticsAppProps) => { fleet: startPlugins.fleet, }} > - - - - - - - -
- - - - - - - -
-
-
-
-
-
-
-
+ + + + + + + + +
+ + + + + + + +
+
+
+
+
+
+
+
+
diff --git a/x-pack/plugins/synthetics/tsconfig.json b/x-pack/plugins/synthetics/tsconfig.json index 12bc371fef915..ff288ec3cee97 100644 --- a/x-pack/plugins/synthetics/tsconfig.json +++ b/x-pack/plugins/synthetics/tsconfig.json @@ -77,6 +77,8 @@ "@kbn/core-saved-objects-server-mocks", "@kbn/shared-ux-page-kibana-template", "@kbn/observability-ai-assistant-plugin", + "@kbn/unified-doc-viewer-plugin", + "@kbn/discover-utils", ], "exclude": [ "target/**/*", diff --git a/x-pack/plugins/triggers_actions_ui/kibana.jsonc b/x-pack/plugins/triggers_actions_ui/kibana.jsonc index 653c105772711..eb660c0bbe383 100644 --- a/x-pack/plugins/triggers_actions_ui/kibana.jsonc +++ b/x-pack/plugins/triggers_actions_ui/kibana.jsonc @@ -24,6 +24,7 @@ "actions", "dashboard", "licensing", + "expressions" ], "optionalPlugins": [ "cloud", diff --git a/x-pack/plugins/triggers_actions_ui/public/application/app.tsx b/x-pack/plugins/triggers_actions_ui/public/application/app.tsx index 263c13ccd4981..a8d58e2e627f3 100644 --- a/x-pack/plugins/triggers_actions_ui/public/application/app.tsx +++ b/x-pack/plugins/triggers_actions_ui/public/application/app.tsx @@ -30,6 +30,7 @@ import { ActionsPublicPluginSetup } from '@kbn/actions-plugin/public'; import { ruleDetailsRoute } from '@kbn/rule-data-utils'; import { QueryClient, QueryClientProvider } from '@tanstack/react-query'; import { DashboardStart } from '@kbn/dashboard-plugin/public'; +import { ExpressionsStart } from '@kbn/expressions-plugin/public'; import { suspendedComponentWithProps } from './lib/suspended_component_with_props'; import { ActionTypeRegistryContract, @@ -70,6 +71,7 @@ export interface TriggersAndActionsUiServices extends CoreStart { theme$: Observable; unifiedSearch: UnifiedSearchPublicPluginStart; licensing: LicensingPluginStart; + expressions: ExpressionsStart; } export const renderApp = (deps: TriggersAndActionsUiServices) => { diff --git a/x-pack/plugins/triggers_actions_ui/public/application/sections/alerts_table/toolbar/components/inspect/modal.tsx b/x-pack/plugins/triggers_actions_ui/public/application/sections/alerts_table/toolbar/components/inspect/modal.tsx index f64c531519d5e..e13284f1048b2 100644 --- a/x-pack/plugins/triggers_actions_ui/public/application/sections/alerts_table/toolbar/components/inspect/modal.tsx +++ b/x-pack/plugins/triggers_actions_ui/public/application/sections/alerts_table/toolbar/components/inspect/modal.tsx @@ -22,26 +22,11 @@ import numeral from '@elastic/numeral'; import { ReactNode } from 'react'; import React from 'react'; -import { euiStyled, EuiTheme } from '@kbn/kibana-react-plugin/common'; +import { euiStyled } from '@kbn/kibana-react-plugin/common'; import { isEmpty } from 'lodash'; import { GetInspectQuery } from '../../../../../../types'; import * as i18n from './translations'; -const DescriptionListStyled = euiStyled(EuiDescriptionList)` - @media only screen and (min-width: ${({ theme }: { theme: EuiTheme }) => - theme.eui.euiBreakpoints.s}) { - .euiDescriptionList__title { - width: 30% !important; - } - - .euiDescriptionList__description { - width: 70% !important; - } - } -`; - -DescriptionListStyled.displayName = 'DescriptionListStyled'; - export interface ModalInspectProps { closeModal: () => void; getInspectQuery: GetInspectQuery; @@ -154,7 +139,11 @@ const ModalInspectQueryComponent = ({ closeModal, getInspectQuery, title }: Moda content: ( <> - + ), }, diff --git a/x-pack/plugins/triggers_actions_ui/public/common/index.ts b/x-pack/plugins/triggers_actions_ui/public/common/index.ts index f9b3cc7c8654c..52b39919227ea 100644 --- a/x-pack/plugins/triggers_actions_ui/public/common/index.ts +++ b/x-pack/plugins/triggers_actions_ui/public/common/index.ts @@ -24,7 +24,7 @@ export { export { connectorDeprecatedMessage, deprecatedMessage } from './connectors_selection'; export type { IOption } from './index_controls'; export { getFields, getIndexOptions, firstFieldOption } from './index_controls'; -export { getTimeFieldOptions, useKibana } from './lib'; +export { getTimeFieldOptions, getTimeOptions, useKibana } from './lib'; export type { Comparator, AggregationType, diff --git a/x-pack/plugins/triggers_actions_ui/public/common/lib/kibana/kibana_react.mock.ts b/x-pack/plugins/triggers_actions_ui/public/common/lib/kibana/kibana_react.mock.ts index 28e3c29d377b3..5cc996ea997ec 100644 --- a/x-pack/plugins/triggers_actions_ui/public/common/lib/kibana/kibana_react.mock.ts +++ b/x-pack/plugins/triggers_actions_ui/public/common/lib/kibana/kibana_react.mock.ts @@ -21,6 +21,7 @@ import { AlertsTableConfigurationRegistryContract, } from '../../../types'; import { DataViewEditorStart } from '@kbn/data-view-editor-plugin/public'; +import { expressionsPluginMock } from '@kbn/expressions-plugin/public/mocks'; export const createStartServicesMock = (): TriggersAndActionsUiServices => { const core = coreMock.createStart(); @@ -70,6 +71,7 @@ export const createStartServicesMock = (): TriggersAndActionsUiServices => { } as unknown as HTMLElement, theme$: themeServiceMock.createTheme$(), licensing: licensingPluginMock, + expressions: expressionsPluginMock.createStartContract(), } as TriggersAndActionsUiServices; }; diff --git a/x-pack/plugins/triggers_actions_ui/public/index.ts b/x-pack/plugins/triggers_actions_ui/public/index.ts index 3bc8ef4b9f75b..a13df899ec3cf 100644 --- a/x-pack/plugins/triggers_actions_ui/public/index.ts +++ b/x-pack/plugins/triggers_actions_ui/public/index.ts @@ -116,6 +116,7 @@ export { getIndexOptions, firstFieldOption, getTimeFieldOptions, + getTimeOptions, GroupByExpression, COMPARATORS, connectorDeprecatedMessage, diff --git a/x-pack/plugins/triggers_actions_ui/public/plugin.ts b/x-pack/plugins/triggers_actions_ui/public/plugin.ts index 6f66f38e8541a..689d841b9c1f5 100644 --- a/x-pack/plugins/triggers_actions_ui/public/plugin.ts +++ b/x-pack/plugins/triggers_actions_ui/public/plugin.ts @@ -26,6 +26,7 @@ import type { UnifiedSearchPublicPluginStart } from '@kbn/unified-search-plugin/ import { triggersActionsRoute } from '@kbn/rule-data-utils'; import { DashboardStart } from '@kbn/dashboard-plugin/public'; import type { LicensingPluginStart } from '@kbn/licensing-plugin/public'; +import { ExpressionsStart } from '@kbn/expressions-plugin/public'; import type { AlertsSearchBarProps } from './application/sections/alerts_search_bar'; import { TypeRegistry } from './application/type_registry'; @@ -161,6 +162,7 @@ interface PluginsStart { spaces?: SpacesPluginStart; navigateToApp: CoreStart['application']['navigateToApp']; features: FeaturesPluginStart; + expressions: ExpressionsStart; unifiedSearch: UnifiedSearchPublicPluginStart; licensing: LicensingPluginStart; } @@ -287,6 +289,7 @@ export class Plugin alertsTableConfigurationRegistry, kibanaFeatures, licensing: pluginsStart.licensing, + expressions: pluginsStart.expressions, }); }, }); diff --git a/x-pack/plugins/triggers_actions_ui/tsconfig.json b/x-pack/plugins/triggers_actions_ui/tsconfig.json index 42e53b4f313b2..3bfe7239fac2c 100644 --- a/x-pack/plugins/triggers_actions_ui/tsconfig.json +++ b/x-pack/plugins/triggers_actions_ui/tsconfig.json @@ -54,6 +54,7 @@ "@kbn/core-ui-settings-common", "@kbn/dashboard-plugin", "@kbn/licensing-plugin", + "@kbn/expressions-plugin", ], "exclude": ["target/**/*"] } diff --git a/x-pack/plugins/uptime/public/legacy_uptime/components/monitor/ping_list/__snapshots__/expanded_row.test.tsx.snap b/x-pack/plugins/uptime/public/legacy_uptime/components/monitor/ping_list/__snapshots__/expanded_row.test.tsx.snap index 254b265e63ecd..4a4a5a5255cb3 100644 --- a/x-pack/plugins/uptime/public/legacy_uptime/components/monitor/ping_list/__snapshots__/expanded_row.test.tsx.snap +++ b/x-pack/plugins/uptime/public/legacy_uptime/components/monitor/ping_list/__snapshots__/expanded_row.test.tsx.snap @@ -150,7 +150,7 @@ exports[`PingListExpandedRow renders link to docs if body is not recorded but it data-type="row" >
Response Body
diff --git a/x-pack/plugins/uptime/public/legacy_uptime/components/monitor/status_details/__snapshots__/monitor_status.bar.test.tsx.snap b/x-pack/plugins/uptime/public/legacy_uptime/components/monitor/status_details/__snapshots__/monitor_status.bar.test.tsx.snap index cae8a771e1696..5ebde1d72dd0d 100644 --- a/x-pack/plugins/uptime/public/legacy_uptime/components/monitor/status_details/__snapshots__/monitor_status.bar.test.tsx.snap +++ b/x-pack/plugins/uptime/public/legacy_uptime/components/monitor/status_details/__snapshots__/monitor_status.bar.test.tsx.snap @@ -23,47 +23,47 @@ Array [ }
Overall availability
0.00 %
Url
--
Monitor ID
Tags
TLS Certificate , @@ -63,7 +63,7 @@ Array [ }
TLS Certificate
, diff --git a/x-pack/plugins/uptime/public/legacy_uptime/components/overview/monitor_list/monitor_list_drawer/__snapshots__/most_recent_error.test.tsx.snap b/x-pack/plugins/uptime/public/legacy_uptime/components/overview/monitor_list/monitor_list_drawer/__snapshots__/most_recent_error.test.tsx.snap index 619096189b084..5ec1d2011e72e 100644 --- a/x-pack/plugins/uptime/public/legacy_uptime/components/overview/monitor_list/monitor_list_drawer/__snapshots__/most_recent_error.test.tsx.snap +++ b/x-pack/plugins/uptime/public/legacy_uptime/components/overview/monitor_list/monitor_list_drawer/__snapshots__/most_recent_error.test.tsx.snap @@ -6,7 +6,7 @@ exports[`MostRecentError component renders properly with mock data 1`] = ` data-type="row" >
Most recent error (5 days ago)
diff --git a/x-pack/plugins/ux/public/components/app/rum_dashboard/page_load_distribution/reset_percentile_zoom.tsx b/x-pack/plugins/ux/public/components/app/rum_dashboard/page_load_distribution/reset_percentile_zoom.tsx index d334bd160a5cc..0b138e663f102 100644 --- a/x-pack/plugins/ux/public/components/app/rum_dashboard/page_load_distribution/reset_percentile_zoom.tsx +++ b/x-pack/plugins/ux/public/components/app/rum_dashboard/page_load_distribution/reset_percentile_zoom.tsx @@ -33,6 +33,7 @@ export function ResetPercentileZoom({
Average page load duration
, ] diff --git a/x-pack/test/alerting_api_integration/spaces_only/tests/alerting/group3/builtin_alert_types/es_query/esql_only.ts b/x-pack/test/alerting_api_integration/spaces_only/tests/alerting/group3/builtin_alert_types/es_query/esql_only.ts new file mode 100644 index 0000000000000..eee79e38a2dac --- /dev/null +++ b/x-pack/test/alerting_api_integration/spaces_only/tests/alerting/group3/builtin_alert_types/es_query/esql_only.ts @@ -0,0 +1,340 @@ +/* + * Copyright 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 { Spaces } from '../../../../../scenarios'; +import { FtrProviderContext } from '../../../../../../common/ftr_provider_context'; +import { getUrlPrefix, ObjectRemover } from '../../../../../../common/lib'; +import { + createConnector, + ES_GROUPS_TO_WRITE, + ES_TEST_DATA_STREAM_NAME, + ES_TEST_INDEX_REFERENCE, + ES_TEST_INDEX_SOURCE, + ES_TEST_OUTPUT_INDEX_NAME, + getRuleServices, + RULE_INTERVALS_TO_WRITE, + RULE_INTERVAL_MILLIS, + RULE_INTERVAL_SECONDS, + RULE_TYPE_ID, +} from './common'; +import { createDataStream, deleteDataStream } from '../../../create_test_data'; + +// eslint-disable-next-line import/no-default-export +export default function ruleTests({ getService }: FtrProviderContext) { + const supertest = getService('supertest'); + const { + es, + esTestIndexTool, + esTestIndexToolOutput, + esTestIndexToolDataStream, + createEsDocumentsInGroups, + removeAllAADDocs, + getAllAADDocs, + } = getRuleServices(getService); + + describe('rule', async () => { + let endDate: string; + let connectorId: string; + const objectRemover = new ObjectRemover(supertest); + + beforeEach(async () => { + await esTestIndexTool.destroy(); + await esTestIndexTool.setup(); + + await esTestIndexToolOutput.destroy(); + await esTestIndexToolOutput.setup(); + + connectorId = await createConnector(supertest, objectRemover, ES_TEST_OUTPUT_INDEX_NAME); + + // write documents in the future, figure out the end date + const endDateMillis = Date.now() + (RULE_INTERVALS_TO_WRITE - 1) * RULE_INTERVAL_MILLIS; + endDate = new Date(endDateMillis).toISOString(); + + await createDataStream(es, ES_TEST_DATA_STREAM_NAME); + }); + + afterEach(async () => { + await objectRemover.removeAll(); + await esTestIndexTool.destroy(); + await esTestIndexToolOutput.destroy(); + await deleteDataStream(es, ES_TEST_DATA_STREAM_NAME); + await removeAllAADDocs(); + }); + + it('runs correctly: threshold on ungrouped hit count < >', async () => { + // write documents from now to the future end date in groups + await createEsDocumentsInGroups(ES_GROUPS_TO_WRITE, endDate); + await createRule({ + name: 'never fire', + esqlQuery: 'from .kibana-alerting-test-data | stats c = count(date) | where c < 0', + size: 100, + }); + await createRule({ + name: 'always fire', + esqlQuery: 'from .kibana-alerting-test-data | stats c = count(date) | where c > -1', + size: 100, + }); + + const docs = await waitForDocs(2); + const messagePattern = + /rule 'always fire' is active:\n\n- Value: \d+\n- Conditions Met: Query matched documents over 20s\n- Timestamp: \d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}.\d{3}Z\n- Link:/; + + for (let i = 0; i < docs.length; i++) { + const doc = docs[i]; + const { hits } = doc._source; + const { name, title, message } = doc._source.params; + + expect(name).to.be('always fire'); + expect(title).to.be(`rule 'always fire' matched query`); + expect(message).to.match(messagePattern); + expect(hits).not.to.be.empty(); + } + + const aadDocs = await getAllAADDocs(1); + + const alertDoc = aadDocs.body.hits.hits[0]._source.kibana.alert; + expect(alertDoc.reason).to.match(messagePattern); + expect(alertDoc.title).to.be("rule 'always fire' matched query"); + expect(alertDoc.evaluation.conditions).to.be('Query matched documents'); + expect(alertDoc.evaluation.value).greaterThan(0); + expect(alertDoc.url).to.contain('/s/space1/app/'); + }); + + it('runs correctly: use epoch millis - threshold on hit count < >', async () => { + // write documents from now to the future end date in groups + const endDateMillis = Date.now() + (RULE_INTERVALS_TO_WRITE - 1) * RULE_INTERVAL_MILLIS; + endDate = new Date(endDateMillis).toISOString(); + await createEsDocumentsInGroups(ES_GROUPS_TO_WRITE, endDate); + await createRule({ + name: 'never fire', + esqlQuery: 'from .kibana-alerting-test-data | stats c = count(date) | where c < 0', + size: 100, + timeField: 'date_epoch_millis', + }); + await createRule({ + name: 'always fire', + esqlQuery: 'from .kibana-alerting-test-data | stats c = count(date) | where c > -1', + size: 100, + timeField: 'date_epoch_millis', + }); + + const docs = await waitForDocs(2); + for (let i = 0; i < docs.length; i++) { + const doc = docs[i]; + const { hits } = doc._source; + const { name, title, message } = doc._source.params; + + expect(name).to.be('always fire'); + expect(title).to.be(`rule 'always fire' matched query`); + const messagePattern = + /rule 'always fire' is active:\n\n- Value: \d+\n- Conditions Met: Query matched documents over 20s\n- Timestamp: \d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}.\d{3}Z\n- Link:/; + expect(message).to.match(messagePattern); + expect(hits).not.to.be.empty(); + } + }); + + it('runs correctly: no matches', async () => { + await createRule({ + name: 'always fire', + esqlQuery: 'from .kibana-alerting-test-data | stats c = count(date) | where c < 1', + size: 100, + }); + + const docs = await waitForDocs(1); + for (let i = 0; i < docs.length; i++) { + const doc = docs[i]; + const { hits } = doc._source; + const { name, title, message } = doc._source.params; + + expect(name).to.be('always fire'); + expect(title).to.be(`rule 'always fire' matched query`); + const messagePattern = + /rule 'always fire' is active:\n\n- Value: \d+\n- Conditions Met: Query matched documents over 20s\n- Timestamp: \d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}.\d{3}Z\n- Link:/; + expect(message).to.match(messagePattern); + expect(hits).not.to.be.empty(); + } + }); + + it('runs correctly and populates recovery context', async () => { + // This rule should be active initially when the number of documents is below the threshold + // and then recover when we add more documents. + await createRule({ + name: 'fire then recovers', + esqlQuery: 'from .kibana-alerting-test-data | stats c = count(date) | where c < 1', + size: 100, + notifyWhen: 'onActionGroupChange', + timeWindowSize: RULE_INTERVAL_SECONDS, + }); + + let docs = await waitForDocs(1); + const activeDoc = docs[0]; + const { + name: activeName, + title: activeTitle, + value: activeValue, + message: activeMessage, + } = activeDoc._source.params; + + expect(activeName).to.be('fire then recovers'); + expect(activeTitle).to.be(`rule 'fire then recovers' matched query`); + expect(activeValue).to.be('1'); + expect(activeMessage).to.match( + /rule 'fire then recovers' is active:\n\n- Value: \d+\n- Conditions Met: Query matched documents over 4s\n- Timestamp: \d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}.\d{3}Z\n- Link:/ + ); + await createEsDocumentsInGroups(1, endDate); + docs = await waitForDocs(2); + const recoveredDoc = docs[1]; + const { + name: recoveredName, + title: recoveredTitle, + message: recoveredMessage, + } = recoveredDoc._source.params; + + expect(recoveredName).to.be('fire then recovers'); + expect(recoveredTitle).to.be(`rule 'fire then recovers' recovered`); + expect(recoveredMessage).to.match( + /rule 'fire then recovers' is recovered:\n\n- Value: \d+\n- Conditions Met: Query did NOT match documents over 4s\n- Timestamp: \d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}.\d{3}Z\n- Link:/ + ); + }); + + it('runs correctly over a data stream: threshold on hit count < >', async () => { + // write documents from now to the future end date in groups + await createEsDocumentsInGroups( + ES_GROUPS_TO_WRITE, + endDate, + esTestIndexToolDataStream, + ES_TEST_DATA_STREAM_NAME + ); + await createRule({ + name: 'never fire', + esqlQuery: 'from test-data-stream | stats c = count(@timestamp) | where c < 0', + size: 100, + }); + await createRule({ + name: 'always fire', + esqlQuery: 'from test-data-stream | stats c = count(@timestamp) | where c > -1', + size: 100, + }); + + const docs = await waitForDocs(2); + for (let i = 0; i < docs.length; i++) { + const doc = docs[i]; + const { hits } = doc._source; + const { name, title, message } = doc._source.params; + + expect(name).to.be('always fire'); + expect(title).to.be(`rule 'always fire' matched query`); + const messagePattern = + /rule 'always fire' is active:\n\n- Value: \d+\n- Conditions Met: Query matched documents over 20s\n- Timestamp: \d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}.\d{3}Z\n- Link:/; + expect(message).to.match(messagePattern); + expect(hits).not.to.be.empty(); + } + }); + + async function waitForDocs(count: number): Promise { + return await esTestIndexToolOutput.waitForDocs( + ES_TEST_INDEX_SOURCE, + ES_TEST_INDEX_REFERENCE, + count + ); + } + + interface CreateRuleParams { + name: string; + size: number; + esqlQuery: string; + timeWindowSize?: number; + timeField?: string; + notifyWhen?: string; + aggType?: string; + aggField?: string; + groupBy?: string; + termField?: string; + termSize?: number; + } + + async function createRule(params: CreateRuleParams): Promise { + const action = { + id: connectorId, + group: 'query matched', + params: { + documents: [ + { + source: ES_TEST_INDEX_SOURCE, + reference: ES_TEST_INDEX_REFERENCE, + params: { + name: '{{{rule.name}}}', + value: '{{{context.value}}}', + title: '{{{context.title}}}', + message: '{{{context.message}}}', + }, + hits: '{{context.hits}}', + date: '{{{context.date}}}', + previousTimestamp: '{{{state.latestTimestamp}}}', + }, + ], + }, + }; + + const recoveryAction = { + id: connectorId, + group: 'recovered', + params: { + documents: [ + { + source: ES_TEST_INDEX_SOURCE, + reference: ES_TEST_INDEX_REFERENCE, + params: { + name: '{{{rule.name}}}', + value: '{{{context.value}}}', + title: '{{{context.title}}}', + message: '{{{context.message}}}', + }, + hits: '{{context.hits}}', + date: '{{{context.date}}}', + }, + ], + }, + }; + + const { body: createdRule } = await supertest + .post(`${getUrlPrefix(Spaces.space1.id)}/api/alerting/rule`) + .set('kbn-xsrf', 'foo') + .send({ + name: params.name, + consumer: 'alerts', + enabled: true, + rule_type_id: RULE_TYPE_ID, + schedule: { interval: `${RULE_INTERVAL_SECONDS}s` }, + actions: [action, recoveryAction], + notify_when: params.notifyWhen || 'onActiveAlert', + params: { + size: params.size, + timeWindowSize: params.timeWindowSize || RULE_INTERVAL_SECONDS * 5, + timeWindowUnit: 's', + thresholdComparator: '>', + threshold: [0], + searchType: 'esqlQuery', + aggType: params.aggType, + groupBy: params.groupBy, + aggField: params.aggField, + termField: params.termField, + termSize: params.termSize, + timeField: params.timeField || 'date', + esqlQuery: { esql: params.esqlQuery }, + }, + }) + .expect(200); + + const ruleId = createdRule.id; + objectRemover.add(Spaces.space1.id, ruleId, 'rule', 'alerting'); + + return ruleId; + } + }); +} diff --git a/x-pack/test/alerting_api_integration/spaces_only/tests/alerting/group3/builtin_alert_types/es_query/index.ts b/x-pack/test/alerting_api_integration/spaces_only/tests/alerting/group3/builtin_alert_types/es_query/index.ts index a584753db7c25..758737d9749b6 100644 --- a/x-pack/test/alerting_api_integration/spaces_only/tests/alerting/group3/builtin_alert_types/es_query/index.ts +++ b/x-pack/test/alerting_api_integration/spaces_only/tests/alerting/group3/builtin_alert_types/es_query/index.ts @@ -12,5 +12,6 @@ export default function alertingTests({ loadTestFile }: FtrProviderContext) { describe('es_query', () => { loadTestFile(require.resolve('./rule')); loadTestFile(require.resolve('./query_dsl_only')); + loadTestFile(require.resolve('./esql_only')); }); } diff --git a/x-pack/test/fleet_api_integration/apis/agent_policy/agent_policy.ts b/x-pack/test/fleet_api_integration/apis/agent_policy/agent_policy.ts index 4c52547e67aef..6cf131939807c 100644 --- a/x-pack/test/fleet_api_integration/apis/agent_policy/agent_policy.ts +++ b/x-pack/test/fleet_api_integration/apis/agent_policy/agent_policy.ts @@ -19,6 +19,22 @@ export default function (providerContext: FtrProviderContext) { const kibanaServer = getService('kibanaServer'); const es = getService('es'); + const getPackage = async (pkgName: string) => { + const getPkgRes = await supertest + .get(`/api/fleet/epm/packages/${pkgName}`) + .set('kbn-xsrf', 'xxxx') + .expect(200); + return getPkgRes; + }; + const epmInstall = async (pkgName: string, pkgVersion: string) => { + const getPkgRes = await supertest + .post(`/api/fleet/epm/packages/${pkgName}/${pkgVersion}`) + .set('kbn-xsrf', 'xxxx') + .send({ force: true }) + .expect(200); + return getPkgRes; + }; + describe('fleet_agent_policies', () => { skipIfNoDockerRegistry(providerContext); @@ -89,7 +105,7 @@ export default function (providerContext: FtrProviderContext) { let packagePoliciesToDeleteIds: string[] = []; after(async () => { if (systemPkgVersion) { - await supertest.delete(`/api/fleet/epm/packages/system-${systemPkgVersion}`); + await supertest.delete(`/api/fleet/epm/packages/system/${systemPkgVersion}`); } if (packagePoliciesToDeleteIds.length > 0) { await kibanaServer.savedObjects.bulkDelete({ @@ -297,21 +313,14 @@ export default function (providerContext: FtrProviderContext) { .expect(409); }); - it('should allow to create policy with the system integration policy and increment correctly the name if there is more than 10 package policy', async () => { + it('should allow to create policy with the system integration policy and increment correctly the name if package policies are more than 10', async () => { // load a bunch of fake system integration policy const policyIds = new Array(10).fill(null).map((_, i) => `package-policy-test-${i}`); packagePoliciesToDeleteIds = packagePoliciesToDeleteIds.concat(policyIds); - const getPkRes = await supertest - .get(`/api/fleet/epm/packages/system`) - .set('kbn-xsrf', 'xxxx') - .expect(200); + const getPkRes = await getPackage('system'); systemPkgVersion = getPkRes.body.item.version; // we must first force install the system package to override package verification error on policy create - const installPromise = supertest - .post(`/api/fleet/epm/packages/system-${systemPkgVersion}`) - .set('kbn-xsrf', 'xxxx') - .send({ force: true }) - .expect(200); + const installPromise = await epmInstall('system', `${systemPkgVersion}`); await Promise.all([ installPromise, @@ -419,7 +428,7 @@ export default function (providerContext: FtrProviderContext) { await Promise.all(deletedPromises); await esArchiver.unload('x-pack/test/functional/es_archives/fleet/agents'); if (systemPkgVersion) { - await supertest.delete(`/api/fleet/epm/packages/system-${systemPkgVersion}`); + await supertest.delete(`/api/fleet/epm/packages/system/${systemPkgVersion}`); } if (packagePoliciesToDeleteIds.length > 0) { await kibanaServer.savedObjects.bulkDelete({ @@ -591,17 +600,10 @@ export default function (providerContext: FtrProviderContext) { const policyId = 'package-policy-test-'; packagePoliciesToDeleteIds.push(policyId); - const getPkRes = await supertest - .get(`/api/fleet/epm/packages/system`) - .set('kbn-xsrf', 'xxxx') - .expect(200); + const getPkRes = await getPackage('system'); systemPkgVersion = getPkRes.body.item.version; // we must first force install the system package to override package verification error on policy create - const installPromise = supertest - .post(`/api/fleet/epm/packages/system-${systemPkgVersion}`) - .set('kbn-xsrf', 'xxxx') - .send({ force: true }) - .expect(200); + const installPromise = await epmInstall('system', `${systemPkgVersion}`); await Promise.all([ installPromise, @@ -682,17 +684,10 @@ export default function (providerContext: FtrProviderContext) { it('should work with package policy with space in name', async () => { const policyId = 'package-policy-test-1'; packagePoliciesToDeleteIds.push(policyId); - const getPkRes = await supertest - .get(`/api/fleet/epm/packages/system`) - .set('kbn-xsrf', 'xxxx') - .expect(200); + const getPkRes = await getPackage('system'); systemPkgVersion = getPkRes.body.item.version; // we must first force install the system package to override package verification error on policy create - const installPromise = supertest - .post(`/api/fleet/epm/packages/system-${systemPkgVersion}`) - .set('kbn-xsrf', 'xxxx') - .send({ force: true }) - .expect(200); + const installPromise = await epmInstall('system', `${systemPkgVersion}`); await Promise.all([ installPromise, @@ -1192,17 +1187,10 @@ export default function (providerContext: FtrProviderContext) { }); setupFleetAndAgents(providerContext); before(async () => { - const getPkRes = await supertest - .get(`/api/fleet/epm/packages/system`) - .set('kbn-xsrf', 'xxxx') - .expect(200); + const getPkRes = await getPackage('system'); // we must first force install the system package to override package verification error on policy create - await supertest - .post(`/api/fleet/epm/packages/system-${getPkRes.body.item.version}`) - .set('kbn-xsrf', 'xxxx') - .send({ force: true }) - .expect(200); + await epmInstall('system', `${getPkRes.body.item.version}`); const { body: { item: createdPolicy }, diff --git a/x-pack/test/fleet_api_integration/apis/agents/list.ts b/x-pack/test/fleet_api_integration/apis/agents/list.ts index 328e4a240e77c..845a0b1a83659 100644 --- a/x-pack/test/fleet_api_integration/apis/agents/list.ts +++ b/x-pack/test/fleet_api_integration/apis/agents/list.ts @@ -216,6 +216,7 @@ export default function ({ getService }: FtrProviderContext) { it('should return a status summary if getStatusSummary provided', async () => { const { body: apiResponse } = await supertest .get('/api/fleet/agents?getStatusSummary=true&perPage=0') + .set('kbn-xsrf', 'xxxx') .expect(200); expect(apiResponse.items).to.eql([]); diff --git a/x-pack/test/fleet_api_integration/apis/agents/status.ts b/x-pack/test/fleet_api_integration/apis/agents/status.ts index 498fbe7c42bce..b0879afc5ccb7 100644 --- a/x-pack/test/fleet_api_integration/apis/agents/status.ts +++ b/x-pack/test/fleet_api_integration/apis/agents/status.ts @@ -8,6 +8,8 @@ import expect from '@kbn/expect'; import { INGEST_SAVED_OBJECT_INDEX } from '@kbn/core-saved-objects-server'; +import { API_VERSIONS } from '@kbn/fleet-plugin/common/constants'; + import { AGENTS_INDEX } from '@kbn/fleet-plugin/common'; import { FtrProviderContext } from '../../../api_integration/ftr_provider_context'; import { testUsers } from '../test_users'; @@ -230,7 +232,11 @@ export default function ({ getService }: FtrProviderContext) { }); it('should work with deprecated api', async () => { - await supertest.get(`/api/fleet/agent-status`).expect(200); + await supertest + .get(`/api/fleet/agent-status`) + .set('kbn-xsrf', 'xxxx') + .set('Elastic-Api-Version', `${API_VERSIONS.internal.v1}`) + .expect(200); }); it('should work with adequate package privileges', async () => { diff --git a/x-pack/test/fleet_api_integration/apis/enrollment_api_keys/crud.ts b/x-pack/test/fleet_api_integration/apis/enrollment_api_keys/crud.ts index d717c6e285c04..47c4d7ecd9f7b 100644 --- a/x-pack/test/fleet_api_integration/apis/enrollment_api_keys/crud.ts +++ b/x-pack/test/fleet_api_integration/apis/enrollment_api_keys/crud.ts @@ -7,6 +7,7 @@ import expect from '@kbn/expect'; +import { API_VERSIONS } from '@kbn/fleet-plugin/common/constants'; import { FtrProviderContext } from '../../../api_integration/ftr_provider_context'; import { setupFleetAndAgents, getEsClientForAPIKey } from '../agents/services'; import { skipIfNoDockerRegistry } from '../../helpers'; @@ -324,6 +325,7 @@ export default function (providerContext: FtrProviderContext) { const { body: apiResponse } = await supertest .post(`/api/fleet/enrollment-api-keys`) .set('kbn-xsrf', 'xxx') + .set('Elastic-Api-Version', `${API_VERSIONS.internal.v1}`) .send({ policy_id: 'policy1', }) @@ -332,11 +334,20 @@ export default function (providerContext: FtrProviderContext) { }); it('should get and delete with deprecated API', async () => { - await supertest.get(`/api/fleet/enrollment-api-keys`).expect(200); - await supertest.get(`/api/fleet/enrollment-api-keys/${ENROLLMENT_KEY_ID}`).expect(200); + await supertest + .get(`/api/fleet/enrollment-api-keys`) + .set('Elastic-Api-Version', `${API_VERSIONS.internal.v1}`) + .set('kbn-xsrf', 'xxx') + .expect(200); + await supertest + .get(`/api/fleet/enrollment-api-keys/${ENROLLMENT_KEY_ID}`) + .set('Elastic-Api-Version', `${API_VERSIONS.internal.v1}`) + .set('kbn-xsrf', 'xxx') + .expect(200); await supertest .delete(`/api/fleet/enrollment-api-keys/${keyId}`) + .set('Elastic-Api-Version', `${API_VERSIONS.internal.v1}`) .set('kbn-xsrf', 'xxx') .expect(200); }); diff --git a/x-pack/test/fleet_api_integration/apis/epm/get.ts b/x-pack/test/fleet_api_integration/apis/epm/get.ts index fb15de6847952..2ca984ceb67dd 100644 --- a/x-pack/test/fleet_api_integration/apis/epm/get.ts +++ b/x-pack/test/fleet_api_integration/apis/epm/get.ts @@ -200,7 +200,10 @@ export default function (providerContext: FtrProviderContext) { it('returns package info in item field when calling without version', async function () { // this will install through the registry by default await installPackage(testPkgName, testPkgVersion); - const res = await supertest.get(`/api/fleet/epm/packages/${testPkgName}`).expect(200); + const res = await supertest + .get(`/api/fleet/epm/packages/${testPkgName}`) + .set('kbn-xsrf', 'xxxx') + .expect(200); const packageInfo = res.body.item; // the uploaded version will have this description expect(packageInfo.name).to.equal('apache'); diff --git a/x-pack/test/fleet_api_integration/apis/epm/install_prerelease.ts b/x-pack/test/fleet_api_integration/apis/epm/install_prerelease.ts index f9d72c62e2738..7b300c271e304 100644 --- a/x-pack/test/fleet_api_integration/apis/epm/install_prerelease.ts +++ b/x-pack/test/fleet_api_integration/apis/epm/install_prerelease.ts @@ -22,7 +22,6 @@ export default function (providerContext: FtrProviderContext) { await supertest.delete(`/api/fleet/epm/packages/${pkg}/${version}`).set('kbn-xsrf', 'xxxx'); }; - // Failing: See https://github.com/elastic/kibana/issues/150343 describe('installs package that has a prerelease version', async () => { skipIfNoDockerRegistry(providerContext); setupFleetAndAgents(providerContext); @@ -70,13 +69,21 @@ export default function (providerContext: FtrProviderContext) { expect(response.body.items.find((item: any) => item.id.includes(gaVersion))); }); - it('should install the beta package when no version is provided and prerelease is true', async function () { + it('should install the beta package when prerelease is true', async function () { const response = await supertest - .post(`/api/fleet/epm/packages/${testPackage}?prerelease=true`) + .post(`/api/fleet/epm/packages/${testPackage}/${testPackageVersion}?prerelease=true`) .set('kbn-xsrf', 'xxxx') .send({ force: true }) // using force to ignore package verification error .expect(200); + expect(response.body.items.find((item: any) => item.id.includes(betaVersion))); + }); + it('should install the beta package when no version is provided and prerelease is true', async function () { + const response = await supertest + .post(`/api/fleet/epm/packages/${testPackage}/${testPackageVersion}?prerelease=true`) + .set('kbn-xsrf', 'xxxx') + .send({ force: true }) // using force to ignore package verification error + .expect(200); expect(response.body.items.find((item: any) => item.id.includes(betaVersion))); }); diff --git a/x-pack/test/fleet_api_integration/apis/package_policy/get.ts b/x-pack/test/fleet_api_integration/apis/package_policy/get.ts index ce0a7a1f219c6..6801c3908e658 100644 --- a/x-pack/test/fleet_api_integration/apis/package_policy/get.ts +++ b/x-pack/test/fleet_api_integration/apis/package_policy/get.ts @@ -24,6 +24,14 @@ export default function (providerContext: FtrProviderContext) { // because `this` has to point to the Mocha context // see https://mochajs.org/#arrow-functions + const deleteEndpointPackage = async () => { + await supertest + .delete(`/api/fleet/epm/packages/endpoint/8.6.1`) + .set('kbn-xsrf', 'xxxx') + .send({ force: true }) + .expect(200); + }; + describe('Package Policy APIs', () => { skipIfNoDockerRegistry(providerContext); @@ -111,12 +119,7 @@ export default function (providerContext: FtrProviderContext) { .send({ packagePolicyIds: [packagePolicyId, endpointPackagePolicyId] }) .expect(200); - // uninstall endpoint package - await supertest - .delete(`/api/fleet/epm/packages/endpoint-8.6.1`) - .set('kbn-xsrf', 'xxxx') - .send({ force: true }) - .expect(200); + await deleteEndpointPackage(); }); it('should succeed with a valid id', async function () { @@ -254,12 +257,7 @@ export default function (providerContext: FtrProviderContext) { .send({ packagePolicyIds: [packagePolicyId, endpointPackagePolicyId] }) .expect(200); - // uninstall endpoint package - await supertest - .delete(`/api/fleet/epm/packages/endpoint-8.6.1`) - .set('kbn-xsrf', 'xxxx') - .send({ force: true }) - .expect(200); + await deleteEndpointPackage(); }); it('should succeed with valid ids', async function () { @@ -476,12 +474,7 @@ export default function (providerContext: FtrProviderContext) { .send({ packagePolicyIds: [endpointPackagePolicyId] }) .expect(200); - // uninstall endpoint package - await supertest - .delete(`/api/fleet/epm/packages/endpoint-8.6.1`) - .set('kbn-xsrf', 'xxxx') - .send({ force: true }) - .expect(200); + await deleteEndpointPackage(); }); it('should return 200 if the passed kuery is correct', async () => { diff --git a/x-pack/test/fleet_api_integration/apis/package_policy/input_package_create_upgrade.ts b/x-pack/test/fleet_api_integration/apis/package_policy/input_package_create_upgrade.ts index 263b9ac88adac..a1e6fe5d5556f 100644 --- a/x-pack/test/fleet_api_integration/apis/package_policy/input_package_create_upgrade.ts +++ b/x-pack/test/fleet_api_integration/apis/package_policy/input_package_create_upgrade.ts @@ -33,7 +33,7 @@ export default function (providerContext: FtrProviderContext) { }; const getInstallationSavedObject = async (name: string, version: string) => { - const res = await supertest.get(`/api/fleet/epm/packages/${name}-${version}`).expect(200); + const res = await supertest.get(`/api/fleet/epm/packages/${name}/${version}`).expect(200); return res.body.item.savedObject.attributes; }; diff --git a/x-pack/test/fleet_api_integration/apis/package_policy/update.ts b/x-pack/test/fleet_api_integration/apis/package_policy/update.ts index 15ad0a82b4359..865341abc5bcc 100644 --- a/x-pack/test/fleet_api_integration/apis/package_policy/update.ts +++ b/x-pack/test/fleet_api_integration/apis/package_policy/update.ts @@ -25,7 +25,7 @@ export default function (providerContext: FtrProviderContext) { }; const getInstallationSavedObject = async (name: string, version: string) => { - const res = await supertest.get(`/api/fleet/epm/packages/${name}-${version}`).expect(200); + const res = await supertest.get(`/api/fleet/epm/packages/${name}/${version}`).expect(200); return res.body.item.savedObject.attributes; }; @@ -229,11 +229,11 @@ export default function (providerContext: FtrProviderContext) { .send({ agentPolicyId }); // uninstall endpoint package await supertest - .delete(`/api/fleet/epm/packages/endpoint-8.6.1`) + .delete(`/api/fleet/epm/packages/endpoint/8.6.1`) .set('kbn-xsrf', 'xxxx') .expect(200); await supertest - .delete(`/api/fleet/epm/packages/input_package-1.0.0`) + .delete(`/api/fleet/epm/packages/input_package/1.0.0`) .set('kbn-xsrf', 'xxxx') .expect(200); }); diff --git a/x-pack/test/fleet_api_integration/apis/package_policy/upgrade.ts b/x-pack/test/fleet_api_integration/apis/package_policy/upgrade.ts index 557d5a9b4d9b2..c5c3d6a67a829 100644 --- a/x-pack/test/fleet_api_integration/apis/package_policy/upgrade.ts +++ b/x-pack/test/fleet_api_integration/apis/package_policy/upgrade.ts @@ -36,7 +36,7 @@ export default function (providerContext: FtrProviderContext) { } const getInstallationSavedObject = async (name: string, version: string) => { - const res = await supertest.get(`/api/fleet/epm/packages/${name}-${version}`).expect(200); + const res = await supertest.get(`/api/fleet/epm/packages/${name}/${version}`).expect(200); return res.body.item.savedObject.attributes; }; diff --git a/x-pack/test/fleet_api_integration/apis/service_tokens.ts b/x-pack/test/fleet_api_integration/apis/service_tokens.ts index bd13c3f5b8ca8..e1830a8ac7f97 100644 --- a/x-pack/test/fleet_api_integration/apis/service_tokens.ts +++ b/x-pack/test/fleet_api_integration/apis/service_tokens.ts @@ -6,6 +6,7 @@ */ import expect from '@kbn/expect'; +import { API_VERSIONS } from '@kbn/fleet-plugin/common/constants'; import { FtrProviderContext } from '../../api_integration/ftr_provider_context'; export default function (providerContext: FtrProviderContext) { @@ -46,7 +47,11 @@ export default function (providerContext: FtrProviderContext) { }); it('should work with deprecated api', async () => { - await supertest.post(`/api/fleet/service-tokens`).set('kbn-xsrf', 'xxxx').expect(200); + await supertest + .post(`/api/fleet/service-tokens`) + .set('kbn-xsrf', 'xxxx') + .set('Elastic-Api-Version', `${API_VERSIONS.internal.v1}`) + .expect(200); }); }); } diff --git a/x-pack/test/functional/apps/dashboard/group2/dashboard_lens_by_value.ts b/x-pack/test/functional/apps/dashboard/group2/dashboard_lens_by_value.ts index 2604b942f7313..aec34ba0d5d9e 100644 --- a/x-pack/test/functional/apps/dashboard/group2/dashboard_lens_by_value.ts +++ b/x-pack/test/functional/apps/dashboard/group2/dashboard_lens_by_value.ts @@ -16,7 +16,8 @@ export default function ({ getPageObjects, getService }: FtrProviderContext) { const dashboardPanelActions = getService('dashboardPanelActions'); const kibanaServer = getService('kibanaServer'); - describe('dashboard lens by value', function () { + // FLAKY: https://github.com/elastic/kibana/issues/165461 + describe.skip('dashboard lens by value', function () { before(async () => { await esArchiver.loadIfNeeded('x-pack/test/functional/es_archives/logstash_functional'); await kibanaServer.importExport.load( diff --git a/x-pack/test/functional/services/ml/test_resources.ts b/x-pack/test/functional/services/ml/test_resources.ts index bf5f6aed44789..a256c623adbe0 100644 --- a/x-pack/test/functional/services/ml/test_resources.ts +++ b/x-pack/test/functional/services/ml/test_resources.ts @@ -8,6 +8,7 @@ import expect from '@kbn/expect'; import { ProvidedType } from '@kbn/test'; import { JobType } from '@kbn/ml-plugin/common/types/saved_objects'; +import { API_VERSIONS } from '@kbn/fleet-plugin/common/constants'; import { savedSearches, dashboards } from './test_resources_data'; import { getCommonRequestHeader } from './common_api'; import { MlApi } from './api'; @@ -567,7 +568,7 @@ export function MachineLearningTestResourcesProvider( await retry.tryForTime(2 * 60 * 1000, async () => { const { body, status } = await supertest .post(`/api/fleet/setup`) - .set(getCommonRequestHeader('1')); + .set(getCommonRequestHeader(`${API_VERSIONS.public.v1}`)); mlApi.assertResponseStatusCode(200, status, body); }); log.debug(` > Setup done`); @@ -581,7 +582,7 @@ export function MachineLearningTestResourcesProvider( await retry.tryForTime(30 * 1000, async () => { const { body, status } = await supertest .post(`/api/fleet/epm/packages/${packageName}/${version}`) - .set(getCommonRequestHeader('1')); + .set(getCommonRequestHeader(`${API_VERSIONS.public.v1}`)); mlApi.assertResponseStatusCode(200, status, body); }); @@ -595,7 +596,7 @@ export function MachineLearningTestResourcesProvider( await retry.tryForTime(30 * 1000, async () => { const { body, status } = await supertest .delete(`/api/fleet/epm/packages/${packageName}/${version}`) - .set(getCommonRequestHeader('1')); + .set(getCommonRequestHeader(`${API_VERSIONS.public.v1}`)); mlApi.assertResponseStatusCode(200, status, body); }); @@ -609,7 +610,7 @@ export function MachineLearningTestResourcesProvider( await retry.tryForTime(10 * 1000, async () => { const { body, status } = await supertest .get(`/api/fleet/epm/packages?experimental=true`) - .set(getCommonRequestHeader('1')); + .set(getCommonRequestHeader(`${API_VERSIONS.public.v1}`)); mlApi.assertResponseStatusCode(200, status, body); packageVersion = diff --git a/x-pack/test/screenshot_creation/apps/response_ops_docs/stack_connectors/connector_types.ts b/x-pack/test/screenshot_creation/apps/response_ops_docs/stack_connectors/connector_types.ts index f4907a1df0969..0f0a2e40fba00 100644 --- a/x-pack/test/screenshot_creation/apps/response_ops_docs/stack_connectors/connector_types.ts +++ b/x-pack/test/screenshot_creation/apps/response_ops_docs/stack_connectors/connector_types.ts @@ -171,5 +171,33 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { await commonScreenshots.takeScreenshot('webhook-params-test', screenshotDirectories); await testSubjects.click('euiFlyoutCloseButton'); }); + + it('pagerduty connector screenshots', async () => { + await pageObjects.common.navigateToApp('connectors'); + await pageObjects.header.waitUntilLoadingHasFinished(); + await actions.common.openNewConnectorForm('pagerduty'); + await testSubjects.setValue('nameInput', 'PagerDuty test connector'); + await testSubjects.setValue('pagerdutyApiUrlInput', 'https://dev-test.pagerduty.com/'); + await testSubjects.setValue('pagerdutyRoutingKeyInput', 'testkey'); + await commonScreenshots.takeScreenshot('pagerduty-connector', screenshotDirectories); + await testSubjects.click('create-connector-flyout-save-test-btn'); + await testSubjects.click('toastCloseButton'); + await testSubjects.setValue('eventActionSelect', 'trigger'); + await commonScreenshots.takeScreenshot('pagerduty-params-test', screenshotDirectories); + await testSubjects.click('euiFlyoutCloseButton'); + }); + + it('opsgenie connector screenshots', async () => { + await pageObjects.common.navigateToApp('connectors'); + await pageObjects.header.waitUntilLoadingHasFinished(); + await actions.common.openNewConnectorForm('opsgenie'); + await testSubjects.setValue('nameInput', 'Opsgenie test connector'); + await testSubjects.setValue('secrets.apiKey-input', 'testkey'); + await commonScreenshots.takeScreenshot('opsgenie-connector', screenshotDirectories); + await testSubjects.click('create-connector-flyout-save-test-btn'); + await testSubjects.click('toastCloseButton'); + await commonScreenshots.takeScreenshot('opsgenie-params-test', screenshotDirectories); + await testSubjects.click('euiFlyoutCloseButton'); + }); }); } diff --git a/x-pack/test/security_solution_cypress/cypress/e2e/detection_response/rule_management/rules_table/rules_table_selection.cy.ts b/x-pack/test/security_solution_cypress/cypress/e2e/detection_response/rule_management/rules_table/rules_table_selection.cy.ts index ae28214315a40..782e70dec8379 100644 --- a/x-pack/test/security_solution_cypress/cypress/e2e/detection_response/rule_management/rules_table/rules_table_selection.cy.ts +++ b/x-pack/test/security_solution_cypress/cypress/e2e/detection_response/rule_management/rules_table/rules_table_selection.cy.ts @@ -33,7 +33,8 @@ const RULE_2 = createRuleAssetSavedObject({ rule_id: 'rule_2', }); -describe('Rules table: selection', { tags: ['@ess', '@serverless'] }, () => { +// FLAKY: https://github.com/elastic/kibana/issues/165643 +describe.skip('Rules table: selection', { tags: ['@ess', '@serverless'] }, () => { before(() => { cleanKibana(); }); diff --git a/x-pack/test/security_solution_cypress/cypress/e2e/investigations/timelines/toggle_column.cy.ts b/x-pack/test/security_solution_cypress/cypress/e2e/investigations/timelines/toggle_column.cy.ts index 5cdb4462839c2..c2ca620a40554 100644 --- a/x-pack/test/security_solution_cypress/cypress/e2e/investigations/timelines/toggle_column.cy.ts +++ b/x-pack/test/security_solution_cypress/cypress/e2e/investigations/timelines/toggle_column.cy.ts @@ -19,30 +19,34 @@ import { import { HOSTS_URL } from '../../../urls/navigation'; -describe('toggle column in timeline', { tags: ['@ess', '@serverless'] }, () => { - before(() => { - cleanKibana(); - cy.intercept('POST', '/api/timeline/_export?file_name=timelines_export.ndjson').as('export'); - }); - - beforeEach(() => { - login(); - visit(HOSTS_URL); - openTimelineUsingToggle(); - populateTimeline(); - }); - - it('removes the @timestamp field from the timeline when the user un-checks the toggle', () => { - expandFirstTimelineEventDetails(); - clickTimestampToggleField(); - - cy.get(TIMESTAMP_HEADER_FIELD).should('not.exist'); - }); - - it('adds the _id field to the timeline when the user checks the field', () => { - expandFirstTimelineEventDetails(); - clickIdToggleField(); - - cy.get(ID_HEADER_FIELD).should('exist'); - }); -}); +describe( + 'toggle column in timeline', + { tags: ['@ess', '@serverless', '@brokenInServerless'] }, + () => { + before(() => { + cleanKibana(); + cy.intercept('POST', '/api/timeline/_export?file_name=timelines_export.ndjson').as('export'); + }); + + beforeEach(() => { + login(); + visit(HOSTS_URL); + openTimelineUsingToggle(); + populateTimeline(); + }); + + it('removes the @timestamp field from the timeline when the user un-checks the toggle', () => { + expandFirstTimelineEventDetails(); + clickTimestampToggleField(); + + cy.get(TIMESTAMP_HEADER_FIELD).should('not.exist'); + }); + + it('adds the _id field to the timeline when the user checks the field', () => { + expandFirstTimelineEventDetails(); + clickIdToggleField(); + + cy.get(ID_HEADER_FIELD).should('exist'); + }); + } +); diff --git a/x-pack/test_serverless/api_integration/test_suites/common/alerting/rules.ts b/x-pack/test_serverless/api_integration/test_suites/common/alerting/rules.ts index 1ad798758b45a..64c8fda9d6089 100644 --- a/x-pack/test_serverless/api_integration/test_suites/common/alerting/rules.ts +++ b/x-pack/test_serverless/api_integration/test_suites/common/alerting/rules.ts @@ -35,7 +35,7 @@ export default function ({ getService }: FtrProviderContext) { const esClient = getService('es'); const esDeleteAllIndices = getService('esDeleteAllIndices'); - // Issue: https://github.com/elastic/kibana/issues/165145 + // Failing: See https://github.com/elastic/kibana/issues/164017 describe.skip('Alerting rules', () => { const RULE_TYPE_ID = '.es-query'; const ALERT_ACTION_INDEX = 'alert-action-es-query'; diff --git a/x-pack/test_serverless/api_integration/test_suites/observability/apm_api_integration/common/apm_api_supertest.ts b/x-pack/test_serverless/api_integration/test_suites/observability/apm_api_integration/common/apm_api_supertest.ts index c31ee37a93b94..ac324b3fda087 100644 --- a/x-pack/test_serverless/api_integration/test_suites/observability/apm_api_integration/common/apm_api_supertest.ts +++ b/x-pack/test_serverless/api_integration/test_suites/observability/apm_api_integration/common/apm_api_supertest.ts @@ -4,15 +4,14 @@ * 2.0; you may not use this file except in compliance with the Elastic License * 2.0. */ -import type { ApmUsername } from '@kbn/apm-plugin/server/test_helpers/create_apm_users/authentication'; -import { format, UrlObject } from 'url'; +import { format } from 'url'; import supertest from 'supertest'; import request from 'superagent'; import type { APIReturnType, APIClientRequestParamsOf, } from '@kbn/apm-plugin/public/services/rest/create_call_apm_api'; -import { kbnTestConfig } from '@kbn/test'; +import { Config, kbnTestConfig, kibanaTestSuperuserServerless } from '@kbn/test'; import type { APIEndpoint } from '@kbn/apm-plugin/server'; import { formatRequest } from '@kbn/server-route-repository'; import { InheritedFtrProviderContext } from '../../../../services'; @@ -93,19 +92,19 @@ Body: ${JSON.stringify(res.body)}` } } -async function getApmApiClient({ - kibanaServer, - username, -}: { - kibanaServer: UrlObject; - username: ApmUsername | 'elastic'; -}) { +async function getApmApiClient({ svlSharedConfig }: { svlSharedConfig: Config }) { + const kibanaServer = svlSharedConfig.get('servers.kibana'); + const cAuthorities = svlSharedConfig.get('servers.kibana.certificateAuthorities'); + + const username = kbnTestConfig.getUrlParts(kibanaTestSuperuserServerless).username; + const password = kbnTestConfig.getUrlParts(kibanaTestSuperuserServerless).password; + const url = format({ ...kibanaServer, - auth: `${username}:${kbnTestConfig.getUrlParts().password}`, + auth: `${username}:${password}`, }); - return createApmApiClient(supertest(url)); + return createApmApiClient(supertest.agent(url, { ca: cAuthorities })); } export interface SupertestReturnType { @@ -120,12 +119,10 @@ export async function getApmApiClientService({ getService, }: InheritedFtrProviderContext): Promise { const svlSharedConfig = getService('config'); - const kibanaServer = svlSharedConfig.get('servers.kibana'); return { slsUser: await getApmApiClient({ - kibanaServer, - username: 'elastic', + svlSharedConfig, }), }; } diff --git a/x-pack/test_serverless/api_integration/test_suites/observability/apm_api_integration/feature_flags.ts b/x-pack/test_serverless/api_integration/test_suites/observability/apm_api_integration/feature_flags.ts index 93c621c72af74..279a1e0970b57 100644 --- a/x-pack/test_serverless/api_integration/test_suites/observability/apm_api_integration/feature_flags.ts +++ b/x-pack/test_serverless/api_integration/test_suites/observability/apm_api_integration/feature_flags.ts @@ -7,6 +7,7 @@ import expect from 'expect'; import { APMFtrContextProvider } from './common/services'; +import { ApmApiClient } from './common/apm_api_supertest'; const fleetMigrationResponse = { statusCode: 404, @@ -48,7 +49,7 @@ const SAMPLE_SOURCEMAP = { mappings: 'A,AAAB;;ABCDE;', }; -async function uploadSourcemap(apmApiClient: any) { +async function uploadSourcemap(apmApiClient: ApmApiClient) { const response = await apmApiClient.slsUser({ endpoint: 'POST /api/apm/sourcemaps 2023-10-31', type: 'form-data', @@ -67,8 +68,7 @@ async function uploadSourcemap(apmApiClient: any) { export default function ({ getService }: APMFtrContextProvider) { const apmApiClient = getService('apmApiClient'); - // Issue: https://github.com/elastic/kibana/issues/165138 - describe.skip('apm feature flags', () => { + describe('apm feature flags', () => { describe('fleet migrations', () => { it('rejects requests to save apm server schema', async () => { try { diff --git a/x-pack/test_serverless/functional/test_suites/common/examples/search/warnings.ts b/x-pack/test_serverless/functional/test_suites/common/examples/search/warnings.ts index 026fa9f2efd25..b1e5be5f9f835 100644 --- a/x-pack/test_serverless/functional/test_suites/common/examples/search/warnings.ts +++ b/x-pack/test_serverless/functional/test_suites/common/examples/search/warnings.ts @@ -24,7 +24,8 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { const kibanaServer = getService('kibanaServer'); const esArchiver = getService('esArchiver'); - describe('handling warnings with search source fetch', function () { + // Failing: See https://github.com/elastic/kibana/issues/165623 + describe.skip('handling warnings with search source fetch', function () { const dataViewTitle = 'sample-01,sample-01-rollup'; const fromTime = 'Jun 17, 2022 @ 00:00:00.000'; const toTime = 'Jun 23, 2022 @ 00:00:00.000'; diff --git a/x-pack/test_serverless/functional/test_suites/common/examples/search_examples/search_example.ts b/x-pack/test_serverless/functional/test_suites/common/examples/search_examples/search_example.ts index 0e5584d656c98..5638afc5b106d 100644 --- a/x-pack/test_serverless/functional/test_suites/common/examples/search_examples/search_example.ts +++ b/x-pack/test_serverless/functional/test_suites/common/examples/search_examples/search_example.ts @@ -15,7 +15,8 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { const comboBox = getService('comboBox'); const toasts = getService('toasts'); - describe('Search example', () => { + // Failing: See https://github.com/elastic/kibana/issues/165730 + describe.skip('Search example', () => { describe('with bfetch', () => { testSearchExample(); }); diff --git a/x-pack/test_serverless/functional/test_suites/common/index_management/index_templates.ts b/x-pack/test_serverless/functional/test_suites/common/index_management/index_templates.ts index 26feb519a39a8..1b1ee91fd0891 100644 --- a/x-pack/test_serverless/functional/test_suites/common/index_management/index_templates.ts +++ b/x-pack/test_serverless/functional/test_suites/common/index_management/index_templates.ts @@ -15,7 +15,8 @@ export default ({ getPageObjects, getService }: FtrProviderContext) => { const security = getService('security'); const retry = getService('retry'); - describe('Index Templates', function () { + // FLAKY: https://github.com/elastic/kibana/issues/165746 + describe.skip('Index Templates', function () { before(async () => { await security.testUser.setRoles(['index_management_user']); await pageObjects.common.navigateToApp('indexManagement'); diff --git a/x-pack/test_serverless/functional/test_suites/common/index_management/indices.ts b/x-pack/test_serverless/functional/test_suites/common/index_management/indices.ts index 02b6acdfbfa56..b4473f0ba16a5 100644 --- a/x-pack/test_serverless/functional/test_suites/common/index_management/indices.ts +++ b/x-pack/test_serverless/functional/test_suites/common/index_management/indices.ts @@ -15,7 +15,8 @@ export default ({ getPageObjects, getService }: FtrProviderContext) => { const security = getService('security'); const retry = getService('retry'); - describe('Indices', function () { + // Flaky on serverless + describe.skip('Indices', function () { before(async () => { await security.testUser.setRoles(['index_management_user']); await pageObjects.common.navigateToApp('indexManagement'); diff --git a/x-pack/test_serverless/functional/test_suites/common/security/api_keys.ts b/x-pack/test_serverless/functional/test_suites/common/security/api_keys.ts index 99f01f2d19a19..32c12c9b713b4 100644 --- a/x-pack/test_serverless/functional/test_suites/common/security/api_keys.ts +++ b/x-pack/test_serverless/functional/test_suites/common/security/api_keys.ts @@ -29,7 +29,8 @@ export default ({ getPageObjects, getService }: FtrProviderContext) => { const es = getService('es'); const log = getService('log'); - describe('API keys', () => { + // FLAKY: https://github.com/elastic/kibana/issues/165553 + describe.skip('API keys', () => { after(async () => { await clearAllApiKeys(es, log); }); diff --git a/x-pack/test_serverless/functional/test_suites/common/security/navigation/avatar_menu.ts b/x-pack/test_serverless/functional/test_suites/common/security/navigation/avatar_menu.ts index b8647d0423e02..0a58a580b81dd 100644 --- a/x-pack/test_serverless/functional/test_suites/common/security/navigation/avatar_menu.ts +++ b/x-pack/test_serverless/functional/test_suites/common/security/navigation/avatar_menu.ts @@ -11,7 +11,8 @@ export default function ({ getPageObject, getService }: FtrProviderContext) { const svlCommonPage = getPageObject('svlCommonPage'); const svlCommonNavigation = getService('svlCommonNavigation'); - describe('Avatar menu', function () { + // FLAKY: https://github.com/elastic/kibana/issues/165694 + describe.skip('Avatar menu', function () { it('is displayed', async () => { await svlCommonNavigation.navigateToKibanaHome(); await svlCommonPage.assertUserAvatarExists(); diff --git a/yarn.lock b/yarn.lock index 47f2d2206ecd9..3ff002d5dfe50 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1596,18 +1596,18 @@ resolved "https://registry.yarnpkg.com/@elastic/eslint-plugin-eui/-/eslint-plugin-eui-0.0.2.tgz#56b9ef03984a05cc213772ae3713ea8ef47b0314" integrity sha512-IoxURM5zraoQ7C8f+mJb9HYSENiZGgRVcG4tLQxE61yHNNRDXtGDWTZh8N1KIHcsqN1CEPETjuzBXkJYF/fDiQ== -"@elastic/eui@87.2.0": - version "87.2.0" - resolved "https://registry.yarnpkg.com/@elastic/eui/-/eui-87.2.0.tgz#6feabaea7daa03c1d9a906ed2f97312eec12bfe0" - integrity sha512-U4pDkDHTgYf39/D4o9inOcKMedDf+Y4sv42fRydg/blBYNbDCTlU/3z4fhpO2rA03kDyMFohMmRMt4aBrirBTA== +"@elastic/eui@88.1.0": + version "88.1.0" + resolved "https://registry.yarnpkg.com/@elastic/eui/-/eui-88.1.0.tgz#0c10173fecd5812b035c349cc8a836fa198d1f59" + integrity sha512-0irae9LLl9j2fc11FZePhioPAyus7YGpm0yoiKOnD5JqSskqRlmlmwPCYSIEYfxbwyibA4qrbt7kenJ7PTOt5g== dependencies: "@hello-pangea/dnd" "^16.2.0" "@types/lodash" "^4.14.194" - "@types/numeral" "^0.0.28" + "@types/numeral" "^2.0.2" "@types/react-input-autosize" "^2.2.1" "@types/react-window" "^1.8.5" - "@types/refractor" "^3.0.0" - "@types/resize-observer-browser" "^0.1.5" + "@types/refractor" "^3.0.2" + "@types/resize-observer-browser" "^0.1.7" "@types/vfile-message" "^2.0.0" chroma-js "^2.4.2" classnames "^2.3.2" @@ -1625,7 +1625,7 @@ react-window "^1.8.9" refractor "^3.5.0" rehype-raw "^5.0.0" - rehype-react "^6.0.0" + rehype-react "^6.2.1" rehype-stringify "^8.0.0" remark-breaks "^2.0.2" remark-emoji "^2.1.0" @@ -1633,7 +1633,7 @@ remark-rehype "^8.0.0" tabbable "^5.3.3" text-diff "^1.0.1" - unified "^9.2.0" + unified "^9.2.2" unist-util-visit "^2.0.3" url-parse "^1.5.10" uuid "^8.3.0" @@ -6272,12 +6272,12 @@ get-stream "^6.0.1" minimist "^1.2.6" -"@mapbox/hast-util-table-cell-style@^0.1.3": - version "0.1.3" - resolved "https://registry.yarnpkg.com/@mapbox/hast-util-table-cell-style/-/hast-util-table-cell-style-0.1.3.tgz#5b7166ae01297d72216932b245e4b2f0b642dca6" - integrity sha512-QsEsh5YaDvHoMQ2YHdvZy2iDnU3GgKVBTcHf6cILyoWDZtPSdlG444pL/ioPYO/GpXSfODBb9sefEetfC4v9oA== +"@mapbox/hast-util-table-cell-style@^0.2.0": + version "0.2.0" + resolved "https://registry.yarnpkg.com/@mapbox/hast-util-table-cell-style/-/hast-util-table-cell-style-0.2.0.tgz#1003f59d54fae6f638cb5646f52110fb3da95b4d" + integrity sha512-gqaTIGC8My3LVSnU38IwjHVKJC94HSonjvFHDk8/aSrApL8v4uWgm8zJkK7MJIIbHuNOr/+Mv2KkQKcxs6LEZA== dependencies: - unist-util-visit "^1.3.0" + unist-util-visit "^1.4.1" "@mapbox/jsonlint-lines-primitives@^2.0.2", "@mapbox/jsonlint-lines-primitives@~2.0.2": version "2.0.2" @@ -9371,10 +9371,10 @@ resolved "https://registry.yarnpkg.com/@types/npmlog/-/npmlog-4.1.2.tgz#d070fe6a6b78755d1092a3dc492d34c3d8f871c4" integrity sha512-4QQmOF5KlwfxJ5IGXFIudkeLCdMABz03RcUXu+LCb24zmln8QW6aDjuGl4d4XPVLf2j+FnjelHTP7dvceAFbhA== -"@types/numeral@^0.0.28": - version "0.0.28" - resolved "https://registry.yarnpkg.com/@types/numeral/-/numeral-0.0.28.tgz#e43928f0bda10b169b6f7ecf99e3ddf836b8ebe4" - integrity sha512-Sjsy10w6XFHDktJJdXzBJmoondAKW+LcGpRFH+9+zXEDj0cOH8BxJuZA9vUDSMAzU1YRJlsPKmZEEiTYDlICLw== +"@types/numeral@^2.0.2": + version "2.0.2" + resolved "https://registry.yarnpkg.com/@types/numeral/-/numeral-2.0.2.tgz#8ea2c4f4e64c0cc948ad7da375f6f827778a7912" + integrity sha512-A8F30k2gYJ/6e07spSCPpkuZu79LCnkPTvqmIWQzNGcrzwFKpVOydG41lNt5wZXjSI149qjyzC2L1+F2PD/NUA== "@types/object-hash@^1.3.0": version "1.3.0" @@ -9654,17 +9654,17 @@ dependencies: redux "^4.0.0" -"@types/refractor@^3.0.0": - version "3.0.0" - resolved "https://registry.yarnpkg.com/@types/refractor/-/refractor-3.0.0.tgz#c535cfad1c54cf377ae2984f6cf6e9627a36ea66" - integrity sha512-jkCqkTpxMXXfN03Xpzj+mBMxo9IxG616SV2U42iwHkBGq/f8RrX3DCzLayIqUV+MAIBCUvl5xPnjqpUtZRnMqA== +"@types/refractor@^3.0.2": + version "3.0.2" + resolved "https://registry.yarnpkg.com/@types/refractor/-/refractor-3.0.2.tgz#2d42128d59f78f84d2c799ffc5ab5cadbcba2d82" + integrity sha512-2HMXuwGuOqzUG+KUTm9GDJCHl0LCBKsB5cg28ujEmVi/0qgTb6jOmkVSO5K48qXksyl2Fr3C0Q2VrgD4zbwyXg== dependencies: "@types/prismjs" "*" -"@types/resize-observer-browser@^0.1.5": - version "0.1.5" - resolved "https://registry.yarnpkg.com/@types/resize-observer-browser/-/resize-observer-browser-0.1.5.tgz#36d897708172ac2380cd486da7a3daf1161c1e23" - integrity sha512-8k/67Z95Goa6Lznuykxkfhq9YU3l1Qe6LNZmwde1u7802a3x8v44oq0j91DICclxatTr0rNnhXx7+VTIetSrSQ== +"@types/resize-observer-browser@^0.1.7": + version "0.1.7" + resolved "https://registry.yarnpkg.com/@types/resize-observer-browser/-/resize-observer-browser-0.1.7.tgz#294aaadf24ac6580b8fbd1fe3ab7b59fe85f9ef3" + integrity sha512-G9eN0Sn0ii9PWQ3Vl72jDPgeJwRWhv2Qk/nQkJuWmRmOB4HX3/BhD5SE1dZs/hzPZL/WKnvF0RHdTSG54QJFyg== "@types/resolve@^1.20.1": version "1.20.1" @@ -13639,7 +13639,7 @@ css-what@^6.0.1, css-what@^6.1.0: css.escape@^1.5.1: version "1.5.1" resolved "https://registry.yarnpkg.com/css.escape/-/css.escape-1.5.1.tgz#42e27d4fa04ae32f931a4b4d4191fa9cddee97cb" - integrity sha1-QuJ9T6BK4y+TGktNQZH6nN3ul8s= + integrity sha512-YUifsXXuknHlUsmlgyY0PKzgPOr7/FjCePfHNt0jxm83wHZi44VDMQ7/fGNkjY3/jV1MC+1CmZbaHzugyeRtpg== css@2.X, css@^2.2.1, css@^2.2.4: version "2.2.4" @@ -26052,12 +26052,12 @@ rehype-raw@^5.0.0: dependencies: hast-util-raw "^6.0.0" -rehype-react@^6.0.0: - version "6.1.0" - resolved "https://registry.yarnpkg.com/rehype-react/-/rehype-react-6.1.0.tgz#95f8c936eea2159f92adfbf58e5e90be86a97cbf" - integrity sha512-hQ4DSGOJKA1a87Ei4fJtSHzopbfgoHkwjWMCFpLrcVR5+AIyCOtHy4oQcpGF11kTZOU6oKmJ9UKzO/JpI/XZWA== +rehype-react@^6.2.1: + version "6.2.1" + resolved "https://registry.yarnpkg.com/rehype-react/-/rehype-react-6.2.1.tgz#9b9bf188451ad6f63796b784fe1f51165c67b73a" + integrity sha512-f9KIrjktvLvmbGc7si25HepocOg4z0MuNOtweigKzBcDjiGSTGhyz6VSgaV5K421Cq1O+z4/oxRJ5G9owo0KVg== dependencies: - "@mapbox/hast-util-table-cell-style" "^0.1.3" + "@mapbox/hast-util-table-cell-style" "^0.2.0" hast-to-hyperscript "^9.0.0" rehype-stringify@^8.0.0: @@ -29320,7 +29320,7 @@ unified@9.2.0: trough "^1.0.0" vfile "^4.0.0" -unified@^9.0.0, unified@^9.2.0, unified@^9.2.1: +unified@^9.0.0, unified@^9.2.1: version "9.2.1" resolved "https://registry.yarnpkg.com/unified/-/unified-9.2.1.tgz#ae18d5674c114021bfdbdf73865ca60f410215a3" integrity sha512-juWjuI8Z4xFg8pJbnEZ41b5xjGUWGHqXALmBZ3FC3WX0PIx1CZBIIJ6mXbYMcf6Yw4Fi0rFUTA1cdz/BglbOhA== @@ -29332,6 +29332,18 @@ unified@^9.0.0, unified@^9.2.0, unified@^9.2.1: trough "^1.0.0" vfile "^4.0.0" +unified@^9.2.2: + version "9.2.2" + resolved "https://registry.yarnpkg.com/unified/-/unified-9.2.2.tgz#67649a1abfc3ab85d2969502902775eb03146975" + integrity sha512-Sg7j110mtefBD+qunSLO1lqOEKdrwBFBrR6Qd8f4uwkhWNlbkaqwHse6e7QvD3AP/MNoJdEDLaf8OxYyoWgorQ== + dependencies: + bail "^1.0.0" + extend "^3.0.0" + is-buffer "^2.0.0" + is-plain-obj "^2.0.0" + trough "^1.0.0" + vfile "^4.0.0" + union-value@^1.0.0, union-value@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/union-value/-/union-value-1.0.1.tgz#0b6fe7b835aecda61c6ea4d4f02c14221e109847" @@ -29468,7 +29480,7 @@ unist-util-visit@2.0.3, unist-util-visit@^2.0.0, unist-util-visit@^2.0.2, unist- unist-util-is "^4.0.0" unist-util-visit-parents "^3.0.0" -unist-util-visit@^1.3.0: +unist-util-visit@^1.4.1: version "1.4.1" resolved "https://registry.yarnpkg.com/unist-util-visit/-/unist-util-visit-1.4.1.tgz#4724aaa8486e6ee6e26d7ff3c8685960d560b1e3" integrity sha512-AvGNk7Bb//EmJZyhtRUnNMEpId/AZ5Ph/KUpTI09WHQuDZHKovQ1oEv3mfmKpWKtoMzyMC4GLBm1Zy5k12fjIw==