diff --git a/.buildkite/ftr_configs.yml b/.buildkite/ftr_configs.yml index b8c70aa567697..c74c3d0cfcddf 100644 --- a/.buildkite/ftr_configs.yml +++ b/.buildkite/ftr_configs.yml @@ -341,7 +341,6 @@ enabled: - x-pack/test/monitoring_api_integration/config.ts - x-pack/test/observability_api_integration/basic/config.ts - x-pack/test/observability_api_integration/trial/config.ts - - x-pack/test/observability_api_integration/apis/config.ts - x-pack/test/observability_functional/with_rac_write.config.ts - x-pack/test/observability_onboarding_api_integration/basic/config.ts - x-pack/test/observability_onboarding_api_integration/cloud/config.ts diff --git a/.buildkite/pipelines/pipeline.kibana-serverless-release.yaml b/.buildkite/pipelines/pipeline.kibana-serverless-release.yaml index 9c3e235c5564a..84dae4c24db48 100644 --- a/.buildkite/pipelines/pipeline.kibana-serverless-release.yaml +++ b/.buildkite/pipelines/pipeline.kibana-serverless-release.yaml @@ -2,7 +2,7 @@ steps: - label: ":releasethekraken: Release kibana" # https://regex101.com/r/tY52jo/1 if: build.tag =~ /^deploy@\d+\$/ - trigger: gpctl-promote-with-e2e-tests + trigger: gpctl-promote build: env: SERVICE_COMMIT_HASH: "${BUILDKITE_COMMIT:0:12}" diff --git a/.buildkite/pipelines/pull_request/base.yml b/.buildkite/pipelines/pull_request/base.yml index fd47dd6c08225..abc6436e7ee0a 100644 --- a/.buildkite/pipelines/pull_request/base.yml +++ b/.buildkite/pipelines/pull_request/base.yml @@ -63,7 +63,7 @@ steps: queue: n2-4-spot depends_on: build timeout_in_minutes: 60 - parallelism: 2 + parallelism: 4 retry: automatic: - exit_status: '*' diff --git a/.buildkite/pipelines/quality-gates/pipeline.tests-production-canary.yaml b/.buildkite/pipelines/quality-gates/pipeline.tests-production-canary.yaml index 9b68ac2e99acf..8b30d4e141b08 100644 --- a/.buildkite/pipelines/quality-gates/pipeline.tests-production-canary.yaml +++ b/.buildkite/pipelines/quality-gates/pipeline.tests-production-canary.yaml @@ -3,6 +3,16 @@ # A failure in this pipeline build will prevent further progression to the subsequent stage. steps: + - label: ":pipeline::kibana::seedling: Trigger SLO check" + trigger: "serverless-quality-gates" # https://buildkite.com/elastic/serverless-quality-gates + build: + message: "${BUILDKITE_MESSAGE} (triggered by pipeline.tests-production-canary.yaml)" + env: + TARGET_ENV: production-canary + CHECK_SLO: true + CHECK_SLO_TAG: kibana + soft_fail: true + - label: ":pipeline::rocket::seedling: Trigger control-plane e2e tests" trigger: "ess-k8s-production-e2e-tests" # https://buildkite.com/elastic/ess-k8s-production-e2e-tests build: diff --git a/.buildkite/pipelines/quality-gates/pipeline.tests-production-noncanary.yaml b/.buildkite/pipelines/quality-gates/pipeline.tests-production-noncanary.yaml index 13d9f2322e806..13c974a344f98 100644 --- a/.buildkite/pipelines/quality-gates/pipeline.tests-production-noncanary.yaml +++ b/.buildkite/pipelines/quality-gates/pipeline.tests-production-noncanary.yaml @@ -3,6 +3,16 @@ # A failure in this pipeline build will prevent further progression to the subsequent stage. steps: + - label: ":pipeline::kibana::seedling: Trigger SLO check" + trigger: "serverless-quality-gates" # https://buildkite.com/elastic/serverless-quality-gates + build: + message: "${BUILDKITE_MESSAGE} (triggered by pipeline.tests-production-noncanary.yaml)" + env: + TARGET_ENV: production-noncanary + CHECK_SLO: true + CHECK_SLO_TAG: kibana + soft_fail: true + - label: ":pipeline::rocket::seedling: Trigger control-plane e2e tests" trigger: "ess-k8s-production-e2e-tests" # https://buildkite.com/elastic/ess-k8s-production-e2e-tests build: diff --git a/.buildkite/pipelines/quality-gates/pipeline.tests-production.yaml b/.buildkite/pipelines/quality-gates/pipeline.tests-production.yaml index 2176589d14aae..4b0bb30d3084c 100644 --- a/.buildkite/pipelines/quality-gates/pipeline.tests-production.yaml +++ b/.buildkite/pipelines/quality-gates/pipeline.tests-production.yaml @@ -7,6 +7,16 @@ # ENSURE ANY CHANGE MADE TO THIS FILE IS REFLECTED IN THOSE FILES AS WELL. steps: + - label: ":pipeline::kibana::seedling: Trigger SLO check" + trigger: "serverless-quality-gates" # https://buildkite.com/elastic/serverless-quality-gates + build: + message: "${BUILDKITE_MESSAGE} (triggered by pipeline.tests-production.yaml)" + env: + TARGET_ENV: production + CHECK_SLO: true + CHECK_SLO_TAG: kibana + soft_fail: true + - label: ":pipeline::rocket::seedling: Trigger control-plane e2e tests" trigger: "ess-k8s-production-e2e-tests" # https://buildkite.com/elastic/ess-k8s-production-e2e-tests build: @@ -14,11 +24,3 @@ steps: REGION_ID: aws-us-east-1 NAME_PREFIX: ci_test_kibana-promotion_ message: "${BUILDKITE_MESSAGE} (triggered by pipeline.tests-production.yaml)" - - - wait: ~ - - - label: ":judge::seedling: Trigger Manual Tests Phase" - command: "make -C /agent trigger-manual-verification-phase" - if: build.branch == "main" - agents: - image: "docker.elastic.co/ci-agent-images/manual-verification-agent:0.0.2" diff --git a/.buildkite/pipelines/quality-gates/pipeline.tests-qa.yaml b/.buildkite/pipelines/quality-gates/pipeline.tests-qa.yaml index 962da8da4d86e..c4545b6ecfaed 100644 --- a/.buildkite/pipelines/quality-gates/pipeline.tests-qa.yaml +++ b/.buildkite/pipelines/quality-gates/pipeline.tests-qa.yaml @@ -3,18 +3,6 @@ # A failure in this pipeline build will prevent further progression to the subsequent stage. steps: - - label: ":pipeline::kibana::seedling: Trigger SLO check" - trigger: "serverless-quality-gates" # https://buildkite.com/elastic/serverless-quality-gates - build: - message: "${BUILDKITE_MESSAGE} (triggered by pipeline.tests-qa.yaml)" - env: - TARGET_ENV: qa - CHECK_SLO: true - CHECK_SLO_TAG: kibana - CHECK_SLO_WAITING_PERIOD: 10m - CHECK_SLO_BURN_RATE_THRESHOLD: 0.1 - soft_fail: true - - label: ":pipeline::kibana::seedling: Trigger Kibana Serverless Tests for ${ENVIRONMENT}" trigger: appex-qa-serverless-kibana-ftr-tests # https://buildkite.com/elastic/appex-qa-serverless-kibana-ftr-tests soft_fail: true # Remove this before release or when tests stabilize @@ -30,6 +18,7 @@ steps: steps: - label: ":pipeline::female-detective::seedling: Trigger Security Solution quality gate script" command: .buildkite/scripts/pipelines/security_solution_quality_gate/pipeline.sh + soft_fail: true # Remove this when tests are fixed - label: ":pipeline::ship::seedling: Trigger Fleet serverless smoke tests for ${ENVIRONMENT}" trigger: fleet-smoke-tests # https://buildkite.com/elastic/fleet-smoke-tests diff --git a/.buildkite/pipelines/quality-gates/pipeline.tests-staging.yaml b/.buildkite/pipelines/quality-gates/pipeline.tests-staging.yaml index 42fa2b34ea84f..d5cce621002b3 100644 --- a/.buildkite/pipelines/quality-gates/pipeline.tests-staging.yaml +++ b/.buildkite/pipelines/quality-gates/pipeline.tests-staging.yaml @@ -3,16 +3,6 @@ # A failure in this pipeline build will prevent further progression to the subsequent stage. steps: - - label: ":pipeline::kibana::seedling: Trigger SLO check" - trigger: "serverless-quality-gates" # https://buildkite.com/elastic/serverless-quality-gates - build: - message: "${BUILDKITE_MESSAGE} (triggered by pipeline.tests-staging.yaml)" - env: - TARGET_ENV: staging - CHECK_SLO: true - CHECK_SLO_TAG: kibana - soft_fail: true - - label: ":pipeline::rocket::seedling: Trigger control-plane e2e tests" trigger: "ess-k8s-staging-e2e-tests" # https://buildkite.com/elastic/ess-k8s-staging-e2e-tests build: diff --git a/.buildkite/scripts/pipelines/security_solution_quality_gate/pipeline.sh b/.buildkite/scripts/pipelines/security_solution_quality_gate/pipeline.sh index 87dfe7b752e6e..3d61d70cf6828 100755 --- a/.buildkite/scripts/pipelines/security_solution_quality_gate/pipeline.sh +++ b/.buildkite/scripts/pipelines/security_solution_quality_gate/pipeline.sh @@ -1,5 +1,19 @@ #!/bin/bash - set -euo pipefail -echo "In the entrypoint for the quality gate" \ No newline at end of file +source .buildkite/scripts/common/util.sh +source .buildkite/scripts/steps/functional/common_cypress.sh +.buildkite/scripts/bootstrap.sh + +export JOB=kibana-security-solution-chrome + +buildkite-agent meta-data set "${BUILDKITE_JOB_ID}_is_test_execution_step" "true" + +echo "--- Serverless Security Second Quality Gate" +cd x-pack/test/security_solution_cypress +set +e + +VAULT_DEC_KEY=$(vault read -field=key secret/kibana-issues/dev/security-solution-qg-enc-key) +ENV_PWD=$(echo $TEST_ENV_PWD | openssl aes-256-cbc -d -a -pass pass:$VAULT_DEC_KEY) + +CYPRESS_ELASTICSEARCH_URL=$TEST_ENV_ES_URL CYPRESS_BASE_URL=$TEST_ENV_KB_URL CYPRESS_ELASTICSEARCH_USERNAME=$TEST_ENV_USERNAME CYPRESS_ELASTICSEARCH_PASSWORD=$ENV_PWD CYPRESS_KIBANA_URL=$CYPRESS_BASE_URL yarn cypress:run:qa:serverless; status=$?; yarn junit:merge || :; exit $status \ No newline at end of file diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS index fb5ce6ad466e0..ccb65e643d219 100644 --- a/.github/CODEOWNERS +++ b/.github/CODEOWNERS @@ -1159,6 +1159,7 @@ x-pack/plugins/cloud_integrations/cloud_full_story/server/config.ts @elastic/kib /x-pack/plugins/security_solution/common/types/timeline @elastic/security-threat-hunting-investigations /x-pack/test/security_solution_cypress/cypress/e2e/investigations @elastic/security-threat-hunting-investigations +/x-pack/test/security_solution_cypress/cypress/e2e/sourcerer/sourcerer_timeline.cy.ts @elastic/security-threat-hunting-investigations /x-pack/plugins/security_solution/public/common/components/alerts_viewer @elastic/security-threat-hunting-investigations /x-pack/plugins/security_solution/public/detections/components/alerts_table/timeline_action @elastic/security-threat-hunting-investigations @@ -1297,8 +1298,8 @@ x-pack/plugins/cloud_integrations/cloud_full_story/server/config.ts @elastic/kib /x-pack/plugins/security_solution/server/lib/detection_engine/routes/signals @elastic/security-detection-engine /x-pack/plugins/security_solution/server/lib/sourcerer @elastic/security-detection-engine -/x-pack/test/security_solution_cypress/cypress/e2e/data_sources @elastic/security-detection-engine -/x-pack/test/security_solution_cypress/cypress/e2e/detection_alerts @elastic/security-detection-engine +/x-pack/test/security_solution_cypress/cypress/e2e/detection_response/sourcerer @elastic/security-detection-engine +/x-pack/test/security_solution_cypress/cypress/e2e/detection_response/detection_alerts @elastic/security-detection-engine /x-pack/test/security_solution_cypress/cypress/e2e/detection_response/rule_actions @elastic/security-detection-engine /x-pack/test/security_solution_cypress/cypress/e2e/detection_response/rule_creation @elastic/security-detection-engine /x-pack/test/security_solution_cypress/cypress/e2e/detection_response/rule_edit @elastic/security-detection-engine diff --git a/api_docs/actions.mdx b/api_docs/actions.mdx index d8bb7bb6c8d16..8f58ca2eaff97 100644 --- a/api_docs/actions.mdx +++ b/api_docs/actions.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/actions title: "actions" image: https://source.unsplash.com/400x175/?github description: API docs for the actions plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'actions'] --- import actionsObj from './actions.devdocs.json'; diff --git a/api_docs/advanced_settings.mdx b/api_docs/advanced_settings.mdx index eb864e759be6f..adbbd3e9da87d 100644 --- a/api_docs/advanced_settings.mdx +++ b/api_docs/advanced_settings.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/advancedSettings title: "advancedSettings" image: https://source.unsplash.com/400x175/?github description: API docs for the advancedSettings plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'advancedSettings'] --- import advancedSettingsObj from './advanced_settings.devdocs.json'; diff --git a/api_docs/aiops.mdx b/api_docs/aiops.mdx index 71391973107fe..e0f6b6db40179 100644 --- a/api_docs/aiops.mdx +++ b/api_docs/aiops.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/aiops title: "aiops" image: https://source.unsplash.com/400x175/?github description: API docs for the aiops plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'aiops'] --- import aiopsObj from './aiops.devdocs.json'; diff --git a/api_docs/alerting.devdocs.json b/api_docs/alerting.devdocs.json index 3140b43430a01..d92d8b3859a2b 100644 --- a/api_docs/alerting.devdocs.json +++ b/api_docs/alerting.devdocs.json @@ -5466,6 +5466,101 @@ "returnComment": [], "initialIsOpen": false }, + { + "parentPluginId": "alerting", + "id": "def-common.getRuleCircuitBreakerErrorMessage", + "type": "Function", + "tags": [], + "label": "getRuleCircuitBreakerErrorMessage", + "description": [], + "signature": [ + "({ name, interval, intervalAvailable, action, rules, }: { name?: string | undefined; interval: number; intervalAvailable: number; action: \"create\" | \"update\" | \"bulkEdit\" | \"enable\" | \"bulkEnable\"; rules?: number | undefined; }) => string" + ], + "path": "x-pack/plugins/alerting/common/rule_circuit_breaker_error_message.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "alerting", + "id": "def-common.getRuleCircuitBreakerErrorMessage.$1", + "type": "Object", + "tags": [], + "label": "{\n name = '',\n interval,\n intervalAvailable,\n action,\n rules = 1,\n}", + "description": [], + "path": "x-pack/plugins/alerting/common/rule_circuit_breaker_error_message.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "alerting", + "id": "def-common.getRuleCircuitBreakerErrorMessage.$1.name", + "type": "string", + "tags": [], + "label": "name", + "description": [], + "signature": [ + "string | undefined" + ], + "path": "x-pack/plugins/alerting/common/rule_circuit_breaker_error_message.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "alerting", + "id": "def-common.getRuleCircuitBreakerErrorMessage.$1.interval", + "type": "number", + "tags": [], + "label": "interval", + "description": [], + "path": "x-pack/plugins/alerting/common/rule_circuit_breaker_error_message.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "alerting", + "id": "def-common.getRuleCircuitBreakerErrorMessage.$1.intervalAvailable", + "type": "number", + "tags": [], + "label": "intervalAvailable", + "description": [], + "path": "x-pack/plugins/alerting/common/rule_circuit_breaker_error_message.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "alerting", + "id": "def-common.getRuleCircuitBreakerErrorMessage.$1.action", + "type": "CompoundType", + "tags": [], + "label": "action", + "description": [], + "signature": [ + "\"create\" | \"update\" | \"bulkEdit\" | \"enable\" | \"bulkEnable\"" + ], + "path": "x-pack/plugins/alerting/common/rule_circuit_breaker_error_message.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "alerting", + "id": "def-common.getRuleCircuitBreakerErrorMessage.$1.rules", + "type": "number", + "tags": [], + "label": "rules", + "description": [], + "signature": [ + "number | undefined" + ], + "path": "x-pack/plugins/alerting/common/rule_circuit_breaker_error_message.ts", + "deprecated": false, + "trackAdoption": false + } + ] + } + ], + "returnComment": [], + "initialIsOpen": false + }, { "parentPluginId": "alerting", "id": "def-common.getRuleTagsAggregation", @@ -5645,6 +5740,39 @@ "returnComment": [], "initialIsOpen": false }, + { + "parentPluginId": "alerting", + "id": "def-common.parseRuleCircuitBreakerErrorMessage", + "type": "Function", + "tags": [], + "label": "parseRuleCircuitBreakerErrorMessage", + "description": [], + "signature": [ + "(message: string) => { summary: string; details?: string | undefined; }" + ], + "path": "x-pack/plugins/alerting/common/rule_circuit_breaker_error_message.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "alerting", + "id": "def-common.parseRuleCircuitBreakerErrorMessage.$1", + "type": "string", + "tags": [], + "label": "message", + "description": [], + "signature": [ + "string" + ], + "path": "x-pack/plugins/alerting/common/rule_circuit_breaker_error_message.ts", + "deprecated": false, + "trackAdoption": false, + "isRequired": true + } + ], + "returnComment": [], + "initialIsOpen": false + }, { "parentPluginId": "alerting", "id": "def-common.validateDurationSchema", diff --git a/api_docs/alerting.mdx b/api_docs/alerting.mdx index d9ddd76fd95ac..514ff791b1715 100644 --- a/api_docs/alerting.mdx +++ b/api_docs/alerting.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/alerting title: "alerting" image: https://source.unsplash.com/400x175/?github description: API docs for the alerting plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'alerting'] --- import alertingObj from './alerting.devdocs.json'; @@ -21,7 +21,7 @@ Contact [@elastic/response-ops](https://github.com/orgs/elastic/teams/response-o | Public API count | Any count | Items lacking comments | Missing exports | |-------------------|-----------|------------------------|-----------------| -| 776 | 1 | 745 | 50 | +| 785 | 1 | 754 | 50 | ## Client diff --git a/api_docs/apm.mdx b/api_docs/apm.mdx index be106b4414d7d..07ad66ffc915e 100644 --- a/api_docs/apm.mdx +++ b/api_docs/apm.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/apm title: "apm" image: https://source.unsplash.com/400x175/?github description: API docs for the apm plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'apm'] --- import apmObj from './apm.devdocs.json'; diff --git a/api_docs/apm_data_access.mdx b/api_docs/apm_data_access.mdx index c3e53bac68ef3..f38868e671cc4 100644 --- a/api_docs/apm_data_access.mdx +++ b/api_docs/apm_data_access.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/apmDataAccess title: "apmDataAccess" image: https://source.unsplash.com/400x175/?github description: API docs for the apmDataAccess plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'apmDataAccess'] --- import apmDataAccessObj from './apm_data_access.devdocs.json'; diff --git a/api_docs/asset_manager.mdx b/api_docs/asset_manager.mdx index 37d8c9c2fd458..cc900e9f0a12b 100644 --- a/api_docs/asset_manager.mdx +++ b/api_docs/asset_manager.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/assetManager title: "assetManager" image: https://source.unsplash.com/400x175/?github description: API docs for the assetManager plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'assetManager'] --- import assetManagerObj from './asset_manager.devdocs.json'; diff --git a/api_docs/banners.mdx b/api_docs/banners.mdx index 32a9b1088d44d..5df32560c5aa5 100644 --- a/api_docs/banners.mdx +++ b/api_docs/banners.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/banners title: "banners" image: https://source.unsplash.com/400x175/?github description: API docs for the banners plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'banners'] --- import bannersObj from './banners.devdocs.json'; diff --git a/api_docs/bfetch.mdx b/api_docs/bfetch.mdx index c5eaec7b72e31..733c86a4f15f5 100644 --- a/api_docs/bfetch.mdx +++ b/api_docs/bfetch.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/bfetch title: "bfetch" image: https://source.unsplash.com/400x175/?github description: API docs for the bfetch plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'bfetch'] --- import bfetchObj from './bfetch.devdocs.json'; diff --git a/api_docs/canvas.mdx b/api_docs/canvas.mdx index 95b16032b2c17..8dd30f57ba7e2 100644 --- a/api_docs/canvas.mdx +++ b/api_docs/canvas.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/canvas title: "canvas" image: https://source.unsplash.com/400x175/?github description: API docs for the canvas plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'canvas'] --- import canvasObj from './canvas.devdocs.json'; diff --git a/api_docs/cases.mdx b/api_docs/cases.mdx index dc156609a0c1f..1b582aa054f72 100644 --- a/api_docs/cases.mdx +++ b/api_docs/cases.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/cases title: "cases" image: https://source.unsplash.com/400x175/?github description: API docs for the cases plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'cases'] --- import casesObj from './cases.devdocs.json'; diff --git a/api_docs/charts.mdx b/api_docs/charts.mdx index 14a64d9976b55..f15a05b51355d 100644 --- a/api_docs/charts.mdx +++ b/api_docs/charts.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/charts title: "charts" image: https://source.unsplash.com/400x175/?github description: API docs for the charts plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'charts'] --- import chartsObj from './charts.devdocs.json'; diff --git a/api_docs/cloud.mdx b/api_docs/cloud.mdx index f90bb10215c5c..31154d14923a9 100644 --- a/api_docs/cloud.mdx +++ b/api_docs/cloud.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/cloud title: "cloud" image: https://source.unsplash.com/400x175/?github description: API docs for the cloud plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'cloud'] --- import cloudObj from './cloud.devdocs.json'; diff --git a/api_docs/cloud_data_migration.mdx b/api_docs/cloud_data_migration.mdx index c8fd0b2984d3b..4ebb5321c9304 100644 --- a/api_docs/cloud_data_migration.mdx +++ b/api_docs/cloud_data_migration.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/cloudDataMigration title: "cloudDataMigration" image: https://source.unsplash.com/400x175/?github description: API docs for the cloudDataMigration plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'cloudDataMigration'] --- import cloudDataMigrationObj from './cloud_data_migration.devdocs.json'; diff --git a/api_docs/cloud_defend.mdx b/api_docs/cloud_defend.mdx index 0402ff904e014..3303da3887947 100644 --- a/api_docs/cloud_defend.mdx +++ b/api_docs/cloud_defend.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/cloudDefend title: "cloudDefend" image: https://source.unsplash.com/400x175/?github description: API docs for the cloudDefend plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'cloudDefend'] --- import cloudDefendObj from './cloud_defend.devdocs.json'; diff --git a/api_docs/cloud_experiments.mdx b/api_docs/cloud_experiments.mdx index 35819ef940e0b..31127e9c4390d 100644 --- a/api_docs/cloud_experiments.mdx +++ b/api_docs/cloud_experiments.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/cloudExperiments title: "cloudExperiments" image: https://source.unsplash.com/400x175/?github description: API docs for the cloudExperiments plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'cloudExperiments'] --- import cloudExperimentsObj from './cloud_experiments.devdocs.json'; diff --git a/api_docs/cloud_security_posture.mdx b/api_docs/cloud_security_posture.mdx index dd8010ee20848..bd0d4b428ca44 100644 --- a/api_docs/cloud_security_posture.mdx +++ b/api_docs/cloud_security_posture.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/cloudSecurityPosture title: "cloudSecurityPosture" image: https://source.unsplash.com/400x175/?github description: API docs for the cloudSecurityPosture plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'cloudSecurityPosture'] --- import cloudSecurityPostureObj from './cloud_security_posture.devdocs.json'; diff --git a/api_docs/console.mdx b/api_docs/console.mdx index 6131157f8c1e5..781dc1a047386 100644 --- a/api_docs/console.mdx +++ b/api_docs/console.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/console title: "console" image: https://source.unsplash.com/400x175/?github description: API docs for the console plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'console'] --- import consoleObj from './console.devdocs.json'; diff --git a/api_docs/content_management.mdx b/api_docs/content_management.mdx index 4ae00130a22c8..f15dc523e6a26 100644 --- a/api_docs/content_management.mdx +++ b/api_docs/content_management.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/contentManagement title: "contentManagement" image: https://source.unsplash.com/400x175/?github description: API docs for the contentManagement plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'contentManagement'] --- import contentManagementObj from './content_management.devdocs.json'; diff --git a/api_docs/controls.mdx b/api_docs/controls.mdx index 012e2b3eddbec..9086b65554229 100644 --- a/api_docs/controls.mdx +++ b/api_docs/controls.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/controls title: "controls" image: https://source.unsplash.com/400x175/?github description: API docs for the controls plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'controls'] --- import controlsObj from './controls.devdocs.json'; diff --git a/api_docs/custom_integrations.mdx b/api_docs/custom_integrations.mdx index 9c8db5d9fdc1b..3ee0bb3d464a1 100644 --- a/api_docs/custom_integrations.mdx +++ b/api_docs/custom_integrations.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/customIntegrations title: "customIntegrations" image: https://source.unsplash.com/400x175/?github description: API docs for the customIntegrations plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'customIntegrations'] --- import customIntegrationsObj from './custom_integrations.devdocs.json'; diff --git a/api_docs/dashboard.mdx b/api_docs/dashboard.mdx index 62e1c71a17416..546d6fc95a868 100644 --- a/api_docs/dashboard.mdx +++ b/api_docs/dashboard.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/dashboard title: "dashboard" image: https://source.unsplash.com/400x175/?github description: API docs for the dashboard plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'dashboard'] --- import dashboardObj from './dashboard.devdocs.json'; diff --git a/api_docs/dashboard_enhanced.mdx b/api_docs/dashboard_enhanced.mdx index 97294d675c7c1..ba3f2178335f2 100644 --- a/api_docs/dashboard_enhanced.mdx +++ b/api_docs/dashboard_enhanced.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/dashboardEnhanced title: "dashboardEnhanced" image: https://source.unsplash.com/400x175/?github description: API docs for the dashboardEnhanced plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'dashboardEnhanced'] --- import dashboardEnhancedObj from './dashboard_enhanced.devdocs.json'; diff --git a/api_docs/data.devdocs.json b/api_docs/data.devdocs.json index 83f4f01db8b1f..e03aad192c7d2 100644 --- a/api_docs/data.devdocs.json +++ b/api_docs/data.devdocs.json @@ -7805,6 +7805,20 @@ "path": "src/plugins/data_views/common/types.ts", "deprecated": false, "trackAdoption": false + }, + { + "parentPluginId": "data", + "id": "def-public.GetFieldsOptions.allowHidden", + "type": "CompoundType", + "tags": [], + "label": "allowHidden", + "description": [], + "signature": [ + "boolean | undefined" + ], + "path": "src/plugins/data_views/common/types.ts", + "deprecated": false, + "trackAdoption": false } ], "initialIsOpen": false @@ -14244,6 +14258,22 @@ "index pattern string" ] }, + { + "parentPluginId": "data", + "id": "def-server.DataView.getAllowHidden", + "type": "Function", + "tags": [], + "label": "getAllowHidden", + "description": [], + "signature": [ + "() => boolean" + ], + "path": "src/plugins/data_views/common/data_views/data_view.ts", + "deprecated": false, + "trackAdoption": false, + "children": [], + "returnComment": [] + }, { "parentPluginId": "data", "id": "def-server.DataView.setIndexPattern", @@ -17235,7 +17265,7 @@ "signature": [ "(options: { pattern: string | string[]; metaFields?: string[] | undefined; fieldCapsOptions?: { allow_no_indices: boolean; includeUnmapped?: boolean | undefined; } | undefined; type?: string | undefined; rollupIndex?: string | undefined; indexFilter?: ", "QueryDslQueryContainer", - " | undefined; fields?: string[] | undefined; }) => Promise<{ fields: ", + " | undefined; fields?: string[] | undefined; allowHidden?: boolean | undefined; }) => Promise<{ fields: ", { "pluginId": "dataViews", "scope": "server", @@ -17358,6 +17388,20 @@ "path": "src/plugins/data_views/server/fetcher/index_patterns_fetcher.ts", "deprecated": false, "trackAdoption": false + }, + { + "parentPluginId": "data", + "id": "def-server.IndexPatternsFetcher.getFieldsForWildcard.$1.allowHidden", + "type": "CompoundType", + "tags": [], + "label": "allowHidden", + "description": [], + "signature": [ + "boolean | undefined" + ], + "path": "src/plugins/data_views/server/fetcher/index_patterns_fetcher.ts", + "deprecated": false, + "trackAdoption": false } ] } @@ -22003,6 +22047,22 @@ "index pattern string" ] }, + { + "parentPluginId": "data", + "id": "def-common.DataView.getAllowHidden", + "type": "Function", + "tags": [], + "label": "getAllowHidden", + "description": [], + "signature": [ + "() => boolean" + ], + "path": "src/plugins/data_views/common/data_views/data_view.ts", + "deprecated": false, + "trackAdoption": false, + "children": [], + "returnComment": [] + }, { "parentPluginId": "data", "id": "def-common.DataView.setIndexPattern", @@ -26905,6 +26965,22 @@ "path": "src/plugins/data_views/common/types.ts", "deprecated": false, "trackAdoption": false + }, + { + "parentPluginId": "data", + "id": "def-common.DataViewAttributes.allowHidden", + "type": "CompoundType", + "tags": [], + "label": "allowHidden", + "description": [ + "\nAllow hidden and system indices when loading field list" + ], + "signature": [ + "boolean | undefined" + ], + "path": "src/plugins/data_views/common/types.ts", + "deprecated": false, + "trackAdoption": false } ], "initialIsOpen": false @@ -27154,6 +27230,20 @@ "path": "src/plugins/data_views/common/types.ts", "deprecated": false, "trackAdoption": false + }, + { + "parentPluginId": "data", + "id": "def-common.GetFieldsOptions.allowHidden", + "type": "CompoundType", + "tags": [], + "label": "allowHidden", + "description": [], + "signature": [ + "boolean | undefined" + ], + "path": "src/plugins/data_views/common/types.ts", + "deprecated": false, + "trackAdoption": false } ], "initialIsOpen": false @@ -27331,7 +27421,7 @@ "section": "def-common.FieldAttrs", "text": "FieldAttrs" }, - " | undefined; allowNoIndex?: boolean | undefined; namespaces?: string[] | undefined; name?: string | undefined; }" + " | undefined; allowNoIndex?: boolean | undefined; namespaces?: string[] | undefined; name?: string | undefined; allowHidden?: boolean | undefined; }" ], "path": "src/plugins/data_views/common/expressions/load_index_pattern.ts", "deprecated": false, @@ -28458,7 +28548,7 @@ "section": "def-common.FieldAttrs", "text": "FieldAttrs" }, - " | undefined; allowNoIndex?: boolean | undefined; namespaces?: string[] | undefined; name?: string | undefined; }" + " | undefined; allowNoIndex?: boolean | undefined; namespaces?: string[] | undefined; name?: string | undefined; allowHidden?: boolean | undefined; }" ], "path": "src/plugins/data_views/common/types.ts", "deprecated": false, diff --git a/api_docs/data.mdx b/api_docs/data.mdx index 61cb2ad104183..9a44e619751b4 100644 --- a/api_docs/data.mdx +++ b/api_docs/data.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/data title: "data" image: https://source.unsplash.com/400x175/?github description: API docs for the data plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'data'] --- import dataObj from './data.devdocs.json'; @@ -21,7 +21,7 @@ Contact [@elastic/kibana-visualizations](https://github.com/orgs/elastic/teams/k | Public API count | Any count | Items lacking comments | Missing exports | |-------------------|-----------|------------------------|-----------------| -| 3284 | 33 | 2549 | 24 | +| 3290 | 33 | 2554 | 24 | ## Client diff --git a/api_docs/data_query.mdx b/api_docs/data_query.mdx index 2396215941b7d..1ca00b2faa83d 100644 --- a/api_docs/data_query.mdx +++ b/api_docs/data_query.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/data-query title: "data.query" image: https://source.unsplash.com/400x175/?github description: API docs for the data.query plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'data.query'] --- import dataQueryObj from './data_query.devdocs.json'; @@ -21,7 +21,7 @@ Contact [@elastic/kibana-visualizations](https://github.com/orgs/elastic/teams/k | Public API count | Any count | Items lacking comments | Missing exports | |-------------------|-----------|------------------------|-----------------| -| 3284 | 33 | 2549 | 24 | +| 3290 | 33 | 2554 | 24 | ## Client diff --git a/api_docs/data_search.mdx b/api_docs/data_search.mdx index 4da6bdf3c0309..4b08d2efdf7bd 100644 --- a/api_docs/data_search.mdx +++ b/api_docs/data_search.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/data-search title: "data.search" image: https://source.unsplash.com/400x175/?github description: API docs for the data.search plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'data.search'] --- import dataSearchObj from './data_search.devdocs.json'; @@ -21,7 +21,7 @@ Contact [@elastic/kibana-visualizations](https://github.com/orgs/elastic/teams/k | Public API count | Any count | Items lacking comments | Missing exports | |-------------------|-----------|------------------------|-----------------| -| 3284 | 33 | 2549 | 24 | +| 3290 | 33 | 2554 | 24 | ## Client diff --git a/api_docs/data_view_editor.mdx b/api_docs/data_view_editor.mdx index 76146ece14ca1..17b15773d4b39 100644 --- a/api_docs/data_view_editor.mdx +++ b/api_docs/data_view_editor.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/dataViewEditor title: "dataViewEditor" image: https://source.unsplash.com/400x175/?github description: API docs for the dataViewEditor plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'dataViewEditor'] --- import dataViewEditorObj from './data_view_editor.devdocs.json'; diff --git a/api_docs/data_view_field_editor.mdx b/api_docs/data_view_field_editor.mdx index 8e5bd0814c469..98d06734e5f46 100644 --- a/api_docs/data_view_field_editor.mdx +++ b/api_docs/data_view_field_editor.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/dataViewFieldEditor title: "dataViewFieldEditor" image: https://source.unsplash.com/400x175/?github description: API docs for the dataViewFieldEditor plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'dataViewFieldEditor'] --- import dataViewFieldEditorObj from './data_view_field_editor.devdocs.json'; diff --git a/api_docs/data_view_management.mdx b/api_docs/data_view_management.mdx index e625d0103f4db..a7c1c039e11eb 100644 --- a/api_docs/data_view_management.mdx +++ b/api_docs/data_view_management.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/dataViewManagement title: "dataViewManagement" image: https://source.unsplash.com/400x175/?github description: API docs for the dataViewManagement plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'dataViewManagement'] --- import dataViewManagementObj from './data_view_management.devdocs.json'; diff --git a/api_docs/data_views.devdocs.json b/api_docs/data_views.devdocs.json index 068d11d335ab7..d26df0275f478 100644 --- a/api_docs/data_views.devdocs.json +++ b/api_docs/data_views.devdocs.json @@ -1225,6 +1225,22 @@ "index pattern string" ] }, + { + "parentPluginId": "dataViews", + "id": "def-public.DataView.getAllowHidden", + "type": "Function", + "tags": [], + "label": "getAllowHidden", + "description": [], + "signature": [ + "() => boolean" + ], + "path": "src/plugins/data_views/common/data_views/data_view.ts", + "deprecated": false, + "trackAdoption": false, + "children": [], + "returnComment": [] + }, { "parentPluginId": "dataViews", "id": "def-public.DataView.setIndexPattern", @@ -6126,6 +6142,22 @@ "path": "src/plugins/data_views/common/types.ts", "deprecated": false, "trackAdoption": false + }, + { + "parentPluginId": "dataViews", + "id": "def-public.DataViewAttributes.allowHidden", + "type": "CompoundType", + "tags": [], + "label": "allowHidden", + "description": [ + "\nAllow hidden and system indices when loading field list" + ], + "signature": [ + "boolean | undefined" + ], + "path": "src/plugins/data_views/common/types.ts", + "deprecated": false, + "trackAdoption": false } ], "initialIsOpen": false @@ -7782,7 +7814,7 @@ "section": "def-common.FieldAttrs", "text": "FieldAttrs" }, - " | undefined; allowNoIndex?: boolean | undefined; namespaces?: string[] | undefined; name?: string | undefined; }" + " | undefined; allowNoIndex?: boolean | undefined; namespaces?: string[] | undefined; name?: string | undefined; allowHidden?: boolean | undefined; }" ], "path": "src/plugins/data_views/common/types.ts", "deprecated": false, @@ -9232,6 +9264,22 @@ "index pattern string" ] }, + { + "parentPluginId": "dataViews", + "id": "def-server.DataView.getAllowHidden", + "type": "Function", + "tags": [], + "label": "getAllowHidden", + "description": [], + "signature": [ + "() => boolean" + ], + "path": "src/plugins/data_views/common/data_views/data_view.ts", + "deprecated": false, + "trackAdoption": false, + "children": [], + "returnComment": [] + }, { "parentPluginId": "dataViews", "id": "def-server.DataView.setIndexPattern", @@ -12517,7 +12565,7 @@ "signature": [ "(options: { pattern: string | string[]; metaFields?: string[] | undefined; fieldCapsOptions?: { allow_no_indices: boolean; includeUnmapped?: boolean | undefined; } | undefined; type?: string | undefined; rollupIndex?: string | undefined; indexFilter?: ", "QueryDslQueryContainer", - " | undefined; fields?: string[] | undefined; }) => Promise<{ fields: ", + " | undefined; fields?: string[] | undefined; allowHidden?: boolean | undefined; }) => Promise<{ fields: ", { "pluginId": "dataViews", "scope": "server", @@ -12640,6 +12688,20 @@ "path": "src/plugins/data_views/server/fetcher/index_patterns_fetcher.ts", "deprecated": false, "trackAdoption": false + }, + { + "parentPluginId": "dataViews", + "id": "def-server.IndexPatternsFetcher.getFieldsForWildcard.$1.allowHidden", + "type": "CompoundType", + "tags": [], + "label": "allowHidden", + "description": [], + "signature": [ + "boolean | undefined" + ], + "path": "src/plugins/data_views/server/fetcher/index_patterns_fetcher.ts", + "deprecated": false, + "trackAdoption": false } ] } @@ -16300,6 +16362,22 @@ "index pattern string" ] }, + { + "parentPluginId": "dataViews", + "id": "def-common.DataView.getAllowHidden", + "type": "Function", + "tags": [], + "label": "getAllowHidden", + "description": [], + "signature": [ + "() => boolean" + ], + "path": "src/plugins/data_views/common/data_views/data_view.ts", + "deprecated": false, + "trackAdoption": false, + "children": [], + "returnComment": [] + }, { "parentPluginId": "dataViews", "id": "def-common.DataView.setIndexPattern", @@ -20723,6 +20801,22 @@ "path": "src/plugins/data_views/common/types.ts", "deprecated": false, "trackAdoption": false + }, + { + "parentPluginId": "dataViews", + "id": "def-common.DataViewAttributes.allowHidden", + "type": "CompoundType", + "tags": [], + "label": "allowHidden", + "description": [ + "\nAllow hidden and system indices when loading field list" + ], + "signature": [ + "boolean | undefined" + ], + "path": "src/plugins/data_views/common/types.ts", + "deprecated": false, + "trackAdoption": false } ], "initialIsOpen": false @@ -23055,6 +23149,20 @@ "path": "src/plugins/data_views/common/types.ts", "deprecated": false, "trackAdoption": false + }, + { + "parentPluginId": "dataViews", + "id": "def-common.GetFieldsOptions.allowHidden", + "type": "CompoundType", + "tags": [], + "label": "allowHidden", + "description": [], + "signature": [ + "boolean | undefined" + ], + "path": "src/plugins/data_views/common/types.ts", + "deprecated": false, + "trackAdoption": false } ], "initialIsOpen": false @@ -23737,7 +23845,7 @@ "section": "def-common.FieldAttrs", "text": "FieldAttrs" }, - " | undefined; allowNoIndex?: boolean | undefined; namespaces?: string[] | undefined; name?: string | undefined; }" + " | undefined; allowNoIndex?: boolean | undefined; namespaces?: string[] | undefined; name?: string | undefined; allowHidden?: boolean | undefined; }" ], "path": "src/plugins/data_views/common/expressions/load_index_pattern.ts", "deprecated": false, @@ -25460,7 +25568,7 @@ "section": "def-common.FieldAttrs", "text": "FieldAttrs" }, - " | undefined; allowNoIndex?: boolean | undefined; namespaces?: string[] | undefined; name?: string | undefined; }" + " | undefined; allowNoIndex?: boolean | undefined; namespaces?: string[] | undefined; name?: string | undefined; allowHidden?: boolean | undefined; }" ], "path": "src/plugins/data_views/common/types.ts", "deprecated": false, diff --git a/api_docs/data_views.mdx b/api_docs/data_views.mdx index 4d2d73c2f5f8f..56087f89db602 100644 --- a/api_docs/data_views.mdx +++ b/api_docs/data_views.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/dataViews title: "dataViews" image: https://source.unsplash.com/400x175/?github description: API docs for the dataViews plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'dataViews'] --- import dataViewsObj from './data_views.devdocs.json'; @@ -21,7 +21,7 @@ Contact [@elastic/kibana-data-discovery](https://github.com/orgs/elastic/teams/k | Public API count | Any count | Items lacking comments | Missing exports | |-------------------|-----------|------------------------|-----------------| -| 1041 | 0 | 257 | 2 | +| 1048 | 0 | 262 | 2 | ## Client diff --git a/api_docs/data_visualizer.mdx b/api_docs/data_visualizer.mdx index 822366d2fd440..4db4dfa1e5f75 100644 --- a/api_docs/data_visualizer.mdx +++ b/api_docs/data_visualizer.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/dataVisualizer title: "dataVisualizer" image: https://source.unsplash.com/400x175/?github description: API docs for the dataVisualizer plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'dataVisualizer'] --- import dataVisualizerObj from './data_visualizer.devdocs.json'; diff --git a/api_docs/deprecations_by_api.mdx b/api_docs/deprecations_by_api.mdx index e8421c15bd5e7..ed4efb5ff9915 100644 --- a/api_docs/deprecations_by_api.mdx +++ b/api_docs/deprecations_by_api.mdx @@ -7,7 +7,7 @@ id: kibDevDocsDeprecationsByApi slug: /kibana-dev-docs/api-meta/deprecated-api-list-by-api title: Deprecated API usage by API description: A list of deprecated APIs, which plugins are still referencing them, and when they need to be removed by. -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana'] --- @@ -25,7 +25,7 @@ tags: ['contributor', 'dev', 'apidocs', 'kibana'] | | stackAlerts, alerting, securitySolution, inputControlVis | - | | | @kbn/es-query, @kbn/visualization-ui-components, observability, securitySolution, timelines, lists, threatIntelligence, savedSearch, dataViews, savedObjectsManagement, unifiedSearch, controls, @kbn/unified-field-list, lens, triggersActionsUi, ml, apm, exploratoryView, logsShared, fleet, stackAlerts, dataVisualizer, infra, canvas, presentationUtil, enterpriseSearch, graph, visTypeTimeseries, transform, upgradeAssistant, uptime, ux, maps, dataViewManagement, eventAnnotationListing, inputControlVis, visDefaultEditor, visTypeTimelion, visTypeVega, data | - | | | @kbn/es-query, @kbn/visualization-ui-components, observability, securitySolution, timelines, lists, threatIntelligence, savedSearch, data, savedObjectsManagement, unifiedSearch, controls, @kbn/unified-field-list, lens, triggersActionsUi, ml, apm, exploratoryView, logsShared, fleet, stackAlerts, dataVisualizer, infra, canvas, presentationUtil, enterpriseSearch, graph, visTypeTimeseries, transform, upgradeAssistant, uptime, ux, maps, dataViewManagement, eventAnnotationListing, inputControlVis, visDefaultEditor, visTypeTimelion, visTypeVega | - | -| | home, data, esUiShared, savedObjectsManagement, exploratoryView, fleet, observability, ml, apm, indexLifecycleManagement, observabilityOnboarding, synthetics, upgradeAssistant, uptime, ux, kibanaOverview | - | +| | home, data, esUiShared, savedObjectsManagement, exploratoryView, fleet, ml, apm, indexLifecycleManagement, observabilityOnboarding, synthetics, upgradeAssistant, uptime, ux, kibanaOverview | - | | | share, uiActions, guidedOnboarding, home, serverless, management, spaces, savedObjects, indexManagement, visualizations, controls, dashboard, savedObjectsTagging, expressionXY, lens, expressionMetricVis, expressionGauge, security, alerting, triggersActionsUi, cases, aiops, advancedSettings, exploratoryView, fleet, licenseManagement, maps, dataVisualizer, ml, infra, profiling, apm, expressionImage, expressionMetric, expressionError, expressionRevealImage, expressionRepeatImage, expressionShape, crossClusterReplication, enterpriseSearch, globalSearchBar, graph, grokdebugger, indexLifecycleManagement, ingestPipelines, logstash, monitoring, observabilityOnboarding, osquery, devTools, painlessLab, remoteClusters, rollup, searchprofiler, newsfeed, securitySolution, snapshotRestore, synthetics, transform, upgradeAssistant, uptime, ux, watcher, cloudDataMigration, console, filesManagement, kibanaOverview, visDefaultEditor, expressionHeatmap, expressionLegacyMetricVis, expressionPartitionVis, expressionTagcloud, visTypeTable, visTypeTimelion, visTypeTimeseries, visTypeVega, visTypeVislib | - | | | encryptedSavedObjects, actions, data, ml, logstash, securitySolution, cloudChat | - | | | actions, ml, savedObjectsTagging, enterpriseSearch | - | @@ -130,7 +130,6 @@ tags: ['contributor', 'dev', 'apidocs', 'kibana'] | | visTypePie | - | | | @kbn/core-elasticsearch-server-internal, @kbn/core-plugins-server-internal, observabilityOnboarding, console | - | | | @kbn/content-management-table-list-view, filesManagement | - | -| | navigation | - | | | @kbn/react-kibana-context-styled, kibanaReact | - | | | encryptedSavedObjects | - | | | @kbn/core | - | diff --git a/api_docs/deprecations_by_plugin.mdx b/api_docs/deprecations_by_plugin.mdx index 03cb728187dec..d5d471b2ab5bb 100644 --- a/api_docs/deprecations_by_plugin.mdx +++ b/api_docs/deprecations_by_plugin.mdx @@ -7,7 +7,7 @@ id: kibDevDocsDeprecationsByPlugin slug: /kibana-dev-docs/api-meta/deprecated-api-list-by-plugin title: Deprecated API usage by plugin description: A list of deprecated APIs, which plugins are still referencing them, and when they need to be removed by. -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana'] --- @@ -1217,14 +1217,6 @@ tags: ['contributor', 'dev', 'apidocs', 'kibana'] -## navigation - -| Deprecated API | Reference location(s) | Remove By | -| ---------------|-----------|-----------| -| | [top_nav_menu.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/navigation/public/top_nav_menu/top_nav_menu.tsx#:~:text=MountPointPortal), [top_nav_menu.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/navigation/public/top_nav_menu/top_nav_menu.tsx#:~:text=MountPointPortal), [top_nav_menu.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/navigation/public/top_nav_menu/top_nav_menu.tsx#:~:text=MountPointPortal) | - | - - - ## newsfeed | Deprecated API | Reference location(s) | Remove By | @@ -1241,7 +1233,6 @@ tags: ['contributor', 'dev', 'apidocs', 'kibana'] | | [use_metrics_explorer_data.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/observability/public/components/custom_threshold/hooks/use_metrics_explorer_data.ts#:~:text=title), [use_metrics_explorer_data.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/observability/public/components/custom_threshold/hooks/use_metrics_explorer_data.ts#:~:text=title), [use_metrics_explorer_data.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/observability/public/components/custom_threshold/hooks/use_metrics_explorer_data.ts#:~:text=title), [use_metrics_explorer_data.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/observability/public/components/custom_threshold/hooks/use_metrics_explorer_data.ts#:~:text=title), [custom_threshold_rule_expression.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/observability/public/components/custom_threshold/custom_threshold_rule_expression.tsx#:~:text=title), [alert_details_app_section.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/observability/public/components/custom_threshold/components/alert_details_app_section.tsx#:~:text=title), [use_metrics_explorer_data.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/observability/public/components/custom_threshold/hooks/use_metrics_explorer_data.ts#:~:text=title), [use_metrics_explorer_data.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/observability/public/components/custom_threshold/hooks/use_metrics_explorer_data.ts#:~:text=title), [use_metrics_explorer_data.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/observability/public/components/custom_threshold/hooks/use_metrics_explorer_data.ts#:~:text=title), [use_metrics_explorer_data.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/observability/public/components/custom_threshold/hooks/use_metrics_explorer_data.ts#:~:text=title)+ 2 more | - | | | [use_metrics_explorer_data.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/observability/public/components/custom_threshold/hooks/use_metrics_explorer_data.ts#:~:text=title), [use_metrics_explorer_data.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/observability/public/components/custom_threshold/hooks/use_metrics_explorer_data.ts#:~:text=title), [use_metrics_explorer_data.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/observability/public/components/custom_threshold/hooks/use_metrics_explorer_data.ts#:~:text=title), [use_metrics_explorer_data.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/observability/public/components/custom_threshold/hooks/use_metrics_explorer_data.ts#:~:text=title), [custom_threshold_rule_expression.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/observability/public/components/custom_threshold/custom_threshold_rule_expression.tsx#:~:text=title), [alert_details_app_section.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/observability/public/components/custom_threshold/components/alert_details_app_section.tsx#:~:text=title), [use_metrics_explorer_data.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/observability/public/components/custom_threshold/hooks/use_metrics_explorer_data.ts#:~:text=title), [use_metrics_explorer_data.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/observability/public/components/custom_threshold/hooks/use_metrics_explorer_data.ts#:~:text=title), [use_metrics_explorer_data.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/observability/public/components/custom_threshold/hooks/use_metrics_explorer_data.ts#:~:text=title), [use_metrics_explorer_data.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/observability/public/components/custom_threshold/hooks/use_metrics_explorer_data.ts#:~:text=title)+ 2 more | - | | | [use_metrics_explorer_data.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/observability/public/components/custom_threshold/hooks/use_metrics_explorer_data.ts#:~:text=title), [use_metrics_explorer_data.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/observability/public/components/custom_threshold/hooks/use_metrics_explorer_data.ts#:~:text=title), [use_metrics_explorer_data.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/observability/public/components/custom_threshold/hooks/use_metrics_explorer_data.ts#:~:text=title), [use_metrics_explorer_data.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/observability/public/components/custom_threshold/hooks/use_metrics_explorer_data.ts#:~:text=title), [custom_threshold_rule_expression.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/observability/public/components/custom_threshold/custom_threshold_rule_expression.tsx#:~:text=title), [alert_details_app_section.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/observability/public/components/custom_threshold/components/alert_details_app_section.tsx#:~:text=title) | - | -| | [index.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/observability/public/application/index.tsx#:~:text=RedirectAppLinks), [index.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/observability/public/application/index.tsx#:~:text=RedirectAppLinks), [index.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/observability/public/application/index.tsx#:~:text=RedirectAppLinks) | - | | | [render_cell_value.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/observability/public/components/alerts_table/render_cell_value.tsx#:~:text=DeprecatedCellValueElementProps), [render_cell_value.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/observability/public/components/alerts_table/render_cell_value.tsx#:~:text=DeprecatedCellValueElementProps) | - | @@ -1628,7 +1619,7 @@ migrates to using the Kibana Privilege model: https://github.com/elastic/kibana/ | | [data_apis.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/triggers_actions_ui/public/common/lib/data_apis.ts#:~:text=title), [data_apis.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/triggers_actions_ui/public/common/lib/data_apis.ts#:~:text=title) | - | | | [data_apis.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/triggers_actions_ui/public/common/lib/data_apis.ts#:~:text=title), [data_apis.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/triggers_actions_ui/public/common/lib/data_apis.ts#:~:text=title) | - | | | [data_apis.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/triggers_actions_ui/public/common/lib/data_apis.ts#:~:text=title) | - | -| | [use_bulk_edit_response.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/triggers_actions_ui/public/application/hooks/use_bulk_edit_response.tsx#:~:text=toMountPoint), [use_bulk_edit_response.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/triggers_actions_ui/public/application/hooks/use_bulk_edit_response.tsx#:~:text=toMountPoint), [use_bulk_edit_response.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/triggers_actions_ui/public/application/hooks/use_bulk_edit_response.tsx#:~:text=toMountPoint), [use_bulk_operation_toast.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/triggers_actions_ui/public/application/hooks/use_bulk_operation_toast.tsx#:~:text=toMountPoint), [use_bulk_operation_toast.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/triggers_actions_ui/public/application/hooks/use_bulk_operation_toast.tsx#:~:text=toMountPoint), [use_bulk_operation_toast.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/triggers_actions_ui/public/application/hooks/use_bulk_operation_toast.tsx#:~:text=toMountPoint), [rule_details.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/triggers_actions_ui/public/application/sections/rule_details/components/rule_details.tsx#:~:text=toMountPoint), [rule_details.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/triggers_actions_ui/public/application/sections/rule_details/components/rule_details.tsx#:~:text=toMountPoint) | - | +| | [use_bulk_edit_response.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/triggers_actions_ui/public/application/hooks/use_bulk_edit_response.tsx#:~:text=toMountPoint), [use_bulk_edit_response.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/triggers_actions_ui/public/application/hooks/use_bulk_edit_response.tsx#:~:text=toMountPoint), [use_bulk_edit_response.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/triggers_actions_ui/public/application/hooks/use_bulk_edit_response.tsx#:~:text=toMountPoint), [use_bulk_operation_toast.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/triggers_actions_ui/public/application/hooks/use_bulk_operation_toast.tsx#:~:text=toMountPoint), [use_bulk_operation_toast.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/triggers_actions_ui/public/application/hooks/use_bulk_operation_toast.tsx#:~:text=toMountPoint), [use_bulk_operation_toast.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/triggers_actions_ui/public/application/hooks/use_bulk_operation_toast.tsx#:~:text=toMountPoint), [rule_add.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/triggers_actions_ui/public/application/sections/rule_form/rule_add.tsx#:~:text=toMountPoint), [rule_add.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/triggers_actions_ui/public/application/sections/rule_form/rule_add.tsx#:~:text=toMountPoint), [rule_edit.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/triggers_actions_ui/public/application/sections/rule_form/rule_edit.tsx#:~:text=toMountPoint), [rule_edit.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/triggers_actions_ui/public/application/sections/rule_form/rule_edit.tsx#:~:text=toMountPoint)+ 6 more | - | | | [app.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/triggers_actions_ui/public/application/app.tsx#:~:text=KibanaThemeProvider), [app.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/triggers_actions_ui/public/application/app.tsx#:~:text=KibanaThemeProvider), [app.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/triggers_actions_ui/public/application/app.tsx#:~:text=KibanaThemeProvider), [connectors_app.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/triggers_actions_ui/public/application/connectors_app.tsx#:~:text=KibanaThemeProvider), [connectors_app.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/triggers_actions_ui/public/application/connectors_app.tsx#:~:text=KibanaThemeProvider), [connectors_app.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/triggers_actions_ui/public/application/connectors_app.tsx#:~:text=KibanaThemeProvider), [test_utils.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/triggers_actions_ui/public/application/sections/test_utils.tsx#:~:text=KibanaThemeProvider), [test_utils.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/triggers_actions_ui/public/application/sections/test_utils.tsx#:~:text=KibanaThemeProvider), [test_utils.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/triggers_actions_ui/public/application/sections/test_utils.tsx#:~:text=KibanaThemeProvider) | - | | | [rule_reducer.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/triggers_actions_ui/public/application/sections/rule_form/rule_reducer.ts#:~:text=SavedObjectAttribute), [rule_reducer.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/triggers_actions_ui/public/application/sections/rule_form/rule_reducer.ts#:~:text=SavedObjectAttribute), [rule_reducer.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/triggers_actions_ui/public/application/sections/rule_form/rule_reducer.ts#:~:text=SavedObjectAttribute), [rule_reducer.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/triggers_actions_ui/public/application/sections/rule_form/rule_reducer.ts#:~:text=SavedObjectAttribute) | - | diff --git a/api_docs/deprecations_by_team.mdx b/api_docs/deprecations_by_team.mdx index cecb3d80242de..8638596374c2d 100644 --- a/api_docs/deprecations_by_team.mdx +++ b/api_docs/deprecations_by_team.mdx @@ -7,7 +7,7 @@ id: kibDevDocsDeprecationsDueByTeam slug: /kibana-dev-docs/api-meta/deprecations-due-by-team title: Deprecated APIs due to be removed, by team description: Lists the teams that are referencing deprecated APIs with a remove by date. -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana'] --- diff --git a/api_docs/dev_tools.mdx b/api_docs/dev_tools.mdx index c0a4bfe859c31..f6938415c024b 100644 --- a/api_docs/dev_tools.mdx +++ b/api_docs/dev_tools.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/devTools title: "devTools" image: https://source.unsplash.com/400x175/?github description: API docs for the devTools plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'devTools'] --- import devToolsObj from './dev_tools.devdocs.json'; diff --git a/api_docs/discover.mdx b/api_docs/discover.mdx index 74a8f12238fa6..12cb87b28d81e 100644 --- a/api_docs/discover.mdx +++ b/api_docs/discover.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/discover title: "discover" image: https://source.unsplash.com/400x175/?github description: API docs for the discover plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'discover'] --- import discoverObj from './discover.devdocs.json'; diff --git a/api_docs/discover_enhanced.mdx b/api_docs/discover_enhanced.mdx index 5d0ebea4e7e3b..7951906ff43aa 100644 --- a/api_docs/discover_enhanced.mdx +++ b/api_docs/discover_enhanced.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/discoverEnhanced title: "discoverEnhanced" image: https://source.unsplash.com/400x175/?github description: API docs for the discoverEnhanced plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'discoverEnhanced'] --- import discoverEnhancedObj from './discover_enhanced.devdocs.json'; diff --git a/api_docs/ecs_data_quality_dashboard.mdx b/api_docs/ecs_data_quality_dashboard.mdx index 2f8309c500725..6a3714147e4f7 100644 --- a/api_docs/ecs_data_quality_dashboard.mdx +++ b/api_docs/ecs_data_quality_dashboard.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/ecsDataQualityDashboard title: "ecsDataQualityDashboard" image: https://source.unsplash.com/400x175/?github description: API docs for the ecsDataQualityDashboard plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'ecsDataQualityDashboard'] --- import ecsDataQualityDashboardObj from './ecs_data_quality_dashboard.devdocs.json'; diff --git a/api_docs/elastic_assistant.mdx b/api_docs/elastic_assistant.mdx index 93389224bcfcf..695235acb23a6 100644 --- a/api_docs/elastic_assistant.mdx +++ b/api_docs/elastic_assistant.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/elasticAssistant title: "elasticAssistant" image: https://source.unsplash.com/400x175/?github description: API docs for the elasticAssistant plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'elasticAssistant'] --- import elasticAssistantObj from './elastic_assistant.devdocs.json'; diff --git a/api_docs/embeddable.mdx b/api_docs/embeddable.mdx index a0f72b4d361d0..1d43df1ea1717 100644 --- a/api_docs/embeddable.mdx +++ b/api_docs/embeddable.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/embeddable title: "embeddable" image: https://source.unsplash.com/400x175/?github description: API docs for the embeddable plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'embeddable'] --- import embeddableObj from './embeddable.devdocs.json'; diff --git a/api_docs/embeddable_enhanced.mdx b/api_docs/embeddable_enhanced.mdx index d2548827e4e23..d2434a326d95c 100644 --- a/api_docs/embeddable_enhanced.mdx +++ b/api_docs/embeddable_enhanced.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/embeddableEnhanced title: "embeddableEnhanced" image: https://source.unsplash.com/400x175/?github description: API docs for the embeddableEnhanced plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'embeddableEnhanced'] --- import embeddableEnhancedObj from './embeddable_enhanced.devdocs.json'; diff --git a/api_docs/encrypted_saved_objects.mdx b/api_docs/encrypted_saved_objects.mdx index f044fc71dc077..bdda74ff6362b 100644 --- a/api_docs/encrypted_saved_objects.mdx +++ b/api_docs/encrypted_saved_objects.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/encryptedSavedObjects title: "encryptedSavedObjects" image: https://source.unsplash.com/400x175/?github description: API docs for the encryptedSavedObjects plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'encryptedSavedObjects'] --- import encryptedSavedObjectsObj from './encrypted_saved_objects.devdocs.json'; diff --git a/api_docs/enterprise_search.mdx b/api_docs/enterprise_search.mdx index bf7fb17909aea..1f5562abd7ac5 100644 --- a/api_docs/enterprise_search.mdx +++ b/api_docs/enterprise_search.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/enterpriseSearch title: "enterpriseSearch" image: https://source.unsplash.com/400x175/?github description: API docs for the enterpriseSearch plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'enterpriseSearch'] --- import enterpriseSearchObj from './enterprise_search.devdocs.json'; diff --git a/api_docs/es_ui_shared.mdx b/api_docs/es_ui_shared.mdx index 466ace9cd2701..000fe48fd8652 100644 --- a/api_docs/es_ui_shared.mdx +++ b/api_docs/es_ui_shared.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/esUiShared title: "esUiShared" image: https://source.unsplash.com/400x175/?github description: API docs for the esUiShared plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'esUiShared'] --- import esUiSharedObj from './es_ui_shared.devdocs.json'; diff --git a/api_docs/event_annotation.devdocs.json b/api_docs/event_annotation.devdocs.json index 1eb8c01aefbad..f107d3ee6c768 100644 --- a/api_docs/event_annotation.devdocs.json +++ b/api_docs/event_annotation.devdocs.json @@ -1100,6 +1100,40 @@ "trackAdoption": false, "initialIsOpen": false }, + { + "parentPluginId": "eventAnnotation", + "id": "def-common.EventAnnotationGroupCrudTypes", + "type": "Type", + "tags": [], + "label": "EventAnnotationGroupCrudTypes", + "description": [], + "signature": [ + { + "pluginId": "@kbn/content-management-utils", + "scope": "common", + "docId": "kibKbnContentManagementUtilsPluginApi", + "section": "def-common.ContentManagementCrudTypes", + "text": "ContentManagementCrudTypes" + }, + "<\"event-annotation-group\", ", + { + "pluginId": "eventAnnotation", + "scope": "common", + "docId": "kibEventAnnotationPluginApi", + "section": "def-common.EventAnnotationGroupSavedObjectAttributes", + "text": "EventAnnotationGroupSavedObjectAttributes" + }, + ", ", + "CreateOptions", + ", ", + "UpdateOptions", + ", {}>" + ], + "path": "src/plugins/event_annotation/common/content_management/v1/types.ts", + "deprecated": false, + "trackAdoption": false, + "initialIsOpen": false + }, { "parentPluginId": "eventAnnotation", "id": "def-common.EventAnnotationGroupDeleteIn", diff --git a/api_docs/event_annotation.mdx b/api_docs/event_annotation.mdx index 1427c7d198c8a..4f6a44313a26b 100644 --- a/api_docs/event_annotation.mdx +++ b/api_docs/event_annotation.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/eventAnnotation title: "eventAnnotation" image: https://source.unsplash.com/400x175/?github description: API docs for the eventAnnotation plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'eventAnnotation'] --- import eventAnnotationObj from './event_annotation.devdocs.json'; @@ -21,7 +21,7 @@ Contact [@elastic/kibana-visualizations](https://github.com/orgs/elastic/teams/k | Public API count | Any count | Items lacking comments | Missing exports | |-------------------|-----------|------------------------|-----------------| -| 200 | 0 | 200 | 6 | +| 201 | 0 | 201 | 6 | ## Client diff --git a/api_docs/event_annotation_listing.mdx b/api_docs/event_annotation_listing.mdx index a29bf0c55a4b5..b4032f76edf42 100644 --- a/api_docs/event_annotation_listing.mdx +++ b/api_docs/event_annotation_listing.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/eventAnnotationListing title: "eventAnnotationListing" image: https://source.unsplash.com/400x175/?github description: API docs for the eventAnnotationListing plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'eventAnnotationListing'] --- import eventAnnotationListingObj from './event_annotation_listing.devdocs.json'; diff --git a/api_docs/event_log.mdx b/api_docs/event_log.mdx index 35d55d3f80d03..26f6d3e81b898 100644 --- a/api_docs/event_log.mdx +++ b/api_docs/event_log.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/eventLog title: "eventLog" image: https://source.unsplash.com/400x175/?github description: API docs for the eventLog plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'eventLog'] --- import eventLogObj from './event_log.devdocs.json'; diff --git a/api_docs/exploratory_view.mdx b/api_docs/exploratory_view.mdx index 4bc9e596ea246..8b749ede6d728 100644 --- a/api_docs/exploratory_view.mdx +++ b/api_docs/exploratory_view.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/exploratoryView title: "exploratoryView" image: https://source.unsplash.com/400x175/?github description: API docs for the exploratoryView plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'exploratoryView'] --- import exploratoryViewObj from './exploratory_view.devdocs.json'; diff --git a/api_docs/expression_error.mdx b/api_docs/expression_error.mdx index dfc7233dac22a..c0a167d55b053 100644 --- a/api_docs/expression_error.mdx +++ b/api_docs/expression_error.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/expressionError title: "expressionError" image: https://source.unsplash.com/400x175/?github description: API docs for the expressionError plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'expressionError'] --- import expressionErrorObj from './expression_error.devdocs.json'; diff --git a/api_docs/expression_gauge.mdx b/api_docs/expression_gauge.mdx index 5a8856a4172b8..04a846f7a22bd 100644 --- a/api_docs/expression_gauge.mdx +++ b/api_docs/expression_gauge.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/expressionGauge title: "expressionGauge" image: https://source.unsplash.com/400x175/?github description: API docs for the expressionGauge plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'expressionGauge'] --- import expressionGaugeObj from './expression_gauge.devdocs.json'; diff --git a/api_docs/expression_heatmap.mdx b/api_docs/expression_heatmap.mdx index 31cddad30bf5d..df095bca9dab0 100644 --- a/api_docs/expression_heatmap.mdx +++ b/api_docs/expression_heatmap.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/expressionHeatmap title: "expressionHeatmap" image: https://source.unsplash.com/400x175/?github description: API docs for the expressionHeatmap plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'expressionHeatmap'] --- import expressionHeatmapObj from './expression_heatmap.devdocs.json'; diff --git a/api_docs/expression_image.mdx b/api_docs/expression_image.mdx index b0007e2ed0bda..7ef04c7e9e711 100644 --- a/api_docs/expression_image.mdx +++ b/api_docs/expression_image.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/expressionImage title: "expressionImage" image: https://source.unsplash.com/400x175/?github description: API docs for the expressionImage plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'expressionImage'] --- import expressionImageObj from './expression_image.devdocs.json'; diff --git a/api_docs/expression_legacy_metric_vis.mdx b/api_docs/expression_legacy_metric_vis.mdx index df30f7f99e4f2..87dec6336d87b 100644 --- a/api_docs/expression_legacy_metric_vis.mdx +++ b/api_docs/expression_legacy_metric_vis.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/expressionLegacyMetricVis title: "expressionLegacyMetricVis" image: https://source.unsplash.com/400x175/?github description: API docs for the expressionLegacyMetricVis plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'expressionLegacyMetricVis'] --- import expressionLegacyMetricVisObj from './expression_legacy_metric_vis.devdocs.json'; diff --git a/api_docs/expression_metric.mdx b/api_docs/expression_metric.mdx index 487391bb91cc1..a50281dacfe17 100644 --- a/api_docs/expression_metric.mdx +++ b/api_docs/expression_metric.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/expressionMetric title: "expressionMetric" image: https://source.unsplash.com/400x175/?github description: API docs for the expressionMetric plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'expressionMetric'] --- import expressionMetricObj from './expression_metric.devdocs.json'; diff --git a/api_docs/expression_metric_vis.mdx b/api_docs/expression_metric_vis.mdx index 124f632d2a44f..9905c1e47f07c 100644 --- a/api_docs/expression_metric_vis.mdx +++ b/api_docs/expression_metric_vis.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/expressionMetricVis title: "expressionMetricVis" image: https://source.unsplash.com/400x175/?github description: API docs for the expressionMetricVis plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'expressionMetricVis'] --- import expressionMetricVisObj from './expression_metric_vis.devdocs.json'; diff --git a/api_docs/expression_partition_vis.mdx b/api_docs/expression_partition_vis.mdx index 9850f2f399a42..4c273bf454239 100644 --- a/api_docs/expression_partition_vis.mdx +++ b/api_docs/expression_partition_vis.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/expressionPartitionVis title: "expressionPartitionVis" image: https://source.unsplash.com/400x175/?github description: API docs for the expressionPartitionVis plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'expressionPartitionVis'] --- import expressionPartitionVisObj from './expression_partition_vis.devdocs.json'; diff --git a/api_docs/expression_repeat_image.mdx b/api_docs/expression_repeat_image.mdx index 6ba257fd16c79..834665c1c9dd0 100644 --- a/api_docs/expression_repeat_image.mdx +++ b/api_docs/expression_repeat_image.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/expressionRepeatImage title: "expressionRepeatImage" image: https://source.unsplash.com/400x175/?github description: API docs for the expressionRepeatImage plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'expressionRepeatImage'] --- import expressionRepeatImageObj from './expression_repeat_image.devdocs.json'; diff --git a/api_docs/expression_reveal_image.mdx b/api_docs/expression_reveal_image.mdx index d18d9f066954c..6732c45ba3c73 100644 --- a/api_docs/expression_reveal_image.mdx +++ b/api_docs/expression_reveal_image.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/expressionRevealImage title: "expressionRevealImage" image: https://source.unsplash.com/400x175/?github description: API docs for the expressionRevealImage plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'expressionRevealImage'] --- import expressionRevealImageObj from './expression_reveal_image.devdocs.json'; diff --git a/api_docs/expression_shape.mdx b/api_docs/expression_shape.mdx index 4e1e4a3803e56..e6eac6580b71b 100644 --- a/api_docs/expression_shape.mdx +++ b/api_docs/expression_shape.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/expressionShape title: "expressionShape" image: https://source.unsplash.com/400x175/?github description: API docs for the expressionShape plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'expressionShape'] --- import expressionShapeObj from './expression_shape.devdocs.json'; diff --git a/api_docs/expression_tagcloud.mdx b/api_docs/expression_tagcloud.mdx index f2d8870825460..a0f1fa7fac314 100644 --- a/api_docs/expression_tagcloud.mdx +++ b/api_docs/expression_tagcloud.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/expressionTagcloud title: "expressionTagcloud" image: https://source.unsplash.com/400x175/?github description: API docs for the expressionTagcloud plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'expressionTagcloud'] --- import expressionTagcloudObj from './expression_tagcloud.devdocs.json'; diff --git a/api_docs/expression_x_y.mdx b/api_docs/expression_x_y.mdx index c3466ee0bb2f6..6ace70c9e7976 100644 --- a/api_docs/expression_x_y.mdx +++ b/api_docs/expression_x_y.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/expressionXY title: "expressionXY" image: https://source.unsplash.com/400x175/?github description: API docs for the expressionXY plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'expressionXY'] --- import expressionXYObj from './expression_x_y.devdocs.json'; diff --git a/api_docs/expressions.mdx b/api_docs/expressions.mdx index 835cd6193eea7..8bc1808dac812 100644 --- a/api_docs/expressions.mdx +++ b/api_docs/expressions.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/expressions title: "expressions" image: https://source.unsplash.com/400x175/?github description: API docs for the expressions plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'expressions'] --- import expressionsObj from './expressions.devdocs.json'; diff --git a/api_docs/features.mdx b/api_docs/features.mdx index 5b89418f7972e..ffa9af195dc11 100644 --- a/api_docs/features.mdx +++ b/api_docs/features.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/features title: "features" image: https://source.unsplash.com/400x175/?github description: API docs for the features plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'features'] --- import featuresObj from './features.devdocs.json'; diff --git a/api_docs/field_formats.mdx b/api_docs/field_formats.mdx index 71e579ac8864c..645668408d65e 100644 --- a/api_docs/field_formats.mdx +++ b/api_docs/field_formats.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/fieldFormats title: "fieldFormats" image: https://source.unsplash.com/400x175/?github description: API docs for the fieldFormats plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'fieldFormats'] --- import fieldFormatsObj from './field_formats.devdocs.json'; diff --git a/api_docs/file_upload.mdx b/api_docs/file_upload.mdx index 2f7777a833d36..2b54b0ccc8f65 100644 --- a/api_docs/file_upload.mdx +++ b/api_docs/file_upload.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/fileUpload title: "fileUpload" image: https://source.unsplash.com/400x175/?github description: API docs for the fileUpload plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'fileUpload'] --- import fileUploadObj from './file_upload.devdocs.json'; diff --git a/api_docs/files.mdx b/api_docs/files.mdx index cb6d1a9f6e6a9..836b749b58035 100644 --- a/api_docs/files.mdx +++ b/api_docs/files.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/files title: "files" image: https://source.unsplash.com/400x175/?github description: API docs for the files plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'files'] --- import filesObj from './files.devdocs.json'; diff --git a/api_docs/files_management.mdx b/api_docs/files_management.mdx index 99ebd903aa732..8268961e7ce3e 100644 --- a/api_docs/files_management.mdx +++ b/api_docs/files_management.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/filesManagement title: "filesManagement" image: https://source.unsplash.com/400x175/?github description: API docs for the filesManagement plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'filesManagement'] --- import filesManagementObj from './files_management.devdocs.json'; diff --git a/api_docs/fleet.mdx b/api_docs/fleet.mdx index dcd3a4282b3cb..1c54dabe8a236 100644 --- a/api_docs/fleet.mdx +++ b/api_docs/fleet.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/fleet title: "fleet" image: https://source.unsplash.com/400x175/?github description: API docs for the fleet plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'fleet'] --- import fleetObj from './fleet.devdocs.json'; diff --git a/api_docs/global_search.mdx b/api_docs/global_search.mdx index 196faf394bd56..fba33028dd4bb 100644 --- a/api_docs/global_search.mdx +++ b/api_docs/global_search.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/globalSearch title: "globalSearch" image: https://source.unsplash.com/400x175/?github description: API docs for the globalSearch plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'globalSearch'] --- import globalSearchObj from './global_search.devdocs.json'; diff --git a/api_docs/guided_onboarding.mdx b/api_docs/guided_onboarding.mdx index e6f55b2ea32d9..a2b227b134e29 100644 --- a/api_docs/guided_onboarding.mdx +++ b/api_docs/guided_onboarding.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/guidedOnboarding title: "guidedOnboarding" image: https://source.unsplash.com/400x175/?github description: API docs for the guidedOnboarding plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'guidedOnboarding'] --- import guidedOnboardingObj from './guided_onboarding.devdocs.json'; diff --git a/api_docs/home.mdx b/api_docs/home.mdx index 7b8651f4ee4b2..c5b84c39b2d1e 100644 --- a/api_docs/home.mdx +++ b/api_docs/home.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/home title: "home" image: https://source.unsplash.com/400x175/?github description: API docs for the home plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'home'] --- import homeObj from './home.devdocs.json'; diff --git a/api_docs/image_embeddable.mdx b/api_docs/image_embeddable.mdx index 8afb87595f25f..a1bf52320b7e2 100644 --- a/api_docs/image_embeddable.mdx +++ b/api_docs/image_embeddable.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/imageEmbeddable title: "imageEmbeddable" image: https://source.unsplash.com/400x175/?github description: API docs for the imageEmbeddable plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'imageEmbeddable'] --- import imageEmbeddableObj from './image_embeddable.devdocs.json'; diff --git a/api_docs/index_lifecycle_management.mdx b/api_docs/index_lifecycle_management.mdx index 75dcbbaf58a79..d6e3521bc05f8 100644 --- a/api_docs/index_lifecycle_management.mdx +++ b/api_docs/index_lifecycle_management.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/indexLifecycleManagement title: "indexLifecycleManagement" image: https://source.unsplash.com/400x175/?github description: API docs for the indexLifecycleManagement plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'indexLifecycleManagement'] --- import indexLifecycleManagementObj from './index_lifecycle_management.devdocs.json'; diff --git a/api_docs/index_management.mdx b/api_docs/index_management.mdx index 3d8ae953e468c..8f9ecb4b809a9 100644 --- a/api_docs/index_management.mdx +++ b/api_docs/index_management.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/indexManagement title: "indexManagement" image: https://source.unsplash.com/400x175/?github description: API docs for the indexManagement plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'indexManagement'] --- import indexManagementObj from './index_management.devdocs.json'; diff --git a/api_docs/infra.mdx b/api_docs/infra.mdx index c2fc618610185..4042955e26572 100644 --- a/api_docs/infra.mdx +++ b/api_docs/infra.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/infra title: "infra" image: https://source.unsplash.com/400x175/?github description: API docs for the infra plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'infra'] --- import infraObj from './infra.devdocs.json'; diff --git a/api_docs/inspector.mdx b/api_docs/inspector.mdx index 823f1535b6d4b..c4b2ad7e4ea2b 100644 --- a/api_docs/inspector.mdx +++ b/api_docs/inspector.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/inspector title: "inspector" image: https://source.unsplash.com/400x175/?github description: API docs for the inspector plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'inspector'] --- import inspectorObj from './inspector.devdocs.json'; diff --git a/api_docs/interactive_setup.mdx b/api_docs/interactive_setup.mdx index adbc96ef9a55c..0a247ae895b5b 100644 --- a/api_docs/interactive_setup.mdx +++ b/api_docs/interactive_setup.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/interactiveSetup title: "interactiveSetup" image: https://source.unsplash.com/400x175/?github description: API docs for the interactiveSetup plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'interactiveSetup'] --- import interactiveSetupObj from './interactive_setup.devdocs.json'; diff --git a/api_docs/kbn_ace.mdx b/api_docs/kbn_ace.mdx index a5bbc32bcd4bf..0168c2caaae48 100644 --- a/api_docs/kbn_ace.mdx +++ b/api_docs/kbn_ace.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ace title: "@kbn/ace" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ace plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ace'] --- import kbnAceObj from './kbn_ace.devdocs.json'; diff --git a/api_docs/kbn_aiops_components.mdx b/api_docs/kbn_aiops_components.mdx index dd206e5be8188..682335b267e73 100644 --- a/api_docs/kbn_aiops_components.mdx +++ b/api_docs/kbn_aiops_components.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-aiops-components title: "@kbn/aiops-components" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/aiops-components plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/aiops-components'] --- import kbnAiopsComponentsObj from './kbn_aiops_components.devdocs.json'; diff --git a/api_docs/kbn_aiops_utils.mdx b/api_docs/kbn_aiops_utils.mdx index 3ac6a7add9f33..1ca173ed26faf 100644 --- a/api_docs/kbn_aiops_utils.mdx +++ b/api_docs/kbn_aiops_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-aiops-utils title: "@kbn/aiops-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/aiops-utils plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/aiops-utils'] --- import kbnAiopsUtilsObj from './kbn_aiops_utils.devdocs.json'; diff --git a/api_docs/kbn_alerting_api_integration_helpers.mdx b/api_docs/kbn_alerting_api_integration_helpers.mdx index a96184a7173f6..acb9b2479f6f5 100644 --- a/api_docs/kbn_alerting_api_integration_helpers.mdx +++ b/api_docs/kbn_alerting_api_integration_helpers.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-alerting-api-integration-helpers title: "@kbn/alerting-api-integration-helpers" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/alerting-api-integration-helpers plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/alerting-api-integration-helpers'] --- import kbnAlertingApiIntegrationHelpersObj from './kbn_alerting_api_integration_helpers.devdocs.json'; diff --git a/api_docs/kbn_alerting_state_types.mdx b/api_docs/kbn_alerting_state_types.mdx index 36d8f35d4f74a..829e3473a28d8 100644 --- a/api_docs/kbn_alerting_state_types.mdx +++ b/api_docs/kbn_alerting_state_types.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-alerting-state-types title: "@kbn/alerting-state-types" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/alerting-state-types plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/alerting-state-types'] --- import kbnAlertingStateTypesObj from './kbn_alerting_state_types.devdocs.json'; diff --git a/api_docs/kbn_alerts_as_data_utils.mdx b/api_docs/kbn_alerts_as_data_utils.mdx index 7312b4bb183d6..b535f3fefc14c 100644 --- a/api_docs/kbn_alerts_as_data_utils.mdx +++ b/api_docs/kbn_alerts_as_data_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-alerts-as-data-utils title: "@kbn/alerts-as-data-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/alerts-as-data-utils plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/alerts-as-data-utils'] --- import kbnAlertsAsDataUtilsObj from './kbn_alerts_as_data_utils.devdocs.json'; diff --git a/api_docs/kbn_alerts_ui_shared.mdx b/api_docs/kbn_alerts_ui_shared.mdx index 89610b2175c17..1cbefb93c6efd 100644 --- a/api_docs/kbn_alerts_ui_shared.mdx +++ b/api_docs/kbn_alerts_ui_shared.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-alerts-ui-shared title: "@kbn/alerts-ui-shared" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/alerts-ui-shared plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/alerts-ui-shared'] --- import kbnAlertsUiSharedObj from './kbn_alerts_ui_shared.devdocs.json'; diff --git a/api_docs/kbn_analytics.mdx b/api_docs/kbn_analytics.mdx index 5bc432c4e6b5a..1619f5bdcd0f9 100644 --- a/api_docs/kbn_analytics.mdx +++ b/api_docs/kbn_analytics.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-analytics title: "@kbn/analytics" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/analytics plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/analytics'] --- import kbnAnalyticsObj from './kbn_analytics.devdocs.json'; diff --git a/api_docs/kbn_analytics_client.mdx b/api_docs/kbn_analytics_client.mdx index 02548842a0a20..14b7adc1ae774 100644 --- a/api_docs/kbn_analytics_client.mdx +++ b/api_docs/kbn_analytics_client.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-analytics-client title: "@kbn/analytics-client" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/analytics-client plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/analytics-client'] --- import kbnAnalyticsClientObj from './kbn_analytics_client.devdocs.json'; diff --git a/api_docs/kbn_analytics_shippers_elastic_v3_browser.mdx b/api_docs/kbn_analytics_shippers_elastic_v3_browser.mdx index e5f1aec959278..c9e5533e31bd2 100644 --- a/api_docs/kbn_analytics_shippers_elastic_v3_browser.mdx +++ b/api_docs/kbn_analytics_shippers_elastic_v3_browser.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-analytics-shippers-elastic-v3-browser title: "@kbn/analytics-shippers-elastic-v3-browser" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/analytics-shippers-elastic-v3-browser plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/analytics-shippers-elastic-v3-browser'] --- import kbnAnalyticsShippersElasticV3BrowserObj from './kbn_analytics_shippers_elastic_v3_browser.devdocs.json'; diff --git a/api_docs/kbn_analytics_shippers_elastic_v3_common.mdx b/api_docs/kbn_analytics_shippers_elastic_v3_common.mdx index 3c37f0ba78783..c0350b33ae21c 100644 --- a/api_docs/kbn_analytics_shippers_elastic_v3_common.mdx +++ b/api_docs/kbn_analytics_shippers_elastic_v3_common.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-analytics-shippers-elastic-v3-common title: "@kbn/analytics-shippers-elastic-v3-common" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/analytics-shippers-elastic-v3-common plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/analytics-shippers-elastic-v3-common'] --- import kbnAnalyticsShippersElasticV3CommonObj from './kbn_analytics_shippers_elastic_v3_common.devdocs.json'; diff --git a/api_docs/kbn_analytics_shippers_elastic_v3_server.mdx b/api_docs/kbn_analytics_shippers_elastic_v3_server.mdx index 87f2814babec1..1fffce9912692 100644 --- a/api_docs/kbn_analytics_shippers_elastic_v3_server.mdx +++ b/api_docs/kbn_analytics_shippers_elastic_v3_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-analytics-shippers-elastic-v3-server title: "@kbn/analytics-shippers-elastic-v3-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/analytics-shippers-elastic-v3-server plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/analytics-shippers-elastic-v3-server'] --- import kbnAnalyticsShippersElasticV3ServerObj from './kbn_analytics_shippers_elastic_v3_server.devdocs.json'; diff --git a/api_docs/kbn_analytics_shippers_fullstory.mdx b/api_docs/kbn_analytics_shippers_fullstory.mdx index db5519b07d607..0e038ac7ee4d1 100644 --- a/api_docs/kbn_analytics_shippers_fullstory.mdx +++ b/api_docs/kbn_analytics_shippers_fullstory.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-analytics-shippers-fullstory title: "@kbn/analytics-shippers-fullstory" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/analytics-shippers-fullstory plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/analytics-shippers-fullstory'] --- import kbnAnalyticsShippersFullstoryObj from './kbn_analytics_shippers_fullstory.devdocs.json'; diff --git a/api_docs/kbn_analytics_shippers_gainsight.mdx b/api_docs/kbn_analytics_shippers_gainsight.mdx index aaf023d129541..5ed1e16913ab3 100644 --- a/api_docs/kbn_analytics_shippers_gainsight.mdx +++ b/api_docs/kbn_analytics_shippers_gainsight.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-analytics-shippers-gainsight title: "@kbn/analytics-shippers-gainsight" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/analytics-shippers-gainsight plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/analytics-shippers-gainsight'] --- import kbnAnalyticsShippersGainsightObj from './kbn_analytics_shippers_gainsight.devdocs.json'; diff --git a/api_docs/kbn_apm_config_loader.mdx b/api_docs/kbn_apm_config_loader.mdx index 4aca03e5cddbb..45f47a64f81e5 100644 --- a/api_docs/kbn_apm_config_loader.mdx +++ b/api_docs/kbn_apm_config_loader.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-apm-config-loader title: "@kbn/apm-config-loader" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/apm-config-loader plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/apm-config-loader'] --- import kbnApmConfigLoaderObj from './kbn_apm_config_loader.devdocs.json'; diff --git a/api_docs/kbn_apm_synthtrace.devdocs.json b/api_docs/kbn_apm_synthtrace.devdocs.json index 8b54b2e9a2299..721b44855b3cb 100644 --- a/api_docs/kbn_apm_synthtrace.devdocs.json +++ b/api_docs/kbn_apm_synthtrace.devdocs.json @@ -503,6 +503,40 @@ } ], "functions": [ + { + "parentPluginId": "@kbn/apm-synthtrace", + "id": "def-server.addObserverVersionTransform", + "type": "Function", + "tags": [], + "label": "addObserverVersionTransform", + "description": [], + "signature": [ + "(observerVersion: string) => ", + "Transform" + ], + "path": "packages/kbn-apm-synthtrace/src/lib/utils/transform_helpers.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "@kbn/apm-synthtrace", + "id": "def-server.addObserverVersionTransform.$1", + "type": "string", + "tags": [], + "label": "observerVersion", + "description": [], + "signature": [ + "string" + ], + "path": "packages/kbn-apm-synthtrace/src/lib/utils/transform_helpers.ts", + "deprecated": false, + "trackAdoption": false, + "isRequired": true + } + ], + "returnComment": [], + "initialIsOpen": false + }, { "parentPluginId": "@kbn/apm-synthtrace", "id": "def-server.createLogger", @@ -550,6 +584,24 @@ ], "returnComment": [], "initialIsOpen": false + }, + { + "parentPluginId": "@kbn/apm-synthtrace", + "id": "def-server.deleteSummaryFieldTransform", + "type": "Function", + "tags": [], + "label": "deleteSummaryFieldTransform", + "description": [], + "signature": [ + "() => ", + "Transform" + ], + "path": "packages/kbn-apm-synthtrace/src/lib/utils/transform_helpers.ts", + "deprecated": false, + "trackAdoption": false, + "children": [], + "returnComment": [], + "initialIsOpen": false } ], "interfaces": [], diff --git a/api_docs/kbn_apm_synthtrace.mdx b/api_docs/kbn_apm_synthtrace.mdx index 6857600f9df1a..23cce59a83cb1 100644 --- a/api_docs/kbn_apm_synthtrace.mdx +++ b/api_docs/kbn_apm_synthtrace.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-apm-synthtrace title: "@kbn/apm-synthtrace" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/apm-synthtrace plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/apm-synthtrace'] --- import kbnApmSynthtraceObj from './kbn_apm_synthtrace.devdocs.json'; @@ -21,7 +21,7 @@ Contact [@elastic/apm-ui](https://github.com/orgs/elastic/teams/apm-ui) for ques | Public API count | Any count | Items lacking comments | Missing exports | |-------------------|-----------|------------------------|-----------------| -| 28 | 0 | 28 | 7 | +| 31 | 0 | 31 | 7 | ## Server diff --git a/api_docs/kbn_apm_synthtrace_client.mdx b/api_docs/kbn_apm_synthtrace_client.mdx index 91d8d3af564ac..640c1d1e40c19 100644 --- a/api_docs/kbn_apm_synthtrace_client.mdx +++ b/api_docs/kbn_apm_synthtrace_client.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-apm-synthtrace-client title: "@kbn/apm-synthtrace-client" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/apm-synthtrace-client plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/apm-synthtrace-client'] --- import kbnApmSynthtraceClientObj from './kbn_apm_synthtrace_client.devdocs.json'; diff --git a/api_docs/kbn_apm_utils.mdx b/api_docs/kbn_apm_utils.mdx index 3176df01a3e95..b276c70ff4c2d 100644 --- a/api_docs/kbn_apm_utils.mdx +++ b/api_docs/kbn_apm_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-apm-utils title: "@kbn/apm-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/apm-utils plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/apm-utils'] --- import kbnApmUtilsObj from './kbn_apm_utils.devdocs.json'; diff --git a/api_docs/kbn_axe_config.mdx b/api_docs/kbn_axe_config.mdx index e01b456d78bf3..074cdcb21f368 100644 --- a/api_docs/kbn_axe_config.mdx +++ b/api_docs/kbn_axe_config.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-axe-config title: "@kbn/axe-config" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/axe-config plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/axe-config'] --- import kbnAxeConfigObj from './kbn_axe_config.devdocs.json'; diff --git a/api_docs/kbn_cases_components.mdx b/api_docs/kbn_cases_components.mdx index a22d077e13b8a..8418b04d36f67 100644 --- a/api_docs/kbn_cases_components.mdx +++ b/api_docs/kbn_cases_components.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-cases-components title: "@kbn/cases-components" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/cases-components plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/cases-components'] --- import kbnCasesComponentsObj from './kbn_cases_components.devdocs.json'; diff --git a/api_docs/kbn_cell_actions.mdx b/api_docs/kbn_cell_actions.mdx index 1528e98c3862e..2afb9721a7cc4 100644 --- a/api_docs/kbn_cell_actions.mdx +++ b/api_docs/kbn_cell_actions.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-cell-actions title: "@kbn/cell-actions" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/cell-actions plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/cell-actions'] --- import kbnCellActionsObj from './kbn_cell_actions.devdocs.json'; diff --git a/api_docs/kbn_chart_expressions_common.mdx b/api_docs/kbn_chart_expressions_common.mdx index a614f2c674ee6..db302b1263914 100644 --- a/api_docs/kbn_chart_expressions_common.mdx +++ b/api_docs/kbn_chart_expressions_common.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-chart-expressions-common title: "@kbn/chart-expressions-common" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/chart-expressions-common plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/chart-expressions-common'] --- import kbnChartExpressionsCommonObj from './kbn_chart_expressions_common.devdocs.json'; diff --git a/api_docs/kbn_chart_icons.mdx b/api_docs/kbn_chart_icons.mdx index f3f470a36f552..a23e1cf346837 100644 --- a/api_docs/kbn_chart_icons.mdx +++ b/api_docs/kbn_chart_icons.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-chart-icons title: "@kbn/chart-icons" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/chart-icons plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/chart-icons'] --- import kbnChartIconsObj from './kbn_chart_icons.devdocs.json'; diff --git a/api_docs/kbn_ci_stats_core.mdx b/api_docs/kbn_ci_stats_core.mdx index 85a704574edfc..d05c8343061c5 100644 --- a/api_docs/kbn_ci_stats_core.mdx +++ b/api_docs/kbn_ci_stats_core.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ci-stats-core title: "@kbn/ci-stats-core" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ci-stats-core plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ci-stats-core'] --- import kbnCiStatsCoreObj from './kbn_ci_stats_core.devdocs.json'; diff --git a/api_docs/kbn_ci_stats_performance_metrics.mdx b/api_docs/kbn_ci_stats_performance_metrics.mdx index 4ae5b1e79b79f..a5059ea4174aa 100644 --- a/api_docs/kbn_ci_stats_performance_metrics.mdx +++ b/api_docs/kbn_ci_stats_performance_metrics.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ci-stats-performance-metrics title: "@kbn/ci-stats-performance-metrics" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ci-stats-performance-metrics plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ci-stats-performance-metrics'] --- import kbnCiStatsPerformanceMetricsObj from './kbn_ci_stats_performance_metrics.devdocs.json'; diff --git a/api_docs/kbn_ci_stats_reporter.mdx b/api_docs/kbn_ci_stats_reporter.mdx index 0fa76395bde65..eccdbfd30d9c9 100644 --- a/api_docs/kbn_ci_stats_reporter.mdx +++ b/api_docs/kbn_ci_stats_reporter.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ci-stats-reporter title: "@kbn/ci-stats-reporter" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ci-stats-reporter plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ci-stats-reporter'] --- import kbnCiStatsReporterObj from './kbn_ci_stats_reporter.devdocs.json'; diff --git a/api_docs/kbn_cli_dev_mode.mdx b/api_docs/kbn_cli_dev_mode.mdx index 1dba53c610992..53f0eed489a53 100644 --- a/api_docs/kbn_cli_dev_mode.mdx +++ b/api_docs/kbn_cli_dev_mode.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-cli-dev-mode title: "@kbn/cli-dev-mode" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/cli-dev-mode plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/cli-dev-mode'] --- import kbnCliDevModeObj from './kbn_cli_dev_mode.devdocs.json'; diff --git a/api_docs/kbn_code_editor.mdx b/api_docs/kbn_code_editor.mdx index 4ecb6a3e90039..55c67bb210354 100644 --- a/api_docs/kbn_code_editor.mdx +++ b/api_docs/kbn_code_editor.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-code-editor title: "@kbn/code-editor" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/code-editor plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/code-editor'] --- import kbnCodeEditorObj from './kbn_code_editor.devdocs.json'; diff --git a/api_docs/kbn_code_editor_mocks.mdx b/api_docs/kbn_code_editor_mocks.mdx index 4686767a305c0..26a52a9d509a1 100644 --- a/api_docs/kbn_code_editor_mocks.mdx +++ b/api_docs/kbn_code_editor_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-code-editor-mocks title: "@kbn/code-editor-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/code-editor-mocks plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/code-editor-mocks'] --- import kbnCodeEditorMocksObj from './kbn_code_editor_mocks.devdocs.json'; diff --git a/api_docs/kbn_coloring.mdx b/api_docs/kbn_coloring.mdx index 6c67d5875cc47..c5f62d903c33a 100644 --- a/api_docs/kbn_coloring.mdx +++ b/api_docs/kbn_coloring.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-coloring title: "@kbn/coloring" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/coloring plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/coloring'] --- import kbnColoringObj from './kbn_coloring.devdocs.json'; diff --git a/api_docs/kbn_config.mdx b/api_docs/kbn_config.mdx index 3eb348eee7d02..5c51381b03f7e 100644 --- a/api_docs/kbn_config.mdx +++ b/api_docs/kbn_config.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-config title: "@kbn/config" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/config plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/config'] --- import kbnConfigObj from './kbn_config.devdocs.json'; diff --git a/api_docs/kbn_config_mocks.mdx b/api_docs/kbn_config_mocks.mdx index 67cf5d3840d5e..e3ffc8f5a01dd 100644 --- a/api_docs/kbn_config_mocks.mdx +++ b/api_docs/kbn_config_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-config-mocks title: "@kbn/config-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/config-mocks plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/config-mocks'] --- import kbnConfigMocksObj from './kbn_config_mocks.devdocs.json'; diff --git a/api_docs/kbn_config_schema.mdx b/api_docs/kbn_config_schema.mdx index 9640b18d741b8..9be8ef87ef68d 100644 --- a/api_docs/kbn_config_schema.mdx +++ b/api_docs/kbn_config_schema.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-config-schema title: "@kbn/config-schema" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/config-schema plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/config-schema'] --- import kbnConfigSchemaObj from './kbn_config_schema.devdocs.json'; diff --git a/api_docs/kbn_content_management_content_editor.mdx b/api_docs/kbn_content_management_content_editor.mdx index 1423a226fccbb..23e6f72823ba2 100644 --- a/api_docs/kbn_content_management_content_editor.mdx +++ b/api_docs/kbn_content_management_content_editor.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-content-management-content-editor title: "@kbn/content-management-content-editor" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/content-management-content-editor plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/content-management-content-editor'] --- import kbnContentManagementContentEditorObj from './kbn_content_management_content_editor.devdocs.json'; diff --git a/api_docs/kbn_content_management_tabbed_table_list_view.mdx b/api_docs/kbn_content_management_tabbed_table_list_view.mdx index 679655131b173..05e355c3d5bd6 100644 --- a/api_docs/kbn_content_management_tabbed_table_list_view.mdx +++ b/api_docs/kbn_content_management_tabbed_table_list_view.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-content-management-tabbed-table-list-view title: "@kbn/content-management-tabbed-table-list-view" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/content-management-tabbed-table-list-view plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/content-management-tabbed-table-list-view'] --- import kbnContentManagementTabbedTableListViewObj from './kbn_content_management_tabbed_table_list_view.devdocs.json'; diff --git a/api_docs/kbn_content_management_table_list_view.mdx b/api_docs/kbn_content_management_table_list_view.mdx index b67992c6d1716..906a3536759a1 100644 --- a/api_docs/kbn_content_management_table_list_view.mdx +++ b/api_docs/kbn_content_management_table_list_view.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-content-management-table-list-view title: "@kbn/content-management-table-list-view" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/content-management-table-list-view plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/content-management-table-list-view'] --- import kbnContentManagementTableListViewObj from './kbn_content_management_table_list_view.devdocs.json'; diff --git a/api_docs/kbn_content_management_table_list_view_table.mdx b/api_docs/kbn_content_management_table_list_view_table.mdx index 664264d7c751c..3a48ee38d34ba 100644 --- a/api_docs/kbn_content_management_table_list_view_table.mdx +++ b/api_docs/kbn_content_management_table_list_view_table.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-content-management-table-list-view-table title: "@kbn/content-management-table-list-view-table" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/content-management-table-list-view-table plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/content-management-table-list-view-table'] --- import kbnContentManagementTableListViewTableObj from './kbn_content_management_table_list_view_table.devdocs.json'; diff --git a/api_docs/kbn_content_management_utils.devdocs.json b/api_docs/kbn_content_management_utils.devdocs.json index 545ea911e0490..4225db663ec83 100644 --- a/api_docs/kbn_content_management_utils.devdocs.json +++ b/api_docs/kbn_content_management_utils.devdocs.json @@ -81,8 +81,8 @@ "pluginId": "@kbn/content-management-utils", "scope": "common", "docId": "kibKbnContentManagementUtilsPluginApi", - "section": "def-common.SOContentStorageConstrutorParams", - "text": "SOContentStorageConstrutorParams" + "section": "def-common.SOContentStorageConstructorParams", + "text": "SOContentStorageConstructorParams" }, "" ], @@ -2725,18 +2725,18 @@ }, { "parentPluginId": "@kbn/content-management-utils", - "id": "def-common.SOContentStorageConstrutorParams", + "id": "def-common.SOContentStorageConstructorParams", "type": "Interface", "tags": [], - "label": "SOContentStorageConstrutorParams", + "label": "SOContentStorageConstructorParams", "description": [], "signature": [ { "pluginId": "@kbn/content-management-utils", "scope": "common", "docId": "kibKbnContentManagementUtilsPluginApi", - "section": "def-common.SOContentStorageConstrutorParams", - "text": "SOContentStorageConstrutorParams" + "section": "def-common.SOContentStorageConstructorParams", + "text": "SOContentStorageConstructorParams" }, "" ], @@ -2746,7 +2746,7 @@ "children": [ { "parentPluginId": "@kbn/content-management-utils", - "id": "def-common.SOContentStorageConstrutorParams.savedObjectType", + "id": "def-common.SOContentStorageConstructorParams.savedObjectType", "type": "string", "tags": [], "label": "savedObjectType", @@ -2757,7 +2757,7 @@ }, { "parentPluginId": "@kbn/content-management-utils", - "id": "def-common.SOContentStorageConstrutorParams.cmServicesDefinition", + "id": "def-common.SOContentStorageConstructorParams.cmServicesDefinition", "type": "Object", "tags": [], "label": "cmServicesDefinition", @@ -2777,7 +2777,7 @@ }, { "parentPluginId": "@kbn/content-management-utils", - "id": "def-common.SOContentStorageConstrutorParams.allowedSavedObjectAttributes", + "id": "def-common.SOContentStorageConstructorParams.allowedSavedObjectAttributes", "type": "Array", "tags": [], "label": "allowedSavedObjectAttributes", @@ -2791,7 +2791,7 @@ }, { "parentPluginId": "@kbn/content-management-utils", - "id": "def-common.SOContentStorageConstrutorParams.createArgsToSoCreateOptions", + "id": "def-common.SOContentStorageConstructorParams.createArgsToSoCreateOptions", "type": "Function", "tags": [], "label": "createArgsToSoCreateOptions", @@ -2812,7 +2812,7 @@ }, { "parentPluginId": "@kbn/content-management-utils", - "id": "def-common.SOContentStorageConstrutorParams.updateArgsToSoUpdateOptions", + "id": "def-common.SOContentStorageConstructorParams.updateArgsToSoUpdateOptions", "type": "Function", "tags": [], "label": "updateArgsToSoUpdateOptions", @@ -2833,7 +2833,7 @@ }, { "parentPluginId": "@kbn/content-management-utils", - "id": "def-common.SOContentStorageConstrutorParams.searchArgsToSOFindOptions", + "id": "def-common.SOContentStorageConstructorParams.searchArgsToSOFindOptions", "type": "Function", "tags": [], "label": "searchArgsToSOFindOptions", @@ -2854,11 +2854,13 @@ }, { "parentPluginId": "@kbn/content-management-utils", - "id": "def-common.SOContentStorageConstrutorParams.enableMSearch", + "id": "def-common.SOContentStorageConstructorParams.enableMSearch", "type": "CompoundType", "tags": [], "label": "enableMSearch", - "description": [], + "description": [ + "\nMSearch is a feature that allows searching across multiple content types\n(for example, could be used in a general content finder or the like)\n\ndefaults to false" + ], "signature": [ "boolean | undefined" ], @@ -2868,7 +2870,7 @@ }, { "parentPluginId": "@kbn/content-management-utils", - "id": "def-common.SOContentStorageConstrutorParams.mSearchAdditionalSearchFields", + "id": "def-common.SOContentStorageConstructorParams.mSearchAdditionalSearchFields", "type": "Array", "tags": [], "label": "mSearchAdditionalSearchFields", @@ -2882,7 +2884,7 @@ }, { "parentPluginId": "@kbn/content-management-utils", - "id": "def-common.SOContentStorageConstrutorParams.logger", + "id": "def-common.SOContentStorageConstructorParams.logger", "type": "Object", "tags": [], "label": "logger", @@ -2902,7 +2904,7 @@ }, { "parentPluginId": "@kbn/content-management-utils", - "id": "def-common.SOContentStorageConstrutorParams.throwOnResultValidationError", + "id": "def-common.SOContentStorageConstructorParams.throwOnResultValidationError", "type": "boolean", "tags": [], "label": "throwOnResultValidationError", diff --git a/api_docs/kbn_content_management_utils.mdx b/api_docs/kbn_content_management_utils.mdx index 4ce5763bb79f3..d1e9ec48b5f29 100644 --- a/api_docs/kbn_content_management_utils.mdx +++ b/api_docs/kbn_content_management_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-content-management-utils title: "@kbn/content-management-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/content-management-utils plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/content-management-utils'] --- import kbnContentManagementUtilsObj from './kbn_content_management_utils.devdocs.json'; @@ -21,7 +21,7 @@ Contact [@elastic/kibana-data-discovery](https://github.com/orgs/elastic/teams/k | Public API count | Any count | Items lacking comments | Missing exports | |-------------------|-----------|------------------------|-----------------| -| 191 | 1 | 126 | 0 | +| 191 | 1 | 125 | 0 | ## Common diff --git a/api_docs/kbn_core_analytics_browser.mdx b/api_docs/kbn_core_analytics_browser.mdx index 0d5061fda446b..83dbe6c85f725 100644 --- a/api_docs/kbn_core_analytics_browser.mdx +++ b/api_docs/kbn_core_analytics_browser.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-analytics-browser title: "@kbn/core-analytics-browser" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-analytics-browser plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-analytics-browser'] --- import kbnCoreAnalyticsBrowserObj from './kbn_core_analytics_browser.devdocs.json'; diff --git a/api_docs/kbn_core_analytics_browser_internal.mdx b/api_docs/kbn_core_analytics_browser_internal.mdx index ff40b69d1ba7d..746dbd8b758e0 100644 --- a/api_docs/kbn_core_analytics_browser_internal.mdx +++ b/api_docs/kbn_core_analytics_browser_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-analytics-browser-internal title: "@kbn/core-analytics-browser-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-analytics-browser-internal plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-analytics-browser-internal'] --- import kbnCoreAnalyticsBrowserInternalObj from './kbn_core_analytics_browser_internal.devdocs.json'; diff --git a/api_docs/kbn_core_analytics_browser_mocks.mdx b/api_docs/kbn_core_analytics_browser_mocks.mdx index fbf0d3f72e0a8..9902bb5ea0869 100644 --- a/api_docs/kbn_core_analytics_browser_mocks.mdx +++ b/api_docs/kbn_core_analytics_browser_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-analytics-browser-mocks title: "@kbn/core-analytics-browser-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-analytics-browser-mocks plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-analytics-browser-mocks'] --- import kbnCoreAnalyticsBrowserMocksObj from './kbn_core_analytics_browser_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_analytics_server.mdx b/api_docs/kbn_core_analytics_server.mdx index 2e52c90bae757..fa6d3f7184b5c 100644 --- a/api_docs/kbn_core_analytics_server.mdx +++ b/api_docs/kbn_core_analytics_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-analytics-server title: "@kbn/core-analytics-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-analytics-server plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-analytics-server'] --- import kbnCoreAnalyticsServerObj from './kbn_core_analytics_server.devdocs.json'; diff --git a/api_docs/kbn_core_analytics_server_internal.mdx b/api_docs/kbn_core_analytics_server_internal.mdx index 1f89c3b8f2685..7a0c281a9d5c3 100644 --- a/api_docs/kbn_core_analytics_server_internal.mdx +++ b/api_docs/kbn_core_analytics_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-analytics-server-internal title: "@kbn/core-analytics-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-analytics-server-internal plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-analytics-server-internal'] --- import kbnCoreAnalyticsServerInternalObj from './kbn_core_analytics_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_analytics_server_mocks.mdx b/api_docs/kbn_core_analytics_server_mocks.mdx index e4a8bdc2d16d6..700e41fb581c2 100644 --- a/api_docs/kbn_core_analytics_server_mocks.mdx +++ b/api_docs/kbn_core_analytics_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-analytics-server-mocks title: "@kbn/core-analytics-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-analytics-server-mocks plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-analytics-server-mocks'] --- import kbnCoreAnalyticsServerMocksObj from './kbn_core_analytics_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_application_browser.mdx b/api_docs/kbn_core_application_browser.mdx index 4dea30ec2182b..da4922b4cf3b2 100644 --- a/api_docs/kbn_core_application_browser.mdx +++ b/api_docs/kbn_core_application_browser.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-application-browser title: "@kbn/core-application-browser" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-application-browser plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-application-browser'] --- import kbnCoreApplicationBrowserObj from './kbn_core_application_browser.devdocs.json'; diff --git a/api_docs/kbn_core_application_browser_internal.mdx b/api_docs/kbn_core_application_browser_internal.mdx index a5bb036200b28..c1025ba936469 100644 --- a/api_docs/kbn_core_application_browser_internal.mdx +++ b/api_docs/kbn_core_application_browser_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-application-browser-internal title: "@kbn/core-application-browser-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-application-browser-internal plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-application-browser-internal'] --- import kbnCoreApplicationBrowserInternalObj from './kbn_core_application_browser_internal.devdocs.json'; diff --git a/api_docs/kbn_core_application_browser_mocks.mdx b/api_docs/kbn_core_application_browser_mocks.mdx index c4b3649375c14..2e3035d8fc75e 100644 --- a/api_docs/kbn_core_application_browser_mocks.mdx +++ b/api_docs/kbn_core_application_browser_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-application-browser-mocks title: "@kbn/core-application-browser-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-application-browser-mocks plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-application-browser-mocks'] --- import kbnCoreApplicationBrowserMocksObj from './kbn_core_application_browser_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_application_common.mdx b/api_docs/kbn_core_application_common.mdx index fd156fef12cd0..ad69263170e50 100644 --- a/api_docs/kbn_core_application_common.mdx +++ b/api_docs/kbn_core_application_common.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-application-common title: "@kbn/core-application-common" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-application-common plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-application-common'] --- import kbnCoreApplicationCommonObj from './kbn_core_application_common.devdocs.json'; diff --git a/api_docs/kbn_core_apps_browser_internal.mdx b/api_docs/kbn_core_apps_browser_internal.mdx index 9f39153e78974..3fb94bc904504 100644 --- a/api_docs/kbn_core_apps_browser_internal.mdx +++ b/api_docs/kbn_core_apps_browser_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-apps-browser-internal title: "@kbn/core-apps-browser-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-apps-browser-internal plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-apps-browser-internal'] --- import kbnCoreAppsBrowserInternalObj from './kbn_core_apps_browser_internal.devdocs.json'; diff --git a/api_docs/kbn_core_apps_browser_mocks.mdx b/api_docs/kbn_core_apps_browser_mocks.mdx index 573edf15b8470..8df0356ebb009 100644 --- a/api_docs/kbn_core_apps_browser_mocks.mdx +++ b/api_docs/kbn_core_apps_browser_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-apps-browser-mocks title: "@kbn/core-apps-browser-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-apps-browser-mocks plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-apps-browser-mocks'] --- import kbnCoreAppsBrowserMocksObj from './kbn_core_apps_browser_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_apps_server_internal.mdx b/api_docs/kbn_core_apps_server_internal.mdx index 0a69ee1bfb862..f2b2c351cafa9 100644 --- a/api_docs/kbn_core_apps_server_internal.mdx +++ b/api_docs/kbn_core_apps_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-apps-server-internal title: "@kbn/core-apps-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-apps-server-internal plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-apps-server-internal'] --- import kbnCoreAppsServerInternalObj from './kbn_core_apps_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_base_browser_mocks.mdx b/api_docs/kbn_core_base_browser_mocks.mdx index cccadcccb0039..42111734a71db 100644 --- a/api_docs/kbn_core_base_browser_mocks.mdx +++ b/api_docs/kbn_core_base_browser_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-base-browser-mocks title: "@kbn/core-base-browser-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-base-browser-mocks plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-base-browser-mocks'] --- import kbnCoreBaseBrowserMocksObj from './kbn_core_base_browser_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_base_common.mdx b/api_docs/kbn_core_base_common.mdx index 2904e62286332..3bccf4077696f 100644 --- a/api_docs/kbn_core_base_common.mdx +++ b/api_docs/kbn_core_base_common.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-base-common title: "@kbn/core-base-common" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-base-common plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-base-common'] --- import kbnCoreBaseCommonObj from './kbn_core_base_common.devdocs.json'; diff --git a/api_docs/kbn_core_base_server_internal.mdx b/api_docs/kbn_core_base_server_internal.mdx index db33192c78c86..f521c96a823b9 100644 --- a/api_docs/kbn_core_base_server_internal.mdx +++ b/api_docs/kbn_core_base_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-base-server-internal title: "@kbn/core-base-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-base-server-internal plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-base-server-internal'] --- import kbnCoreBaseServerInternalObj from './kbn_core_base_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_base_server_mocks.mdx b/api_docs/kbn_core_base_server_mocks.mdx index 00cba60e8de11..ee20a3edb9661 100644 --- a/api_docs/kbn_core_base_server_mocks.mdx +++ b/api_docs/kbn_core_base_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-base-server-mocks title: "@kbn/core-base-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-base-server-mocks plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-base-server-mocks'] --- import kbnCoreBaseServerMocksObj from './kbn_core_base_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_capabilities_browser_mocks.mdx b/api_docs/kbn_core_capabilities_browser_mocks.mdx index c906b11b43e54..cf010320e5a98 100644 --- a/api_docs/kbn_core_capabilities_browser_mocks.mdx +++ b/api_docs/kbn_core_capabilities_browser_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-capabilities-browser-mocks title: "@kbn/core-capabilities-browser-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-capabilities-browser-mocks plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-capabilities-browser-mocks'] --- import kbnCoreCapabilitiesBrowserMocksObj from './kbn_core_capabilities_browser_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_capabilities_common.mdx b/api_docs/kbn_core_capabilities_common.mdx index 18d2a56f8e442..3946007fa6982 100644 --- a/api_docs/kbn_core_capabilities_common.mdx +++ b/api_docs/kbn_core_capabilities_common.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-capabilities-common title: "@kbn/core-capabilities-common" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-capabilities-common plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-capabilities-common'] --- import kbnCoreCapabilitiesCommonObj from './kbn_core_capabilities_common.devdocs.json'; diff --git a/api_docs/kbn_core_capabilities_server.mdx b/api_docs/kbn_core_capabilities_server.mdx index e869a3dbcc0ad..15c602b1fcb24 100644 --- a/api_docs/kbn_core_capabilities_server.mdx +++ b/api_docs/kbn_core_capabilities_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-capabilities-server title: "@kbn/core-capabilities-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-capabilities-server plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-capabilities-server'] --- import kbnCoreCapabilitiesServerObj from './kbn_core_capabilities_server.devdocs.json'; diff --git a/api_docs/kbn_core_capabilities_server_mocks.mdx b/api_docs/kbn_core_capabilities_server_mocks.mdx index 993618d588b8e..d74ea7f671a5b 100644 --- a/api_docs/kbn_core_capabilities_server_mocks.mdx +++ b/api_docs/kbn_core_capabilities_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-capabilities-server-mocks title: "@kbn/core-capabilities-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-capabilities-server-mocks plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-capabilities-server-mocks'] --- import kbnCoreCapabilitiesServerMocksObj from './kbn_core_capabilities_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_chrome_browser.mdx b/api_docs/kbn_core_chrome_browser.mdx index 37c33bf975e56..483a712f85b6e 100644 --- a/api_docs/kbn_core_chrome_browser.mdx +++ b/api_docs/kbn_core_chrome_browser.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-chrome-browser title: "@kbn/core-chrome-browser" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-chrome-browser plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-chrome-browser'] --- import kbnCoreChromeBrowserObj from './kbn_core_chrome_browser.devdocs.json'; diff --git a/api_docs/kbn_core_chrome_browser_mocks.mdx b/api_docs/kbn_core_chrome_browser_mocks.mdx index ea44c048085ed..d176f70a3ce4e 100644 --- a/api_docs/kbn_core_chrome_browser_mocks.mdx +++ b/api_docs/kbn_core_chrome_browser_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-chrome-browser-mocks title: "@kbn/core-chrome-browser-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-chrome-browser-mocks plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-chrome-browser-mocks'] --- import kbnCoreChromeBrowserMocksObj from './kbn_core_chrome_browser_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_config_server_internal.mdx b/api_docs/kbn_core_config_server_internal.mdx index 7b881f1899c6a..1fcac920a99d7 100644 --- a/api_docs/kbn_core_config_server_internal.mdx +++ b/api_docs/kbn_core_config_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-config-server-internal title: "@kbn/core-config-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-config-server-internal plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-config-server-internal'] --- import kbnCoreConfigServerInternalObj from './kbn_core_config_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_custom_branding_browser.mdx b/api_docs/kbn_core_custom_branding_browser.mdx index ae4bdd944db56..a483f899efa9b 100644 --- a/api_docs/kbn_core_custom_branding_browser.mdx +++ b/api_docs/kbn_core_custom_branding_browser.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-custom-branding-browser title: "@kbn/core-custom-branding-browser" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-custom-branding-browser plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-custom-branding-browser'] --- import kbnCoreCustomBrandingBrowserObj from './kbn_core_custom_branding_browser.devdocs.json'; diff --git a/api_docs/kbn_core_custom_branding_browser_internal.mdx b/api_docs/kbn_core_custom_branding_browser_internal.mdx index 90db00ff6831c..0e46a12fe80b6 100644 --- a/api_docs/kbn_core_custom_branding_browser_internal.mdx +++ b/api_docs/kbn_core_custom_branding_browser_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-custom-branding-browser-internal title: "@kbn/core-custom-branding-browser-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-custom-branding-browser-internal plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-custom-branding-browser-internal'] --- import kbnCoreCustomBrandingBrowserInternalObj from './kbn_core_custom_branding_browser_internal.devdocs.json'; diff --git a/api_docs/kbn_core_custom_branding_browser_mocks.mdx b/api_docs/kbn_core_custom_branding_browser_mocks.mdx index 9fa8e1e42f706..3b31492ac11b4 100644 --- a/api_docs/kbn_core_custom_branding_browser_mocks.mdx +++ b/api_docs/kbn_core_custom_branding_browser_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-custom-branding-browser-mocks title: "@kbn/core-custom-branding-browser-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-custom-branding-browser-mocks plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-custom-branding-browser-mocks'] --- import kbnCoreCustomBrandingBrowserMocksObj from './kbn_core_custom_branding_browser_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_custom_branding_common.mdx b/api_docs/kbn_core_custom_branding_common.mdx index 8986bdee822bb..10fe6f67bf47b 100644 --- a/api_docs/kbn_core_custom_branding_common.mdx +++ b/api_docs/kbn_core_custom_branding_common.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-custom-branding-common title: "@kbn/core-custom-branding-common" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-custom-branding-common plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-custom-branding-common'] --- import kbnCoreCustomBrandingCommonObj from './kbn_core_custom_branding_common.devdocs.json'; diff --git a/api_docs/kbn_core_custom_branding_server.mdx b/api_docs/kbn_core_custom_branding_server.mdx index cfb052ff70b96..ad77790ded3fb 100644 --- a/api_docs/kbn_core_custom_branding_server.mdx +++ b/api_docs/kbn_core_custom_branding_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-custom-branding-server title: "@kbn/core-custom-branding-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-custom-branding-server plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-custom-branding-server'] --- import kbnCoreCustomBrandingServerObj from './kbn_core_custom_branding_server.devdocs.json'; diff --git a/api_docs/kbn_core_custom_branding_server_internal.mdx b/api_docs/kbn_core_custom_branding_server_internal.mdx index b259dc935ebf9..3e2f97c9e0dd1 100644 --- a/api_docs/kbn_core_custom_branding_server_internal.mdx +++ b/api_docs/kbn_core_custom_branding_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-custom-branding-server-internal title: "@kbn/core-custom-branding-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-custom-branding-server-internal plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-custom-branding-server-internal'] --- import kbnCoreCustomBrandingServerInternalObj from './kbn_core_custom_branding_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_custom_branding_server_mocks.mdx b/api_docs/kbn_core_custom_branding_server_mocks.mdx index f10b1e89f23ca..c8481d20bcbed 100644 --- a/api_docs/kbn_core_custom_branding_server_mocks.mdx +++ b/api_docs/kbn_core_custom_branding_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-custom-branding-server-mocks title: "@kbn/core-custom-branding-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-custom-branding-server-mocks plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-custom-branding-server-mocks'] --- import kbnCoreCustomBrandingServerMocksObj from './kbn_core_custom_branding_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_deprecations_browser.mdx b/api_docs/kbn_core_deprecations_browser.mdx index 1420fee862018..7e19025105606 100644 --- a/api_docs/kbn_core_deprecations_browser.mdx +++ b/api_docs/kbn_core_deprecations_browser.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-deprecations-browser title: "@kbn/core-deprecations-browser" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-deprecations-browser plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-deprecations-browser'] --- import kbnCoreDeprecationsBrowserObj from './kbn_core_deprecations_browser.devdocs.json'; diff --git a/api_docs/kbn_core_deprecations_browser_internal.mdx b/api_docs/kbn_core_deprecations_browser_internal.mdx index e4ef323bd5cb2..2567850a5d072 100644 --- a/api_docs/kbn_core_deprecations_browser_internal.mdx +++ b/api_docs/kbn_core_deprecations_browser_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-deprecations-browser-internal title: "@kbn/core-deprecations-browser-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-deprecations-browser-internal plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-deprecations-browser-internal'] --- import kbnCoreDeprecationsBrowserInternalObj from './kbn_core_deprecations_browser_internal.devdocs.json'; diff --git a/api_docs/kbn_core_deprecations_browser_mocks.mdx b/api_docs/kbn_core_deprecations_browser_mocks.mdx index 715db79cf04b0..188a6e4a270d0 100644 --- a/api_docs/kbn_core_deprecations_browser_mocks.mdx +++ b/api_docs/kbn_core_deprecations_browser_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-deprecations-browser-mocks title: "@kbn/core-deprecations-browser-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-deprecations-browser-mocks plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-deprecations-browser-mocks'] --- import kbnCoreDeprecationsBrowserMocksObj from './kbn_core_deprecations_browser_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_deprecations_common.mdx b/api_docs/kbn_core_deprecations_common.mdx index d9f315493ac45..729a7a255a6aa 100644 --- a/api_docs/kbn_core_deprecations_common.mdx +++ b/api_docs/kbn_core_deprecations_common.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-deprecations-common title: "@kbn/core-deprecations-common" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-deprecations-common plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-deprecations-common'] --- import kbnCoreDeprecationsCommonObj from './kbn_core_deprecations_common.devdocs.json'; diff --git a/api_docs/kbn_core_deprecations_server.mdx b/api_docs/kbn_core_deprecations_server.mdx index 457959aa1766d..365a208e168f7 100644 --- a/api_docs/kbn_core_deprecations_server.mdx +++ b/api_docs/kbn_core_deprecations_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-deprecations-server title: "@kbn/core-deprecations-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-deprecations-server plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-deprecations-server'] --- import kbnCoreDeprecationsServerObj from './kbn_core_deprecations_server.devdocs.json'; diff --git a/api_docs/kbn_core_deprecations_server_internal.mdx b/api_docs/kbn_core_deprecations_server_internal.mdx index f717e8699ae3f..90f62a4903319 100644 --- a/api_docs/kbn_core_deprecations_server_internal.mdx +++ b/api_docs/kbn_core_deprecations_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-deprecations-server-internal title: "@kbn/core-deprecations-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-deprecations-server-internal plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-deprecations-server-internal'] --- import kbnCoreDeprecationsServerInternalObj from './kbn_core_deprecations_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_deprecations_server_mocks.mdx b/api_docs/kbn_core_deprecations_server_mocks.mdx index cc32d40be7973..cc159e078c849 100644 --- a/api_docs/kbn_core_deprecations_server_mocks.mdx +++ b/api_docs/kbn_core_deprecations_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-deprecations-server-mocks title: "@kbn/core-deprecations-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-deprecations-server-mocks plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-deprecations-server-mocks'] --- import kbnCoreDeprecationsServerMocksObj from './kbn_core_deprecations_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_doc_links_browser.mdx b/api_docs/kbn_core_doc_links_browser.mdx index 3444a9a2d908f..4fcd9ab750b54 100644 --- a/api_docs/kbn_core_doc_links_browser.mdx +++ b/api_docs/kbn_core_doc_links_browser.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-doc-links-browser title: "@kbn/core-doc-links-browser" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-doc-links-browser plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-doc-links-browser'] --- import kbnCoreDocLinksBrowserObj from './kbn_core_doc_links_browser.devdocs.json'; diff --git a/api_docs/kbn_core_doc_links_browser_mocks.mdx b/api_docs/kbn_core_doc_links_browser_mocks.mdx index dff2b793de069..a6b8e70f40f56 100644 --- a/api_docs/kbn_core_doc_links_browser_mocks.mdx +++ b/api_docs/kbn_core_doc_links_browser_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-doc-links-browser-mocks title: "@kbn/core-doc-links-browser-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-doc-links-browser-mocks plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-doc-links-browser-mocks'] --- import kbnCoreDocLinksBrowserMocksObj from './kbn_core_doc_links_browser_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_doc_links_server.mdx b/api_docs/kbn_core_doc_links_server.mdx index 24abb3ac7588e..888bd8444c0e0 100644 --- a/api_docs/kbn_core_doc_links_server.mdx +++ b/api_docs/kbn_core_doc_links_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-doc-links-server title: "@kbn/core-doc-links-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-doc-links-server plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-doc-links-server'] --- import kbnCoreDocLinksServerObj from './kbn_core_doc_links_server.devdocs.json'; diff --git a/api_docs/kbn_core_doc_links_server_mocks.mdx b/api_docs/kbn_core_doc_links_server_mocks.mdx index 5996dd4420a82..64dbc7942a15c 100644 --- a/api_docs/kbn_core_doc_links_server_mocks.mdx +++ b/api_docs/kbn_core_doc_links_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-doc-links-server-mocks title: "@kbn/core-doc-links-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-doc-links-server-mocks plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-doc-links-server-mocks'] --- import kbnCoreDocLinksServerMocksObj from './kbn_core_doc_links_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_elasticsearch_client_server_internal.mdx b/api_docs/kbn_core_elasticsearch_client_server_internal.mdx index ddec34dad7e1f..ac9571f1f2d66 100644 --- a/api_docs/kbn_core_elasticsearch_client_server_internal.mdx +++ b/api_docs/kbn_core_elasticsearch_client_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-elasticsearch-client-server-internal title: "@kbn/core-elasticsearch-client-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-elasticsearch-client-server-internal plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-elasticsearch-client-server-internal'] --- import kbnCoreElasticsearchClientServerInternalObj from './kbn_core_elasticsearch_client_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_elasticsearch_client_server_mocks.mdx b/api_docs/kbn_core_elasticsearch_client_server_mocks.mdx index c10913dee689c..adce5fba8a596 100644 --- a/api_docs/kbn_core_elasticsearch_client_server_mocks.mdx +++ b/api_docs/kbn_core_elasticsearch_client_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-elasticsearch-client-server-mocks title: "@kbn/core-elasticsearch-client-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-elasticsearch-client-server-mocks plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-elasticsearch-client-server-mocks'] --- import kbnCoreElasticsearchClientServerMocksObj from './kbn_core_elasticsearch_client_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_elasticsearch_server.mdx b/api_docs/kbn_core_elasticsearch_server.mdx index e60c57ce1b239..d31fd1e259817 100644 --- a/api_docs/kbn_core_elasticsearch_server.mdx +++ b/api_docs/kbn_core_elasticsearch_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-elasticsearch-server title: "@kbn/core-elasticsearch-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-elasticsearch-server plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-elasticsearch-server'] --- import kbnCoreElasticsearchServerObj from './kbn_core_elasticsearch_server.devdocs.json'; diff --git a/api_docs/kbn_core_elasticsearch_server_internal.mdx b/api_docs/kbn_core_elasticsearch_server_internal.mdx index 3bf12543f025b..fb4d076d8777a 100644 --- a/api_docs/kbn_core_elasticsearch_server_internal.mdx +++ b/api_docs/kbn_core_elasticsearch_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-elasticsearch-server-internal title: "@kbn/core-elasticsearch-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-elasticsearch-server-internal plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-elasticsearch-server-internal'] --- import kbnCoreElasticsearchServerInternalObj from './kbn_core_elasticsearch_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_elasticsearch_server_mocks.mdx b/api_docs/kbn_core_elasticsearch_server_mocks.mdx index a9c8ffea5d8de..6b7fb074cf15f 100644 --- a/api_docs/kbn_core_elasticsearch_server_mocks.mdx +++ b/api_docs/kbn_core_elasticsearch_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-elasticsearch-server-mocks title: "@kbn/core-elasticsearch-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-elasticsearch-server-mocks plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-elasticsearch-server-mocks'] --- import kbnCoreElasticsearchServerMocksObj from './kbn_core_elasticsearch_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_environment_server_internal.mdx b/api_docs/kbn_core_environment_server_internal.mdx index 258b7ec2851c3..ef8a840563e6d 100644 --- a/api_docs/kbn_core_environment_server_internal.mdx +++ b/api_docs/kbn_core_environment_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-environment-server-internal title: "@kbn/core-environment-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-environment-server-internal plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-environment-server-internal'] --- import kbnCoreEnvironmentServerInternalObj from './kbn_core_environment_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_environment_server_mocks.mdx b/api_docs/kbn_core_environment_server_mocks.mdx index 14e9d3e6b7c4d..8f2ed181c1084 100644 --- a/api_docs/kbn_core_environment_server_mocks.mdx +++ b/api_docs/kbn_core_environment_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-environment-server-mocks title: "@kbn/core-environment-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-environment-server-mocks plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-environment-server-mocks'] --- import kbnCoreEnvironmentServerMocksObj from './kbn_core_environment_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_execution_context_browser.mdx b/api_docs/kbn_core_execution_context_browser.mdx index c7b6481996dff..b7dc6f30dd223 100644 --- a/api_docs/kbn_core_execution_context_browser.mdx +++ b/api_docs/kbn_core_execution_context_browser.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-execution-context-browser title: "@kbn/core-execution-context-browser" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-execution-context-browser plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-execution-context-browser'] --- import kbnCoreExecutionContextBrowserObj from './kbn_core_execution_context_browser.devdocs.json'; diff --git a/api_docs/kbn_core_execution_context_browser_internal.mdx b/api_docs/kbn_core_execution_context_browser_internal.mdx index 141e858940249..3ec1b02774352 100644 --- a/api_docs/kbn_core_execution_context_browser_internal.mdx +++ b/api_docs/kbn_core_execution_context_browser_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-execution-context-browser-internal title: "@kbn/core-execution-context-browser-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-execution-context-browser-internal plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-execution-context-browser-internal'] --- import kbnCoreExecutionContextBrowserInternalObj from './kbn_core_execution_context_browser_internal.devdocs.json'; diff --git a/api_docs/kbn_core_execution_context_browser_mocks.mdx b/api_docs/kbn_core_execution_context_browser_mocks.mdx index 743742e7d5175..3a959560f0270 100644 --- a/api_docs/kbn_core_execution_context_browser_mocks.mdx +++ b/api_docs/kbn_core_execution_context_browser_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-execution-context-browser-mocks title: "@kbn/core-execution-context-browser-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-execution-context-browser-mocks plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-execution-context-browser-mocks'] --- import kbnCoreExecutionContextBrowserMocksObj from './kbn_core_execution_context_browser_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_execution_context_common.mdx b/api_docs/kbn_core_execution_context_common.mdx index 16a4daa0a5b8c..f7524197ee9c6 100644 --- a/api_docs/kbn_core_execution_context_common.mdx +++ b/api_docs/kbn_core_execution_context_common.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-execution-context-common title: "@kbn/core-execution-context-common" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-execution-context-common plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-execution-context-common'] --- import kbnCoreExecutionContextCommonObj from './kbn_core_execution_context_common.devdocs.json'; diff --git a/api_docs/kbn_core_execution_context_server.mdx b/api_docs/kbn_core_execution_context_server.mdx index a0505820875a3..bc39f744d2e1a 100644 --- a/api_docs/kbn_core_execution_context_server.mdx +++ b/api_docs/kbn_core_execution_context_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-execution-context-server title: "@kbn/core-execution-context-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-execution-context-server plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-execution-context-server'] --- import kbnCoreExecutionContextServerObj from './kbn_core_execution_context_server.devdocs.json'; diff --git a/api_docs/kbn_core_execution_context_server_internal.mdx b/api_docs/kbn_core_execution_context_server_internal.mdx index b2ad15a6f6feb..90d02b73ec50a 100644 --- a/api_docs/kbn_core_execution_context_server_internal.mdx +++ b/api_docs/kbn_core_execution_context_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-execution-context-server-internal title: "@kbn/core-execution-context-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-execution-context-server-internal plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-execution-context-server-internal'] --- import kbnCoreExecutionContextServerInternalObj from './kbn_core_execution_context_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_execution_context_server_mocks.mdx b/api_docs/kbn_core_execution_context_server_mocks.mdx index 26d5ff214084e..dad0dd47d1804 100644 --- a/api_docs/kbn_core_execution_context_server_mocks.mdx +++ b/api_docs/kbn_core_execution_context_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-execution-context-server-mocks title: "@kbn/core-execution-context-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-execution-context-server-mocks plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-execution-context-server-mocks'] --- import kbnCoreExecutionContextServerMocksObj from './kbn_core_execution_context_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_fatal_errors_browser.mdx b/api_docs/kbn_core_fatal_errors_browser.mdx index 62c475e820061..53e3215f8f6f1 100644 --- a/api_docs/kbn_core_fatal_errors_browser.mdx +++ b/api_docs/kbn_core_fatal_errors_browser.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-fatal-errors-browser title: "@kbn/core-fatal-errors-browser" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-fatal-errors-browser plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-fatal-errors-browser'] --- import kbnCoreFatalErrorsBrowserObj from './kbn_core_fatal_errors_browser.devdocs.json'; diff --git a/api_docs/kbn_core_fatal_errors_browser_mocks.mdx b/api_docs/kbn_core_fatal_errors_browser_mocks.mdx index 3d545d5d7c064..5e16f1a4c2d71 100644 --- a/api_docs/kbn_core_fatal_errors_browser_mocks.mdx +++ b/api_docs/kbn_core_fatal_errors_browser_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-fatal-errors-browser-mocks title: "@kbn/core-fatal-errors-browser-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-fatal-errors-browser-mocks plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-fatal-errors-browser-mocks'] --- import kbnCoreFatalErrorsBrowserMocksObj from './kbn_core_fatal_errors_browser_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_http_browser.mdx b/api_docs/kbn_core_http_browser.mdx index f17f702477d08..a88ddb2f5f1ab 100644 --- a/api_docs/kbn_core_http_browser.mdx +++ b/api_docs/kbn_core_http_browser.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-http-browser title: "@kbn/core-http-browser" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-http-browser plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-http-browser'] --- import kbnCoreHttpBrowserObj from './kbn_core_http_browser.devdocs.json'; diff --git a/api_docs/kbn_core_http_browser_internal.mdx b/api_docs/kbn_core_http_browser_internal.mdx index 98f352832055a..cf5967e2e1001 100644 --- a/api_docs/kbn_core_http_browser_internal.mdx +++ b/api_docs/kbn_core_http_browser_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-http-browser-internal title: "@kbn/core-http-browser-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-http-browser-internal plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-http-browser-internal'] --- import kbnCoreHttpBrowserInternalObj from './kbn_core_http_browser_internal.devdocs.json'; diff --git a/api_docs/kbn_core_http_browser_mocks.mdx b/api_docs/kbn_core_http_browser_mocks.mdx index 27c5000852bdf..3ae6825a97da6 100644 --- a/api_docs/kbn_core_http_browser_mocks.mdx +++ b/api_docs/kbn_core_http_browser_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-http-browser-mocks title: "@kbn/core-http-browser-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-http-browser-mocks plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-http-browser-mocks'] --- import kbnCoreHttpBrowserMocksObj from './kbn_core_http_browser_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_http_common.mdx b/api_docs/kbn_core_http_common.mdx index a484867d9b387..53bc8e83e9f3c 100644 --- a/api_docs/kbn_core_http_common.mdx +++ b/api_docs/kbn_core_http_common.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-http-common title: "@kbn/core-http-common" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-http-common plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-http-common'] --- import kbnCoreHttpCommonObj from './kbn_core_http_common.devdocs.json'; diff --git a/api_docs/kbn_core_http_context_server_mocks.mdx b/api_docs/kbn_core_http_context_server_mocks.mdx index 2a03157cccc2c..41921751a6bd2 100644 --- a/api_docs/kbn_core_http_context_server_mocks.mdx +++ b/api_docs/kbn_core_http_context_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-http-context-server-mocks title: "@kbn/core-http-context-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-http-context-server-mocks plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-http-context-server-mocks'] --- import kbnCoreHttpContextServerMocksObj from './kbn_core_http_context_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_http_request_handler_context_server.mdx b/api_docs/kbn_core_http_request_handler_context_server.mdx index 0e50db41c0e94..c52174763060e 100644 --- a/api_docs/kbn_core_http_request_handler_context_server.mdx +++ b/api_docs/kbn_core_http_request_handler_context_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-http-request-handler-context-server title: "@kbn/core-http-request-handler-context-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-http-request-handler-context-server plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-http-request-handler-context-server'] --- import kbnCoreHttpRequestHandlerContextServerObj from './kbn_core_http_request_handler_context_server.devdocs.json'; diff --git a/api_docs/kbn_core_http_resources_server.mdx b/api_docs/kbn_core_http_resources_server.mdx index 568340bdc3415..554a5ffefeebf 100644 --- a/api_docs/kbn_core_http_resources_server.mdx +++ b/api_docs/kbn_core_http_resources_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-http-resources-server title: "@kbn/core-http-resources-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-http-resources-server plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-http-resources-server'] --- import kbnCoreHttpResourcesServerObj from './kbn_core_http_resources_server.devdocs.json'; diff --git a/api_docs/kbn_core_http_resources_server_internal.mdx b/api_docs/kbn_core_http_resources_server_internal.mdx index c618f0af1785d..7529b28565afa 100644 --- a/api_docs/kbn_core_http_resources_server_internal.mdx +++ b/api_docs/kbn_core_http_resources_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-http-resources-server-internal title: "@kbn/core-http-resources-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-http-resources-server-internal plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-http-resources-server-internal'] --- import kbnCoreHttpResourcesServerInternalObj from './kbn_core_http_resources_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_http_resources_server_mocks.mdx b/api_docs/kbn_core_http_resources_server_mocks.mdx index f510c96aa8f96..54d1d81b1d16e 100644 --- a/api_docs/kbn_core_http_resources_server_mocks.mdx +++ b/api_docs/kbn_core_http_resources_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-http-resources-server-mocks title: "@kbn/core-http-resources-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-http-resources-server-mocks plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-http-resources-server-mocks'] --- import kbnCoreHttpResourcesServerMocksObj from './kbn_core_http_resources_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_http_router_server_internal.mdx b/api_docs/kbn_core_http_router_server_internal.mdx index 8be77253b3d80..ddf525cf8681e 100644 --- a/api_docs/kbn_core_http_router_server_internal.mdx +++ b/api_docs/kbn_core_http_router_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-http-router-server-internal title: "@kbn/core-http-router-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-http-router-server-internal plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-http-router-server-internal'] --- import kbnCoreHttpRouterServerInternalObj from './kbn_core_http_router_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_http_router_server_mocks.mdx b/api_docs/kbn_core_http_router_server_mocks.mdx index 92d57089090ae..b45180eabb1ba 100644 --- a/api_docs/kbn_core_http_router_server_mocks.mdx +++ b/api_docs/kbn_core_http_router_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-http-router-server-mocks title: "@kbn/core-http-router-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-http-router-server-mocks plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-http-router-server-mocks'] --- import kbnCoreHttpRouterServerMocksObj from './kbn_core_http_router_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_http_server.mdx b/api_docs/kbn_core_http_server.mdx index 2ac0ef7af40f9..9ddedee8adfd5 100644 --- a/api_docs/kbn_core_http_server.mdx +++ b/api_docs/kbn_core_http_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-http-server title: "@kbn/core-http-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-http-server plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-http-server'] --- import kbnCoreHttpServerObj from './kbn_core_http_server.devdocs.json'; diff --git a/api_docs/kbn_core_http_server_internal.mdx b/api_docs/kbn_core_http_server_internal.mdx index 7420f09b614fd..89197e816bd11 100644 --- a/api_docs/kbn_core_http_server_internal.mdx +++ b/api_docs/kbn_core_http_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-http-server-internal title: "@kbn/core-http-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-http-server-internal plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-http-server-internal'] --- import kbnCoreHttpServerInternalObj from './kbn_core_http_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_http_server_mocks.mdx b/api_docs/kbn_core_http_server_mocks.mdx index 559ae13504006..6f881c2cb14cb 100644 --- a/api_docs/kbn_core_http_server_mocks.mdx +++ b/api_docs/kbn_core_http_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-http-server-mocks title: "@kbn/core-http-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-http-server-mocks plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-http-server-mocks'] --- import kbnCoreHttpServerMocksObj from './kbn_core_http_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_i18n_browser.mdx b/api_docs/kbn_core_i18n_browser.mdx index 4aa68beed800d..2fdbed216161f 100644 --- a/api_docs/kbn_core_i18n_browser.mdx +++ b/api_docs/kbn_core_i18n_browser.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-i18n-browser title: "@kbn/core-i18n-browser" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-i18n-browser plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-i18n-browser'] --- import kbnCoreI18nBrowserObj from './kbn_core_i18n_browser.devdocs.json'; diff --git a/api_docs/kbn_core_i18n_browser_mocks.mdx b/api_docs/kbn_core_i18n_browser_mocks.mdx index e76feae942b86..0bf99905a732a 100644 --- a/api_docs/kbn_core_i18n_browser_mocks.mdx +++ b/api_docs/kbn_core_i18n_browser_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-i18n-browser-mocks title: "@kbn/core-i18n-browser-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-i18n-browser-mocks plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-i18n-browser-mocks'] --- import kbnCoreI18nBrowserMocksObj from './kbn_core_i18n_browser_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_i18n_server.mdx b/api_docs/kbn_core_i18n_server.mdx index 5a811604677d6..da95cfe5b63fe 100644 --- a/api_docs/kbn_core_i18n_server.mdx +++ b/api_docs/kbn_core_i18n_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-i18n-server title: "@kbn/core-i18n-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-i18n-server plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-i18n-server'] --- import kbnCoreI18nServerObj from './kbn_core_i18n_server.devdocs.json'; diff --git a/api_docs/kbn_core_i18n_server_internal.mdx b/api_docs/kbn_core_i18n_server_internal.mdx index 00851a03ea95f..10dadf0b095e7 100644 --- a/api_docs/kbn_core_i18n_server_internal.mdx +++ b/api_docs/kbn_core_i18n_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-i18n-server-internal title: "@kbn/core-i18n-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-i18n-server-internal plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-i18n-server-internal'] --- import kbnCoreI18nServerInternalObj from './kbn_core_i18n_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_i18n_server_mocks.mdx b/api_docs/kbn_core_i18n_server_mocks.mdx index 4d6a9ba724b73..e963d6c6ca6e7 100644 --- a/api_docs/kbn_core_i18n_server_mocks.mdx +++ b/api_docs/kbn_core_i18n_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-i18n-server-mocks title: "@kbn/core-i18n-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-i18n-server-mocks plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-i18n-server-mocks'] --- import kbnCoreI18nServerMocksObj from './kbn_core_i18n_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_injected_metadata_browser_mocks.mdx b/api_docs/kbn_core_injected_metadata_browser_mocks.mdx index 113579ca77349..3c7bbafb56c3e 100644 --- a/api_docs/kbn_core_injected_metadata_browser_mocks.mdx +++ b/api_docs/kbn_core_injected_metadata_browser_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-injected-metadata-browser-mocks title: "@kbn/core-injected-metadata-browser-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-injected-metadata-browser-mocks plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-injected-metadata-browser-mocks'] --- import kbnCoreInjectedMetadataBrowserMocksObj from './kbn_core_injected_metadata_browser_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_integrations_browser_internal.mdx b/api_docs/kbn_core_integrations_browser_internal.mdx index 083b0b4ce299a..c527988e79961 100644 --- a/api_docs/kbn_core_integrations_browser_internal.mdx +++ b/api_docs/kbn_core_integrations_browser_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-integrations-browser-internal title: "@kbn/core-integrations-browser-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-integrations-browser-internal plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-integrations-browser-internal'] --- import kbnCoreIntegrationsBrowserInternalObj from './kbn_core_integrations_browser_internal.devdocs.json'; diff --git a/api_docs/kbn_core_integrations_browser_mocks.mdx b/api_docs/kbn_core_integrations_browser_mocks.mdx index 74ee9f0bd7e27..fde3030aac83b 100644 --- a/api_docs/kbn_core_integrations_browser_mocks.mdx +++ b/api_docs/kbn_core_integrations_browser_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-integrations-browser-mocks title: "@kbn/core-integrations-browser-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-integrations-browser-mocks plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-integrations-browser-mocks'] --- import kbnCoreIntegrationsBrowserMocksObj from './kbn_core_integrations_browser_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_lifecycle_browser.mdx b/api_docs/kbn_core_lifecycle_browser.mdx index bbfa157b9547b..e8aa5d544c407 100644 --- a/api_docs/kbn_core_lifecycle_browser.mdx +++ b/api_docs/kbn_core_lifecycle_browser.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-lifecycle-browser title: "@kbn/core-lifecycle-browser" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-lifecycle-browser plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-lifecycle-browser'] --- import kbnCoreLifecycleBrowserObj from './kbn_core_lifecycle_browser.devdocs.json'; diff --git a/api_docs/kbn_core_lifecycle_browser_mocks.mdx b/api_docs/kbn_core_lifecycle_browser_mocks.mdx index 321346d1f6c3a..ae258623d8932 100644 --- a/api_docs/kbn_core_lifecycle_browser_mocks.mdx +++ b/api_docs/kbn_core_lifecycle_browser_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-lifecycle-browser-mocks title: "@kbn/core-lifecycle-browser-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-lifecycle-browser-mocks plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-lifecycle-browser-mocks'] --- import kbnCoreLifecycleBrowserMocksObj from './kbn_core_lifecycle_browser_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_lifecycle_server.mdx b/api_docs/kbn_core_lifecycle_server.mdx index 34ca735b84bc0..2c0780495db4b 100644 --- a/api_docs/kbn_core_lifecycle_server.mdx +++ b/api_docs/kbn_core_lifecycle_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-lifecycle-server title: "@kbn/core-lifecycle-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-lifecycle-server plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-lifecycle-server'] --- import kbnCoreLifecycleServerObj from './kbn_core_lifecycle_server.devdocs.json'; diff --git a/api_docs/kbn_core_lifecycle_server_mocks.mdx b/api_docs/kbn_core_lifecycle_server_mocks.mdx index 82c37715bde03..09941582fc6ed 100644 --- a/api_docs/kbn_core_lifecycle_server_mocks.mdx +++ b/api_docs/kbn_core_lifecycle_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-lifecycle-server-mocks title: "@kbn/core-lifecycle-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-lifecycle-server-mocks plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-lifecycle-server-mocks'] --- import kbnCoreLifecycleServerMocksObj from './kbn_core_lifecycle_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_logging_browser_mocks.mdx b/api_docs/kbn_core_logging_browser_mocks.mdx index d08d591305b6c..766e6745c4b50 100644 --- a/api_docs/kbn_core_logging_browser_mocks.mdx +++ b/api_docs/kbn_core_logging_browser_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-logging-browser-mocks title: "@kbn/core-logging-browser-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-logging-browser-mocks plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-logging-browser-mocks'] --- import kbnCoreLoggingBrowserMocksObj from './kbn_core_logging_browser_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_logging_common_internal.mdx b/api_docs/kbn_core_logging_common_internal.mdx index e2a11ff2cd653..6ff23e0afff54 100644 --- a/api_docs/kbn_core_logging_common_internal.mdx +++ b/api_docs/kbn_core_logging_common_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-logging-common-internal title: "@kbn/core-logging-common-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-logging-common-internal plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-logging-common-internal'] --- import kbnCoreLoggingCommonInternalObj from './kbn_core_logging_common_internal.devdocs.json'; diff --git a/api_docs/kbn_core_logging_server.mdx b/api_docs/kbn_core_logging_server.mdx index 23220c6a3b845..3dec583787f70 100644 --- a/api_docs/kbn_core_logging_server.mdx +++ b/api_docs/kbn_core_logging_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-logging-server title: "@kbn/core-logging-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-logging-server plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-logging-server'] --- import kbnCoreLoggingServerObj from './kbn_core_logging_server.devdocs.json'; diff --git a/api_docs/kbn_core_logging_server_internal.mdx b/api_docs/kbn_core_logging_server_internal.mdx index 08288450c2113..e102c5a24efff 100644 --- a/api_docs/kbn_core_logging_server_internal.mdx +++ b/api_docs/kbn_core_logging_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-logging-server-internal title: "@kbn/core-logging-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-logging-server-internal plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-logging-server-internal'] --- import kbnCoreLoggingServerInternalObj from './kbn_core_logging_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_logging_server_mocks.mdx b/api_docs/kbn_core_logging_server_mocks.mdx index e0fbef8fc12c6..89eb0ac28b2d6 100644 --- a/api_docs/kbn_core_logging_server_mocks.mdx +++ b/api_docs/kbn_core_logging_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-logging-server-mocks title: "@kbn/core-logging-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-logging-server-mocks plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-logging-server-mocks'] --- import kbnCoreLoggingServerMocksObj from './kbn_core_logging_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_metrics_collectors_server_internal.mdx b/api_docs/kbn_core_metrics_collectors_server_internal.mdx index aafb53056f88a..eba716536a175 100644 --- a/api_docs/kbn_core_metrics_collectors_server_internal.mdx +++ b/api_docs/kbn_core_metrics_collectors_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-metrics-collectors-server-internal title: "@kbn/core-metrics-collectors-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-metrics-collectors-server-internal plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-metrics-collectors-server-internal'] --- import kbnCoreMetricsCollectorsServerInternalObj from './kbn_core_metrics_collectors_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_metrics_collectors_server_mocks.mdx b/api_docs/kbn_core_metrics_collectors_server_mocks.mdx index fafd34437aa5a..2d258ee4e4320 100644 --- a/api_docs/kbn_core_metrics_collectors_server_mocks.mdx +++ b/api_docs/kbn_core_metrics_collectors_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-metrics-collectors-server-mocks title: "@kbn/core-metrics-collectors-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-metrics-collectors-server-mocks plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-metrics-collectors-server-mocks'] --- import kbnCoreMetricsCollectorsServerMocksObj from './kbn_core_metrics_collectors_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_metrics_server.mdx b/api_docs/kbn_core_metrics_server.mdx index 3f1833d77c38b..0eb9f83dc9f6c 100644 --- a/api_docs/kbn_core_metrics_server.mdx +++ b/api_docs/kbn_core_metrics_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-metrics-server title: "@kbn/core-metrics-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-metrics-server plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-metrics-server'] --- import kbnCoreMetricsServerObj from './kbn_core_metrics_server.devdocs.json'; diff --git a/api_docs/kbn_core_metrics_server_internal.mdx b/api_docs/kbn_core_metrics_server_internal.mdx index 13bca7101a4ed..0c86d679523db 100644 --- a/api_docs/kbn_core_metrics_server_internal.mdx +++ b/api_docs/kbn_core_metrics_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-metrics-server-internal title: "@kbn/core-metrics-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-metrics-server-internal plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-metrics-server-internal'] --- import kbnCoreMetricsServerInternalObj from './kbn_core_metrics_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_metrics_server_mocks.mdx b/api_docs/kbn_core_metrics_server_mocks.mdx index a6e2a8507c412..9a2ed56800deb 100644 --- a/api_docs/kbn_core_metrics_server_mocks.mdx +++ b/api_docs/kbn_core_metrics_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-metrics-server-mocks title: "@kbn/core-metrics-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-metrics-server-mocks plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-metrics-server-mocks'] --- import kbnCoreMetricsServerMocksObj from './kbn_core_metrics_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_mount_utils_browser.mdx b/api_docs/kbn_core_mount_utils_browser.mdx index 825b9fb0ca99b..12587dc234f3b 100644 --- a/api_docs/kbn_core_mount_utils_browser.mdx +++ b/api_docs/kbn_core_mount_utils_browser.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-mount-utils-browser title: "@kbn/core-mount-utils-browser" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-mount-utils-browser plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-mount-utils-browser'] --- import kbnCoreMountUtilsBrowserObj from './kbn_core_mount_utils_browser.devdocs.json'; diff --git a/api_docs/kbn_core_node_server.mdx b/api_docs/kbn_core_node_server.mdx index a9041f287c27d..450d984c0ebdd 100644 --- a/api_docs/kbn_core_node_server.mdx +++ b/api_docs/kbn_core_node_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-node-server title: "@kbn/core-node-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-node-server plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-node-server'] --- import kbnCoreNodeServerObj from './kbn_core_node_server.devdocs.json'; diff --git a/api_docs/kbn_core_node_server_internal.mdx b/api_docs/kbn_core_node_server_internal.mdx index fff2154ba4f98..d68c6ba90df9a 100644 --- a/api_docs/kbn_core_node_server_internal.mdx +++ b/api_docs/kbn_core_node_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-node-server-internal title: "@kbn/core-node-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-node-server-internal plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-node-server-internal'] --- import kbnCoreNodeServerInternalObj from './kbn_core_node_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_node_server_mocks.mdx b/api_docs/kbn_core_node_server_mocks.mdx index a2ad280dfcfa1..f06d29c9bb52f 100644 --- a/api_docs/kbn_core_node_server_mocks.mdx +++ b/api_docs/kbn_core_node_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-node-server-mocks title: "@kbn/core-node-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-node-server-mocks plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-node-server-mocks'] --- import kbnCoreNodeServerMocksObj from './kbn_core_node_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_notifications_browser.mdx b/api_docs/kbn_core_notifications_browser.mdx index 09f2be79b0977..e0b48922d5bfe 100644 --- a/api_docs/kbn_core_notifications_browser.mdx +++ b/api_docs/kbn_core_notifications_browser.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-notifications-browser title: "@kbn/core-notifications-browser" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-notifications-browser plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-notifications-browser'] --- import kbnCoreNotificationsBrowserObj from './kbn_core_notifications_browser.devdocs.json'; diff --git a/api_docs/kbn_core_notifications_browser_internal.mdx b/api_docs/kbn_core_notifications_browser_internal.mdx index b404964a396b0..1892f2d5f1c88 100644 --- a/api_docs/kbn_core_notifications_browser_internal.mdx +++ b/api_docs/kbn_core_notifications_browser_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-notifications-browser-internal title: "@kbn/core-notifications-browser-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-notifications-browser-internal plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-notifications-browser-internal'] --- import kbnCoreNotificationsBrowserInternalObj from './kbn_core_notifications_browser_internal.devdocs.json'; diff --git a/api_docs/kbn_core_notifications_browser_mocks.mdx b/api_docs/kbn_core_notifications_browser_mocks.mdx index c56147f080ac7..70e3e8fa81f31 100644 --- a/api_docs/kbn_core_notifications_browser_mocks.mdx +++ b/api_docs/kbn_core_notifications_browser_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-notifications-browser-mocks title: "@kbn/core-notifications-browser-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-notifications-browser-mocks plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-notifications-browser-mocks'] --- import kbnCoreNotificationsBrowserMocksObj from './kbn_core_notifications_browser_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_overlays_browser.mdx b/api_docs/kbn_core_overlays_browser.mdx index a4e565fc8e8f5..2968ebcb66dbc 100644 --- a/api_docs/kbn_core_overlays_browser.mdx +++ b/api_docs/kbn_core_overlays_browser.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-overlays-browser title: "@kbn/core-overlays-browser" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-overlays-browser plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-overlays-browser'] --- import kbnCoreOverlaysBrowserObj from './kbn_core_overlays_browser.devdocs.json'; diff --git a/api_docs/kbn_core_overlays_browser_internal.mdx b/api_docs/kbn_core_overlays_browser_internal.mdx index 51413996db22e..a91df954399fc 100644 --- a/api_docs/kbn_core_overlays_browser_internal.mdx +++ b/api_docs/kbn_core_overlays_browser_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-overlays-browser-internal title: "@kbn/core-overlays-browser-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-overlays-browser-internal plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-overlays-browser-internal'] --- import kbnCoreOverlaysBrowserInternalObj from './kbn_core_overlays_browser_internal.devdocs.json'; diff --git a/api_docs/kbn_core_overlays_browser_mocks.mdx b/api_docs/kbn_core_overlays_browser_mocks.mdx index 49e74d740001b..15a48de0397cf 100644 --- a/api_docs/kbn_core_overlays_browser_mocks.mdx +++ b/api_docs/kbn_core_overlays_browser_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-overlays-browser-mocks title: "@kbn/core-overlays-browser-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-overlays-browser-mocks plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-overlays-browser-mocks'] --- import kbnCoreOverlaysBrowserMocksObj from './kbn_core_overlays_browser_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_plugins_browser.mdx b/api_docs/kbn_core_plugins_browser.mdx index d31abf68210c0..ddd21e9a43aef 100644 --- a/api_docs/kbn_core_plugins_browser.mdx +++ b/api_docs/kbn_core_plugins_browser.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-plugins-browser title: "@kbn/core-plugins-browser" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-plugins-browser plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-plugins-browser'] --- import kbnCorePluginsBrowserObj from './kbn_core_plugins_browser.devdocs.json'; diff --git a/api_docs/kbn_core_plugins_browser_mocks.mdx b/api_docs/kbn_core_plugins_browser_mocks.mdx index 3450d114dafdb..4d926bfa3c7e9 100644 --- a/api_docs/kbn_core_plugins_browser_mocks.mdx +++ b/api_docs/kbn_core_plugins_browser_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-plugins-browser-mocks title: "@kbn/core-plugins-browser-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-plugins-browser-mocks plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-plugins-browser-mocks'] --- import kbnCorePluginsBrowserMocksObj from './kbn_core_plugins_browser_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_plugins_server.mdx b/api_docs/kbn_core_plugins_server.mdx index dbb34b4430558..ce24ef87cf823 100644 --- a/api_docs/kbn_core_plugins_server.mdx +++ b/api_docs/kbn_core_plugins_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-plugins-server title: "@kbn/core-plugins-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-plugins-server plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-plugins-server'] --- import kbnCorePluginsServerObj from './kbn_core_plugins_server.devdocs.json'; diff --git a/api_docs/kbn_core_plugins_server_mocks.mdx b/api_docs/kbn_core_plugins_server_mocks.mdx index 9c4b3bf995492..5368fd66dd200 100644 --- a/api_docs/kbn_core_plugins_server_mocks.mdx +++ b/api_docs/kbn_core_plugins_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-plugins-server-mocks title: "@kbn/core-plugins-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-plugins-server-mocks plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-plugins-server-mocks'] --- import kbnCorePluginsServerMocksObj from './kbn_core_plugins_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_preboot_server.mdx b/api_docs/kbn_core_preboot_server.mdx index 76224c8016dbc..698bebd92016a 100644 --- a/api_docs/kbn_core_preboot_server.mdx +++ b/api_docs/kbn_core_preboot_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-preboot-server title: "@kbn/core-preboot-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-preboot-server plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-preboot-server'] --- import kbnCorePrebootServerObj from './kbn_core_preboot_server.devdocs.json'; diff --git a/api_docs/kbn_core_preboot_server_mocks.mdx b/api_docs/kbn_core_preboot_server_mocks.mdx index ecbc35c7ecb76..59f0c2f3ed2e4 100644 --- a/api_docs/kbn_core_preboot_server_mocks.mdx +++ b/api_docs/kbn_core_preboot_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-preboot-server-mocks title: "@kbn/core-preboot-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-preboot-server-mocks plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-preboot-server-mocks'] --- import kbnCorePrebootServerMocksObj from './kbn_core_preboot_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_rendering_browser_mocks.mdx b/api_docs/kbn_core_rendering_browser_mocks.mdx index 1867c113a8e59..63236c540d5d6 100644 --- a/api_docs/kbn_core_rendering_browser_mocks.mdx +++ b/api_docs/kbn_core_rendering_browser_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-rendering-browser-mocks title: "@kbn/core-rendering-browser-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-rendering-browser-mocks plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-rendering-browser-mocks'] --- import kbnCoreRenderingBrowserMocksObj from './kbn_core_rendering_browser_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_rendering_server_internal.mdx b/api_docs/kbn_core_rendering_server_internal.mdx index ea6f7a163ecc3..fa30749806797 100644 --- a/api_docs/kbn_core_rendering_server_internal.mdx +++ b/api_docs/kbn_core_rendering_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-rendering-server-internal title: "@kbn/core-rendering-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-rendering-server-internal plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-rendering-server-internal'] --- import kbnCoreRenderingServerInternalObj from './kbn_core_rendering_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_rendering_server_mocks.mdx b/api_docs/kbn_core_rendering_server_mocks.mdx index 7ad8a1848cdb2..72730bfb40427 100644 --- a/api_docs/kbn_core_rendering_server_mocks.mdx +++ b/api_docs/kbn_core_rendering_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-rendering-server-mocks title: "@kbn/core-rendering-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-rendering-server-mocks plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-rendering-server-mocks'] --- import kbnCoreRenderingServerMocksObj from './kbn_core_rendering_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_root_server_internal.mdx b/api_docs/kbn_core_root_server_internal.mdx index efbfbc7d97d49..d80555ca23256 100644 --- a/api_docs/kbn_core_root_server_internal.mdx +++ b/api_docs/kbn_core_root_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-root-server-internal title: "@kbn/core-root-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-root-server-internal plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-root-server-internal'] --- import kbnCoreRootServerInternalObj from './kbn_core_root_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_saved_objects_api_browser.mdx b/api_docs/kbn_core_saved_objects_api_browser.mdx index 747d099ccc978..603d5350f1213 100644 --- a/api_docs/kbn_core_saved_objects_api_browser.mdx +++ b/api_docs/kbn_core_saved_objects_api_browser.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-saved-objects-api-browser title: "@kbn/core-saved-objects-api-browser" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-saved-objects-api-browser plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-saved-objects-api-browser'] --- import kbnCoreSavedObjectsApiBrowserObj from './kbn_core_saved_objects_api_browser.devdocs.json'; diff --git a/api_docs/kbn_core_saved_objects_api_server.mdx b/api_docs/kbn_core_saved_objects_api_server.mdx index 64ef270486124..7ea33f6e0b85d 100644 --- a/api_docs/kbn_core_saved_objects_api_server.mdx +++ b/api_docs/kbn_core_saved_objects_api_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-saved-objects-api-server title: "@kbn/core-saved-objects-api-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-saved-objects-api-server plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-saved-objects-api-server'] --- import kbnCoreSavedObjectsApiServerObj from './kbn_core_saved_objects_api_server.devdocs.json'; diff --git a/api_docs/kbn_core_saved_objects_api_server_mocks.mdx b/api_docs/kbn_core_saved_objects_api_server_mocks.mdx index c3fb4232decf1..74b2a3bf3153c 100644 --- a/api_docs/kbn_core_saved_objects_api_server_mocks.mdx +++ b/api_docs/kbn_core_saved_objects_api_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-saved-objects-api-server-mocks title: "@kbn/core-saved-objects-api-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-saved-objects-api-server-mocks plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-saved-objects-api-server-mocks'] --- import kbnCoreSavedObjectsApiServerMocksObj from './kbn_core_saved_objects_api_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_saved_objects_base_server_internal.mdx b/api_docs/kbn_core_saved_objects_base_server_internal.mdx index 46ed4eac883c7..265a6e888a4fa 100644 --- a/api_docs/kbn_core_saved_objects_base_server_internal.mdx +++ b/api_docs/kbn_core_saved_objects_base_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-saved-objects-base-server-internal title: "@kbn/core-saved-objects-base-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-saved-objects-base-server-internal plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-saved-objects-base-server-internal'] --- import kbnCoreSavedObjectsBaseServerInternalObj from './kbn_core_saved_objects_base_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_saved_objects_base_server_mocks.mdx b/api_docs/kbn_core_saved_objects_base_server_mocks.mdx index e78eab11eb889..7cfcdca9c618b 100644 --- a/api_docs/kbn_core_saved_objects_base_server_mocks.mdx +++ b/api_docs/kbn_core_saved_objects_base_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-saved-objects-base-server-mocks title: "@kbn/core-saved-objects-base-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-saved-objects-base-server-mocks plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-saved-objects-base-server-mocks'] --- import kbnCoreSavedObjectsBaseServerMocksObj from './kbn_core_saved_objects_base_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_saved_objects_browser.mdx b/api_docs/kbn_core_saved_objects_browser.mdx index 317b82f177f33..f522499af8803 100644 --- a/api_docs/kbn_core_saved_objects_browser.mdx +++ b/api_docs/kbn_core_saved_objects_browser.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-saved-objects-browser title: "@kbn/core-saved-objects-browser" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-saved-objects-browser plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-saved-objects-browser'] --- import kbnCoreSavedObjectsBrowserObj from './kbn_core_saved_objects_browser.devdocs.json'; diff --git a/api_docs/kbn_core_saved_objects_browser_internal.mdx b/api_docs/kbn_core_saved_objects_browser_internal.mdx index 9482252792f29..7afe58df85410 100644 --- a/api_docs/kbn_core_saved_objects_browser_internal.mdx +++ b/api_docs/kbn_core_saved_objects_browser_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-saved-objects-browser-internal title: "@kbn/core-saved-objects-browser-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-saved-objects-browser-internal plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-saved-objects-browser-internal'] --- import kbnCoreSavedObjectsBrowserInternalObj from './kbn_core_saved_objects_browser_internal.devdocs.json'; diff --git a/api_docs/kbn_core_saved_objects_browser_mocks.mdx b/api_docs/kbn_core_saved_objects_browser_mocks.mdx index 76a14a896e7c1..fd1bb55d11e87 100644 --- a/api_docs/kbn_core_saved_objects_browser_mocks.mdx +++ b/api_docs/kbn_core_saved_objects_browser_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-saved-objects-browser-mocks title: "@kbn/core-saved-objects-browser-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-saved-objects-browser-mocks plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-saved-objects-browser-mocks'] --- import kbnCoreSavedObjectsBrowserMocksObj from './kbn_core_saved_objects_browser_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_saved_objects_common.mdx b/api_docs/kbn_core_saved_objects_common.mdx index c1d32f7f5b0b0..9ad702f481de6 100644 --- a/api_docs/kbn_core_saved_objects_common.mdx +++ b/api_docs/kbn_core_saved_objects_common.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-saved-objects-common title: "@kbn/core-saved-objects-common" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-saved-objects-common plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-saved-objects-common'] --- import kbnCoreSavedObjectsCommonObj from './kbn_core_saved_objects_common.devdocs.json'; diff --git a/api_docs/kbn_core_saved_objects_import_export_server_internal.mdx b/api_docs/kbn_core_saved_objects_import_export_server_internal.mdx index 5da67898d1bf8..7053e8614cb90 100644 --- a/api_docs/kbn_core_saved_objects_import_export_server_internal.mdx +++ b/api_docs/kbn_core_saved_objects_import_export_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-saved-objects-import-export-server-internal title: "@kbn/core-saved-objects-import-export-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-saved-objects-import-export-server-internal plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-saved-objects-import-export-server-internal'] --- import kbnCoreSavedObjectsImportExportServerInternalObj from './kbn_core_saved_objects_import_export_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_saved_objects_import_export_server_mocks.mdx b/api_docs/kbn_core_saved_objects_import_export_server_mocks.mdx index 1c062a2f4eb69..f21e7bd234367 100644 --- a/api_docs/kbn_core_saved_objects_import_export_server_mocks.mdx +++ b/api_docs/kbn_core_saved_objects_import_export_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-saved-objects-import-export-server-mocks title: "@kbn/core-saved-objects-import-export-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-saved-objects-import-export-server-mocks plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-saved-objects-import-export-server-mocks'] --- import kbnCoreSavedObjectsImportExportServerMocksObj from './kbn_core_saved_objects_import_export_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_saved_objects_migration_server_internal.mdx b/api_docs/kbn_core_saved_objects_migration_server_internal.mdx index a6f7bff514330..9112c4f9188ce 100644 --- a/api_docs/kbn_core_saved_objects_migration_server_internal.mdx +++ b/api_docs/kbn_core_saved_objects_migration_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-saved-objects-migration-server-internal title: "@kbn/core-saved-objects-migration-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-saved-objects-migration-server-internal plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-saved-objects-migration-server-internal'] --- import kbnCoreSavedObjectsMigrationServerInternalObj from './kbn_core_saved_objects_migration_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_saved_objects_migration_server_mocks.mdx b/api_docs/kbn_core_saved_objects_migration_server_mocks.mdx index 5be88e89d5263..490cfe63b4f08 100644 --- a/api_docs/kbn_core_saved_objects_migration_server_mocks.mdx +++ b/api_docs/kbn_core_saved_objects_migration_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-saved-objects-migration-server-mocks title: "@kbn/core-saved-objects-migration-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-saved-objects-migration-server-mocks plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-saved-objects-migration-server-mocks'] --- import kbnCoreSavedObjectsMigrationServerMocksObj from './kbn_core_saved_objects_migration_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_saved_objects_server.mdx b/api_docs/kbn_core_saved_objects_server.mdx index 8ce8508d9c09c..80bb245ec4692 100644 --- a/api_docs/kbn_core_saved_objects_server.mdx +++ b/api_docs/kbn_core_saved_objects_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-saved-objects-server title: "@kbn/core-saved-objects-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-saved-objects-server plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-saved-objects-server'] --- import kbnCoreSavedObjectsServerObj from './kbn_core_saved_objects_server.devdocs.json'; diff --git a/api_docs/kbn_core_saved_objects_server_internal.mdx b/api_docs/kbn_core_saved_objects_server_internal.mdx index 2dc0eb57d3ee6..2ce9d88492532 100644 --- a/api_docs/kbn_core_saved_objects_server_internal.mdx +++ b/api_docs/kbn_core_saved_objects_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-saved-objects-server-internal title: "@kbn/core-saved-objects-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-saved-objects-server-internal plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-saved-objects-server-internal'] --- import kbnCoreSavedObjectsServerInternalObj from './kbn_core_saved_objects_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_saved_objects_server_mocks.mdx b/api_docs/kbn_core_saved_objects_server_mocks.mdx index 0f1df3afc4373..184b38b621600 100644 --- a/api_docs/kbn_core_saved_objects_server_mocks.mdx +++ b/api_docs/kbn_core_saved_objects_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-saved-objects-server-mocks title: "@kbn/core-saved-objects-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-saved-objects-server-mocks plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-saved-objects-server-mocks'] --- import kbnCoreSavedObjectsServerMocksObj from './kbn_core_saved_objects_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_saved_objects_utils_server.mdx b/api_docs/kbn_core_saved_objects_utils_server.mdx index 68c87ddfe724a..12b5e8e2c6c3c 100644 --- a/api_docs/kbn_core_saved_objects_utils_server.mdx +++ b/api_docs/kbn_core_saved_objects_utils_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-saved-objects-utils-server title: "@kbn/core-saved-objects-utils-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-saved-objects-utils-server plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-saved-objects-utils-server'] --- import kbnCoreSavedObjectsUtilsServerObj from './kbn_core_saved_objects_utils_server.devdocs.json'; diff --git a/api_docs/kbn_core_status_common.mdx b/api_docs/kbn_core_status_common.mdx index f55e8720b88af..20cc636acce97 100644 --- a/api_docs/kbn_core_status_common.mdx +++ b/api_docs/kbn_core_status_common.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-status-common title: "@kbn/core-status-common" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-status-common plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-status-common'] --- import kbnCoreStatusCommonObj from './kbn_core_status_common.devdocs.json'; diff --git a/api_docs/kbn_core_status_common_internal.mdx b/api_docs/kbn_core_status_common_internal.mdx index 899bb13520fef..08664bdee2e23 100644 --- a/api_docs/kbn_core_status_common_internal.mdx +++ b/api_docs/kbn_core_status_common_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-status-common-internal title: "@kbn/core-status-common-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-status-common-internal plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-status-common-internal'] --- import kbnCoreStatusCommonInternalObj from './kbn_core_status_common_internal.devdocs.json'; diff --git a/api_docs/kbn_core_status_server.mdx b/api_docs/kbn_core_status_server.mdx index 92e75b0c23363..58c41568514c9 100644 --- a/api_docs/kbn_core_status_server.mdx +++ b/api_docs/kbn_core_status_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-status-server title: "@kbn/core-status-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-status-server plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-status-server'] --- import kbnCoreStatusServerObj from './kbn_core_status_server.devdocs.json'; diff --git a/api_docs/kbn_core_status_server_internal.mdx b/api_docs/kbn_core_status_server_internal.mdx index fe9e8127ef252..23a865b2ef73c 100644 --- a/api_docs/kbn_core_status_server_internal.mdx +++ b/api_docs/kbn_core_status_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-status-server-internal title: "@kbn/core-status-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-status-server-internal plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-status-server-internal'] --- import kbnCoreStatusServerInternalObj from './kbn_core_status_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_status_server_mocks.mdx b/api_docs/kbn_core_status_server_mocks.mdx index 8ba779f186f6e..f8461f8bc8992 100644 --- a/api_docs/kbn_core_status_server_mocks.mdx +++ b/api_docs/kbn_core_status_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-status-server-mocks title: "@kbn/core-status-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-status-server-mocks plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-status-server-mocks'] --- import kbnCoreStatusServerMocksObj from './kbn_core_status_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_test_helpers_deprecations_getters.mdx b/api_docs/kbn_core_test_helpers_deprecations_getters.mdx index ab707f88d9192..85f8fe26707fb 100644 --- a/api_docs/kbn_core_test_helpers_deprecations_getters.mdx +++ b/api_docs/kbn_core_test_helpers_deprecations_getters.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-test-helpers-deprecations-getters title: "@kbn/core-test-helpers-deprecations-getters" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-test-helpers-deprecations-getters plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-test-helpers-deprecations-getters'] --- import kbnCoreTestHelpersDeprecationsGettersObj from './kbn_core_test_helpers_deprecations_getters.devdocs.json'; diff --git a/api_docs/kbn_core_test_helpers_http_setup_browser.mdx b/api_docs/kbn_core_test_helpers_http_setup_browser.mdx index ea612a9611ce4..0b2aba732ab26 100644 --- a/api_docs/kbn_core_test_helpers_http_setup_browser.mdx +++ b/api_docs/kbn_core_test_helpers_http_setup_browser.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-test-helpers-http-setup-browser title: "@kbn/core-test-helpers-http-setup-browser" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-test-helpers-http-setup-browser plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-test-helpers-http-setup-browser'] --- import kbnCoreTestHelpersHttpSetupBrowserObj from './kbn_core_test_helpers_http_setup_browser.devdocs.json'; diff --git a/api_docs/kbn_core_test_helpers_kbn_server.mdx b/api_docs/kbn_core_test_helpers_kbn_server.mdx index 12cd648e13eb2..b021474ec66c7 100644 --- a/api_docs/kbn_core_test_helpers_kbn_server.mdx +++ b/api_docs/kbn_core_test_helpers_kbn_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-test-helpers-kbn-server title: "@kbn/core-test-helpers-kbn-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-test-helpers-kbn-server plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-test-helpers-kbn-server'] --- import kbnCoreTestHelpersKbnServerObj from './kbn_core_test_helpers_kbn_server.devdocs.json'; diff --git a/api_docs/kbn_core_test_helpers_model_versions.mdx b/api_docs/kbn_core_test_helpers_model_versions.mdx index 0fa2288196cb9..551824b726036 100644 --- a/api_docs/kbn_core_test_helpers_model_versions.mdx +++ b/api_docs/kbn_core_test_helpers_model_versions.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-test-helpers-model-versions title: "@kbn/core-test-helpers-model-versions" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-test-helpers-model-versions plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-test-helpers-model-versions'] --- import kbnCoreTestHelpersModelVersionsObj from './kbn_core_test_helpers_model_versions.devdocs.json'; diff --git a/api_docs/kbn_core_test_helpers_so_type_serializer.mdx b/api_docs/kbn_core_test_helpers_so_type_serializer.mdx index dc77f47be4503..7fad5f5c27d57 100644 --- a/api_docs/kbn_core_test_helpers_so_type_serializer.mdx +++ b/api_docs/kbn_core_test_helpers_so_type_serializer.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-test-helpers-so-type-serializer title: "@kbn/core-test-helpers-so-type-serializer" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-test-helpers-so-type-serializer plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-test-helpers-so-type-serializer'] --- import kbnCoreTestHelpersSoTypeSerializerObj from './kbn_core_test_helpers_so_type_serializer.devdocs.json'; diff --git a/api_docs/kbn_core_test_helpers_test_utils.mdx b/api_docs/kbn_core_test_helpers_test_utils.mdx index cfa0c10002dd0..7efc2c2532e84 100644 --- a/api_docs/kbn_core_test_helpers_test_utils.mdx +++ b/api_docs/kbn_core_test_helpers_test_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-test-helpers-test-utils title: "@kbn/core-test-helpers-test-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-test-helpers-test-utils plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-test-helpers-test-utils'] --- import kbnCoreTestHelpersTestUtilsObj from './kbn_core_test_helpers_test_utils.devdocs.json'; diff --git a/api_docs/kbn_core_theme_browser.mdx b/api_docs/kbn_core_theme_browser.mdx index b605f8fa709ea..694df1485d5c0 100644 --- a/api_docs/kbn_core_theme_browser.mdx +++ b/api_docs/kbn_core_theme_browser.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-theme-browser title: "@kbn/core-theme-browser" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-theme-browser plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-theme-browser'] --- import kbnCoreThemeBrowserObj from './kbn_core_theme_browser.devdocs.json'; diff --git a/api_docs/kbn_core_theme_browser_mocks.mdx b/api_docs/kbn_core_theme_browser_mocks.mdx index d9ca3b3f863db..2984756dda7c8 100644 --- a/api_docs/kbn_core_theme_browser_mocks.mdx +++ b/api_docs/kbn_core_theme_browser_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-theme-browser-mocks title: "@kbn/core-theme-browser-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-theme-browser-mocks plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-theme-browser-mocks'] --- import kbnCoreThemeBrowserMocksObj from './kbn_core_theme_browser_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_ui_settings_browser.mdx b/api_docs/kbn_core_ui_settings_browser.mdx index a05117546a9e5..62cc3ae2882f6 100644 --- a/api_docs/kbn_core_ui_settings_browser.mdx +++ b/api_docs/kbn_core_ui_settings_browser.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-ui-settings-browser title: "@kbn/core-ui-settings-browser" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-ui-settings-browser plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-ui-settings-browser'] --- import kbnCoreUiSettingsBrowserObj from './kbn_core_ui_settings_browser.devdocs.json'; diff --git a/api_docs/kbn_core_ui_settings_browser_internal.mdx b/api_docs/kbn_core_ui_settings_browser_internal.mdx index e32a1a0f78d7b..e90870c150c76 100644 --- a/api_docs/kbn_core_ui_settings_browser_internal.mdx +++ b/api_docs/kbn_core_ui_settings_browser_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-ui-settings-browser-internal title: "@kbn/core-ui-settings-browser-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-ui-settings-browser-internal plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-ui-settings-browser-internal'] --- import kbnCoreUiSettingsBrowserInternalObj from './kbn_core_ui_settings_browser_internal.devdocs.json'; diff --git a/api_docs/kbn_core_ui_settings_browser_mocks.mdx b/api_docs/kbn_core_ui_settings_browser_mocks.mdx index f0cd6a53d9768..f996ab1e5d99a 100644 --- a/api_docs/kbn_core_ui_settings_browser_mocks.mdx +++ b/api_docs/kbn_core_ui_settings_browser_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-ui-settings-browser-mocks title: "@kbn/core-ui-settings-browser-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-ui-settings-browser-mocks plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-ui-settings-browser-mocks'] --- import kbnCoreUiSettingsBrowserMocksObj from './kbn_core_ui_settings_browser_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_ui_settings_common.mdx b/api_docs/kbn_core_ui_settings_common.mdx index 8fd57e5143f1d..b4696bf2b9114 100644 --- a/api_docs/kbn_core_ui_settings_common.mdx +++ b/api_docs/kbn_core_ui_settings_common.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-ui-settings-common title: "@kbn/core-ui-settings-common" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-ui-settings-common plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-ui-settings-common'] --- import kbnCoreUiSettingsCommonObj from './kbn_core_ui_settings_common.devdocs.json'; diff --git a/api_docs/kbn_core_ui_settings_server.mdx b/api_docs/kbn_core_ui_settings_server.mdx index fef577c961466..f11edb4f8d37e 100644 --- a/api_docs/kbn_core_ui_settings_server.mdx +++ b/api_docs/kbn_core_ui_settings_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-ui-settings-server title: "@kbn/core-ui-settings-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-ui-settings-server plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-ui-settings-server'] --- import kbnCoreUiSettingsServerObj from './kbn_core_ui_settings_server.devdocs.json'; diff --git a/api_docs/kbn_core_ui_settings_server_internal.mdx b/api_docs/kbn_core_ui_settings_server_internal.mdx index 575ce18530f5e..d12dc68038f4e 100644 --- a/api_docs/kbn_core_ui_settings_server_internal.mdx +++ b/api_docs/kbn_core_ui_settings_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-ui-settings-server-internal title: "@kbn/core-ui-settings-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-ui-settings-server-internal plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-ui-settings-server-internal'] --- import kbnCoreUiSettingsServerInternalObj from './kbn_core_ui_settings_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_ui_settings_server_mocks.mdx b/api_docs/kbn_core_ui_settings_server_mocks.mdx index e1378ee866a48..5437b6eefecbd 100644 --- a/api_docs/kbn_core_ui_settings_server_mocks.mdx +++ b/api_docs/kbn_core_ui_settings_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-ui-settings-server-mocks title: "@kbn/core-ui-settings-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-ui-settings-server-mocks plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-ui-settings-server-mocks'] --- import kbnCoreUiSettingsServerMocksObj from './kbn_core_ui_settings_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_usage_data_server.mdx b/api_docs/kbn_core_usage_data_server.mdx index 8a0ba77e5d07d..27a148658f662 100644 --- a/api_docs/kbn_core_usage_data_server.mdx +++ b/api_docs/kbn_core_usage_data_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-usage-data-server title: "@kbn/core-usage-data-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-usage-data-server plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-usage-data-server'] --- import kbnCoreUsageDataServerObj from './kbn_core_usage_data_server.devdocs.json'; diff --git a/api_docs/kbn_core_usage_data_server_internal.mdx b/api_docs/kbn_core_usage_data_server_internal.mdx index 57e1f7c336add..2932152b718bc 100644 --- a/api_docs/kbn_core_usage_data_server_internal.mdx +++ b/api_docs/kbn_core_usage_data_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-usage-data-server-internal title: "@kbn/core-usage-data-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-usage-data-server-internal plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-usage-data-server-internal'] --- import kbnCoreUsageDataServerInternalObj from './kbn_core_usage_data_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_usage_data_server_mocks.mdx b/api_docs/kbn_core_usage_data_server_mocks.mdx index 78bee4583b29b..760617dc3db32 100644 --- a/api_docs/kbn_core_usage_data_server_mocks.mdx +++ b/api_docs/kbn_core_usage_data_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-usage-data-server-mocks title: "@kbn/core-usage-data-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-usage-data-server-mocks plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-usage-data-server-mocks'] --- import kbnCoreUsageDataServerMocksObj from './kbn_core_usage_data_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_user_settings_server.mdx b/api_docs/kbn_core_user_settings_server.mdx index 2ddc79964a735..b72e44d790549 100644 --- a/api_docs/kbn_core_user_settings_server.mdx +++ b/api_docs/kbn_core_user_settings_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-user-settings-server title: "@kbn/core-user-settings-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-user-settings-server plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-user-settings-server'] --- import kbnCoreUserSettingsServerObj from './kbn_core_user_settings_server.devdocs.json'; diff --git a/api_docs/kbn_core_user_settings_server_internal.mdx b/api_docs/kbn_core_user_settings_server_internal.mdx index 1951dc8d93496..5537fe256d253 100644 --- a/api_docs/kbn_core_user_settings_server_internal.mdx +++ b/api_docs/kbn_core_user_settings_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-user-settings-server-internal title: "@kbn/core-user-settings-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-user-settings-server-internal plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-user-settings-server-internal'] --- import kbnCoreUserSettingsServerInternalObj from './kbn_core_user_settings_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_user_settings_server_mocks.mdx b/api_docs/kbn_core_user_settings_server_mocks.mdx index 873e6fcc337ed..46d540046118f 100644 --- a/api_docs/kbn_core_user_settings_server_mocks.mdx +++ b/api_docs/kbn_core_user_settings_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-user-settings-server-mocks title: "@kbn/core-user-settings-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-user-settings-server-mocks plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-user-settings-server-mocks'] --- import kbnCoreUserSettingsServerMocksObj from './kbn_core_user_settings_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_crypto.mdx b/api_docs/kbn_crypto.mdx index ef6d0c1880bca..8de14f7f87af0 100644 --- a/api_docs/kbn_crypto.mdx +++ b/api_docs/kbn_crypto.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-crypto title: "@kbn/crypto" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/crypto plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/crypto'] --- import kbnCryptoObj from './kbn_crypto.devdocs.json'; diff --git a/api_docs/kbn_crypto_browser.mdx b/api_docs/kbn_crypto_browser.mdx index 04470cc89fdcd..2fc57508f1493 100644 --- a/api_docs/kbn_crypto_browser.mdx +++ b/api_docs/kbn_crypto_browser.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-crypto-browser title: "@kbn/crypto-browser" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/crypto-browser plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/crypto-browser'] --- import kbnCryptoBrowserObj from './kbn_crypto_browser.devdocs.json'; diff --git a/api_docs/kbn_custom_integrations.mdx b/api_docs/kbn_custom_integrations.mdx index a493b0715b32b..0b4a7066a322e 100644 --- a/api_docs/kbn_custom_integrations.mdx +++ b/api_docs/kbn_custom_integrations.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-custom-integrations title: "@kbn/custom-integrations" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/custom-integrations plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/custom-integrations'] --- import kbnCustomIntegrationsObj from './kbn_custom_integrations.devdocs.json'; diff --git a/api_docs/kbn_cypress_config.mdx b/api_docs/kbn_cypress_config.mdx index a23bb5e640ccc..331cd910f9892 100644 --- a/api_docs/kbn_cypress_config.mdx +++ b/api_docs/kbn_cypress_config.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-cypress-config title: "@kbn/cypress-config" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/cypress-config plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/cypress-config'] --- import kbnCypressConfigObj from './kbn_cypress_config.devdocs.json'; diff --git a/api_docs/kbn_data_service.mdx b/api_docs/kbn_data_service.mdx index 66a222189b584..3122adf6c2f38 100644 --- a/api_docs/kbn_data_service.mdx +++ b/api_docs/kbn_data_service.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-data-service title: "@kbn/data-service" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/data-service plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/data-service'] --- import kbnDataServiceObj from './kbn_data_service.devdocs.json'; diff --git a/api_docs/kbn_datemath.mdx b/api_docs/kbn_datemath.mdx index 41b93c1d5c4be..c6208830b7b76 100644 --- a/api_docs/kbn_datemath.mdx +++ b/api_docs/kbn_datemath.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-datemath title: "@kbn/datemath" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/datemath plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/datemath'] --- import kbnDatemathObj from './kbn_datemath.devdocs.json'; diff --git a/api_docs/kbn_deeplinks_analytics.mdx b/api_docs/kbn_deeplinks_analytics.mdx index b102f312755c4..9c9efd41da16a 100644 --- a/api_docs/kbn_deeplinks_analytics.mdx +++ b/api_docs/kbn_deeplinks_analytics.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-deeplinks-analytics title: "@kbn/deeplinks-analytics" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/deeplinks-analytics plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/deeplinks-analytics'] --- import kbnDeeplinksAnalyticsObj from './kbn_deeplinks_analytics.devdocs.json'; diff --git a/api_docs/kbn_deeplinks_devtools.mdx b/api_docs/kbn_deeplinks_devtools.mdx index 8f3705d27a9f5..184222a0edc7b 100644 --- a/api_docs/kbn_deeplinks_devtools.mdx +++ b/api_docs/kbn_deeplinks_devtools.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-deeplinks-devtools title: "@kbn/deeplinks-devtools" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/deeplinks-devtools plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/deeplinks-devtools'] --- import kbnDeeplinksDevtoolsObj from './kbn_deeplinks_devtools.devdocs.json'; diff --git a/api_docs/kbn_deeplinks_management.mdx b/api_docs/kbn_deeplinks_management.mdx index ca30d569de47e..644fe977dac0a 100644 --- a/api_docs/kbn_deeplinks_management.mdx +++ b/api_docs/kbn_deeplinks_management.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-deeplinks-management title: "@kbn/deeplinks-management" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/deeplinks-management plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/deeplinks-management'] --- import kbnDeeplinksManagementObj from './kbn_deeplinks_management.devdocs.json'; diff --git a/api_docs/kbn_deeplinks_ml.mdx b/api_docs/kbn_deeplinks_ml.mdx index 0b8826a03fb83..4ce637b12e867 100644 --- a/api_docs/kbn_deeplinks_ml.mdx +++ b/api_docs/kbn_deeplinks_ml.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-deeplinks-ml title: "@kbn/deeplinks-ml" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/deeplinks-ml plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/deeplinks-ml'] --- import kbnDeeplinksMlObj from './kbn_deeplinks_ml.devdocs.json'; diff --git a/api_docs/kbn_deeplinks_observability.mdx b/api_docs/kbn_deeplinks_observability.mdx index deed6462e6a1a..e50ca2e968d2f 100644 --- a/api_docs/kbn_deeplinks_observability.mdx +++ b/api_docs/kbn_deeplinks_observability.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-deeplinks-observability title: "@kbn/deeplinks-observability" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/deeplinks-observability plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/deeplinks-observability'] --- import kbnDeeplinksObservabilityObj from './kbn_deeplinks_observability.devdocs.json'; diff --git a/api_docs/kbn_deeplinks_search.mdx b/api_docs/kbn_deeplinks_search.mdx index 358a798a0cbc0..17cd6afb44067 100644 --- a/api_docs/kbn_deeplinks_search.mdx +++ b/api_docs/kbn_deeplinks_search.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-deeplinks-search title: "@kbn/deeplinks-search" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/deeplinks-search plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/deeplinks-search'] --- import kbnDeeplinksSearchObj from './kbn_deeplinks_search.devdocs.json'; diff --git a/api_docs/kbn_default_nav_analytics.mdx b/api_docs/kbn_default_nav_analytics.mdx index 77c97a9fb5381..ca057256a541d 100644 --- a/api_docs/kbn_default_nav_analytics.mdx +++ b/api_docs/kbn_default_nav_analytics.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-default-nav-analytics title: "@kbn/default-nav-analytics" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/default-nav-analytics plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/default-nav-analytics'] --- import kbnDefaultNavAnalyticsObj from './kbn_default_nav_analytics.devdocs.json'; diff --git a/api_docs/kbn_default_nav_devtools.mdx b/api_docs/kbn_default_nav_devtools.mdx index bdd547267b596..e76034d59c3fe 100644 --- a/api_docs/kbn_default_nav_devtools.mdx +++ b/api_docs/kbn_default_nav_devtools.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-default-nav-devtools title: "@kbn/default-nav-devtools" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/default-nav-devtools plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/default-nav-devtools'] --- import kbnDefaultNavDevtoolsObj from './kbn_default_nav_devtools.devdocs.json'; diff --git a/api_docs/kbn_default_nav_management.mdx b/api_docs/kbn_default_nav_management.mdx index 98a59af49fc1b..cb2a5e1538e1f 100644 --- a/api_docs/kbn_default_nav_management.mdx +++ b/api_docs/kbn_default_nav_management.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-default-nav-management title: "@kbn/default-nav-management" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/default-nav-management plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/default-nav-management'] --- import kbnDefaultNavManagementObj from './kbn_default_nav_management.devdocs.json'; diff --git a/api_docs/kbn_default_nav_ml.mdx b/api_docs/kbn_default_nav_ml.mdx index 62d10cc83a5ea..9d1033dfeb500 100644 --- a/api_docs/kbn_default_nav_ml.mdx +++ b/api_docs/kbn_default_nav_ml.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-default-nav-ml title: "@kbn/default-nav-ml" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/default-nav-ml plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/default-nav-ml'] --- import kbnDefaultNavMlObj from './kbn_default_nav_ml.devdocs.json'; diff --git a/api_docs/kbn_dev_cli_errors.mdx b/api_docs/kbn_dev_cli_errors.mdx index 716cf32fd7493..77b167c30e4aa 100644 --- a/api_docs/kbn_dev_cli_errors.mdx +++ b/api_docs/kbn_dev_cli_errors.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-dev-cli-errors title: "@kbn/dev-cli-errors" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/dev-cli-errors plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/dev-cli-errors'] --- import kbnDevCliErrorsObj from './kbn_dev_cli_errors.devdocs.json'; diff --git a/api_docs/kbn_dev_cli_runner.mdx b/api_docs/kbn_dev_cli_runner.mdx index 1d7ad3333ed3b..0121755452098 100644 --- a/api_docs/kbn_dev_cli_runner.mdx +++ b/api_docs/kbn_dev_cli_runner.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-dev-cli-runner title: "@kbn/dev-cli-runner" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/dev-cli-runner plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/dev-cli-runner'] --- import kbnDevCliRunnerObj from './kbn_dev_cli_runner.devdocs.json'; diff --git a/api_docs/kbn_dev_proc_runner.mdx b/api_docs/kbn_dev_proc_runner.mdx index d830502f259df..1325eae8cd4c2 100644 --- a/api_docs/kbn_dev_proc_runner.mdx +++ b/api_docs/kbn_dev_proc_runner.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-dev-proc-runner title: "@kbn/dev-proc-runner" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/dev-proc-runner plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/dev-proc-runner'] --- import kbnDevProcRunnerObj from './kbn_dev_proc_runner.devdocs.json'; diff --git a/api_docs/kbn_dev_utils.mdx b/api_docs/kbn_dev_utils.mdx index 0581baf8aaebd..2c160a2e35e15 100644 --- a/api_docs/kbn_dev_utils.mdx +++ b/api_docs/kbn_dev_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-dev-utils title: "@kbn/dev-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/dev-utils plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/dev-utils'] --- import kbnDevUtilsObj from './kbn_dev_utils.devdocs.json'; diff --git a/api_docs/kbn_discover_utils.mdx b/api_docs/kbn_discover_utils.mdx index f499bb42bce27..c619cd28032ea 100644 --- a/api_docs/kbn_discover_utils.mdx +++ b/api_docs/kbn_discover_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-discover-utils title: "@kbn/discover-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/discover-utils plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/discover-utils'] --- import kbnDiscoverUtilsObj from './kbn_discover_utils.devdocs.json'; diff --git a/api_docs/kbn_doc_links.mdx b/api_docs/kbn_doc_links.mdx index 8867f68291c0b..38a70c2936525 100644 --- a/api_docs/kbn_doc_links.mdx +++ b/api_docs/kbn_doc_links.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-doc-links title: "@kbn/doc-links" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/doc-links plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/doc-links'] --- import kbnDocLinksObj from './kbn_doc_links.devdocs.json'; diff --git a/api_docs/kbn_docs_utils.mdx b/api_docs/kbn_docs_utils.mdx index 5fdb8f182c242..af055867ff747 100644 --- a/api_docs/kbn_docs_utils.mdx +++ b/api_docs/kbn_docs_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-docs-utils title: "@kbn/docs-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/docs-utils plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/docs-utils'] --- import kbnDocsUtilsObj from './kbn_docs_utils.devdocs.json'; diff --git a/api_docs/kbn_dom_drag_drop.mdx b/api_docs/kbn_dom_drag_drop.mdx index 3a0aef4ea6449..a06291012b92b 100644 --- a/api_docs/kbn_dom_drag_drop.mdx +++ b/api_docs/kbn_dom_drag_drop.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-dom-drag-drop title: "@kbn/dom-drag-drop" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/dom-drag-drop plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/dom-drag-drop'] --- import kbnDomDragDropObj from './kbn_dom_drag_drop.devdocs.json'; diff --git a/api_docs/kbn_ebt_tools.mdx b/api_docs/kbn_ebt_tools.mdx index bc57a90ef9dbb..a9e3cfc4b9e1b 100644 --- a/api_docs/kbn_ebt_tools.mdx +++ b/api_docs/kbn_ebt_tools.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ebt-tools title: "@kbn/ebt-tools" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ebt-tools plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ebt-tools'] --- import kbnEbtToolsObj from './kbn_ebt_tools.devdocs.json'; diff --git a/api_docs/kbn_ecs.mdx b/api_docs/kbn_ecs.mdx index a3c0db41bdc90..713f0eeb95ddd 100644 --- a/api_docs/kbn_ecs.mdx +++ b/api_docs/kbn_ecs.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ecs title: "@kbn/ecs" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ecs plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ecs'] --- import kbnEcsObj from './kbn_ecs.devdocs.json'; diff --git a/api_docs/kbn_ecs_data_quality_dashboard.mdx b/api_docs/kbn_ecs_data_quality_dashboard.mdx index 847bef5ea7e24..e1a15edfeefaa 100644 --- a/api_docs/kbn_ecs_data_quality_dashboard.mdx +++ b/api_docs/kbn_ecs_data_quality_dashboard.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ecs-data-quality-dashboard title: "@kbn/ecs-data-quality-dashboard" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ecs-data-quality-dashboard plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ecs-data-quality-dashboard'] --- import kbnEcsDataQualityDashboardObj from './kbn_ecs_data_quality_dashboard.devdocs.json'; diff --git a/api_docs/kbn_elastic_assistant.mdx b/api_docs/kbn_elastic_assistant.mdx index 9a7773935d6b5..ecc4416c95cf4 100644 --- a/api_docs/kbn_elastic_assistant.mdx +++ b/api_docs/kbn_elastic_assistant.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-elastic-assistant title: "@kbn/elastic-assistant" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/elastic-assistant plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/elastic-assistant'] --- import kbnElasticAssistantObj from './kbn_elastic_assistant.devdocs.json'; diff --git a/api_docs/kbn_es.mdx b/api_docs/kbn_es.mdx index 9284a210b2899..8cd993088127d 100644 --- a/api_docs/kbn_es.mdx +++ b/api_docs/kbn_es.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-es title: "@kbn/es" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/es plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/es'] --- import kbnEsObj from './kbn_es.devdocs.json'; diff --git a/api_docs/kbn_es_archiver.mdx b/api_docs/kbn_es_archiver.mdx index 8a9c83dfa5b9f..ebb43cad1754e 100644 --- a/api_docs/kbn_es_archiver.mdx +++ b/api_docs/kbn_es_archiver.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-es-archiver title: "@kbn/es-archiver" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/es-archiver plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/es-archiver'] --- import kbnEsArchiverObj from './kbn_es_archiver.devdocs.json'; diff --git a/api_docs/kbn_es_errors.mdx b/api_docs/kbn_es_errors.mdx index 38a80799d6eef..b7288ea277ffb 100644 --- a/api_docs/kbn_es_errors.mdx +++ b/api_docs/kbn_es_errors.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-es-errors title: "@kbn/es-errors" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/es-errors plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/es-errors'] --- import kbnEsErrorsObj from './kbn_es_errors.devdocs.json'; diff --git a/api_docs/kbn_es_query.mdx b/api_docs/kbn_es_query.mdx index 6974717ec7059..5b749b921880d 100644 --- a/api_docs/kbn_es_query.mdx +++ b/api_docs/kbn_es_query.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-es-query title: "@kbn/es-query" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/es-query plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/es-query'] --- import kbnEsQueryObj from './kbn_es_query.devdocs.json'; diff --git a/api_docs/kbn_es_types.mdx b/api_docs/kbn_es_types.mdx index 1b827f3ff9eba..3bba402480819 100644 --- a/api_docs/kbn_es_types.mdx +++ b/api_docs/kbn_es_types.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-es-types title: "@kbn/es-types" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/es-types plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/es-types'] --- import kbnEsTypesObj from './kbn_es_types.devdocs.json'; diff --git a/api_docs/kbn_eslint_plugin_imports.mdx b/api_docs/kbn_eslint_plugin_imports.mdx index de87fef4fa100..28496cfc9c989 100644 --- a/api_docs/kbn_eslint_plugin_imports.mdx +++ b/api_docs/kbn_eslint_plugin_imports.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-eslint-plugin-imports title: "@kbn/eslint-plugin-imports" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/eslint-plugin-imports plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/eslint-plugin-imports'] --- import kbnEslintPluginImportsObj from './kbn_eslint_plugin_imports.devdocs.json'; diff --git a/api_docs/kbn_event_annotation_common.mdx b/api_docs/kbn_event_annotation_common.mdx index 4b985767fdca4..24ac95fc97200 100644 --- a/api_docs/kbn_event_annotation_common.mdx +++ b/api_docs/kbn_event_annotation_common.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-event-annotation-common title: "@kbn/event-annotation-common" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/event-annotation-common plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/event-annotation-common'] --- import kbnEventAnnotationCommonObj from './kbn_event_annotation_common.devdocs.json'; diff --git a/api_docs/kbn_event_annotation_components.mdx b/api_docs/kbn_event_annotation_components.mdx index b30ef02a37f25..ffa326eeb0dc7 100644 --- a/api_docs/kbn_event_annotation_components.mdx +++ b/api_docs/kbn_event_annotation_components.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-event-annotation-components title: "@kbn/event-annotation-components" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/event-annotation-components plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/event-annotation-components'] --- import kbnEventAnnotationComponentsObj from './kbn_event_annotation_components.devdocs.json'; diff --git a/api_docs/kbn_expandable_flyout.mdx b/api_docs/kbn_expandable_flyout.mdx index aeba9a2c3ab11..df0cbe6fb054f 100644 --- a/api_docs/kbn_expandable_flyout.mdx +++ b/api_docs/kbn_expandable_flyout.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-expandable-flyout title: "@kbn/expandable-flyout" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/expandable-flyout plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/expandable-flyout'] --- import kbnExpandableFlyoutObj from './kbn_expandable_flyout.devdocs.json'; diff --git a/api_docs/kbn_field_types.mdx b/api_docs/kbn_field_types.mdx index 0d119c7cc1fba..78989dc733247 100644 --- a/api_docs/kbn_field_types.mdx +++ b/api_docs/kbn_field_types.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-field-types title: "@kbn/field-types" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/field-types plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/field-types'] --- import kbnFieldTypesObj from './kbn_field_types.devdocs.json'; diff --git a/api_docs/kbn_field_utils.mdx b/api_docs/kbn_field_utils.mdx index a73ba9fa5fb90..5cb22fee13278 100644 --- a/api_docs/kbn_field_utils.mdx +++ b/api_docs/kbn_field_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-field-utils title: "@kbn/field-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/field-utils plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/field-utils'] --- import kbnFieldUtilsObj from './kbn_field_utils.devdocs.json'; diff --git a/api_docs/kbn_find_used_node_modules.mdx b/api_docs/kbn_find_used_node_modules.mdx index e287fb446f003..b4be7708ebaec 100644 --- a/api_docs/kbn_find_used_node_modules.mdx +++ b/api_docs/kbn_find_used_node_modules.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-find-used-node-modules title: "@kbn/find-used-node-modules" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/find-used-node-modules plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/find-used-node-modules'] --- import kbnFindUsedNodeModulesObj from './kbn_find_used_node_modules.devdocs.json'; diff --git a/api_docs/kbn_ftr_common_functional_services.mdx b/api_docs/kbn_ftr_common_functional_services.mdx index 6258ce1eba920..32981202fe6a2 100644 --- a/api_docs/kbn_ftr_common_functional_services.mdx +++ b/api_docs/kbn_ftr_common_functional_services.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ftr-common-functional-services title: "@kbn/ftr-common-functional-services" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ftr-common-functional-services plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ftr-common-functional-services'] --- import kbnFtrCommonFunctionalServicesObj from './kbn_ftr_common_functional_services.devdocs.json'; diff --git a/api_docs/kbn_generate.mdx b/api_docs/kbn_generate.mdx index 8cd05107e5c6e..bc2cc735d58b1 100644 --- a/api_docs/kbn_generate.mdx +++ b/api_docs/kbn_generate.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-generate title: "@kbn/generate" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/generate plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/generate'] --- import kbnGenerateObj from './kbn_generate.devdocs.json'; diff --git a/api_docs/kbn_generate_console_definitions.mdx b/api_docs/kbn_generate_console_definitions.mdx index d9d60780ab218..56f7a44d279e0 100644 --- a/api_docs/kbn_generate_console_definitions.mdx +++ b/api_docs/kbn_generate_console_definitions.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-generate-console-definitions title: "@kbn/generate-console-definitions" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/generate-console-definitions plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/generate-console-definitions'] --- import kbnGenerateConsoleDefinitionsObj from './kbn_generate_console_definitions.devdocs.json'; diff --git a/api_docs/kbn_generate_csv.mdx b/api_docs/kbn_generate_csv.mdx index 5016da363b1be..a62035a12e8f8 100644 --- a/api_docs/kbn_generate_csv.mdx +++ b/api_docs/kbn_generate_csv.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-generate-csv title: "@kbn/generate-csv" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/generate-csv plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/generate-csv'] --- import kbnGenerateCsvObj from './kbn_generate_csv.devdocs.json'; diff --git a/api_docs/kbn_generate_csv_types.mdx b/api_docs/kbn_generate_csv_types.mdx index d630cac3853e7..5aa6a6770e897 100644 --- a/api_docs/kbn_generate_csv_types.mdx +++ b/api_docs/kbn_generate_csv_types.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-generate-csv-types title: "@kbn/generate-csv-types" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/generate-csv-types plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/generate-csv-types'] --- import kbnGenerateCsvTypesObj from './kbn_generate_csv_types.devdocs.json'; diff --git a/api_docs/kbn_guided_onboarding.mdx b/api_docs/kbn_guided_onboarding.mdx index c4364ad3fa702..4471b57b2022c 100644 --- a/api_docs/kbn_guided_onboarding.mdx +++ b/api_docs/kbn_guided_onboarding.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-guided-onboarding title: "@kbn/guided-onboarding" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/guided-onboarding plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/guided-onboarding'] --- import kbnGuidedOnboardingObj from './kbn_guided_onboarding.devdocs.json'; diff --git a/api_docs/kbn_handlebars.mdx b/api_docs/kbn_handlebars.mdx index 50164d28062e8..692e15fded743 100644 --- a/api_docs/kbn_handlebars.mdx +++ b/api_docs/kbn_handlebars.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-handlebars title: "@kbn/handlebars" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/handlebars plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/handlebars'] --- import kbnHandlebarsObj from './kbn_handlebars.devdocs.json'; diff --git a/api_docs/kbn_hapi_mocks.mdx b/api_docs/kbn_hapi_mocks.mdx index eafd2092237f8..b1db5340a0c28 100644 --- a/api_docs/kbn_hapi_mocks.mdx +++ b/api_docs/kbn_hapi_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-hapi-mocks title: "@kbn/hapi-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/hapi-mocks plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/hapi-mocks'] --- import kbnHapiMocksObj from './kbn_hapi_mocks.devdocs.json'; diff --git a/api_docs/kbn_health_gateway_server.mdx b/api_docs/kbn_health_gateway_server.mdx index b87ac0ee9d603..06cddfcdb5bad 100644 --- a/api_docs/kbn_health_gateway_server.mdx +++ b/api_docs/kbn_health_gateway_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-health-gateway-server title: "@kbn/health-gateway-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/health-gateway-server plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/health-gateway-server'] --- import kbnHealthGatewayServerObj from './kbn_health_gateway_server.devdocs.json'; diff --git a/api_docs/kbn_home_sample_data_card.mdx b/api_docs/kbn_home_sample_data_card.mdx index e69205aad036b..0a2c9e24cc10b 100644 --- a/api_docs/kbn_home_sample_data_card.mdx +++ b/api_docs/kbn_home_sample_data_card.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-home-sample-data-card title: "@kbn/home-sample-data-card" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/home-sample-data-card plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/home-sample-data-card'] --- import kbnHomeSampleDataCardObj from './kbn_home_sample_data_card.devdocs.json'; diff --git a/api_docs/kbn_home_sample_data_tab.mdx b/api_docs/kbn_home_sample_data_tab.mdx index b644fb33c2b4b..0ea7a2cb3b464 100644 --- a/api_docs/kbn_home_sample_data_tab.mdx +++ b/api_docs/kbn_home_sample_data_tab.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-home-sample-data-tab title: "@kbn/home-sample-data-tab" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/home-sample-data-tab plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/home-sample-data-tab'] --- import kbnHomeSampleDataTabObj from './kbn_home_sample_data_tab.devdocs.json'; diff --git a/api_docs/kbn_i18n.mdx b/api_docs/kbn_i18n.mdx index a91ed0983b566..39402797b7375 100644 --- a/api_docs/kbn_i18n.mdx +++ b/api_docs/kbn_i18n.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-i18n title: "@kbn/i18n" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/i18n plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/i18n'] --- import kbnI18nObj from './kbn_i18n.devdocs.json'; diff --git a/api_docs/kbn_i18n_react.mdx b/api_docs/kbn_i18n_react.mdx index e5cb2e042832c..6cdc7be433b11 100644 --- a/api_docs/kbn_i18n_react.mdx +++ b/api_docs/kbn_i18n_react.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-i18n-react title: "@kbn/i18n-react" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/i18n-react plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/i18n-react'] --- import kbnI18nReactObj from './kbn_i18n_react.devdocs.json'; diff --git a/api_docs/kbn_import_resolver.mdx b/api_docs/kbn_import_resolver.mdx index 9ed38b28d9c41..6e09620c6adc9 100644 --- a/api_docs/kbn_import_resolver.mdx +++ b/api_docs/kbn_import_resolver.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-import-resolver title: "@kbn/import-resolver" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/import-resolver plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/import-resolver'] --- import kbnImportResolverObj from './kbn_import_resolver.devdocs.json'; diff --git a/api_docs/kbn_infra_forge.mdx b/api_docs/kbn_infra_forge.mdx index f63f61e702870..602d69cb3b3d5 100644 --- a/api_docs/kbn_infra_forge.mdx +++ b/api_docs/kbn_infra_forge.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-infra-forge title: "@kbn/infra-forge" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/infra-forge plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/infra-forge'] --- import kbnInfraForgeObj from './kbn_infra_forge.devdocs.json'; diff --git a/api_docs/kbn_interpreter.mdx b/api_docs/kbn_interpreter.mdx index d8f100609a069..fcd00e824e52d 100644 --- a/api_docs/kbn_interpreter.mdx +++ b/api_docs/kbn_interpreter.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-interpreter title: "@kbn/interpreter" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/interpreter plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/interpreter'] --- import kbnInterpreterObj from './kbn_interpreter.devdocs.json'; diff --git a/api_docs/kbn_io_ts_utils.mdx b/api_docs/kbn_io_ts_utils.mdx index 6a4b95c7792e5..2fbc02900de5b 100644 --- a/api_docs/kbn_io_ts_utils.mdx +++ b/api_docs/kbn_io_ts_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-io-ts-utils title: "@kbn/io-ts-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/io-ts-utils plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/io-ts-utils'] --- import kbnIoTsUtilsObj from './kbn_io_ts_utils.devdocs.json'; diff --git a/api_docs/kbn_jest_serializers.mdx b/api_docs/kbn_jest_serializers.mdx index 13259c0d9d4ad..d672357606a3c 100644 --- a/api_docs/kbn_jest_serializers.mdx +++ b/api_docs/kbn_jest_serializers.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-jest-serializers title: "@kbn/jest-serializers" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/jest-serializers plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/jest-serializers'] --- import kbnJestSerializersObj from './kbn_jest_serializers.devdocs.json'; diff --git a/api_docs/kbn_journeys.mdx b/api_docs/kbn_journeys.mdx index 468db31058cba..ee27ee75c9523 100644 --- a/api_docs/kbn_journeys.mdx +++ b/api_docs/kbn_journeys.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-journeys title: "@kbn/journeys" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/journeys plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/journeys'] --- import kbnJourneysObj from './kbn_journeys.devdocs.json'; diff --git a/api_docs/kbn_json_ast.mdx b/api_docs/kbn_json_ast.mdx index 52a4cb5d0e2c5..e0b140ec722b8 100644 --- a/api_docs/kbn_json_ast.mdx +++ b/api_docs/kbn_json_ast.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-json-ast title: "@kbn/json-ast" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/json-ast plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/json-ast'] --- import kbnJsonAstObj from './kbn_json_ast.devdocs.json'; diff --git a/api_docs/kbn_kibana_manifest_schema.mdx b/api_docs/kbn_kibana_manifest_schema.mdx index 0b5c4593421fa..d2981aeab7aa9 100644 --- a/api_docs/kbn_kibana_manifest_schema.mdx +++ b/api_docs/kbn_kibana_manifest_schema.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-kibana-manifest-schema title: "@kbn/kibana-manifest-schema" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/kibana-manifest-schema plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/kibana-manifest-schema'] --- import kbnKibanaManifestSchemaObj from './kbn_kibana_manifest_schema.devdocs.json'; diff --git a/api_docs/kbn_language_documentation_popover.mdx b/api_docs/kbn_language_documentation_popover.mdx index eb7f7ef37716e..999e0d442bff5 100644 --- a/api_docs/kbn_language_documentation_popover.mdx +++ b/api_docs/kbn_language_documentation_popover.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-language-documentation-popover title: "@kbn/language-documentation-popover" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/language-documentation-popover plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/language-documentation-popover'] --- import kbnLanguageDocumentationPopoverObj from './kbn_language_documentation_popover.devdocs.json'; diff --git a/api_docs/kbn_lens_embeddable_utils.mdx b/api_docs/kbn_lens_embeddable_utils.mdx index 6d03674aa0c5c..0bbbe2e365e8c 100644 --- a/api_docs/kbn_lens_embeddable_utils.mdx +++ b/api_docs/kbn_lens_embeddable_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-lens-embeddable-utils title: "@kbn/lens-embeddable-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/lens-embeddable-utils plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/lens-embeddable-utils'] --- import kbnLensEmbeddableUtilsObj from './kbn_lens_embeddable_utils.devdocs.json'; diff --git a/api_docs/kbn_logging.mdx b/api_docs/kbn_logging.mdx index 5fcc6adce10c3..766c925524629 100644 --- a/api_docs/kbn_logging.mdx +++ b/api_docs/kbn_logging.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-logging title: "@kbn/logging" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/logging plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/logging'] --- import kbnLoggingObj from './kbn_logging.devdocs.json'; diff --git a/api_docs/kbn_logging_mocks.mdx b/api_docs/kbn_logging_mocks.mdx index e77f193a24098..fbea7cddb8e5a 100644 --- a/api_docs/kbn_logging_mocks.mdx +++ b/api_docs/kbn_logging_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-logging-mocks title: "@kbn/logging-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/logging-mocks plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/logging-mocks'] --- import kbnLoggingMocksObj from './kbn_logging_mocks.devdocs.json'; diff --git a/api_docs/kbn_managed_vscode_config.mdx b/api_docs/kbn_managed_vscode_config.mdx index c8fa19008f6fe..a660e5c8291bc 100644 --- a/api_docs/kbn_managed_vscode_config.mdx +++ b/api_docs/kbn_managed_vscode_config.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-managed-vscode-config title: "@kbn/managed-vscode-config" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/managed-vscode-config plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/managed-vscode-config'] --- import kbnManagedVscodeConfigObj from './kbn_managed_vscode_config.devdocs.json'; diff --git a/api_docs/kbn_management_cards_navigation.mdx b/api_docs/kbn_management_cards_navigation.mdx index bec5b026b3cf6..941aa4f41455d 100644 --- a/api_docs/kbn_management_cards_navigation.mdx +++ b/api_docs/kbn_management_cards_navigation.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-management-cards-navigation title: "@kbn/management-cards-navigation" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/management-cards-navigation plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/management-cards-navigation'] --- import kbnManagementCardsNavigationObj from './kbn_management_cards_navigation.devdocs.json'; diff --git a/api_docs/kbn_management_settings_application.mdx b/api_docs/kbn_management_settings_application.mdx index c436920aa4832..87bf106be5969 100644 --- a/api_docs/kbn_management_settings_application.mdx +++ b/api_docs/kbn_management_settings_application.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-management-settings-application title: "@kbn/management-settings-application" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/management-settings-application plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/management-settings-application'] --- import kbnManagementSettingsApplicationObj from './kbn_management_settings_application.devdocs.json'; diff --git a/api_docs/kbn_management_settings_components_field_category.mdx b/api_docs/kbn_management_settings_components_field_category.mdx index e3f406b78aaf7..94986e218a235 100644 --- a/api_docs/kbn_management_settings_components_field_category.mdx +++ b/api_docs/kbn_management_settings_components_field_category.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-management-settings-components-field-category title: "@kbn/management-settings-components-field-category" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/management-settings-components-field-category plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/management-settings-components-field-category'] --- import kbnManagementSettingsComponentsFieldCategoryObj from './kbn_management_settings_components_field_category.devdocs.json'; diff --git a/api_docs/kbn_management_settings_components_field_input.mdx b/api_docs/kbn_management_settings_components_field_input.mdx index 72394390324bf..21684706b8bb1 100644 --- a/api_docs/kbn_management_settings_components_field_input.mdx +++ b/api_docs/kbn_management_settings_components_field_input.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-management-settings-components-field-input title: "@kbn/management-settings-components-field-input" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/management-settings-components-field-input plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/management-settings-components-field-input'] --- import kbnManagementSettingsComponentsFieldInputObj from './kbn_management_settings_components_field_input.devdocs.json'; diff --git a/api_docs/kbn_management_settings_components_field_row.mdx b/api_docs/kbn_management_settings_components_field_row.mdx index a70769422beca..05cfd744aaefe 100644 --- a/api_docs/kbn_management_settings_components_field_row.mdx +++ b/api_docs/kbn_management_settings_components_field_row.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-management-settings-components-field-row title: "@kbn/management-settings-components-field-row" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/management-settings-components-field-row plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/management-settings-components-field-row'] --- import kbnManagementSettingsComponentsFieldRowObj from './kbn_management_settings_components_field_row.devdocs.json'; diff --git a/api_docs/kbn_management_settings_components_form.mdx b/api_docs/kbn_management_settings_components_form.mdx index 6d5153659532a..89781d2d11bd3 100644 --- a/api_docs/kbn_management_settings_components_form.mdx +++ b/api_docs/kbn_management_settings_components_form.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-management-settings-components-form title: "@kbn/management-settings-components-form" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/management-settings-components-form plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/management-settings-components-form'] --- import kbnManagementSettingsComponentsFormObj from './kbn_management_settings_components_form.devdocs.json'; diff --git a/api_docs/kbn_management_settings_field_definition.mdx b/api_docs/kbn_management_settings_field_definition.mdx index a4f3d2e088c0d..728df23902cd6 100644 --- a/api_docs/kbn_management_settings_field_definition.mdx +++ b/api_docs/kbn_management_settings_field_definition.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-management-settings-field-definition title: "@kbn/management-settings-field-definition" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/management-settings-field-definition plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/management-settings-field-definition'] --- import kbnManagementSettingsFieldDefinitionObj from './kbn_management_settings_field_definition.devdocs.json'; diff --git a/api_docs/kbn_management_settings_ids.mdx b/api_docs/kbn_management_settings_ids.mdx index 145b4d07da5e2..7ff9ce0084d7e 100644 --- a/api_docs/kbn_management_settings_ids.mdx +++ b/api_docs/kbn_management_settings_ids.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-management-settings-ids title: "@kbn/management-settings-ids" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/management-settings-ids plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/management-settings-ids'] --- import kbnManagementSettingsIdsObj from './kbn_management_settings_ids.devdocs.json'; diff --git a/api_docs/kbn_management_settings_section_registry.mdx b/api_docs/kbn_management_settings_section_registry.mdx index 67b13debc8089..ea7fa826750ce 100644 --- a/api_docs/kbn_management_settings_section_registry.mdx +++ b/api_docs/kbn_management_settings_section_registry.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-management-settings-section-registry title: "@kbn/management-settings-section-registry" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/management-settings-section-registry plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/management-settings-section-registry'] --- import kbnManagementSettingsSectionRegistryObj from './kbn_management_settings_section_registry.devdocs.json'; diff --git a/api_docs/kbn_management_settings_types.mdx b/api_docs/kbn_management_settings_types.mdx index d7564d250d4a2..b311f8bf2af7e 100644 --- a/api_docs/kbn_management_settings_types.mdx +++ b/api_docs/kbn_management_settings_types.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-management-settings-types title: "@kbn/management-settings-types" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/management-settings-types plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/management-settings-types'] --- import kbnManagementSettingsTypesObj from './kbn_management_settings_types.devdocs.json'; diff --git a/api_docs/kbn_management_settings_utilities.mdx b/api_docs/kbn_management_settings_utilities.mdx index 1e9a042255dab..38a837e4eae0e 100644 --- a/api_docs/kbn_management_settings_utilities.mdx +++ b/api_docs/kbn_management_settings_utilities.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-management-settings-utilities title: "@kbn/management-settings-utilities" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/management-settings-utilities plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/management-settings-utilities'] --- import kbnManagementSettingsUtilitiesObj from './kbn_management_settings_utilities.devdocs.json'; diff --git a/api_docs/kbn_management_storybook_config.mdx b/api_docs/kbn_management_storybook_config.mdx index 546000f2ed730..d56ab874b1d57 100644 --- a/api_docs/kbn_management_storybook_config.mdx +++ b/api_docs/kbn_management_storybook_config.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-management-storybook-config title: "@kbn/management-storybook-config" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/management-storybook-config plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/management-storybook-config'] --- import kbnManagementStorybookConfigObj from './kbn_management_storybook_config.devdocs.json'; diff --git a/api_docs/kbn_mapbox_gl.mdx b/api_docs/kbn_mapbox_gl.mdx index e7cf46e806c32..02b4473b0bf39 100644 --- a/api_docs/kbn_mapbox_gl.mdx +++ b/api_docs/kbn_mapbox_gl.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-mapbox-gl title: "@kbn/mapbox-gl" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/mapbox-gl plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/mapbox-gl'] --- import kbnMapboxGlObj from './kbn_mapbox_gl.devdocs.json'; diff --git a/api_docs/kbn_maps_vector_tile_utils.mdx b/api_docs/kbn_maps_vector_tile_utils.mdx index b150293b11edd..0d206461fb0c7 100644 --- a/api_docs/kbn_maps_vector_tile_utils.mdx +++ b/api_docs/kbn_maps_vector_tile_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-maps-vector-tile-utils title: "@kbn/maps-vector-tile-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/maps-vector-tile-utils plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/maps-vector-tile-utils'] --- import kbnMapsVectorTileUtilsObj from './kbn_maps_vector_tile_utils.devdocs.json'; diff --git a/api_docs/kbn_ml_agg_utils.mdx b/api_docs/kbn_ml_agg_utils.mdx index 9f5efdf12a5cc..7f32a809143ff 100644 --- a/api_docs/kbn_ml_agg_utils.mdx +++ b/api_docs/kbn_ml_agg_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-agg-utils title: "@kbn/ml-agg-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ml-agg-utils plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-agg-utils'] --- import kbnMlAggUtilsObj from './kbn_ml_agg_utils.devdocs.json'; diff --git a/api_docs/kbn_ml_anomaly_utils.mdx b/api_docs/kbn_ml_anomaly_utils.mdx index 1d9f371d84757..b1dd92d48f0ee 100644 --- a/api_docs/kbn_ml_anomaly_utils.mdx +++ b/api_docs/kbn_ml_anomaly_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-anomaly-utils title: "@kbn/ml-anomaly-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ml-anomaly-utils plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-anomaly-utils'] --- import kbnMlAnomalyUtilsObj from './kbn_ml_anomaly_utils.devdocs.json'; diff --git a/api_docs/kbn_ml_category_validator.mdx b/api_docs/kbn_ml_category_validator.mdx index 40d8fd8700b8c..24a59fa95a518 100644 --- a/api_docs/kbn_ml_category_validator.mdx +++ b/api_docs/kbn_ml_category_validator.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-category-validator title: "@kbn/ml-category-validator" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ml-category-validator plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-category-validator'] --- import kbnMlCategoryValidatorObj from './kbn_ml_category_validator.devdocs.json'; diff --git a/api_docs/kbn_ml_chi2test.mdx b/api_docs/kbn_ml_chi2test.mdx index b1ff0acba670f..2feafbe2a5cb6 100644 --- a/api_docs/kbn_ml_chi2test.mdx +++ b/api_docs/kbn_ml_chi2test.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-chi2test title: "@kbn/ml-chi2test" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ml-chi2test plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-chi2test'] --- import kbnMlChi2testObj from './kbn_ml_chi2test.devdocs.json'; diff --git a/api_docs/kbn_ml_data_frame_analytics_utils.mdx b/api_docs/kbn_ml_data_frame_analytics_utils.mdx index 38282cd9fa1e7..12363e1bab751 100644 --- a/api_docs/kbn_ml_data_frame_analytics_utils.mdx +++ b/api_docs/kbn_ml_data_frame_analytics_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-data-frame-analytics-utils title: "@kbn/ml-data-frame-analytics-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ml-data-frame-analytics-utils plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-data-frame-analytics-utils'] --- import kbnMlDataFrameAnalyticsUtilsObj from './kbn_ml_data_frame_analytics_utils.devdocs.json'; diff --git a/api_docs/kbn_ml_data_grid.mdx b/api_docs/kbn_ml_data_grid.mdx index 415c8c00a3df2..1b5d0a19a2f40 100644 --- a/api_docs/kbn_ml_data_grid.mdx +++ b/api_docs/kbn_ml_data_grid.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-data-grid title: "@kbn/ml-data-grid" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ml-data-grid plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-data-grid'] --- import kbnMlDataGridObj from './kbn_ml_data_grid.devdocs.json'; diff --git a/api_docs/kbn_ml_date_picker.mdx b/api_docs/kbn_ml_date_picker.mdx index ee8aaf1e91996..49f7612c2b67b 100644 --- a/api_docs/kbn_ml_date_picker.mdx +++ b/api_docs/kbn_ml_date_picker.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-date-picker title: "@kbn/ml-date-picker" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ml-date-picker plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-date-picker'] --- import kbnMlDatePickerObj from './kbn_ml_date_picker.devdocs.json'; diff --git a/api_docs/kbn_ml_date_utils.mdx b/api_docs/kbn_ml_date_utils.mdx index b173f48852279..071bc63c0122c 100644 --- a/api_docs/kbn_ml_date_utils.mdx +++ b/api_docs/kbn_ml_date_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-date-utils title: "@kbn/ml-date-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ml-date-utils plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-date-utils'] --- import kbnMlDateUtilsObj from './kbn_ml_date_utils.devdocs.json'; diff --git a/api_docs/kbn_ml_error_utils.mdx b/api_docs/kbn_ml_error_utils.mdx index 2772bd7362bf3..71c78ae59c6dc 100644 --- a/api_docs/kbn_ml_error_utils.mdx +++ b/api_docs/kbn_ml_error_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-error-utils title: "@kbn/ml-error-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ml-error-utils plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-error-utils'] --- import kbnMlErrorUtilsObj from './kbn_ml_error_utils.devdocs.json'; diff --git a/api_docs/kbn_ml_in_memory_table.mdx b/api_docs/kbn_ml_in_memory_table.mdx index 53a5896191f71..b90235666a1ed 100644 --- a/api_docs/kbn_ml_in_memory_table.mdx +++ b/api_docs/kbn_ml_in_memory_table.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-in-memory-table title: "@kbn/ml-in-memory-table" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ml-in-memory-table plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-in-memory-table'] --- import kbnMlInMemoryTableObj from './kbn_ml_in_memory_table.devdocs.json'; diff --git a/api_docs/kbn_ml_is_defined.mdx b/api_docs/kbn_ml_is_defined.mdx index f0525fe0ff6ca..b63127d2e9d6b 100644 --- a/api_docs/kbn_ml_is_defined.mdx +++ b/api_docs/kbn_ml_is_defined.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-is-defined title: "@kbn/ml-is-defined" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ml-is-defined plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-is-defined'] --- import kbnMlIsDefinedObj from './kbn_ml_is_defined.devdocs.json'; diff --git a/api_docs/kbn_ml_is_populated_object.mdx b/api_docs/kbn_ml_is_populated_object.mdx index ae07329944689..d8c0be4fc33ad 100644 --- a/api_docs/kbn_ml_is_populated_object.mdx +++ b/api_docs/kbn_ml_is_populated_object.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-is-populated-object title: "@kbn/ml-is-populated-object" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ml-is-populated-object plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-is-populated-object'] --- import kbnMlIsPopulatedObjectObj from './kbn_ml_is_populated_object.devdocs.json'; diff --git a/api_docs/kbn_ml_kibana_theme.mdx b/api_docs/kbn_ml_kibana_theme.mdx index 31f18cc32b274..e431c5af5970c 100644 --- a/api_docs/kbn_ml_kibana_theme.mdx +++ b/api_docs/kbn_ml_kibana_theme.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-kibana-theme title: "@kbn/ml-kibana-theme" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ml-kibana-theme plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-kibana-theme'] --- import kbnMlKibanaThemeObj from './kbn_ml_kibana_theme.devdocs.json'; diff --git a/api_docs/kbn_ml_local_storage.mdx b/api_docs/kbn_ml_local_storage.mdx index 8ee4fb7752a74..039a7d1e1b6f5 100644 --- a/api_docs/kbn_ml_local_storage.mdx +++ b/api_docs/kbn_ml_local_storage.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-local-storage title: "@kbn/ml-local-storage" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ml-local-storage plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-local-storage'] --- import kbnMlLocalStorageObj from './kbn_ml_local_storage.devdocs.json'; diff --git a/api_docs/kbn_ml_nested_property.mdx b/api_docs/kbn_ml_nested_property.mdx index 805fb634e2cf7..0736973e299e7 100644 --- a/api_docs/kbn_ml_nested_property.mdx +++ b/api_docs/kbn_ml_nested_property.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-nested-property title: "@kbn/ml-nested-property" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ml-nested-property plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-nested-property'] --- import kbnMlNestedPropertyObj from './kbn_ml_nested_property.devdocs.json'; diff --git a/api_docs/kbn_ml_number_utils.mdx b/api_docs/kbn_ml_number_utils.mdx index 9c97a6ece7be6..d40060af21ef4 100644 --- a/api_docs/kbn_ml_number_utils.mdx +++ b/api_docs/kbn_ml_number_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-number-utils title: "@kbn/ml-number-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ml-number-utils plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-number-utils'] --- import kbnMlNumberUtilsObj from './kbn_ml_number_utils.devdocs.json'; diff --git a/api_docs/kbn_ml_query_utils.mdx b/api_docs/kbn_ml_query_utils.mdx index ad67ed3dacc99..693414ff4195b 100644 --- a/api_docs/kbn_ml_query_utils.mdx +++ b/api_docs/kbn_ml_query_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-query-utils title: "@kbn/ml-query-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ml-query-utils plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-query-utils'] --- import kbnMlQueryUtilsObj from './kbn_ml_query_utils.devdocs.json'; diff --git a/api_docs/kbn_ml_random_sampler_utils.mdx b/api_docs/kbn_ml_random_sampler_utils.mdx index cffd3dc660b07..9a406bcf73082 100644 --- a/api_docs/kbn_ml_random_sampler_utils.mdx +++ b/api_docs/kbn_ml_random_sampler_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-random-sampler-utils title: "@kbn/ml-random-sampler-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ml-random-sampler-utils plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-random-sampler-utils'] --- import kbnMlRandomSamplerUtilsObj from './kbn_ml_random_sampler_utils.devdocs.json'; diff --git a/api_docs/kbn_ml_route_utils.mdx b/api_docs/kbn_ml_route_utils.mdx index c0700a3fecc68..0e2f38337ac17 100644 --- a/api_docs/kbn_ml_route_utils.mdx +++ b/api_docs/kbn_ml_route_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-route-utils title: "@kbn/ml-route-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ml-route-utils plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-route-utils'] --- import kbnMlRouteUtilsObj from './kbn_ml_route_utils.devdocs.json'; diff --git a/api_docs/kbn_ml_runtime_field_utils.mdx b/api_docs/kbn_ml_runtime_field_utils.mdx index 49ca205d7bf32..1998bad8988a1 100644 --- a/api_docs/kbn_ml_runtime_field_utils.mdx +++ b/api_docs/kbn_ml_runtime_field_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-runtime-field-utils title: "@kbn/ml-runtime-field-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ml-runtime-field-utils plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-runtime-field-utils'] --- import kbnMlRuntimeFieldUtilsObj from './kbn_ml_runtime_field_utils.devdocs.json'; diff --git a/api_docs/kbn_ml_string_hash.mdx b/api_docs/kbn_ml_string_hash.mdx index a45004dd35f15..cda1656c0cbb6 100644 --- a/api_docs/kbn_ml_string_hash.mdx +++ b/api_docs/kbn_ml_string_hash.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-string-hash title: "@kbn/ml-string-hash" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ml-string-hash plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-string-hash'] --- import kbnMlStringHashObj from './kbn_ml_string_hash.devdocs.json'; diff --git a/api_docs/kbn_ml_trained_models_utils.mdx b/api_docs/kbn_ml_trained_models_utils.mdx index 470c9c3242dfe..6b1e02c0d76d1 100644 --- a/api_docs/kbn_ml_trained_models_utils.mdx +++ b/api_docs/kbn_ml_trained_models_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-trained-models-utils title: "@kbn/ml-trained-models-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ml-trained-models-utils plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-trained-models-utils'] --- import kbnMlTrainedModelsUtilsObj from './kbn_ml_trained_models_utils.devdocs.json'; diff --git a/api_docs/kbn_ml_url_state.mdx b/api_docs/kbn_ml_url_state.mdx index 90dcfec26f391..2143f148be0a9 100644 --- a/api_docs/kbn_ml_url_state.mdx +++ b/api_docs/kbn_ml_url_state.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-url-state title: "@kbn/ml-url-state" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ml-url-state plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-url-state'] --- import kbnMlUrlStateObj from './kbn_ml_url_state.devdocs.json'; diff --git a/api_docs/kbn_monaco.mdx b/api_docs/kbn_monaco.mdx index 7704e0655e9a4..4635a4ed1c324 100644 --- a/api_docs/kbn_monaco.mdx +++ b/api_docs/kbn_monaco.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-monaco title: "@kbn/monaco" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/monaco plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/monaco'] --- import kbnMonacoObj from './kbn_monaco.devdocs.json'; diff --git a/api_docs/kbn_object_versioning.mdx b/api_docs/kbn_object_versioning.mdx index 59921f1c5523a..dfc48de1fef07 100644 --- a/api_docs/kbn_object_versioning.mdx +++ b/api_docs/kbn_object_versioning.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-object-versioning title: "@kbn/object-versioning" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/object-versioning plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/object-versioning'] --- import kbnObjectVersioningObj from './kbn_object_versioning.devdocs.json'; diff --git a/api_docs/kbn_observability_alert_details.mdx b/api_docs/kbn_observability_alert_details.mdx index 52dbe9953b494..14332da8fe1fc 100644 --- a/api_docs/kbn_observability_alert_details.mdx +++ b/api_docs/kbn_observability_alert_details.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-observability-alert-details title: "@kbn/observability-alert-details" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/observability-alert-details plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/observability-alert-details'] --- import kbnObservabilityAlertDetailsObj from './kbn_observability_alert_details.devdocs.json'; diff --git a/api_docs/kbn_openapi_generator.mdx b/api_docs/kbn_openapi_generator.mdx index bea0e794f8cb4..185aea7b2b2e3 100644 --- a/api_docs/kbn_openapi_generator.mdx +++ b/api_docs/kbn_openapi_generator.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-openapi-generator title: "@kbn/openapi-generator" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/openapi-generator plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/openapi-generator'] --- import kbnOpenapiGeneratorObj from './kbn_openapi_generator.devdocs.json'; diff --git a/api_docs/kbn_optimizer.mdx b/api_docs/kbn_optimizer.mdx index 5ac88bf3902bd..82062e6a59529 100644 --- a/api_docs/kbn_optimizer.mdx +++ b/api_docs/kbn_optimizer.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-optimizer title: "@kbn/optimizer" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/optimizer plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/optimizer'] --- import kbnOptimizerObj from './kbn_optimizer.devdocs.json'; diff --git a/api_docs/kbn_optimizer_webpack_helpers.mdx b/api_docs/kbn_optimizer_webpack_helpers.mdx index 642931328d7e8..e2ece86f81572 100644 --- a/api_docs/kbn_optimizer_webpack_helpers.mdx +++ b/api_docs/kbn_optimizer_webpack_helpers.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-optimizer-webpack-helpers title: "@kbn/optimizer-webpack-helpers" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/optimizer-webpack-helpers plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/optimizer-webpack-helpers'] --- import kbnOptimizerWebpackHelpersObj from './kbn_optimizer_webpack_helpers.devdocs.json'; diff --git a/api_docs/kbn_osquery_io_ts_types.mdx b/api_docs/kbn_osquery_io_ts_types.mdx index 577f08c988c33..5df9365db1eaa 100644 --- a/api_docs/kbn_osquery_io_ts_types.mdx +++ b/api_docs/kbn_osquery_io_ts_types.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-osquery-io-ts-types title: "@kbn/osquery-io-ts-types" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/osquery-io-ts-types plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/osquery-io-ts-types'] --- import kbnOsqueryIoTsTypesObj from './kbn_osquery_io_ts_types.devdocs.json'; diff --git a/api_docs/kbn_performance_testing_dataset_extractor.mdx b/api_docs/kbn_performance_testing_dataset_extractor.mdx index cd6d3a7544cba..914fdf2ef226f 100644 --- a/api_docs/kbn_performance_testing_dataset_extractor.mdx +++ b/api_docs/kbn_performance_testing_dataset_extractor.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-performance-testing-dataset-extractor title: "@kbn/performance-testing-dataset-extractor" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/performance-testing-dataset-extractor plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/performance-testing-dataset-extractor'] --- import kbnPerformanceTestingDatasetExtractorObj from './kbn_performance_testing_dataset_extractor.devdocs.json'; diff --git a/api_docs/kbn_plugin_generator.mdx b/api_docs/kbn_plugin_generator.mdx index 3ec40e5ffa1cd..46b3ba48d8939 100644 --- a/api_docs/kbn_plugin_generator.mdx +++ b/api_docs/kbn_plugin_generator.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-plugin-generator title: "@kbn/plugin-generator" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/plugin-generator plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/plugin-generator'] --- import kbnPluginGeneratorObj from './kbn_plugin_generator.devdocs.json'; diff --git a/api_docs/kbn_plugin_helpers.mdx b/api_docs/kbn_plugin_helpers.mdx index f60a496106306..da69c157cfa57 100644 --- a/api_docs/kbn_plugin_helpers.mdx +++ b/api_docs/kbn_plugin_helpers.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-plugin-helpers title: "@kbn/plugin-helpers" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/plugin-helpers plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/plugin-helpers'] --- import kbnPluginHelpersObj from './kbn_plugin_helpers.devdocs.json'; diff --git a/api_docs/kbn_profiling_utils.mdx b/api_docs/kbn_profiling_utils.mdx index 1f1e78ca2b52f..3c05744650a8a 100644 --- a/api_docs/kbn_profiling_utils.mdx +++ b/api_docs/kbn_profiling_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-profiling-utils title: "@kbn/profiling-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/profiling-utils plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/profiling-utils'] --- import kbnProfilingUtilsObj from './kbn_profiling_utils.devdocs.json'; diff --git a/api_docs/kbn_random_sampling.mdx b/api_docs/kbn_random_sampling.mdx index 5e75506976e79..653cb4ed4d898 100644 --- a/api_docs/kbn_random_sampling.mdx +++ b/api_docs/kbn_random_sampling.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-random-sampling title: "@kbn/random-sampling" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/random-sampling plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/random-sampling'] --- import kbnRandomSamplingObj from './kbn_random_sampling.devdocs.json'; diff --git a/api_docs/kbn_react_field.mdx b/api_docs/kbn_react_field.mdx index 3b96bb0044b32..d143e5e679d9f 100644 --- a/api_docs/kbn_react_field.mdx +++ b/api_docs/kbn_react_field.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-react-field title: "@kbn/react-field" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/react-field plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/react-field'] --- import kbnReactFieldObj from './kbn_react_field.devdocs.json'; diff --git a/api_docs/kbn_react_kibana_context_common.mdx b/api_docs/kbn_react_kibana_context_common.mdx index 2e78bc9e11ae8..7098d24f62c8e 100644 --- a/api_docs/kbn_react_kibana_context_common.mdx +++ b/api_docs/kbn_react_kibana_context_common.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-react-kibana-context-common title: "@kbn/react-kibana-context-common" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/react-kibana-context-common plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/react-kibana-context-common'] --- import kbnReactKibanaContextCommonObj from './kbn_react_kibana_context_common.devdocs.json'; diff --git a/api_docs/kbn_react_kibana_context_render.mdx b/api_docs/kbn_react_kibana_context_render.mdx index c34ca93833f3e..ed23e9d7e897c 100644 --- a/api_docs/kbn_react_kibana_context_render.mdx +++ b/api_docs/kbn_react_kibana_context_render.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-react-kibana-context-render title: "@kbn/react-kibana-context-render" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/react-kibana-context-render plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/react-kibana-context-render'] --- import kbnReactKibanaContextRenderObj from './kbn_react_kibana_context_render.devdocs.json'; diff --git a/api_docs/kbn_react_kibana_context_root.mdx b/api_docs/kbn_react_kibana_context_root.mdx index 02ddaafca7496..10ea15d81496b 100644 --- a/api_docs/kbn_react_kibana_context_root.mdx +++ b/api_docs/kbn_react_kibana_context_root.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-react-kibana-context-root title: "@kbn/react-kibana-context-root" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/react-kibana-context-root plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/react-kibana-context-root'] --- import kbnReactKibanaContextRootObj from './kbn_react_kibana_context_root.devdocs.json'; diff --git a/api_docs/kbn_react_kibana_context_styled.mdx b/api_docs/kbn_react_kibana_context_styled.mdx index 7b5bca1177508..6bec86754b5a5 100644 --- a/api_docs/kbn_react_kibana_context_styled.mdx +++ b/api_docs/kbn_react_kibana_context_styled.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-react-kibana-context-styled title: "@kbn/react-kibana-context-styled" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/react-kibana-context-styled plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/react-kibana-context-styled'] --- import kbnReactKibanaContextStyledObj from './kbn_react_kibana_context_styled.devdocs.json'; diff --git a/api_docs/kbn_react_kibana_context_theme.mdx b/api_docs/kbn_react_kibana_context_theme.mdx index f9f31419f1920..02bd8f40d7602 100644 --- a/api_docs/kbn_react_kibana_context_theme.mdx +++ b/api_docs/kbn_react_kibana_context_theme.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-react-kibana-context-theme title: "@kbn/react-kibana-context-theme" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/react-kibana-context-theme plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/react-kibana-context-theme'] --- import kbnReactKibanaContextThemeObj from './kbn_react_kibana_context_theme.devdocs.json'; diff --git a/api_docs/kbn_react_kibana_mount.devdocs.json b/api_docs/kbn_react_kibana_mount.devdocs.json index 243b8bd440a2c..6524362eea9af 100644 --- a/api_docs/kbn_react_kibana_mount.devdocs.json +++ b/api_docs/kbn_react_kibana_mount.devdocs.json @@ -190,7 +190,7 @@ "section": "def-common.MountPoint", "text": "MountPoint" }, - ") => void" + " | undefined) => void" ], "path": "packages/react/kibana_mount/mount_point_portal.tsx", "deprecated": false, @@ -211,12 +211,12 @@ "section": "def-common.MountPoint", "text": "MountPoint" }, - "" + " | undefined" ], "path": "packages/react/kibana_mount/mount_point_portal.tsx", "deprecated": false, "trackAdoption": false, - "isRequired": true + "isRequired": false } ], "returnComment": [] diff --git a/api_docs/kbn_react_kibana_mount.mdx b/api_docs/kbn_react_kibana_mount.mdx index 7b2d345647844..5c76fc386781e 100644 --- a/api_docs/kbn_react_kibana_mount.mdx +++ b/api_docs/kbn_react_kibana_mount.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-react-kibana-mount title: "@kbn/react-kibana-mount" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/react-kibana-mount plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/react-kibana-mount'] --- import kbnReactKibanaMountObj from './kbn_react_kibana_mount.devdocs.json'; diff --git a/api_docs/kbn_repo_file_maps.mdx b/api_docs/kbn_repo_file_maps.mdx index 3f8474a0f9ccc..34ed025409fc3 100644 --- a/api_docs/kbn_repo_file_maps.mdx +++ b/api_docs/kbn_repo_file_maps.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-repo-file-maps title: "@kbn/repo-file-maps" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/repo-file-maps plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/repo-file-maps'] --- import kbnRepoFileMapsObj from './kbn_repo_file_maps.devdocs.json'; diff --git a/api_docs/kbn_repo_linter.mdx b/api_docs/kbn_repo_linter.mdx index e42dc265bbc11..bf8bcfaf11334 100644 --- a/api_docs/kbn_repo_linter.mdx +++ b/api_docs/kbn_repo_linter.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-repo-linter title: "@kbn/repo-linter" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/repo-linter plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/repo-linter'] --- import kbnRepoLinterObj from './kbn_repo_linter.devdocs.json'; diff --git a/api_docs/kbn_repo_path.mdx b/api_docs/kbn_repo_path.mdx index 3b13d5305fca5..7b20f28a904f3 100644 --- a/api_docs/kbn_repo_path.mdx +++ b/api_docs/kbn_repo_path.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-repo-path title: "@kbn/repo-path" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/repo-path plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/repo-path'] --- import kbnRepoPathObj from './kbn_repo_path.devdocs.json'; diff --git a/api_docs/kbn_repo_source_classifier.mdx b/api_docs/kbn_repo_source_classifier.mdx index f8f51fe197866..ae7817df14ae9 100644 --- a/api_docs/kbn_repo_source_classifier.mdx +++ b/api_docs/kbn_repo_source_classifier.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-repo-source-classifier title: "@kbn/repo-source-classifier" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/repo-source-classifier plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/repo-source-classifier'] --- import kbnRepoSourceClassifierObj from './kbn_repo_source_classifier.devdocs.json'; diff --git a/api_docs/kbn_reporting_common.mdx b/api_docs/kbn_reporting_common.mdx index b493f7f409087..c13194f4d5100 100644 --- a/api_docs/kbn_reporting_common.mdx +++ b/api_docs/kbn_reporting_common.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-reporting-common title: "@kbn/reporting-common" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/reporting-common plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/reporting-common'] --- import kbnReportingCommonObj from './kbn_reporting_common.devdocs.json'; diff --git a/api_docs/kbn_resizable_layout.mdx b/api_docs/kbn_resizable_layout.mdx index a2a36b432a836..a81be06994b10 100644 --- a/api_docs/kbn_resizable_layout.mdx +++ b/api_docs/kbn_resizable_layout.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-resizable-layout title: "@kbn/resizable-layout" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/resizable-layout plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/resizable-layout'] --- import kbnResizableLayoutObj from './kbn_resizable_layout.devdocs.json'; diff --git a/api_docs/kbn_rison.mdx b/api_docs/kbn_rison.mdx index e3dc9245e3557..ed029cb1a9897 100644 --- a/api_docs/kbn_rison.mdx +++ b/api_docs/kbn_rison.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-rison title: "@kbn/rison" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/rison plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/rison'] --- import kbnRisonObj from './kbn_rison.devdocs.json'; diff --git a/api_docs/kbn_rrule.mdx b/api_docs/kbn_rrule.mdx index 44776c3cb1ba2..c5da61c133cd4 100644 --- a/api_docs/kbn_rrule.mdx +++ b/api_docs/kbn_rrule.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-rrule title: "@kbn/rrule" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/rrule plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/rrule'] --- import kbnRruleObj from './kbn_rrule.devdocs.json'; diff --git a/api_docs/kbn_rule_data_utils.mdx b/api_docs/kbn_rule_data_utils.mdx index a0a3fb5d95cd2..ef98a0ed37f19 100644 --- a/api_docs/kbn_rule_data_utils.mdx +++ b/api_docs/kbn_rule_data_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-rule-data-utils title: "@kbn/rule-data-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/rule-data-utils plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/rule-data-utils'] --- import kbnRuleDataUtilsObj from './kbn_rule_data_utils.devdocs.json'; diff --git a/api_docs/kbn_saved_objects_settings.mdx b/api_docs/kbn_saved_objects_settings.mdx index a92ce8a277ae7..976d37bb6128a 100644 --- a/api_docs/kbn_saved_objects_settings.mdx +++ b/api_docs/kbn_saved_objects_settings.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-saved-objects-settings title: "@kbn/saved-objects-settings" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/saved-objects-settings plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/saved-objects-settings'] --- import kbnSavedObjectsSettingsObj from './kbn_saved_objects_settings.devdocs.json'; diff --git a/api_docs/kbn_search_api_panels.mdx b/api_docs/kbn_search_api_panels.mdx index 812b5bd31baf2..800ec16c7f6bd 100644 --- a/api_docs/kbn_search_api_panels.mdx +++ b/api_docs/kbn_search_api_panels.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-search-api-panels title: "@kbn/search-api-panels" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/search-api-panels plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/search-api-panels'] --- import kbnSearchApiPanelsObj from './kbn_search_api_panels.devdocs.json'; diff --git a/api_docs/kbn_search_connectors.mdx b/api_docs/kbn_search_connectors.mdx index d3ce93a91d31a..ac745e4b9107c 100644 --- a/api_docs/kbn_search_connectors.mdx +++ b/api_docs/kbn_search_connectors.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-search-connectors title: "@kbn/search-connectors" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/search-connectors plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/search-connectors'] --- import kbnSearchConnectorsObj from './kbn_search_connectors.devdocs.json'; diff --git a/api_docs/kbn_search_response_warnings.mdx b/api_docs/kbn_search_response_warnings.mdx index 57106ba96c421..c46b049ba1168 100644 --- a/api_docs/kbn_search_response_warnings.mdx +++ b/api_docs/kbn_search_response_warnings.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-search-response-warnings title: "@kbn/search-response-warnings" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/search-response-warnings plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/search-response-warnings'] --- import kbnSearchResponseWarningsObj from './kbn_search_response_warnings.devdocs.json'; diff --git a/api_docs/kbn_security_solution_features.mdx b/api_docs/kbn_security_solution_features.mdx index 86876d0bf1b70..c35f2ef0eb71f 100644 --- a/api_docs/kbn_security_solution_features.mdx +++ b/api_docs/kbn_security_solution_features.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-security-solution-features title: "@kbn/security-solution-features" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/security-solution-features plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/security-solution-features'] --- import kbnSecuritySolutionFeaturesObj from './kbn_security_solution_features.devdocs.json'; diff --git a/api_docs/kbn_security_solution_navigation.mdx b/api_docs/kbn_security_solution_navigation.mdx index f214ad39c1de7..7c91fe293a83e 100644 --- a/api_docs/kbn_security_solution_navigation.mdx +++ b/api_docs/kbn_security_solution_navigation.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-security-solution-navigation title: "@kbn/security-solution-navigation" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/security-solution-navigation plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/security-solution-navigation'] --- import kbnSecuritySolutionNavigationObj from './kbn_security_solution_navigation.devdocs.json'; diff --git a/api_docs/kbn_security_solution_side_nav.mdx b/api_docs/kbn_security_solution_side_nav.mdx index 7b588c06249fe..b14d90690df2d 100644 --- a/api_docs/kbn_security_solution_side_nav.mdx +++ b/api_docs/kbn_security_solution_side_nav.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-security-solution-side-nav title: "@kbn/security-solution-side-nav" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/security-solution-side-nav plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/security-solution-side-nav'] --- import kbnSecuritySolutionSideNavObj from './kbn_security_solution_side_nav.devdocs.json'; diff --git a/api_docs/kbn_security_solution_storybook_config.mdx b/api_docs/kbn_security_solution_storybook_config.mdx index aab292ad203b7..0e5a5e40492ef 100644 --- a/api_docs/kbn_security_solution_storybook_config.mdx +++ b/api_docs/kbn_security_solution_storybook_config.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-security-solution-storybook-config title: "@kbn/security-solution-storybook-config" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/security-solution-storybook-config plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/security-solution-storybook-config'] --- import kbnSecuritySolutionStorybookConfigObj from './kbn_security_solution_storybook_config.devdocs.json'; diff --git a/api_docs/kbn_securitysolution_autocomplete.mdx b/api_docs/kbn_securitysolution_autocomplete.mdx index 064fe0f424bb5..1aed9ef485e3a 100644 --- a/api_docs/kbn_securitysolution_autocomplete.mdx +++ b/api_docs/kbn_securitysolution_autocomplete.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-securitysolution-autocomplete title: "@kbn/securitysolution-autocomplete" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/securitysolution-autocomplete plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/securitysolution-autocomplete'] --- import kbnSecuritysolutionAutocompleteObj from './kbn_securitysolution_autocomplete.devdocs.json'; diff --git a/api_docs/kbn_securitysolution_data_table.mdx b/api_docs/kbn_securitysolution_data_table.mdx index 41b358168c209..b9ce192fa6255 100644 --- a/api_docs/kbn_securitysolution_data_table.mdx +++ b/api_docs/kbn_securitysolution_data_table.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-securitysolution-data-table title: "@kbn/securitysolution-data-table" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/securitysolution-data-table plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/securitysolution-data-table'] --- import kbnSecuritysolutionDataTableObj from './kbn_securitysolution_data_table.devdocs.json'; diff --git a/api_docs/kbn_securitysolution_ecs.mdx b/api_docs/kbn_securitysolution_ecs.mdx index 5f106f071d536..c7c2e14fd4126 100644 --- a/api_docs/kbn_securitysolution_ecs.mdx +++ b/api_docs/kbn_securitysolution_ecs.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-securitysolution-ecs title: "@kbn/securitysolution-ecs" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/securitysolution-ecs plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/securitysolution-ecs'] --- import kbnSecuritysolutionEcsObj from './kbn_securitysolution_ecs.devdocs.json'; diff --git a/api_docs/kbn_securitysolution_es_utils.mdx b/api_docs/kbn_securitysolution_es_utils.mdx index b34e2f6ea9839..0352248603738 100644 --- a/api_docs/kbn_securitysolution_es_utils.mdx +++ b/api_docs/kbn_securitysolution_es_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-securitysolution-es-utils title: "@kbn/securitysolution-es-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/securitysolution-es-utils plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/securitysolution-es-utils'] --- import kbnSecuritysolutionEsUtilsObj from './kbn_securitysolution_es_utils.devdocs.json'; diff --git a/api_docs/kbn_securitysolution_exception_list_components.mdx b/api_docs/kbn_securitysolution_exception_list_components.mdx index a9c394d159025..fbebcdb9021a2 100644 --- a/api_docs/kbn_securitysolution_exception_list_components.mdx +++ b/api_docs/kbn_securitysolution_exception_list_components.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-securitysolution-exception-list-components title: "@kbn/securitysolution-exception-list-components" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/securitysolution-exception-list-components plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/securitysolution-exception-list-components'] --- import kbnSecuritysolutionExceptionListComponentsObj from './kbn_securitysolution_exception_list_components.devdocs.json'; diff --git a/api_docs/kbn_securitysolution_grouping.mdx b/api_docs/kbn_securitysolution_grouping.mdx index 2dee458ee1f04..38d79173742d3 100644 --- a/api_docs/kbn_securitysolution_grouping.mdx +++ b/api_docs/kbn_securitysolution_grouping.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-securitysolution-grouping title: "@kbn/securitysolution-grouping" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/securitysolution-grouping plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/securitysolution-grouping'] --- import kbnSecuritysolutionGroupingObj from './kbn_securitysolution_grouping.devdocs.json'; diff --git a/api_docs/kbn_securitysolution_hook_utils.mdx b/api_docs/kbn_securitysolution_hook_utils.mdx index a83d8a18f7821..a0a3f165e6bd5 100644 --- a/api_docs/kbn_securitysolution_hook_utils.mdx +++ b/api_docs/kbn_securitysolution_hook_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-securitysolution-hook-utils title: "@kbn/securitysolution-hook-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/securitysolution-hook-utils plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/securitysolution-hook-utils'] --- import kbnSecuritysolutionHookUtilsObj from './kbn_securitysolution_hook_utils.devdocs.json'; diff --git a/api_docs/kbn_securitysolution_io_ts_alerting_types.mdx b/api_docs/kbn_securitysolution_io_ts_alerting_types.mdx index 5163415c16def..1c2a914fb4b5e 100644 --- a/api_docs/kbn_securitysolution_io_ts_alerting_types.mdx +++ b/api_docs/kbn_securitysolution_io_ts_alerting_types.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-securitysolution-io-ts-alerting-types title: "@kbn/securitysolution-io-ts-alerting-types" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/securitysolution-io-ts-alerting-types plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/securitysolution-io-ts-alerting-types'] --- import kbnSecuritysolutionIoTsAlertingTypesObj from './kbn_securitysolution_io_ts_alerting_types.devdocs.json'; diff --git a/api_docs/kbn_securitysolution_io_ts_list_types.mdx b/api_docs/kbn_securitysolution_io_ts_list_types.mdx index 5179e5647b9c7..5ecaad5dfc2f9 100644 --- a/api_docs/kbn_securitysolution_io_ts_list_types.mdx +++ b/api_docs/kbn_securitysolution_io_ts_list_types.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-securitysolution-io-ts-list-types title: "@kbn/securitysolution-io-ts-list-types" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/securitysolution-io-ts-list-types plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/securitysolution-io-ts-list-types'] --- import kbnSecuritysolutionIoTsListTypesObj from './kbn_securitysolution_io_ts_list_types.devdocs.json'; diff --git a/api_docs/kbn_securitysolution_io_ts_types.mdx b/api_docs/kbn_securitysolution_io_ts_types.mdx index 8600a6c8687e0..87ff4ad860d81 100644 --- a/api_docs/kbn_securitysolution_io_ts_types.mdx +++ b/api_docs/kbn_securitysolution_io_ts_types.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-securitysolution-io-ts-types title: "@kbn/securitysolution-io-ts-types" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/securitysolution-io-ts-types plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/securitysolution-io-ts-types'] --- import kbnSecuritysolutionIoTsTypesObj from './kbn_securitysolution_io_ts_types.devdocs.json'; diff --git a/api_docs/kbn_securitysolution_io_ts_utils.mdx b/api_docs/kbn_securitysolution_io_ts_utils.mdx index 4539a9eb1a4ab..65d0370501b00 100644 --- a/api_docs/kbn_securitysolution_io_ts_utils.mdx +++ b/api_docs/kbn_securitysolution_io_ts_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-securitysolution-io-ts-utils title: "@kbn/securitysolution-io-ts-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/securitysolution-io-ts-utils plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/securitysolution-io-ts-utils'] --- import kbnSecuritysolutionIoTsUtilsObj from './kbn_securitysolution_io_ts_utils.devdocs.json'; diff --git a/api_docs/kbn_securitysolution_list_api.mdx b/api_docs/kbn_securitysolution_list_api.mdx index bd02c02065c7b..55b0bb85f315c 100644 --- a/api_docs/kbn_securitysolution_list_api.mdx +++ b/api_docs/kbn_securitysolution_list_api.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-securitysolution-list-api title: "@kbn/securitysolution-list-api" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/securitysolution-list-api plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/securitysolution-list-api'] --- import kbnSecuritysolutionListApiObj from './kbn_securitysolution_list_api.devdocs.json'; diff --git a/api_docs/kbn_securitysolution_list_constants.mdx b/api_docs/kbn_securitysolution_list_constants.mdx index e2f417f66e4b7..e4a493f36623a 100644 --- a/api_docs/kbn_securitysolution_list_constants.mdx +++ b/api_docs/kbn_securitysolution_list_constants.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-securitysolution-list-constants title: "@kbn/securitysolution-list-constants" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/securitysolution-list-constants plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/securitysolution-list-constants'] --- import kbnSecuritysolutionListConstantsObj from './kbn_securitysolution_list_constants.devdocs.json'; diff --git a/api_docs/kbn_securitysolution_list_hooks.mdx b/api_docs/kbn_securitysolution_list_hooks.mdx index 0e0d1d53b6471..83ae83697df7d 100644 --- a/api_docs/kbn_securitysolution_list_hooks.mdx +++ b/api_docs/kbn_securitysolution_list_hooks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-securitysolution-list-hooks title: "@kbn/securitysolution-list-hooks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/securitysolution-list-hooks plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/securitysolution-list-hooks'] --- import kbnSecuritysolutionListHooksObj from './kbn_securitysolution_list_hooks.devdocs.json'; diff --git a/api_docs/kbn_securitysolution_list_utils.mdx b/api_docs/kbn_securitysolution_list_utils.mdx index a6284bed3b746..cfa747286c59a 100644 --- a/api_docs/kbn_securitysolution_list_utils.mdx +++ b/api_docs/kbn_securitysolution_list_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-securitysolution-list-utils title: "@kbn/securitysolution-list-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/securitysolution-list-utils plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/securitysolution-list-utils'] --- import kbnSecuritysolutionListUtilsObj from './kbn_securitysolution_list_utils.devdocs.json'; diff --git a/api_docs/kbn_securitysolution_rules.mdx b/api_docs/kbn_securitysolution_rules.mdx index d0840c35193e2..5407d598da1ae 100644 --- a/api_docs/kbn_securitysolution_rules.mdx +++ b/api_docs/kbn_securitysolution_rules.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-securitysolution-rules title: "@kbn/securitysolution-rules" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/securitysolution-rules plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/securitysolution-rules'] --- import kbnSecuritysolutionRulesObj from './kbn_securitysolution_rules.devdocs.json'; diff --git a/api_docs/kbn_securitysolution_t_grid.mdx b/api_docs/kbn_securitysolution_t_grid.mdx index a9c761d9d4f40..39f29fe801197 100644 --- a/api_docs/kbn_securitysolution_t_grid.mdx +++ b/api_docs/kbn_securitysolution_t_grid.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-securitysolution-t-grid title: "@kbn/securitysolution-t-grid" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/securitysolution-t-grid plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/securitysolution-t-grid'] --- import kbnSecuritysolutionTGridObj from './kbn_securitysolution_t_grid.devdocs.json'; diff --git a/api_docs/kbn_securitysolution_utils.mdx b/api_docs/kbn_securitysolution_utils.mdx index a5172a86fd367..737cd1aa5a029 100644 --- a/api_docs/kbn_securitysolution_utils.mdx +++ b/api_docs/kbn_securitysolution_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-securitysolution-utils title: "@kbn/securitysolution-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/securitysolution-utils plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/securitysolution-utils'] --- import kbnSecuritysolutionUtilsObj from './kbn_securitysolution_utils.devdocs.json'; diff --git a/api_docs/kbn_server_http_tools.mdx b/api_docs/kbn_server_http_tools.mdx index a9c33d32d7e1d..416a907f87f05 100644 --- a/api_docs/kbn_server_http_tools.mdx +++ b/api_docs/kbn_server_http_tools.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-server-http-tools title: "@kbn/server-http-tools" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/server-http-tools plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/server-http-tools'] --- import kbnServerHttpToolsObj from './kbn_server_http_tools.devdocs.json'; diff --git a/api_docs/kbn_server_route_repository.mdx b/api_docs/kbn_server_route_repository.mdx index 751b5932099d7..34bcdd8092417 100644 --- a/api_docs/kbn_server_route_repository.mdx +++ b/api_docs/kbn_server_route_repository.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-server-route-repository title: "@kbn/server-route-repository" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/server-route-repository plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/server-route-repository'] --- import kbnServerRouteRepositoryObj from './kbn_server_route_repository.devdocs.json'; diff --git a/api_docs/kbn_serverless_common_settings.mdx b/api_docs/kbn_serverless_common_settings.mdx index f27d95fb7dfc8..84d301e761309 100644 --- a/api_docs/kbn_serverless_common_settings.mdx +++ b/api_docs/kbn_serverless_common_settings.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-serverless-common-settings title: "@kbn/serverless-common-settings" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/serverless-common-settings plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/serverless-common-settings'] --- import kbnServerlessCommonSettingsObj from './kbn_serverless_common_settings.devdocs.json'; diff --git a/api_docs/kbn_serverless_observability_settings.mdx b/api_docs/kbn_serverless_observability_settings.mdx index a9d3c85bdf755..df848241c216e 100644 --- a/api_docs/kbn_serverless_observability_settings.mdx +++ b/api_docs/kbn_serverless_observability_settings.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-serverless-observability-settings title: "@kbn/serverless-observability-settings" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/serverless-observability-settings plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/serverless-observability-settings'] --- import kbnServerlessObservabilitySettingsObj from './kbn_serverless_observability_settings.devdocs.json'; diff --git a/api_docs/kbn_serverless_project_switcher.mdx b/api_docs/kbn_serverless_project_switcher.mdx index 03d29e7a15fb4..dccf04f7554ec 100644 --- a/api_docs/kbn_serverless_project_switcher.mdx +++ b/api_docs/kbn_serverless_project_switcher.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-serverless-project-switcher title: "@kbn/serverless-project-switcher" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/serverless-project-switcher plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/serverless-project-switcher'] --- import kbnServerlessProjectSwitcherObj from './kbn_serverless_project_switcher.devdocs.json'; diff --git a/api_docs/kbn_serverless_search_settings.mdx b/api_docs/kbn_serverless_search_settings.mdx index 91d880e0e7f31..635bc8a7f44e0 100644 --- a/api_docs/kbn_serverless_search_settings.mdx +++ b/api_docs/kbn_serverless_search_settings.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-serverless-search-settings title: "@kbn/serverless-search-settings" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/serverless-search-settings plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/serverless-search-settings'] --- import kbnServerlessSearchSettingsObj from './kbn_serverless_search_settings.devdocs.json'; diff --git a/api_docs/kbn_serverless_security_settings.mdx b/api_docs/kbn_serverless_security_settings.mdx index 9672e72175807..79163a3bbdf95 100644 --- a/api_docs/kbn_serverless_security_settings.mdx +++ b/api_docs/kbn_serverless_security_settings.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-serverless-security-settings title: "@kbn/serverless-security-settings" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/serverless-security-settings plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/serverless-security-settings'] --- import kbnServerlessSecuritySettingsObj from './kbn_serverless_security_settings.devdocs.json'; diff --git a/api_docs/kbn_serverless_storybook_config.mdx b/api_docs/kbn_serverless_storybook_config.mdx index 5be6367ddd8e6..00322a5e5327e 100644 --- a/api_docs/kbn_serverless_storybook_config.mdx +++ b/api_docs/kbn_serverless_storybook_config.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-serverless-storybook-config title: "@kbn/serverless-storybook-config" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/serverless-storybook-config plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/serverless-storybook-config'] --- import kbnServerlessStorybookConfigObj from './kbn_serverless_storybook_config.devdocs.json'; diff --git a/api_docs/kbn_shared_svg.mdx b/api_docs/kbn_shared_svg.mdx index 3815381c8c3a9..73d6ecfe06c95 100644 --- a/api_docs/kbn_shared_svg.mdx +++ b/api_docs/kbn_shared_svg.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-svg title: "@kbn/shared-svg" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-svg plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-svg'] --- import kbnSharedSvgObj from './kbn_shared_svg.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_avatar_solution.mdx b/api_docs/kbn_shared_ux_avatar_solution.mdx index c3a9109cd4edb..aa1fe4020b77d 100644 --- a/api_docs/kbn_shared_ux_avatar_solution.mdx +++ b/api_docs/kbn_shared_ux_avatar_solution.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-avatar-solution title: "@kbn/shared-ux-avatar-solution" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-avatar-solution plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-avatar-solution'] --- import kbnSharedUxAvatarSolutionObj from './kbn_shared_ux_avatar_solution.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_avatar_user_profile_components.mdx b/api_docs/kbn_shared_ux_avatar_user_profile_components.mdx index 7362d0399a9b1..b1500ef36915f 100644 --- a/api_docs/kbn_shared_ux_avatar_user_profile_components.mdx +++ b/api_docs/kbn_shared_ux_avatar_user_profile_components.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-avatar-user-profile-components title: "@kbn/shared-ux-avatar-user-profile-components" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-avatar-user-profile-components plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-avatar-user-profile-components'] --- import kbnSharedUxAvatarUserProfileComponentsObj from './kbn_shared_ux_avatar_user_profile_components.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_button_exit_full_screen.mdx b/api_docs/kbn_shared_ux_button_exit_full_screen.mdx index 379435a8d16fe..85872198f6e8c 100644 --- a/api_docs/kbn_shared_ux_button_exit_full_screen.mdx +++ b/api_docs/kbn_shared_ux_button_exit_full_screen.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-button-exit-full-screen title: "@kbn/shared-ux-button-exit-full-screen" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-button-exit-full-screen plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-button-exit-full-screen'] --- import kbnSharedUxButtonExitFullScreenObj from './kbn_shared_ux_button_exit_full_screen.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_button_exit_full_screen_mocks.mdx b/api_docs/kbn_shared_ux_button_exit_full_screen_mocks.mdx index 8662693d6867a..2e8ad0f157631 100644 --- a/api_docs/kbn_shared_ux_button_exit_full_screen_mocks.mdx +++ b/api_docs/kbn_shared_ux_button_exit_full_screen_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-button-exit-full-screen-mocks title: "@kbn/shared-ux-button-exit-full-screen-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-button-exit-full-screen-mocks plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-button-exit-full-screen-mocks'] --- import kbnSharedUxButtonExitFullScreenMocksObj from './kbn_shared_ux_button_exit_full_screen_mocks.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_button_toolbar.mdx b/api_docs/kbn_shared_ux_button_toolbar.mdx index d9c493c688e2f..d0a7e0ba1793c 100644 --- a/api_docs/kbn_shared_ux_button_toolbar.mdx +++ b/api_docs/kbn_shared_ux_button_toolbar.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-button-toolbar title: "@kbn/shared-ux-button-toolbar" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-button-toolbar plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-button-toolbar'] --- import kbnSharedUxButtonToolbarObj from './kbn_shared_ux_button_toolbar.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_card_no_data.mdx b/api_docs/kbn_shared_ux_card_no_data.mdx index 6d9cc23183f53..83a612583eb39 100644 --- a/api_docs/kbn_shared_ux_card_no_data.mdx +++ b/api_docs/kbn_shared_ux_card_no_data.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-card-no-data title: "@kbn/shared-ux-card-no-data" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-card-no-data plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-card-no-data'] --- import kbnSharedUxCardNoDataObj from './kbn_shared_ux_card_no_data.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_card_no_data_mocks.mdx b/api_docs/kbn_shared_ux_card_no_data_mocks.mdx index 8abfa394c2ffb..746ba4cbc86b8 100644 --- a/api_docs/kbn_shared_ux_card_no_data_mocks.mdx +++ b/api_docs/kbn_shared_ux_card_no_data_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-card-no-data-mocks title: "@kbn/shared-ux-card-no-data-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-card-no-data-mocks plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-card-no-data-mocks'] --- import kbnSharedUxCardNoDataMocksObj from './kbn_shared_ux_card_no_data_mocks.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_chrome_navigation.mdx b/api_docs/kbn_shared_ux_chrome_navigation.mdx index 1f9b14e9a6153..e2a256ac04b04 100644 --- a/api_docs/kbn_shared_ux_chrome_navigation.mdx +++ b/api_docs/kbn_shared_ux_chrome_navigation.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-chrome-navigation title: "@kbn/shared-ux-chrome-navigation" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-chrome-navigation plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-chrome-navigation'] --- import kbnSharedUxChromeNavigationObj from './kbn_shared_ux_chrome_navigation.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_file_context.mdx b/api_docs/kbn_shared_ux_file_context.mdx index aa8eb3be75b34..e4b4cdf4f02be 100644 --- a/api_docs/kbn_shared_ux_file_context.mdx +++ b/api_docs/kbn_shared_ux_file_context.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-file-context title: "@kbn/shared-ux-file-context" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-file-context plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-file-context'] --- import kbnSharedUxFileContextObj from './kbn_shared_ux_file_context.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_file_image.mdx b/api_docs/kbn_shared_ux_file_image.mdx index 9b5d1de0cb243..ad360496c88d2 100644 --- a/api_docs/kbn_shared_ux_file_image.mdx +++ b/api_docs/kbn_shared_ux_file_image.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-file-image title: "@kbn/shared-ux-file-image" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-file-image plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-file-image'] --- import kbnSharedUxFileImageObj from './kbn_shared_ux_file_image.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_file_image_mocks.mdx b/api_docs/kbn_shared_ux_file_image_mocks.mdx index 5abe4cb6efe39..b3604c1c2fb17 100644 --- a/api_docs/kbn_shared_ux_file_image_mocks.mdx +++ b/api_docs/kbn_shared_ux_file_image_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-file-image-mocks title: "@kbn/shared-ux-file-image-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-file-image-mocks plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-file-image-mocks'] --- import kbnSharedUxFileImageMocksObj from './kbn_shared_ux_file_image_mocks.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_file_mocks.mdx b/api_docs/kbn_shared_ux_file_mocks.mdx index 10a5876f0fb00..5379dfe3634d3 100644 --- a/api_docs/kbn_shared_ux_file_mocks.mdx +++ b/api_docs/kbn_shared_ux_file_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-file-mocks title: "@kbn/shared-ux-file-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-file-mocks plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-file-mocks'] --- import kbnSharedUxFileMocksObj from './kbn_shared_ux_file_mocks.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_file_picker.mdx b/api_docs/kbn_shared_ux_file_picker.mdx index cda82baa2b761..9303b656c8d88 100644 --- a/api_docs/kbn_shared_ux_file_picker.mdx +++ b/api_docs/kbn_shared_ux_file_picker.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-file-picker title: "@kbn/shared-ux-file-picker" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-file-picker plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-file-picker'] --- import kbnSharedUxFilePickerObj from './kbn_shared_ux_file_picker.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_file_types.mdx b/api_docs/kbn_shared_ux_file_types.mdx index 87d2b7e739d96..e39bfa0fadb26 100644 --- a/api_docs/kbn_shared_ux_file_types.mdx +++ b/api_docs/kbn_shared_ux_file_types.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-file-types title: "@kbn/shared-ux-file-types" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-file-types plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-file-types'] --- import kbnSharedUxFileTypesObj from './kbn_shared_ux_file_types.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_file_upload.mdx b/api_docs/kbn_shared_ux_file_upload.mdx index 491b08c40816c..b6a120e9ad661 100644 --- a/api_docs/kbn_shared_ux_file_upload.mdx +++ b/api_docs/kbn_shared_ux_file_upload.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-file-upload title: "@kbn/shared-ux-file-upload" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-file-upload plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-file-upload'] --- import kbnSharedUxFileUploadObj from './kbn_shared_ux_file_upload.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_file_util.mdx b/api_docs/kbn_shared_ux_file_util.mdx index 2ccc2f0caba6d..63c5e6faf44f4 100644 --- a/api_docs/kbn_shared_ux_file_util.mdx +++ b/api_docs/kbn_shared_ux_file_util.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-file-util title: "@kbn/shared-ux-file-util" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-file-util plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-file-util'] --- import kbnSharedUxFileUtilObj from './kbn_shared_ux_file_util.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_link_redirect_app.mdx b/api_docs/kbn_shared_ux_link_redirect_app.mdx index e0aec17c313ae..496e3d735b3e5 100644 --- a/api_docs/kbn_shared_ux_link_redirect_app.mdx +++ b/api_docs/kbn_shared_ux_link_redirect_app.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-link-redirect-app title: "@kbn/shared-ux-link-redirect-app" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-link-redirect-app plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-link-redirect-app'] --- import kbnSharedUxLinkRedirectAppObj from './kbn_shared_ux_link_redirect_app.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_link_redirect_app_mocks.mdx b/api_docs/kbn_shared_ux_link_redirect_app_mocks.mdx index 43740ddfe75fa..ba5d40cd6467a 100644 --- a/api_docs/kbn_shared_ux_link_redirect_app_mocks.mdx +++ b/api_docs/kbn_shared_ux_link_redirect_app_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-link-redirect-app-mocks title: "@kbn/shared-ux-link-redirect-app-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-link-redirect-app-mocks plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-link-redirect-app-mocks'] --- import kbnSharedUxLinkRedirectAppMocksObj from './kbn_shared_ux_link_redirect_app_mocks.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_markdown.mdx b/api_docs/kbn_shared_ux_markdown.mdx index c5264d585e59c..0ec1dc3cf48b6 100644 --- a/api_docs/kbn_shared_ux_markdown.mdx +++ b/api_docs/kbn_shared_ux_markdown.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-markdown title: "@kbn/shared-ux-markdown" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-markdown plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-markdown'] --- import kbnSharedUxMarkdownObj from './kbn_shared_ux_markdown.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_markdown_mocks.mdx b/api_docs/kbn_shared_ux_markdown_mocks.mdx index 60f5fdd5f87c8..0c88e11c00d39 100644 --- a/api_docs/kbn_shared_ux_markdown_mocks.mdx +++ b/api_docs/kbn_shared_ux_markdown_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-markdown-mocks title: "@kbn/shared-ux-markdown-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-markdown-mocks plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-markdown-mocks'] --- import kbnSharedUxMarkdownMocksObj from './kbn_shared_ux_markdown_mocks.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_page_analytics_no_data.mdx b/api_docs/kbn_shared_ux_page_analytics_no_data.mdx index fc7c70fc92fd4..32cff6f88981c 100644 --- a/api_docs/kbn_shared_ux_page_analytics_no_data.mdx +++ b/api_docs/kbn_shared_ux_page_analytics_no_data.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-page-analytics-no-data title: "@kbn/shared-ux-page-analytics-no-data" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-page-analytics-no-data plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-page-analytics-no-data'] --- import kbnSharedUxPageAnalyticsNoDataObj from './kbn_shared_ux_page_analytics_no_data.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_page_analytics_no_data_mocks.mdx b/api_docs/kbn_shared_ux_page_analytics_no_data_mocks.mdx index 349f915bcdf62..8942e13d1cf8f 100644 --- a/api_docs/kbn_shared_ux_page_analytics_no_data_mocks.mdx +++ b/api_docs/kbn_shared_ux_page_analytics_no_data_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-page-analytics-no-data-mocks title: "@kbn/shared-ux-page-analytics-no-data-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-page-analytics-no-data-mocks plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-page-analytics-no-data-mocks'] --- import kbnSharedUxPageAnalyticsNoDataMocksObj from './kbn_shared_ux_page_analytics_no_data_mocks.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_page_kibana_no_data.mdx b/api_docs/kbn_shared_ux_page_kibana_no_data.mdx index f4f6edb9bfbbb..0addc0bc21644 100644 --- a/api_docs/kbn_shared_ux_page_kibana_no_data.mdx +++ b/api_docs/kbn_shared_ux_page_kibana_no_data.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-page-kibana-no-data title: "@kbn/shared-ux-page-kibana-no-data" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-page-kibana-no-data plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-page-kibana-no-data'] --- import kbnSharedUxPageKibanaNoDataObj from './kbn_shared_ux_page_kibana_no_data.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_page_kibana_no_data_mocks.mdx b/api_docs/kbn_shared_ux_page_kibana_no_data_mocks.mdx index ec6138b09fd57..7140c27bc8d9d 100644 --- a/api_docs/kbn_shared_ux_page_kibana_no_data_mocks.mdx +++ b/api_docs/kbn_shared_ux_page_kibana_no_data_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-page-kibana-no-data-mocks title: "@kbn/shared-ux-page-kibana-no-data-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-page-kibana-no-data-mocks plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-page-kibana-no-data-mocks'] --- import kbnSharedUxPageKibanaNoDataMocksObj from './kbn_shared_ux_page_kibana_no_data_mocks.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_page_kibana_template.mdx b/api_docs/kbn_shared_ux_page_kibana_template.mdx index ba1854e912120..ca86085c1f779 100644 --- a/api_docs/kbn_shared_ux_page_kibana_template.mdx +++ b/api_docs/kbn_shared_ux_page_kibana_template.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-page-kibana-template title: "@kbn/shared-ux-page-kibana-template" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-page-kibana-template plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-page-kibana-template'] --- import kbnSharedUxPageKibanaTemplateObj from './kbn_shared_ux_page_kibana_template.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_page_kibana_template_mocks.mdx b/api_docs/kbn_shared_ux_page_kibana_template_mocks.mdx index 7d57b6195dc05..935a480de20bc 100644 --- a/api_docs/kbn_shared_ux_page_kibana_template_mocks.mdx +++ b/api_docs/kbn_shared_ux_page_kibana_template_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-page-kibana-template-mocks title: "@kbn/shared-ux-page-kibana-template-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-page-kibana-template-mocks plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-page-kibana-template-mocks'] --- import kbnSharedUxPageKibanaTemplateMocksObj from './kbn_shared_ux_page_kibana_template_mocks.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_page_no_data.mdx b/api_docs/kbn_shared_ux_page_no_data.mdx index c568f768c1661..c3240a965e3e3 100644 --- a/api_docs/kbn_shared_ux_page_no_data.mdx +++ b/api_docs/kbn_shared_ux_page_no_data.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-page-no-data title: "@kbn/shared-ux-page-no-data" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-page-no-data plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-page-no-data'] --- import kbnSharedUxPageNoDataObj from './kbn_shared_ux_page_no_data.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_page_no_data_config.mdx b/api_docs/kbn_shared_ux_page_no_data_config.mdx index e921454628d2c..26dfe8784a514 100644 --- a/api_docs/kbn_shared_ux_page_no_data_config.mdx +++ b/api_docs/kbn_shared_ux_page_no_data_config.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-page-no-data-config title: "@kbn/shared-ux-page-no-data-config" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-page-no-data-config plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-page-no-data-config'] --- import kbnSharedUxPageNoDataConfigObj from './kbn_shared_ux_page_no_data_config.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_page_no_data_config_mocks.mdx b/api_docs/kbn_shared_ux_page_no_data_config_mocks.mdx index 7b64db15b7e4d..1518c85556558 100644 --- a/api_docs/kbn_shared_ux_page_no_data_config_mocks.mdx +++ b/api_docs/kbn_shared_ux_page_no_data_config_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-page-no-data-config-mocks title: "@kbn/shared-ux-page-no-data-config-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-page-no-data-config-mocks plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-page-no-data-config-mocks'] --- import kbnSharedUxPageNoDataConfigMocksObj from './kbn_shared_ux_page_no_data_config_mocks.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_page_no_data_mocks.mdx b/api_docs/kbn_shared_ux_page_no_data_mocks.mdx index 8aaf7dbfbbcd8..40f0c12ebd713 100644 --- a/api_docs/kbn_shared_ux_page_no_data_mocks.mdx +++ b/api_docs/kbn_shared_ux_page_no_data_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-page-no-data-mocks title: "@kbn/shared-ux-page-no-data-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-page-no-data-mocks plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-page-no-data-mocks'] --- import kbnSharedUxPageNoDataMocksObj from './kbn_shared_ux_page_no_data_mocks.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_page_solution_nav.mdx b/api_docs/kbn_shared_ux_page_solution_nav.mdx index d9a62df779c56..7d5f0e121b142 100644 --- a/api_docs/kbn_shared_ux_page_solution_nav.mdx +++ b/api_docs/kbn_shared_ux_page_solution_nav.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-page-solution-nav title: "@kbn/shared-ux-page-solution-nav" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-page-solution-nav plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-page-solution-nav'] --- import kbnSharedUxPageSolutionNavObj from './kbn_shared_ux_page_solution_nav.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_prompt_no_data_views.mdx b/api_docs/kbn_shared_ux_prompt_no_data_views.mdx index dc0550e61390e..a849662e843fc 100644 --- a/api_docs/kbn_shared_ux_prompt_no_data_views.mdx +++ b/api_docs/kbn_shared_ux_prompt_no_data_views.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-prompt-no-data-views title: "@kbn/shared-ux-prompt-no-data-views" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-prompt-no-data-views plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-prompt-no-data-views'] --- import kbnSharedUxPromptNoDataViewsObj from './kbn_shared_ux_prompt_no_data_views.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_prompt_no_data_views_mocks.mdx b/api_docs/kbn_shared_ux_prompt_no_data_views_mocks.mdx index 952a4654abb0f..2d921ad311040 100644 --- a/api_docs/kbn_shared_ux_prompt_no_data_views_mocks.mdx +++ b/api_docs/kbn_shared_ux_prompt_no_data_views_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-prompt-no-data-views-mocks title: "@kbn/shared-ux-prompt-no-data-views-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-prompt-no-data-views-mocks plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-prompt-no-data-views-mocks'] --- import kbnSharedUxPromptNoDataViewsMocksObj from './kbn_shared_ux_prompt_no_data_views_mocks.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_prompt_not_found.mdx b/api_docs/kbn_shared_ux_prompt_not_found.mdx index d1756bf5f21dd..dacd9435ac5d7 100644 --- a/api_docs/kbn_shared_ux_prompt_not_found.mdx +++ b/api_docs/kbn_shared_ux_prompt_not_found.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-prompt-not-found title: "@kbn/shared-ux-prompt-not-found" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-prompt-not-found plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-prompt-not-found'] --- import kbnSharedUxPromptNotFoundObj from './kbn_shared_ux_prompt_not_found.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_router.mdx b/api_docs/kbn_shared_ux_router.mdx index 91fbb22653a2b..c274dbb1ac8f7 100644 --- a/api_docs/kbn_shared_ux_router.mdx +++ b/api_docs/kbn_shared_ux_router.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-router title: "@kbn/shared-ux-router" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-router plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-router'] --- import kbnSharedUxRouterObj from './kbn_shared_ux_router.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_router_mocks.mdx b/api_docs/kbn_shared_ux_router_mocks.mdx index 038c858b62a18..ca48894ded99e 100644 --- a/api_docs/kbn_shared_ux_router_mocks.mdx +++ b/api_docs/kbn_shared_ux_router_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-router-mocks title: "@kbn/shared-ux-router-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-router-mocks plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-router-mocks'] --- import kbnSharedUxRouterMocksObj from './kbn_shared_ux_router_mocks.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_storybook_config.mdx b/api_docs/kbn_shared_ux_storybook_config.mdx index faa139d420cd5..ee743c6aad660 100644 --- a/api_docs/kbn_shared_ux_storybook_config.mdx +++ b/api_docs/kbn_shared_ux_storybook_config.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-storybook-config title: "@kbn/shared-ux-storybook-config" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-storybook-config plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-storybook-config'] --- import kbnSharedUxStorybookConfigObj from './kbn_shared_ux_storybook_config.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_storybook_mock.mdx b/api_docs/kbn_shared_ux_storybook_mock.mdx index 7c69caf08a170..fc87540229c6c 100644 --- a/api_docs/kbn_shared_ux_storybook_mock.mdx +++ b/api_docs/kbn_shared_ux_storybook_mock.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-storybook-mock title: "@kbn/shared-ux-storybook-mock" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-storybook-mock plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-storybook-mock'] --- import kbnSharedUxStorybookMockObj from './kbn_shared_ux_storybook_mock.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_utility.mdx b/api_docs/kbn_shared_ux_utility.mdx index e3d7833963460..fb1df1259f13b 100644 --- a/api_docs/kbn_shared_ux_utility.mdx +++ b/api_docs/kbn_shared_ux_utility.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-utility title: "@kbn/shared-ux-utility" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-utility plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-utility'] --- import kbnSharedUxUtilityObj from './kbn_shared_ux_utility.devdocs.json'; diff --git a/api_docs/kbn_slo_schema.devdocs.json b/api_docs/kbn_slo_schema.devdocs.json index 0666cd886ffa9..84ef4fa26f48d 100644 --- a/api_docs/kbn_slo_schema.devdocs.json +++ b/api_docs/kbn_slo_schema.devdocs.json @@ -474,75 +474,6 @@ "trackAdoption": false, "initialIsOpen": false }, - { - "parentPluginId": "@kbn/slo-schema", - "id": "def-common.CreateCompositeSLOInput", - "type": "Type", - "tags": [], - "label": "CreateCompositeSLOInput", - "description": [], - "signature": [ - "{ name: string; timeWindow: { duration: string; type: \"rolling\"; } | { duration: string; type: \"calendarAligned\"; }; budgetingMethod: \"occurrences\" | \"timeslices\"; objective: { target: number; } & { timesliceTarget?: number | undefined; timesliceWindow?: string | undefined; }; compositeMethod: \"weightedAverage\"; sources: { id: string; revision: number; weight: number; }[]; } & { id?: string | undefined; tags?: string[] | undefined; }" - ], - "path": "x-pack/packages/kbn-slo-schema/src/rest_specs/composite_slo.ts", - "deprecated": false, - "trackAdoption": false, - "initialIsOpen": false - }, - { - "parentPluginId": "@kbn/slo-schema", - "id": "def-common.CreateCompositeSLOParams", - "type": "Type", - "tags": [], - "label": "CreateCompositeSLOParams", - "description": [], - "signature": [ - "{ name: string; timeWindow: { duration: ", - { - "pluginId": "@kbn/slo-schema", - "scope": "common", - "docId": "kibKbnSloSchemaPluginApi", - "section": "def-common.Duration", - "text": "Duration" - }, - "; type: \"rolling\"; } | { duration: ", - { - "pluginId": "@kbn/slo-schema", - "scope": "common", - "docId": "kibKbnSloSchemaPluginApi", - "section": "def-common.Duration", - "text": "Duration" - }, - "; type: \"calendarAligned\"; }; budgetingMethod: \"occurrences\" | \"timeslices\"; objective: { target: number; } & { timesliceTarget?: number | undefined; timesliceWindow?: ", - { - "pluginId": "@kbn/slo-schema", - "scope": "common", - "docId": "kibKbnSloSchemaPluginApi", - "section": "def-common.Duration", - "text": "Duration" - }, - " | undefined; }; compositeMethod: \"weightedAverage\"; sources: { id: string; revision: number; weight: number; }[]; } & { id?: string | undefined; tags?: string[] | undefined; }" - ], - "path": "x-pack/packages/kbn-slo-schema/src/rest_specs/composite_slo.ts", - "deprecated": false, - "trackAdoption": false, - "initialIsOpen": false - }, - { - "parentPluginId": "@kbn/slo-schema", - "id": "def-common.CreateCompositeSLOResponse", - "type": "Type", - "tags": [], - "label": "CreateCompositeSLOResponse", - "description": [], - "signature": [ - "{ id: string; }" - ], - "path": "x-pack/packages/kbn-slo-schema/src/rest_specs/composite_slo.ts", - "deprecated": false, - "trackAdoption": false, - "initialIsOpen": false - }, { "parentPluginId": "@kbn/slo-schema", "id": "def-common.CreateSLOInput", @@ -688,36 +619,6 @@ "trackAdoption": false, "initialIsOpen": false }, - { - "parentPluginId": "@kbn/slo-schema", - "id": "def-common.FindCompositeSLOParams", - "type": "Type", - "tags": [], - "label": "FindCompositeSLOParams", - "description": [], - "signature": [ - "{ name?: string | undefined; page?: string | undefined; perPage?: string | undefined; sortBy?: \"creationTime\" | undefined; sortDirection?: \"asc\" | \"desc\" | undefined; }" - ], - "path": "x-pack/packages/kbn-slo-schema/src/rest_specs/composite_slo.ts", - "deprecated": false, - "trackAdoption": false, - "initialIsOpen": false - }, - { - "parentPluginId": "@kbn/slo-schema", - "id": "def-common.FindCompositeSLOResponse", - "type": "Type", - "tags": [], - "label": "FindCompositeSLOResponse", - "description": [], - "signature": [ - "{ page: number; perPage: number; total: number; results: ({ id: string; name: string; timeWindow: { duration: string; type: \"rolling\"; } | { duration: string; type: \"calendarAligned\"; }; budgetingMethod: \"occurrences\" | \"timeslices\"; objective: { target: number; } & { timesliceTarget?: number | undefined; timesliceWindow?: string | undefined; }; compositeMethod: \"weightedAverage\"; sources: { id: string; revision: number; weight: number; }[]; tags: string[]; createdAt: string; updatedAt: string; } & { summary: { status: \"HEALTHY\" | \"NO_DATA\" | \"DEGRADING\" | \"VIOLATED\"; sliValue: number; errorBudget: { initial: number; consumed: number; remaining: number; isEstimated: boolean; }; }; })[]; }" - ], - "path": "x-pack/packages/kbn-slo-schema/src/rest_specs/composite_slo.ts", - "deprecated": false, - "trackAdoption": false, - "initialIsOpen": false - }, { "parentPluginId": "@kbn/slo-schema", "id": "def-common.FindSloDefinitionsResponse", @@ -767,21 +668,6 @@ "trackAdoption": false, "initialIsOpen": false }, - { - "parentPluginId": "@kbn/slo-schema", - "id": "def-common.GetCompositeSLOResponse", - "type": "Type", - "tags": [], - "label": "GetCompositeSLOResponse", - "description": [], - "signature": [ - "{ id: string; name: string; timeWindow: { duration: string; type: \"rolling\"; } | { duration: string; type: \"calendarAligned\"; }; budgetingMethod: \"occurrences\" | \"timeslices\"; objective: { target: number; } & { timesliceTarget?: number | undefined; timesliceWindow?: string | undefined; }; compositeMethod: \"weightedAverage\"; sources: { id: string; revision: number; weight: number; }[]; tags: string[]; createdAt: string; updatedAt: string; } & { summary: { status: \"HEALTHY\" | \"NO_DATA\" | \"DEGRADING\" | \"VIOLATED\"; sliValue: number; errorBudget: { initial: number; consumed: number; remaining: number; isEstimated: boolean; }; }; }" - ], - "path": "x-pack/packages/kbn-slo-schema/src/rest_specs/composite_slo.ts", - "deprecated": false, - "trackAdoption": false, - "initialIsOpen": false - }, { "parentPluginId": "@kbn/slo-schema", "id": "def-common.GetPreviewDataParams", @@ -1022,75 +908,6 @@ "trackAdoption": false, "initialIsOpen": false }, - { - "parentPluginId": "@kbn/slo-schema", - "id": "def-common.UpdateCompositeSLOInput", - "type": "Type", - "tags": [], - "label": "UpdateCompositeSLOInput", - "description": [], - "signature": [ - "{ name?: string | undefined; compositeMethod?: \"weightedAverage\" | undefined; sources?: { id: string; revision: number; weight: number; }[] | undefined; timeWindow?: { duration: string; type: \"rolling\"; } | { duration: string; type: \"calendarAligned\"; } | undefined; budgetingMethod?: \"occurrences\" | \"timeslices\" | undefined; objective?: ({ target: number; } & { timesliceTarget?: number | undefined; timesliceWindow?: string | undefined; }) | undefined; tags?: string[] | undefined; }" - ], - "path": "x-pack/packages/kbn-slo-schema/src/rest_specs/composite_slo.ts", - "deprecated": false, - "trackAdoption": false, - "initialIsOpen": false - }, - { - "parentPluginId": "@kbn/slo-schema", - "id": "def-common.UpdateCompositeSLOParams", - "type": "Type", - "tags": [], - "label": "UpdateCompositeSLOParams", - "description": [], - "signature": [ - "{ name?: string | undefined; compositeMethod?: \"weightedAverage\" | undefined; sources?: { id: string; revision: number; weight: number; }[] | undefined; timeWindow?: { duration: ", - { - "pluginId": "@kbn/slo-schema", - "scope": "common", - "docId": "kibKbnSloSchemaPluginApi", - "section": "def-common.Duration", - "text": "Duration" - }, - "; type: \"rolling\"; } | { duration: ", - { - "pluginId": "@kbn/slo-schema", - "scope": "common", - "docId": "kibKbnSloSchemaPluginApi", - "section": "def-common.Duration", - "text": "Duration" - }, - "; type: \"calendarAligned\"; } | undefined; budgetingMethod?: \"occurrences\" | \"timeslices\" | undefined; objective?: ({ target: number; } & { timesliceTarget?: number | undefined; timesliceWindow?: ", - { - "pluginId": "@kbn/slo-schema", - "scope": "common", - "docId": "kibKbnSloSchemaPluginApi", - "section": "def-common.Duration", - "text": "Duration" - }, - " | undefined; }) | undefined; tags?: string[] | undefined; }" - ], - "path": "x-pack/packages/kbn-slo-schema/src/rest_specs/composite_slo.ts", - "deprecated": false, - "trackAdoption": false, - "initialIsOpen": false - }, - { - "parentPluginId": "@kbn/slo-schema", - "id": "def-common.UpdateCompositeSLOResponse", - "type": "Type", - "tags": [], - "label": "UpdateCompositeSLOResponse", - "description": [], - "signature": [ - "{ id: string; name: string; timeWindow: { duration: string; type: \"rolling\"; } | { duration: string; type: \"calendarAligned\"; }; budgetingMethod: \"occurrences\" | \"timeslices\"; objective: { target: number; } & { timesliceTarget?: number | undefined; timesliceWindow?: string | undefined; }; compositeMethod: \"weightedAverage\"; sources: { id: string; revision: number; weight: number; }[]; tags: string[]; createdAt: string; updatedAt: string; }" - ], - "path": "x-pack/packages/kbn-slo-schema/src/rest_specs/composite_slo.ts", - "deprecated": false, - "trackAdoption": false, - "initialIsOpen": false - }, { "parentPluginId": "@kbn/slo-schema", "id": "def-common.UpdateSLOInput", @@ -1402,381 +1219,76 @@ }, { "parentPluginId": "@kbn/slo-schema", - "id": "def-common.compositeSloIdSchema", - "type": "Object", - "tags": [], - "label": "compositeSloIdSchema", - "description": [], - "signature": [ - "StringC" - ], - "path": "x-pack/packages/kbn-slo-schema/src/schema/composite_slo.ts", - "deprecated": false, - "trackAdoption": false, - "initialIsOpen": false - }, - { - "parentPluginId": "@kbn/slo-schema", - "id": "def-common.compositeSLOResponseSchema", + "id": "def-common.createSLOParamsSchema", "type": "Object", "tags": [], - "label": "compositeSLOResponseSchema", + "label": "createSLOParamsSchema", "description": [], "signature": [ "TypeC", - "<{ id: ", + "<{ body: ", + "IntersectionC", + "<[", + "TypeC", + "<{ name: ", "StringC", - "; name: ", + "; description: ", "StringC", - "; timeWindow: ", + "; indicator: ", "UnionC", "<[", "TypeC", - "<{ duration: ", - "Type", - "<", - { - "pluginId": "@kbn/slo-schema", - "scope": "common", - "docId": "kibKbnSloSchemaPluginApi", - "section": "def-common.Duration", - "text": "Duration" - }, - ", string, unknown>; type: ", + "<{ type: ", "LiteralC", - "<\"rolling\">; }>, ", + "<\"sli.apm.transactionDuration\">; params: ", + "IntersectionC", + "<[", "TypeC", - "<{ duration: ", - "Type", - "<", - { - "pluginId": "@kbn/slo-schema", - "scope": "common", - "docId": "kibKbnSloSchemaPluginApi", - "section": "def-common.Duration", - "text": "Duration" - }, - ", string, unknown>; type: ", + "<{ environment: ", + "UnionC", + "<[", "LiteralC", - "<\"calendarAligned\">; }>]>; budgetingMethod: ", + "<\"*\">, ", + "StringC", + "]>; service: ", "UnionC", "<[", "LiteralC", - "<\"occurrences\">, ", + "<\"*\">, ", + "StringC", + "]>; transactionType: ", + "UnionC", + "<[", "LiteralC", - "<\"timeslices\">]>; objective: ", - "IntersectionC", + "<\"*\">, ", + "StringC", + "]>; transactionName: ", + "UnionC", "<[", - "TypeC", - "<{ target: ", + "LiteralC", + "<\"*\">, ", + "StringC", + "]>; threshold: ", "NumberC", + "; index: ", + "StringC", "; }>, ", "PartialC", - "<{ timesliceTarget: ", - "NumberC", - "; timesliceWindow: ", - "Type", - "<", - { - "pluginId": "@kbn/slo-schema", - "scope": "common", - "docId": "kibKbnSloSchemaPluginApi", - "section": "def-common.Duration", - "text": "Duration" - }, - ", string, unknown>; }>]>; compositeMethod: ", + "<{ filter: ", + "StringC", + "; }>]>; }>, ", + "TypeC", + "<{ type: ", "LiteralC", - "<\"weightedAverage\">; sources: ", - "ArrayC", - "<", + "<\"sli.apm.transactionErrorRate\">; params: ", + "IntersectionC", + "<[", "TypeC", - "<{ id: ", - "StringC", - "; revision: ", - "NumberC", - "; weight: ", - "NumberC", - "; }>>; tags: ", - "ArrayC", - "<", - "StringC", - ">; createdAt: ", - "Type", - "; updatedAt: ", - "Type", - "; }>" - ], - "path": "x-pack/packages/kbn-slo-schema/src/rest_specs/composite_slo.ts", - "deprecated": false, - "trackAdoption": false, - "initialIsOpen": false - }, - { - "parentPluginId": "@kbn/slo-schema", - "id": "def-common.compositeSloSchema", - "type": "Object", - "tags": [], - "label": "compositeSloSchema", - "description": [], - "signature": [ - "TypeC", - "<{ id: ", - "StringC", - "; name: ", - "StringC", - "; timeWindow: ", - "UnionC", - "<[", - "TypeC", - "<{ duration: ", - "Type", - "<", - { - "pluginId": "@kbn/slo-schema", - "scope": "common", - "docId": "kibKbnSloSchemaPluginApi", - "section": "def-common.Duration", - "text": "Duration" - }, - ", string, unknown>; type: ", - "LiteralC", - "<\"rolling\">; }>, ", - "TypeC", - "<{ duration: ", - "Type", - "<", - { - "pluginId": "@kbn/slo-schema", - "scope": "common", - "docId": "kibKbnSloSchemaPluginApi", - "section": "def-common.Duration", - "text": "Duration" - }, - ", string, unknown>; type: ", - "LiteralC", - "<\"calendarAligned\">; }>]>; budgetingMethod: ", - "UnionC", - "<[", - "LiteralC", - "<\"occurrences\">, ", - "LiteralC", - "<\"timeslices\">]>; compositeMethod: ", - "LiteralC", - "<\"weightedAverage\">; objective: ", - "IntersectionC", - "<[", - "TypeC", - "<{ target: ", - "NumberC", - "; }>, ", - "PartialC", - "<{ timesliceTarget: ", - "NumberC", - "; timesliceWindow: ", - "Type", - "<", - { - "pluginId": "@kbn/slo-schema", - "scope": "common", - "docId": "kibKbnSloSchemaPluginApi", - "section": "def-common.Duration", - "text": "Duration" - }, - ", string, unknown>; }>]>; sources: ", - "ArrayC", - "<", - "TypeC", - "<{ id: ", - "StringC", - "; revision: ", - "NumberC", - "; weight: ", - "NumberC", - "; }>>; tags: ", - "ArrayC", - "<", - "StringC", - ">; createdAt: ", - "Type", - "; updatedAt: ", - "Type", - "; }>" - ], - "path": "x-pack/packages/kbn-slo-schema/src/schema/composite_slo.ts", - "deprecated": false, - "trackAdoption": false, - "initialIsOpen": false - }, - { - "parentPluginId": "@kbn/slo-schema", - "id": "def-common.createCompositeSLOParamsSchema", - "type": "Object", - "tags": [], - "label": "createCompositeSLOParamsSchema", - "description": [], - "signature": [ - "TypeC", - "<{ body: ", - "IntersectionC", - "<[", - "TypeC", - "<{ name: ", - "StringC", - "; timeWindow: ", - "UnionC", - "<[", - "TypeC", - "<{ duration: ", - "Type", - "<", - { - "pluginId": "@kbn/slo-schema", - "scope": "common", - "docId": "kibKbnSloSchemaPluginApi", - "section": "def-common.Duration", - "text": "Duration" - }, - ", string, unknown>; type: ", - "LiteralC", - "<\"rolling\">; }>, ", - "TypeC", - "<{ duration: ", - "Type", - "<", - { - "pluginId": "@kbn/slo-schema", - "scope": "common", - "docId": "kibKbnSloSchemaPluginApi", - "section": "def-common.Duration", - "text": "Duration" - }, - ", string, unknown>; type: ", - "LiteralC", - "<\"calendarAligned\">; }>]>; budgetingMethod: ", - "UnionC", - "<[", - "LiteralC", - "<\"occurrences\">, ", - "LiteralC", - "<\"timeslices\">]>; objective: ", - "IntersectionC", - "<[", - "TypeC", - "<{ target: ", - "NumberC", - "; }>, ", - "PartialC", - "<{ timesliceTarget: ", - "NumberC", - "; timesliceWindow: ", - "Type", - "<", - { - "pluginId": "@kbn/slo-schema", - "scope": "common", - "docId": "kibKbnSloSchemaPluginApi", - "section": "def-common.Duration", - "text": "Duration" - }, - ", string, unknown>; }>]>; compositeMethod: ", - "LiteralC", - "<\"weightedAverage\">; sources: ", - "ArrayC", - "<", - "TypeC", - "<{ id: ", - "StringC", - "; revision: ", - "NumberC", - "; weight: ", - "NumberC", - "; }>>; }>, ", - "PartialC", - "<{ id: ", - "StringC", - "; tags: ", - "ArrayC", - "<", - "StringC", - ">; }>]>; }>" - ], - "path": "x-pack/packages/kbn-slo-schema/src/rest_specs/composite_slo.ts", - "deprecated": false, - "trackAdoption": false, - "initialIsOpen": false - }, - { - "parentPluginId": "@kbn/slo-schema", - "id": "def-common.createSLOParamsSchema", - "type": "Object", - "tags": [], - "label": "createSLOParamsSchema", - "description": [], - "signature": [ - "TypeC", - "<{ body: ", - "IntersectionC", - "<[", - "TypeC", - "<{ name: ", - "StringC", - "; description: ", - "StringC", - "; indicator: ", - "UnionC", - "<[", - "TypeC", - "<{ type: ", - "LiteralC", - "<\"sli.apm.transactionDuration\">; params: ", - "IntersectionC", - "<[", - "TypeC", - "<{ environment: ", - "UnionC", - "<[", - "LiteralC", - "<\"*\">, ", - "StringC", - "]>; service: ", - "UnionC", - "<[", - "LiteralC", - "<\"*\">, ", - "StringC", - "]>; transactionType: ", - "UnionC", - "<[", - "LiteralC", - "<\"*\">, ", - "StringC", - "]>; transactionName: ", - "UnionC", - "<[", - "LiteralC", - "<\"*\">, ", - "StringC", - "]>; threshold: ", - "NumberC", - "; index: ", - "StringC", - "; }>, ", - "PartialC", - "<{ filter: ", - "StringC", - "; }>]>; }>, ", - "TypeC", - "<{ type: ", - "LiteralC", - "<\"sli.apm.transactionErrorRate\">; params: ", - "IntersectionC", - "<[", - "TypeC", - "<{ environment: ", - "UnionC", - "<[", - "LiteralC", - "<\"*\">, ", + "<{ environment: ", + "UnionC", + "<[", + "LiteralC", + "<\"*\">, ", "StringC", "]>; service: ", "UnionC", @@ -2089,26 +1601,6 @@ "trackAdoption": false, "initialIsOpen": false }, - { - "parentPluginId": "@kbn/slo-schema", - "id": "def-common.deleteCompositeSLOParamsSchema", - "type": "Object", - "tags": [], - "label": "deleteCompositeSLOParamsSchema", - "description": [], - "signature": [ - "TypeC", - "<{ path: ", - "TypeC", - "<{ id: ", - "StringC", - "; }>; }>" - ], - "path": "x-pack/packages/kbn-slo-schema/src/rest_specs/composite_slo.ts", - "deprecated": false, - "trackAdoption": false, - "initialIsOpen": false - }, { "parentPluginId": "@kbn/slo-schema", "id": "def-common.deleteSLOInstancesParamsSchema", @@ -2228,206 +1720,40 @@ "StringC", "]>; }>>; }>; }>" ], - "path": "x-pack/packages/kbn-slo-schema/src/rest_specs/slo.ts", - "deprecated": false, - "trackAdoption": false, - "initialIsOpen": false - }, - { - "parentPluginId": "@kbn/slo-schema", - "id": "def-common.fetchHistoricalSummaryResponseSchema", - "type": "Object", - "tags": [], - "label": "fetchHistoricalSummaryResponseSchema", - "description": [], - "signature": [ - "ArrayC", - "<", - "TypeC", - "<{ sloId: ", - "StringC", - "; instanceId: ", - "UnionC", - "<[", - "LiteralC", - "<\"*\">, ", - "StringC", - "]>; data: ", - "ArrayC", - "<", - "IntersectionC", - "<[", - "TypeC", - "<{ date: ", - "Type", - "; }>, ", - "TypeC", - "<{ status: ", - "UnionC", - "<[", - "LiteralC", - "<\"NO_DATA\">, ", - "LiteralC", - "<\"HEALTHY\">, ", - "LiteralC", - "<\"DEGRADING\">, ", - "LiteralC", - "<\"VIOLATED\">]>; sliValue: ", - "NumberC", - "; errorBudget: ", - "TypeC", - "<{ initial: ", - "NumberC", - "; consumed: ", - "NumberC", - "; remaining: ", - "NumberC", - "; isEstimated: ", - "BooleanC", - "; }>; }>]>>; }>>" - ], - "path": "x-pack/packages/kbn-slo-schema/src/rest_specs/slo.ts", - "deprecated": false, - "trackAdoption": false, - "initialIsOpen": false - }, - { - "parentPluginId": "@kbn/slo-schema", - "id": "def-common.findCompositeSLOParamsSchema", - "type": "Object", - "tags": [], - "label": "findCompositeSLOParamsSchema", - "description": [], - "signature": [ - "PartialC", - "<{ query: ", - "PartialC", - "<{ name: ", - "StringC", - "; page: ", - "StringC", - "; perPage: ", - "StringC", - "; sortBy: ", - "LiteralC", - "<\"creationTime\">; sortDirection: ", - "UnionC", - "<[", - "LiteralC", - "<\"asc\">, ", - "LiteralC", - "<\"desc\">]>; }>; }>" - ], - "path": "x-pack/packages/kbn-slo-schema/src/rest_specs/composite_slo.ts", - "deprecated": false, - "trackAdoption": false, - "initialIsOpen": false - }, - { - "parentPluginId": "@kbn/slo-schema", - "id": "def-common.findCompositeSLOResponseSchema", - "type": "Object", - "tags": [], - "label": "findCompositeSLOResponseSchema", - "description": [], - "signature": [ - "TypeC", - "<{ page: ", - "NumberC", - "; perPage: ", - "NumberC", - "; total: ", - "NumberC", - "; results: ", - "ArrayC", - "<", - "IntersectionC", - "<[", - "TypeC", - "<{ id: ", - "StringC", - "; name: ", - "StringC", - "; timeWindow: ", - "UnionC", - "<[", - "TypeC", - "<{ duration: ", - "Type", - "<", - { - "pluginId": "@kbn/slo-schema", - "scope": "common", - "docId": "kibKbnSloSchemaPluginApi", - "section": "def-common.Duration", - "text": "Duration" - }, - ", string, unknown>; type: ", - "LiteralC", - "<\"rolling\">; }>, ", - "TypeC", - "<{ duration: ", - "Type", - "<", - { - "pluginId": "@kbn/slo-schema", - "scope": "common", - "docId": "kibKbnSloSchemaPluginApi", - "section": "def-common.Duration", - "text": "Duration" - }, - ", string, unknown>; type: ", - "LiteralC", - "<\"calendarAligned\">; }>]>; budgetingMethod: ", - "UnionC", - "<[", - "LiteralC", - "<\"occurrences\">, ", - "LiteralC", - "<\"timeslices\">]>; objective: ", - "IntersectionC", - "<[", - "TypeC", - "<{ target: ", - "NumberC", - "; }>, ", - "PartialC", - "<{ timesliceTarget: ", - "NumberC", - "; timesliceWindow: ", - "Type", - "<", - { - "pluginId": "@kbn/slo-schema", - "scope": "common", - "docId": "kibKbnSloSchemaPluginApi", - "section": "def-common.Duration", - "text": "Duration" - }, - ", string, unknown>; }>]>; compositeMethod: ", - "LiteralC", - "<\"weightedAverage\">; sources: ", + "path": "x-pack/packages/kbn-slo-schema/src/rest_specs/slo.ts", + "deprecated": false, + "trackAdoption": false, + "initialIsOpen": false + }, + { + "parentPluginId": "@kbn/slo-schema", + "id": "def-common.fetchHistoricalSummaryResponseSchema", + "type": "Object", + "tags": [], + "label": "fetchHistoricalSummaryResponseSchema", + "description": [], + "signature": [ "ArrayC", "<", "TypeC", - "<{ id: ", + "<{ sloId: ", "StringC", - "; revision: ", - "NumberC", - "; weight: ", - "NumberC", - "; }>>; tags: ", + "; instanceId: ", + "UnionC", + "<[", + "LiteralC", + "<\"*\">, ", + "StringC", + "]>; data: ", "ArrayC", "<", - "StringC", - ">; createdAt: ", - "Type", - "; updatedAt: ", + "IntersectionC", + "<[", + "TypeC", + "<{ date: ", "Type", "; }>, ", "TypeC", - "<{ summary: ", - "TypeC", "<{ status: ", "UnionC", "<[", @@ -2450,9 +1776,9 @@ "NumberC", "; isEstimated: ", "BooleanC", - "; }>; }>; }>]>>; }>" + "; }>; }>]>>; }>>" ], - "path": "x-pack/packages/kbn-slo-schema/src/rest_specs/composite_slo.ts", + "path": "x-pack/packages/kbn-slo-schema/src/rest_specs/slo.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -3285,26 +2611,6 @@ "trackAdoption": false, "initialIsOpen": false }, - { - "parentPluginId": "@kbn/slo-schema", - "id": "def-common.getCompositeSLOParamsSchema", - "type": "Object", - "tags": [], - "label": "getCompositeSLOParamsSchema", - "description": [], - "signature": [ - "TypeC", - "<{ path: ", - "TypeC", - "<{ id: ", - "StringC", - "; }>; }>" - ], - "path": "x-pack/packages/kbn-slo-schema/src/rest_specs/composite_slo.ts", - "deprecated": false, - "trackAdoption": false, - "initialIsOpen": false - }, { "parentPluginId": "@kbn/slo-schema", "id": "def-common.getPreviewDataParamsSchema", @@ -6584,198 +5890,6 @@ "trackAdoption": false, "initialIsOpen": false }, - { - "parentPluginId": "@kbn/slo-schema", - "id": "def-common.updateCompositeSLOParamsSchema", - "type": "Object", - "tags": [], - "label": "updateCompositeSLOParamsSchema", - "description": [], - "signature": [ - "TypeC", - "<{ path: ", - "TypeC", - "<{ id: ", - "StringC", - "; }>; body: ", - "PartialC", - "<{ name: ", - "StringC", - "; compositeMethod: ", - "LiteralC", - "<\"weightedAverage\">; sources: ", - "ArrayC", - "<", - "TypeC", - "<{ id: ", - "StringC", - "; revision: ", - "NumberC", - "; weight: ", - "NumberC", - "; }>>; timeWindow: ", - "UnionC", - "<[", - "TypeC", - "<{ duration: ", - "Type", - "<", - { - "pluginId": "@kbn/slo-schema", - "scope": "common", - "docId": "kibKbnSloSchemaPluginApi", - "section": "def-common.Duration", - "text": "Duration" - }, - ", string, unknown>; type: ", - "LiteralC", - "<\"rolling\">; }>, ", - "TypeC", - "<{ duration: ", - "Type", - "<", - { - "pluginId": "@kbn/slo-schema", - "scope": "common", - "docId": "kibKbnSloSchemaPluginApi", - "section": "def-common.Duration", - "text": "Duration" - }, - ", string, unknown>; type: ", - "LiteralC", - "<\"calendarAligned\">; }>]>; budgetingMethod: ", - "UnionC", - "<[", - "LiteralC", - "<\"occurrences\">, ", - "LiteralC", - "<\"timeslices\">]>; objective: ", - "IntersectionC", - "<[", - "TypeC", - "<{ target: ", - "NumberC", - "; }>, ", - "PartialC", - "<{ timesliceTarget: ", - "NumberC", - "; timesliceWindow: ", - "Type", - "<", - { - "pluginId": "@kbn/slo-schema", - "scope": "common", - "docId": "kibKbnSloSchemaPluginApi", - "section": "def-common.Duration", - "text": "Duration" - }, - ", string, unknown>; }>]>; tags: ", - "ArrayC", - "<", - "StringC", - ">; }>; }>" - ], - "path": "x-pack/packages/kbn-slo-schema/src/rest_specs/composite_slo.ts", - "deprecated": false, - "trackAdoption": false, - "initialIsOpen": false - }, - { - "parentPluginId": "@kbn/slo-schema", - "id": "def-common.updateCompositeSLOResponseSchema", - "type": "Object", - "tags": [], - "label": "updateCompositeSLOResponseSchema", - "description": [], - "signature": [ - "TypeC", - "<{ id: ", - "StringC", - "; name: ", - "StringC", - "; timeWindow: ", - "UnionC", - "<[", - "TypeC", - "<{ duration: ", - "Type", - "<", - { - "pluginId": "@kbn/slo-schema", - "scope": "common", - "docId": "kibKbnSloSchemaPluginApi", - "section": "def-common.Duration", - "text": "Duration" - }, - ", string, unknown>; type: ", - "LiteralC", - "<\"rolling\">; }>, ", - "TypeC", - "<{ duration: ", - "Type", - "<", - { - "pluginId": "@kbn/slo-schema", - "scope": "common", - "docId": "kibKbnSloSchemaPluginApi", - "section": "def-common.Duration", - "text": "Duration" - }, - ", string, unknown>; type: ", - "LiteralC", - "<\"calendarAligned\">; }>]>; budgetingMethod: ", - "UnionC", - "<[", - "LiteralC", - "<\"occurrences\">, ", - "LiteralC", - "<\"timeslices\">]>; objective: ", - "IntersectionC", - "<[", - "TypeC", - "<{ target: ", - "NumberC", - "; }>, ", - "PartialC", - "<{ timesliceTarget: ", - "NumberC", - "; timesliceWindow: ", - "Type", - "<", - { - "pluginId": "@kbn/slo-schema", - "scope": "common", - "docId": "kibKbnSloSchemaPluginApi", - "section": "def-common.Duration", - "text": "Duration" - }, - ", string, unknown>; }>]>; compositeMethod: ", - "LiteralC", - "<\"weightedAverage\">; sources: ", - "ArrayC", - "<", - "TypeC", - "<{ id: ", - "StringC", - "; revision: ", - "NumberC", - "; weight: ", - "NumberC", - "; }>>; tags: ", - "ArrayC", - "<", - "StringC", - ">; createdAt: ", - "Type", - "; updatedAt: ", - "Type", - "; }>" - ], - "path": "x-pack/packages/kbn-slo-schema/src/rest_specs/composite_slo.ts", - "deprecated": false, - "trackAdoption": false, - "initialIsOpen": false - }, { "parentPluginId": "@kbn/slo-schema", "id": "def-common.updateSLOParamsSchema", @@ -7481,44 +6595,6 @@ "deprecated": false, "trackAdoption": false, "initialIsOpen": false - }, - { - "parentPluginId": "@kbn/slo-schema", - "id": "def-common.weightedAverageCompositeMethodSchema", - "type": "Object", - "tags": [], - "label": "weightedAverageCompositeMethodSchema", - "description": [], - "signature": [ - "LiteralC", - "<\"weightedAverage\">" - ], - "path": "x-pack/packages/kbn-slo-schema/src/schema/composite_slo.ts", - "deprecated": false, - "trackAdoption": false, - "initialIsOpen": false - }, - { - "parentPluginId": "@kbn/slo-schema", - "id": "def-common.weightedAverageSourceSchema", - "type": "Object", - "tags": [], - "label": "weightedAverageSourceSchema", - "description": [], - "signature": [ - "TypeC", - "<{ id: ", - "StringC", - "; revision: ", - "NumberC", - "; weight: ", - "NumberC", - "; }>" - ], - "path": "x-pack/packages/kbn-slo-schema/src/schema/composite_slo.ts", - "deprecated": false, - "trackAdoption": false, - "initialIsOpen": false } ] } diff --git a/api_docs/kbn_slo_schema.mdx b/api_docs/kbn_slo_schema.mdx index 663784b09c593..258c917cf6a09 100644 --- a/api_docs/kbn_slo_schema.mdx +++ b/api_docs/kbn_slo_schema.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-slo-schema title: "@kbn/slo-schema" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/slo-schema plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/slo-schema'] --- import kbnSloSchemaObj from './kbn_slo_schema.devdocs.json'; @@ -21,7 +21,7 @@ Contact [@elastic/actionable-observability](https://github.com/orgs/elastic/team | Public API count | Any count | Items lacking comments | Missing exports | |-------------------|-----------|------------------------|-----------------| -| 135 | 0 | 132 | 0 | +| 114 | 0 | 111 | 0 | ## Common diff --git a/api_docs/kbn_some_dev_log.mdx b/api_docs/kbn_some_dev_log.mdx index a3b8882176c69..2a61149df0bba 100644 --- a/api_docs/kbn_some_dev_log.mdx +++ b/api_docs/kbn_some_dev_log.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-some-dev-log title: "@kbn/some-dev-log" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/some-dev-log plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/some-dev-log'] --- import kbnSomeDevLogObj from './kbn_some_dev_log.devdocs.json'; diff --git a/api_docs/kbn_std.mdx b/api_docs/kbn_std.mdx index a02aac657ff06..9f219fdb4c67a 100644 --- a/api_docs/kbn_std.mdx +++ b/api_docs/kbn_std.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-std title: "@kbn/std" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/std plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/std'] --- import kbnStdObj from './kbn_std.devdocs.json'; diff --git a/api_docs/kbn_stdio_dev_helpers.mdx b/api_docs/kbn_stdio_dev_helpers.mdx index 6064036234f28..8686f2d3e9e69 100644 --- a/api_docs/kbn_stdio_dev_helpers.mdx +++ b/api_docs/kbn_stdio_dev_helpers.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-stdio-dev-helpers title: "@kbn/stdio-dev-helpers" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/stdio-dev-helpers plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/stdio-dev-helpers'] --- import kbnStdioDevHelpersObj from './kbn_stdio_dev_helpers.devdocs.json'; diff --git a/api_docs/kbn_storybook.mdx b/api_docs/kbn_storybook.mdx index 2746e31e5ae0b..e148589d79251 100644 --- a/api_docs/kbn_storybook.mdx +++ b/api_docs/kbn_storybook.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-storybook title: "@kbn/storybook" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/storybook plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/storybook'] --- import kbnStorybookObj from './kbn_storybook.devdocs.json'; diff --git a/api_docs/kbn_subscription_tracking.mdx b/api_docs/kbn_subscription_tracking.mdx index fc1df3c28ab2b..114448356e0f2 100644 --- a/api_docs/kbn_subscription_tracking.mdx +++ b/api_docs/kbn_subscription_tracking.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-subscription-tracking title: "@kbn/subscription-tracking" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/subscription-tracking plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/subscription-tracking'] --- import kbnSubscriptionTrackingObj from './kbn_subscription_tracking.devdocs.json'; diff --git a/api_docs/kbn_telemetry_tools.mdx b/api_docs/kbn_telemetry_tools.mdx index 80bb2a0ac7e3d..ae4aa3929b621 100644 --- a/api_docs/kbn_telemetry_tools.mdx +++ b/api_docs/kbn_telemetry_tools.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-telemetry-tools title: "@kbn/telemetry-tools" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/telemetry-tools plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/telemetry-tools'] --- import kbnTelemetryToolsObj from './kbn_telemetry_tools.devdocs.json'; diff --git a/api_docs/kbn_test.mdx b/api_docs/kbn_test.mdx index 0d4709dd82849..da2a1a3342c3d 100644 --- a/api_docs/kbn_test.mdx +++ b/api_docs/kbn_test.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-test title: "@kbn/test" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/test plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/test'] --- import kbnTestObj from './kbn_test.devdocs.json'; diff --git a/api_docs/kbn_test_jest_helpers.mdx b/api_docs/kbn_test_jest_helpers.mdx index 8e92fe5b15c52..83ee884a01f2d 100644 --- a/api_docs/kbn_test_jest_helpers.mdx +++ b/api_docs/kbn_test_jest_helpers.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-test-jest-helpers title: "@kbn/test-jest-helpers" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/test-jest-helpers plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/test-jest-helpers'] --- import kbnTestJestHelpersObj from './kbn_test_jest_helpers.devdocs.json'; diff --git a/api_docs/kbn_test_subj_selector.mdx b/api_docs/kbn_test_subj_selector.mdx index 6fe10e8401012..45ae84cf12400 100644 --- a/api_docs/kbn_test_subj_selector.mdx +++ b/api_docs/kbn_test_subj_selector.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-test-subj-selector title: "@kbn/test-subj-selector" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/test-subj-selector plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/test-subj-selector'] --- import kbnTestSubjSelectorObj from './kbn_test_subj_selector.devdocs.json'; diff --git a/api_docs/kbn_text_based_editor.mdx b/api_docs/kbn_text_based_editor.mdx index 0860d723e700b..5981dffbbddd0 100644 --- a/api_docs/kbn_text_based_editor.mdx +++ b/api_docs/kbn_text_based_editor.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-text-based-editor title: "@kbn/text-based-editor" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/text-based-editor plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/text-based-editor'] --- import kbnTextBasedEditorObj from './kbn_text_based_editor.devdocs.json'; diff --git a/api_docs/kbn_tooling_log.mdx b/api_docs/kbn_tooling_log.mdx index ae59e6ec72d5a..79bc51cba4f1a 100644 --- a/api_docs/kbn_tooling_log.mdx +++ b/api_docs/kbn_tooling_log.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-tooling-log title: "@kbn/tooling-log" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/tooling-log plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/tooling-log'] --- import kbnToolingLogObj from './kbn_tooling_log.devdocs.json'; diff --git a/api_docs/kbn_ts_projects.mdx b/api_docs/kbn_ts_projects.mdx index eaef648842edd..e1d5797a811df 100644 --- a/api_docs/kbn_ts_projects.mdx +++ b/api_docs/kbn_ts_projects.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ts-projects title: "@kbn/ts-projects" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ts-projects plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ts-projects'] --- import kbnTsProjectsObj from './kbn_ts_projects.devdocs.json'; diff --git a/api_docs/kbn_typed_react_router_config.mdx b/api_docs/kbn_typed_react_router_config.mdx index c86a50c136500..884b0cc4402f5 100644 --- a/api_docs/kbn_typed_react_router_config.mdx +++ b/api_docs/kbn_typed_react_router_config.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-typed-react-router-config title: "@kbn/typed-react-router-config" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/typed-react-router-config plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/typed-react-router-config'] --- import kbnTypedReactRouterConfigObj from './kbn_typed_react_router_config.devdocs.json'; diff --git a/api_docs/kbn_ui_actions_browser.mdx b/api_docs/kbn_ui_actions_browser.mdx index bc56fbcbd18f9..433e55eb0f23f 100644 --- a/api_docs/kbn_ui_actions_browser.mdx +++ b/api_docs/kbn_ui_actions_browser.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ui-actions-browser title: "@kbn/ui-actions-browser" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ui-actions-browser plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ui-actions-browser'] --- import kbnUiActionsBrowserObj from './kbn_ui_actions_browser.devdocs.json'; diff --git a/api_docs/kbn_ui_shared_deps_src.mdx b/api_docs/kbn_ui_shared_deps_src.mdx index f00b394f320e6..ed1f37e3fea3c 100644 --- a/api_docs/kbn_ui_shared_deps_src.mdx +++ b/api_docs/kbn_ui_shared_deps_src.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ui-shared-deps-src title: "@kbn/ui-shared-deps-src" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ui-shared-deps-src plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ui-shared-deps-src'] --- import kbnUiSharedDepsSrcObj from './kbn_ui_shared_deps_src.devdocs.json'; diff --git a/api_docs/kbn_ui_theme.mdx b/api_docs/kbn_ui_theme.mdx index ad93fb0fc29f0..c26a0ad99d20e 100644 --- a/api_docs/kbn_ui_theme.mdx +++ b/api_docs/kbn_ui_theme.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ui-theme title: "@kbn/ui-theme" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ui-theme plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ui-theme'] --- import kbnUiThemeObj from './kbn_ui_theme.devdocs.json'; diff --git a/api_docs/kbn_unified_data_table.mdx b/api_docs/kbn_unified_data_table.mdx index 6c973b652d9e8..fe64949cd9b01 100644 --- a/api_docs/kbn_unified_data_table.mdx +++ b/api_docs/kbn_unified_data_table.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-unified-data-table title: "@kbn/unified-data-table" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/unified-data-table plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/unified-data-table'] --- import kbnUnifiedDataTableObj from './kbn_unified_data_table.devdocs.json'; diff --git a/api_docs/kbn_unified_doc_viewer.mdx b/api_docs/kbn_unified_doc_viewer.mdx index 0f62e52feb7a5..b37f3d12f5a32 100644 --- a/api_docs/kbn_unified_doc_viewer.mdx +++ b/api_docs/kbn_unified_doc_viewer.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-unified-doc-viewer title: "@kbn/unified-doc-viewer" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/unified-doc-viewer plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/unified-doc-viewer'] --- import kbnUnifiedDocViewerObj from './kbn_unified_doc_viewer.devdocs.json'; diff --git a/api_docs/kbn_unified_field_list.mdx b/api_docs/kbn_unified_field_list.mdx index 4bc684c6d6f68..187abf6fad77b 100644 --- a/api_docs/kbn_unified_field_list.mdx +++ b/api_docs/kbn_unified_field_list.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-unified-field-list title: "@kbn/unified-field-list" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/unified-field-list plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/unified-field-list'] --- import kbnUnifiedFieldListObj from './kbn_unified_field_list.devdocs.json'; diff --git a/api_docs/kbn_url_state.mdx b/api_docs/kbn_url_state.mdx index c6d4e5accc08f..b9c0f840f66d2 100644 --- a/api_docs/kbn_url_state.mdx +++ b/api_docs/kbn_url_state.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-url-state title: "@kbn/url-state" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/url-state plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/url-state'] --- import kbnUrlStateObj from './kbn_url_state.devdocs.json'; diff --git a/api_docs/kbn_use_tracked_promise.mdx b/api_docs/kbn_use_tracked_promise.mdx index 5037e224aaf89..b390d9ebd5ac7 100644 --- a/api_docs/kbn_use_tracked_promise.mdx +++ b/api_docs/kbn_use_tracked_promise.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-use-tracked-promise title: "@kbn/use-tracked-promise" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/use-tracked-promise plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/use-tracked-promise'] --- import kbnUseTrackedPromiseObj from './kbn_use_tracked_promise.devdocs.json'; diff --git a/api_docs/kbn_user_profile_components.mdx b/api_docs/kbn_user_profile_components.mdx index a6422cdd78882..d63f93b41f21e 100644 --- a/api_docs/kbn_user_profile_components.mdx +++ b/api_docs/kbn_user_profile_components.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-user-profile-components title: "@kbn/user-profile-components" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/user-profile-components plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/user-profile-components'] --- import kbnUserProfileComponentsObj from './kbn_user_profile_components.devdocs.json'; diff --git a/api_docs/kbn_utility_types.mdx b/api_docs/kbn_utility_types.mdx index af754ce6811af..4807c3994ea60 100644 --- a/api_docs/kbn_utility_types.mdx +++ b/api_docs/kbn_utility_types.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-utility-types title: "@kbn/utility-types" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/utility-types plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/utility-types'] --- import kbnUtilityTypesObj from './kbn_utility_types.devdocs.json'; diff --git a/api_docs/kbn_utility_types_jest.mdx b/api_docs/kbn_utility_types_jest.mdx index 558ff8b63fbf5..b48233de8925e 100644 --- a/api_docs/kbn_utility_types_jest.mdx +++ b/api_docs/kbn_utility_types_jest.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-utility-types-jest title: "@kbn/utility-types-jest" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/utility-types-jest plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/utility-types-jest'] --- import kbnUtilityTypesJestObj from './kbn_utility_types_jest.devdocs.json'; diff --git a/api_docs/kbn_utils.mdx b/api_docs/kbn_utils.mdx index 683ab330db2bf..2d6db7a607cac 100644 --- a/api_docs/kbn_utils.mdx +++ b/api_docs/kbn_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-utils title: "@kbn/utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/utils plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/utils'] --- import kbnUtilsObj from './kbn_utils.devdocs.json'; diff --git a/api_docs/kbn_visualization_ui_components.mdx b/api_docs/kbn_visualization_ui_components.mdx index 7d7bf111df786..b119318249c72 100644 --- a/api_docs/kbn_visualization_ui_components.mdx +++ b/api_docs/kbn_visualization_ui_components.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-visualization-ui-components title: "@kbn/visualization-ui-components" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/visualization-ui-components plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/visualization-ui-components'] --- import kbnVisualizationUiComponentsObj from './kbn_visualization_ui_components.devdocs.json'; diff --git a/api_docs/kbn_xstate_utils.mdx b/api_docs/kbn_xstate_utils.mdx index 1cf5cbf55219f..601f72198a59c 100644 --- a/api_docs/kbn_xstate_utils.mdx +++ b/api_docs/kbn_xstate_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-xstate-utils title: "@kbn/xstate-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/xstate-utils plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/xstate-utils'] --- import kbnXstateUtilsObj from './kbn_xstate_utils.devdocs.json'; diff --git a/api_docs/kbn_yarn_lock_validator.mdx b/api_docs/kbn_yarn_lock_validator.mdx index 94bc18be12643..ba041ced4d3ee 100644 --- a/api_docs/kbn_yarn_lock_validator.mdx +++ b/api_docs/kbn_yarn_lock_validator.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-yarn-lock-validator title: "@kbn/yarn-lock-validator" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/yarn-lock-validator plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/yarn-lock-validator'] --- import kbnYarnLockValidatorObj from './kbn_yarn_lock_validator.devdocs.json'; diff --git a/api_docs/kibana_overview.mdx b/api_docs/kibana_overview.mdx index 4816b7a229250..e27925236789b 100644 --- a/api_docs/kibana_overview.mdx +++ b/api_docs/kibana_overview.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kibanaOverview title: "kibanaOverview" image: https://source.unsplash.com/400x175/?github description: API docs for the kibanaOverview plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'kibanaOverview'] --- import kibanaOverviewObj from './kibana_overview.devdocs.json'; diff --git a/api_docs/kibana_react.devdocs.json b/api_docs/kibana_react.devdocs.json index 572bcd5ed3e62..e4eed36b4b7c1 100644 --- a/api_docs/kibana_react.devdocs.json +++ b/api_docs/kibana_react.devdocs.json @@ -2156,76 +2156,6 @@ "returnComment": [], "initialIsOpen": false }, - { - "parentPluginId": "kibanaReact", - "id": "def-public.MountPointPortal", - "type": "Function", - "tags": [ - "deprecated" - ], - "label": "MountPointPortal", - "description": [], - "signature": [ - "React.FunctionComponent<", - { - "pluginId": "@kbn/react-kibana-mount", - "scope": "common", - "docId": "kibKbnReactKibanaMountPluginApi", - "section": "def-common.MountPointPortalProps", - "text": "MountPointPortalProps" - }, - ">" - ], - "path": "src/plugins/kibana_react/public/util/index.tsx", - "deprecated": true, - "trackAdoption": false, - "references": [ - { - "plugin": "navigation", - "path": "src/plugins/navigation/public/top_nav_menu/top_nav_menu.tsx" - }, - { - "plugin": "navigation", - "path": "src/plugins/navigation/public/top_nav_menu/top_nav_menu.tsx" - }, - { - "plugin": "navigation", - "path": "src/plugins/navigation/public/top_nav_menu/top_nav_menu.tsx" - } - ], - "returnComment": [], - "children": [ - { - "parentPluginId": "kibanaReact", - "id": "def-public.MountPointPortal.$1", - "type": "CompoundType", - "tags": [], - "label": "props", - "description": [], - "signature": [ - "P & { children?: React.ReactNode; }" - ], - "path": "node_modules/@types/react/index.d.ts", - "deprecated": false, - "trackAdoption": false - }, - { - "parentPluginId": "kibanaReact", - "id": "def-public.MountPointPortal.$2", - "type": "Any", - "tags": [], - "label": "context", - "description": [], - "signature": [ - "any" - ], - "path": "node_modules/@types/react/index.d.ts", - "deprecated": false, - "trackAdoption": false - } - ], - "initialIsOpen": false - }, { "parentPluginId": "kibanaReact", "id": "def-public.NoDataCard", @@ -2748,18 +2678,6 @@ "plugin": "fleet", "path": "x-pack/plugins/fleet/public/applications/fleet/app.tsx" }, - { - "plugin": "observability", - "path": "x-pack/plugins/observability/public/application/index.tsx" - }, - { - "plugin": "observability", - "path": "x-pack/plugins/observability/public/application/index.tsx" - }, - { - "plugin": "observability", - "path": "x-pack/plugins/observability/public/application/index.tsx" - }, { "plugin": "ml", "path": "x-pack/plugins/ml/public/application/management/jobs_list/components/jobs_list_page/jobs_list_page.tsx" @@ -3297,6 +3215,30 @@ "plugin": "triggersActionsUi", "path": "x-pack/plugins/triggers_actions_ui/public/application/hooks/use_bulk_operation_toast.tsx" }, + { + "plugin": "triggersActionsUi", + "path": "x-pack/plugins/triggers_actions_ui/public/application/sections/rule_form/rule_add.tsx" + }, + { + "plugin": "triggersActionsUi", + "path": "x-pack/plugins/triggers_actions_ui/public/application/sections/rule_form/rule_add.tsx" + }, + { + "plugin": "triggersActionsUi", + "path": "x-pack/plugins/triggers_actions_ui/public/application/sections/rule_form/rule_edit.tsx" + }, + { + "plugin": "triggersActionsUi", + "path": "x-pack/plugins/triggers_actions_ui/public/application/sections/rule_form/rule_edit.tsx" + }, + { + "plugin": "triggersActionsUi", + "path": "x-pack/plugins/triggers_actions_ui/public/application/sections/rules_list/components/rules_list.tsx" + }, + { + "plugin": "triggersActionsUi", + "path": "x-pack/plugins/triggers_actions_ui/public/application/sections/rules_list/components/rules_list.tsx" + }, { "plugin": "triggersActionsUi", "path": "x-pack/plugins/triggers_actions_ui/public/application/sections/rule_details/components/rule_details.tsx" @@ -3305,6 +3247,14 @@ "plugin": "triggersActionsUi", "path": "x-pack/plugins/triggers_actions_ui/public/application/sections/rule_details/components/rule_details.tsx" }, + { + "plugin": "triggersActionsUi", + "path": "x-pack/plugins/triggers_actions_ui/public/application/sections/rules_list/components/rule_status_dropdown.tsx" + }, + { + "plugin": "triggersActionsUi", + "path": "x-pack/plugins/triggers_actions_ui/public/application/sections/rules_list/components/rule_status_dropdown.tsx" + }, { "plugin": "cases", "path": "x-pack/plugins/cases/public/common/use_cases_toast.tsx" diff --git a/api_docs/kibana_react.mdx b/api_docs/kibana_react.mdx index 8d909f29cd49c..9056043fb1c5f 100644 --- a/api_docs/kibana_react.mdx +++ b/api_docs/kibana_react.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kibanaReact title: "kibanaReact" image: https://source.unsplash.com/400x175/?github description: API docs for the kibanaReact plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'kibanaReact'] --- import kibanaReactObj from './kibana_react.devdocs.json'; @@ -21,7 +21,7 @@ Contact [@elastic/appex-sharedux](https://github.com/orgs/elastic/teams/appex-sh | Public API count | Any count | Items lacking comments | Missing exports | |-------------------|-----------|------------------------|-----------------| -| 176 | 0 | 138 | 4 | +| 173 | 0 | 137 | 4 | ## Client diff --git a/api_docs/kibana_utils.mdx b/api_docs/kibana_utils.mdx index f2ee0ec66d85b..85e25dd8e6981 100644 --- a/api_docs/kibana_utils.mdx +++ b/api_docs/kibana_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kibanaUtils title: "kibanaUtils" image: https://source.unsplash.com/400x175/?github description: API docs for the kibanaUtils plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'kibanaUtils'] --- import kibanaUtilsObj from './kibana_utils.devdocs.json'; diff --git a/api_docs/kubernetes_security.mdx b/api_docs/kubernetes_security.mdx index cb953b15d4551..362dbdad0f503 100644 --- a/api_docs/kubernetes_security.mdx +++ b/api_docs/kubernetes_security.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kubernetesSecurity title: "kubernetesSecurity" image: https://source.unsplash.com/400x175/?github description: API docs for the kubernetesSecurity plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'kubernetesSecurity'] --- import kubernetesSecurityObj from './kubernetes_security.devdocs.json'; diff --git a/api_docs/lens.mdx b/api_docs/lens.mdx index 0cf2453f74b88..e96762b22d4ad 100644 --- a/api_docs/lens.mdx +++ b/api_docs/lens.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/lens title: "lens" image: https://source.unsplash.com/400x175/?github description: API docs for the lens plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'lens'] --- import lensObj from './lens.devdocs.json'; diff --git a/api_docs/license_api_guard.mdx b/api_docs/license_api_guard.mdx index 7ba97f64caa85..3391559a912a9 100644 --- a/api_docs/license_api_guard.mdx +++ b/api_docs/license_api_guard.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/licenseApiGuard title: "licenseApiGuard" image: https://source.unsplash.com/400x175/?github description: API docs for the licenseApiGuard plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'licenseApiGuard'] --- import licenseApiGuardObj from './license_api_guard.devdocs.json'; diff --git a/api_docs/license_management.mdx b/api_docs/license_management.mdx index b1c760033e8df..6ec7b5767608d 100644 --- a/api_docs/license_management.mdx +++ b/api_docs/license_management.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/licenseManagement title: "licenseManagement" image: https://source.unsplash.com/400x175/?github description: API docs for the licenseManagement plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'licenseManagement'] --- import licenseManagementObj from './license_management.devdocs.json'; diff --git a/api_docs/licensing.mdx b/api_docs/licensing.mdx index 0a04fab7f374c..7d4de65852d8a 100644 --- a/api_docs/licensing.mdx +++ b/api_docs/licensing.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/licensing title: "licensing" image: https://source.unsplash.com/400x175/?github description: API docs for the licensing plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'licensing'] --- import licensingObj from './licensing.devdocs.json'; diff --git a/api_docs/links.mdx b/api_docs/links.mdx index 300854ed209a2..0ab4177f98649 100644 --- a/api_docs/links.mdx +++ b/api_docs/links.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/links title: "links" image: https://source.unsplash.com/400x175/?github description: API docs for the links plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'links'] --- import linksObj from './links.devdocs.json'; diff --git a/api_docs/lists.mdx b/api_docs/lists.mdx index 63e4fcf8f0640..b8c392b12aca9 100644 --- a/api_docs/lists.mdx +++ b/api_docs/lists.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/lists title: "lists" image: https://source.unsplash.com/400x175/?github description: API docs for the lists plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'lists'] --- import listsObj from './lists.devdocs.json'; diff --git a/api_docs/log_explorer.mdx b/api_docs/log_explorer.mdx index ebee0dbe48cc7..e67224cb1582e 100644 --- a/api_docs/log_explorer.mdx +++ b/api_docs/log_explorer.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/logExplorer title: "logExplorer" image: https://source.unsplash.com/400x175/?github description: API docs for the logExplorer plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'logExplorer'] --- import logExplorerObj from './log_explorer.devdocs.json'; diff --git a/api_docs/logs_shared.mdx b/api_docs/logs_shared.mdx index 8685b73e5b78c..24a5e1f3ada0b 100644 --- a/api_docs/logs_shared.mdx +++ b/api_docs/logs_shared.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/logsShared title: "logsShared" image: https://source.unsplash.com/400x175/?github description: API docs for the logsShared plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'logsShared'] --- import logsSharedObj from './logs_shared.devdocs.json'; diff --git a/api_docs/management.mdx b/api_docs/management.mdx index e3b10d70aa9cb..17129e6361fe0 100644 --- a/api_docs/management.mdx +++ b/api_docs/management.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/management title: "management" image: https://source.unsplash.com/400x175/?github description: API docs for the management plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'management'] --- import managementObj from './management.devdocs.json'; diff --git a/api_docs/maps.mdx b/api_docs/maps.mdx index 23546fd5cb45a..23ed347358a53 100644 --- a/api_docs/maps.mdx +++ b/api_docs/maps.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/maps title: "maps" image: https://source.unsplash.com/400x175/?github description: API docs for the maps plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'maps'] --- import mapsObj from './maps.devdocs.json'; diff --git a/api_docs/maps_ems.mdx b/api_docs/maps_ems.mdx index dfcae06dd3a02..f8084dc7e071d 100644 --- a/api_docs/maps_ems.mdx +++ b/api_docs/maps_ems.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/mapsEms title: "mapsEms" image: https://source.unsplash.com/400x175/?github description: API docs for the mapsEms plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'mapsEms'] --- import mapsEmsObj from './maps_ems.devdocs.json'; diff --git a/api_docs/metrics_data_access.mdx b/api_docs/metrics_data_access.mdx index 2cbaf4ca92982..de64a89c2456d 100644 --- a/api_docs/metrics_data_access.mdx +++ b/api_docs/metrics_data_access.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/metricsDataAccess title: "metricsDataAccess" image: https://source.unsplash.com/400x175/?github description: API docs for the metricsDataAccess plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'metricsDataAccess'] --- import metricsDataAccessObj from './metrics_data_access.devdocs.json'; diff --git a/api_docs/ml.mdx b/api_docs/ml.mdx index bf8d214e70405..41f2904be89c9 100644 --- a/api_docs/ml.mdx +++ b/api_docs/ml.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/ml title: "ml" image: https://source.unsplash.com/400x175/?github description: API docs for the ml plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'ml'] --- import mlObj from './ml.devdocs.json'; diff --git a/api_docs/monitoring.mdx b/api_docs/monitoring.mdx index f0916edad26b2..527c07eba5b8d 100644 --- a/api_docs/monitoring.mdx +++ b/api_docs/monitoring.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/monitoring title: "monitoring" image: https://source.unsplash.com/400x175/?github description: API docs for the monitoring plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'monitoring'] --- import monitoringObj from './monitoring.devdocs.json'; diff --git a/api_docs/monitoring_collection.mdx b/api_docs/monitoring_collection.mdx index d0e9e02ce16d5..3daf28fcc8f8f 100644 --- a/api_docs/monitoring_collection.mdx +++ b/api_docs/monitoring_collection.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/monitoringCollection title: "monitoringCollection" image: https://source.unsplash.com/400x175/?github description: API docs for the monitoringCollection plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'monitoringCollection'] --- import monitoringCollectionObj from './monitoring_collection.devdocs.json'; diff --git a/api_docs/navigation.mdx b/api_docs/navigation.mdx index b9a369129a46e..79b573fb0b5cf 100644 --- a/api_docs/navigation.mdx +++ b/api_docs/navigation.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/navigation title: "navigation" image: https://source.unsplash.com/400x175/?github description: API docs for the navigation plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'navigation'] --- import navigationObj from './navigation.devdocs.json'; diff --git a/api_docs/newsfeed.mdx b/api_docs/newsfeed.mdx index 02cc3b802621f..1a5954557e937 100644 --- a/api_docs/newsfeed.mdx +++ b/api_docs/newsfeed.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/newsfeed title: "newsfeed" image: https://source.unsplash.com/400x175/?github description: API docs for the newsfeed plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'newsfeed'] --- import newsfeedObj from './newsfeed.devdocs.json'; diff --git a/api_docs/no_data_page.mdx b/api_docs/no_data_page.mdx index afdcec8eb8ea4..711e0a0724874 100644 --- a/api_docs/no_data_page.mdx +++ b/api_docs/no_data_page.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/noDataPage title: "noDataPage" image: https://source.unsplash.com/400x175/?github description: API docs for the noDataPage plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'noDataPage'] --- import noDataPageObj from './no_data_page.devdocs.json'; diff --git a/api_docs/notifications.mdx b/api_docs/notifications.mdx index caf8772883755..81c476cbc3fc6 100644 --- a/api_docs/notifications.mdx +++ b/api_docs/notifications.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/notifications title: "notifications" image: https://source.unsplash.com/400x175/?github description: API docs for the notifications plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'notifications'] --- import notificationsObj from './notifications.devdocs.json'; diff --git a/api_docs/observability.devdocs.json b/api_docs/observability.devdocs.json index 41c8070018e81..a4d690ff05845 100644 --- a/api_docs/observability.devdocs.json +++ b/api_docs/observability.devdocs.json @@ -8047,7 +8047,7 @@ "label": "config", "description": [], "signature": [ - "{ readonly enabled: boolean; readonly unsafe: Readonly<{} & { alertDetails: Readonly<{} & { uptime: Readonly<{} & { enabled: boolean; }>; metrics: Readonly<{} & { enabled: boolean; }>; observability: Readonly<{} & { enabled: boolean; }>; logs: Readonly<{} & { enabled: boolean; }>; }>; thresholdRule: Readonly<{} & { enabled: boolean; }>; }>; readonly annotations: Readonly<{} & { index: string; enabled: boolean; }>; readonly customThresholdRule: Readonly<{} & { groupByPageSize: number; }>; readonly compositeSlo: Readonly<{} & { enabled: boolean; }>; }" + "{ readonly enabled: boolean; readonly unsafe: Readonly<{} & { alertDetails: Readonly<{} & { uptime: Readonly<{} & { enabled: boolean; }>; metrics: Readonly<{} & { enabled: boolean; }>; observability: Readonly<{} & { enabled: boolean; }>; logs: Readonly<{} & { enabled: boolean; }>; }>; thresholdRule: Readonly<{} & { enabled: boolean; }>; }>; readonly annotations: Readonly<{} & { index: string; enabled: boolean; }>; readonly customThresholdRule: Readonly<{} & { groupByPageSize: number; }>; }" ], "path": "x-pack/plugins/observability/server/routes/types.ts", "deprecated": false, @@ -8124,63 +8124,7 @@ "label": "ObservabilityAPIReturnType", "description": [], "signature": [ - "{ \"GET /api/observability/composite_slos 2023-05-24\"?: ({ endpoint: \"GET /api/observability/composite_slos 2023-05-24\"; params?: ", - "PartialC", - "<{ query: ", - "PartialC", - "<{ name: ", - "StringC", - "; page: ", - "StringC", - "; perPage: ", - "StringC", - "; sortBy: ", - "LiteralC", - "<\"creationTime\">; sortDirection: ", - "UnionC", - "<[", - "LiteralC", - "<\"asc\">, ", - "LiteralC", - "<\"desc\">]>; }>; }> | undefined; handler: ({}: ", - { - "pluginId": "observability", - "scope": "server", - "docId": "kibObservabilityPluginApi", - "section": "def-server.ObservabilityRouteHandlerResources", - "text": "ObservabilityRouteHandlerResources" - }, - " & { params?: { query?: { name?: string | undefined; page?: string | undefined; perPage?: string | undefined; sortBy?: \"creationTime\" | undefined; sortDirection?: \"asc\" | \"desc\" | undefined; } | undefined; } | undefined; }) => Promise<{ page: number; perPage: number; total: number; results: ({ id: string; name: string; timeWindow: { duration: string; type: \"rolling\"; } | { duration: string; type: \"calendarAligned\"; }; budgetingMethod: \"occurrences\" | \"timeslices\"; objective: { target: number; } & { timesliceTarget?: number | undefined; timesliceWindow?: string | undefined; }; compositeMethod: \"weightedAverage\"; sources: { id: string; revision: number; weight: number; }[]; tags: string[]; createdAt: string; updatedAt: string; } & { summary: { status: \"HEALTHY\" | \"NO_DATA\" | \"DEGRADING\" | \"VIOLATED\"; sliValue: number; errorBudget: { initial: number; consumed: number; remaining: number; isEstimated: boolean; }; }; })[]; }>; } & ", - { - "pluginId": "observability", - "scope": "server", - "docId": "kibObservabilityPluginApi", - "section": "def-server.ObservabilityRouteCreateOptions", - "text": "ObservabilityRouteCreateOptions" - }, - ") | undefined; \"GET /api/observability/composite_slos/{id} 2023-05-24\"?: ({ endpoint: \"GET /api/observability/composite_slos/{id} 2023-05-24\"; params?: ", - "TypeC", - "<{ path: ", - "TypeC", - "<{ id: ", - "StringC", - "; }>; }> | undefined; handler: ({}: ", - { - "pluginId": "observability", - "scope": "server", - "docId": "kibObservabilityPluginApi", - "section": "def-server.ObservabilityRouteHandlerResources", - "text": "ObservabilityRouteHandlerResources" - }, - " & { params: { path: { id: string; }; }; }) => Promise<{ id: string; name: string; timeWindow: { duration: string; type: \"rolling\"; } | { duration: string; type: \"calendarAligned\"; }; budgetingMethod: \"occurrences\" | \"timeslices\"; objective: { target: number; } & { timesliceTarget?: number | undefined; timesliceWindow?: string | undefined; }; compositeMethod: \"weightedAverage\"; sources: { id: string; revision: number; weight: number; }[]; tags: string[]; createdAt: string; updatedAt: string; } & { summary: { status: \"HEALTHY\" | \"NO_DATA\" | \"DEGRADING\" | \"VIOLATED\"; sliValue: number; errorBudget: { initial: number; consumed: number; remaining: number; isEstimated: boolean; }; }; }>; } & ", - { - "pluginId": "observability", - "scope": "server", - "docId": "kibObservabilityPluginApi", - "section": "def-server.ObservabilityRouteCreateOptions", - "text": "ObservabilityRouteCreateOptions" - }, - ") | undefined; \"DELETE /api/observability/composite_slos/{id} 2023-05-24\"?: ({ endpoint: \"DELETE /api/observability/composite_slos/{id} 2023-05-24\"; params?: ", + "{ \"GET /internal/observability/slos/{id}/_instances\": { endpoint: \"GET /internal/observability/slos/{id}/_instances\"; params?: ", "TypeC", "<{ path: ", "TypeC", @@ -8194,7 +8138,7 @@ "section": "def-server.ObservabilityRouteHandlerResources", "text": "ObservabilityRouteHandlerResources" }, - " & { params: { path: { id: string; }; }; }) => Promise; } & ", + " & { params: { path: { id: string; }; }; }) => Promise<{ groupBy: string; instances: string[]; }>; } & ", { "pluginId": "observability", "scope": "server", @@ -8202,374 +8146,106 @@ "section": "def-server.ObservabilityRouteCreateOptions", "text": "ObservabilityRouteCreateOptions" }, - ") | undefined; \"PUT /api/observability/composite_slos/{id} 2023-05-24\"?: ({ endpoint: \"PUT /api/observability/composite_slos/{id} 2023-05-24\"; params?: ", - "TypeC", - "<{ path: ", + "; \"POST /internal/observability/slos/_preview\": { endpoint: \"POST /internal/observability/slos/_preview\"; params?: ", "TypeC", - "<{ id: ", - "StringC", - "; }>; body: ", - "PartialC", - "<{ name: ", - "StringC", - "; compositeMethod: ", - "LiteralC", - "<\"weightedAverage\">; sources: ", - "ArrayC", - "<", + "<{ body: ", "TypeC", - "<{ id: ", - "StringC", - "; revision: ", - "NumberC", - "; weight: ", - "NumberC", - "; }>>; timeWindow: ", + "<{ indicator: ", "UnionC", "<[", "TypeC", - "<{ duration: ", - "Type", - "<", - { - "pluginId": "@kbn/slo-schema", - "scope": "common", - "docId": "kibKbnSloSchemaPluginApi", - "section": "def-common.Duration", - "text": "Duration" - }, - ", string, unknown>; type: ", + "<{ type: ", "LiteralC", - "<\"rolling\">; }>, ", + "<\"sli.apm.transactionDuration\">; params: ", + "IntersectionC", + "<[", "TypeC", - "<{ duration: ", - "Type", - "<", - { - "pluginId": "@kbn/slo-schema", - "scope": "common", - "docId": "kibKbnSloSchemaPluginApi", - "section": "def-common.Duration", - "text": "Duration" - }, - ", string, unknown>; type: ", + "<{ environment: ", + "UnionC", + "<[", "LiteralC", - "<\"calendarAligned\">; }>]>; budgetingMethod: ", + "<\"*\">, ", + "StringC", + "]>; service: ", "UnionC", "<[", "LiteralC", - "<\"occurrences\">, ", + "<\"*\">, ", + "StringC", + "]>; transactionType: ", + "UnionC", + "<[", "LiteralC", - "<\"timeslices\">]>; objective: ", - "IntersectionC", + "<\"*\">, ", + "StringC", + "]>; transactionName: ", + "UnionC", "<[", - "TypeC", - "<{ target: ", + "LiteralC", + "<\"*\">, ", + "StringC", + "]>; threshold: ", "NumberC", + "; index: ", + "StringC", "; }>, ", "PartialC", - "<{ timesliceTarget: ", - "NumberC", - "; timesliceWindow: ", - "Type", - "<", - { - "pluginId": "@kbn/slo-schema", - "scope": "common", - "docId": "kibKbnSloSchemaPluginApi", - "section": "def-common.Duration", - "text": "Duration" - }, - ", string, unknown>; }>]>; tags: ", - "ArrayC", - "<", + "<{ filter: ", "StringC", - ">; }>; }> | undefined; handler: ({}: ", - { - "pluginId": "observability", - "scope": "server", - "docId": "kibObservabilityPluginApi", - "section": "def-server.ObservabilityRouteHandlerResources", - "text": "ObservabilityRouteHandlerResources" - }, - " & { params: { path: { id: string; }; body: { name?: string | undefined; compositeMethod?: \"weightedAverage\" | undefined; sources?: { id: string; revision: number; weight: number; }[] | undefined; timeWindow?: { duration: ", - { - "pluginId": "@kbn/slo-schema", - "scope": "common", - "docId": "kibKbnSloSchemaPluginApi", - "section": "def-common.Duration", - "text": "Duration" - }, - "; type: \"rolling\"; } | { duration: ", - { - "pluginId": "@kbn/slo-schema", - "scope": "common", - "docId": "kibKbnSloSchemaPluginApi", - "section": "def-common.Duration", - "text": "Duration" - }, - "; type: \"calendarAligned\"; } | undefined; budgetingMethod?: \"occurrences\" | \"timeslices\" | undefined; objective?: ({ target: number; } & { timesliceTarget?: number | undefined; timesliceWindow?: ", - { - "pluginId": "@kbn/slo-schema", - "scope": "common", - "docId": "kibKbnSloSchemaPluginApi", - "section": "def-common.Duration", - "text": "Duration" - }, - " | undefined; }) | undefined; tags?: string[] | undefined; }; }; }) => Promise<{ id: string; name: string; timeWindow: { duration: string; type: \"rolling\"; } | { duration: string; type: \"calendarAligned\"; }; budgetingMethod: \"occurrences\" | \"timeslices\"; objective: { target: number; } & { timesliceTarget?: number | undefined; timesliceWindow?: string | undefined; }; compositeMethod: \"weightedAverage\"; sources: { id: string; revision: number; weight: number; }[]; tags: string[]; createdAt: string; updatedAt: string; }>; } & ", - { - "pluginId": "observability", - "scope": "server", - "docId": "kibObservabilityPluginApi", - "section": "def-server.ObservabilityRouteCreateOptions", - "text": "ObservabilityRouteCreateOptions" - }, - ") | undefined; \"POST /api/observability/composite_slos 2023-05-24\"?: ({ endpoint: \"POST /api/observability/composite_slos 2023-05-24\"; params?: ", + "; }>]>; }>, ", "TypeC", - "<{ body: ", + "<{ type: ", + "LiteralC", + "<\"sli.apm.transactionErrorRate\">; params: ", "IntersectionC", "<[", "TypeC", - "<{ name: ", + "<{ environment: ", + "UnionC", + "<[", + "LiteralC", + "<\"*\">, ", "StringC", - "; timeWindow: ", + "]>; service: ", "UnionC", "<[", - "TypeC", - "<{ duration: ", - "Type", - "<", - { - "pluginId": "@kbn/slo-schema", - "scope": "common", - "docId": "kibKbnSloSchemaPluginApi", - "section": "def-common.Duration", - "text": "Duration" - }, - ", string, unknown>; type: ", "LiteralC", - "<\"rolling\">; }>, ", - "TypeC", - "<{ duration: ", - "Type", - "<", - { - "pluginId": "@kbn/slo-schema", - "scope": "common", - "docId": "kibKbnSloSchemaPluginApi", - "section": "def-common.Duration", - "text": "Duration" - }, - ", string, unknown>; type: ", + "<\"*\">, ", + "StringC", + "]>; transactionType: ", + "UnionC", + "<[", "LiteralC", - "<\"calendarAligned\">; }>]>; budgetingMethod: ", + "<\"*\">, ", + "StringC", + "]>; transactionName: ", "UnionC", "<[", "LiteralC", - "<\"occurrences\">, ", + "<\"*\">, ", + "StringC", + "]>; index: ", + "StringC", + "; }>, ", + "PartialC", + "<{ filter: ", + "StringC", + "; }>]>; }>, ", + "TypeC", + "<{ type: ", "LiteralC", - "<\"timeslices\">]>; objective: ", + "<\"sli.kql.custom\">; params: ", "IntersectionC", "<[", "TypeC", - "<{ target: ", - "NumberC", - "; }>, ", - "PartialC", - "<{ timesliceTarget: ", - "NumberC", - "; timesliceWindow: ", - "Type", - "<", - { - "pluginId": "@kbn/slo-schema", - "scope": "common", - "docId": "kibKbnSloSchemaPluginApi", - "section": "def-common.Duration", - "text": "Duration" - }, - ", string, unknown>; }>]>; compositeMethod: ", - "LiteralC", - "<\"weightedAverage\">; sources: ", - "ArrayC", - "<", - "TypeC", - "<{ id: ", - "StringC", - "; revision: ", - "NumberC", - "; weight: ", - "NumberC", - "; }>>; }>, ", - "PartialC", - "<{ id: ", - "StringC", - "; tags: ", - "ArrayC", - "<", - "StringC", - ">; }>]>; }> | undefined; handler: ({}: ", - { - "pluginId": "observability", - "scope": "server", - "docId": "kibObservabilityPluginApi", - "section": "def-server.ObservabilityRouteHandlerResources", - "text": "ObservabilityRouteHandlerResources" - }, - " & { params: { body: { name: string; timeWindow: { duration: ", - { - "pluginId": "@kbn/slo-schema", - "scope": "common", - "docId": "kibKbnSloSchemaPluginApi", - "section": "def-common.Duration", - "text": "Duration" - }, - "; type: \"rolling\"; } | { duration: ", - { - "pluginId": "@kbn/slo-schema", - "scope": "common", - "docId": "kibKbnSloSchemaPluginApi", - "section": "def-common.Duration", - "text": "Duration" - }, - "; type: \"calendarAligned\"; }; budgetingMethod: \"occurrences\" | \"timeslices\"; objective: { target: number; } & { timesliceTarget?: number | undefined; timesliceWindow?: ", - { - "pluginId": "@kbn/slo-schema", - "scope": "common", - "docId": "kibKbnSloSchemaPluginApi", - "section": "def-common.Duration", - "text": "Duration" - }, - " | undefined; }; compositeMethod: \"weightedAverage\"; sources: { id: string; revision: number; weight: number; }[]; } & { id?: string | undefined; tags?: string[] | undefined; }; }; }) => Promise<{ id: string; }>; } & ", - { - "pluginId": "observability", - "scope": "server", - "docId": "kibObservabilityPluginApi", - "section": "def-server.ObservabilityRouteCreateOptions", - "text": "ObservabilityRouteCreateOptions" - }, - ") | undefined; \"GET /internal/observability/slos/{id}/_instances\": { endpoint: \"GET /internal/observability/slos/{id}/_instances\"; params?: ", - "TypeC", - "<{ path: ", - "TypeC", - "<{ id: ", - "StringC", - "; }>; }> | undefined; handler: ({}: ", - { - "pluginId": "observability", - "scope": "server", - "docId": "kibObservabilityPluginApi", - "section": "def-server.ObservabilityRouteHandlerResources", - "text": "ObservabilityRouteHandlerResources" - }, - " & { params: { path: { id: string; }; }; }) => Promise<{ groupBy: string; instances: string[]; }>; } & ", - { - "pluginId": "observability", - "scope": "server", - "docId": "kibObservabilityPluginApi", - "section": "def-server.ObservabilityRouteCreateOptions", - "text": "ObservabilityRouteCreateOptions" - }, - "; \"POST /internal/observability/slos/_preview\": { endpoint: \"POST /internal/observability/slos/_preview\"; params?: ", - "TypeC", - "<{ body: ", - "TypeC", - "<{ indicator: ", - "UnionC", - "<[", - "TypeC", - "<{ type: ", - "LiteralC", - "<\"sli.apm.transactionDuration\">; params: ", - "IntersectionC", - "<[", - "TypeC", - "<{ environment: ", - "UnionC", - "<[", - "LiteralC", - "<\"*\">, ", - "StringC", - "]>; service: ", - "UnionC", - "<[", - "LiteralC", - "<\"*\">, ", - "StringC", - "]>; transactionType: ", - "UnionC", - "<[", - "LiteralC", - "<\"*\">, ", - "StringC", - "]>; transactionName: ", - "UnionC", - "<[", - "LiteralC", - "<\"*\">, ", - "StringC", - "]>; threshold: ", - "NumberC", - "; index: ", - "StringC", - "; }>, ", - "PartialC", - "<{ filter: ", - "StringC", - "; }>]>; }>, ", - "TypeC", - "<{ type: ", - "LiteralC", - "<\"sli.apm.transactionErrorRate\">; params: ", - "IntersectionC", - "<[", - "TypeC", - "<{ environment: ", - "UnionC", - "<[", - "LiteralC", - "<\"*\">, ", - "StringC", - "]>; service: ", - "UnionC", - "<[", - "LiteralC", - "<\"*\">, ", - "StringC", - "]>; transactionType: ", - "UnionC", - "<[", - "LiteralC", - "<\"*\">, ", - "StringC", - "]>; transactionName: ", - "UnionC", - "<[", - "LiteralC", - "<\"*\">, ", - "StringC", - "]>; index: ", - "StringC", - "; }>, ", - "PartialC", - "<{ filter: ", - "StringC", - "; }>]>; }>, ", - "TypeC", - "<{ type: ", - "LiteralC", - "<\"sli.kql.custom\">; params: ", - "IntersectionC", - "<[", - "TypeC", - "<{ index: ", - "StringC", - "; good: ", - "StringC", - "; total: ", - "StringC", - "; timestampField: ", - "StringC", + "<{ index: ", + "StringC", + "; good: ", + "StringC", + "; total: ", + "StringC", + "; timestampField: ", + "StringC", "; }>, ", "PartialC", "<{ filter: ", @@ -8698,631 +8374,15 @@ "NumberC", "; to: ", "NumberC", - "; }>, ", - "PartialC", - "<{ filter: ", - "StringC", - "; }>]>]>; }>, ", - "PartialC", - "<{ filter: ", - "StringC", - "; }>]>; }>]>; }>; }> | undefined; handler: ({}: ", - { - "pluginId": "observability", - "scope": "server", - "docId": "kibObservabilityPluginApi", - "section": "def-server.ObservabilityRouteHandlerResources", - "text": "ObservabilityRouteHandlerResources" - }, - " & { params: { body: { indicator: { type: \"sli.apm.transactionDuration\"; params: { environment: string; service: string; transactionType: string; transactionName: string; threshold: number; index: string; } & { filter?: string | undefined; }; } | { type: \"sli.apm.transactionErrorRate\"; params: { environment: string; service: string; transactionType: string; transactionName: string; index: string; } & { filter?: string | undefined; }; } | { type: \"sli.kql.custom\"; params: { index: string; good: string; total: string; timestampField: string; } & { filter?: string | undefined; }; } | { type: \"sli.metric.custom\"; params: { index: string; good: { metrics: ({ name: string; aggregation: \"sum\"; field: string; } & { filter?: string | undefined; })[]; equation: string; }; total: { metrics: ({ name: string; aggregation: \"sum\"; field: string; } & { filter?: string | undefined; })[]; equation: string; }; timestampField: string; } & { filter?: string | undefined; }; } | { type: \"sli.histogram.custom\"; params: { index: string; timestampField: string; good: ({ field: string; aggregation: \"value_count\"; } & { filter?: string | undefined; }) | ({ field: string; aggregation: \"range\"; from: number; to: number; } & { filter?: string | undefined; }); total: ({ field: string; aggregation: \"value_count\"; } & { filter?: string | undefined; }) | ({ field: string; aggregation: \"range\"; from: number; to: number; } & { filter?: string | undefined; }); } & { filter?: string | undefined; }; }; }; }; }) => Promise<{ date: string; sliValue: number; }[]>; } & ", - { - "pluginId": "observability", - "scope": "server", - "docId": "kibObservabilityPluginApi", - "section": "def-server.ObservabilityRouteCreateOptions", - "text": "ObservabilityRouteCreateOptions" - }, - "; \"POST /internal/observability/slos/{id}/_burn_rates\": { endpoint: \"POST /internal/observability/slos/{id}/_burn_rates\"; params?: ", - "TypeC", - "<{ path: ", - "TypeC", - "<{ id: ", - "StringC", - "; }>; body: ", - "TypeC", - "<{ instanceId: ", - "UnionC", - "<[", - "LiteralC", - "<\"*\">, ", - "StringC", - "]>; windows: ", - "ArrayC", - "<", - "TypeC", - "<{ name: ", - "StringC", - "; duration: ", - "Type", - "<", - { - "pluginId": "@kbn/slo-schema", - "scope": "common", - "docId": "kibKbnSloSchemaPluginApi", - "section": "def-common.Duration", - "text": "Duration" - }, - ", string, unknown>; }>>; }>; }> | undefined; handler: ({}: ", - { - "pluginId": "observability", - "scope": "server", - "docId": "kibObservabilityPluginApi", - "section": "def-server.ObservabilityRouteHandlerResources", - "text": "ObservabilityRouteHandlerResources" - }, - " & { params: { path: { id: string; }; body: { instanceId: string; windows: { name: string; duration: ", - { - "pluginId": "@kbn/slo-schema", - "scope": "common", - "docId": "kibKbnSloSchemaPluginApi", - "section": "def-common.Duration", - "text": "Duration" - }, - "; }[]; }; }; }) => Promise<{ burnRates: { name: string; burnRate: number; sli: number; }[]; }>; } & ", - { - "pluginId": "observability", - "scope": "server", - "docId": "kibObservabilityPluginApi", - "section": "def-server.ObservabilityRouteCreateOptions", - "text": "ObservabilityRouteCreateOptions" - }, - "; \"GET /internal/observability/slos/_diagnosis\": { endpoint: \"GET /internal/observability/slos/_diagnosis\"; params?: undefined; handler: ({}: ", - { - "pluginId": "observability", - "scope": "server", - "docId": "kibObservabilityPluginApi", - "section": "def-server.ObservabilityRouteHandlerResources", - "text": "ObservabilityRouteHandlerResources" - }, - ") => Promise<{ licenseAndFeatures: ", - "PublicLicenseJSON", - "; userPrivileges: { write: ", - "SecurityHasPrivilegesResponse", - "; read: ", - "SecurityHasPrivilegesResponse", - "; }; }>; } & ", - { - "pluginId": "observability", - "scope": "server", - "docId": "kibObservabilityPluginApi", - "section": "def-server.ObservabilityRouteCreateOptions", - "text": "ObservabilityRouteCreateOptions" - }, - "; \"PUT /api/observability/slos/{id} 2023-10-31\": { endpoint: \"PUT /api/observability/slos/{id} 2023-10-31\"; params?: ", - "TypeC", - "<{ path: ", - "TypeC", - "<{ id: ", - "StringC", - "; }>; body: ", - "PartialC", - "<{ name: ", - "StringC", - "; description: ", - "StringC", - "; indicator: ", - "UnionC", - "<[", - "TypeC", - "<{ type: ", - "LiteralC", - "<\"sli.apm.transactionDuration\">; params: ", - "IntersectionC", - "<[", - "TypeC", - "<{ environment: ", - "UnionC", - "<[", - "LiteralC", - "<\"*\">, ", - "StringC", - "]>; service: ", - "UnionC", - "<[", - "LiteralC", - "<\"*\">, ", - "StringC", - "]>; transactionType: ", - "UnionC", - "<[", - "LiteralC", - "<\"*\">, ", - "StringC", - "]>; transactionName: ", - "UnionC", - "<[", - "LiteralC", - "<\"*\">, ", - "StringC", - "]>; threshold: ", - "NumberC", - "; index: ", - "StringC", - "; }>, ", - "PartialC", - "<{ filter: ", - "StringC", - "; }>]>; }>, ", - "TypeC", - "<{ type: ", - "LiteralC", - "<\"sli.apm.transactionErrorRate\">; params: ", - "IntersectionC", - "<[", - "TypeC", - "<{ environment: ", - "UnionC", - "<[", - "LiteralC", - "<\"*\">, ", - "StringC", - "]>; service: ", - "UnionC", - "<[", - "LiteralC", - "<\"*\">, ", - "StringC", - "]>; transactionType: ", - "UnionC", - "<[", - "LiteralC", - "<\"*\">, ", - "StringC", - "]>; transactionName: ", - "UnionC", - "<[", - "LiteralC", - "<\"*\">, ", - "StringC", - "]>; index: ", - "StringC", - "; }>, ", - "PartialC", - "<{ filter: ", - "StringC", - "; }>]>; }>, ", - "TypeC", - "<{ type: ", - "LiteralC", - "<\"sli.kql.custom\">; params: ", - "IntersectionC", - "<[", - "TypeC", - "<{ index: ", - "StringC", - "; good: ", - "StringC", - "; total: ", - "StringC", - "; timestampField: ", - "StringC", - "; }>, ", - "PartialC", - "<{ filter: ", - "StringC", - "; }>]>; }>, ", - "TypeC", - "<{ type: ", - "LiteralC", - "<\"sli.metric.custom\">; params: ", - "IntersectionC", - "<[", - "TypeC", - "<{ index: ", - "StringC", - "; good: ", - "TypeC", - "<{ metrics: ", - "ArrayC", - "<", - "IntersectionC", - "<[", - "TypeC", - "<{ name: ", - "StringC", - "; aggregation: ", - "KeyofC", - "<{ sum: boolean; }>; field: ", - "StringC", - "; }>, ", - "PartialC", - "<{ filter: ", - "StringC", - "; }>]>>; equation: ", - "StringC", - "; }>; total: ", - "TypeC", - "<{ metrics: ", - "ArrayC", - "<", - "IntersectionC", - "<[", - "TypeC", - "<{ name: ", - "StringC", - "; aggregation: ", - "KeyofC", - "<{ sum: boolean; }>; field: ", - "StringC", - "; }>, ", - "PartialC", - "<{ filter: ", - "StringC", - "; }>]>>; equation: ", - "StringC", - "; }>; timestampField: ", - "StringC", - "; }>, ", - "PartialC", - "<{ filter: ", - "StringC", - "; }>]>; }>, ", - "TypeC", - "<{ type: ", - "LiteralC", - "<\"sli.histogram.custom\">; params: ", - "IntersectionC", - "<[", - "TypeC", - "<{ index: ", - "StringC", - "; timestampField: ", - "StringC", - "; good: ", - "UnionC", - "<[", - "IntersectionC", - "<[", - "TypeC", - "<{ field: ", - "StringC", - "; aggregation: ", - "LiteralC", - "<\"value_count\">; }>, ", - "PartialC", - "<{ filter: ", - "StringC", - "; }>]>, ", - "IntersectionC", - "<[", - "TypeC", - "<{ field: ", - "StringC", - "; aggregation: ", - "LiteralC", - "<\"range\">; from: ", - "NumberC", - "; to: ", - "NumberC", - "; }>, ", - "PartialC", - "<{ filter: ", - "StringC", - "; }>]>]>; total: ", - "UnionC", - "<[", - "IntersectionC", - "<[", - "TypeC", - "<{ field: ", - "StringC", - "; aggregation: ", - "LiteralC", - "<\"value_count\">; }>, ", - "PartialC", - "<{ filter: ", - "StringC", - "; }>]>, ", - "IntersectionC", - "<[", - "TypeC", - "<{ field: ", - "StringC", - "; aggregation: ", - "LiteralC", - "<\"range\">; from: ", - "NumberC", - "; to: ", - "NumberC", - "; }>, ", - "PartialC", - "<{ filter: ", - "StringC", - "; }>]>]>; }>, ", - "PartialC", - "<{ filter: ", - "StringC", - "; }>]>; }>]>; timeWindow: ", - "UnionC", - "<[", - "TypeC", - "<{ duration: ", - "Type", - "<", - { - "pluginId": "@kbn/slo-schema", - "scope": "common", - "docId": "kibKbnSloSchemaPluginApi", - "section": "def-common.Duration", - "text": "Duration" - }, - ", string, unknown>; type: ", - "LiteralC", - "<\"rolling\">; }>, ", - "TypeC", - "<{ duration: ", - "Type", - "<", - { - "pluginId": "@kbn/slo-schema", - "scope": "common", - "docId": "kibKbnSloSchemaPluginApi", - "section": "def-common.Duration", - "text": "Duration" - }, - ", string, unknown>; type: ", - "LiteralC", - "<\"calendarAligned\">; }>]>; budgetingMethod: ", - "UnionC", - "<[", - "LiteralC", - "<\"occurrences\">, ", - "LiteralC", - "<\"timeslices\">]>; objective: ", - "IntersectionC", - "<[", - "TypeC", - "<{ target: ", - "NumberC", - "; }>, ", - "PartialC", - "<{ timesliceTarget: ", - "NumberC", - "; timesliceWindow: ", - "Type", - "<", - { - "pluginId": "@kbn/slo-schema", - "scope": "common", - "docId": "kibKbnSloSchemaPluginApi", - "section": "def-common.Duration", - "text": "Duration" - }, - ", string, unknown>; }>]>; settings: ", - "PartialC", - "<{ syncDelay: ", - "Type", - "<", - { - "pluginId": "@kbn/slo-schema", - "scope": "common", - "docId": "kibKbnSloSchemaPluginApi", - "section": "def-common.Duration", - "text": "Duration" - }, - ", string, unknown>; frequency: ", - "Type", - "<", - { - "pluginId": "@kbn/slo-schema", - "scope": "common", - "docId": "kibKbnSloSchemaPluginApi", - "section": "def-common.Duration", - "text": "Duration" - }, - ", string, unknown>; }>; tags: ", - "ArrayC", - "<", - "StringC", - ">; groupBy: ", - "UnionC", - "<[", - "LiteralC", - "<\"*\">, ", - "StringC", - "]>; }>; }> | undefined; handler: ({}: ", - { - "pluginId": "observability", - "scope": "server", - "docId": "kibObservabilityPluginApi", - "section": "def-server.ObservabilityRouteHandlerResources", - "text": "ObservabilityRouteHandlerResources" - }, - " & { params: { path: { id: string; }; body: { name?: string | undefined; description?: string | undefined; indicator?: { type: \"sli.apm.transactionDuration\"; params: { environment: string; service: string; transactionType: string; transactionName: string; threshold: number; index: string; } & { filter?: string | undefined; }; } | { type: \"sli.apm.transactionErrorRate\"; params: { environment: string; service: string; transactionType: string; transactionName: string; index: string; } & { filter?: string | undefined; }; } | { type: \"sli.kql.custom\"; params: { index: string; good: string; total: string; timestampField: string; } & { filter?: string | undefined; }; } | { type: \"sli.metric.custom\"; params: { index: string; good: { metrics: ({ name: string; aggregation: \"sum\"; field: string; } & { filter?: string | undefined; })[]; equation: string; }; total: { metrics: ({ name: string; aggregation: \"sum\"; field: string; } & { filter?: string | undefined; })[]; equation: string; }; timestampField: string; } & { filter?: string | undefined; }; } | { type: \"sli.histogram.custom\"; params: { index: string; timestampField: string; good: ({ field: string; aggregation: \"value_count\"; } & { filter?: string | undefined; }) | ({ field: string; aggregation: \"range\"; from: number; to: number; } & { filter?: string | undefined; }); total: ({ field: string; aggregation: \"value_count\"; } & { filter?: string | undefined; }) | ({ field: string; aggregation: \"range\"; from: number; to: number; } & { filter?: string | undefined; }); } & { filter?: string | undefined; }; } | undefined; timeWindow?: { duration: ", - { - "pluginId": "@kbn/slo-schema", - "scope": "common", - "docId": "kibKbnSloSchemaPluginApi", - "section": "def-common.Duration", - "text": "Duration" - }, - "; type: \"rolling\"; } | { duration: ", - { - "pluginId": "@kbn/slo-schema", - "scope": "common", - "docId": "kibKbnSloSchemaPluginApi", - "section": "def-common.Duration", - "text": "Duration" - }, - "; type: \"calendarAligned\"; } | undefined; budgetingMethod?: \"occurrences\" | \"timeslices\" | undefined; objective?: ({ target: number; } & { timesliceTarget?: number | undefined; timesliceWindow?: ", - { - "pluginId": "@kbn/slo-schema", - "scope": "common", - "docId": "kibKbnSloSchemaPluginApi", - "section": "def-common.Duration", - "text": "Duration" - }, - " | undefined; }) | undefined; settings?: { syncDelay?: ", - { - "pluginId": "@kbn/slo-schema", - "scope": "common", - "docId": "kibKbnSloSchemaPluginApi", - "section": "def-common.Duration", - "text": "Duration" - }, - " | undefined; frequency?: ", - { - "pluginId": "@kbn/slo-schema", - "scope": "common", - "docId": "kibKbnSloSchemaPluginApi", - "section": "def-common.Duration", - "text": "Duration" - }, - " | undefined; } | undefined; tags?: string[] | undefined; groupBy?: string | undefined; }; }; }) => Promise<{ id: string; name: string; description: string; indicator: { type: \"sli.apm.transactionDuration\"; params: { environment: string; service: string; transactionType: string; transactionName: string; threshold: number; index: string; } & { filter?: string | undefined; }; } | { type: \"sli.apm.transactionErrorRate\"; params: { environment: string; service: string; transactionType: string; transactionName: string; index: string; } & { filter?: string | undefined; }; } | { type: \"sli.kql.custom\"; params: { index: string; good: string; total: string; timestampField: string; } & { filter?: string | undefined; }; } | { type: \"sli.metric.custom\"; params: { index: string; good: { metrics: ({ name: string; aggregation: \"sum\"; field: string; } & { filter?: string | undefined; })[]; equation: string; }; total: { metrics: ({ name: string; aggregation: \"sum\"; field: string; } & { filter?: string | undefined; })[]; equation: string; }; timestampField: string; } & { filter?: string | undefined; }; } | { type: \"sli.histogram.custom\"; params: { index: string; timestampField: string; good: ({ field: string; aggregation: \"value_count\"; } & { filter?: string | undefined; }) | ({ field: string; aggregation: \"range\"; from: number; to: number; } & { filter?: string | undefined; }); total: ({ field: string; aggregation: \"value_count\"; } & { filter?: string | undefined; }) | ({ field: string; aggregation: \"range\"; from: number; to: number; } & { filter?: string | undefined; }); } & { filter?: string | undefined; }; }; timeWindow: { duration: string; type: \"rolling\"; } | { duration: string; type: \"calendarAligned\"; }; budgetingMethod: \"occurrences\" | \"timeslices\"; objective: { target: number; } & { timesliceTarget?: number | undefined; timesliceWindow?: string | undefined; }; revision: number; settings: { syncDelay: string; frequency: string; }; enabled: boolean; tags: string[]; groupBy: string; createdAt: string; updatedAt: string; } & { instanceId?: string | undefined; }>; } & ", - { - "pluginId": "observability", - "scope": "server", - "docId": "kibObservabilityPluginApi", - "section": "def-server.ObservabilityRouteCreateOptions", - "text": "ObservabilityRouteCreateOptions" - }, - "; \"GET /api/observability/slos/{id} 2023-10-31\": { endpoint: \"GET /api/observability/slos/{id} 2023-10-31\"; params?: ", - "IntersectionC", - "<[", - "TypeC", - "<{ path: ", - "TypeC", - "<{ id: ", - "StringC", - "; }>; }>, ", - "PartialC", - "<{ query: ", - "PartialC", - "<{ instanceId: ", - "UnionC", - "<[", - "LiteralC", - "<\"*\">, ", - "StringC", - "]>; }>; }>]> | undefined; handler: ({}: ", - { - "pluginId": "observability", - "scope": "server", - "docId": "kibObservabilityPluginApi", - "section": "def-server.ObservabilityRouteHandlerResources", - "text": "ObservabilityRouteHandlerResources" - }, - " & { params: { path: { id: string; }; } & { query?: { instanceId?: string | undefined; } | undefined; }; }) => Promise<{ id: string; name: string; description: string; indicator: { type: \"sli.apm.transactionDuration\"; params: { environment: string; service: string; transactionType: string; transactionName: string; threshold: number; index: string; } & { filter?: string | undefined; }; } | { type: \"sli.apm.transactionErrorRate\"; params: { environment: string; service: string; transactionType: string; transactionName: string; index: string; } & { filter?: string | undefined; }; } | { type: \"sli.kql.custom\"; params: { index: string; good: string; total: string; timestampField: string; } & { filter?: string | undefined; }; } | { type: \"sli.metric.custom\"; params: { index: string; good: { metrics: ({ name: string; aggregation: \"sum\"; field: string; } & { filter?: string | undefined; })[]; equation: string; }; total: { metrics: ({ name: string; aggregation: \"sum\"; field: string; } & { filter?: string | undefined; })[]; equation: string; }; timestampField: string; } & { filter?: string | undefined; }; } | { type: \"sli.histogram.custom\"; params: { index: string; timestampField: string; good: ({ field: string; aggregation: \"value_count\"; } & { filter?: string | undefined; }) | ({ field: string; aggregation: \"range\"; from: number; to: number; } & { filter?: string | undefined; }); total: ({ field: string; aggregation: \"value_count\"; } & { filter?: string | undefined; }) | ({ field: string; aggregation: \"range\"; from: number; to: number; } & { filter?: string | undefined; }); } & { filter?: string | undefined; }; }; timeWindow: { duration: string; type: \"rolling\"; } | { duration: string; type: \"calendarAligned\"; }; budgetingMethod: \"occurrences\" | \"timeslices\"; objective: { target: number; } & { timesliceTarget?: number | undefined; timesliceWindow?: string | undefined; }; revision: number; settings: { syncDelay: string; frequency: string; }; enabled: boolean; tags: string[]; groupBy: string; createdAt: string; updatedAt: string; } & { instanceId?: string | undefined; } & { summary: { status: \"HEALTHY\" | \"NO_DATA\" | \"DEGRADING\" | \"VIOLATED\"; sliValue: number; errorBudget: { initial: number; consumed: number; remaining: number; isEstimated: boolean; }; }; }>; } & ", - { - "pluginId": "observability", - "scope": "server", - "docId": "kibObservabilityPluginApi", - "section": "def-server.ObservabilityRouteCreateOptions", - "text": "ObservabilityRouteCreateOptions" - }, - "; \"GET /api/observability/slos 2023-10-31\": { endpoint: \"GET /api/observability/slos 2023-10-31\"; params?: ", - "PartialC", - "<{ query: ", - "PartialC", - "<{ kqlQuery: ", - "StringC", - "; page: ", - "StringC", - "; perPage: ", - "StringC", - "; sortBy: ", - "UnionC", - "<[", - "LiteralC", - "<\"error_budget_consumed\">, ", - "LiteralC", - "<\"error_budget_remaining\">, ", - "LiteralC", - "<\"sli_value\">, ", - "LiteralC", - "<\"status\">]>; sortDirection: ", - "UnionC", - "<[", - "LiteralC", - "<\"asc\">, ", - "LiteralC", - "<\"desc\">]>; }>; }> | undefined; handler: ({}: ", - { - "pluginId": "observability", - "scope": "server", - "docId": "kibObservabilityPluginApi", - "section": "def-server.ObservabilityRouteHandlerResources", - "text": "ObservabilityRouteHandlerResources" - }, - " & { params?: { query?: { kqlQuery?: string | undefined; page?: string | undefined; perPage?: string | undefined; sortBy?: \"status\" | \"error_budget_consumed\" | \"error_budget_remaining\" | \"sli_value\" | undefined; sortDirection?: \"asc\" | \"desc\" | undefined; } | undefined; } | undefined; }) => Promise<{ page: number; perPage: number; total: number; results: ({ id: string; name: string; description: string; indicator: { type: \"sli.apm.transactionDuration\"; params: { environment: string; service: string; transactionType: string; transactionName: string; threshold: number; index: string; } & { filter?: string | undefined; }; } | { type: \"sli.apm.transactionErrorRate\"; params: { environment: string; service: string; transactionType: string; transactionName: string; index: string; } & { filter?: string | undefined; }; } | { type: \"sli.kql.custom\"; params: { index: string; good: string; total: string; timestampField: string; } & { filter?: string | undefined; }; } | { type: \"sli.metric.custom\"; params: { index: string; good: { metrics: ({ name: string; aggregation: \"sum\"; field: string; } & { filter?: string | undefined; })[]; equation: string; }; total: { metrics: ({ name: string; aggregation: \"sum\"; field: string; } & { filter?: string | undefined; })[]; equation: string; }; timestampField: string; } & { filter?: string | undefined; }; } | { type: \"sli.histogram.custom\"; params: { index: string; timestampField: string; good: ({ field: string; aggregation: \"value_count\"; } & { filter?: string | undefined; }) | ({ field: string; aggregation: \"range\"; from: number; to: number; } & { filter?: string | undefined; }); total: ({ field: string; aggregation: \"value_count\"; } & { filter?: string | undefined; }) | ({ field: string; aggregation: \"range\"; from: number; to: number; } & { filter?: string | undefined; }); } & { filter?: string | undefined; }; }; timeWindow: { duration: string; type: \"rolling\"; } | { duration: string; type: \"calendarAligned\"; }; budgetingMethod: \"occurrences\" | \"timeslices\"; objective: { target: number; } & { timesliceTarget?: number | undefined; timesliceWindow?: string | undefined; }; revision: number; settings: { syncDelay: string; frequency: string; }; enabled: boolean; tags: string[]; groupBy: string; createdAt: string; updatedAt: string; } & { instanceId?: string | undefined; } & { summary: { status: \"HEALTHY\" | \"NO_DATA\" | \"DEGRADING\" | \"VIOLATED\"; sliValue: number; errorBudget: { initial: number; consumed: number; remaining: number; isEstimated: boolean; }; }; })[]; }>; } & ", - { - "pluginId": "observability", - "scope": "server", - "docId": "kibObservabilityPluginApi", - "section": "def-server.ObservabilityRouteCreateOptions", - "text": "ObservabilityRouteCreateOptions" - }, - "; \"GET /internal/observability/slos/_definitions\": { endpoint: \"GET /internal/observability/slos/_definitions\"; params?: ", - "TypeC", - "<{ query: ", - "TypeC", - "<{ search: ", - "StringC", - "; }>; }> | undefined; handler: ({}: ", - { - "pluginId": "observability", - "scope": "server", - "docId": "kibObservabilityPluginApi", - "section": "def-server.ObservabilityRouteHandlerResources", - "text": "ObservabilityRouteHandlerResources" - }, - " & { params: { query: { search: string; }; }; }) => Promise<({ id: string; name: string; description: string; indicator: { type: \"sli.apm.transactionDuration\"; params: { environment: string; service: string; transactionType: string; transactionName: string; threshold: number; index: string; } & { filter?: string | undefined; }; } | { type: \"sli.apm.transactionErrorRate\"; params: { environment: string; service: string; transactionType: string; transactionName: string; index: string; } & { filter?: string | undefined; }; } | { type: \"sli.kql.custom\"; params: { index: string; good: string; total: string; timestampField: string; } & { filter?: string | undefined; }; } | { type: \"sli.metric.custom\"; params: { index: string; good: { metrics: ({ name: string; aggregation: \"sum\"; field: string; } & { filter?: string | undefined; })[]; equation: string; }; total: { metrics: ({ name: string; aggregation: \"sum\"; field: string; } & { filter?: string | undefined; })[]; equation: string; }; timestampField: string; } & { filter?: string | undefined; }; } | { type: \"sli.histogram.custom\"; params: { index: string; timestampField: string; good: ({ field: string; aggregation: \"value_count\"; } & { filter?: string | undefined; }) | ({ field: string; aggregation: \"range\"; from: number; to: number; } & { filter?: string | undefined; }); total: ({ field: string; aggregation: \"value_count\"; } & { filter?: string | undefined; }) | ({ field: string; aggregation: \"range\"; from: number; to: number; } & { filter?: string | undefined; }); } & { filter?: string | undefined; }; }; timeWindow: { duration: string; type: \"rolling\"; } | { duration: string; type: \"calendarAligned\"; }; budgetingMethod: \"occurrences\" | \"timeslices\"; objective: { target: number; } & { timesliceTarget?: number | undefined; timesliceWindow?: string | undefined; }; revision: number; settings: { syncDelay: string; frequency: string; }; enabled: boolean; tags: string[]; groupBy: string; createdAt: string; updatedAt: string; } & { instanceId?: string | undefined; })[]>; } & ", - { - "pluginId": "observability", - "scope": "server", - "docId": "kibObservabilityPluginApi", - "section": "def-server.ObservabilityRouteCreateOptions", - "text": "ObservabilityRouteCreateOptions" - }, - "; \"POST /internal/observability/slos/_historical_summary\": { endpoint: \"POST /internal/observability/slos/_historical_summary\"; params?: ", - "TypeC", - "<{ body: ", - "TypeC", - "<{ list: ", - "ArrayC", - "<", - "TypeC", - "<{ sloId: ", - "StringC", - "; instanceId: ", - "UnionC", - "<[", - "LiteralC", - "<\"*\">, ", - "StringC", - "]>; }>>; }>; }> | undefined; handler: ({}: ", - { - "pluginId": "observability", - "scope": "server", - "docId": "kibObservabilityPluginApi", - "section": "def-server.ObservabilityRouteHandlerResources", - "text": "ObservabilityRouteHandlerResources" - }, - " & { params: { body: { list: { sloId: string; instanceId: string; }[]; }; }; }) => Promise<{ sloId: string; instanceId: string; data: ({ date: string; } & { status: \"HEALTHY\" | \"NO_DATA\" | \"DEGRADING\" | \"VIOLATED\"; sliValue: number; errorBudget: { initial: number; consumed: number; remaining: number; isEstimated: boolean; }; })[]; }[]>; } & ", - { - "pluginId": "observability", - "scope": "server", - "docId": "kibObservabilityPluginApi", - "section": "def-server.ObservabilityRouteCreateOptions", - "text": "ObservabilityRouteCreateOptions" - }, - "; \"POST /api/observability/slos/{id}/enable 2023-10-31\": { endpoint: \"POST /api/observability/slos/{id}/enable 2023-10-31\"; params?: ", - "TypeC", - "<{ path: ", - "TypeC", - "<{ id: ", + "; }>, ", + "PartialC", + "<{ filter: ", "StringC", - "; }>; }> | undefined; handler: ({}: ", + "; }>]>]>; }>, ", + "PartialC", + "<{ filter: ", + "StringC", + "; }>]>; }>]>; }>; }> | undefined; handler: ({}: ", { "pluginId": "observability", "scope": "server", @@ -9330,7 +8390,7 @@ "section": "def-server.ObservabilityRouteHandlerResources", "text": "ObservabilityRouteHandlerResources" }, - " & { params: { path: { id: string; }; }; }) => Promise; } & ", + " & { params: { body: { indicator: { type: \"sli.apm.transactionDuration\"; params: { environment: string; service: string; transactionType: string; transactionName: string; threshold: number; index: string; } & { filter?: string | undefined; }; } | { type: \"sli.apm.transactionErrorRate\"; params: { environment: string; service: string; transactionType: string; transactionName: string; index: string; } & { filter?: string | undefined; }; } | { type: \"sli.kql.custom\"; params: { index: string; good: string; total: string; timestampField: string; } & { filter?: string | undefined; }; } | { type: \"sli.metric.custom\"; params: { index: string; good: { metrics: ({ name: string; aggregation: \"sum\"; field: string; } & { filter?: string | undefined; })[]; equation: string; }; total: { metrics: ({ name: string; aggregation: \"sum\"; field: string; } & { filter?: string | undefined; })[]; equation: string; }; timestampField: string; } & { filter?: string | undefined; }; } | { type: \"sli.histogram.custom\"; params: { index: string; timestampField: string; good: ({ field: string; aggregation: \"value_count\"; } & { filter?: string | undefined; }) | ({ field: string; aggregation: \"range\"; from: number; to: number; } & { filter?: string | undefined; }); total: ({ field: string; aggregation: \"value_count\"; } & { filter?: string | undefined; }) | ({ field: string; aggregation: \"range\"; from: number; to: number; } & { filter?: string | undefined; }); } & { filter?: string | undefined; }; }; }; }; }) => Promise<{ date: string; sliValue: number; }[]>; } & ", { "pluginId": "observability", "scope": "server", @@ -9338,41 +8398,37 @@ "section": "def-server.ObservabilityRouteCreateOptions", "text": "ObservabilityRouteCreateOptions" }, - "; \"POST /api/observability/slos/{id}/disable 2023-10-31\": { endpoint: \"POST /api/observability/slos/{id}/disable 2023-10-31\"; params?: ", + "; \"POST /internal/observability/slos/{id}/_burn_rates\": { endpoint: \"POST /internal/observability/slos/{id}/_burn_rates\"; params?: ", "TypeC", "<{ path: ", "TypeC", "<{ id: ", "StringC", - "; }>; }> | undefined; handler: ({}: ", - { - "pluginId": "observability", - "scope": "server", - "docId": "kibObservabilityPluginApi", - "section": "def-server.ObservabilityRouteHandlerResources", - "text": "ObservabilityRouteHandlerResources" - }, - " & { params: { path: { id: string; }; }; }) => Promise; } & ", - { - "pluginId": "observability", - "scope": "server", - "docId": "kibObservabilityPluginApi", - "section": "def-server.ObservabilityRouteCreateOptions", - "text": "ObservabilityRouteCreateOptions" - }, - "; \"POST /api/observability/slos/_delete_instances 2023-10-31\": { endpoint: \"POST /api/observability/slos/_delete_instances 2023-10-31\"; params?: ", - "TypeC", - "<{ body: ", + "; }>; body: ", "TypeC", - "<{ list: ", + "<{ instanceId: ", + "UnionC", + "<[", + "LiteralC", + "<\"*\">, ", + "StringC", + "]>; windows: ", "ArrayC", "<", "TypeC", - "<{ sloId: ", - "StringC", - "; instanceId: ", + "<{ name: ", "StringC", - "; }>>; }>; }> | undefined; handler: ({}: ", + "; duration: ", + "Type", + "<", + { + "pluginId": "@kbn/slo-schema", + "scope": "common", + "docId": "kibKbnSloSchemaPluginApi", + "section": "def-common.Duration", + "text": "Duration" + }, + ", string, unknown>; }>>; }>; }> | undefined; handler: ({}: ", { "pluginId": "observability", "scope": "server", @@ -9380,7 +8436,15 @@ "section": "def-server.ObservabilityRouteHandlerResources", "text": "ObservabilityRouteHandlerResources" }, - " & { params: { body: { list: { sloId: string; instanceId: string; }[]; }; }; }) => Promise; } & ", + " & { params: { path: { id: string; }; body: { instanceId: string; windows: { name: string; duration: ", + { + "pluginId": "@kbn/slo-schema", + "scope": "common", + "docId": "kibKbnSloSchemaPluginApi", + "section": "def-common.Duration", + "text": "Duration" + }, + "; }[]; }; }; }) => Promise<{ burnRates: { name: string; burnRate: number; sli: number; }[]; }>; } & ", { "pluginId": "observability", "scope": "server", @@ -9388,13 +8452,7 @@ "section": "def-server.ObservabilityRouteCreateOptions", "text": "ObservabilityRouteCreateOptions" }, - "; \"DELETE /api/observability/slos/{id} 2023-10-31\": { endpoint: \"DELETE /api/observability/slos/{id} 2023-10-31\"; params?: ", - "TypeC", - "<{ path: ", - "TypeC", - "<{ id: ", - "StringC", - "; }>; }> | undefined; handler: ({}: ", + "; \"GET /internal/observability/slos/_diagnosis\": { endpoint: \"GET /internal/observability/slos/_diagnosis\"; params?: undefined; handler: ({}: ", { "pluginId": "observability", "scope": "server", @@ -9402,7 +8460,13 @@ "section": "def-server.ObservabilityRouteHandlerResources", "text": "ObservabilityRouteHandlerResources" }, - " & { params: { path: { id: string; }; }; }) => Promise; } & ", + ") => Promise<{ licenseAndFeatures: ", + "PublicLicenseJSON", + "; userPrivileges: { write: ", + "SecurityHasPrivilegesResponse", + "; read: ", + "SecurityHasPrivilegesResponse", + "; }; }>; } & ", { "pluginId": "observability", "scope": "server", @@ -9410,12 +8474,14 @@ "section": "def-server.ObservabilityRouteCreateOptions", "text": "ObservabilityRouteCreateOptions" }, - "; \"POST /api/observability/slos 2023-10-31\": { endpoint: \"POST /api/observability/slos 2023-10-31\"; params?: ", + "; \"PUT /api/observability/slos/{id} 2023-10-31\": { endpoint: \"PUT /api/observability/slos/{id} 2023-10-31\"; params?: ", "TypeC", - "<{ body: ", - "IntersectionC", - "<[", + "<{ path: ", "TypeC", + "<{ id: ", + "StringC", + "; }>; body: ", + "PartialC", "<{ name: ", "StringC", "; description: ", @@ -9708,11 +8774,7 @@ "section": "def-common.Duration", "text": "Duration" }, - ", string, unknown>; }>]>; }>, ", - "PartialC", - "<{ id: ", - "StringC", - "; settings: ", + ", string, unknown>; }>]>; settings: ", "PartialC", "<{ syncDelay: ", "Type", @@ -9744,7 +8806,7 @@ "LiteralC", "<\"*\">, ", "StringC", - "]>; }>]>; }> | undefined; handler: ({}: ", + "]>; }>; }> | undefined; handler: ({}: ", { "pluginId": "observability", "scope": "server", @@ -9752,7 +8814,7 @@ "section": "def-server.ObservabilityRouteHandlerResources", "text": "ObservabilityRouteHandlerResources" }, - " & { params: { body: { name: string; description: string; indicator: { type: \"sli.apm.transactionDuration\"; params: { environment: string; service: string; transactionType: string; transactionName: string; threshold: number; index: string; } & { filter?: string | undefined; }; } | { type: \"sli.apm.transactionErrorRate\"; params: { environment: string; service: string; transactionType: string; transactionName: string; index: string; } & { filter?: string | undefined; }; } | { type: \"sli.kql.custom\"; params: { index: string; good: string; total: string; timestampField: string; } & { filter?: string | undefined; }; } | { type: \"sli.metric.custom\"; params: { index: string; good: { metrics: ({ name: string; aggregation: \"sum\"; field: string; } & { filter?: string | undefined; })[]; equation: string; }; total: { metrics: ({ name: string; aggregation: \"sum\"; field: string; } & { filter?: string | undefined; })[]; equation: string; }; timestampField: string; } & { filter?: string | undefined; }; } | { type: \"sli.histogram.custom\"; params: { index: string; timestampField: string; good: ({ field: string; aggregation: \"value_count\"; } & { filter?: string | undefined; }) | ({ field: string; aggregation: \"range\"; from: number; to: number; } & { filter?: string | undefined; }); total: ({ field: string; aggregation: \"value_count\"; } & { filter?: string | undefined; }) | ({ field: string; aggregation: \"range\"; from: number; to: number; } & { filter?: string | undefined; }); } & { filter?: string | undefined; }; }; timeWindow: { duration: ", + " & { params: { path: { id: string; }; body: { name?: string | undefined; description?: string | undefined; indicator?: { type: \"sli.apm.transactionDuration\"; params: { environment: string; service: string; transactionType: string; transactionName: string; threshold: number; index: string; } & { filter?: string | undefined; }; } | { type: \"sli.apm.transactionErrorRate\"; params: { environment: string; service: string; transactionType: string; transactionName: string; index: string; } & { filter?: string | undefined; }; } | { type: \"sli.kql.custom\"; params: { index: string; good: string; total: string; timestampField: string; } & { filter?: string | undefined; }; } | { type: \"sli.metric.custom\"; params: { index: string; good: { metrics: ({ name: string; aggregation: \"sum\"; field: string; } & { filter?: string | undefined; })[]; equation: string; }; total: { metrics: ({ name: string; aggregation: \"sum\"; field: string; } & { filter?: string | undefined; })[]; equation: string; }; timestampField: string; } & { filter?: string | undefined; }; } | { type: \"sli.histogram.custom\"; params: { index: string; timestampField: string; good: ({ field: string; aggregation: \"value_count\"; } & { filter?: string | undefined; }) | ({ field: string; aggregation: \"range\"; from: number; to: number; } & { filter?: string | undefined; }); total: ({ field: string; aggregation: \"value_count\"; } & { filter?: string | undefined; }) | ({ field: string; aggregation: \"range\"; from: number; to: number; } & { filter?: string | undefined; }); } & { filter?: string | undefined; }; } | undefined; timeWindow?: { duration: ", { "pluginId": "@kbn/slo-schema", "scope": "common", @@ -9768,7 +8830,7 @@ "section": "def-common.Duration", "text": "Duration" }, - "; type: \"calendarAligned\"; }; budgetingMethod: \"occurrences\" | \"timeslices\"; objective: { target: number; } & { timesliceTarget?: number | undefined; timesliceWindow?: ", + "; type: \"calendarAligned\"; } | undefined; budgetingMethod?: \"occurrences\" | \"timeslices\" | undefined; objective?: ({ target: number; } & { timesliceTarget?: number | undefined; timesliceWindow?: ", { "pluginId": "@kbn/slo-schema", "scope": "common", @@ -9776,7 +8838,7 @@ "section": "def-common.Duration", "text": "Duration" }, - " | undefined; }; } & { id?: string | undefined; settings?: { syncDelay?: ", + " | undefined; }) | undefined; settings?: { syncDelay?: ", { "pluginId": "@kbn/slo-schema", "scope": "common", @@ -9786,13 +8848,165 @@ }, " | undefined; frequency?: ", { - "pluginId": "@kbn/slo-schema", - "scope": "common", - "docId": "kibKbnSloSchemaPluginApi", - "section": "def-common.Duration", - "text": "Duration" + "pluginId": "@kbn/slo-schema", + "scope": "common", + "docId": "kibKbnSloSchemaPluginApi", + "section": "def-common.Duration", + "text": "Duration" + }, + " | undefined; } | undefined; tags?: string[] | undefined; groupBy?: string | undefined; }; }; }) => Promise<{ id: string; name: string; description: string; indicator: { type: \"sli.apm.transactionDuration\"; params: { environment: string; service: string; transactionType: string; transactionName: string; threshold: number; index: string; } & { filter?: string | undefined; }; } | { type: \"sli.apm.transactionErrorRate\"; params: { environment: string; service: string; transactionType: string; transactionName: string; index: string; } & { filter?: string | undefined; }; } | { type: \"sli.kql.custom\"; params: { index: string; good: string; total: string; timestampField: string; } & { filter?: string | undefined; }; } | { type: \"sli.metric.custom\"; params: { index: string; good: { metrics: ({ name: string; aggregation: \"sum\"; field: string; } & { filter?: string | undefined; })[]; equation: string; }; total: { metrics: ({ name: string; aggregation: \"sum\"; field: string; } & { filter?: string | undefined; })[]; equation: string; }; timestampField: string; } & { filter?: string | undefined; }; } | { type: \"sli.histogram.custom\"; params: { index: string; timestampField: string; good: ({ field: string; aggregation: \"value_count\"; } & { filter?: string | undefined; }) | ({ field: string; aggregation: \"range\"; from: number; to: number; } & { filter?: string | undefined; }); total: ({ field: string; aggregation: \"value_count\"; } & { filter?: string | undefined; }) | ({ field: string; aggregation: \"range\"; from: number; to: number; } & { filter?: string | undefined; }); } & { filter?: string | undefined; }; }; timeWindow: { duration: string; type: \"rolling\"; } | { duration: string; type: \"calendarAligned\"; }; budgetingMethod: \"occurrences\" | \"timeslices\"; objective: { target: number; } & { timesliceTarget?: number | undefined; timesliceWindow?: string | undefined; }; revision: number; settings: { syncDelay: string; frequency: string; }; enabled: boolean; tags: string[]; groupBy: string; createdAt: string; updatedAt: string; } & { instanceId?: string | undefined; }>; } & ", + { + "pluginId": "observability", + "scope": "server", + "docId": "kibObservabilityPluginApi", + "section": "def-server.ObservabilityRouteCreateOptions", + "text": "ObservabilityRouteCreateOptions" + }, + "; \"GET /api/observability/slos/{id} 2023-10-31\": { endpoint: \"GET /api/observability/slos/{id} 2023-10-31\"; params?: ", + "IntersectionC", + "<[", + "TypeC", + "<{ path: ", + "TypeC", + "<{ id: ", + "StringC", + "; }>; }>, ", + "PartialC", + "<{ query: ", + "PartialC", + "<{ instanceId: ", + "UnionC", + "<[", + "LiteralC", + "<\"*\">, ", + "StringC", + "]>; }>; }>]> | undefined; handler: ({}: ", + { + "pluginId": "observability", + "scope": "server", + "docId": "kibObservabilityPluginApi", + "section": "def-server.ObservabilityRouteHandlerResources", + "text": "ObservabilityRouteHandlerResources" + }, + " & { params: { path: { id: string; }; } & { query?: { instanceId?: string | undefined; } | undefined; }; }) => Promise<{ id: string; name: string; description: string; indicator: { type: \"sli.apm.transactionDuration\"; params: { environment: string; service: string; transactionType: string; transactionName: string; threshold: number; index: string; } & { filter?: string | undefined; }; } | { type: \"sli.apm.transactionErrorRate\"; params: { environment: string; service: string; transactionType: string; transactionName: string; index: string; } & { filter?: string | undefined; }; } | { type: \"sli.kql.custom\"; params: { index: string; good: string; total: string; timestampField: string; } & { filter?: string | undefined; }; } | { type: \"sli.metric.custom\"; params: { index: string; good: { metrics: ({ name: string; aggregation: \"sum\"; field: string; } & { filter?: string | undefined; })[]; equation: string; }; total: { metrics: ({ name: string; aggregation: \"sum\"; field: string; } & { filter?: string | undefined; })[]; equation: string; }; timestampField: string; } & { filter?: string | undefined; }; } | { type: \"sli.histogram.custom\"; params: { index: string; timestampField: string; good: ({ field: string; aggregation: \"value_count\"; } & { filter?: string | undefined; }) | ({ field: string; aggregation: \"range\"; from: number; to: number; } & { filter?: string | undefined; }); total: ({ field: string; aggregation: \"value_count\"; } & { filter?: string | undefined; }) | ({ field: string; aggregation: \"range\"; from: number; to: number; } & { filter?: string | undefined; }); } & { filter?: string | undefined; }; }; timeWindow: { duration: string; type: \"rolling\"; } | { duration: string; type: \"calendarAligned\"; }; budgetingMethod: \"occurrences\" | \"timeslices\"; objective: { target: number; } & { timesliceTarget?: number | undefined; timesliceWindow?: string | undefined; }; revision: number; settings: { syncDelay: string; frequency: string; }; enabled: boolean; tags: string[]; groupBy: string; createdAt: string; updatedAt: string; } & { instanceId?: string | undefined; } & { summary: { status: \"HEALTHY\" | \"NO_DATA\" | \"DEGRADING\" | \"VIOLATED\"; sliValue: number; errorBudget: { initial: number; consumed: number; remaining: number; isEstimated: boolean; }; }; }>; } & ", + { + "pluginId": "observability", + "scope": "server", + "docId": "kibObservabilityPluginApi", + "section": "def-server.ObservabilityRouteCreateOptions", + "text": "ObservabilityRouteCreateOptions" + }, + "; \"GET /api/observability/slos 2023-10-31\": { endpoint: \"GET /api/observability/slos 2023-10-31\"; params?: ", + "PartialC", + "<{ query: ", + "PartialC", + "<{ kqlQuery: ", + "StringC", + "; page: ", + "StringC", + "; perPage: ", + "StringC", + "; sortBy: ", + "UnionC", + "<[", + "LiteralC", + "<\"error_budget_consumed\">, ", + "LiteralC", + "<\"error_budget_remaining\">, ", + "LiteralC", + "<\"sli_value\">, ", + "LiteralC", + "<\"status\">]>; sortDirection: ", + "UnionC", + "<[", + "LiteralC", + "<\"asc\">, ", + "LiteralC", + "<\"desc\">]>; }>; }> | undefined; handler: ({}: ", + { + "pluginId": "observability", + "scope": "server", + "docId": "kibObservabilityPluginApi", + "section": "def-server.ObservabilityRouteHandlerResources", + "text": "ObservabilityRouteHandlerResources" + }, + " & { params?: { query?: { kqlQuery?: string | undefined; page?: string | undefined; perPage?: string | undefined; sortBy?: \"status\" | \"error_budget_consumed\" | \"error_budget_remaining\" | \"sli_value\" | undefined; sortDirection?: \"asc\" | \"desc\" | undefined; } | undefined; } | undefined; }) => Promise<{ page: number; perPage: number; total: number; results: ({ id: string; name: string; description: string; indicator: { type: \"sli.apm.transactionDuration\"; params: { environment: string; service: string; transactionType: string; transactionName: string; threshold: number; index: string; } & { filter?: string | undefined; }; } | { type: \"sli.apm.transactionErrorRate\"; params: { environment: string; service: string; transactionType: string; transactionName: string; index: string; } & { filter?: string | undefined; }; } | { type: \"sli.kql.custom\"; params: { index: string; good: string; total: string; timestampField: string; } & { filter?: string | undefined; }; } | { type: \"sli.metric.custom\"; params: { index: string; good: { metrics: ({ name: string; aggregation: \"sum\"; field: string; } & { filter?: string | undefined; })[]; equation: string; }; total: { metrics: ({ name: string; aggregation: \"sum\"; field: string; } & { filter?: string | undefined; })[]; equation: string; }; timestampField: string; } & { filter?: string | undefined; }; } | { type: \"sli.histogram.custom\"; params: { index: string; timestampField: string; good: ({ field: string; aggregation: \"value_count\"; } & { filter?: string | undefined; }) | ({ field: string; aggregation: \"range\"; from: number; to: number; } & { filter?: string | undefined; }); total: ({ field: string; aggregation: \"value_count\"; } & { filter?: string | undefined; }) | ({ field: string; aggregation: \"range\"; from: number; to: number; } & { filter?: string | undefined; }); } & { filter?: string | undefined; }; }; timeWindow: { duration: string; type: \"rolling\"; } | { duration: string; type: \"calendarAligned\"; }; budgetingMethod: \"occurrences\" | \"timeslices\"; objective: { target: number; } & { timesliceTarget?: number | undefined; timesliceWindow?: string | undefined; }; revision: number; settings: { syncDelay: string; frequency: string; }; enabled: boolean; tags: string[]; groupBy: string; createdAt: string; updatedAt: string; } & { instanceId?: string | undefined; } & { summary: { status: \"HEALTHY\" | \"NO_DATA\" | \"DEGRADING\" | \"VIOLATED\"; sliValue: number; errorBudget: { initial: number; consumed: number; remaining: number; isEstimated: boolean; }; }; })[]; }>; } & ", + { + "pluginId": "observability", + "scope": "server", + "docId": "kibObservabilityPluginApi", + "section": "def-server.ObservabilityRouteCreateOptions", + "text": "ObservabilityRouteCreateOptions" + }, + "; \"GET /internal/observability/slos/_definitions\": { endpoint: \"GET /internal/observability/slos/_definitions\"; params?: ", + "TypeC", + "<{ query: ", + "TypeC", + "<{ search: ", + "StringC", + "; }>; }> | undefined; handler: ({}: ", + { + "pluginId": "observability", + "scope": "server", + "docId": "kibObservabilityPluginApi", + "section": "def-server.ObservabilityRouteHandlerResources", + "text": "ObservabilityRouteHandlerResources" + }, + " & { params: { query: { search: string; }; }; }) => Promise<({ id: string; name: string; description: string; indicator: { type: \"sli.apm.transactionDuration\"; params: { environment: string; service: string; transactionType: string; transactionName: string; threshold: number; index: string; } & { filter?: string | undefined; }; } | { type: \"sli.apm.transactionErrorRate\"; params: { environment: string; service: string; transactionType: string; transactionName: string; index: string; } & { filter?: string | undefined; }; } | { type: \"sli.kql.custom\"; params: { index: string; good: string; total: string; timestampField: string; } & { filter?: string | undefined; }; } | { type: \"sli.metric.custom\"; params: { index: string; good: { metrics: ({ name: string; aggregation: \"sum\"; field: string; } & { filter?: string | undefined; })[]; equation: string; }; total: { metrics: ({ name: string; aggregation: \"sum\"; field: string; } & { filter?: string | undefined; })[]; equation: string; }; timestampField: string; } & { filter?: string | undefined; }; } | { type: \"sli.histogram.custom\"; params: { index: string; timestampField: string; good: ({ field: string; aggregation: \"value_count\"; } & { filter?: string | undefined; }) | ({ field: string; aggregation: \"range\"; from: number; to: number; } & { filter?: string | undefined; }); total: ({ field: string; aggregation: \"value_count\"; } & { filter?: string | undefined; }) | ({ field: string; aggregation: \"range\"; from: number; to: number; } & { filter?: string | undefined; }); } & { filter?: string | undefined; }; }; timeWindow: { duration: string; type: \"rolling\"; } | { duration: string; type: \"calendarAligned\"; }; budgetingMethod: \"occurrences\" | \"timeslices\"; objective: { target: number; } & { timesliceTarget?: number | undefined; timesliceWindow?: string | undefined; }; revision: number; settings: { syncDelay: string; frequency: string; }; enabled: boolean; tags: string[]; groupBy: string; createdAt: string; updatedAt: string; } & { instanceId?: string | undefined; })[]>; } & ", + { + "pluginId": "observability", + "scope": "server", + "docId": "kibObservabilityPluginApi", + "section": "def-server.ObservabilityRouteCreateOptions", + "text": "ObservabilityRouteCreateOptions" + }, + "; \"POST /internal/observability/slos/_historical_summary\": { endpoint: \"POST /internal/observability/slos/_historical_summary\"; params?: ", + "TypeC", + "<{ body: ", + "TypeC", + "<{ list: ", + "ArrayC", + "<", + "TypeC", + "<{ sloId: ", + "StringC", + "; instanceId: ", + "UnionC", + "<[", + "LiteralC", + "<\"*\">, ", + "StringC", + "]>; }>>; }>; }> | undefined; handler: ({}: ", + { + "pluginId": "observability", + "scope": "server", + "docId": "kibObservabilityPluginApi", + "section": "def-server.ObservabilityRouteHandlerResources", + "text": "ObservabilityRouteHandlerResources" + }, + " & { params: { body: { list: { sloId: string; instanceId: string; }[]; }; }; }) => Promise<{ sloId: string; instanceId: string; data: ({ date: string; } & { status: \"HEALTHY\" | \"NO_DATA\" | \"DEGRADING\" | \"VIOLATED\"; sliValue: number; errorBudget: { initial: number; consumed: number; remaining: number; isEstimated: boolean; }; })[]; }[]>; } & ", + { + "pluginId": "observability", + "scope": "server", + "docId": "kibObservabilityPluginApi", + "section": "def-server.ObservabilityRouteCreateOptions", + "text": "ObservabilityRouteCreateOptions" + }, + "; \"POST /api/observability/slos/{id}/enable 2023-10-31\": { endpoint: \"POST /api/observability/slos/{id}/enable 2023-10-31\"; params?: ", + "TypeC", + "<{ path: ", + "TypeC", + "<{ id: ", + "StringC", + "; }>; }> | undefined; handler: ({}: ", + { + "pluginId": "observability", + "scope": "server", + "docId": "kibObservabilityPluginApi", + "section": "def-server.ObservabilityRouteHandlerResources", + "text": "ObservabilityRouteHandlerResources" }, - " | undefined; } | undefined; tags?: string[] | undefined; groupBy?: string | undefined; }; }; }) => Promise<{ id: string; }>; } & ", + " & { params: { path: { id: string; }; }; }) => Promise; } & ", { "pluginId": "observability", "scope": "server", @@ -9800,15 +9014,11 @@ "section": "def-server.ObservabilityRouteCreateOptions", "text": "ObservabilityRouteCreateOptions" }, - "; \"GET /api/observability/rules/alerts/dynamic_index_pattern 2023-10-31\": { endpoint: \"GET /api/observability/rules/alerts/dynamic_index_pattern 2023-10-31\"; params?: ", + "; \"POST /api/observability/slos/{id}/disable 2023-10-31\": { endpoint: \"POST /api/observability/slos/{id}/disable 2023-10-31\"; params?: ", "TypeC", - "<{ query: ", + "<{ path: ", "TypeC", - "<{ registrationContexts: ", - "ArrayC", - "<", - "StringC", - ">; namespace: ", + "<{ id: ", "StringC", "; }>; }> | undefined; handler: ({}: ", { @@ -9818,7 +9028,7 @@ "section": "def-server.ObservabilityRouteHandlerResources", "text": "ObservabilityRouteHandlerResources" }, - " & { params: { query: { registrationContexts: string[]; namespace: string; }; }; }) => Promise; } & ", + " & { params: { path: { id: string; }; }; }) => Promise; } & ", { "pluginId": "observability", "scope": "server", @@ -9826,57 +9036,19 @@ "section": "def-server.ObservabilityRouteCreateOptions", "text": "ObservabilityRouteCreateOptions" }, - "; }[TEndpoint] extends { endpoint: any; params?: any; handler: ({}: any) => Promise; } & ", - "ServerRouteCreateOptions", - " ? TReturnType : never" - ], - "path": "x-pack/plugins/observability/server/routes/types.ts", - "deprecated": false, - "trackAdoption": false, - "initialIsOpen": false - }, - { - "parentPluginId": "observability", - "id": "def-server.ObservabilityConfig", - "type": "Type", - "tags": [], - "label": "ObservabilityConfig", - "description": [], - "signature": [ - "{ readonly enabled: boolean; readonly unsafe: Readonly<{} & { alertDetails: Readonly<{} & { uptime: Readonly<{} & { enabled: boolean; }>; metrics: Readonly<{} & { enabled: boolean; }>; observability: Readonly<{} & { enabled: boolean; }>; logs: Readonly<{} & { enabled: boolean; }>; }>; thresholdRule: Readonly<{} & { enabled: boolean; }>; }>; readonly annotations: Readonly<{} & { index: string; enabled: boolean; }>; readonly customThresholdRule: Readonly<{} & { groupByPageSize: number; }>; readonly compositeSlo: Readonly<{} & { enabled: boolean; }>; }" - ], - "path": "x-pack/plugins/observability/server/index.ts", - "deprecated": false, - "trackAdoption": false, - "initialIsOpen": false - }, - { - "parentPluginId": "observability", - "id": "def-server.ObservabilityServerRouteRepository", - "type": "Type", - "tags": [], - "label": "ObservabilityServerRouteRepository", - "description": [], - "signature": [ - "{ \"GET /api/observability/composite_slos 2023-05-24\"?: ({ endpoint: \"GET /api/observability/composite_slos 2023-05-24\"; params?: ", - "PartialC", - "<{ query: ", - "PartialC", - "<{ name: ", - "StringC", - "; page: ", + "; \"POST /api/observability/slos/_delete_instances 2023-10-31\": { endpoint: \"POST /api/observability/slos/_delete_instances 2023-10-31\"; params?: ", + "TypeC", + "<{ body: ", + "TypeC", + "<{ list: ", + "ArrayC", + "<", + "TypeC", + "<{ sloId: ", "StringC", - "; perPage: ", + "; instanceId: ", "StringC", - "; sortBy: ", - "LiteralC", - "<\"creationTime\">; sortDirection: ", - "UnionC", - "<[", - "LiteralC", - "<\"asc\">, ", - "LiteralC", - "<\"desc\">]>; }>; }> | undefined; handler: ({}: ", + "; }>>; }>; }> | undefined; handler: ({}: ", { "pluginId": "observability", "scope": "server", @@ -9884,7 +9056,7 @@ "section": "def-server.ObservabilityRouteHandlerResources", "text": "ObservabilityRouteHandlerResources" }, - " & { params?: { query?: { name?: string | undefined; page?: string | undefined; perPage?: string | undefined; sortBy?: \"creationTime\" | undefined; sortDirection?: \"asc\" | \"desc\" | undefined; } | undefined; } | undefined; }) => Promise<{ page: number; perPage: number; total: number; results: ({ id: string; name: string; timeWindow: { duration: string; type: \"rolling\"; } | { duration: string; type: \"calendarAligned\"; }; budgetingMethod: \"occurrences\" | \"timeslices\"; objective: { target: number; } & { timesliceTarget?: number | undefined; timesliceWindow?: string | undefined; }; compositeMethod: \"weightedAverage\"; sources: { id: string; revision: number; weight: number; }[]; tags: string[]; createdAt: string; updatedAt: string; } & { summary: { status: \"HEALTHY\" | \"NO_DATA\" | \"DEGRADING\" | \"VIOLATED\"; sliValue: number; errorBudget: { initial: number; consumed: number; remaining: number; isEstimated: boolean; }; }; })[]; }>; } & ", + " & { params: { body: { list: { sloId: string; instanceId: string; }[]; }; }; }) => Promise; } & ", { "pluginId": "observability", "scope": "server", @@ -9892,7 +9064,7 @@ "section": "def-server.ObservabilityRouteCreateOptions", "text": "ObservabilityRouteCreateOptions" }, - ") | undefined; \"GET /api/observability/composite_slos/{id} 2023-05-24\"?: ({ endpoint: \"GET /api/observability/composite_slos/{id} 2023-05-24\"; params?: ", + "; \"DELETE /api/observability/slos/{id} 2023-10-31\": { endpoint: \"DELETE /api/observability/slos/{id} 2023-10-31\"; params?: ", "TypeC", "<{ path: ", "TypeC", @@ -9906,7 +9078,7 @@ "section": "def-server.ObservabilityRouteHandlerResources", "text": "ObservabilityRouteHandlerResources" }, - " & { params: { path: { id: string; }; }; }) => Promise<{ id: string; name: string; timeWindow: { duration: string; type: \"rolling\"; } | { duration: string; type: \"calendarAligned\"; }; budgetingMethod: \"occurrences\" | \"timeslices\"; objective: { target: number; } & { timesliceTarget?: number | undefined; timesliceWindow?: string | undefined; }; compositeMethod: \"weightedAverage\"; sources: { id: string; revision: number; weight: number; }[]; tags: string[]; createdAt: string; updatedAt: string; } & { summary: { status: \"HEALTHY\" | \"NO_DATA\" | \"DEGRADING\" | \"VIOLATED\"; sliValue: number; errorBudget: { initial: number; consumed: number; remaining: number; isEstimated: boolean; }; }; }>; } & ", + " & { params: { path: { id: string; }; }; }) => Promise; } & ", { "pluginId": "observability", "scope": "server", @@ -9914,51 +9086,249 @@ "section": "def-server.ObservabilityRouteCreateOptions", "text": "ObservabilityRouteCreateOptions" }, - ") | undefined; \"DELETE /api/observability/composite_slos/{id} 2023-05-24\"?: ({ endpoint: \"DELETE /api/observability/composite_slos/{id} 2023-05-24\"; params?: ", + "; \"POST /api/observability/slos 2023-10-31\": { endpoint: \"POST /api/observability/slos 2023-10-31\"; params?: ", "TypeC", - "<{ path: ", + "<{ body: ", + "IntersectionC", + "<[", + "TypeC", + "<{ name: ", + "StringC", + "; description: ", + "StringC", + "; indicator: ", + "UnionC", + "<[", + "TypeC", + "<{ type: ", + "LiteralC", + "<\"sli.apm.transactionDuration\">; params: ", + "IntersectionC", + "<[", + "TypeC", + "<{ environment: ", + "UnionC", + "<[", + "LiteralC", + "<\"*\">, ", + "StringC", + "]>; service: ", + "UnionC", + "<[", + "LiteralC", + "<\"*\">, ", + "StringC", + "]>; transactionType: ", + "UnionC", + "<[", + "LiteralC", + "<\"*\">, ", + "StringC", + "]>; transactionName: ", + "UnionC", + "<[", + "LiteralC", + "<\"*\">, ", + "StringC", + "]>; threshold: ", + "NumberC", + "; index: ", + "StringC", + "; }>, ", + "PartialC", + "<{ filter: ", + "StringC", + "; }>]>; }>, ", + "TypeC", + "<{ type: ", + "LiteralC", + "<\"sli.apm.transactionErrorRate\">; params: ", + "IntersectionC", + "<[", + "TypeC", + "<{ environment: ", + "UnionC", + "<[", + "LiteralC", + "<\"*\">, ", + "StringC", + "]>; service: ", + "UnionC", + "<[", + "LiteralC", + "<\"*\">, ", + "StringC", + "]>; transactionType: ", + "UnionC", + "<[", + "LiteralC", + "<\"*\">, ", + "StringC", + "]>; transactionName: ", + "UnionC", + "<[", + "LiteralC", + "<\"*\">, ", + "StringC", + "]>; index: ", + "StringC", + "; }>, ", + "PartialC", + "<{ filter: ", + "StringC", + "; }>]>; }>, ", + "TypeC", + "<{ type: ", + "LiteralC", + "<\"sli.kql.custom\">; params: ", + "IntersectionC", + "<[", + "TypeC", + "<{ index: ", + "StringC", + "; good: ", + "StringC", + "; total: ", + "StringC", + "; timestampField: ", + "StringC", + "; }>, ", + "PartialC", + "<{ filter: ", + "StringC", + "; }>]>; }>, ", + "TypeC", + "<{ type: ", + "LiteralC", + "<\"sli.metric.custom\">; params: ", + "IntersectionC", + "<[", + "TypeC", + "<{ index: ", + "StringC", + "; good: ", + "TypeC", + "<{ metrics: ", + "ArrayC", + "<", + "IntersectionC", + "<[", + "TypeC", + "<{ name: ", + "StringC", + "; aggregation: ", + "KeyofC", + "<{ sum: boolean; }>; field: ", + "StringC", + "; }>, ", + "PartialC", + "<{ filter: ", + "StringC", + "; }>]>>; equation: ", + "StringC", + "; }>; total: ", + "TypeC", + "<{ metrics: ", + "ArrayC", + "<", + "IntersectionC", + "<[", + "TypeC", + "<{ name: ", + "StringC", + "; aggregation: ", + "KeyofC", + "<{ sum: boolean; }>; field: ", + "StringC", + "; }>, ", + "PartialC", + "<{ filter: ", + "StringC", + "; }>]>>; equation: ", + "StringC", + "; }>; timestampField: ", + "StringC", + "; }>, ", + "PartialC", + "<{ filter: ", + "StringC", + "; }>]>; }>, ", + "TypeC", + "<{ type: ", + "LiteralC", + "<\"sli.histogram.custom\">; params: ", + "IntersectionC", + "<[", "TypeC", - "<{ id: ", + "<{ index: ", "StringC", - "; }>; }> | undefined; handler: ({}: ", - { - "pluginId": "observability", - "scope": "server", - "docId": "kibObservabilityPluginApi", - "section": "def-server.ObservabilityRouteHandlerResources", - "text": "ObservabilityRouteHandlerResources" - }, - " & { params: { path: { id: string; }; }; }) => Promise; } & ", - { - "pluginId": "observability", - "scope": "server", - "docId": "kibObservabilityPluginApi", - "section": "def-server.ObservabilityRouteCreateOptions", - "text": "ObservabilityRouteCreateOptions" - }, - ") | undefined; \"PUT /api/observability/composite_slos/{id} 2023-05-24\"?: ({ endpoint: \"PUT /api/observability/composite_slos/{id} 2023-05-24\"; params?: ", + "; timestampField: ", + "StringC", + "; good: ", + "UnionC", + "<[", + "IntersectionC", + "<[", "TypeC", - "<{ path: ", + "<{ field: ", + "StringC", + "; aggregation: ", + "LiteralC", + "<\"value_count\">; }>, ", + "PartialC", + "<{ filter: ", + "StringC", + "; }>]>, ", + "IntersectionC", + "<[", "TypeC", - "<{ id: ", + "<{ field: ", "StringC", - "; }>; body: ", + "; aggregation: ", + "LiteralC", + "<\"range\">; from: ", + "NumberC", + "; to: ", + "NumberC", + "; }>, ", "PartialC", - "<{ name: ", + "<{ filter: ", + "StringC", + "; }>]>]>; total: ", + "UnionC", + "<[", + "IntersectionC", + "<[", + "TypeC", + "<{ field: ", "StringC", - "; compositeMethod: ", + "; aggregation: ", "LiteralC", - "<\"weightedAverage\">; sources: ", - "ArrayC", - "<", + "<\"value_count\">; }>, ", + "PartialC", + "<{ filter: ", + "StringC", + "; }>]>, ", + "IntersectionC", + "<[", "TypeC", - "<{ id: ", + "<{ field: ", "StringC", - "; revision: ", + "; aggregation: ", + "LiteralC", + "<\"range\">; from: ", "NumberC", - "; weight: ", + "; to: ", "NumberC", - "; }>>; timeWindow: ", + "; }>, ", + "PartialC", + "<{ filter: ", + "StringC", + "; }>]>]>; }>, ", + "PartialC", + "<{ filter: ", + "StringC", + "; }>]>; }>]>; timeWindow: ", "UnionC", "<[", "TypeC", @@ -10014,11 +9384,43 @@ "section": "def-common.Duration", "text": "Duration" }, - ", string, unknown>; }>]>; tags: ", + ", string, unknown>; }>]>; }>, ", + "PartialC", + "<{ id: ", + "StringC", + "; settings: ", + "PartialC", + "<{ syncDelay: ", + "Type", + "<", + { + "pluginId": "@kbn/slo-schema", + "scope": "common", + "docId": "kibKbnSloSchemaPluginApi", + "section": "def-common.Duration", + "text": "Duration" + }, + ", string, unknown>; frequency: ", + "Type", + "<", + { + "pluginId": "@kbn/slo-schema", + "scope": "common", + "docId": "kibKbnSloSchemaPluginApi", + "section": "def-common.Duration", + "text": "Duration" + }, + ", string, unknown>; }>; tags: ", "ArrayC", "<", "StringC", - ">; }>; }> | undefined; handler: ({}: ", + ">; groupBy: ", + "UnionC", + "<[", + "LiteralC", + "<\"*\">, ", + "StringC", + "]>; }>]>; }> | undefined; handler: ({}: ", { "pluginId": "observability", "scope": "server", @@ -10026,7 +9428,7 @@ "section": "def-server.ObservabilityRouteHandlerResources", "text": "ObservabilityRouteHandlerResources" }, - " & { params: { path: { id: string; }; body: { name?: string | undefined; compositeMethod?: \"weightedAverage\" | undefined; sources?: { id: string; revision: number; weight: number; }[] | undefined; timeWindow?: { duration: ", + " & { params: { body: { name: string; description: string; indicator: { type: \"sli.apm.transactionDuration\"; params: { environment: string; service: string; transactionType: string; transactionName: string; threshold: number; index: string; } & { filter?: string | undefined; }; } | { type: \"sli.apm.transactionErrorRate\"; params: { environment: string; service: string; transactionType: string; transactionName: string; index: string; } & { filter?: string | undefined; }; } | { type: \"sli.kql.custom\"; params: { index: string; good: string; total: string; timestampField: string; } & { filter?: string | undefined; }; } | { type: \"sli.metric.custom\"; params: { index: string; good: { metrics: ({ name: string; aggregation: \"sum\"; field: string; } & { filter?: string | undefined; })[]; equation: string; }; total: { metrics: ({ name: string; aggregation: \"sum\"; field: string; } & { filter?: string | undefined; })[]; equation: string; }; timestampField: string; } & { filter?: string | undefined; }; } | { type: \"sli.histogram.custom\"; params: { index: string; timestampField: string; good: ({ field: string; aggregation: \"value_count\"; } & { filter?: string | undefined; }) | ({ field: string; aggregation: \"range\"; from: number; to: number; } & { filter?: string | undefined; }); total: ({ field: string; aggregation: \"value_count\"; } & { filter?: string | undefined; }) | ({ field: string; aggregation: \"range\"; from: number; to: number; } & { filter?: string | undefined; }); } & { filter?: string | undefined; }; }; timeWindow: { duration: ", { "pluginId": "@kbn/slo-schema", "scope": "common", @@ -10042,7 +9444,7 @@ "section": "def-common.Duration", "text": "Duration" }, - "; type: \"calendarAligned\"; } | undefined; budgetingMethod?: \"occurrences\" | \"timeslices\" | undefined; objective?: ({ target: number; } & { timesliceTarget?: number | undefined; timesliceWindow?: ", + "; type: \"calendarAligned\"; }; budgetingMethod: \"occurrences\" | \"timeslices\"; objective: { target: number; } & { timesliceTarget?: number | undefined; timesliceWindow?: ", { "pluginId": "@kbn/slo-schema", "scope": "common", @@ -10050,29 +9452,7 @@ "section": "def-common.Duration", "text": "Duration" }, - " | undefined; }) | undefined; tags?: string[] | undefined; }; }; }) => Promise<{ id: string; name: string; timeWindow: { duration: string; type: \"rolling\"; } | { duration: string; type: \"calendarAligned\"; }; budgetingMethod: \"occurrences\" | \"timeslices\"; objective: { target: number; } & { timesliceTarget?: number | undefined; timesliceWindow?: string | undefined; }; compositeMethod: \"weightedAverage\"; sources: { id: string; revision: number; weight: number; }[]; tags: string[]; createdAt: string; updatedAt: string; }>; } & ", - { - "pluginId": "observability", - "scope": "server", - "docId": "kibObservabilityPluginApi", - "section": "def-server.ObservabilityRouteCreateOptions", - "text": "ObservabilityRouteCreateOptions" - }, - ") | undefined; \"POST /api/observability/composite_slos 2023-05-24\"?: ({ endpoint: \"POST /api/observability/composite_slos 2023-05-24\"; params?: ", - "TypeC", - "<{ body: ", - "IntersectionC", - "<[", - "TypeC", - "<{ name: ", - "StringC", - "; timeWindow: ", - "UnionC", - "<[", - "TypeC", - "<{ duration: ", - "Type", - "<", + " | undefined; }; } & { id?: string | undefined; settings?: { syncDelay?: ", { "pluginId": "@kbn/slo-schema", "scope": "common", @@ -10080,13 +9460,7 @@ "section": "def-common.Duration", "text": "Duration" }, - ", string, unknown>; type: ", - "LiteralC", - "<\"rolling\">; }>, ", - "TypeC", - "<{ duration: ", - "Type", - "<", + " | undefined; frequency?: ", { "pluginId": "@kbn/slo-schema", "scope": "common", @@ -10094,55 +9468,25 @@ "section": "def-common.Duration", "text": "Duration" }, - ", string, unknown>; type: ", - "LiteralC", - "<\"calendarAligned\">; }>]>; budgetingMethod: ", - "UnionC", - "<[", - "LiteralC", - "<\"occurrences\">, ", - "LiteralC", - "<\"timeslices\">]>; objective: ", - "IntersectionC", - "<[", - "TypeC", - "<{ target: ", - "NumberC", - "; }>, ", - "PartialC", - "<{ timesliceTarget: ", - "NumberC", - "; timesliceWindow: ", - "Type", - "<", + " | undefined; } | undefined; tags?: string[] | undefined; groupBy?: string | undefined; }; }; }) => Promise<{ id: string; }>; } & ", { - "pluginId": "@kbn/slo-schema", - "scope": "common", - "docId": "kibKbnSloSchemaPluginApi", - "section": "def-common.Duration", - "text": "Duration" + "pluginId": "observability", + "scope": "server", + "docId": "kibObservabilityPluginApi", + "section": "def-server.ObservabilityRouteCreateOptions", + "text": "ObservabilityRouteCreateOptions" }, - ", string, unknown>; }>]>; compositeMethod: ", - "LiteralC", - "<\"weightedAverage\">; sources: ", - "ArrayC", - "<", + "; \"GET /api/observability/rules/alerts/dynamic_index_pattern 2023-10-31\": { endpoint: \"GET /api/observability/rules/alerts/dynamic_index_pattern 2023-10-31\"; params?: ", "TypeC", - "<{ id: ", - "StringC", - "; revision: ", - "NumberC", - "; weight: ", - "NumberC", - "; }>>; }>, ", - "PartialC", - "<{ id: ", - "StringC", - "; tags: ", + "<{ query: ", + "TypeC", + "<{ registrationContexts: ", "ArrayC", "<", "StringC", - ">; }>]>; }> | undefined; handler: ({}: ", + ">; namespace: ", + "StringC", + "; }>; }> | undefined; handler: ({}: ", { "pluginId": "observability", "scope": "server", @@ -10150,31 +9494,7 @@ "section": "def-server.ObservabilityRouteHandlerResources", "text": "ObservabilityRouteHandlerResources" }, - " & { params: { body: { name: string; timeWindow: { duration: ", - { - "pluginId": "@kbn/slo-schema", - "scope": "common", - "docId": "kibKbnSloSchemaPluginApi", - "section": "def-common.Duration", - "text": "Duration" - }, - "; type: \"rolling\"; } | { duration: ", - { - "pluginId": "@kbn/slo-schema", - "scope": "common", - "docId": "kibKbnSloSchemaPluginApi", - "section": "def-common.Duration", - "text": "Duration" - }, - "; type: \"calendarAligned\"; }; budgetingMethod: \"occurrences\" | \"timeslices\"; objective: { target: number; } & { timesliceTarget?: number | undefined; timesliceWindow?: ", - { - "pluginId": "@kbn/slo-schema", - "scope": "common", - "docId": "kibKbnSloSchemaPluginApi", - "section": "def-common.Duration", - "text": "Duration" - }, - " | undefined; }; compositeMethod: \"weightedAverage\"; sources: { id: string; revision: number; weight: number; }[]; } & { id?: string | undefined; tags?: string[] | undefined; }; }; }) => Promise<{ id: string; }>; } & ", + " & { params: { query: { registrationContexts: string[]; namespace: string; }; }; }) => Promise; } & ", { "pluginId": "observability", "scope": "server", @@ -10182,7 +9502,39 @@ "section": "def-server.ObservabilityRouteCreateOptions", "text": "ObservabilityRouteCreateOptions" }, - ") | undefined; \"GET /internal/observability/slos/{id}/_instances\": { endpoint: \"GET /internal/observability/slos/{id}/_instances\"; params?: ", + "; }[TEndpoint] extends { endpoint: any; params?: any; handler: ({}: any) => Promise; } & ", + "ServerRouteCreateOptions", + " ? TReturnType : never" + ], + "path": "x-pack/plugins/observability/server/routes/types.ts", + "deprecated": false, + "trackAdoption": false, + "initialIsOpen": false + }, + { + "parentPluginId": "observability", + "id": "def-server.ObservabilityConfig", + "type": "Type", + "tags": [], + "label": "ObservabilityConfig", + "description": [], + "signature": [ + "{ readonly enabled: boolean; readonly unsafe: Readonly<{} & { alertDetails: Readonly<{} & { uptime: Readonly<{} & { enabled: boolean; }>; metrics: Readonly<{} & { enabled: boolean; }>; observability: Readonly<{} & { enabled: boolean; }>; logs: Readonly<{} & { enabled: boolean; }>; }>; thresholdRule: Readonly<{} & { enabled: boolean; }>; }>; readonly annotations: Readonly<{} & { index: string; enabled: boolean; }>; readonly customThresholdRule: Readonly<{} & { groupByPageSize: number; }>; }" + ], + "path": "x-pack/plugins/observability/server/index.ts", + "deprecated": false, + "trackAdoption": false, + "initialIsOpen": false + }, + { + "parentPluginId": "observability", + "id": "def-server.ObservabilityServerRouteRepository", + "type": "Type", + "tags": [], + "label": "ObservabilityServerRouteRepository", + "description": [], + "signature": [ + "{ \"GET /internal/observability/slos/{id}/_instances\": { endpoint: \"GET /internal/observability/slos/{id}/_instances\"; params?: ", "TypeC", "<{ path: ", "TypeC", diff --git a/api_docs/observability.mdx b/api_docs/observability.mdx index 406b1a7758854..55329e836f6aa 100644 --- a/api_docs/observability.mdx +++ b/api_docs/observability.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/observability title: "observability" image: https://source.unsplash.com/400x175/?github description: API docs for the observability plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'observability'] --- import observabilityObj from './observability.devdocs.json'; diff --git a/api_docs/observability_a_i_assistant.mdx b/api_docs/observability_a_i_assistant.mdx index ad0c28c661779..25655d031cd67 100644 --- a/api_docs/observability_a_i_assistant.mdx +++ b/api_docs/observability_a_i_assistant.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/observabilityAIAssistant title: "observabilityAIAssistant" image: https://source.unsplash.com/400x175/?github description: API docs for the observabilityAIAssistant plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'observabilityAIAssistant'] --- import observabilityAIAssistantObj from './observability_a_i_assistant.devdocs.json'; diff --git a/api_docs/observability_log_explorer.mdx b/api_docs/observability_log_explorer.mdx index 785491ab3d56f..c898d17d8b8ef 100644 --- a/api_docs/observability_log_explorer.mdx +++ b/api_docs/observability_log_explorer.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/observabilityLogExplorer title: "observabilityLogExplorer" image: https://source.unsplash.com/400x175/?github description: API docs for the observabilityLogExplorer plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'observabilityLogExplorer'] --- import observabilityLogExplorerObj from './observability_log_explorer.devdocs.json'; diff --git a/api_docs/observability_onboarding.mdx b/api_docs/observability_onboarding.mdx index 65abccdb2725f..fcc338bc07170 100644 --- a/api_docs/observability_onboarding.mdx +++ b/api_docs/observability_onboarding.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/observabilityOnboarding title: "observabilityOnboarding" image: https://source.unsplash.com/400x175/?github description: API docs for the observabilityOnboarding plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'observabilityOnboarding'] --- import observabilityOnboardingObj from './observability_onboarding.devdocs.json'; diff --git a/api_docs/observability_shared.mdx b/api_docs/observability_shared.mdx index c2727f378fc83..cd1d3f0f86ed4 100644 --- a/api_docs/observability_shared.mdx +++ b/api_docs/observability_shared.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/observabilityShared title: "observabilityShared" image: https://source.unsplash.com/400x175/?github description: API docs for the observabilityShared plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'observabilityShared'] --- import observabilitySharedObj from './observability_shared.devdocs.json'; diff --git a/api_docs/osquery.mdx b/api_docs/osquery.mdx index 0ee9afde4b3d4..196f23a273ba6 100644 --- a/api_docs/osquery.mdx +++ b/api_docs/osquery.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/osquery title: "osquery" image: https://source.unsplash.com/400x175/?github description: API docs for the osquery plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'osquery'] --- import osqueryObj from './osquery.devdocs.json'; diff --git a/api_docs/painless_lab.mdx b/api_docs/painless_lab.mdx index 49eaa09865613..3d7085c56f789 100644 --- a/api_docs/painless_lab.mdx +++ b/api_docs/painless_lab.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/painlessLab title: "painlessLab" image: https://source.unsplash.com/400x175/?github description: API docs for the painlessLab plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'painlessLab'] --- import painlessLabObj from './painless_lab.devdocs.json'; diff --git a/api_docs/plugin_directory.mdx b/api_docs/plugin_directory.mdx index 0249c29154560..74c0ef45c1b7d 100644 --- a/api_docs/plugin_directory.mdx +++ b/api_docs/plugin_directory.mdx @@ -7,7 +7,7 @@ id: kibDevDocsPluginDirectory slug: /kibana-dev-docs/api-meta/plugin-api-directory title: Directory description: Directory of public APIs available through plugins or packages. -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana'] --- @@ -21,7 +21,7 @@ tags: ['contributor', 'dev', 'apidocs', 'kibana'] | API Count | Any Count | Missing comments | Missing exports | |--------------|----------|-----------------|--------| -| 75816 | 223 | 64609 | 1580 | +| 75818 | 223 | 64609 | 1580 | ## Plugin Directory @@ -30,7 +30,7 @@ tags: ['contributor', 'dev', 'apidocs', 'kibana'] | | [@elastic/response-ops](https://github.com/orgs/elastic/teams/response-ops) | - | 269 | 0 | 263 | 31 | | | [@elastic/appex-sharedux @elastic/platform-deployment-management](https://github.com/orgs/elastic/teams/appex-sharedux ) | - | 17 | 1 | 15 | 2 | | | [@elastic/ml-ui](https://github.com/orgs/elastic/teams/ml-ui) | AIOps plugin maintained by ML team. | 67 | 1 | 4 | 1 | -| | [@elastic/response-ops](https://github.com/orgs/elastic/teams/response-ops) | - | 776 | 1 | 745 | 50 | +| | [@elastic/response-ops](https://github.com/orgs/elastic/teams/response-ops) | - | 785 | 1 | 754 | 50 | | | [@elastic/apm-ui](https://github.com/orgs/elastic/teams/apm-ui) | The user interface for Elastic APM | 29 | 0 | 29 | 120 | | | [@elastic/apm-ui](https://github.com/orgs/elastic/teams/apm-ui) | - | 9 | 0 | 9 | 0 | | | [@elastic/infra-monitoring-ui](https://github.com/orgs/elastic/teams/infra-monitoring-ui) | Asset manager plugin for entity assets (inventory, topology, etc) | 9 | 0 | 9 | 2 | @@ -56,11 +56,11 @@ tags: ['contributor', 'dev', 'apidocs', 'kibana'] | | [@elastic/fleet](https://github.com/orgs/elastic/teams/fleet) | Add custom data integrations so they can be displayed in the Fleet integrations app | 268 | 0 | 249 | 1 | | | [@elastic/kibana-presentation](https://github.com/orgs/elastic/teams/kibana-presentation) | Adds the Dashboard app to Kibana | 109 | 0 | 106 | 11 | | | [@elastic/kibana-presentation](https://github.com/orgs/elastic/teams/kibana-presentation) | - | 54 | 0 | 51 | 0 | -| | [@elastic/kibana-visualizations](https://github.com/orgs/elastic/teams/kibana-visualizations) | Data services are useful for searching and querying data from Elasticsearch. Helpful utilities include: a re-usable react query bar, KQL autocomplete, async search, Data Views (Index Patterns) and field formatters. | 3284 | 33 | 2549 | 24 | +| | [@elastic/kibana-visualizations](https://github.com/orgs/elastic/teams/kibana-visualizations) | Data services are useful for searching and querying data from Elasticsearch. Helpful utilities include: a re-usable react query bar, KQL autocomplete, async search, Data Views (Index Patterns) and field formatters. | 3290 | 33 | 2554 | 24 | | | [@elastic/kibana-data-discovery](https://github.com/orgs/elastic/teams/kibana-data-discovery) | This plugin provides the ability to create data views via a modal flyout inside Kibana apps | 35 | 0 | 25 | 5 | | | [@elastic/kibana-data-discovery](https://github.com/orgs/elastic/teams/kibana-data-discovery) | Reusable data view field editor across Kibana | 72 | 0 | 33 | 0 | | | [@elastic/kibana-data-discovery](https://github.com/orgs/elastic/teams/kibana-data-discovery) | Data view management app | 2 | 0 | 2 | 0 | -| | [@elastic/kibana-data-discovery](https://github.com/orgs/elastic/teams/kibana-data-discovery) | Data services are useful for searching and querying data from Elasticsearch. Helpful utilities include: a re-usable react query bar, KQL autocomplete, async search, Data Views (Index Patterns) and field formatters. | 1041 | 0 | 257 | 2 | +| | [@elastic/kibana-data-discovery](https://github.com/orgs/elastic/teams/kibana-data-discovery) | Data services are useful for searching and querying data from Elasticsearch. Helpful utilities include: a re-usable react query bar, KQL autocomplete, async search, Data Views (Index Patterns) and field formatters. | 1048 | 0 | 262 | 2 | | | [@elastic/ml-ui](https://github.com/orgs/elastic/teams/ml-ui) | The Data Visualizer tools help you understand your data, by analyzing the metrics and fields in a log file or an existing Elasticsearch index. | 31 | 3 | 25 | 1 | | | [@elastic/platform-deployment-management](https://github.com/orgs/elastic/teams/platform-deployment-management) | - | 12 | 0 | 10 | 3 | | | [@elastic/kibana-data-discovery](https://github.com/orgs/elastic/teams/kibana-data-discovery) | This plugin contains the Discover application and the saved search embeddable. | 118 | 0 | 76 | 18 | @@ -72,7 +72,7 @@ tags: ['contributor', 'dev', 'apidocs', 'kibana'] | | [@elastic/kibana-security](https://github.com/orgs/elastic/teams/kibana-security) | This plugin provides encryption and decryption utilities for saved objects containing sensitive information. | 51 | 0 | 44 | 0 | | | [@elastic/enterprise-search-frontend](https://github.com/orgs/elastic/teams/enterprise-search-frontend) | Adds dashboards for discovering and managing Enterprise Search products. | 5 | 0 | 5 | 0 | | | [@elastic/platform-deployment-management](https://github.com/orgs/elastic/teams/platform-deployment-management) | - | 115 | 3 | 111 | 3 | -| | [@elastic/kibana-visualizations](https://github.com/orgs/elastic/teams/kibana-visualizations) | The Event Annotation service contains expressions for event annotations | 200 | 0 | 200 | 6 | +| | [@elastic/kibana-visualizations](https://github.com/orgs/elastic/teams/kibana-visualizations) | The Event Annotation service contains expressions for event annotations | 201 | 0 | 201 | 6 | | | [@elastic/kibana-visualizations](https://github.com/orgs/elastic/teams/kibana-visualizations) | The listing page for event annotations. | 15 | 0 | 15 | 0 | | | [@elastic/response-ops](https://github.com/orgs/elastic/teams/response-ops) | - | 111 | 0 | 111 | 11 | | | [@elastic/uptime](https://github.com/orgs/elastic/teams/uptime) | - | 132 | 1 | 132 | 14 | @@ -113,7 +113,7 @@ tags: ['contributor', 'dev', 'apidocs', 'kibana'] | | [@elastic/kibana-presentation](https://github.com/orgs/elastic/teams/kibana-presentation) | - | 123 | 2 | 96 | 4 | | | [@elastic/kibana-security](https://github.com/orgs/elastic/teams/kibana-security) | This plugin provides UI and APIs for the interactive setup mode. | 28 | 0 | 18 | 0 | | | [@elastic/appex-sharedux](https://github.com/orgs/elastic/teams/appex-sharedux) | - | 6 | 0 | 6 | 0 | -| | [@elastic/appex-sharedux](https://github.com/orgs/elastic/teams/appex-sharedux) | - | 176 | 0 | 138 | 4 | +| | [@elastic/appex-sharedux](https://github.com/orgs/elastic/teams/appex-sharedux) | - | 173 | 0 | 137 | 4 | | kibanaUsageCollection | [@elastic/kibana-core](https://github.com/orgs/elastic/teams/kibana-core) | - | 0 | 0 | 0 | 0 | | | [@elastic/appex-sharedux](https://github.com/orgs/elastic/teams/appex-sharedux) | - | 610 | 3 | 417 | 9 | | | [@elastic/kibana-cloud-security-posture](https://github.com/orgs/elastic/teams/kibana-cloud-security-posture) | - | 5 | 0 | 5 | 1 | @@ -232,7 +232,7 @@ tags: ['contributor', 'dev', 'apidocs', 'kibana'] | | [@elastic/kibana-core](https://github.com/orgs/elastic/teams/kibana-core) | - | 21 | 0 | 0 | 0 | | | [@elastic/kibana-core](https://github.com/orgs/elastic/teams/kibana-core) | - | 18 | 0 | 2 | 0 | | | [@elastic/kibana-core](https://github.com/orgs/elastic/teams/kibana-core) | - | 17 | 0 | 17 | 0 | -| | [@elastic/apm-ui](https://github.com/orgs/elastic/teams/apm-ui) | - | 28 | 0 | 28 | 7 | +| | [@elastic/apm-ui](https://github.com/orgs/elastic/teams/apm-ui) | - | 31 | 0 | 31 | 7 | | | [@elastic/apm-ui](https://github.com/orgs/elastic/teams/apm-ui) | - | 180 | 0 | 180 | 26 | | | [@elastic/apm-ui](https://github.com/orgs/elastic/teams/apm-ui) | - | 11 | 0 | 11 | 0 | | | [@elastic/kibana-qa](https://github.com/orgs/elastic/teams/kibana-qa) | - | 12 | 0 | 12 | 0 | @@ -254,7 +254,7 @@ tags: ['contributor', 'dev', 'apidocs', 'kibana'] | | [@elastic/appex-sharedux](https://github.com/orgs/elastic/teams/appex-sharedux) | - | 15 | 0 | 15 | 0 | | | [@elastic/appex-sharedux](https://github.com/orgs/elastic/teams/appex-sharedux) | - | 10 | 0 | 10 | 0 | | | [@elastic/appex-sharedux](https://github.com/orgs/elastic/teams/appex-sharedux) | - | 59 | 0 | 41 | 4 | -| | [@elastic/kibana-data-discovery](https://github.com/orgs/elastic/teams/kibana-data-discovery) | - | 191 | 1 | 126 | 0 | +| | [@elastic/kibana-data-discovery](https://github.com/orgs/elastic/teams/kibana-data-discovery) | - | 191 | 1 | 125 | 0 | | | [@elastic/kibana-core](https://github.com/orgs/elastic/teams/kibana-core) | - | 4 | 0 | 0 | 0 | | | [@elastic/kibana-core](https://github.com/orgs/elastic/teams/kibana-core) | - | 7 | 0 | 7 | 1 | | | [@elastic/kibana-core](https://github.com/orgs/elastic/teams/kibana-core) | - | 4 | 0 | 4 | 0 | @@ -617,7 +617,7 @@ tags: ['contributor', 'dev', 'apidocs', 'kibana'] | | [@elastic/appex-sharedux](https://github.com/orgs/elastic/teams/appex-sharedux) | - | 2 | 0 | 0 | 0 | | | [@elastic/appex-sharedux](https://github.com/orgs/elastic/teams/appex-sharedux) | - | 15 | 0 | 4 | 0 | | | [@elastic/appex-sharedux](https://github.com/orgs/elastic/teams/appex-sharedux) | - | 9 | 0 | 3 | 0 | -| | [@elastic/actionable-observability](https://github.com/orgs/elastic/teams/actionable-observability) | - | 135 | 0 | 132 | 0 | +| | [@elastic/actionable-observability](https://github.com/orgs/elastic/teams/actionable-observability) | - | 114 | 0 | 111 | 0 | | | [@elastic/kibana-operations](https://github.com/orgs/elastic/teams/kibana-operations) | - | 20 | 0 | 12 | 0 | | | [@elastic/kibana-core](https://github.com/orgs/elastic/teams/kibana-core) | - | 102 | 2 | 65 | 1 | | | [@elastic/kibana-operations](https://github.com/orgs/elastic/teams/kibana-operations) | - | 4 | 0 | 2 | 0 | diff --git a/api_docs/presentation_util.mdx b/api_docs/presentation_util.mdx index 374dffc956d22..cc0483902bfec 100644 --- a/api_docs/presentation_util.mdx +++ b/api_docs/presentation_util.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/presentationUtil title: "presentationUtil" image: https://source.unsplash.com/400x175/?github description: API docs for the presentationUtil plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'presentationUtil'] --- import presentationUtilObj from './presentation_util.devdocs.json'; diff --git a/api_docs/profiling.mdx b/api_docs/profiling.mdx index 99627e5d8dc83..283215d5ff11f 100644 --- a/api_docs/profiling.mdx +++ b/api_docs/profiling.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/profiling title: "profiling" image: https://source.unsplash.com/400x175/?github description: API docs for the profiling plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'profiling'] --- import profilingObj from './profiling.devdocs.json'; diff --git a/api_docs/profiling_data_access.mdx b/api_docs/profiling_data_access.mdx index 851fe998ea03c..3ddce8482cc0c 100644 --- a/api_docs/profiling_data_access.mdx +++ b/api_docs/profiling_data_access.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/profilingDataAccess title: "profilingDataAccess" image: https://source.unsplash.com/400x175/?github description: API docs for the profilingDataAccess plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'profilingDataAccess'] --- import profilingDataAccessObj from './profiling_data_access.devdocs.json'; diff --git a/api_docs/remote_clusters.mdx b/api_docs/remote_clusters.mdx index 1ee1a3e18796a..c0091583e262b 100644 --- a/api_docs/remote_clusters.mdx +++ b/api_docs/remote_clusters.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/remoteClusters title: "remoteClusters" image: https://source.unsplash.com/400x175/?github description: API docs for the remoteClusters plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'remoteClusters'] --- import remoteClustersObj from './remote_clusters.devdocs.json'; diff --git a/api_docs/reporting.mdx b/api_docs/reporting.mdx index 50e69f56c7ad2..0b37855f67321 100644 --- a/api_docs/reporting.mdx +++ b/api_docs/reporting.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/reporting title: "reporting" image: https://source.unsplash.com/400x175/?github description: API docs for the reporting plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'reporting'] --- import reportingObj from './reporting.devdocs.json'; diff --git a/api_docs/rollup.mdx b/api_docs/rollup.mdx index 708bdee82dd53..89333e46141ae 100644 --- a/api_docs/rollup.mdx +++ b/api_docs/rollup.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/rollup title: "rollup" image: https://source.unsplash.com/400x175/?github description: API docs for the rollup plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'rollup'] --- import rollupObj from './rollup.devdocs.json'; diff --git a/api_docs/rule_registry.mdx b/api_docs/rule_registry.mdx index 198f18e79f134..858194933be7c 100644 --- a/api_docs/rule_registry.mdx +++ b/api_docs/rule_registry.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/ruleRegistry title: "ruleRegistry" image: https://source.unsplash.com/400x175/?github description: API docs for the ruleRegistry plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'ruleRegistry'] --- import ruleRegistryObj from './rule_registry.devdocs.json'; diff --git a/api_docs/runtime_fields.mdx b/api_docs/runtime_fields.mdx index 03b6466297a49..e46ac90841586 100644 --- a/api_docs/runtime_fields.mdx +++ b/api_docs/runtime_fields.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/runtimeFields title: "runtimeFields" image: https://source.unsplash.com/400x175/?github description: API docs for the runtimeFields plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'runtimeFields'] --- import runtimeFieldsObj from './runtime_fields.devdocs.json'; diff --git a/api_docs/saved_objects.mdx b/api_docs/saved_objects.mdx index 51668f5557d77..2be2adb4c0ab0 100644 --- a/api_docs/saved_objects.mdx +++ b/api_docs/saved_objects.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/savedObjects title: "savedObjects" image: https://source.unsplash.com/400x175/?github description: API docs for the savedObjects plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'savedObjects'] --- import savedObjectsObj from './saved_objects.devdocs.json'; diff --git a/api_docs/saved_objects_finder.mdx b/api_docs/saved_objects_finder.mdx index 98be04de9aac4..ed16de59ddf3b 100644 --- a/api_docs/saved_objects_finder.mdx +++ b/api_docs/saved_objects_finder.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/savedObjectsFinder title: "savedObjectsFinder" image: https://source.unsplash.com/400x175/?github description: API docs for the savedObjectsFinder plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'savedObjectsFinder'] --- import savedObjectsFinderObj from './saved_objects_finder.devdocs.json'; diff --git a/api_docs/saved_objects_management.mdx b/api_docs/saved_objects_management.mdx index 214327fcf1d03..4893333ffcf19 100644 --- a/api_docs/saved_objects_management.mdx +++ b/api_docs/saved_objects_management.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/savedObjectsManagement title: "savedObjectsManagement" image: https://source.unsplash.com/400x175/?github description: API docs for the savedObjectsManagement plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'savedObjectsManagement'] --- import savedObjectsManagementObj from './saved_objects_management.devdocs.json'; diff --git a/api_docs/saved_objects_tagging.mdx b/api_docs/saved_objects_tagging.mdx index 042dc9d006f25..576c260ebab06 100644 --- a/api_docs/saved_objects_tagging.mdx +++ b/api_docs/saved_objects_tagging.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/savedObjectsTagging title: "savedObjectsTagging" image: https://source.unsplash.com/400x175/?github description: API docs for the savedObjectsTagging plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'savedObjectsTagging'] --- import savedObjectsTaggingObj from './saved_objects_tagging.devdocs.json'; diff --git a/api_docs/saved_objects_tagging_oss.mdx b/api_docs/saved_objects_tagging_oss.mdx index f9d02e1ee5511..2648336fd7c9f 100644 --- a/api_docs/saved_objects_tagging_oss.mdx +++ b/api_docs/saved_objects_tagging_oss.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/savedObjectsTaggingOss title: "savedObjectsTaggingOss" image: https://source.unsplash.com/400x175/?github description: API docs for the savedObjectsTaggingOss plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'savedObjectsTaggingOss'] --- import savedObjectsTaggingOssObj from './saved_objects_tagging_oss.devdocs.json'; diff --git a/api_docs/saved_search.mdx b/api_docs/saved_search.mdx index 41d19e53be7d7..47dd8486bef84 100644 --- a/api_docs/saved_search.mdx +++ b/api_docs/saved_search.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/savedSearch title: "savedSearch" image: https://source.unsplash.com/400x175/?github description: API docs for the savedSearch plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'savedSearch'] --- import savedSearchObj from './saved_search.devdocs.json'; diff --git a/api_docs/screenshot_mode.mdx b/api_docs/screenshot_mode.mdx index f8e045aeeb5c4..bdf5a009324b6 100644 --- a/api_docs/screenshot_mode.mdx +++ b/api_docs/screenshot_mode.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/screenshotMode title: "screenshotMode" image: https://source.unsplash.com/400x175/?github description: API docs for the screenshotMode plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'screenshotMode'] --- import screenshotModeObj from './screenshot_mode.devdocs.json'; diff --git a/api_docs/screenshotting.mdx b/api_docs/screenshotting.mdx index f799695f67c26..6be7bab550ee7 100644 --- a/api_docs/screenshotting.mdx +++ b/api_docs/screenshotting.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/screenshotting title: "screenshotting" image: https://source.unsplash.com/400x175/?github description: API docs for the screenshotting plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'screenshotting'] --- import screenshottingObj from './screenshotting.devdocs.json'; diff --git a/api_docs/security.mdx b/api_docs/security.mdx index 9ded21e910927..d6d9350ce3cb4 100644 --- a/api_docs/security.mdx +++ b/api_docs/security.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/security title: "security" image: https://source.unsplash.com/400x175/?github description: API docs for the security plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'security'] --- import securityObj from './security.devdocs.json'; diff --git a/api_docs/security_solution.mdx b/api_docs/security_solution.mdx index e2dbf897488a5..c2c6e86b9dd47 100644 --- a/api_docs/security_solution.mdx +++ b/api_docs/security_solution.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/securitySolution title: "securitySolution" image: https://source.unsplash.com/400x175/?github description: API docs for the securitySolution plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'securitySolution'] --- import securitySolutionObj from './security_solution.devdocs.json'; diff --git a/api_docs/security_solution_ess.mdx b/api_docs/security_solution_ess.mdx index 9721dcf9f75d4..5114efb37f49d 100644 --- a/api_docs/security_solution_ess.mdx +++ b/api_docs/security_solution_ess.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/securitySolutionEss title: "securitySolutionEss" image: https://source.unsplash.com/400x175/?github description: API docs for the securitySolutionEss plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'securitySolutionEss'] --- import securitySolutionEssObj from './security_solution_ess.devdocs.json'; diff --git a/api_docs/security_solution_serverless.mdx b/api_docs/security_solution_serverless.mdx index 84255bc3b2a11..255ed63bfef31 100644 --- a/api_docs/security_solution_serverless.mdx +++ b/api_docs/security_solution_serverless.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/securitySolutionServerless title: "securitySolutionServerless" image: https://source.unsplash.com/400x175/?github description: API docs for the securitySolutionServerless plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'securitySolutionServerless'] --- import securitySolutionServerlessObj from './security_solution_serverless.devdocs.json'; diff --git a/api_docs/serverless.mdx b/api_docs/serverless.mdx index 86f4606339ee8..223abd9be444a 100644 --- a/api_docs/serverless.mdx +++ b/api_docs/serverless.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/serverless title: "serverless" image: https://source.unsplash.com/400x175/?github description: API docs for the serverless plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'serverless'] --- import serverlessObj from './serverless.devdocs.json'; diff --git a/api_docs/serverless_observability.mdx b/api_docs/serverless_observability.mdx index f9c0daae7f755..ea91ebbc7ad84 100644 --- a/api_docs/serverless_observability.mdx +++ b/api_docs/serverless_observability.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/serverlessObservability title: "serverlessObservability" image: https://source.unsplash.com/400x175/?github description: API docs for the serverlessObservability plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'serverlessObservability'] --- import serverlessObservabilityObj from './serverless_observability.devdocs.json'; diff --git a/api_docs/serverless_search.mdx b/api_docs/serverless_search.mdx index 9a54a0b781151..c1214558beeaa 100644 --- a/api_docs/serverless_search.mdx +++ b/api_docs/serverless_search.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/serverlessSearch title: "serverlessSearch" image: https://source.unsplash.com/400x175/?github description: API docs for the serverlessSearch plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'serverlessSearch'] --- import serverlessSearchObj from './serverless_search.devdocs.json'; diff --git a/api_docs/session_view.mdx b/api_docs/session_view.mdx index c4b0f7b9cb35a..5dabcfd775677 100644 --- a/api_docs/session_view.mdx +++ b/api_docs/session_view.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/sessionView title: "sessionView" image: https://source.unsplash.com/400x175/?github description: API docs for the sessionView plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'sessionView'] --- import sessionViewObj from './session_view.devdocs.json'; diff --git a/api_docs/share.mdx b/api_docs/share.mdx index 667f4d08c1f68..751a96c3022f0 100644 --- a/api_docs/share.mdx +++ b/api_docs/share.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/share title: "share" image: https://source.unsplash.com/400x175/?github description: API docs for the share plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'share'] --- import shareObj from './share.devdocs.json'; diff --git a/api_docs/snapshot_restore.mdx b/api_docs/snapshot_restore.mdx index 45612085d9a97..a3a5e014e7ce9 100644 --- a/api_docs/snapshot_restore.mdx +++ b/api_docs/snapshot_restore.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/snapshotRestore title: "snapshotRestore" image: https://source.unsplash.com/400x175/?github description: API docs for the snapshotRestore plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'snapshotRestore'] --- import snapshotRestoreObj from './snapshot_restore.devdocs.json'; diff --git a/api_docs/spaces.mdx b/api_docs/spaces.mdx index b23b05607de43..926cbb8fdd6d5 100644 --- a/api_docs/spaces.mdx +++ b/api_docs/spaces.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/spaces title: "spaces" image: https://source.unsplash.com/400x175/?github description: API docs for the spaces plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'spaces'] --- import spacesObj from './spaces.devdocs.json'; diff --git a/api_docs/stack_alerts.mdx b/api_docs/stack_alerts.mdx index 1a2f5a654f27f..b7b4e9961bb38 100644 --- a/api_docs/stack_alerts.mdx +++ b/api_docs/stack_alerts.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/stackAlerts title: "stackAlerts" image: https://source.unsplash.com/400x175/?github description: API docs for the stackAlerts plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'stackAlerts'] --- import stackAlertsObj from './stack_alerts.devdocs.json'; diff --git a/api_docs/stack_connectors.mdx b/api_docs/stack_connectors.mdx index 3e627b7dc2e2e..8b45d134a8937 100644 --- a/api_docs/stack_connectors.mdx +++ b/api_docs/stack_connectors.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/stackConnectors title: "stackConnectors" image: https://source.unsplash.com/400x175/?github description: API docs for the stackConnectors plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'stackConnectors'] --- import stackConnectorsObj from './stack_connectors.devdocs.json'; diff --git a/api_docs/task_manager.mdx b/api_docs/task_manager.mdx index 1151f5661a3b8..099e560595a6f 100644 --- a/api_docs/task_manager.mdx +++ b/api_docs/task_manager.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/taskManager title: "taskManager" image: https://source.unsplash.com/400x175/?github description: API docs for the taskManager plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'taskManager'] --- import taskManagerObj from './task_manager.devdocs.json'; diff --git a/api_docs/telemetry.mdx b/api_docs/telemetry.mdx index 4c0ffac2cba81..f606f57f9a6eb 100644 --- a/api_docs/telemetry.mdx +++ b/api_docs/telemetry.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/telemetry title: "telemetry" image: https://source.unsplash.com/400x175/?github description: API docs for the telemetry plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'telemetry'] --- import telemetryObj from './telemetry.devdocs.json'; diff --git a/api_docs/telemetry_collection_manager.mdx b/api_docs/telemetry_collection_manager.mdx index 20f3dc6f17e2b..ade9fdc9a00f8 100644 --- a/api_docs/telemetry_collection_manager.mdx +++ b/api_docs/telemetry_collection_manager.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/telemetryCollectionManager title: "telemetryCollectionManager" image: https://source.unsplash.com/400x175/?github description: API docs for the telemetryCollectionManager plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'telemetryCollectionManager'] --- import telemetryCollectionManagerObj from './telemetry_collection_manager.devdocs.json'; diff --git a/api_docs/telemetry_collection_xpack.mdx b/api_docs/telemetry_collection_xpack.mdx index 5a611ef796604..cbb401c693e6a 100644 --- a/api_docs/telemetry_collection_xpack.mdx +++ b/api_docs/telemetry_collection_xpack.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/telemetryCollectionXpack title: "telemetryCollectionXpack" image: https://source.unsplash.com/400x175/?github description: API docs for the telemetryCollectionXpack plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'telemetryCollectionXpack'] --- import telemetryCollectionXpackObj from './telemetry_collection_xpack.devdocs.json'; diff --git a/api_docs/telemetry_management_section.mdx b/api_docs/telemetry_management_section.mdx index 41d15e4cb1a60..d8c24380cbb00 100644 --- a/api_docs/telemetry_management_section.mdx +++ b/api_docs/telemetry_management_section.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/telemetryManagementSection title: "telemetryManagementSection" image: https://source.unsplash.com/400x175/?github description: API docs for the telemetryManagementSection plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'telemetryManagementSection'] --- import telemetryManagementSectionObj from './telemetry_management_section.devdocs.json'; diff --git a/api_docs/text_based_languages.mdx b/api_docs/text_based_languages.mdx index 8f6b993e82959..3ade5507ec23e 100644 --- a/api_docs/text_based_languages.mdx +++ b/api_docs/text_based_languages.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/textBasedLanguages title: "textBasedLanguages" image: https://source.unsplash.com/400x175/?github description: API docs for the textBasedLanguages plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'textBasedLanguages'] --- import textBasedLanguagesObj from './text_based_languages.devdocs.json'; diff --git a/api_docs/threat_intelligence.mdx b/api_docs/threat_intelligence.mdx index 54acd6b1fd585..0ee59ee1200d0 100644 --- a/api_docs/threat_intelligence.mdx +++ b/api_docs/threat_intelligence.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/threatIntelligence title: "threatIntelligence" image: https://source.unsplash.com/400x175/?github description: API docs for the threatIntelligence plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'threatIntelligence'] --- import threatIntelligenceObj from './threat_intelligence.devdocs.json'; diff --git a/api_docs/timelines.mdx b/api_docs/timelines.mdx index 7e3387a4b5cc6..3738823bf6b96 100644 --- a/api_docs/timelines.mdx +++ b/api_docs/timelines.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/timelines title: "timelines" image: https://source.unsplash.com/400x175/?github description: API docs for the timelines plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'timelines'] --- import timelinesObj from './timelines.devdocs.json'; diff --git a/api_docs/transform.mdx b/api_docs/transform.mdx index 44259b14ec464..ee716385b5dcf 100644 --- a/api_docs/transform.mdx +++ b/api_docs/transform.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/transform title: "transform" image: https://source.unsplash.com/400x175/?github description: API docs for the transform plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'transform'] --- import transformObj from './transform.devdocs.json'; diff --git a/api_docs/triggers_actions_ui.mdx b/api_docs/triggers_actions_ui.mdx index d91145a0c9084..ce113fece9ace 100644 --- a/api_docs/triggers_actions_ui.mdx +++ b/api_docs/triggers_actions_ui.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/triggersActionsUi title: "triggersActionsUi" image: https://source.unsplash.com/400x175/?github description: API docs for the triggersActionsUi plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'triggersActionsUi'] --- import triggersActionsUiObj from './triggers_actions_ui.devdocs.json'; diff --git a/api_docs/ui_actions.devdocs.json b/api_docs/ui_actions.devdocs.json index 8aa60c3c65f77..fc3e6efa4a21a 100644 --- a/api_docs/ui_actions.devdocs.json +++ b/api_docs/ui_actions.devdocs.json @@ -2218,7 +2218,7 @@ "section": "def-common.FieldAttrs", "text": "FieldAttrs" }, - " | undefined; allowNoIndex?: boolean | undefined; namespaces?: string[] | undefined; name?: string | undefined; }" + " | undefined; allowNoIndex?: boolean | undefined; namespaces?: string[] | undefined; name?: string | undefined; allowHidden?: boolean | undefined; }" ], "path": "src/plugins/ui_actions/public/types.ts", "deprecated": false, diff --git a/api_docs/ui_actions.mdx b/api_docs/ui_actions.mdx index be86250dfc5e0..62b13d45b5239 100644 --- a/api_docs/ui_actions.mdx +++ b/api_docs/ui_actions.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/uiActions title: "uiActions" image: https://source.unsplash.com/400x175/?github description: API docs for the uiActions plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'uiActions'] --- import uiActionsObj from './ui_actions.devdocs.json'; diff --git a/api_docs/ui_actions_enhanced.mdx b/api_docs/ui_actions_enhanced.mdx index 80f0401f9b691..5032796bffdbe 100644 --- a/api_docs/ui_actions_enhanced.mdx +++ b/api_docs/ui_actions_enhanced.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/uiActionsEnhanced title: "uiActionsEnhanced" image: https://source.unsplash.com/400x175/?github description: API docs for the uiActionsEnhanced plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'uiActionsEnhanced'] --- import uiActionsEnhancedObj from './ui_actions_enhanced.devdocs.json'; diff --git a/api_docs/unified_doc_viewer.mdx b/api_docs/unified_doc_viewer.mdx index f5faca199cca7..1c902e985ec4a 100644 --- a/api_docs/unified_doc_viewer.mdx +++ b/api_docs/unified_doc_viewer.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/unifiedDocViewer title: "unifiedDocViewer" image: https://source.unsplash.com/400x175/?github description: API docs for the unifiedDocViewer plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'unifiedDocViewer'] --- import unifiedDocViewerObj from './unified_doc_viewer.devdocs.json'; diff --git a/api_docs/unified_histogram.mdx b/api_docs/unified_histogram.mdx index f9ae071bd7246..ce6fe41d44e18 100644 --- a/api_docs/unified_histogram.mdx +++ b/api_docs/unified_histogram.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/unifiedHistogram title: "unifiedHistogram" image: https://source.unsplash.com/400x175/?github description: API docs for the unifiedHistogram plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'unifiedHistogram'] --- import unifiedHistogramObj from './unified_histogram.devdocs.json'; diff --git a/api_docs/unified_search.mdx b/api_docs/unified_search.mdx index 4bb9df61841be..b792ccedd5b6c 100644 --- a/api_docs/unified_search.mdx +++ b/api_docs/unified_search.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/unifiedSearch title: "unifiedSearch" image: https://source.unsplash.com/400x175/?github description: API docs for the unifiedSearch plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'unifiedSearch'] --- import unifiedSearchObj from './unified_search.devdocs.json'; diff --git a/api_docs/unified_search_autocomplete.mdx b/api_docs/unified_search_autocomplete.mdx index 8a10cc425afe6..dc6f633d2ba67 100644 --- a/api_docs/unified_search_autocomplete.mdx +++ b/api_docs/unified_search_autocomplete.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/unifiedSearch-autocomplete title: "unifiedSearch.autocomplete" image: https://source.unsplash.com/400x175/?github description: API docs for the unifiedSearch.autocomplete plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'unifiedSearch.autocomplete'] --- import unifiedSearchAutocompleteObj from './unified_search_autocomplete.devdocs.json'; diff --git a/api_docs/uptime.mdx b/api_docs/uptime.mdx index 194fd4e51de80..a1093cf720cbe 100644 --- a/api_docs/uptime.mdx +++ b/api_docs/uptime.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/uptime title: "uptime" image: https://source.unsplash.com/400x175/?github description: API docs for the uptime plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'uptime'] --- import uptimeObj from './uptime.devdocs.json'; diff --git a/api_docs/url_forwarding.mdx b/api_docs/url_forwarding.mdx index 6c9dc56caaeca..be22db35b554b 100644 --- a/api_docs/url_forwarding.mdx +++ b/api_docs/url_forwarding.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/urlForwarding title: "urlForwarding" image: https://source.unsplash.com/400x175/?github description: API docs for the urlForwarding plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'urlForwarding'] --- import urlForwardingObj from './url_forwarding.devdocs.json'; diff --git a/api_docs/usage_collection.mdx b/api_docs/usage_collection.mdx index 1a1e4479220a9..924eeeff2536c 100644 --- a/api_docs/usage_collection.mdx +++ b/api_docs/usage_collection.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/usageCollection title: "usageCollection" image: https://source.unsplash.com/400x175/?github description: API docs for the usageCollection plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'usageCollection'] --- import usageCollectionObj from './usage_collection.devdocs.json'; diff --git a/api_docs/ux.mdx b/api_docs/ux.mdx index a729fa45309e7..410ecf0d648df 100644 --- a/api_docs/ux.mdx +++ b/api_docs/ux.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/ux title: "ux" image: https://source.unsplash.com/400x175/?github description: API docs for the ux plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'ux'] --- import uxObj from './ux.devdocs.json'; diff --git a/api_docs/vis_default_editor.mdx b/api_docs/vis_default_editor.mdx index 47e35699557fb..8f7ad27670e4d 100644 --- a/api_docs/vis_default_editor.mdx +++ b/api_docs/vis_default_editor.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/visDefaultEditor title: "visDefaultEditor" image: https://source.unsplash.com/400x175/?github description: API docs for the visDefaultEditor plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'visDefaultEditor'] --- import visDefaultEditorObj from './vis_default_editor.devdocs.json'; diff --git a/api_docs/vis_type_gauge.mdx b/api_docs/vis_type_gauge.mdx index 52a0a899dbef5..7240bd5671ebc 100644 --- a/api_docs/vis_type_gauge.mdx +++ b/api_docs/vis_type_gauge.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/visTypeGauge title: "visTypeGauge" image: https://source.unsplash.com/400x175/?github description: API docs for the visTypeGauge plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'visTypeGauge'] --- import visTypeGaugeObj from './vis_type_gauge.devdocs.json'; diff --git a/api_docs/vis_type_heatmap.mdx b/api_docs/vis_type_heatmap.mdx index 575a3defc126e..91c7d29035416 100644 --- a/api_docs/vis_type_heatmap.mdx +++ b/api_docs/vis_type_heatmap.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/visTypeHeatmap title: "visTypeHeatmap" image: https://source.unsplash.com/400x175/?github description: API docs for the visTypeHeatmap plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'visTypeHeatmap'] --- import visTypeHeatmapObj from './vis_type_heatmap.devdocs.json'; diff --git a/api_docs/vis_type_pie.mdx b/api_docs/vis_type_pie.mdx index 32a5aa5fa9889..8d6c59ff29a5d 100644 --- a/api_docs/vis_type_pie.mdx +++ b/api_docs/vis_type_pie.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/visTypePie title: "visTypePie" image: https://source.unsplash.com/400x175/?github description: API docs for the visTypePie plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'visTypePie'] --- import visTypePieObj from './vis_type_pie.devdocs.json'; diff --git a/api_docs/vis_type_table.mdx b/api_docs/vis_type_table.mdx index 0ae3d93b69732..8e90655ee0479 100644 --- a/api_docs/vis_type_table.mdx +++ b/api_docs/vis_type_table.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/visTypeTable title: "visTypeTable" image: https://source.unsplash.com/400x175/?github description: API docs for the visTypeTable plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'visTypeTable'] --- import visTypeTableObj from './vis_type_table.devdocs.json'; diff --git a/api_docs/vis_type_timelion.mdx b/api_docs/vis_type_timelion.mdx index 2856d4eaadec4..d1d4d95cc8713 100644 --- a/api_docs/vis_type_timelion.mdx +++ b/api_docs/vis_type_timelion.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/visTypeTimelion title: "visTypeTimelion" image: https://source.unsplash.com/400x175/?github description: API docs for the visTypeTimelion plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'visTypeTimelion'] --- import visTypeTimelionObj from './vis_type_timelion.devdocs.json'; diff --git a/api_docs/vis_type_timeseries.mdx b/api_docs/vis_type_timeseries.mdx index eba40cb38e613..d3e355e1dc35c 100644 --- a/api_docs/vis_type_timeseries.mdx +++ b/api_docs/vis_type_timeseries.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/visTypeTimeseries title: "visTypeTimeseries" image: https://source.unsplash.com/400x175/?github description: API docs for the visTypeTimeseries plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'visTypeTimeseries'] --- import visTypeTimeseriesObj from './vis_type_timeseries.devdocs.json'; diff --git a/api_docs/vis_type_vega.mdx b/api_docs/vis_type_vega.mdx index 497298d5539f7..9f011c7d764c0 100644 --- a/api_docs/vis_type_vega.mdx +++ b/api_docs/vis_type_vega.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/visTypeVega title: "visTypeVega" image: https://source.unsplash.com/400x175/?github description: API docs for the visTypeVega plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'visTypeVega'] --- import visTypeVegaObj from './vis_type_vega.devdocs.json'; diff --git a/api_docs/vis_type_vislib.mdx b/api_docs/vis_type_vislib.mdx index bf84e5b8f4597..ea6fb4ea82c2e 100644 --- a/api_docs/vis_type_vislib.mdx +++ b/api_docs/vis_type_vislib.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/visTypeVislib title: "visTypeVislib" image: https://source.unsplash.com/400x175/?github description: API docs for the visTypeVislib plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'visTypeVislib'] --- import visTypeVislibObj from './vis_type_vislib.devdocs.json'; diff --git a/api_docs/vis_type_xy.mdx b/api_docs/vis_type_xy.mdx index 267d3e9529708..9600bf3dcc150 100644 --- a/api_docs/vis_type_xy.mdx +++ b/api_docs/vis_type_xy.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/visTypeXy title: "visTypeXy" image: https://source.unsplash.com/400x175/?github description: API docs for the visTypeXy plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'visTypeXy'] --- import visTypeXyObj from './vis_type_xy.devdocs.json'; diff --git a/api_docs/visualizations.mdx b/api_docs/visualizations.mdx index dd3b7c4af2dd1..9ca8fed0569f5 100644 --- a/api_docs/visualizations.mdx +++ b/api_docs/visualizations.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/visualizations title: "visualizations" image: https://source.unsplash.com/400x175/?github description: API docs for the visualizations plugin -date: 2023-10-13 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'visualizations'] --- import visualizationsObj from './visualizations.devdocs.json'; diff --git a/packages/core/chrome/core-chrome-browser-internal/src/chrome_service.tsx b/packages/core/chrome/core-chrome-browser-internal/src/chrome_service.tsx index 47abc6c5646fe..bf44390d13294 100644 --- a/packages/core/chrome/core-chrome-browser-internal/src/chrome_service.tsx +++ b/packages/core/chrome/core-chrome-browser-internal/src/chrome_service.tsx @@ -203,14 +203,20 @@ export class ChromeService { }; const headerBanner$ = new BehaviorSubject(undefined); - const bodyClasses$ = combineLatest([headerBanner$, this.isVisible$!, chromeStyle$]).pipe( - map(([headerBanner, isVisible, chromeStyle]) => { + const bodyClasses$ = combineLatest([ + headerBanner$, + this.isVisible$!, + chromeStyle$, + application.currentActionMenu$, + ]).pipe( + map(([headerBanner, isVisible, chromeStyle, actionMenu]) => { return [ 'kbnBody', headerBanner ? 'kbnBody--hasHeaderBanner' : 'kbnBody--noHeaderBanner', isVisible ? 'kbnBody--chromeVisible' : 'kbnBody--chromeHidden', + chromeStyle === 'project' && actionMenu ? 'kbnBody--hasProjectActionMenu' : '', getKbnVersionClass(), - ]; + ].filter((className) => !!className); }) ); diff --git a/packages/core/chrome/core-chrome-browser-internal/src/ui/project/app_menu.tsx b/packages/core/chrome/core-chrome-browser-internal/src/ui/project/app_menu.tsx index 22ff7c9415ba8..0c0e4dbdf9167 100644 --- a/packages/core/chrome/core-chrome-browser-internal/src/ui/project/app_menu.tsx +++ b/packages/core/chrome/core-chrome-browser-internal/src/ui/project/app_menu.tsx @@ -17,6 +17,7 @@ interface AppMenuBarProps { } export const AppMenuBar = ({ headerActionMenuMounter }: AppMenuBarProps) => { const { euiTheme } = useEuiTheme(); + return (
{ display: flex; justify-content: end; align-items: center; - padding: ${euiTheme.size.s}; + padding: 0 ${euiTheme.size.s}; + height: var(--kbnProjectHeaderAppActionMenuHeight, ${euiTheme.size.xxxl}); margin-bottom: -${euiTheme.border.width.thin}; /* fixates the elements position in the viewport, removes the element from the flow of the page */ position: sticky; diff --git a/packages/kbn-apm-synthtrace/index.ts b/packages/kbn-apm-synthtrace/index.ts index abcf201bf96c2..921243e67ac6a 100644 --- a/packages/kbn-apm-synthtrace/index.ts +++ b/packages/kbn-apm-synthtrace/index.ts @@ -16,3 +16,8 @@ export { InfraSynthtraceEsClient } from './src/lib/infra/infra_synthtrace_es_cli export { AssetsSynthtraceEsClient } from './src/lib/assets/assets_synthtrace_es_client'; export { MonitoringSynthtraceEsClient } from './src/lib/monitoring/monitoring_synthtrace_es_client'; + +export { + addObserverVersionTransform, + deleteSummaryFieldTransform, +} from './src/lib/utils/transform_helpers'; diff --git a/packages/kbn-apm-synthtrace/src/lib/shared/base_client.ts b/packages/kbn-apm-synthtrace/src/lib/shared/base_client.ts index 4a3a79e2b78d9..4b00a574b447e 100644 --- a/packages/kbn-apm-synthtrace/src/lib/shared/base_client.ts +++ b/packages/kbn-apm-synthtrace/src/lib/shared/base_client.ts @@ -13,7 +13,7 @@ import { SynthtraceESAction, SynthtraceGenerator, } from '@kbn/apm-synthtrace-client'; -import { castArray } from 'lodash'; +import { castArray, isFunction } from 'lodash'; import { Readable, Transform } from 'stream'; import { isGeneratorObject } from 'util/types'; import { Logger } from '../utils/create_logger'; @@ -69,9 +69,17 @@ export class SynthtraceEsClient { this.pipelineCallback = cb; } - async index(streamOrGenerator: MaybeArray>) { + async index( + streamOrGenerator: MaybeArray>, + pipelineCallback?: (base: Readable) => NodeJS.WritableStream + ) { this.logger.debug(`Bulk indexing ${castArray(streamOrGenerator).length} stream(s)`); + const previousPipelineCallback = this.pipelineCallback; + if (isFunction(pipelineCallback)) { + this.pipeline(pipelineCallback); + } + const allStreams = castArray(streamOrGenerator).map((obj) => { const base = isGeneratorObject(obj) ? Readable.from(obj) : obj; @@ -121,6 +129,11 @@ export class SynthtraceEsClient { this.logger.info(`Produced ${count} events`); + // restore pipeline callback + if (pipelineCallback) { + this.pipeline(previousPipelineCallback); + } + if (this.refreshAfterIndex) { await this.refresh(); } diff --git a/packages/kbn-apm-synthtrace/src/lib/utils/transform_helpers.ts b/packages/kbn-apm-synthtrace/src/lib/utils/transform_helpers.ts new file mode 100644 index 0000000000000..abd841bc9a837 --- /dev/null +++ b/packages/kbn-apm-synthtrace/src/lib/utils/transform_helpers.ts @@ -0,0 +1,33 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ + +import { Transform } from 'stream'; + +export function addObserverVersionTransform(observerVersion: string) { + return new Transform({ + objectMode: true, + transform(chunk: { observer?: { version?: string } }, encoding, callback) { + if (chunk?.observer?.version) { + chunk.observer.version = observerVersion; + } + callback(null, chunk); + }, + }); +} + +export function deleteSummaryFieldTransform() { + return new Transform({ + objectMode: true, + transform(chunk: { transaction?: { duration?: { summary?: number } } }, encoding, callback) { + if (chunk?.transaction?.duration?.summary) { + delete chunk.transaction.duration.summary; + } + callback(null, chunk); + }, + }); +} diff --git a/packages/kbn-content-management-utils/src/saved_object_content_storage.ts b/packages/kbn-content-management-utils/src/saved_object_content_storage.ts index 8ff22a0d9be02..070bb9cd5d739 100644 --- a/packages/kbn-content-management-utils/src/saved_object_content_storage.ts +++ b/packages/kbn-content-management-utils/src/saved_object_content_storage.ts @@ -129,7 +129,7 @@ export type UpdateArgsToSoUpdateOptions = ( params: Types['UpdateOptions'] ) => SavedObjectsUpdateOptions; -export interface SOContentStorageConstrutorParams { +export interface SOContentStorageConstructorParams { savedObjectType: string; cmServicesDefinition: ServicesDefinitionSet; // this is necessary since unexpected saved object attributes could cause schema validation to fail @@ -137,6 +137,12 @@ export interface SOContentStorageConstrutorParams { createArgsToSoCreateOptions?: CreateArgsToSoCreateOptions; updateArgsToSoUpdateOptions?: UpdateArgsToSoUpdateOptions; searchArgsToSOFindOptions?: SearchArgsToSOFindOptions; + /** + * MSearch is a feature that allows searching across multiple content types + * (for example, could be used in a general content finder or the like) + * + * defaults to false + */ enableMSearch?: boolean; mSearchAdditionalSearchFields?: string[]; @@ -163,7 +169,7 @@ export abstract class SOContentStorage mSearchAdditionalSearchFields, logger, throwOnResultValidationError, - }: SOContentStorageConstrutorParams) { + }: SOContentStorageConstructorParams) { this.logger = logger; this.throwOnResultValidationError = throwOnResultValidationError ?? false; this.savedObjectType = savedObjectType; @@ -219,8 +225,8 @@ export abstract class SOContentStorage private throwOnResultValidationError: boolean; private logger: Logger; - private savedObjectType: SOContentStorageConstrutorParams['savedObjectType']; - private cmServicesDefinition: SOContentStorageConstrutorParams['cmServicesDefinition']; + private savedObjectType: SOContentStorageConstructorParams['savedObjectType']; + private cmServicesDefinition: SOContentStorageConstructorParams['cmServicesDefinition']; private createArgsToSoCreateOptions: CreateArgsToSoCreateOptions; private updateArgsToSoUpdateOptions: UpdateArgsToSoUpdateOptions; private searchArgsToSOFindOptions: SearchArgsToSOFindOptions; diff --git a/packages/kbn-doc-links/src/get_doc_links.ts b/packages/kbn-doc-links/src/get_doc_links.ts index c389fe02f06d8..6f2800a8d6348 100644 --- a/packages/kbn-doc-links/src/get_doc_links.ts +++ b/packages/kbn-doc-links/src/get_doc_links.ts @@ -856,7 +856,7 @@ export const getDocLinks = ({ kibanaBranch }: GetDocLinkOptions): DocLinks => { featureRoles: `${ELASTIC_WEBSITE_URL}guide/en/observability/${DOC_LINK_VERSION}/synthetics-feature-roles.html`, }, esql: { - statsBy: `${ELASTICSEARCH_DOCS}esql-stats-by.html`, + statsBy: `${ELASTICSEARCH_DOCS}esql.html`, }, telemetry: { settings: `${KIBANA_DOCS}telemetry-settings-kbn.html`, diff --git a/packages/kbn-search-connectors/lib/create_connector_document.ts b/packages/kbn-search-connectors/lib/create_connector_document.ts index c5654e9a2436a..bd05ef3c79958 100644 --- a/packages/kbn-search-connectors/lib/create_connector_document.ts +++ b/packages/kbn-search-connectors/lib/create_connector_document.ts @@ -116,7 +116,7 @@ export function createConnectorDocument({ incremental: { enabled: false, interval: '0 0 0 * * ?' }, }, service_type: serviceType || null, - status: ConnectorStatus.CREATED, + status: isNative ? ConnectorStatus.NEEDS_CONFIGURATION : ConnectorStatus.CREATED, sync_now: false, }; } diff --git a/packages/kbn-search-connectors/lib/update_connector_configuration.ts b/packages/kbn-search-connectors/lib/update_connector_configuration.ts index dfb43af53db44..473932ecfddca 100644 --- a/packages/kbn-search-connectors/lib/update_connector_configuration.ts +++ b/packages/kbn-search-connectors/lib/update_connector_configuration.ts @@ -26,7 +26,8 @@ export const updateConnectorConfiguration = async ( const connector = connectorResult?.value; if (connector) { const status = - connector.status === ConnectorStatus.NEEDS_CONFIGURATION + connector.status === ConnectorStatus.NEEDS_CONFIGURATION || + connector.status === ConnectorStatus.CREATED ? ConnectorStatus.CONFIGURED : connector.status; const updatedConfig = Object.keys(connector.configuration) diff --git a/packages/react/kibana_mount/mount_point_portal.test.tsx b/packages/react/kibana_mount/mount_point_portal.test.tsx index c7200a934f5a6..04fbf12ecdde5 100644 --- a/packages/react/kibana_mount/mount_point_portal.test.tsx +++ b/packages/react/kibana_mount/mount_point_portal.test.tsx @@ -58,6 +58,23 @@ describe('MountPointPortal', () => { expect(setMountPoint).toHaveBeenCalledTimes(1); }); + it('calls the provided `setMountPoint` with undefined during unmount', async () => { + dom = mount( + + portal content + + ); + + await refresh(); + + dom.unmount(); + + await refresh(); + + expect(setMountPoint).toHaveBeenCalledTimes(2); + expect(setMountPoint).toHaveBeenLastCalledWith(undefined); + }); + it('renders the portal content when calling the mountPoint ', async () => { dom = mount( @@ -127,7 +144,7 @@ describe('MountPointPortal', () => { it('updates the content of the portal element when the content of MountPointPortal changes', async () => { const Wrapper: FC<{ - setMount: (mountPoint: MountPoint) => void; + setMount: (mountPoint: MountPoint | undefined) => void; portalContent: string; }> = ({ setMount, portalContent }) => { return ( diff --git a/packages/react/kibana_mount/mount_point_portal.tsx b/packages/react/kibana_mount/mount_point_portal.tsx index c5bc994279c41..dcfeddc428d09 100644 --- a/packages/react/kibana_mount/mount_point_portal.tsx +++ b/packages/react/kibana_mount/mount_point_portal.tsx @@ -13,7 +13,7 @@ import { MountPoint } from '@kbn/core/public'; import { useIfMounted } from './utils'; export interface MountPointPortalProps { - setMountPoint: (mountPoint: MountPoint) => void; + setMountPoint: (mountPoint: MountPoint | undefined) => void; } /** @@ -47,6 +47,7 @@ export const MountPointPortal: React.FC = ({ children, se setShouldRender(false); el.current = undefined; }); + setMountPoint(undefined); }; }, [setMountPoint, ifMounted]); diff --git a/packages/serverless/settings/common/index.ts b/packages/serverless/settings/common/index.ts index 326108abcd747..f8f608bdf64f5 100644 --- a/packages/serverless/settings/common/index.ts +++ b/packages/serverless/settings/common/index.ts @@ -22,7 +22,6 @@ const GENERAL_SETTINGS = [ settings.FORMAT_NUMBER_DEFAULT_PATTERN_ID, settings.FORMAT_PERCENT_DEFAULT_PATTERN_ID, settings.META_FIELDS_ID, - settings.STATE_STORE_IN_SESSION_STORAGE_ID, settings.TIMEPICKER_QUICK_RANGES_ID, settings.TIMEPICKER_TIME_DEFAULTS_ID, ]; diff --git a/src/core/public/_css_variables.scss b/src/core/public/_css_variables.scss index cef1be40d1239..5fc2c4dbfc2d3 100644 --- a/src/core/public/_css_variables.scss +++ b/src/core/public/_css_variables.scss @@ -5,6 +5,8 @@ --kbnHeaderOffset: var(--euiFixedHeadersOffset, 0); // total height of everything when the banner is present --kbnHeaderOffsetWithBanner: calc(var(--kbnHeaderBannerHeight) + var(--kbnHeaderOffset)); + // height of the action menu in the header in serverless projects + --kbnProjectHeaderAppActionMenuHeight: #{$euiSize * 3}; } // Quick note: This shouldn't be mixed with Sass variable declarations, diff --git a/src/core/public/_mixins.scss b/src/core/public/_mixins.scss index 9d533a87d1843..0c6a8571f9e75 100644 --- a/src/core/public/_mixins.scss +++ b/src/core/public/_mixins.scss @@ -1,6 +1,10 @@ @mixin kibanaFullBodyHeight($additionalOffset: 0) { - // The `--euiFixedHeadersOffset` CSS variable is automatically updated by + // The `--kbnAppHeadersOffset` CSS variable is automatically updated by // styles/rendering/_base.scss, based on whether the Kibana chrome has a - // header banner, and is visible or hidden - height: calc(100vh - var(--euiFixedHeadersOffset, 0) - #{$additionalOffset}); + // header banner, app menu, and is visible or hidden + height: calc( + 100vh + - var(--kbnAppHeadersOffset, var(--euiFixedHeadersOffset, 0)) + - #{$additionalOffset} + ); } diff --git a/src/core/public/styles/rendering/_base.scss b/src/core/public/styles/rendering/_base.scss index 8a7b14242f8bf..1bcfaab71ea17 100644 --- a/src/core/public/styles/rendering/_base.scss +++ b/src/core/public/styles/rendering/_base.scss @@ -19,7 +19,7 @@ pointer-events: none; visibility: hidden; position: fixed; - top: var(--euiFixedHeadersOffset, 0); + top: var(--kbnAppHeadersOffset, var(--euiFixedHeadersOffset, 0)); right: 0; bottom: 0; left: 0; @@ -41,7 +41,6 @@ // Conditionally override :root CSS fixed header variable. Updating `--euiFixedHeadersOffset` // on the body will cause all child EUI components to automatically update their offsets - .kbnBody--hasHeaderBanner { --euiFixedHeadersOffset: var(--kbnHeaderOffsetWithBanner); @@ -56,9 +55,25 @@ top: var(--kbnHeaderBannerHeight); } } + +// Set a body CSS variable for the app container to use - calculates the total +// height of all fixed headers + the sticky action menu toolbar +.kbnBody--hasProjectActionMenu { + --kbnAppHeadersOffset: calc(var(--kbnHeaderOffset) + var(--kbnProjectHeaderAppActionMenuHeight)); + + &.kbnBody--hasHeaderBanner { + --kbnAppHeadersOffset: calc(var(--kbnHeaderOffsetWithBanner) + var(--kbnProjectHeaderAppActionMenuHeight)); + } +} + .kbnBody--chromeHidden { --euiFixedHeadersOffset: 0; -} -.kbnBody--chromeHidden.kbnBody--hasHeaderBanner { - --euiFixedHeadersOffset: var(--kbnHeaderBannerHeight); + + &.kbnBody--hasHeaderBanner { + --euiFixedHeadersOffset: var(--kbnHeaderBannerHeight); + } + + &.kbnBody--hasProjectActionMenu { + --kbnAppHeadersOffset: var(--euiFixedHeadersOffset, 0); + } } diff --git a/src/dev/build/tasks/os_packages/docker_generator/resources/base/bin/kibana-docker b/src/dev/build/tasks/os_packages/docker_generator/resources/base/bin/kibana-docker index 97ca84061d78d..05b7133519a81 100755 --- a/src/dev/build/tasks/os_packages/docker_generator/resources/base/bin/kibana-docker +++ b/src/dev/build/tasks/os_packages/docker_generator/resources/base/bin/kibana-docker @@ -310,7 +310,6 @@ kibana_vars=( xpack.observability.unsafe.alertDetails.uptime.enabled xpack.observability.unsafe.alertDetails.observability.enabled xpack.observability.unsafe.thresholdRule.enabled - xpack.observability.compositeSlo.enabled xpack.reporting.capture.browser.autoDownload xpack.reporting.capture.browser.chromium.disableSandbox xpack.reporting.capture.browser.chromium.inspect diff --git a/src/plugins/data/public/search/search_service.test.ts b/src/plugins/data/public/search/search_service.test.ts index 5f9e57d05fe6b..69afad8d9b079 100644 --- a/src/plugins/data/public/search/search_service.test.ts +++ b/src/plugins/data/public/search/search_service.test.ts @@ -143,7 +143,7 @@ describe('Search service', () => { expect(notifications.toasts.addWarning).toBeCalledTimes(1); expect(notifications.toasts.addWarning).toBeCalledWith({ - title: 'The data might be incomplete or wrong.', + title: 'Results are partial and may be incomplete.', text: expect.any(Function), }); }); diff --git a/src/plugins/data/public/search/warnings/extract_warnings.test.ts b/src/plugins/data/public/search/warnings/extract_warnings.test.ts index 6a5fc046dc5d3..02e235d897dc7 100644 --- a/src/plugins/data/public/search/warnings/extract_warnings.test.ts +++ b/src/plugins/data/public/search/warnings/extract_warnings.test.ts @@ -43,7 +43,7 @@ describe('extract search response warnings', () => { expect(extractWarnings(response, mockInspectorService)).toEqual([ { type: 'incomplete', - message: 'The data might be incomplete or wrong.', + message: 'Results are partial and may be incomplete.', clusters: { '(local)': { status: 'partial', @@ -69,7 +69,7 @@ describe('extract search response warnings', () => { expect(extractWarnings(response, mockInspectorService)).toEqual([ { type: 'incomplete', - message: 'The data might be incomplete or wrong.', + message: 'Results are partial and may be incomplete.', clusters: { '(local)': { status: 'partial', @@ -188,7 +188,7 @@ describe('extract search response warnings', () => { expect(extractWarnings(response, mockInspectorService)).toEqual([ { type: 'incomplete', - message: 'The data might be incomplete or wrong.', + message: 'Results are partial and may be incomplete.', clusters: response._clusters.details, openInInspector: expect.any(Function), }, @@ -242,7 +242,7 @@ describe('extract search response warnings', () => { expect(extractWarnings(response, mockInspectorService)).toEqual([ { type: 'incomplete', - message: 'The data might be incomplete or wrong.', + message: 'Results are partial and may be incomplete.', clusters: response._clusters.details, openInInspector: expect.any(Function), }, diff --git a/src/plugins/data/public/search/warnings/extract_warnings.ts b/src/plugins/data/public/search/warnings/extract_warnings.ts index 2a6a9df484036..15b77dd5d0248 100644 --- a/src/plugins/data/public/search/warnings/extract_warnings.ts +++ b/src/plugins/data/public/search/warnings/extract_warnings.ts @@ -37,7 +37,7 @@ export function extractWarnings( warnings.push({ type: 'incomplete', message: i18n.translate('data.search.searchSource.fetch.incompleteResultsMessage', { - defaultMessage: 'The data might be incomplete or wrong.', + defaultMessage: 'Results are partial and may be incomplete.', }), clusters: rawResponse._clusters ? ( diff --git a/src/plugins/data_views/server/rest_api_routes/public/scripted_fields/get_scripted_field.ts b/src/plugins/data_views/server/rest_api_routes/public/scripted_fields/get_scripted_field.ts index 4f1a9d2a781f7..0bda9a21b10d7 100644 --- a/src/plugins/data_views/server/rest_api_routes/public/scripted_fields/get_scripted_field.ts +++ b/src/plugins/data_views/server/rest_api_routes/public/scripted_fields/get_scripted_field.ts @@ -15,7 +15,7 @@ import type { DataViewsServerPluginStartDependencies, } from '../../../types'; import { INITIAL_REST_VERSION } from '../../../constants'; -import { serializedFieldFormatSchema } from '../../../../common/schemas'; +import { fieldSpecSchemaFields } from '../../../../common/schemas'; import { FieldSpecRestResponse } from '../../route_types'; export const registerGetScriptedFieldRoute = ( @@ -49,7 +49,7 @@ export const registerGetScriptedFieldRoute = ( response: { 200: { body: schema.object({ - field: serializedFieldFormatSchema, + field: schema.object(fieldSpecSchemaFields), }), }, }, diff --git a/src/plugins/event_annotation/common/content_management/index.ts b/src/plugins/event_annotation/common/content_management/index.ts index 821ff93f903d3..ef97fe7cdd25f 100644 --- a/src/plugins/event_annotation/common/content_management/index.ts +++ b/src/plugins/event_annotation/common/content_management/index.ts @@ -27,6 +27,7 @@ export type { EventAnnotationGroupSearchIn, EventAnnotationGroupSearchOut, EventAnnotationGroupSearchQuery, + EventAnnotationGroupCrudTypes, } from './latest'; export * as EventAnnotationGroupV1 from './v1'; diff --git a/src/plugins/event_annotation/common/content_management/v1/index.ts b/src/plugins/event_annotation/common/content_management/v1/index.ts index d05d743a199a8..178c49c51807f 100644 --- a/src/plugins/event_annotation/common/content_management/v1/index.ts +++ b/src/plugins/event_annotation/common/content_management/v1/index.ts @@ -23,5 +23,6 @@ export type { EventAnnotationGroupSearchIn, EventAnnotationGroupSearchOut, EventAnnotationGroupSearchQuery, + EventAnnotationGroupCrudTypes, Reference, } from './types'; diff --git a/src/plugins/event_annotation/common/content_management/v1/types.ts b/src/plugins/event_annotation/common/content_management/v1/types.ts index 5996a6f0db455..d85250e3883fa 100644 --- a/src/plugins/event_annotation/common/content_management/v1/types.ts +++ b/src/plugins/event_annotation/common/content_management/v1/types.ts @@ -18,6 +18,7 @@ import { CreateResult, UpdateResult, } from '@kbn/content-management-plugin/common'; +import { ContentManagementCrudTypes } from '@kbn/content-management-utils'; import type { DataViewSpec } from '@kbn/data-views-plugin/common'; import type { EventAnnotationConfig } from '@kbn/event-annotation-common'; @@ -125,3 +126,13 @@ export type EventAnnotationGroupSearchIn = SearchIn< >; export type EventAnnotationGroupSearchOut = SearchResult; + +// ----------- CRUD TYPES -------------- + +export type EventAnnotationGroupCrudTypes = ContentManagementCrudTypes< + EventAnnotationGroupContentType, + EventAnnotationGroupSavedObjectAttributes, + CreateOptions, + UpdateOptions, + {} +>; diff --git a/src/plugins/event_annotation/common/index.ts b/src/plugins/event_annotation/common/index.ts index 4389c4e7f4c89..f163108976ef6 100644 --- a/src/plugins/event_annotation/common/index.ts +++ b/src/plugins/event_annotation/common/index.ts @@ -37,6 +37,7 @@ export type { EventAnnotationGroupSearchOut, EventAnnotationGroupDeleteIn, EventAnnotationGroupDeleteOut, + EventAnnotationGroupCrudTypes, } from './content_management'; export { CONTENT_ID } from './content_management'; export { ANNOTATIONS_LISTING_VIEW_ID } from './constants'; diff --git a/src/plugins/event_annotation/server/content_management/event_annotation_group_storage.ts b/src/plugins/event_annotation/server/content_management/event_annotation_group_storage.ts index dcb25deb71140..49a5b516c1d24 100644 --- a/src/plugins/event_annotation/server/content_management/event_annotation_group_storage.ts +++ b/src/plugins/event_annotation/server/content_management/event_annotation_group_storage.ts @@ -5,336 +5,34 @@ * in compliance with, at your election, the Elastic License 2.0 or the Server * Side Public License, v 1. */ - -import Boom from '@hapi/boom'; -import type { SearchQuery } from '@kbn/content-management-plugin/common'; -import type { ContentStorage, StorageContext } from '@kbn/content-management-plugin/server'; -import type { - SavedObject, - SavedObjectReference, - SavedObjectsFindOptions, -} from '@kbn/core-saved-objects-api-server'; - -import { getMSearch, type GetMSearchType } from '@kbn/content-management-utils'; +import { SOContentStorage } from '@kbn/content-management-utils'; import { EVENT_ANNOTATION_GROUP_TYPE } from '@kbn/event-annotation-common'; +import { Logger } from '@kbn/logging'; import { cmServicesDefinition } from '../../common/content_management/cm_services'; -import type { - EventAnnotationGroupSavedObjectAttributes, - EventAnnotationGroupSavedObject, - PartialEventAnnotationGroupSavedObject, - EventAnnotationGroupGetOut, - EventAnnotationGroupCreateIn, - EventAnnotationGroupCreateOut, - CreateOptions, - EventAnnotationGroupUpdateIn, - EventAnnotationGroupUpdateOut, - UpdateOptions, - EventAnnotationGroupDeleteOut, - EventAnnotationGroupSearchQuery, - EventAnnotationGroupSearchOut, -} from '../../common/content_management'; - -const savedObjectClientFromRequest = async (ctx: StorageContext) => { - if (!ctx.requestHandlerContext) { - throw new Error('Storage context.requestHandlerContext missing.'); - } - - const { savedObjects } = await ctx.requestHandlerContext.core; - return savedObjects.client; -}; - -type PartialSavedObject = Omit>, 'references'> & { - references: SavedObjectReference[] | undefined; -}; - -function savedObjectToEventAnnotationGroupSavedObject( - savedObject: SavedObject, - partial: false -): EventAnnotationGroupSavedObject; - -function savedObjectToEventAnnotationGroupSavedObject( - savedObject: PartialSavedObject, - partial: true -): PartialEventAnnotationGroupSavedObject; - -function savedObjectToEventAnnotationGroupSavedObject( - savedObject: - | SavedObject - | PartialSavedObject -): EventAnnotationGroupSavedObject | PartialEventAnnotationGroupSavedObject { - const { - id, - type, - updated_at: updatedAt, - created_at: createdAt, - attributes: { title, description, annotations, ignoreGlobalFilters, dataViewSpec }, - references, - error, - namespaces, - } = savedObject; - - return { - id, - type, - updatedAt, - createdAt, - attributes: { - title, - description, - annotations, - ignoreGlobalFilters, - dataViewSpec, - }, - references, - error, - namespaces, - }; -} - -const SO_TYPE = EVENT_ANNOTATION_GROUP_TYPE; - -export class EventAnnotationGroupStorage - implements - ContentStorage -{ - mSearch: GetMSearchType; - constructor() { - this.mSearch = getMSearch({ - savedObjectType: SO_TYPE, +import type { EventAnnotationGroupCrudTypes } from '../../common/content_management'; + +export class EventAnnotationGroupStorage extends SOContentStorage { + constructor({ + logger, + throwOnResultValidationError, + }: { + logger: Logger; + throwOnResultValidationError: boolean; + }) { + super({ + savedObjectType: EVENT_ANNOTATION_GROUP_TYPE, cmServicesDefinition, + enableMSearch: true, allowedSavedObjectAttributes: [ 'title', 'description', - 'ignoreGlobalFilters', 'annotations', + 'ignoreGlobalFilters', 'dataViewSpec', ], + logger, + throwOnResultValidationError, }); } - - async get(ctx: StorageContext, id: string): Promise { - const { - utils: { getTransforms }, - version: { request: requestVersion }, - } = ctx; - const transforms = getTransforms(cmServicesDefinition, requestVersion); - const soClient = await savedObjectClientFromRequest(ctx); - - const { - saved_object: savedObject, - alias_purpose: aliasPurpose, - alias_target_id: aliasTargetId, - outcome, - } = await soClient.resolve(SO_TYPE, id); - - const response: EventAnnotationGroupGetOut = { - item: savedObjectToEventAnnotationGroupSavedObject(savedObject, false), - meta: { - aliasPurpose, - aliasTargetId, - outcome, - }, - }; - - // Validate DB response and DOWN transform to the request version - const { value, error: resultError } = transforms.get.out.result.down< - EventAnnotationGroupGetOut, - EventAnnotationGroupGetOut - >(response); - - if (resultError) { - throw Boom.badRequest(`Invalid response. ${resultError.message}`); - } - - return value; - } - - async bulkGet(): Promise { - // Not implemented. EventAnnotationGroup does not use bulkGet - throw new Error(`[bulkGet] has not been implemented. See EventAnnotationGroupStorage class.`); - } - - async create( - ctx: StorageContext, - data: EventAnnotationGroupCreateIn['data'], - options: CreateOptions - ): Promise { - const { - utils: { getTransforms }, - version: { request: requestVersion }, - } = ctx; - const transforms = getTransforms(cmServicesDefinition, requestVersion); - - // Validate input (data & options) & UP transform them to the latest version - const { value: dataToLatest, error: dataError } = transforms.create.in.data.up< - EventAnnotationGroupSavedObjectAttributes, - EventAnnotationGroupSavedObjectAttributes - >(data); - if (dataError) { - throw Boom.badRequest(`Invalid data. ${dataError.message}`); - } - - const { value: optionsToLatest, error: optionsError } = transforms.create.in.options.up< - CreateOptions, - CreateOptions - >(options); - if (optionsError) { - throw Boom.badRequest(`Invalid options. ${optionsError.message}`); - } - - // Save data in DB - const soClient = await savedObjectClientFromRequest(ctx); - const savedObject = await soClient.create( - SO_TYPE, - dataToLatest, - optionsToLatest - ); - - // Validate DB response and DOWN transform to the request version - const { value, error: resultError } = transforms.create.out.result.down< - EventAnnotationGroupCreateOut, - EventAnnotationGroupCreateOut - >({ - item: savedObjectToEventAnnotationGroupSavedObject(savedObject, false), - }); - - if (resultError) { - throw Boom.badRequest(`Invalid response. ${resultError.message}`); - } - - return value; - } - - async update( - ctx: StorageContext, - id: string, - data: EventAnnotationGroupUpdateIn['data'], - options: UpdateOptions - ): Promise { - const { - utils: { getTransforms }, - version: { request: requestVersion }, - } = ctx; - const transforms = getTransforms(cmServicesDefinition, requestVersion); - - // Validate input (data & options) & UP transform them to the latest version - const { value: dataToLatest, error: dataError } = transforms.update.in.data.up< - EventAnnotationGroupSavedObjectAttributes, - EventAnnotationGroupSavedObjectAttributes - >(data); - if (dataError) { - throw Boom.badRequest(`Invalid data. ${dataError.message}`); - } - - const { value: optionsToLatest, error: optionsError } = transforms.update.in.options.up< - CreateOptions, - CreateOptions - >(options); - if (optionsError) { - throw Boom.badRequest(`Invalid options. ${optionsError.message}`); - } - - // Save data in DB - const soClient = await savedObjectClientFromRequest(ctx); - const partialSavedObject = await soClient.update( - SO_TYPE, - id, - dataToLatest, - optionsToLatest - ); - - // Validate DB response and DOWN transform to the request version - const { value, error: resultError } = transforms.update.out.result.down< - EventAnnotationGroupUpdateOut, - EventAnnotationGroupUpdateOut - >({ - item: savedObjectToEventAnnotationGroupSavedObject(partialSavedObject, true), - }); - - if (resultError) { - throw Boom.badRequest(`Invalid response. ${resultError.message}`); - } - - return value; - } - - async delete(ctx: StorageContext, id: string): Promise { - const soClient = await savedObjectClientFromRequest(ctx); - await soClient.delete(SO_TYPE, id); - return { success: true }; - } - - async search( - ctx: StorageContext, - query: SearchQuery, - options: EventAnnotationGroupSearchQuery = {} - ): Promise { - const { - utils: { getTransforms }, - version: { request: requestVersion }, - } = ctx; - const transforms = getTransforms(cmServicesDefinition, requestVersion); - const soClient = await savedObjectClientFromRequest(ctx); - - // Validate and UP transform the options - const { value: optionsToLatest, error: optionsError } = transforms.search.in.options.up< - EventAnnotationGroupSearchQuery, - EventAnnotationGroupSearchQuery - >(options); - - if (optionsError) { - throw Boom.badRequest(`Invalid payload. ${optionsError.message}`); - } - - const { searchFields = ['title^3', 'description'], types = [SO_TYPE] } = optionsToLatest; - - const { included, excluded } = query.tags ?? {}; - const hasReference: SavedObjectsFindOptions['hasReference'] = included - ? included.map((id) => ({ - id, - type: 'tag', - })) - : undefined; - - const hasNoReference: SavedObjectsFindOptions['hasNoReference'] = excluded - ? excluded.map((id) => ({ - id, - type: 'tag', - })) - : undefined; - - const soQuery: SavedObjectsFindOptions = { - type: types, - search: query.text, - perPage: query.limit, - page: query.cursor ? Number(query.cursor) : undefined, - defaultSearchOperator: 'AND', - searchFields, - hasReference, - hasNoReference, - }; - - // Execute the query in the DB - const response = await soClient.find(soQuery); - - // Validate the response and DOWN transform to the request version - const { value, error: resultError } = transforms.search.out.result.down< - EventAnnotationGroupSearchOut, - EventAnnotationGroupSearchOut - >({ - hits: response.saved_objects.map((so) => - savedObjectToEventAnnotationGroupSavedObject(so, false) - ), - pagination: { - total: response.total, - }, - }); - - if (resultError) { - throw Boom.badRequest(`Invalid response. ${resultError.message}`); - } - - return value; - } } diff --git a/src/plugins/event_annotation/server/index.ts b/src/plugins/event_annotation/server/index.ts index d9d13045ed10a..84fecda35d4f1 100644 --- a/src/plugins/event_annotation/server/index.ts +++ b/src/plugins/event_annotation/server/index.ts @@ -6,5 +6,8 @@ * Side Public License, v 1. */ +import { PluginInitializerContext } from '@kbn/core-plugins-server'; import { EventAnnotationServerPlugin } from './plugin'; -export const plugin = () => new EventAnnotationServerPlugin(); + +export const plugin = (initializerContext: PluginInitializerContext) => + new EventAnnotationServerPlugin(initializerContext); diff --git a/src/plugins/event_annotation/server/plugin.ts b/src/plugins/event_annotation/server/plugin.ts index 8cd24f8938466..cdf514228adb3 100644 --- a/src/plugins/event_annotation/server/plugin.ts +++ b/src/plugins/event_annotation/server/plugin.ts @@ -6,7 +6,7 @@ * Side Public License, v 1. */ -import { CoreSetup, Plugin } from '@kbn/core/server'; +import { CoreSetup, Plugin, PluginInitializerContext } from '@kbn/core/server'; import { ExpressionsServerSetup } from '@kbn/expressions-plugin/server'; import { PluginStart as DataPluginStart } from '@kbn/data-plugin/server'; import { ContentManagementServerSetup } from '@kbn/content-management-plugin/server'; @@ -29,6 +29,8 @@ export interface EventAnnotationStartDependencies { } export class EventAnnotationServerPlugin implements Plugin { + constructor(private readonly initializerContext: PluginInitializerContext) {} + public setup( core: CoreSetup, dependencies: SetupDependencies @@ -42,7 +44,10 @@ export class EventAnnotationServerPlugin implements Plugin { dependencies.contentManagement.register({ id: CONTENT_ID, - storage: new EventAnnotationGroupStorage(), + storage: new EventAnnotationGroupStorage({ + throwOnResultValidationError: this.initializerContext.env.mode.dev, + logger: this.initializerContext.logger.get(), + }), version: { latest: LATEST_VERSION, }, diff --git a/src/plugins/event_annotation/tsconfig.json b/src/plugins/event_annotation/tsconfig.json index c57bb18e0e19f..d115df48e8967 100644 --- a/src/plugins/event_annotation/tsconfig.json +++ b/src/plugins/event_annotation/tsconfig.json @@ -31,10 +31,11 @@ "@kbn/object-versioning", "@kbn/config-schema", "@kbn/content-management-plugin", - "@kbn/core-saved-objects-api-server", "@kbn/event-annotation-components", "@kbn/event-annotation-common", - "@kbn/content-management-utils" + "@kbn/content-management-utils", + "@kbn/logging", + "@kbn/core-plugins-server" ], "exclude": [ "target/**/*", diff --git a/src/plugins/inspector/public/views/requests/components/details/clusters_view/clusters_table/shards_view/shard_failure_flyout.tsx b/src/plugins/inspector/public/views/requests/components/details/clusters_view/clusters_table/shards_view/shard_failure_flyout.tsx index 8749f9764fe74..ac84eaae8119a 100644 --- a/src/plugins/inspector/public/views/requests/components/details/clusters_view/clusters_table/shards_view/shard_failure_flyout.tsx +++ b/src/plugins/inspector/public/views/requests/components/details/clusters_view/clusters_table/shards_view/shard_failure_flyout.tsx @@ -34,7 +34,7 @@ export function ShardFailureFlyout({ failures, onClose }: Props) { {i18n.translate('inspector.requests.clusters.shards.flyoutTitle', { defaultMessage: - '{failedShardCount} failured {failedShardCount, plural, one {shard} other {shards}}', + '{failedShardCount} failed {failedShardCount, plural, one {shard} other {shards}}', values: { failedShardCount: failures.length }, })} diff --git a/src/plugins/kibana_react/public/index.ts b/src/plugins/kibana_react/public/index.ts index 7954559206bb7..2803c266da0f4 100644 --- a/src/plugins/kibana_react/public/index.ts +++ b/src/plugins/kibana_react/public/index.ts @@ -76,7 +76,7 @@ export { createNotifications } from './notifications'; /** @deprecated use `Markdown` from `@kbn/shared-ux-markdown` */ export { Markdown, MarkdownSimple } from './markdown'; -export { toMountPoint, MountPointPortal } from './util'; +export { toMountPoint } from './util'; export type { ToMountPointOptions } from './util'; /** @deprecated Use `RedirectAppLinks` from `@kbn/shared-ux-link-redirect-app` */ diff --git a/src/plugins/kibana_react/public/util/index.tsx b/src/plugins/kibana_react/public/util/index.tsx index ab2ce5a5a81c8..d709f06837c0c 100644 --- a/src/plugins/kibana_react/public/util/index.tsx +++ b/src/plugins/kibana_react/public/util/index.tsx @@ -15,11 +15,7 @@ import type { I18nStart } from '@kbn/core-i18n-browser'; import type { CoreTheme, ThemeServiceStart } from '@kbn/core-theme-browser'; import { defaultTheme } from '@kbn/react-kibana-context-common'; -import { - toMountPoint as _toMountPoint, - MountPointPortal as _MountPointPortal, - useIfMounted as _useIfMounted, -} from '@kbn/react-kibana-mount'; +import { toMountPoint as _toMountPoint } from '@kbn/react-kibana-mount'; // The `theme` start contract should always be included to ensure // dark mode is applied correctly. This code is for compatibility purposes, @@ -52,13 +48,3 @@ export const toMountPoint = ( const theme = theme$ ? { theme$ } : themeStart; return _toMountPoint(node, { theme, i18n }); }; - -/** - * @deprecated use `MountPointPortal` from `@kbn/react-kibana-mount` - */ -export const MountPointPortal = _MountPointPortal; - -/** - * @deprecated use `useIfMounted` from `@kbn/react-kibana-mount` - */ -export const useIfMounted = _useIfMounted; diff --git a/src/plugins/navigation/kibana.jsonc b/src/plugins/navigation/kibana.jsonc index 90ced649980a5..26edb0999699d 100644 --- a/src/plugins/navigation/kibana.jsonc +++ b/src/plugins/navigation/kibana.jsonc @@ -6,11 +6,7 @@ "id": "navigation", "server": false, "browser": true, - "requiredPlugins": [ - "unifiedSearch" - ], - "requiredBundles": [ - "kibanaReact" - ] + "requiredPlugins": ["unifiedSearch"], + "requiredBundles": [] } } diff --git a/src/plugins/navigation/public/top_nav_menu/top_nav_menu.tsx b/src/plugins/navigation/public/top_nav_menu/top_nav_menu.tsx index 3b3cac7921813..de060db9b6e3b 100644 --- a/src/plugins/navigation/public/top_nav_menu/top_nav_menu.tsx +++ b/src/plugins/navigation/public/top_nav_menu/top_nav_menu.tsx @@ -18,7 +18,7 @@ import { import classNames from 'classnames'; import { MountPoint } from '@kbn/core/public'; -import { MountPointPortal } from '@kbn/kibana-react-plugin/public'; +import { MountPointPortal } from '@kbn/react-kibana-mount'; import { UnifiedSearchPublicPluginStart } from '@kbn/unified-search-plugin/public'; import { StatefulSearchBarProps } from '@kbn/unified-search-plugin/public'; import { AggregateQuery, Query } from '@kbn/es-query'; @@ -138,14 +138,19 @@ export function TopNavMenu( 'kbnTopNavMenu__wrapper--hidden': visible === false, }); if (setMenuMountPoint) { + const badgesEl = renderBadges(); + const menuEl = renderMenu(menuClassName); return ( <> - - - {renderBadges()} - {renderMenu(menuClassName)} - - + {(badgesEl || menuEl) && ( + + + {badgesEl} + {menuEl} + + + )} + {renderSearchBar()} ); diff --git a/src/plugins/navigation/tsconfig.json b/src/plugins/navigation/tsconfig.json index b23ee2de840eb..d10df84c43f8b 100644 --- a/src/plugins/navigation/tsconfig.json +++ b/src/plugins/navigation/tsconfig.json @@ -6,11 +6,11 @@ "include": ["public/**/*"], "kbn_references": [ "@kbn/core", - "@kbn/kibana-react-plugin", "@kbn/unified-search-plugin", "@kbn/es-query", "@kbn/i18n-react", "@kbn/test-jest-helpers", + "@kbn/react-kibana-mount", ], "exclude": [ "target/**/*", diff --git a/src/plugins/visualizations/common/content_management/index.ts b/src/plugins/visualizations/common/content_management/index.ts index 15cff0d86c7c9..ebdd647c181d4 100644 --- a/src/plugins/visualizations/common/content_management/index.ts +++ b/src/plugins/visualizations/common/content_management/index.ts @@ -27,6 +27,7 @@ export type { VisualizationSearchIn, VisualizationSearchOut, VisualizationSearchQuery, + VisualizationCrudTypes, } from './latest'; export * as VisualizationV1 from './v1'; diff --git a/src/plugins/visualizations/common/content_management/v1/index.ts b/src/plugins/visualizations/common/content_management/v1/index.ts index 14e9f7c986995..e15eb0f46fef1 100644 --- a/src/plugins/visualizations/common/content_management/v1/index.ts +++ b/src/plugins/visualizations/common/content_management/v1/index.ts @@ -23,5 +23,6 @@ export type { VisualizationSearchIn, VisualizationSearchOut, VisualizationSearchQuery, + VisualizationCrudTypes, Reference, } from './types'; diff --git a/src/plugins/visualizations/common/content_management/v1/types.ts b/src/plugins/visualizations/common/content_management/v1/types.ts index c0961341c436b..a1e5bd6a1aba5 100644 --- a/src/plugins/visualizations/common/content_management/v1/types.ts +++ b/src/plugins/visualizations/common/content_management/v1/types.ts @@ -18,6 +18,7 @@ import { CreateResult, UpdateResult, } from '@kbn/content-management-plugin/common'; +import { ContentManagementCrudTypes } from '@kbn/content-management-utils'; import { VisualizationContentType } from '../types'; @@ -127,3 +128,13 @@ export interface VisualizationSearchQuery { export type VisualizationSearchIn = SearchIn; export type VisualizationSearchOut = SearchResult; + +// ----------- CRUD TYPES -------------- + +export type VisualizationCrudTypes = ContentManagementCrudTypes< + VisualizationContentType, + VisualizationSavedObjectAttributes, + CreateOptions, + UpdateOptions, + {} +>; diff --git a/src/plugins/visualizations/server/content_management/visualization_storage.ts b/src/plugins/visualizations/server/content_management/visualization_storage.ts index 5b5e99a7132aa..17a3e73b51479 100644 --- a/src/plugins/visualizations/server/content_management/visualization_storage.ts +++ b/src/plugins/visualizations/server/content_management/visualization_storage.ts @@ -5,343 +5,41 @@ * in compliance with, at your election, the Elastic License 2.0 or the Server * Side Public License, v 1. */ -import Boom from '@hapi/boom'; -import type { SearchQuery } from '@kbn/content-management-plugin/common'; -import type { ContentStorage, StorageContext } from '@kbn/content-management-plugin/server'; -import type { - SavedObject, - SavedObjectReference, - SavedObjectsFindOptions, -} from '@kbn/core-saved-objects-api-server'; -import { getMSearch, type GetMSearchType } from '@kbn/content-management-utils'; +import { SOContentStorage } from '@kbn/content-management-utils'; -import { CONTENT_ID } from '../../common/content_management'; +import { Logger } from '@kbn/logging'; import { cmServicesDefinition } from '../../common/content_management/cm_services'; import type { - VisualizationSavedObjectAttributes, - VisualizationSavedObject, - PartialVisualizationSavedObject, VisualizationContentType, - VisualizationGetOut, - VisualizationCreateIn, - VisualizationCreateOut, - CreateOptions, - VisualizationUpdateIn, - VisualizationUpdateOut, - UpdateOptions, - VisualizationDeleteOut, - VisualizationSearchQuery, - VisualizationSearchOut, + VisualizationCrudTypes, } from '../../common/content_management'; -const savedObjectClientFromRequest = async (ctx: StorageContext) => { - if (!ctx.requestHandlerContext) { - throw new Error('Storage context.requestHandlerContext missing.'); - } - - const { savedObjects } = await ctx.requestHandlerContext.core; - return savedObjects.client; -}; - -type PartialSavedObject = Omit>, 'references'> & { - references: SavedObjectReference[] | undefined; -}; - -function savedObjectToVisualizationSavedObject( - savedObject: SavedObject, - partial: false -): VisualizationSavedObject; - -function savedObjectToVisualizationSavedObject( - savedObject: PartialSavedObject, - partial: true -): PartialVisualizationSavedObject; - -function savedObjectToVisualizationSavedObject( - savedObject: - | SavedObject - | PartialSavedObject -): VisualizationSavedObject | PartialVisualizationSavedObject { - const { - id, - type, - updated_at: updatedAt, - created_at: createdAt, - attributes: { - title, - description, - visState, - kibanaSavedObjectMeta, - uiStateJSON, - savedSearchRefName, - }, - references, - error, - namespaces, - } = savedObject; - - return { - id, - type, - updatedAt, - createdAt, - attributes: { - title, - description, - visState, - kibanaSavedObjectMeta, - uiStateJSON, - savedSearchRefName, - }, - references, - error, - namespaces, - }; -} - const SO_TYPE: VisualizationContentType = 'visualization'; -export class VisualizationsStorage - implements ContentStorage -{ - mSearch: GetMSearchType; - - constructor() { - this.mSearch = getMSearch({ +export class VisualizationsStorage extends SOContentStorage { + constructor({ + logger, + throwOnResultValidationError, + }: { + logger: Logger; + throwOnResultValidationError: boolean; + }) { + super({ savedObjectType: SO_TYPE, cmServicesDefinition, + enableMSearch: true, allowedSavedObjectAttributes: [ 'title', 'description', 'version', + 'visState', 'kibanaSavedObjectMeta', 'uiStateJSON', - 'visState', 'savedSearchRefName', ], + logger, + throwOnResultValidationError, }); } - - async get(ctx: StorageContext, id: string): Promise { - const { - utils: { getTransforms }, - version: { request: requestVersion }, - } = ctx; - const transforms = getTransforms(cmServicesDefinition, requestVersion); - const soClient = await savedObjectClientFromRequest(ctx); - - // Save data in DB - const { - saved_object: savedObject, - alias_purpose: aliasPurpose, - alias_target_id: aliasTargetId, - outcome, - } = await soClient.resolve(SO_TYPE, id); - - const response: VisualizationGetOut = { - item: savedObjectToVisualizationSavedObject(savedObject, false), - meta: { - aliasPurpose, - aliasTargetId, - outcome, - }, - }; - - // Validate DB response and DOWN transform to the request version - const { value, error: resultError } = transforms.get.out.result.down< - VisualizationGetOut, - VisualizationGetOut - >(response); - - if (resultError) { - throw Boom.badRequest(`Invalid response. ${resultError.message}`); - } - - return value; - } - - async bulkGet(): Promise { - // Not implemented. Visualizations does not use bulkGet - throw new Error(`[bulkGet] has not been implemented. See VisualizationsStorage class.`); - } - - async create( - ctx: StorageContext, - data: VisualizationCreateIn['data'], - options: CreateOptions - ): Promise { - const { - utils: { getTransforms }, - version: { request: requestVersion }, - } = ctx; - const transforms = getTransforms(cmServicesDefinition, requestVersion); - - // Validate input (data & options) & UP transform them to the latest version - const { value: dataToLatest, error: dataError } = transforms.create.in.data.up< - VisualizationSavedObjectAttributes, - VisualizationSavedObjectAttributes - >(data); - if (dataError) { - throw Boom.badRequest(`Invalid data. ${dataError.message}`); - } - - const { value: optionsToLatest, error: optionsError } = transforms.create.in.options.up< - CreateOptions, - CreateOptions - >(options); - if (optionsError) { - throw Boom.badRequest(`Invalid options. ${optionsError.message}`); - } - - // Save data in DB - const soClient = await savedObjectClientFromRequest(ctx); - const savedObject = await soClient.create( - SO_TYPE, - dataToLatest, - optionsToLatest - ); - - // Validate DB response and DOWN transform to the request version - const { value, error: resultError } = transforms.create.out.result.down< - VisualizationCreateOut, - VisualizationCreateOut - >({ - item: savedObjectToVisualizationSavedObject(savedObject, false), - }); - - if (resultError) { - throw Boom.badRequest(`Invalid response. ${resultError.message}`); - } - - return value; - } - - async update( - ctx: StorageContext, - id: string, - data: VisualizationUpdateIn['data'], - options: UpdateOptions - ): Promise { - const { - utils: { getTransforms }, - version: { request: requestVersion }, - } = ctx; - const transforms = getTransforms(cmServicesDefinition, requestVersion); - - // Validate input (data & options) & UP transform them to the latest version - const { value: dataToLatest, error: dataError } = transforms.update.in.data.up< - VisualizationSavedObjectAttributes, - VisualizationSavedObjectAttributes - >(data); - if (dataError) { - throw Boom.badRequest(`Invalid data. ${dataError.message}`); - } - - const { value: optionsToLatest, error: optionsError } = transforms.update.in.options.up< - CreateOptions, - CreateOptions - >(options); - if (optionsError) { - throw Boom.badRequest(`Invalid options. ${optionsError.message}`); - } - - // Save data in DB - const soClient = await savedObjectClientFromRequest(ctx); - const partialSavedObject = await soClient.update( - SO_TYPE, - id, - dataToLatest, - optionsToLatest - ); - - // Validate DB response and DOWN transform to the request version - const { value, error: resultError } = transforms.update.out.result.down< - VisualizationUpdateOut, - VisualizationUpdateOut - >({ - item: savedObjectToVisualizationSavedObject(partialSavedObject, true), - }); - - if (resultError) { - throw Boom.badRequest(`Invalid response. ${resultError.message}`); - } - - return value; - } - - async delete(ctx: StorageContext, id: string): Promise { - const soClient = await savedObjectClientFromRequest(ctx); - await soClient.delete(SO_TYPE, id); - return { success: true }; - } - - async search( - ctx: StorageContext, - query: SearchQuery, - options: VisualizationSearchQuery = {} - ): Promise { - const { - utils: { getTransforms }, - version: { request: requestVersion }, - } = ctx; - const transforms = getTransforms(cmServicesDefinition, requestVersion); - const soClient = await savedObjectClientFromRequest(ctx); - - // Validate and UP transform the options - const { value: optionsToLatest, error: optionsError } = transforms.search.in.options.up< - VisualizationSearchQuery, - VisualizationSearchQuery - >(options); - if (optionsError) { - throw Boom.badRequest(`Invalid payload. ${optionsError.message}`); - } - const { searchFields = ['title^3', 'description'], types = [CONTENT_ID] } = optionsToLatest; - - const { included, excluded } = query.tags ?? {}; - const hasReference: SavedObjectsFindOptions['hasReference'] = included - ? included.map((id) => ({ - id, - type: 'tag', - })) - : undefined; - - const hasNoReference: SavedObjectsFindOptions['hasNoReference'] = excluded - ? excluded.map((id) => ({ - id, - type: 'tag', - })) - : undefined; - - const soQuery: SavedObjectsFindOptions = { - type: types, - search: query.text, - perPage: query.limit, - page: query.cursor ? +query.cursor : undefined, - defaultSearchOperator: 'AND', - searchFields, - hasReference, - hasNoReference, - }; - - // Execute the query in the DB - const response = await soClient.find(soQuery); - - // Validate the response and DOWN transform to the request version - const { value, error: resultError } = transforms.search.out.result.down< - VisualizationSearchOut, - VisualizationSearchOut - >({ - hits: response.saved_objects.map((so) => savedObjectToVisualizationSavedObject(so, false)), - pagination: { - total: response.total, - }, - }); - - if (resultError) { - throw Boom.badRequest(`Invalid response. ${resultError.message}`); - } - - return value; - } } diff --git a/src/plugins/visualizations/server/plugin.ts b/src/plugins/visualizations/server/plugin.ts index 6aa4a749ecb7a..fd8a0dbe2cba5 100644 --- a/src/plugins/visualizations/server/plugin.ts +++ b/src/plugins/visualizations/server/plugin.ts @@ -29,7 +29,7 @@ export class VisualizationsPlugin { private readonly logger: Logger; - constructor(initializerContext: PluginInitializerContext) { + constructor(private readonly initializerContext: PluginInitializerContext) { this.logger = initializerContext.logger.get(); } @@ -55,7 +55,10 @@ export class VisualizationsPlugin plugins.contentManagement.register({ id: CONTENT_ID, - storage: new VisualizationsStorage(), + storage: new VisualizationsStorage({ + logger: this.logger, + throwOnResultValidationError: this.initializerContext.env.mode.dev, + }), version: { latest: LATEST_VERSION, }, diff --git a/src/plugins/visualizations/tsconfig.json b/src/plugins/visualizations/tsconfig.json index a835f3151c60c..b428e361d1985 100644 --- a/src/plugins/visualizations/tsconfig.json +++ b/src/plugins/visualizations/tsconfig.json @@ -54,7 +54,6 @@ "@kbn/saved-objects-management-plugin", "@kbn/saved-objects-finder-plugin", "@kbn/content-management-plugin", - "@kbn/core-saved-objects-api-server", "@kbn/object-versioning", "@kbn/core-saved-objects-server", "@kbn/core-saved-objects-utils-server", @@ -64,7 +63,8 @@ "@kbn/content-management-utils", "@kbn/serverless", "@kbn/no-data-page-plugin", - "@kbn/search-response-warnings" + "@kbn/search-response-warnings", + "@kbn/logging" ], "exclude": [ "target/**/*", diff --git a/test/examples/search/warnings.ts b/test/examples/search/warnings.ts index b8fcd5d63564b..267a49de08bc7 100644 --- a/test/examples/search/warnings.ts +++ b/test/examples/search/warnings.ts @@ -107,7 +107,7 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { await retry.try(async () => { const toasts = await find.allByCssSelector(toastsSelector); expect(toasts.length).to.be(2); - const expects = ['The data might be incomplete or wrong.', 'Query result']; + const expects = ['Results are partial and may be incomplete.', 'Query result']; await asyncForEach(toasts, async (t, index) => { expect(await t.getVisibleText()).to.eql(expects[index]); }); @@ -164,7 +164,7 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { await retry.try(async () => { toasts = await find.allByCssSelector(toastsSelector); expect(toasts.length).to.be(2); - const expects = ['The data might be incomplete or wrong.', 'Query result']; + const expects = ['Results are partial and may be incomplete.', 'Query result']; await asyncForEach(toasts, async (t, index) => { expect(await t.getVisibleText()).to.eql(expects[index]); }); diff --git a/x-pack/examples/triggers_actions_ui_example/public/components/rule_status_dropdown_sandbox.tsx b/x-pack/examples/triggers_actions_ui_example/public/components/rule_status_dropdown_sandbox.tsx index b1b0644f5dc10..982d55926d96a 100644 --- a/x-pack/examples/triggers_actions_ui_example/public/components/rule_status_dropdown_sandbox.tsx +++ b/x-pack/examples/triggers_actions_ui_example/public/components/rule_status_dropdown_sandbox.tsx @@ -18,18 +18,24 @@ export const RuleStatusDropdownSandbox = ({ triggersActionsUi }: SandboxProps) = const [isSnoozedUntil, setIsSnoozedUntil] = useState(null); const [muteAll, setMuteAll] = useState(false); + const onEnableRule: any = async () => { + setEnabled(true); + setMuteAll(false); + setIsSnoozedUntil(null); + }; + + const onDisableRule: any = async () => { + setEnabled(false); + }; + return triggersActionsUi.getRuleStatusDropdown({ rule: { enabled, isSnoozedUntil, muteAll, }, - enableRule: async () => { - setEnabled(true); - setMuteAll(false); - setIsSnoozedUntil(null); - }, - disableRule: async () => setEnabled(false), + enableRule: onEnableRule, + disableRule: onDisableRule, snoozeRule: async (schedule) => { if (schedule.duration === -1) { setIsSnoozedUntil(null); diff --git a/x-pack/packages/kbn-slo-schema/src/rest_specs/composite_slo.ts b/x-pack/packages/kbn-slo-schema/src/rest_specs/composite_slo.ts deleted file mode 100644 index 80fc421c82883..0000000000000 --- a/x-pack/packages/kbn-slo-schema/src/rest_specs/composite_slo.ts +++ /dev/null @@ -1,141 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import * as t from 'io-ts'; -import { - budgetingMethodSchema, - compositeSloIdSchema, - dateType, - objectiveSchema, - summarySchema, - tagsSchema, - timeWindowSchema, - weightedAverageCompositeMethodSchema, - weightedAverageSourceSchema, -} from '../schema'; - -const createCompositeSLOParamsSchema = t.type({ - body: t.intersection([ - t.type({ - name: t.string, - timeWindow: timeWindowSchema, - budgetingMethod: budgetingMethodSchema, - objective: objectiveSchema, - compositeMethod: weightedAverageCompositeMethodSchema, - sources: t.array(weightedAverageSourceSchema), - }), - t.partial({ id: compositeSloIdSchema, tags: tagsSchema }), - ]), -}); - -const createCompositeSLOResponseSchema = t.type({ - id: compositeSloIdSchema, -}); - -const compositeSLOResponseSchema = t.type({ - id: compositeSloIdSchema, - name: t.string, - timeWindow: timeWindowSchema, - budgetingMethod: budgetingMethodSchema, - objective: objectiveSchema, - compositeMethod: weightedAverageCompositeMethodSchema, - sources: t.array(weightedAverageSourceSchema), - tags: tagsSchema, - createdAt: dateType, - updatedAt: dateType, -}); - -const compositeSLOWithSummaryResponseSchema = t.intersection([ - compositeSLOResponseSchema, - t.type({ summary: summarySchema }), -]); - -const updateCompositeSLOParamsSchema = t.type({ - path: t.type({ - id: compositeSloIdSchema, - }), - body: t.partial({ - name: t.string, - compositeMethod: weightedAverageCompositeMethodSchema, - sources: t.array(weightedAverageSourceSchema), - timeWindow: timeWindowSchema, - budgetingMethod: budgetingMethodSchema, - objective: objectiveSchema, - tags: tagsSchema, - }), -}); - -const updateCompositeSLOResponseSchema = compositeSLOResponseSchema; - -const deleteCompositeSLOParamsSchema = t.type({ - path: t.type({ - id: compositeSloIdSchema, - }), -}); - -const getCompositeSLOParamsSchema = t.type({ - path: t.type({ - id: compositeSloIdSchema, - }), -}); - -const getCompositeSLOResponseSchema = compositeSLOWithSummaryResponseSchema; - -const sortDirectionSchema = t.union([t.literal('asc'), t.literal('desc')]); -const sortBySchema = t.literal('creationTime'); -const findCompositeSLOParamsSchema = t.partial({ - query: t.partial({ - name: t.string, - page: t.string, - perPage: t.string, - sortBy: sortBySchema, - sortDirection: sortDirectionSchema, - }), -}); - -const findCompositeSLOResponseSchema = t.type({ - page: t.number, - perPage: t.number, - total: t.number, - results: t.array(compositeSLOWithSummaryResponseSchema), -}); - -type CreateCompositeSLOInput = t.OutputOf; // Raw payload sent by the frontend -type CreateCompositeSLOParams = t.TypeOf; // Parsed payload used by the backend -type CreateCompositeSLOResponse = t.OutputOf; // Raw response sent to the frontend - -type GetCompositeSLOResponse = t.OutputOf; - -type FindCompositeSLOParams = t.TypeOf; -type FindCompositeSLOResponse = t.OutputOf; - -type UpdateCompositeSLOInput = t.OutputOf; -type UpdateCompositeSLOParams = t.TypeOf; -type UpdateCompositeSLOResponse = t.OutputOf; - -export { - compositeSLOResponseSchema, - createCompositeSLOParamsSchema, - deleteCompositeSLOParamsSchema, - findCompositeSLOParamsSchema, - findCompositeSLOResponseSchema, - getCompositeSLOParamsSchema, - updateCompositeSLOParamsSchema, - updateCompositeSLOResponseSchema, -}; - -export type { - CreateCompositeSLOInput, - CreateCompositeSLOParams, - CreateCompositeSLOResponse, - FindCompositeSLOParams, - FindCompositeSLOResponse, - GetCompositeSLOResponse, - UpdateCompositeSLOInput, - UpdateCompositeSLOParams, - UpdateCompositeSLOResponse, -}; diff --git a/x-pack/packages/kbn-slo-schema/src/rest_specs/index.ts b/x-pack/packages/kbn-slo-schema/src/rest_specs/index.ts index 777e009ca2ef0..78f557bdcbc7d 100644 --- a/x-pack/packages/kbn-slo-schema/src/rest_specs/index.ts +++ b/x-pack/packages/kbn-slo-schema/src/rest_specs/index.ts @@ -5,5 +5,4 @@ * 2.0. */ -export * from './composite_slo'; export * from './slo'; diff --git a/x-pack/packages/kbn-slo-schema/src/schema/composite_slo.ts b/x-pack/packages/kbn-slo-schema/src/schema/composite_slo.ts deleted file mode 100644 index ebfc31d5e111b..0000000000000 --- a/x-pack/packages/kbn-slo-schema/src/schema/composite_slo.ts +++ /dev/null @@ -1,41 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import * as t from 'io-ts'; - -import { dateType } from './common'; -import { budgetingMethodSchema, objectiveSchema, sloIdSchema, tagsSchema } from './slo'; -import { timeWindowSchema } from './time_window'; - -const compositeSloIdSchema = t.string; - -const weightedAverageCompositeMethodSchema = t.literal('weightedAverage'); -const weightedAverageSourceSchema = t.type({ - id: sloIdSchema, - revision: t.number, - weight: t.number, -}); - -const compositeSloSchema = t.type({ - id: compositeSloIdSchema, - name: t.string, - timeWindow: timeWindowSchema, - budgetingMethod: budgetingMethodSchema, - compositeMethod: weightedAverageCompositeMethodSchema, - objective: objectiveSchema, - sources: t.array(weightedAverageSourceSchema), - tags: tagsSchema, - createdAt: dateType, - updatedAt: dateType, -}); - -export { - weightedAverageSourceSchema, - weightedAverageCompositeMethodSchema, - compositeSloIdSchema, - compositeSloSchema, -}; diff --git a/x-pack/packages/kbn-slo-schema/src/schema/index.ts b/x-pack/packages/kbn-slo-schema/src/schema/index.ts index a710b4b946fd2..2fbddc7ce8537 100644 --- a/x-pack/packages/kbn-slo-schema/src/schema/index.ts +++ b/x-pack/packages/kbn-slo-schema/src/schema/index.ts @@ -6,7 +6,6 @@ */ export * from './common'; -export * from './composite_slo'; export * from './duration'; export * from './indicators'; export * from './time_window'; diff --git a/x-pack/packages/security-solution/features/src/app_features_keys.ts b/x-pack/packages/security-solution/features/src/app_features_keys.ts index ea3939e2b9f28..ab54c64cf8992 100644 --- a/x-pack/packages/security-solution/features/src/app_features_keys.ts +++ b/x-pack/packages/security-solution/features/src/app_features_keys.ts @@ -48,6 +48,11 @@ export enum AppFeatureSecurityKey { * Enables managing endpoint exceptions on rules and alerts */ endpointExceptions = 'endpointExceptions', + + /** + * enables all rule actions + */ + externalRuleActions = 'external_rule_actions', } export enum AppFeatureCasesKey { diff --git a/x-pack/packages/security-solution/features/src/security/app_feature_config.ts b/x-pack/packages/security-solution/features/src/security/app_feature_config.ts index a27dccd6c5bf6..66bbfb4e5ddcd 100644 --- a/x-pack/packages/security-solution/features/src/security/app_feature_config.ts +++ b/x-pack/packages/security-solution/features/src/security/app_feature_config.ts @@ -106,4 +106,6 @@ export const securityDefaultAppFeaturesConfig: DefaultSecurityAppFeaturesConfig }, [AppFeatureSecurityKey.osqueryAutomatedResponseActions]: {}, + + [AppFeatureSecurityKey.externalRuleActions]: {}, }; diff --git a/x-pack/plugins/aiops/public/embeddable/embeddable_change_point_chart.tsx b/x-pack/plugins/aiops/public/embeddable/embeddable_change_point_chart.tsx index b040069a235f4..af5942024ec99 100644 --- a/x-pack/plugins/aiops/public/embeddable/embeddable_change_point_chart.tsx +++ b/x-pack/plugins/aiops/public/embeddable/embeddable_change_point_chart.tsx @@ -66,7 +66,7 @@ export class EmbeddableChangePointChart extends AbstractEmbeddable< initialInput: EmbeddableChangePointChartInput, parent?: IContainer ) { - super(initialInput, { defaultTitle: initialInput.title }, parent); + super(initialInput, {}, parent); this.initOutput().finally(() => this.setInitializationFinished()); } diff --git a/x-pack/plugins/alerting/common/index.ts b/x-pack/plugins/alerting/common/index.ts index e2e9e477cc4cc..c1b5be4d518a4 100644 --- a/x-pack/plugins/alerting/common/index.ts +++ b/x-pack/plugins/alerting/common/index.ts @@ -37,6 +37,7 @@ export * from './rrule_type'; export * from './rule_tags_aggregation'; export * from './iso_weekdays'; export * from './saved_objects/rules/mappings'; +export * from './rule_circuit_breaker_error_message'; export type { MaintenanceWindowModificationMetadata, diff --git a/x-pack/plugins/alerting/common/rule_circuit_breaker_error_message.test.ts b/x-pack/plugins/alerting/common/rule_circuit_breaker_error_message.test.ts new file mode 100644 index 0000000000000..bb89ebad61af6 --- /dev/null +++ b/x-pack/plugins/alerting/common/rule_circuit_breaker_error_message.test.ts @@ -0,0 +1,70 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { + getRuleCircuitBreakerErrorMessage, + parseRuleCircuitBreakerErrorMessage, +} from './rule_circuit_breaker_error_message'; + +describe('getRuleCircuitBreakerErrorMessage', () => { + it('should return the correct message', () => { + expect( + getRuleCircuitBreakerErrorMessage({ + name: 'test rule', + action: 'create', + interval: 5, + intervalAvailable: 4, + }) + ).toMatchInlineSnapshot( + `"Error validating circuit breaker - Rule 'test rule' cannot be created. The maximum number of runs per minute would be exceeded. - The rule has 5 runs per minute; there are only 4 runs per minute available. Before you can modify this rule, you must increase its check interval so that it runs less frequently. Alternatively, disable other rules or change their check intervals."` + ); + + expect( + getRuleCircuitBreakerErrorMessage({ + name: 'test rule', + action: 'update', + interval: 1, + intervalAvailable: 1, + }) + ).toMatchInlineSnapshot( + `"Error validating circuit breaker - Rule 'test rule' cannot be updated. The maximum number of runs per minute would be exceeded. - The rule has 1 run per minute; there is only 1 run per minute available. Before you can modify this rule, you must increase its check interval so that it runs less frequently. Alternatively, disable other rules or change their check intervals."` + ); + + expect( + getRuleCircuitBreakerErrorMessage({ + name: 'test rule', + action: 'bulkEdit', + interval: 1, + intervalAvailable: 1, + rules: 5, + }) + ).toMatchInlineSnapshot( + `"Error validating circuit breaker - Rules cannot be bulk edited. The maximum number of runs per minute would be exceeded. - The rules have 1 run per minute; there is only 1 run per minute available. Before you can modify these rules, you must disable other rules or change their check intervals so they run less frequently."` + ); + }); + + it('should parse the error message', () => { + const message = getRuleCircuitBreakerErrorMessage({ + name: 'test rule', + action: 'create', + interval: 5, + intervalAvailable: 4, + }); + + const parsedMessage = parseRuleCircuitBreakerErrorMessage(message); + + expect(parsedMessage.summary).toContain("Rule 'test rule' cannot be created"); + expect(parsedMessage.details).toContain('The rule has 5 runs per minute'); + }); + + it('should passthrough the message if it is not related to circuit breakers', () => { + const parsedMessage = parseRuleCircuitBreakerErrorMessage('random message'); + + expect(parsedMessage.summary).toEqual('random message'); + expect(parsedMessage.details).toBeUndefined(); + }); +}); diff --git a/x-pack/plugins/alerting/common/rule_circuit_breaker_error_message.ts b/x-pack/plugins/alerting/common/rule_circuit_breaker_error_message.ts new file mode 100644 index 0000000000000..68eea28cdeba7 --- /dev/null +++ b/x-pack/plugins/alerting/common/rule_circuit_breaker_error_message.ts @@ -0,0 +1,136 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { i18n } from '@kbn/i18n'; + +const errorMessageHeader = 'Error validating circuit breaker'; + +const getCreateRuleErrorSummary = (name: string) => { + return i18n.translate('xpack.alerting.ruleCircuitBreaker.error.createSummary', { + defaultMessage: `Rule '{name}' cannot be created. The maximum number of runs per minute would be exceeded.`, + values: { + name, + }, + }); +}; + +const getUpdateRuleErrorSummary = (name: string) => { + return i18n.translate('xpack.alerting.ruleCircuitBreaker.error.updateSummary', { + defaultMessage: `Rule '{name}' cannot be updated. The maximum number of runs per minute would be exceeded.`, + values: { + name, + }, + }); +}; + +const getEnableRuleErrorSummary = (name: string) => { + return i18n.translate('xpack.alerting.ruleCircuitBreaker.error.enableSummary', { + defaultMessage: `Rule '{name}' cannot be enabled. The maximum number of runs per minute would be exceeded.`, + values: { + name, + }, + }); +}; + +const getBulkEditRuleErrorSummary = () => { + return i18n.translate('xpack.alerting.ruleCircuitBreaker.error.bulkEditSummary', { + defaultMessage: `Rules cannot be bulk edited. The maximum number of runs per minute would be exceeded.`, + }); +}; + +const getBulkEnableRuleErrorSummary = () => { + return i18n.translate('xpack.alerting.ruleCircuitBreaker.error.bulkEnableSummary', { + defaultMessage: `Rules cannot be bulk enabled. The maximum number of runs per minute would be exceeded.`, + }); +}; + +const getRuleCircuitBreakerErrorDetail = ({ + interval, + intervalAvailable, + rules, +}: { + interval: number; + intervalAvailable: number; + rules: number; +}) => { + if (rules === 1) { + return i18n.translate('xpack.alerting.ruleCircuitBreaker.error.ruleDetail', { + defaultMessage: `The rule has {interval, plural, one {{interval} run} other {{interval} runs}} per minute; there {intervalAvailable, plural, one {is only {intervalAvailable} run} other {are only {intervalAvailable} runs}} per minute available. Before you can modify this rule, you must increase its check interval so that it runs less frequently. Alternatively, disable other rules or change their check intervals.`, + values: { + interval, + intervalAvailable, + }, + }); + } + return i18n.translate('xpack.alerting.ruleCircuitBreaker.error.multipleRuleDetail', { + defaultMessage: `The rules have {interval, plural, one {{interval} run} other {{interval} runs}} per minute; there {intervalAvailable, plural, one {is only {intervalAvailable} run} other {are only {intervalAvailable} runs}} per minute available. Before you can modify these rules, you must disable other rules or change their check intervals so they run less frequently.`, + values: { + interval, + intervalAvailable, + }, + }); +}; + +export const getRuleCircuitBreakerErrorMessage = ({ + name = '', + interval, + intervalAvailable, + action, + rules = 1, +}: { + name?: string; + interval: number; + intervalAvailable: number; + action: 'update' | 'create' | 'enable' | 'bulkEdit' | 'bulkEnable'; + rules?: number; +}) => { + let errorMessageSummary: string; + + switch (action) { + case 'update': + errorMessageSummary = getUpdateRuleErrorSummary(name); + break; + case 'create': + errorMessageSummary = getCreateRuleErrorSummary(name); + break; + case 'enable': + errorMessageSummary = getEnableRuleErrorSummary(name); + break; + case 'bulkEdit': + errorMessageSummary = getBulkEditRuleErrorSummary(); + break; + case 'bulkEnable': + errorMessageSummary = getBulkEnableRuleErrorSummary(); + break; + } + + return `Error validating circuit breaker - ${errorMessageSummary} - ${getRuleCircuitBreakerErrorDetail( + { + interval, + intervalAvailable, + rules, + } + )}`; +}; + +export const parseRuleCircuitBreakerErrorMessage = ( + message: string +): { + summary: string; + details?: string; +} => { + if (!message.includes(errorMessageHeader)) { + return { + summary: message, + }; + } + const segments = message.split(' - '); + return { + summary: segments[1], + details: segments[2], + }; +}; diff --git a/x-pack/plugins/alerting/server/application/rule/methods/bulk_edit/bulk_edit_rules.ts b/x-pack/plugins/alerting/server/application/rule/methods/bulk_edit/bulk_edit_rules.ts index d76162696ead2..5bc625f5592b3 100644 --- a/x-pack/plugins/alerting/server/application/rule/methods/bulk_edit/bulk_edit_rules.ts +++ b/x-pack/plugins/alerting/server/application/rule/methods/bulk_edit/bulk_edit_rules.ts @@ -25,7 +25,7 @@ import { convertRuleIdsToKueryNode, } from '../../../../lib'; import { WriteOperations, AlertingAuthorizationEntity } from '../../../../authorization'; -import { parseDuration } from '../../../../../common/parse_duration'; +import { parseDuration, getRuleCircuitBreakerErrorMessage } from '../../../../../common'; import { bulkMarkApiKeysForInvalidation } from '../../../../invalidate_pending_api_keys/bulk_mark_api_keys_for_invalidation'; import { ruleAuditEvent, RuleAuditAction } from '../../../../rules_client/common/audit_events'; import { @@ -77,7 +77,7 @@ import { transformRuleDomainToRuleAttributes, transformRuleDomainToRule, } from '../../transforms'; -import { validateScheduleLimit } from '../get_schedule_frequency'; +import { validateScheduleLimit, ValidateScheduleLimitResult } from '../get_schedule_frequency'; const isValidInterval = (interval: string | undefined): interval is string => { return interval !== undefined; @@ -326,15 +326,16 @@ async function bulkEditRulesOcc( .map((rule) => rule.attributes.schedule?.interval) .filter(isValidInterval); - try { - if (operations.some((operation) => operation.field === 'schedule')) { - await validateScheduleLimit({ - context, - prevInterval, - updatedInterval, - }); - } - } catch (error) { + let validationPayload: ValidateScheduleLimitResult = null; + if (operations.some((operation) => operation.field === 'schedule')) { + validationPayload = await validateScheduleLimit({ + context, + prevInterval, + updatedInterval, + }); + } + + if (validationPayload) { return { apiKeysToInvalidate: Array.from(apiKeysMap.values()) .filter((value) => value.newApiKey) @@ -342,7 +343,13 @@ async function bulkEditRulesOcc( resultSavedObjects: [], rules: [], errors: rules.map((rule) => ({ - message: `Failed to bulk edit rule - ${error.message}`, + message: getRuleCircuitBreakerErrorMessage({ + name: rule.attributes.name || 'n/a', + interval: validationPayload!.interval, + intervalAvailable: validationPayload!.intervalAvailable, + action: 'bulkEdit', + rules: updatedInterval.length, + }), rule: { id: rule.id, name: rule.attributes.name || 'n/a', diff --git a/x-pack/plugins/alerting/server/application/rule/methods/create/create_rule.ts b/x-pack/plugins/alerting/server/application/rule/methods/create/create_rule.ts index 616a16a8315ed..d774a80ae4ebc 100644 --- a/x-pack/plugins/alerting/server/application/rule/methods/create/create_rule.ts +++ b/x-pack/plugins/alerting/server/application/rule/methods/create/create_rule.ts @@ -8,7 +8,7 @@ import Semver from 'semver'; import Boom from '@hapi/boom'; import { SavedObject, SavedObjectsUtils } from '@kbn/core/server'; import { withSpan } from '@kbn/apm-utils'; -import { parseDuration } from '../../../../../common/parse_duration'; +import { parseDuration, getRuleCircuitBreakerErrorMessage } from '../../../../../common'; import { WriteOperations, AlertingAuthorizationEntity } from '../../../../authorization'; import { validateRuleTypeParams, @@ -36,7 +36,7 @@ import { RuleAttributes } from '../../../../data/rule/types'; import type { CreateRuleData } from './types'; import { createRuleDataSchema } from './schemas'; import { createRuleSavedObject } from '../../../../rules_client/lib'; -import { validateScheduleLimit } from '../get_schedule_frequency'; +import { validateScheduleLimit, ValidateScheduleLimitResult } from '../get_schedule_frequency'; export interface CreateRuleOptions { id?: string; @@ -61,16 +61,29 @@ export async function createRule( try { createRuleDataSchema.validate(data); - if (data.enabled) { - await validateScheduleLimit({ - context, - updatedInterval: data.schedule.interval, - }); - } } catch (error) { throw Boom.badRequest(`Error validating create data - ${error.message}`); } + let validationPayload: ValidateScheduleLimitResult = null; + if (data.enabled) { + validationPayload = await validateScheduleLimit({ + context, + updatedInterval: data.schedule.interval, + }); + } + + if (validationPayload) { + throw Boom.badRequest( + getRuleCircuitBreakerErrorMessage({ + name: data.name, + interval: validationPayload!.interval, + intervalAvailable: validationPayload!.intervalAvailable, + action: 'create', + }) + ); + } + try { await withSpan({ name: 'authorization.ensureAuthorized', type: 'rules' }, () => context.authorization.ensureAuthorized({ diff --git a/x-pack/plugins/alerting/server/application/rule/methods/get_schedule_frequency/get_schedule_frequency.test.ts b/x-pack/plugins/alerting/server/application/rule/methods/get_schedule_frequency/get_schedule_frequency.test.ts index d23e4b3a7dd54..c9c890b2ff6ad 100644 --- a/x-pack/plugins/alerting/server/application/rule/methods/get_schedule_frequency/get_schedule_frequency.test.ts +++ b/x-pack/plugins/alerting/server/application/rule/methods/get_schedule_frequency/get_schedule_frequency.test.ts @@ -183,53 +183,55 @@ describe('validateScheduleLimit', () => { jest.clearAllMocks(); }); - test('should not throw if the updated interval does not exceed limits', () => { - return expect( - validateScheduleLimit({ + test('should not return anything if the updated interval does not exceed limits', async () => { + expect( + await validateScheduleLimit({ context, updatedInterval: ['1m', '1m'], }) - ).resolves.toBe(undefined); + ).toBeNull(); }); - test('should throw if the updated interval exceeds limits', () => { - return expect( - validateScheduleLimit({ + test('should return interval if the updated interval exceeds limits', async () => { + expect( + await validateScheduleLimit({ context, updatedInterval: ['1m', '1m', '1m', '2m'], }) - ).rejects.toThrowErrorMatchingInlineSnapshot( - `"Run limit reached: The rule has 3.5 runs per minute; there are only 3 runs per minute available."` - ); + ).toEqual({ + interval: 3.5, + intervalAvailable: 3, + }); }); - test('should not throw if previous interval was modified to be under the limit', () => { + test('should not return anything if previous interval was modified to be under the limit', async () => { internalSavedObjectsRepository.find.mockResolvedValue( getMockAggregationResult([{ interval: '1m', count: 6 }]) ); - return expect( - validateScheduleLimit({ + expect( + await validateScheduleLimit({ context, prevInterval: ['1m', '1m'], updatedInterval: ['2m', '2m'], }) - ).resolves.toBe(undefined); + ).toBeNull(); }); - test('should throw if the previous interval was modified to exceed the limit', () => { + test('should return interval if the previous interval was modified to exceed the limit', async () => { internalSavedObjectsRepository.find.mockResolvedValue( getMockAggregationResult([{ interval: '1m', count: 5 }]) ); - return expect( - validateScheduleLimit({ + expect( + await validateScheduleLimit({ context, prevInterval: ['1m'], updatedInterval: ['30s'], }) - ).rejects.toThrowErrorMatchingInlineSnapshot( - `"Run limit reached: The rule has 2 runs per minute; there are only 1 runs per minute available."` - ); + ).toEqual({ + interval: 2, + intervalAvailable: 0, + }); }); }); diff --git a/x-pack/plugins/alerting/server/application/rule/methods/get_schedule_frequency/get_schedule_frequency.ts b/x-pack/plugins/alerting/server/application/rule/methods/get_schedule_frequency/get_schedule_frequency.ts index 254cad93fd341..b670adeccae8a 100644 --- a/x-pack/plugins/alerting/server/application/rule/methods/get_schedule_frequency/get_schedule_frequency.ts +++ b/x-pack/plugins/alerting/server/application/rule/methods/get_schedule_frequency/get_schedule_frequency.ts @@ -85,7 +85,11 @@ interface ValidateScheduleLimitParams { updatedInterval: string | string[]; } -export const validateScheduleLimit = async (params: ValidateScheduleLimitParams) => { +export type ValidateScheduleLimitResult = { interval: number; intervalAvailable: number } | null; + +export const validateScheduleLimit = async ( + params: ValidateScheduleLimitParams +): Promise => { const { context, prevInterval = [], updatedInterval = [] } = params; const prevIntervalArray = Array.isArray(prevInterval) ? prevInterval : [prevInterval]; @@ -108,8 +112,11 @@ export const validateScheduleLimit = async (params: ValidateScheduleLimitParams) const computedRemainingSchedulesPerMinute = remainingSchedulesPerMinute + prevSchedulePerMinute; if (computedRemainingSchedulesPerMinute < updatedSchedulesPerMinute) { - throw new Error( - `Run limit reached: The rule has ${updatedSchedulesPerMinute} runs per minute; there are only ${computedRemainingSchedulesPerMinute} runs per minute available.` - ); + return { + interval: updatedSchedulesPerMinute, + intervalAvailable: remainingSchedulesPerMinute, + }; } + + return null; }; diff --git a/x-pack/plugins/alerting/server/application/rule/methods/get_schedule_frequency/index.ts b/x-pack/plugins/alerting/server/application/rule/methods/get_schedule_frequency/index.ts index e39a1cd8a671c..5b26d6a9b9a77 100644 --- a/x-pack/plugins/alerting/server/application/rule/methods/get_schedule_frequency/index.ts +++ b/x-pack/plugins/alerting/server/application/rule/methods/get_schedule_frequency/index.ts @@ -7,4 +7,6 @@ export type { GetScheduleFrequencyResult } from './types'; +export type { ValidateScheduleLimitResult } from './get_schedule_frequency'; + export { getScheduleFrequency, validateScheduleLimit } from './get_schedule_frequency'; diff --git a/x-pack/plugins/alerting/server/rules_client/methods/bulk_enable.ts b/x-pack/plugins/alerting/server/rules_client/methods/bulk_enable.ts index fda778e6b11af..cac39ccb367d4 100644 --- a/x-pack/plugins/alerting/server/rules_client/methods/bulk_enable.ts +++ b/x-pack/plugins/alerting/server/rules_client/methods/bulk_enable.ts @@ -19,6 +19,7 @@ import { buildKueryNodeFilter, getAndValidateCommonBulkOptions, } from '../common'; +import { getRuleCircuitBreakerErrorMessage } from '../../../common'; import { getAuthorizationFilter, checkAuthorizationAndGetTotal, @@ -143,13 +144,18 @@ const bulkEnableRulesWithOCC = async ( .filter((rule) => !rule.attributes.enabled) .map((rule) => rule.attributes.schedule?.interval); - try { - await validateScheduleLimit({ - context, - updatedInterval, + const validationPayload = await validateScheduleLimit({ + context, + updatedInterval, + }); + + if (validationPayload) { + scheduleValidationError = getRuleCircuitBreakerErrorMessage({ + interval: validationPayload.interval, + intervalAvailable: validationPayload.intervalAvailable, + action: 'bulkEnable', + rules: updatedInterval.length, }); - } catch (error) { - scheduleValidationError = `Error validating enable rule data - ${error.message}`; } await pMap(rulesFinderRules, async (rule) => { diff --git a/x-pack/plugins/alerting/server/rules_client/methods/enable.ts b/x-pack/plugins/alerting/server/rules_client/methods/enable.ts index 97e677a0c28cc..53df42f012ad8 100644 --- a/x-pack/plugins/alerting/server/rules_client/methods/enable.ts +++ b/x-pack/plugins/alerting/server/rules_client/methods/enable.ts @@ -15,6 +15,7 @@ import { ruleAuditEvent, RuleAuditAction } from '../common/audit_events'; import { RulesClientContext } from '../types'; import { updateMeta, createNewAPIKeySet, scheduleTask, migrateLegacyActions } from '../lib'; import { validateScheduleLimit } from '../../application/rule/methods/get_schedule_frequency'; +import { getRuleCircuitBreakerErrorMessage } from '../../../common'; export async function enable(context: RulesClientContext, { id }: { id: string }): Promise { return await retryIfConflicts( @@ -48,13 +49,20 @@ async function enableWithOCC(context: RulesClientContext, { id }: { id: string } references = alert.references; } - try { - await validateScheduleLimit({ - context, - updatedInterval: attributes.schedule.interval, - }); - } catch (error) { - throw Boom.badRequest(`Error validating enable rule data - ${error.message}`); + const validationPayload = await validateScheduleLimit({ + context, + updatedInterval: attributes.schedule.interval, + }); + + if (validationPayload) { + throw Boom.badRequest( + getRuleCircuitBreakerErrorMessage({ + name: attributes.name, + interval: validationPayload.interval, + intervalAvailable: validationPayload.intervalAvailable, + action: 'enable', + }) + ); } try { diff --git a/x-pack/plugins/alerting/server/rules_client/methods/update.ts b/x-pack/plugins/alerting/server/rules_client/methods/update.ts index 925f128f0b8b3..e302b02a0e163 100644 --- a/x-pack/plugins/alerting/server/rules_client/methods/update.ts +++ b/x-pack/plugins/alerting/server/rules_client/methods/update.ts @@ -17,7 +17,7 @@ import { } from '../../types'; import { validateRuleTypeParams, getRuleNotifyWhenType } from '../../lib'; import { WriteOperations, AlertingAuthorizationEntity } from '../../authorization'; -import { parseDuration } from '../../../common/parse_duration'; +import { parseDuration, getRuleCircuitBreakerErrorMessage } from '../../../common'; import { retryIfConflicts } from '../../lib/retry_if_conflicts'; import { bulkMarkApiKeysForInvalidation } from '../../invalidate_pending_api_keys/bulk_mark_api_keys_for_invalidation'; import { ruleAuditEvent, RuleAuditAction } from '../common/audit_events'; @@ -33,7 +33,10 @@ import { createNewAPIKeySet, migrateLegacyActions, } from '../lib'; -import { validateScheduleLimit } from '../../application/rule/methods/get_schedule_frequency'; +import { + validateScheduleLimit, + ValidateScheduleLimitResult, +} from '../../application/rule/methods/get_schedule_frequency'; type ShouldIncrementRevision = (params?: RuleTypeParams) => boolean; @@ -90,18 +93,27 @@ async function updateWithOCC( } const { - attributes: { enabled, schedule }, + attributes: { enabled, schedule, name }, } = alertSavedObject; - try { - if (enabled && schedule.interval !== data.schedule.interval) { - await validateScheduleLimit({ - context, - prevInterval: alertSavedObject.attributes.schedule?.interval, - updatedInterval: data.schedule.interval, - }); - } - } catch (error) { - throw Boom.badRequest(`Error validating update data - ${error.message}`); + + let validationPayload: ValidateScheduleLimitResult = null; + if (enabled && schedule.interval !== data.schedule.interval) { + validationPayload = await validateScheduleLimit({ + context, + prevInterval: alertSavedObject.attributes.schedule?.interval, + updatedInterval: data.schedule.interval, + }); + } + + if (validationPayload) { + throw Boom.badRequest( + getRuleCircuitBreakerErrorMessage({ + name, + interval: validationPayload.interval, + intervalAvailable: validationPayload.intervalAvailable, + action: 'update', + }) + ); } try { diff --git a/x-pack/plugins/apm/common/__snapshots__/apm_telemetry.test.ts.snap b/x-pack/plugins/apm/common/__snapshots__/apm_telemetry.test.ts.snap index f8e220ca97946..79ecdc077ea6f 100644 --- a/x-pack/plugins/apm/common/__snapshots__/apm_telemetry.test.ts.snap +++ b/x-pack/plugins/apm/common/__snapshots__/apm_telemetry.test.ts.snap @@ -1153,10 +1153,16 @@ exports[`APM telemetry helpers getApmTelemetry generates a JSON object with the } } }, + "has_any_services_per_official_agent": { + "type": "boolean", + "_meta": { + "description": "Indicates whether any service is being monitored. This is determined by checking all officially supported agents within the last day" + } + }, "has_any_services": { "type": "boolean", "_meta": { - "description": "Indicates whether any service is being monitored. This is determined by checking all agents within the last day" + "description": "Indicates whether any service is being monitored within the last day." } }, "version": { diff --git a/x-pack/plugins/apm/public/components/app/onboarding/commands/get_apm_agent_commands.test.ts b/x-pack/plugins/apm/public/components/app/onboarding/commands/get_apm_agent_commands.test.ts index b26c8da82d916..1938cf7722cb0 100644 --- a/x-pack/plugins/apm/public/components/app/onboarding/commands/get_apm_agent_commands.test.ts +++ b/x-pack/plugins/apm/public/components/app/onboarding/commands/get_apm_agent_commands.test.ts @@ -25,10 +25,10 @@ describe('getCommands', () => { }); expect(commands).toMatchInlineSnapshot(` "java -javaagent:/path/to/elastic-apm-agent-.jar \\\\ - -Delastic.apm.service_name= \\\\\\\\ + -Delastic.apm.service_name= \\\\ -Delastic.apm.api_key= \\\\ -Delastic.apm.server_url= \\\\ - -Delastic.apm.environment= \\\\\\\\ + -Delastic.apm.environment= \\\\ -Delastic.apm.application_packages=org.example \\\\ -jar my-service-name.jar" `); @@ -42,10 +42,10 @@ describe('getCommands', () => { expect(commands).not.toBe(''); expect(commands).toMatchInlineSnapshot(` "java -javaagent:/path/to/elastic-apm-agent-.jar \\\\ - -Delastic.apm.service_name= \\\\\\\\ + -Delastic.apm.service_name= \\\\ -Delastic.apm.secret_token=foobar \\\\ -Delastic.apm.server_url=localhost:8220 \\\\ - -Delastic.apm.environment= \\\\\\\\ + -Delastic.apm.environment= \\\\ -Delastic.apm.application_packages=org.example \\\\ -jar my-service-name.jar" `); @@ -60,10 +60,10 @@ describe('getCommands', () => { expect(commands).not.toBe(''); expect(commands).toMatchInlineSnapshot(` "java -javaagent:/path/to/elastic-apm-agent-.jar \\\\ - -Delastic.apm.service_name= \\\\\\\\ + -Delastic.apm.service_name= \\\\ -Delastic.apm.secret_token=foobar \\\\ -Delastic.apm.server_url=localhost:8220 \\\\ - -Delastic.apm.environment= \\\\\\\\ + -Delastic.apm.environment= \\\\ -Delastic.apm.application_packages=org.example \\\\ -jar my-service-name.jar" `); diff --git a/x-pack/plugins/apm/public/components/app/onboarding/commands/java.ts b/x-pack/plugins/apm/public/components/app/onboarding/commands/java.ts index fd8ffec78e29d..590e62b42d68d 100644 --- a/x-pack/plugins/apm/public/components/app/onboarding/commands/java.ts +++ b/x-pack/plugins/apm/public/components/app/onboarding/commands/java.ts @@ -6,17 +6,17 @@ */ import { - serviceNameHint, + apiKeyHint, secretTokenHint, serverUrlHint, serviceEnvironmentHint, - apiKeyHint, + serviceNameHint, } from './shared_hints'; export const javaVariables = (secretToken?: string) => ({ - ...(secretToken && { secretToken: 'Delastic.apm.secret_token' }), - ...(!secretToken && { apiKey: 'Delastic.apm.api_key' }), - apmServerUrl: 'Delastic.apm.server_url', + ...(secretToken && { secretToken: 'elastic.apm.secret_token' }), + ...(!secretToken && { apiKey: 'elastic.apm.api_key' }), + apmServerUrl: 'elastic.apm.server_url', }); export const javaHighlightLang = 'java'; @@ -32,7 +32,7 @@ export const javaLineNumbers = (apiKey?: string | null) => ({ }, }); export const java = `java -javaagent:/path/to/elastic-apm-agent-.jar \\ --Delastic.apm.service_name= \\\\ +-Delastic.apm.service_name= \\ {{^secretToken}} -Delastic.apm.api_key={{{apiKey}}} \\ {{/secretToken}} @@ -40,6 +40,6 @@ export const java = `java -javaagent:/path/to/elastic-apm-agent-.jar \\ -Delastic.apm.secret_token={{{secretToken}}} \\ {{/secretToken}} -Delastic.apm.server_url={{{apmServerUrl}}} \\ --Delastic.apm.environment= \\\\ +-Delastic.apm.environment= \\ -Delastic.apm.application_packages=org.example \\ -jar my-service-name.jar`; diff --git a/x-pack/plugins/apm/server/lib/apm_telemetry/collect_data_telemetry/tasks.ts b/x-pack/plugins/apm/server/lib/apm_telemetry/collect_data_telemetry/tasks.ts index 1ae9b5752a1c8..c024a8bb0b752 100644 --- a/x-pack/plugins/apm/server/lib/apm_telemetry/collect_data_telemetry/tasks.ts +++ b/x-pack/plugins/apm/server/lib/apm_telemetry/collect_data_telemetry/tasks.ts @@ -678,8 +678,37 @@ export const tasks: TelemetryTask[] = [ Promise.resolve({} as Record) ); + const services = await telemetryClient.search({ + index: [ + indices.error, + indices.span, + indices.metric, + indices.transaction, + ], + body: { + size: 0, + track_total_hits: true, + terminate_after: 1, + query: { + bool: { + filter: [ + { + exists: { + field: SERVICE_NAME, + }, + }, + range1d, + ], + }, + }, + timeout, + }, + }); + return { - has_any_services: sum(Object.values(servicesPerAgent)) > 0, + has_any_services_per_official_agent: + sum(Object.values(servicesPerAgent)) > 0, + has_any_services: services?.hits?.total?.value > 0, services_per_agent: servicesPerAgent, }; }, diff --git a/x-pack/plugins/apm/server/lib/apm_telemetry/schema.ts b/x-pack/plugins/apm/server/lib/apm_telemetry/schema.ts index 59f8c1f7097e7..e52be12ca5c36 100644 --- a/x-pack/plugins/apm/server/lib/apm_telemetry/schema.ts +++ b/x-pack/plugins/apm/server/lib/apm_telemetry/schema.ts @@ -567,11 +567,18 @@ export const apmPerServiceSchema: MakeSchemaFrom = { export const apmSchema: MakeSchemaFrom = { ...apmPerAgentSchema, + has_any_services_per_official_agent: { + type: 'boolean', + _meta: { + description: + 'Indicates whether any service is being monitored. This is determined by checking all officially supported agents within the last day', + }, + }, has_any_services: { type: 'boolean', _meta: { description: - 'Indicates whether any service is being monitored. This is determined by checking all agents within the last day', + 'Indicates whether any service is being monitored within the last day.', }, }, version: { diff --git a/x-pack/plugins/apm/server/lib/apm_telemetry/types.ts b/x-pack/plugins/apm/server/lib/apm_telemetry/types.ts index 11e181f552b47..fc6cfe8d3ee47 100644 --- a/x-pack/plugins/apm/server/lib/apm_telemetry/types.ts +++ b/x-pack/plugins/apm/server/lib/apm_telemetry/types.ts @@ -70,6 +70,7 @@ export interface APMPerService { } export interface APMUsage { + has_any_services_per_official_agent: boolean; has_any_services: boolean; services_per_agent: Record; version: { diff --git a/x-pack/plugins/cloud_security_posture/public/components/fleet_extensions/gcp_credential_form.tsx b/x-pack/plugins/cloud_security_posture/public/components/fleet_extensions/gcp_credential_form.tsx index a1d280f58c7a6..909eb029f5e98 100644 --- a/x-pack/plugins/cloud_security_posture/public/components/fleet_extensions/gcp_credential_form.tsx +++ b/x-pack/plugins/cloud_security_posture/public/components/fleet_extensions/gcp_credential_form.tsx @@ -177,12 +177,14 @@ const credentialOptionsList = [ defaultMessage: 'Credentials File', }), value: 'credentials-file', + 'data-test-subj': 'credentials_file_option_test_id', }, { text: i18n.translate('xpack.csp.gcpIntegration.credentialsJsonOption', { defaultMessage: 'Credentials JSON', }), value: 'credentials-json', + 'data-test-subj': 'credentials_json_option_test_id', }, ]; diff --git a/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/new_index/select_connector/connector_checkable.tsx b/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/new_index/select_connector/connector_checkable.tsx index 1b24e10010e55..940beb64c41b7 100644 --- a/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/new_index/select_connector/connector_checkable.tsx +++ b/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/new_index/select_connector/connector_checkable.tsx @@ -103,18 +103,6 @@ export const ConnectorCheckable: React.FC = ({ value={serviceType} > - {documentationUrl && ( - - - {i18n.translate( - 'xpack.enterpriseSearch.content.indices.selectConnector.connectorCheckable.documentationLinkLabel', - { - defaultMessage: 'Documentation', - } - )} - - - )} = ({ )} + {documentationUrl && ( + + + + {i18n.translate( + 'xpack.enterpriseSearch.content.indices.selectConnector.connectorCheckable.documentationLinkLabel', + { + defaultMessage: 'Documentation', + } + )} + + + + )} ); diff --git a/x-pack/plugins/enterprise_search/public/applications/shared/doc_links/doc_links.ts b/x-pack/plugins/enterprise_search/public/applications/shared/doc_links/doc_links.ts index f84be1ad660b3..6dd47fe869ede 100644 --- a/x-pack/plugins/enterprise_search/public/applications/shared/doc_links/doc_links.ts +++ b/x-pack/plugins/enterprise_search/public/applications/shared/doc_links/doc_links.ts @@ -418,6 +418,7 @@ class DocLinks { this.connectorsMySQL = docLinks.links.enterpriseSearch.connectorsMySQL; this.connectorsNative = docLinks.links.enterpriseSearch.connectorsNative; this.connectorsNetworkDrive = docLinks.links.enterpriseSearch.connectorsNetworkDrive; + this.connectorsOneDrive = docLinks.links.enterpriseSearch.connectorsOneDrive; this.connectorsOracle = docLinks.links.enterpriseSearch.connectorsOracle; this.connectorsOutlook = docLinks.links.enterpriseSearch.connectorsOutlook; this.connectorsPostgreSQL = docLinks.links.enterpriseSearch.connectorsPostgreSQL; diff --git a/x-pack/plugins/enterprise_search/server/lib/ml/ml_model_deployment_common.ts b/x-pack/plugins/enterprise_search/server/lib/ml/ml_model_deployment_common.ts index 59498b4d8587a..84af615841eaf 100644 --- a/x-pack/plugins/enterprise_search/server/lib/ml/ml_model_deployment_common.ts +++ b/x-pack/plugins/enterprise_search/server/lib/ml/ml_model_deployment_common.ts @@ -5,16 +5,12 @@ * 2.0. */ -import { ELASTIC_MODEL_DEFINITIONS } from '@kbn/ml-trained-models-utils'; - import { ElasticsearchResponseError, isNotFoundException, isResourceNotFoundException, } from '../../utils/identify_exceptions'; -export const acceptableModelNames = Object.keys(ELASTIC_MODEL_DEFINITIONS); - export function isNotFoundExceptionError(error: unknown): boolean { return ( isResourceNotFoundException(error as ElasticsearchResponseError) || @@ -23,20 +19,3 @@ export function isNotFoundExceptionError(error: unknown): boolean { error?.statusCode === 404 ); } - -export function throwIfNotAcceptableModelName(modelName: string) { - if (!acceptableModelNames.includes(modelName)) { - const notFoundError: ElasticsearchResponseError = { - meta: { - body: { - error: { - type: 'resource_not_found_exception', - }, - }, - statusCode: 404, - }, - name: 'ResponseError', - }; - throw notFoundError; - } -} diff --git a/x-pack/plugins/enterprise_search/server/lib/ml/start_ml_model_deployment.ts b/x-pack/plugins/enterprise_search/server/lib/ml/start_ml_model_deployment.ts index 75bac93c2d200..4f65dbf9ced64 100644 --- a/x-pack/plugins/enterprise_search/server/lib/ml/start_ml_model_deployment.ts +++ b/x-pack/plugins/enterprise_search/server/lib/ml/start_ml_model_deployment.ts @@ -12,10 +12,7 @@ import { MlTrainedModels } from '@kbn/ml-plugin/server'; import { MlModelDeploymentStatus, MlModelDeploymentState } from '../../../common/types/ml'; import { getMlModelDeploymentStatus } from './get_ml_model_deployment_status'; -import { - isNotFoundExceptionError, - throwIfNotAcceptableModelName, -} from './ml_model_deployment_common'; +import { isNotFoundExceptionError } from './ml_model_deployment_common'; export const startMlModelDeployment = async ( modelName: string, @@ -25,10 +22,6 @@ export const startMlModelDeployment = async ( throw new Error('Machine Learning is not enabled'); } - // before anything else, check our model name - // to ensure we only allow those names we want - throwIfNotAcceptableModelName(modelName); - try { // try and get the deployment status of the model first // and see if it's already deployed or deploying... diff --git a/x-pack/plugins/enterprise_search/server/lib/ml/start_ml_model_download.ts b/x-pack/plugins/enterprise_search/server/lib/ml/start_ml_model_download.ts index 4d7f3c21e1210..ffa51acc5bd32 100644 --- a/x-pack/plugins/enterprise_search/server/lib/ml/start_ml_model_download.ts +++ b/x-pack/plugins/enterprise_search/server/lib/ml/start_ml_model_download.ts @@ -11,10 +11,7 @@ import { MlTrainedModels } from '@kbn/ml-plugin/server'; import { MlModelDeploymentState, MlModelDeploymentStatus } from '../../../common/types/ml'; import { getMlModelDeploymentStatus } from './get_ml_model_deployment_status'; -import { - isNotFoundExceptionError, - throwIfNotAcceptableModelName, -} from './ml_model_deployment_common'; +import { isNotFoundExceptionError } from './ml_model_deployment_common'; export const startMlModelDownload = async ( modelName: string, @@ -24,10 +21,6 @@ export const startMlModelDownload = async ( throw new Error('Machine Learning is not enabled'); } - // before anything else, check our model name - // to ensure we only allow those names we want - throwIfNotAcceptableModelName(modelName); - try { // try and get the deployment status of the model first // and see if it's already deployed or deploying... diff --git a/x-pack/plugins/fleet/server/config.test.ts b/x-pack/plugins/fleet/server/config.test.ts index da654244aae30..53fc0545efcf3 100644 --- a/x-pack/plugins/fleet/server/config.test.ts +++ b/x-pack/plugins/fleet/server/config.test.ts @@ -5,9 +5,18 @@ * 2.0. */ +import { loggingSystemMock } from '@kbn/core/server/mocks'; + import { config } from './config'; +import { appContextService } from './services'; + +jest.mock('./services/app_context'); describe('Config schema', () => { + beforeEach(() => { + const mockedLogger = loggingSystemMock.createLogger(); + jest.mocked(appContextService.getLogger).mockReturnValue(mockedLogger); + }); it('should not allow to specify both default output in xpack.fleet.ouputs and xpack.fleet.agents.elasticsearch.hosts ', () => { expect(() => { config.schema.validate({ @@ -70,4 +79,26 @@ describe('Config schema', () => { }); }).not.toThrow(); }); + + it('should log a warning when trying to enable a non existing experimental feature', () => { + expect(() => { + config.schema.validate({ + enableExperimental: ['notvalid'], + }); + }).not.toThrow(); + + expect(appContextService.getLogger().warn).toBeCalledWith( + '[notvalid] is not a valid fleet experimental feature.' + ); + }); + + it('should not log a warning when enabling an existing experimental feature', () => { + expect(() => { + config.schema.validate({ + enableExperimental: ['displayAgentMetrics'], + }); + }).not.toThrow(); + + expect(appContextService.getLogger().warn).not.toBeCalled(); + }); }); diff --git a/x-pack/plugins/fleet/server/config.ts b/x-pack/plugins/fleet/server/config.ts index e6d007c058b74..e5fec70fa37a7 100644 --- a/x-pack/plugins/fleet/server/config.ts +++ b/x-pack/plugins/fleet/server/config.ts @@ -11,11 +11,7 @@ import { schema } from '@kbn/config-schema'; import type { TypeOf } from '@kbn/config-schema'; import type { PluginConfigDescriptor } from '@kbn/core/server'; -import { - getExperimentalAllowedValues, - isValidExperimentalValue, -} from '../common/experimental_features'; -const allowedExperimentalValues = getExperimentalAllowedValues(); +import { isValidExperimentalValue } from '../common/experimental_features'; import { PreconfiguredPackagesSchema, @@ -25,6 +21,7 @@ import { PreconfiguredFleetProxiesSchema, } from './types'; import { BULK_CREATE_MAX_ARTIFACTS_BYTES } from './services/artifacts/artifacts'; +import { appContextService } from './services'; const DEFAULT_BUNDLED_PACKAGE_LOCATION = path.join(__dirname, '../target/bundled_packages'); const DEFAULT_GPG_KEY_PATH = path.join(__dirname, '../target/keys/GPG-KEY-elasticsearch'); @@ -162,9 +159,9 @@ export const config: PluginConfigDescriptor = { validate(list) { for (const key of list) { if (!isValidExperimentalValue(key)) { - return `[${key}] is not allowed. Allowed values are: ${allowedExperimentalValues.join( - ', ' - )}`; + appContextService + .getLogger() + .warn(`[${key}] is not a valid fleet experimental feature.`); } } }, diff --git a/x-pack/plugins/fleet/server/integration_tests/cloud_preconfiguration.test.ts b/x-pack/plugins/fleet/server/integration_tests/cloud_preconfiguration.test.ts index db7d0ce60f006..c080aefacd12e 100644 --- a/x-pack/plugins/fleet/server/integration_tests/cloud_preconfiguration.test.ts +++ b/x-pack/plugins/fleet/server/integration_tests/cloud_preconfiguration.test.ts @@ -30,7 +30,7 @@ import { const logFilePath = Path.join(__dirname, 'logs.log'); -describe('Fleet preconfiguration reset', () => { +describe('Fleet cloud preconfiguration', () => { let esServer: TestElasticsearchUtils; let kbnServer: TestKibanaUtils; @@ -143,8 +143,7 @@ describe('Fleet preconfiguration reset', () => { expect(agentPolicies.saved_objects.find((so) => so.id === 'default-policy')).toBeDefined(); }); - // FLAKY: https://github.com/elastic/kibana/issues/133470 - it.skip('Create correct .fleet-policies', async () => { + it('Create correct .fleet-policies', async () => { const res = await kbnServer.coreStart.elasticsearch.client.asInternalUser.search({ index: AGENT_POLICY_INDEX, q: `policy_id:policy-elastic-agent-on-cloud`, @@ -325,6 +324,9 @@ describe('Fleet preconfiguration reset', () => { }, ], }, + 'elastic-cloud-fleet-server': { + indices: [], + }, }, }, outputs: { diff --git a/x-pack/plugins/graph/common/content_management/index.ts b/x-pack/plugins/graph/common/content_management/index.ts index c848adbce1747..cdaef8264125d 100644 --- a/x-pack/plugins/graph/common/content_management/index.ts +++ b/x-pack/plugins/graph/common/content_management/index.ts @@ -26,6 +26,7 @@ export type { GraphSearchIn, GraphSearchOut, GraphSearchQuery, + GraphCrudTypes, } from './latest'; export * as GraphV1 from './v1'; diff --git a/x-pack/plugins/graph/common/content_management/v1/index.ts b/x-pack/plugins/graph/common/content_management/v1/index.ts index 3ce273575aca7..2e2b8b9dd6950 100644 --- a/x-pack/plugins/graph/common/content_management/v1/index.ts +++ b/x-pack/plugins/graph/common/content_management/v1/index.ts @@ -22,5 +22,6 @@ export type { GraphSearchIn, GraphSearchOut, GraphSearchQuery, + GraphCrudTypes, Reference, } from './types'; diff --git a/x-pack/plugins/graph/common/content_management/v1/types.ts b/x-pack/plugins/graph/common/content_management/v1/types.ts index 51bb9017c38a9..c6664cf5a162c 100644 --- a/x-pack/plugins/graph/common/content_management/v1/types.ts +++ b/x-pack/plugins/graph/common/content_management/v1/types.ts @@ -17,6 +17,7 @@ import { CreateResult, UpdateResult, } from '@kbn/content-management-plugin/common'; +import { ContentManagementCrudTypes } from '@kbn/content-management-utils'; import { GraphContentType } from '../types'; @@ -113,3 +114,13 @@ export interface GraphSearchQuery { export type GraphSearchIn = SearchIn; export type GraphSearchOut = SearchResult; + +// ----------- CRUD TYPES -------------- + +export type GraphCrudTypes = ContentManagementCrudTypes< + GraphContentType, + GraphSavedObjectAttributes, + CreateOptions, + UpdateOptions, + {} +>; diff --git a/x-pack/plugins/graph/server/content_management/graph_storage.ts b/x-pack/plugins/graph/server/content_management/graph_storage.ts index e0faea8c99b9c..6487f942b29d4 100644 --- a/x-pack/plugins/graph/server/content_management/graph_storage.ts +++ b/x-pack/plugins/graph/server/content_management/graph_storage.ts @@ -4,325 +4,37 @@ * 2.0; you may not use this file except in compliance with the Elastic License * 2.0. */ -import Boom from '@hapi/boom'; -import type { SearchQuery } from '@kbn/content-management-plugin/common'; -import type { ContentStorage, StorageContext } from '@kbn/content-management-plugin/server'; -import type { - SavedObject, - SavedObjectReference, - SavedObjectsFindOptions, -} from '@kbn/core-saved-objects-api-server'; +import { Logger } from '@kbn/logging'; +import { SOContentStorage } from '@kbn/content-management-utils'; import { cmServicesDefinition } from '../../common/content_management/cm_services'; -import type { - GraphSavedObjectAttributes, - GraphSavedObject, - PartialGraphSavedObject, - GraphGetOut, - GraphCreateIn, - GraphCreateOut, - CreateOptions, - GraphUpdateIn, - GraphUpdateOut, - UpdateOptions, - GraphDeleteOut, - GraphSearchQuery, - GraphSearchOut, -} from '../../common/content_management'; - -const savedObjectClientFromRequest = async (ctx: StorageContext) => { - if (!ctx.requestHandlerContext) { - throw new Error('Storage context.requestHandlerContext missing.'); - } - - const { savedObjects } = await ctx.requestHandlerContext.core; - return savedObjects.client; -}; - -type PartialSavedObject = Omit>, 'references'> & { - references: SavedObjectReference[] | undefined; -}; - -function savedObjectToGraphSavedObject( - savedObject: SavedObject, - partial: false -): GraphSavedObject; - -function savedObjectToGraphSavedObject( - savedObject: PartialSavedObject, - partial: true -): PartialGraphSavedObject; - -function savedObjectToGraphSavedObject( - savedObject: - | SavedObject - | PartialSavedObject -): GraphSavedObject | PartialGraphSavedObject { - const { - id, - type, - updated_at: updatedAt, - created_at: createdAt, - attributes: { - title, - description, - version, - kibanaSavedObjectMeta, - wsState, - numVertices, - numLinks, - legacyIndexPatternRef, - }, - references, - error, - namespaces, - } = savedObject; - - return { - id, - type, - updatedAt, - createdAt, - attributes: { - title, - description, - kibanaSavedObjectMeta, - wsState, - version, - numLinks, - numVertices, - legacyIndexPatternRef, - }, - references, - error, - namespaces, - }; -} +import type { GraphCrudTypes } from '../../common/content_management'; const SO_TYPE = 'graph-workspace'; -export class GraphStorage implements ContentStorage { - constructor() {} - - async get(ctx: StorageContext, id: string): Promise { - const { - utils: { getTransforms }, - version: { request: requestVersion }, - } = ctx; - const transforms = getTransforms(cmServicesDefinition, requestVersion); - const soClient = await savedObjectClientFromRequest(ctx); - - // Save data in DB - const { - saved_object: savedObject, - alias_purpose: aliasPurpose, - alias_target_id: aliasTargetId, - outcome, - } = await soClient.resolve(SO_TYPE, id); - - const response: GraphGetOut = { - item: savedObjectToGraphSavedObject(savedObject, false), - meta: { - aliasPurpose, - aliasTargetId, - outcome, - }, - }; - - // Validate DB response and DOWN transform to the request version - const { value, error: resultError } = transforms.get.out.result.down( - response - ); - - if (resultError) { - throw Boom.badRequest(`Invalid response. ${resultError.message}`); - } - - return value; - } - - async bulkGet(): Promise { - // Not implemented. Graph does not use bulkGet - throw new Error(`[bulkGet] has not been implemented. See GraphStorage class.`); - } - - async create( - ctx: StorageContext, - data: GraphCreateIn['data'], - options: CreateOptions - ): Promise { - const { - utils: { getTransforms }, - version: { request: requestVersion }, - } = ctx; - const transforms = getTransforms(cmServicesDefinition, requestVersion); - - // Validate input (data & options) & UP transform them to the latest version - const { value: dataToLatest, error: dataError } = transforms.create.in.data.up< - GraphSavedObjectAttributes, - GraphSavedObjectAttributes - >(data); - if (dataError) { - throw Boom.badRequest(`Invalid data. ${dataError.message}`); - } - - const { value: optionsToLatest, error: optionsError } = transforms.create.in.options.up< - CreateOptions, - CreateOptions - >(options); - if (optionsError) { - throw Boom.badRequest(`Invalid options. ${optionsError.message}`); - } - - // Save data in DB - const soClient = await savedObjectClientFromRequest(ctx); - const savedObject = await soClient.create( - SO_TYPE, - dataToLatest, - optionsToLatest - ); - - // Validate DB response and DOWN transform to the request version - const { value, error: resultError } = transforms.create.out.result.down< - GraphCreateOut, - GraphCreateOut - >({ - item: savedObjectToGraphSavedObject(savedObject, false), +export class GraphStorage extends SOContentStorage { + constructor({ + logger, + throwOnResultValidationError, + }: { + logger: Logger; + throwOnResultValidationError: boolean; + }) { + super({ + savedObjectType: SO_TYPE, + cmServicesDefinition, + allowedSavedObjectAttributes: [ + 'title', + 'description', + 'kibanaSavedObjectMeta', + 'wsState', + 'version', + 'numLinks', + 'numVertices', + 'legacyIndexPatternRef', + ], + logger, + throwOnResultValidationError, }); - - if (resultError) { - throw Boom.badRequest(`Invalid response. ${resultError.message}`); - } - - return value; - } - - async update( - ctx: StorageContext, - id: string, - data: GraphUpdateIn['data'], - options: UpdateOptions - ): Promise { - const { - utils: { getTransforms }, - version: { request: requestVersion }, - } = ctx; - const transforms = getTransforms(cmServicesDefinition, requestVersion); - - // Validate input (data & options) & UP transform them to the latest version - const { value: dataToLatest, error: dataError } = transforms.update.in.data.up< - GraphSavedObjectAttributes, - GraphSavedObjectAttributes - >(data); - if (dataError) { - throw Boom.badRequest(`Invalid data. ${dataError.message}`); - } - - const { value: optionsToLatest, error: optionsError } = transforms.update.in.options.up< - CreateOptions, - CreateOptions - >(options); - if (optionsError) { - throw Boom.badRequest(`Invalid options. ${optionsError.message}`); - } - - // Save data in DB - const soClient = await savedObjectClientFromRequest(ctx); - const partialSavedObject = await soClient.update( - SO_TYPE, - id, - dataToLatest, - optionsToLatest - ); - - // Validate DB response and DOWN transform to the request version - const { value, error: resultError } = transforms.update.out.result.down< - GraphUpdateOut, - GraphUpdateOut - >({ - item: savedObjectToGraphSavedObject(partialSavedObject, true), - }); - - if (resultError) { - throw Boom.badRequest(`Invalid response. ${resultError.message}`); - } - - return value; - } - - async delete(ctx: StorageContext, id: string): Promise { - const soClient = await savedObjectClientFromRequest(ctx); - await soClient.delete(SO_TYPE, id); - return { success: true }; - } - - async search( - ctx: StorageContext, - query: SearchQuery, - options: GraphSearchQuery = {} - ): Promise { - const { - utils: { getTransforms }, - version: { request: requestVersion }, - } = ctx; - const transforms = getTransforms(cmServicesDefinition, requestVersion); - const soClient = await savedObjectClientFromRequest(ctx); - - // Validate and UP transform the options - const { value: optionsToLatest, error: optionsError } = transforms.search.in.options.up< - GraphSearchQuery, - GraphSearchQuery - >(options); - if (optionsError) { - throw Boom.badRequest(`Invalid payload. ${optionsError.message}`); - } - const { searchFields = ['title^3', 'description'], types = ['graph-workspace'] } = - optionsToLatest; - - const { included, excluded } = query.tags ?? {}; - const hasReference: SavedObjectsFindOptions['hasReference'] = included - ? included.map((id) => ({ - id, - type: 'tag', - })) - : undefined; - - const hasNoReference: SavedObjectsFindOptions['hasNoReference'] = excluded - ? excluded.map((id) => ({ - id, - type: 'tag', - })) - : undefined; - - const soQuery: SavedObjectsFindOptions = { - type: types, - search: query.text, - perPage: query.limit, - page: query.cursor ? Number(query.cursor) : undefined, - defaultSearchOperator: 'AND', - searchFields, - hasReference, - hasNoReference, - }; - - // Execute the query in the DB - const response = await soClient.find(soQuery); - - // Validate the response and DOWN transform to the request version - const { value, error: resultError } = transforms.search.out.result.down< - GraphSearchOut, - GraphSearchOut - >({ - hits: response.saved_objects.map((so) => savedObjectToGraphSavedObject(so, false)), - pagination: { - total: response.total, - }, - }); - - if (resultError) { - throw Boom.badRequest(`Invalid response. ${resultError.message}`); - } - - return value; } } diff --git a/x-pack/plugins/graph/server/index.ts b/x-pack/plugins/graph/server/index.ts index 886c8e4267cb6..86dca6c119604 100644 --- a/x-pack/plugins/graph/server/index.ts +++ b/x-pack/plugins/graph/server/index.ts @@ -5,12 +5,13 @@ * 2.0. */ -import { PluginConfigDescriptor } from '@kbn/core/server'; +import { PluginConfigDescriptor, PluginInitializerContext } from '@kbn/core/server'; import { configSchema, ConfigSchema } from '../config'; import { GraphPlugin } from './plugin'; -export const plugin = () => new GraphPlugin(); +export const plugin = (initializerContext: PluginInitializerContext) => + new GraphPlugin(initializerContext); export const config: PluginConfigDescriptor = { exposeToBrowser: { diff --git a/x-pack/plugins/graph/server/plugin.ts b/x-pack/plugins/graph/server/plugin.ts index db33a04c6a0bf..88e45bc007e47 100644 --- a/x-pack/plugins/graph/server/plugin.ts +++ b/x-pack/plugins/graph/server/plugin.ts @@ -6,7 +6,7 @@ */ import { i18n } from '@kbn/i18n'; -import { Plugin, CoreSetup, CoreStart } from '@kbn/core/server'; +import { Plugin, CoreSetup, CoreStart, PluginInitializerContext } from '@kbn/core/server'; import { DEFAULT_APP_CATEGORIES } from '@kbn/core/server'; import { LicensingPluginSetup, LicensingPluginStart } from '@kbn/licensing-plugin/server'; import { HomeServerPluginSetup } from '@kbn/home-plugin/server'; @@ -23,6 +23,8 @@ import { GraphStorage } from './content_management/graph_storage'; export class GraphPlugin implements Plugin { private licenseState: LicenseState | null = null; + constructor(private readonly initializerContext: PluginInitializerContext) {} + public setup( core: CoreSetup, { @@ -45,7 +47,10 @@ export class GraphPlugin implements Plugin { contentManagement.register({ id: CONTENT_ID, - storage: new GraphStorage(), + storage: new GraphStorage({ + throwOnResultValidationError: this.initializerContext.env.mode.dev, + logger: this.initializerContext.logger.get(), + }), version: { latest: LATEST_VERSION, }, diff --git a/x-pack/plugins/graph/tsconfig.json b/x-pack/plugins/graph/tsconfig.json index 1e8059c99c5d7..1ab9c265359a9 100644 --- a/x-pack/plugins/graph/tsconfig.json +++ b/x-pack/plugins/graph/tsconfig.json @@ -41,12 +41,13 @@ "@kbn/saved-objects-finder-plugin", "@kbn/core-saved-objects-server", "@kbn/content-management-plugin", - "@kbn/core-saved-objects-api-server", "@kbn/object-versioning", "@kbn/content-management-table-list-view-table", "@kbn/content-management-table-list-view", "@kbn/core-ui-settings-browser", "@kbn/react-kibana-mount", + "@kbn/content-management-utils", + "@kbn/logging", ], "exclude": [ "target/**/*", diff --git a/x-pack/plugins/ml/common/openapi/README.md b/x-pack/plugins/ml/common/openapi/README.md index 7c482dc055b98..7a79e55608894 100644 --- a/x-pack/plugins/ml/common/openapi/README.md +++ b/x-pack/plugins/ml/common/openapi/README.md @@ -12,6 +12,9 @@ It is possible to validate the docs before bundling them by running these commands in the `x-pack/plugins/ml/common/openapi/` folder: ``` -npx swagger-cli validate ml_apis_v3.yaml -npx @redocly/cli lint ml_apis_v3.yaml +npx swagger-cli validate ml_apis.yaml +npx @redocly/cli lint ml_apis.yaml + +npx swagger-cli validate ml_apis_serverless.yaml +npx @redocly/cli lint ml_apis_serverless.yaml ``` diff --git a/x-pack/plugins/ml/common/openapi/ml_apis.yaml b/x-pack/plugins/ml/common/openapi/ml_apis.yaml new file mode 100644 index 0000000000000..bde6c4c5cca7a --- /dev/null +++ b/x-pack/plugins/ml/common/openapi/ml_apis.yaml @@ -0,0 +1,213 @@ +openapi: 3.0.1 +info: + title: Machine learning APIs + description: Kibana APIs for the machine learning feature + version: "1.0.1" + license: + name: Elastic License 2.0 + url: https://www.elastic.co/licensing/elastic-license +tags: + - name: ml + description: Machine learning +servers: + - url: https://localhost:5601 +paths: + /api/ml/saved_objects/sync: + get: + summary: Synchronizes Kibana saved objects for machine learning jobs and trained models. + description: This API runs automatically when you start Kibana and periodically thereafter. + operationId: mlSync + tags: + - ml + parameters: + - $ref: '#/components/parameters/simulateParam' + responses: + '200': + description: Indicates a successful call + content: + application/json: + schema: + $ref: '#/components/schemas/mlSync200Response' + examples: + syncExample: + $ref: '#/components/examples/mlSyncExample' + '401': + description: Authorization information is missing or invalid. + content: + application/json: + schema: + $ref: '#/components/schemas/mlSync4xxResponse' + + /s/{spaceId}/api/ml/saved_objects/sync: + get: + summary: Synchronizes Kibana saved objects for machine learning jobs and trained models. + description: > + You must have `all` privileges for the **Machine Learning** feature in the **Analytics** section of the Kibana feature privileges. + This API runs automatically when you start Kibana and periodically thereafter. + operationId: mlSyncWithSpaceId + tags: + - ml + parameters: + - $ref: '#/components/parameters/spaceParam' + - $ref: '#/components/parameters/simulateParam' + responses: + '200': + description: Indicates a successful call + content: + application/json: + schema: + $ref: '#/components/schemas/mlSync200Response' + examples: + syncExample: + $ref: '#/components/examples/mlSyncExample' + '401': + description: Authorization information is missing or invalid. + content: + application/json: + schema: + $ref: '#/components/schemas/mlSync4xxResponse' +components: + parameters: + spaceParam: + in: path + name: spaceId + description: An identifier for the space. If `/s/` and the identifier are omitted from the path, the default space is used. + required: true + schema: + type: string + simulateParam: + in: query + name: simulate + description: When true, simulates the synchronization by returning only the list of actions that would be performed. + required: false + schema: + type: boolean + example: 'true' + securitySchemes: + basicAuth: + type: http + scheme: basic + apiKeyAuth: + type: apiKey + in: header + name: ApiKey + schemas: + mlSyncResponseSuccess: + type: boolean + description: The success or failure of the synchronization. + mlSyncResponseAnomalyDetectors: + type: object + title: Sync API response for anomaly detection jobs + description: The sync machine learning saved objects API response contains this object when there are anomaly detection jobs affected by the synchronization. There is an object for each relevant job, which contains the synchronization status. + properties: + success: + $ref: '#/components/schemas/mlSyncResponseSuccess' + mlSyncResponseDatafeeds: + type: object + title: Sync API response for datafeeds + description: The sync machine learning saved objects API response contains this object when there are datafeeds affected by the synchronization. There is an object for each relevant datafeed, which contains the synchronization status. + properties: + success: + $ref: '#/components/schemas/mlSyncResponseSuccess' + mlSyncResponseDataFrameAnalytics: + type: object + title: Sync API response for data frame analytics jobs + description: The sync machine learning saved objects API response contains this object when there are data frame analytics jobs affected by the synchronization. There is an object for each relevant job, which contains the synchronization status. + properties: + success: + $ref: '#/components/schemas/mlSyncResponseSuccess' + mlSyncResponseSavedObjectsCreated: + type: object + title: Sync API response for created saved objects + description: If saved objects are missing for machine learning jobs or trained models, they are created when you run the sync machine learning saved objects API. + properties: + anomaly-detector: + type: object + description: If saved objects are missing for anomaly detection jobs, they are created. + additionalProperties: + $ref: '#/components/schemas/mlSyncResponseAnomalyDetectors' + data-frame-analytics: + type: object + description: If saved objects are missing for data frame analytics jobs, they are created. + additionalProperties: + $ref: '#/components/schemas/mlSyncResponseDataFrameAnalytics' + trained-model: + type: object + description: If saved objects are missing for trained models, they are created. + additionalProperties: + $ref: '#/components/schemas/mlSyncResponseTrainedModels' + mlSyncResponseSavedObjectsDeleted: + type: object + title: Sync API response for deleted saved objects + description: If saved objects exist for machine learning jobs or trained models that no longer exist, they are deleted when you run the sync machine learning saved objects API. + properties: + anomaly-detector: + type: object + description: If there are saved objects exist for nonexistent anomaly detection jobs, they are deleted. + additionalProperties: + $ref: '#/components/schemas/mlSyncResponseAnomalyDetectors' + data-frame-analytics: + type: object + description: If there are saved objects exist for nonexistent data frame analytics jobs, they are deleted. + additionalProperties: + $ref: '#/components/schemas/mlSyncResponseDataFrameAnalytics' + trained-model: + type: object + description: If there are saved objects exist for nonexistent trained models, they are deleted. + additionalProperties: + $ref: '#/components/schemas/mlSyncResponseTrainedModels' + mlSyncResponseTrainedModels: + type: object + title: Sync API response for trained models + description: The sync machine learning saved objects API response contains this object when there are trained models affected by the synchronization. There is an object for each relevant trained model, which contains the synchronization status. + properties: + success: + $ref: '#/components/schemas/mlSyncResponseSuccess' + mlSync200Response: + type: object + title: Successful sync API response + properties: + datafeedsAdded: + type: object + description: If a saved object for an anomaly detection job is missing a datafeed identifier, it is added when you run the sync machine learning saved objects API. + additionalProperties: + $ref: '#/components/schemas/mlSyncResponseDatafeeds' + datafeedsRemoved: + type: object + description: If a saved object for an anomaly detection job references a datafeed that no longer exists, it is deleted when you run the sync machine learning saved objects API. + additionalProperties: + $ref: '#/components/schemas/mlSyncResponseDatafeeds' + savedObjectsCreated: + $ref: '#/components/schemas/mlSyncResponseSavedObjectsCreated' + savedObjectsDeleted: + $ref: '#/components/schemas/mlSyncResponseSavedObjectsDeleted' + mlSync4xxResponse: + type: object + title: Unsuccessful sync API response + properties: + error: + type: string + example: Unauthorized + message: + type: string + statusCode: + type: integer + example: 401 + examples: + mlSyncExample: + summary: Two anomaly detection jobs required synchronization in this example. + value: + { + "savedObjectsCreated": { + "anomaly-detector": { + "myjob1": { "success":true }, + "myjob2": { "success":true } + } + }, + "savedObjectsDeleted": {}, + "datafeedsAdded": {}, + "datafeedsRemoved": {} + } +security: + - basicAuth: [ ] + - apiKeyAuth: [ ] \ No newline at end of file diff --git a/x-pack/plugins/ml/common/openapi/ml_apis_v3.yaml b/x-pack/plugins/ml/common/openapi/ml_apis_serverless.yaml similarity index 91% rename from x-pack/plugins/ml/common/openapi/ml_apis_v3.yaml rename to x-pack/plugins/ml/common/openapi/ml_apis_serverless.yaml index ff8e3b98cda5d..0cb7f3b3d9911 100644 --- a/x-pack/plugins/ml/common/openapi/ml_apis_v3.yaml +++ b/x-pack/plugins/ml/common/openapi/ml_apis_serverless.yaml @@ -12,17 +12,14 @@ tags: servers: - url: https://localhost:5601 paths: - /s/{spaceId}/api/ml/saved_objects/sync: + /api/ml/saved_objects/sync: get: summary: Synchronizes Kibana saved objects for machine learning jobs and trained models. - description: > - You must have `all` privileges for the **Machine Learning** feature in the **Analytics** section of the Kibana feature privileges. - This API runs automatically when you start Kibana and periodically thereafter. - operationId: ml-sync + description: This API runs automatically when you start Kibana and periodically thereafter. + operationId: mlSync tags: - ml parameters: - - $ref: '#/components/parameters/spaceParam' - $ref: '#/components/parameters/simulateParam' responses: '200': @@ -42,13 +39,6 @@ paths: $ref: '#/components/schemas/mlSync4xxResponse' components: parameters: - spaceParam: - in: path - name: spaceId - description: An identifier for the space. If `/s/` and the identifier are omitted from the path, the default space is used. - required: true - schema: - type: string simulateParam: in: query name: simulate @@ -58,9 +48,6 @@ components: type: boolean example: 'true' securitySchemes: - basicAuth: - type: http - scheme: basic apiKeyAuth: type: apiKey in: header @@ -183,4 +170,4 @@ components: "datafeedsRemoved": {} } security: - - basicAuth: [ ] \ No newline at end of file + - apiKeyAuth: [ ] \ No newline at end of file diff --git a/x-pack/plugins/ml/public/embeddables/common/anomaly_detection_embeddable.ts b/x-pack/plugins/ml/public/embeddables/common/anomaly_detection_embeddable.ts index 7722238cdbb38..0b24a5b47b18c 100644 --- a/x-pack/plugins/ml/public/embeddables/common/anomaly_detection_embeddable.ts +++ b/x-pack/plugins/ml/public/embeddables/common/anomaly_detection_embeddable.ts @@ -33,14 +33,7 @@ export abstract class AnomalyDetectionEmbeddable< private dataViewsService: DataViewsContract, parent?: IContainer ) { - super( - initialInput, - { - defaultTitle: initialInput.title, - defaultDescription: initialInput.description, - } as Output, - parent - ); + super(initialInput, {} as Output, parent); this.initializeOutput(initialInput).finally(() => { this.setInitializationFinished(); diff --git a/x-pack/plugins/observability/dev_docs/composite_slo.md b/x-pack/plugins/observability/dev_docs/composite_slo.md deleted file mode 100644 index 4e34933c8560e..0000000000000 --- a/x-pack/plugins/observability/dev_docs/composite_slo.md +++ /dev/null @@ -1,65 +0,0 @@ -# Composite SLO - -Composite SLO is available from 8.9. - -A composite SLO is an SLO that aggregates up to 30 other SLOs, so we can get a higher view of the performance of a service. -A composite SLO uses the rollup data of the source SLOs with the applied weight to compute its SLI and error budget consumption & remaining. - -We currently support only weighted average composite method. This means every source SLO is given a weight (1 to +Infinity) that we use to compute the composite SLI. - -When creating a composite SLO, we validate that every source SLOs are of the same time window and budgeting method. - -## Examples - -Create a composite SLO: - -``` -curl --request POST \ - --url http://localhost:5601/kibana/api/observability/composite_slos \ - --header 'Authorization: Basic ZWxhc3RpYzpjaGFuZ2VtZQ==' \ - --header 'Content-Type: application/json' \ - --header 'kbn-xsrf: oui' \ - --data '{ - "name": "composite slo test", - "compositeMethod": "weightedAverage", - "sources": [ - { "id": "f6694b30-f97c-11ed-895c-170d13e61076", "revision": 1, "weight": 2 }, - { "id": "f9072790-f97c-11ed-895c-170d13e61076", "revision": 2, "weight": 1 } - ], - "timeWindow": { - "duration": "7d", - "type": "rolling" - }, - "budgetingMethod": "occurrences", - "objective": { - "target": 0.95 - } -}' -``` - - -Delete a composite SLO: - -``` -curl --request DELETE \ - --url http://localhost:5601/kibana/api/observability/composite_slos/7ba92850-fbd6-11ed-8eb2-037af7d0dfa6 \ - --header 'Authorization: Basic ZWxhc3RpYzpjaGFuZ2VtZQ==' \ - --header 'Content-Type: application/json' \ - --header 'kbn-xsrf: oui' -``` - -Update an existing composite SLO: - -``` -curl --request PUT \ - --url http://localhost:5601/kibana/api/observability/composite_slos/01af9e10-fbf1-11ed-83f3-01ffee47b374 \ - --header 'Authorization: Basic ZWxhc3RpYzpjaGFuZ2VtZQ==' \ - --header 'Content-Type: application/json' \ - --header 'kbn-xsrf: oui' \ - --data '{ - "name": "new composite slo name", - "objective": { - "target": 0.90 - } -}' -``` \ No newline at end of file diff --git a/x-pack/plugins/observability/docs/openapi/slo/bundled.json b/x-pack/plugins/observability/docs/openapi/slo/bundled.json index e51f3828886cf..3ba6ab7762e93 100644 --- a/x-pack/plugins/observability/docs/openapi/slo/bundled.json +++ b/x-pack/plugins/observability/docs/openapi/slo/bundled.json @@ -30,10 +30,6 @@ { "name": "slo", "description": "SLO APIs enable you to define, manage and track service-level objectives" - }, - { - "name": "composite slo", - "description": "Composite SLO APIs enable you to define, manage and track a group of SLOs." } ], "paths": { diff --git a/x-pack/plugins/observability/docs/openapi/slo/bundled.yaml b/x-pack/plugins/observability/docs/openapi/slo/bundled.yaml index 4b0ca84bc7c52..c50403e5096f8 100644 --- a/x-pack/plugins/observability/docs/openapi/slo/bundled.yaml +++ b/x-pack/plugins/observability/docs/openapi/slo/bundled.yaml @@ -17,8 +17,6 @@ security: tags: - name: slo description: SLO APIs enable you to define, manage and track service-level objectives - - name: composite slo - description: Composite SLO APIs enable you to define, manage and track a group of SLOs. paths: /s/{spaceId}/api/observability/slos: post: diff --git a/x-pack/plugins/observability/docs/openapi/slo/components/parameters/composite_slo_id.yaml b/x-pack/plugins/observability/docs/openapi/slo/components/parameters/composite_slo_id.yaml deleted file mode 100644 index d8f698b99b214..0000000000000 --- a/x-pack/plugins/observability/docs/openapi/slo/components/parameters/composite_slo_id.yaml +++ /dev/null @@ -1,7 +0,0 @@ -in: path -name: compositeSloId -description: An identifier for the composite slo. -required: true -schema: - type: string - example: 9c235211-6834-11ea-a78c-6feb38a34414 diff --git a/x-pack/plugins/observability/docs/openapi/slo/components/schemas/base_composite_slo_response.yaml b/x-pack/plugins/observability/docs/openapi/slo/components/schemas/base_composite_slo_response.yaml deleted file mode 100644 index 07dd47d1707fd..0000000000000 --- a/x-pack/plugins/observability/docs/openapi/slo/components/schemas/base_composite_slo_response.yaml +++ /dev/null @@ -1,29 +0,0 @@ -title: Composite SLO response -type: object -properties: - id: - description: The identifier of the composite SLO. - type: string - example: 8853df00-ae2e-11ed-90af-09bb6422b258 - name: - description: The name of the composite SLO. - type: string - example: My Service SLO - timeWindow: - $ref: "time_window.yaml" - budgetingMethod: - $ref: "budgeting_method.yaml" - compositeMethod: - $ref: "composite_method.yaml" - objective: - $ref: "objective.yaml" - sources: - - $ref: "weighted_composite_sources.yaml" - createdAt: - description: The creation date - type: string - example: "2023-01-12T10:03:19.000Z" - updatedAt: - description: The last update date - type: string - example: "2023-01-12T10:03:19.000Z" diff --git a/x-pack/plugins/observability/docs/openapi/slo/components/schemas/composite_method.yaml b/x-pack/plugins/observability/docs/openapi/slo/components/schemas/composite_method.yaml deleted file mode 100644 index 0414a68a48742..0000000000000 --- a/x-pack/plugins/observability/docs/openapi/slo/components/schemas/composite_method.yaml +++ /dev/null @@ -1,6 +0,0 @@ -title: Composite method -type: string -description: The composite method to use for the composite SLO. -enum: - - weightedAverage -example: weightedAverage \ No newline at end of file diff --git a/x-pack/plugins/observability/docs/openapi/slo/components/schemas/composite_objective.yaml b/x-pack/plugins/observability/docs/openapi/slo/components/schemas/composite_objective.yaml deleted file mode 100644 index a8946e9e2fca2..0000000000000 --- a/x-pack/plugins/observability/docs/openapi/slo/components/schemas/composite_objective.yaml +++ /dev/null @@ -1,10 +0,0 @@ -title: Objective -required: - - target -description: Defines properties for objective -type: object -properties: - target: - description: the target objective between 0 and 1 excluded - type: number - example: 0.95 \ No newline at end of file diff --git a/x-pack/plugins/observability/docs/openapi/slo/components/schemas/composite_slo_response.yaml b/x-pack/plugins/observability/docs/openapi/slo/components/schemas/composite_slo_response.yaml deleted file mode 100644 index 00a9c3426756e..0000000000000 --- a/x-pack/plugins/observability/docs/openapi/slo/components/schemas/composite_slo_response.yaml +++ /dev/null @@ -1,31 +0,0 @@ -title: Composite SLO with summary response -type: object -properties: - id: - description: The identifier of the composite SLO. - type: string - example: 8853df00-ae2e-11ed-90af-09bb6422b258 - name: - description: The name of the composite SLO. - type: string - example: My Service SLO - timeWindow: - $ref: "time_window.yaml" - budgetingMethod: - $ref: "budgeting_method.yaml" - compositeMethod: - $ref: "composite_method.yaml" - objective: - $ref: "objective.yaml" - sources: - - $ref: "weighted_composite_sources.yaml" - summary: - $ref: "summary.yaml" - createdAt: - description: The creation date - type: string - example: "2023-01-12T10:03:19.000Z" - updatedAt: - description: The last update date - type: string - example: "2023-01-12T10:03:19.000Z" diff --git a/x-pack/plugins/observability/docs/openapi/slo/components/schemas/create_composite_slo_request.yaml b/x-pack/plugins/observability/docs/openapi/slo/components/schemas/create_composite_slo_request.yaml deleted file mode 100644 index 97536626c1287..0000000000000 --- a/x-pack/plugins/observability/docs/openapi/slo/components/schemas/create_composite_slo_request.yaml +++ /dev/null @@ -1,29 +0,0 @@ -title: Create composite SLO request -description: > - The create Composite SLO API request body. The provided source SLOs must exists and their budgeting method and time window must match the one from the composite SLO. -type: object -required: - - name - - timeWindow - - budgetingMethod - - compositeMethod - - objective - - sources -properties: - id: - description: A unique identifier for the composite SLO. Must be between 8 and 36 chars - type: string - example: my-super-composite-slo-id - name: - description: A name for the composite SLO. - type: string - timeWindow: - $ref: "time_window.yaml" - budgetingMethod: - $ref: "budgeting_method.yaml" - compositeMethod: - $ref: "composite_method.yaml" - objective: - $ref: "objective.yaml" - sources: - - $ref: "weighted_composite_sources.yaml" diff --git a/x-pack/plugins/observability/docs/openapi/slo/components/schemas/create_composite_slo_response.yaml b/x-pack/plugins/observability/docs/openapi/slo/components/schemas/create_composite_slo_response.yaml deleted file mode 100644 index 7a1b6286e2310..0000000000000 --- a/x-pack/plugins/observability/docs/openapi/slo/components/schemas/create_composite_slo_response.yaml +++ /dev/null @@ -1,8 +0,0 @@ -title: Create composite SLO response -type: object -required: - - id -properties: - id: - type: string - example: 8853df00-ae2e-11ed-90af-09bb6422b258 diff --git a/x-pack/plugins/observability/docs/openapi/slo/components/schemas/find_composite_slo_response.yaml b/x-pack/plugins/observability/docs/openapi/slo/components/schemas/find_composite_slo_response.yaml deleted file mode 100644 index 0c6ae26e1ec7c..0000000000000 --- a/x-pack/plugins/observability/docs/openapi/slo/components/schemas/find_composite_slo_response.yaml +++ /dev/null @@ -1,17 +0,0 @@ -title: Find composite SLO response -description: A paginated response of composite SLOs matching the query. -type: object -properties: - page: - type: number - example: 1 - perPage: - type: number - example: 25 - total: - type: number - example: 34 - results: - type: array - items: - $ref: 'composite_slo_response.yaml' \ No newline at end of file diff --git a/x-pack/plugins/observability/docs/openapi/slo/components/schemas/update_composite_slo_request.yaml b/x-pack/plugins/observability/docs/openapi/slo/components/schemas/update_composite_slo_request.yaml deleted file mode 100644 index c93578f4404c0..0000000000000 --- a/x-pack/plugins/observability/docs/openapi/slo/components/schemas/update_composite_slo_request.yaml +++ /dev/null @@ -1,22 +0,0 @@ -title: Update composite SLO request -description: > - The update composite SLO API request body. The provided source SLOs must exists and their budgeting method and time window must match the one from the composite SLO. -type: object -properties: - id: - description: A unique identifier for the composite SLO. Must be between 8 and 36 chars - type: string - example: my-super-composite-slo-id - name: - description: A name for the composite SLO. - type: string - timeWindow: - $ref: "time_window.yaml" - budgetingMethod: - $ref: "budgeting_method.yaml" - compositeMethod: - $ref: "composite_method.yaml" - objective: - $ref: "objective.yaml" - sources: - - $ref: "weighted_composite_sources.yaml" diff --git a/x-pack/plugins/observability/docs/openapi/slo/components/schemas/weighted_composite_sources.yaml b/x-pack/plugins/observability/docs/openapi/slo/components/schemas/weighted_composite_sources.yaml deleted file mode 100644 index 1caca49407386..0000000000000 --- a/x-pack/plugins/observability/docs/openapi/slo/components/schemas/weighted_composite_sources.yaml +++ /dev/null @@ -1,22 +0,0 @@ -title: Weighted sources -description: An array of source SLO to use for the weighted average composite. -type: "array" -items: - type: object - required: - - id - - revision - - weight - properties: - id: - description: The id of the SLO. - type: string - example: 8853df00-ae2e-11ed-90af-09bb6422b258 - revision: - description: The revision number of the SLO. - type: number - example: 2 - weight: - description: The weight to apply to this SLO. - type: number - example: 3 \ No newline at end of file diff --git a/x-pack/plugins/observability/docs/openapi/slo/entrypoint.yaml b/x-pack/plugins/observability/docs/openapi/slo/entrypoint.yaml index ee722573efa91..687fd94f006a4 100644 --- a/x-pack/plugins/observability/docs/openapi/slo/entrypoint.yaml +++ b/x-pack/plugins/observability/docs/openapi/slo/entrypoint.yaml @@ -11,16 +11,10 @@ info: tags: - name: slo description: SLO APIs enable you to define, manage and track service-level objectives - - name: composite slo - description: Composite SLO APIs enable you to define, manage and track a group of SLOs. servers: - url: "http://localhost:5601" description: local paths: - #'/s/{spaceId}/api/observability/composite_slos': - # $ref: 'paths/s@{spaceid}@api@composite_slos.yaml' - #'/s/{spaceId}/api/observability/composite_slos/{compositeSloId}': - # $ref: 'paths/s@{spaceid}@api@composite_slos@{compositesloid}.yaml' "/s/{spaceId}/api/observability/slos": $ref: "paths/s@{spaceid}@api@slos.yaml" "/s/{spaceId}/api/observability/slos/{sloId}": diff --git a/x-pack/plugins/observability/docs/openapi/slo/paths/s@{spaceid}@api@composite_slos.yaml b/x-pack/plugins/observability/docs/openapi/slo/paths/s@{spaceid}@api@composite_slos.yaml deleted file mode 100644 index 94230cde86002..0000000000000 --- a/x-pack/plugins/observability/docs/openapi/slo/paths/s@{spaceid}@api@composite_slos.yaml +++ /dev/null @@ -1,121 +0,0 @@ -post: - summary: Creates a Composite SLO - operationId: createCompositeSloOp - description: > - You must have `all` privileges for the **SLOs** feature in the - **Observability** section of the Kibana feature privileges. - tags: - - composite slo - parameters: - - $ref: ../components/headers/kbn_xsrf.yaml - - $ref: ../components/parameters/space_id.yaml - requestBody: - required: true - content: - application/json: - schema: - $ref: '../components/schemas/create_composite_slo_request.yaml' - responses: - '200': - description: Successful request - content: - application/json: - schema: - $ref: '../components/schemas/create_composite_slo_response.yaml' - '400': - description: Bad request - content: - application/json: - schema: - $ref: '../components/schemas/400_response.yaml' - '401': - description: Unauthorized response - content: - application/json: - schema: - $ref: '../components/schemas/401_response.yaml' - '403': - description: Unauthorized response - content: - application/json: - schema: - $ref: '../components/schemas/403_response.yaml' - '409': - description: Conflict - The Composite SLO id already exists - content: - application/json: - schema: - $ref: '../components/schemas/409_response.yaml' - -get: - summary: Retrieves a paginated list of composite SLOs with summary - operationId: findCompositeSloOp - description: > - You must have the `read` privileges for the **SLOs** feature in the - **Observability** section of the Kibana feature privileges. - tags: - - composite slo - parameters: - - $ref: ../components/headers/kbn_xsrf.yaml - - $ref: ../components/parameters/space_id.yaml - - name: page - in: query - description: The page number to return - schema: - type: integer - default: 1 - example: 1 - - name: perPage - in: query - description: The number of SLOs to return per page - schema: - type: integer - default: 25 - example: 20 - - name: sortBy - in: query - description: Sort by field - schema: - type: string - enum: [creationTime] - default: creationTime - example: creationTime - - name: sortDirection - in: query - description: Sort order - schema: - type: string - enum: [asc, desc] - default: asc - example: asc - responses: - '200': - description: Successful request - content: - application/json: - schema: - $ref: '../components/schemas/find_composite_slo_response.yaml' - '400': - description: Bad request - content: - application/json: - schema: - $ref: '../components/schemas/400_response.yaml' - '401': - description: Unauthorized response - content: - application/json: - schema: - $ref: '../components/schemas/401_response.yaml' - '403': - description: Unauthorized response - content: - application/json: - schema: - $ref: '../components/schemas/403_response.yaml' - '404': - description: Not found response - content: - application/json: - schema: - $ref: '../components/schemas/404_response.yaml' diff --git a/x-pack/plugins/observability/docs/openapi/slo/paths/s@{spaceid}@api@composite_slos@{compositesloid}.yaml b/x-pack/plugins/observability/docs/openapi/slo/paths/s@{spaceid}@api@composite_slos@{compositesloid}.yaml deleted file mode 100644 index 826ed87a27cd8..0000000000000 --- a/x-pack/plugins/observability/docs/openapi/slo/paths/s@{spaceid}@api@composite_slos@{compositesloid}.yaml +++ /dev/null @@ -1,133 +0,0 @@ -get: - summary: Retrieves a composite SLO - operationId: getCompositeSloOp - description: > - You must have the `read` privileges for the **SLOs** feature in the - **Observability** section of the Kibana feature privileges. - tags: - - composite slo - parameters: - - $ref: ../components/headers/kbn_xsrf.yaml - - $ref: ../components/parameters/space_id.yaml - - $ref: ../components/parameters/composite_slo_id.yaml - responses: - '200': - description: Successful request - content: - application/json: - schema: - $ref: '../components/schemas/composite_slo_response.yaml' - '400': - description: Bad request - content: - application/json: - schema: - $ref: '../components/schemas/400_response.yaml' - '401': - description: Unauthorized response - content: - application/json: - schema: - $ref: '../components/schemas/401_response.yaml' - '403': - description: Unauthorized response - content: - application/json: - schema: - $ref: '../components/schemas/403_response.yaml' - '404': - description: Not found response - content: - application/json: - schema: - $ref: '../components/schemas/404_response.yaml' - -put: - summary: Updates a composite SLO - operationId: updateCompositeSloOp - description: > - You must have the `write` privileges for the **SLOs** feature in the - **Observability** section of the Kibana feature privileges. - tags: - - composite slo - parameters: - - $ref: ../components/headers/kbn_xsrf.yaml - - $ref: ../components/parameters/space_id.yaml - - $ref: ../components/parameters/composite_slo_id.yaml - requestBody: - required: true - content: - application/json: - schema: - $ref: '../components/schemas/update_composite_slo_request.yaml' - responses: - '200': - description: Successful request - content: - application/json: - schema: - $ref: '../components/schemas/base_composite_slo_response.yaml' - '400': - description: Bad request - content: - application/json: - schema: - $ref: '../components/schemas/400_response.yaml' - '401': - description: Unauthorized response - content: - application/json: - schema: - $ref: '../components/schemas/401_response.yaml' - '403': - description: Unauthorized response - content: - application/json: - schema: - $ref: '../components/schemas/403_response.yaml' - '404': - description: Not found response - content: - application/json: - schema: - $ref: '../components/schemas/404_response.yaml' - -delete: - summary: Deletes a composite SLO - operationId: deleteCompositeSloOp - description: > - You must have the `write` privileges for the **SLOs** feature in the - **Observability** section of the Kibana feature privileges. - tags: - - composite slo - parameters: - - $ref: ../components/headers/kbn_xsrf.yaml - - $ref: ../components/parameters/space_id.yaml - - $ref: ../components/parameters/composite_slo_id.yaml - responses: - '204': - description: Successful request - '400': - description: Bad request - content: - application/json: - schema: - $ref: '../components/schemas/400_response.yaml' - '401': - description: Unauthorized response - content: - application/json: - schema: - $ref: '../components/schemas/401_response.yaml' - '403': - description: Unauthorized response - content: - application/json: - schema: - $ref: '../components/schemas/403_response.yaml' - '404': - description: Not found response - content: - application/json: - schema: - $ref: '../components/schemas/404_response.yaml' diff --git a/x-pack/plugins/observability/public/application/index.tsx b/x-pack/plugins/observability/public/application/index.tsx index 2d251ac71660e..40724d6db5b9f 100644 --- a/x-pack/plugins/observability/public/application/index.tsx +++ b/x-pack/plugins/observability/public/application/index.tsx @@ -14,8 +14,9 @@ import { Router, Routes, Route } from '@kbn/shared-ux-router'; import { AppMountParameters, APP_WRAPPER_CLASS, CoreStart } from '@kbn/core/public'; import { EuiThemeProvider } from '@kbn/kibana-react-plugin/common'; import type { LazyObservabilityPageTemplateProps } from '@kbn/observability-shared-plugin/public'; -import { KibanaContextProvider, RedirectAppLinks } from '@kbn/kibana-react-plugin/public'; +import { KibanaContextProvider } from '@kbn/kibana-react-plugin/public'; import { KibanaThemeProvider } from '@kbn/react-kibana-context-theme'; +import { RedirectAppLinks } from '@kbn/shared-ux-link-redirect-app'; import { Storage } from '@kbn/kibana-utils-plugin/public'; import { UsageCollectionSetup } from '@kbn/usage-collection-plugin/public'; import { ObservabilityAIAssistantProvider } from '@kbn/observability-ai-assistant-plugin/public'; @@ -111,8 +112,7 @@ export const renderApp = ({ diff --git a/x-pack/plugins/observability/public/hooks/slo/query_key_factory.ts b/x-pack/plugins/observability/public/hooks/slo/query_key_factory.ts index 2175f67e807fb..feec4d475e3a8 100644 --- a/x-pack/plugins/observability/public/hooks/slo/query_key_factory.ts +++ b/x-pack/plugins/observability/public/hooks/slo/query_key_factory.ts @@ -14,12 +14,6 @@ interface SloListFilter { sortDirection: string; } -interface CompositeSloKeyFilter { - name: string; - page: number; - sortBy: string; -} - export const sloKeys = { all: ['slo'] as const, lists: () => [...sloKeys.all, 'list'] as const, @@ -41,20 +35,4 @@ export const sloKeys = { preview: (indicator?: Indicator) => [...sloKeys.all, 'preview', indicator] as const, }; -export const compositeSloKeys = { - all: ['compositeSlo'] as const, - lists: () => [...compositeSloKeys.all, 'list'] as const, - list: (filters: CompositeSloKeyFilter) => [...compositeSloKeys.lists(), filters] as const, - details: () => [...compositeSloKeys.all, 'details'] as const, - detail: (sloId?: string) => [...compositeSloKeys.details(), sloId] as const, - rules: () => [...compositeSloKeys.all, 'rules'] as const, - rule: (sloIds: string[]) => [...compositeSloKeys.rules(), sloIds] as const, - activeAlerts: () => [...compositeSloKeys.all, 'activeAlerts'] as const, - activeAlert: (sloIds: string[]) => [...compositeSloKeys.activeAlerts(), sloIds] as const, - historicalSummaries: () => [...compositeSloKeys.all, 'historicalSummary'] as const, - historicalSummary: (sloIds: string[]) => - [...compositeSloKeys.historicalSummaries(), sloIds] as const, - globalDiagnosis: () => [...compositeSloKeys.all, 'globalDiagnosis'] as const, -}; - -export type SloKeys = typeof compositeSloKeys | typeof sloKeys; +export type SloKeys = typeof sloKeys; diff --git a/x-pack/plugins/observability/public/hooks/slo/use_fetch_composite_slo_list.ts b/x-pack/plugins/observability/public/hooks/slo/use_fetch_composite_slo_list.ts deleted file mode 100644 index 55ac51648e55d..0000000000000 --- a/x-pack/plugins/observability/public/hooks/slo/use_fetch_composite_slo_list.ts +++ /dev/null @@ -1,123 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import { useState } from 'react'; -import { - QueryObserverResult, - RefetchOptions, - RefetchQueryFilters, - useQuery, - useQueryClient, -} from '@tanstack/react-query'; -import { i18n } from '@kbn/i18n'; -import { FindCompositeSLOResponse } from '@kbn/slo-schema'; - -import { useKibana } from '../../utils/kibana_react'; -import { compositeSloKeys } from './query_key_factory'; - -interface SLOListParams { - name?: string; - page?: number; - sortBy?: string; - shouldRefetch?: boolean; -} - -export interface UseFetchCompositeSloListResponse { - isInitialLoading: boolean; - isLoading: boolean; - isRefetching: boolean; - isSuccess: boolean; - isError: boolean; - sloList: FindCompositeSLOResponse | undefined; - refetch: ( - options?: (RefetchOptions & RefetchQueryFilters) | undefined - ) => Promise>; -} - -const SHORT_REFETCH_INTERVAL = 1000 * 5; // 5 seconds -const LONG_REFETCH_INTERVAL = 1000 * 60; // 1 minute - -export function useFetchCompositeSloList({ - name = '', - page = 1, - sortBy = 'creationTime', - shouldRefetch, -}: SLOListParams | undefined = {}): UseFetchCompositeSloListResponse { - const { - http, - notifications: { toasts }, - } = useKibana().services; - const queryClient = useQueryClient(); - - const [stateRefetchInterval, setStateRefetchInterval] = useState( - SHORT_REFETCH_INTERVAL - ); - - const { isInitialLoading, isLoading, isError, isSuccess, isRefetching, data, refetch } = useQuery( - { - queryKey: compositeSloKeys.list({ name, page, sortBy }), - queryFn: async ({ signal }) => { - try { - const response = await http.get(`/api/observability/slos`, { - query: { - ...(page && { page }), - ...(name && { name }), - ...(sortBy && { sortBy }), - }, - signal, - }); - - return response; - } catch (error) { - throw error; - } - }, - keepPreviousData: true, - refetchOnWindowFocus: false, - refetchInterval: shouldRefetch ? stateRefetchInterval : undefined, - staleTime: 1000, - retry: (failureCount, error) => { - if (String(error) === 'Error: Forbidden') { - return false; - } - return failureCount < 4; - }, - onSuccess: ({ results }: FindCompositeSLOResponse) => { - if (!shouldRefetch) { - return; - } - - if (results.find((slo) => slo.summary.status === 'NO_DATA' || !slo.summary)) { - setStateRefetchInterval(SHORT_REFETCH_INTERVAL); - } else { - setStateRefetchInterval(LONG_REFETCH_INTERVAL); - } - - queryClient.invalidateQueries(compositeSloKeys.historicalSummaries()); - queryClient.invalidateQueries(compositeSloKeys.activeAlerts()); - queryClient.invalidateQueries(compositeSloKeys.rules()); - }, - onError: (error: Error) => { - toasts.addError(error, { - title: i18n.translate('xpack.observability.slo.list.errorNotification', { - defaultMessage: 'Something went wrong while fetching SLOs', - }), - }); - }, - } - ); - - return { - sloList: data, - isInitialLoading, - isLoading, - isRefetching, - isSuccess, - isError, - refetch, - }; -} diff --git a/x-pack/plugins/observability/public/pages/alerts/alerts.test.tsx b/x-pack/plugins/observability/public/pages/alerts/alerts.test.tsx index b307c0d858f12..247a700acfa6c 100644 --- a/x-pack/plugins/observability/public/pages/alerts/alerts.test.tsx +++ b/x-pack/plugins/observability/public/pages/alerts/alerts.test.tsx @@ -60,9 +60,6 @@ jest.spyOn(pluginContext, 'usePluginContext').mockImplementation(() => ({ }, thresholdRule: { enabled: false }, }, - compositeSlo: { - enabled: false, - }, aiAssistant: { enabled: false, feedback: { diff --git a/x-pack/plugins/observability/public/pages/overview/overview.stories.tsx b/x-pack/plugins/observability/public/pages/overview/overview.stories.tsx index df869f41c6735..d0937d1f2c72b 100644 --- a/x-pack/plugins/observability/public/pages/overview/overview.stories.tsx +++ b/x-pack/plugins/observability/public/pages/overview/overview.stories.tsx @@ -88,7 +88,6 @@ const withCore = makeDecorator({ }, thresholdRule: { enabled: false }, }, - compositeSlo: { enabled: false }, }; return ( diff --git a/x-pack/plugins/observability/public/pages/rules/rules.test.tsx b/x-pack/plugins/observability/public/pages/rules/rules.test.tsx index 7a5fa20afa741..4239cdeee811e 100644 --- a/x-pack/plugins/observability/public/pages/rules/rules.test.tsx +++ b/x-pack/plugins/observability/public/pages/rules/rules.test.tsx @@ -47,9 +47,6 @@ jest.spyOn(pluginContext, 'usePluginContext').mockImplementation(() => ({ }, thresholdRule: { enabled: false }, }, - compositeSlo: { - enabled: false, - }, }, observabilityRuleTypeRegistry: createObservabilityRuleTypeRegistryMock(), ObservabilityPageTemplate: KibanaPageTemplate, diff --git a/x-pack/plugins/observability/public/plugin.ts b/x-pack/plugins/observability/public/plugin.ts index d864a09fe6fdc..88191351f5444 100644 --- a/x-pack/plugins/observability/public/plugin.ts +++ b/x-pack/plugins/observability/public/plugin.ts @@ -99,7 +99,6 @@ export interface ConfigSchema { enabled: boolean; }; }; - compositeSlo: { enabled: boolean }; } export type ObservabilityPublicSetup = ReturnType; diff --git a/x-pack/plugins/observability/public/utils/kibana_react.storybook_decorator.tsx b/x-pack/plugins/observability/public/utils/kibana_react.storybook_decorator.tsx index 3cebd71109ba6..d5714924bdc97 100644 --- a/x-pack/plugins/observability/public/utils/kibana_react.storybook_decorator.tsx +++ b/x-pack/plugins/observability/public/utils/kibana_react.storybook_decorator.tsx @@ -35,7 +35,6 @@ export function KibanaReactStorybookDecorator(Story: ComponentType) { }, thresholdRule: { enabled: false }, }, - compositeSlo: { enabled: false }, }; const mockTheme: CoreTheme = { diff --git a/x-pack/plugins/observability/public/utils/test_helper.tsx b/x-pack/plugins/observability/public/utils/test_helper.tsx index 2f8035ae7be54..6c1610ac059c9 100644 --- a/x-pack/plugins/observability/public/utils/test_helper.tsx +++ b/x-pack/plugins/observability/public/utils/test_helper.tsx @@ -39,7 +39,6 @@ const defaultConfig: ConfigSchema = { }, thresholdRule: { enabled: false }, }, - compositeSlo: { enabled: false }, }; const queryClient = new QueryClient({ diff --git a/x-pack/plugins/observability/server/domain/models/composite_slo.ts b/x-pack/plugins/observability/server/domain/models/composite_slo.ts deleted file mode 100644 index aa70d5a9a0b2b..0000000000000 --- a/x-pack/plugins/observability/server/domain/models/composite_slo.ts +++ /dev/null @@ -1,22 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import * as t from 'io-ts'; - -import { - compositeSloSchema, - compositeSloIdSchema, - weightedAverageSourceSchema, -} from '@kbn/slo-schema'; - -type CompositeSLO = t.TypeOf; -type CompositeSLOId = t.TypeOf; -type StoredCompositeSLO = t.OutputOf; - -type WeightedAverageSource = t.TypeOf; - -export type { CompositeSLO, CompositeSLOId, StoredCompositeSLO, WeightedAverageSource }; diff --git a/x-pack/plugins/observability/server/domain/models/index.ts b/x-pack/plugins/observability/server/domain/models/index.ts index a22e0cbdd95ac..16336c40928f8 100644 --- a/x-pack/plugins/observability/server/domain/models/index.ts +++ b/x-pack/plugins/observability/server/domain/models/index.ts @@ -11,4 +11,3 @@ export * from './error_budget'; export * from './indicators'; export * from './slo'; export * from './time_window'; -export * from './composite_slo'; diff --git a/x-pack/plugins/observability/server/domain/services/composite_slo/index.ts b/x-pack/plugins/observability/server/domain/services/composite_slo/index.ts deleted file mode 100644 index cae963f894602..0000000000000 --- a/x-pack/plugins/observability/server/domain/services/composite_slo/index.ts +++ /dev/null @@ -1,8 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -export * from './validate_composite_slo'; diff --git a/x-pack/plugins/observability/server/domain/services/composite_slo/validate_composite_slo.test.ts b/x-pack/plugins/observability/server/domain/services/composite_slo/validate_composite_slo.test.ts deleted file mode 100644 index 1bf5772b2a6b9..0000000000000 --- a/x-pack/plugins/observability/server/domain/services/composite_slo/validate_composite_slo.test.ts +++ /dev/null @@ -1,218 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import { validateCompositeSLO } from '.'; -import { - createCompositeSLO, - createWeightedAverageSource, -} from '../../../services/composite_slo/fixtures/composite_slo'; -import { fiveMinute, twoMinute } from '../../../services/slo/fixtures/duration'; -import { - createSLO, - createSLOWithTimeslicesBudgetingMethod, -} from '../../../services/slo/fixtures/slo'; -import { - sevenDaysRolling, - thirtyDaysRolling, - weeklyCalendarAligned, -} from '../../../services/slo/fixtures/time_window'; - -describe('validateCompositeSLO', () => { - it('throws when the number of source SLOs is less than 2', () => { - const compositeSlo = createCompositeSLO({ - sources: [createWeightedAverageSource()], - }); - expect(() => validateCompositeSLO(compositeSlo, [])).toThrowError( - 'A composite SLO must contain between 2 and 30 source SLOs.' - ); - }); - - it('throws when the number of source SLOs is more than 30', () => { - const compositeSlo = createCompositeSLO({ - sources: Array(31) - .fill(0) - .map((i) => createWeightedAverageSource()), - }); - expect(() => validateCompositeSLO(compositeSlo, [])).toThrowError( - 'A composite SLO must contain between 2 and 30 source SLOs.' - ); - }); - - it("throws when specified source SLOs don't match the actual SLO revision", () => { - const sloOne = createSLO({ revision: 3 }); - const sloTwo = createSLO({ revision: 2 }); - const compositeSlo = createCompositeSLO({ - sources: [ - createWeightedAverageSource({ id: sloOne.id, revision: sloOne.revision }), - createWeightedAverageSource({ id: sloTwo.id, revision: 1 }), - ], - }); - expect(() => validateCompositeSLO(compositeSlo, [sloOne, sloTwo])).toThrowError( - 'One or many source SLOs are not matching the specified id and revision.' - ); - }); - - it('throws when specified source SLOs refers to a non-existant SLO', () => { - const sloOne = createSLO({ revision: 3 }); - const compositeSlo = createCompositeSLO({ - sources: [ - createWeightedAverageSource({ id: sloOne.id, revision: sloOne.revision }), - createWeightedAverageSource({ id: 'non-existant' }), - ], - }); - expect(() => validateCompositeSLO(compositeSlo, [sloOne])).toThrowError( - 'One or many source SLOs are not matching the specified id and revision.' - ); - }); - - it('throws when the time window is not the same accros all source SLOs', () => { - const sloOne = createSLO({ timeWindow: sevenDaysRolling() }); - const sloTwo = createSLO({ timeWindow: weeklyCalendarAligned() }); - const compositeSlo = createCompositeSLO({ - timeWindow: sevenDaysRolling(), - sources: [ - createWeightedAverageSource({ id: sloOne.id, revision: sloOne.revision }), - createWeightedAverageSource({ id: sloTwo.id, revision: sloTwo.revision }), - ], - }); - - expect(() => validateCompositeSLO(compositeSlo, [sloOne, sloTwo])).toThrowError( - 'Invalid time window. Every source SLO must use the same time window as the composite.' - ); - }); - - it('throws when the time window duration is not the same accros all source SLOs', () => { - const sloOne = createSLO({ timeWindow: sevenDaysRolling() }); - const sloTwo = createSLO({ timeWindow: thirtyDaysRolling() }); - const compositeSlo = createCompositeSLO({ - timeWindow: sevenDaysRolling(), - sources: [ - createWeightedAverageSource({ id: sloOne.id, revision: sloOne.revision }), - createWeightedAverageSource({ id: sloTwo.id, revision: sloTwo.revision }), - ], - }); - - expect(() => validateCompositeSLO(compositeSlo, [sloOne, sloTwo])).toThrowError( - 'Invalid time window. Every source SLO must use the same time window as the composite.' - ); - }); - - it('throws when the budgeting method is not the same accros all source SLOs', () => { - const sloOne = createSLO({ budgetingMethod: 'occurrences' }); - const sloTwo = createSLO({ budgetingMethod: 'timeslices' }); - const compositeSlo = createCompositeSLO({ - budgetingMethod: 'occurrences', - sources: [ - createWeightedAverageSource({ id: sloOne.id, revision: sloOne.revision }), - createWeightedAverageSource({ id: sloTwo.id, revision: sloTwo.revision }), - ], - }); - - expect(() => validateCompositeSLO(compositeSlo, [sloOne, sloTwo])).toThrowError( - 'Invalid budgeting method. Every source SLO must use the same budgeting method as the composite.' - ); - }); - - it('throws when the timeslices window is not defined on the composite SLO', () => { - const sloOne = createSLO({ - budgetingMethod: 'timeslices', - objective: { target: 0.98, timesliceTarget: 0.95, timesliceWindow: fiveMinute() }, - }); - const sloTwo = createSLO({ - budgetingMethod: 'timeslices', - objective: { target: 0.98, timesliceTarget: 0.95, timesliceWindow: fiveMinute() }, - }); - - const compositeSlo = createCompositeSLO({ - budgetingMethod: 'timeslices', - objective: { - target: 0.9, - }, - sources: [ - createWeightedAverageSource({ id: sloOne.id, revision: sloOne.revision }), - createWeightedAverageSource({ id: sloTwo.id, revision: sloTwo.revision }), - ], - }); - - expect(() => validateCompositeSLO(compositeSlo, [sloOne, sloTwo])).toThrowError( - 'Invalid timeslices objective. A timeslice window must be set and equal to all source SLO.' - ); - }); - - it('throws when the timeslices window is not the same accros all source SLOs', () => { - const sloOne = createSLO({ - budgetingMethod: 'timeslices', - objective: { target: 0.98, timesliceTarget: 0.95, timesliceWindow: twoMinute() }, - }); - const sloTwo = createSLO({ - budgetingMethod: 'timeslices', - objective: { target: 0.98, timesliceTarget: 0.95, timesliceWindow: fiveMinute() }, - }); - - const compositeSlo = createCompositeSLO({ - budgetingMethod: 'timeslices', - objective: { - target: 0.9, - timesliceTarget: 0.95, - timesliceWindow: fiveMinute(), - }, - sources: [ - createWeightedAverageSource({ id: sloOne.id, revision: sloOne.revision }), - createWeightedAverageSource({ id: sloTwo.id, revision: sloTwo.revision }), - ], - }); - - expect(() => validateCompositeSLO(compositeSlo, [sloOne, sloTwo])).toThrowError( - 'Invalid budgeting method. Every source SLO must use the same timeslice window.' - ); - }); - - describe('happy flow', () => { - it('throws nothing', () => { - const sloOne = createSLO({ - budgetingMethod: 'occurrences', - timeWindow: sevenDaysRolling(), - revision: 2, - }); - const sloTwo = createSLO({ - budgetingMethod: 'occurrences', - timeWindow: sevenDaysRolling(), - revision: 3, - }); - const compositeSlo = createCompositeSLO({ - budgetingMethod: 'occurrences', - timeWindow: sevenDaysRolling(), - sources: [ - createWeightedAverageSource({ id: sloOne.id, revision: sloOne.revision }), - createWeightedAverageSource({ id: sloTwo.id, revision: sloTwo.revision }), - ], - }); - - expect(() => validateCompositeSLO(compositeSlo, [sloOne, sloTwo])).not.toThrow(); - }); - - it('throws nothing in case of timeslices source SLOs', () => { - const sloOne = createSLOWithTimeslicesBudgetingMethod(); - const sloTwo = createSLOWithTimeslicesBudgetingMethod(); - const compositeSlo = createCompositeSLO({ - budgetingMethod: 'timeslices', - objective: { - target: 0.98, - timesliceTarget: 0.95, - timesliceWindow: twoMinute(), - }, - timeWindow: sevenDaysRolling(), - sources: [ - createWeightedAverageSource({ id: sloOne.id, revision: sloOne.revision }), - createWeightedAverageSource({ id: sloTwo.id, revision: sloTwo.revision }), - ], - }); - - expect(() => validateCompositeSLO(compositeSlo, [sloOne, sloTwo])).not.toThrow(); - }); - }); -}); diff --git a/x-pack/plugins/observability/server/domain/services/composite_slo/validate_composite_slo.ts b/x-pack/plugins/observability/server/domain/services/composite_slo/validate_composite_slo.ts deleted file mode 100644 index dd6edaf746c73..0000000000000 --- a/x-pack/plugins/observability/server/domain/services/composite_slo/validate_composite_slo.ts +++ /dev/null @@ -1,89 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import { calendarAlignedTimeWindowSchema, rollingTimeWindowSchema } from '@kbn/slo-schema'; -import { IllegalArgumentError } from '../../../errors'; -import { SLO } from '../../models'; -import { CompositeSLO } from '../../models/composite_slo'; - -export function validateCompositeSLO(compositeSlo: CompositeSLO, sloList: SLO[]) { - assertNumberOfSourceSlo(compositeSlo); - assertMatchingSloList(compositeSlo, sloList); - assertSameBudgetingMethod(compositeSlo, sloList); - assertSameTimeWindow(compositeSlo, sloList); -} - -function assertNumberOfSourceSlo(compositeSlo: CompositeSLO) { - if (compositeSlo.sources.length < 2 || compositeSlo.sources.length > 30) { - throw new IllegalArgumentError('A composite SLO must contain between 2 and 30 source SLOs.'); - } -} - -function assertMatchingSloList(compositeSlo: CompositeSLO, sloList: SLO[]) { - const everySourceSloMatches = compositeSlo.sources.every((sourceSlo) => - sloList.find((slo) => sourceSlo.id === slo.id && sourceSlo.revision === slo.revision) - ); - - if (!everySourceSloMatches) { - throw new IllegalArgumentError( - 'One or many source SLOs are not matching the specified id and revision.' - ); - } -} - -function assertSameBudgetingMethod(compositeSlo: CompositeSLO, sloList: SLO[]) { - const haveSameBudgetingMethod = sloList.every( - (slo) => slo.budgetingMethod === compositeSlo.budgetingMethod - ); - - if (compositeSlo.budgetingMethod === 'timeslices') { - if (compositeSlo.objective.timesliceWindow === undefined) { - throw new IllegalArgumentError( - 'Invalid timeslices objective. A timeslice window must be set and equal to all source SLO.' - ); - } - const haveSameTimesliceWindow = sloList.every((slo) => - slo.objective.timesliceWindow?.isEqual(compositeSlo.objective.timesliceWindow!) - ); - if (!haveSameTimesliceWindow) { - throw new IllegalArgumentError( - 'Invalid budgeting method. Every source SLO must use the same timeslice window.' - ); - } - } - - if (!haveSameBudgetingMethod) { - throw new IllegalArgumentError( - 'Invalid budgeting method. Every source SLO must use the same budgeting method as the composite.' - ); - } -} - -function assertSameTimeWindow(compositeSlo: CompositeSLO, sloList: SLO[]) { - let haveSameTimeWindow = false; - if (rollingTimeWindowSchema.is(compositeSlo.timeWindow)) { - haveSameTimeWindow = sloList.every( - (slo) => - slo.timeWindow.duration.isEqual(compositeSlo.timeWindow.duration) && - rollingTimeWindowSchema.is(slo.timeWindow) - ); - } - - if (calendarAlignedTimeWindowSchema.is(compositeSlo.timeWindow)) { - haveSameTimeWindow = sloList.every( - (slo) => - slo.timeWindow.duration.isEqual(compositeSlo.timeWindow.duration) && - calendarAlignedTimeWindowSchema.is(slo.timeWindow) - ); - } - - if (!haveSameTimeWindow) { - throw new IllegalArgumentError( - 'Invalid time window. Every source SLO must use the same time window as the composite.' - ); - } -} diff --git a/x-pack/plugins/observability/server/domain/services/compute_summary_status.ts b/x-pack/plugins/observability/server/domain/services/compute_summary_status.ts index 77ada8cd9c233..3aaaffe180b6a 100644 --- a/x-pack/plugins/observability/server/domain/services/compute_summary_status.ts +++ b/x-pack/plugins/observability/server/domain/services/compute_summary_status.ts @@ -5,13 +5,9 @@ * 2.0. */ -import { CompositeSLO, ErrorBudget, SLO, Status } from '../models'; +import { ErrorBudget, SLO, Status } from '../models'; -export function computeSummaryStatus( - slo: SLO | CompositeSLO, - sliValue: number, - errorBudget: ErrorBudget -): Status { +export function computeSummaryStatus(slo: SLO, sliValue: number, errorBudget: ErrorBudget): Status { if (sliValue === -1) { return 'NO_DATA'; } diff --git a/x-pack/plugins/observability/server/errors/errors.ts b/x-pack/plugins/observability/server/errors/errors.ts index cbecb88d9ce05..eaec36e66d08b 100644 --- a/x-pack/plugins/observability/server/errors/errors.ts +++ b/x-pack/plugins/observability/server/errors/errors.ts @@ -17,9 +17,6 @@ export class ObservabilityError extends Error { export class SLONotFound extends ObservabilityError {} export class SLOIdConflict extends ObservabilityError {} -export class CompositeSLONotFound extends ObservabilityError {} -export class CompositeSLOIdConflict extends ObservabilityError {} - export class InvalidQueryError extends ObservabilityError {} export class InternalQueryError extends ObservabilityError {} export class NotSupportedError extends ObservabilityError {} diff --git a/x-pack/plugins/observability/server/errors/handler.ts b/x-pack/plugins/observability/server/errors/handler.ts index 2898e53624832..c10f1d98c083e 100644 --- a/x-pack/plugins/observability/server/errors/handler.ts +++ b/x-pack/plugins/observability/server/errors/handler.ts @@ -5,21 +5,14 @@ * 2.0. */ -import { - CompositeSLOIdConflict, - CompositeSLONotFound, - ObservabilityError, - SecurityException, - SLOIdConflict, - SLONotFound, -} from './errors'; +import { ObservabilityError, SecurityException, SLOIdConflict, SLONotFound } from './errors'; export function getHTTPResponseCode(error: ObservabilityError): number { - if (error instanceof SLONotFound || error instanceof CompositeSLONotFound) { + if (error instanceof SLONotFound) { return 404; } - if (error instanceof SLOIdConflict || error instanceof CompositeSLOIdConflict) { + if (error instanceof SLOIdConflict) { return 409; } diff --git a/x-pack/plugins/observability/server/index.ts b/x-pack/plugins/observability/server/index.ts index e2e6bc768918d..e05740ea9785c 100644 --- a/x-pack/plugins/observability/server/index.ts +++ b/x-pack/plugins/observability/server/index.ts @@ -57,9 +57,6 @@ const configSchema = schema.object({ groupByPageSize: schema.number({ defaultValue: 10_000 }), }), enabled: schema.boolean({ defaultValue: true }), - compositeSlo: schema.object({ - enabled: schema.boolean({ defaultValue: false }), - }), }); export const config: PluginConfigDescriptor = { diff --git a/x-pack/plugins/observability/server/plugin.ts b/x-pack/plugins/observability/server/plugin.ts index 9d35ced6cb648..b4a81fb11e850 100644 --- a/x-pack/plugins/observability/server/plugin.ts +++ b/x-pack/plugins/observability/server/plugin.ts @@ -43,7 +43,7 @@ import { registerSloUsageCollector } from './lib/collectors/register'; import { registerRuleTypes } from './lib/rules/register_rule_types'; import { getObservabilityServerRouteRepository } from './routes/get_global_observability_server_route_repository'; import { registerRoutes } from './routes/register_routes'; -import { compositeSlo, slo, SO_COMPOSITE_SLO_TYPE, SO_SLO_TYPE } from './saved_objects'; +import { slo, SO_SLO_TYPE } from './saved_objects'; import { threshold } from './saved_objects/threshold'; import { DefaultResourceInstaller, @@ -182,9 +182,7 @@ export class ObservabilityPlugin implements Plugin { const { ruleDataService } = plugins.ruleRegistry; - const savedObjectTypes = config.compositeSlo.enabled - ? [SO_SLO_TYPE, SO_COMPOSITE_SLO_TYPE] - : [SO_SLO_TYPE]; + const savedObjectTypes = [SO_SLO_TYPE]; plugins.features.registerKibanaFeature({ id: sloFeatureId, name: i18n.translate('xpack.observability.featureRegistry.linkSloTitle', { @@ -236,9 +234,6 @@ export class ObservabilityPlugin implements Plugin { }); core.savedObjects.registerType(slo); - if (config.compositeSlo.enabled) { - core.savedObjects.registerType(compositeSlo); - } core.savedObjects.registerType(threshold); registerRuleTypes( diff --git a/x-pack/plugins/observability/server/routes/composite_slo/route.ts b/x-pack/plugins/observability/server/routes/composite_slo/route.ts deleted file mode 100644 index e1259e3f64ce2..0000000000000 --- a/x-pack/plugins/observability/server/routes/composite_slo/route.ts +++ /dev/null @@ -1,143 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import { badRequest } from '@hapi/boom'; -import { - createCompositeSLOParamsSchema, - deleteCompositeSLOParamsSchema, - findCompositeSLOParamsSchema, - getCompositeSLOParamsSchema, - updateCompositeSLOParamsSchema, -} from '@kbn/slo-schema'; - -import { - CreateCompositeSLO, - DefaultSummaryClient, - DeleteCompositeSLO, - FindCompositeSLO, - KibanaSavedObjectsCompositeSLORepository, - UpdateCompositeSLO, -} from '../../services/composite_slo'; -import { GetCompositeSLO } from '../../services/composite_slo/get_composite_slo'; -import { KibanaSavedObjectsSLORepository } from '../../services/slo'; -import { ObservabilityRequestHandlerContext } from '../../types'; -import { createObservabilityServerRoute } from '../create_observability_server_route'; - -const assertLicenseAtLeastPlatinum = async (context: ObservabilityRequestHandlerContext) => { - const { license } = await context.licensing; - if (!license.hasAtLeast('platinum')) { - throw badRequest('Platinum license or higher is needed to make use of this feature.'); - } -}; - -const createCompositeSLORoute = createObservabilityServerRoute({ - endpoint: 'POST /api/observability/composite_slos 2023-05-24', - options: { - tags: ['access:slo_write'], - }, - params: createCompositeSLOParamsSchema, - handler: async ({ context, params }) => { - await assertLicenseAtLeastPlatinum(context); - - const soClient = (await context.core).savedObjects.client; - const compositeSloRepository = new KibanaSavedObjectsCompositeSLORepository(soClient); - const sloRepository = new KibanaSavedObjectsSLORepository(soClient); - const createCompositeSLO = new CreateCompositeSLO(compositeSloRepository, sloRepository); - - const response = await createCompositeSLO.execute(params.body); - - return response; - }, -}); - -const updateCompositeSLORoute = createObservabilityServerRoute({ - endpoint: 'PUT /api/observability/composite_slos/{id} 2023-05-24', - options: { - tags: ['access:slo_write'], - }, - params: updateCompositeSLOParamsSchema, - handler: async ({ context, params }) => { - await assertLicenseAtLeastPlatinum(context); - - const soClient = (await context.core).savedObjects.client; - const compositeSloRepository = new KibanaSavedObjectsCompositeSLORepository(soClient); - const sloRepository = new KibanaSavedObjectsSLORepository(soClient); - const updateCompositeSLO = new UpdateCompositeSLO(compositeSloRepository, sloRepository); - - const response = await updateCompositeSLO.execute(params.path.id, params.body); - - return response; - }, -}); - -const deleteCompositeSLORoute = createObservabilityServerRoute({ - endpoint: 'DELETE /api/observability/composite_slos/{id} 2023-05-24', - options: { - tags: ['access:slo_write'], - }, - params: deleteCompositeSLOParamsSchema, - handler: async ({ context, params }) => { - await assertLicenseAtLeastPlatinum(context); - - const soClient = (await context.core).savedObjects.client; - const compositeSloRepository = new KibanaSavedObjectsCompositeSLORepository(soClient); - const deleteCompositeSLO = new DeleteCompositeSLO(compositeSloRepository); - - await deleteCompositeSLO.execute(params.path.id); - }, -}); - -const getCompositeSLORoute = createObservabilityServerRoute({ - endpoint: 'GET /api/observability/composite_slos/{id} 2023-05-24', - options: { - tags: ['access:slo_read'], - }, - params: getCompositeSLOParamsSchema, - handler: async ({ context, params }) => { - await assertLicenseAtLeastPlatinum(context); - - const soClient = (await context.core).savedObjects.client; - const esClient = (await context.core).elasticsearch.client.asCurrentUser; - - const compositeSloRepository = new KibanaSavedObjectsCompositeSLORepository(soClient); - const summaryClient = new DefaultSummaryClient(esClient); - const getCompositeSlo = new GetCompositeSLO(compositeSloRepository, summaryClient); - - const response = await getCompositeSlo.execute(params.path.id); - - return response; - }, -}); - -const findCompositeSLORoute = createObservabilityServerRoute({ - endpoint: 'GET /api/observability/composite_slos 2023-05-24', - options: { - tags: ['access:slo_read'], - }, - params: findCompositeSLOParamsSchema, - handler: async ({ context, params }) => { - await assertLicenseAtLeastPlatinum(context); - - const soClient = (await context.core).savedObjects.client; - const esClient = (await context.core).elasticsearch.client.asCurrentUser; - const repository = new KibanaSavedObjectsCompositeSLORepository(soClient); - const summaryClient = new DefaultSummaryClient(esClient); - const findCompositeSlo = new FindCompositeSLO(repository, summaryClient); - - const response = await findCompositeSlo.execute(params?.query ?? {}); - - return response; - }, -}); - -export const compositeSloRouteRepository = { - ...createCompositeSLORoute, - ...updateCompositeSLORoute, - ...deleteCompositeSLORoute, - ...getCompositeSLORoute, - ...findCompositeSLORoute, -}; diff --git a/x-pack/plugins/observability/server/routes/get_global_observability_server_route_repository.ts b/x-pack/plugins/observability/server/routes/get_global_observability_server_route_repository.ts index 53f9ffcb750db..d6a71120bb37b 100644 --- a/x-pack/plugins/observability/server/routes/get_global_observability_server_route_repository.ts +++ b/x-pack/plugins/observability/server/routes/get_global_observability_server_route_repository.ts @@ -6,17 +6,13 @@ */ import { ObservabilityConfig } from '..'; -import { compositeSloRouteRepository } from './composite_slo/route'; import { rulesRouteRepository } from './rules/route'; import { sloRouteRepository } from './slo/route'; export function getObservabilityServerRouteRepository(config: ObservabilityConfig) { - const isCompositeSloFeatureEnabled = config.compositeSlo.enabled; - const repository = { ...rulesRouteRepository, ...sloRouteRepository, - ...(isCompositeSloFeatureEnabled ? compositeSloRouteRepository : {}), }; return repository; } diff --git a/x-pack/plugins/observability/server/saved_objects/composite_slo.ts b/x-pack/plugins/observability/server/saved_objects/composite_slo.ts deleted file mode 100644 index 3261cb4b64dc4..0000000000000 --- a/x-pack/plugins/observability/server/saved_objects/composite_slo.ts +++ /dev/null @@ -1,42 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import { SavedObjectsType } from '@kbn/core-saved-objects-server'; -import { SavedObject } from '@kbn/core/server'; - -import { StoredCompositeSLO } from '../domain/models/composite_slo'; - -export const SO_COMPOSITE_SLO_TYPE = 'composite-slo'; - -export const compositeSlo: SavedObjectsType = { - name: SO_COMPOSITE_SLO_TYPE, - hidden: false, - namespaceType: 'multiple-isolated', - mappings: { - dynamic: false, - properties: { - id: { type: 'keyword' }, - name: { type: 'text' }, - budgetingMethod: { type: 'keyword' }, - compositeMethod: { type: 'keyword' }, - sources: { - properties: { - id: { type: 'keyword' }, - revision: { type: 'integer' }, - }, - }, - tags: { type: 'keyword' }, - }, - }, - management: { - displayName: 'Composite SLO', - importableAndExportable: true, - getTitle(compositeSloSavedObject: SavedObject) { - return `Composite SLO: [${compositeSloSavedObject.attributes.name}]`; - }, - }, -}; diff --git a/x-pack/plugins/observability/server/saved_objects/index.ts b/x-pack/plugins/observability/server/saved_objects/index.ts index 2e2a36f68e30d..6e4c8b66f7521 100644 --- a/x-pack/plugins/observability/server/saved_objects/index.ts +++ b/x-pack/plugins/observability/server/saved_objects/index.ts @@ -6,4 +6,3 @@ */ export { slo, SO_SLO_TYPE } from './slo'; -export { compositeSlo, SO_COMPOSITE_SLO_TYPE } from './composite_slo'; diff --git a/x-pack/plugins/observability/server/services/composite_slo/__snapshots__/summary_client.test.ts.snap b/x-pack/plugins/observability/server/services/composite_slo/__snapshots__/summary_client.test.ts.snap deleted file mode 100644 index ec4d29cba2f10..0000000000000 --- a/x-pack/plugins/observability/server/services/composite_slo/__snapshots__/summary_client.test.ts.snap +++ /dev/null @@ -1,185 +0,0 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP - -exports[`SummaryClient fetchSummary with a rolling and occurrences composite SLO returns the summary 1`] = ` -Object { - "errorBudget": Object { - "consumed": 1.666667, - "initial": 0.03, - "isEstimated": false, - "remaining": -0.666667, - }, - "sliValue": 0.95, - "status": "VIOLATED", -} -`; - -exports[`SummaryClient fetchSummary with a rolling and occurrences composite SLO returns the summary 2`] = ` -Array [ - Object { - "index": ".slo-observability.sli-v2*", - }, - Object { - "aggs": Object { - "bySloId": Object { - "aggs": Object { - "good": Object { - "sum": Object { - "field": "slo.numerator", - }, - }, - "total": Object { - "sum": Object { - "field": "slo.denominator", - }, - }, - }, - "terms": Object { - "field": "slo.id", - }, - }, - }, - "query": Object { - "bool": Object { - "filter": Array [ - Object { - "range": Object { - "@timestamp": Object { - "gte": "2023-05-22T10:15:00.000Z", - "lt": "2023-05-29T10:15:00.000Z", - }, - }, - }, - ], - "minimum_should_match": 1, - "should": Array [ - Object { - "bool": Object { - "must": Array [ - Object { - "term": Object { - "slo.id": "slo-1", - }, - }, - Object { - "term": Object { - "slo.revision": 1, - }, - }, - ], - }, - }, - Object { - "bool": Object { - "must": Array [ - Object { - "term": Object { - "slo.id": "slo-2", - }, - }, - Object { - "term": Object { - "slo.revision": 2, - }, - }, - ], - }, - }, - ], - }, - }, - "size": 0, - }, -] -`; - -exports[`SummaryClient with rolling and timeslices SLO returns the summary 1`] = ` -Object { - "errorBudget": Object { - "consumed": 1.666667, - "initial": 0.03, - "isEstimated": false, - "remaining": -0.666667, - }, - "sliValue": 0.95, - "status": "VIOLATED", -} -`; - -exports[`SummaryClient with rolling and timeslices SLO returns the summary 2`] = ` -Array [ - Object { - "index": ".slo-observability.sli-v2*", - }, - Object { - "aggs": Object { - "bySloId": Object { - "aggs": Object { - "good": Object { - "sum": Object { - "field": "slo.isGoodSlice", - }, - }, - "total": Object { - "value_count": Object { - "field": "slo.isGoodSlice", - }, - }, - }, - "terms": Object { - "field": "slo.id", - }, - }, - }, - "query": Object { - "bool": Object { - "filter": Array [ - Object { - "range": Object { - "@timestamp": Object { - "gte": "2023-05-22T10:15:00.000Z", - "lt": "2023-05-29T10:15:00.000Z", - }, - }, - }, - ], - "minimum_should_match": 1, - "should": Array [ - Object { - "bool": Object { - "must": Array [ - Object { - "term": Object { - "slo.id": "slo-1", - }, - }, - Object { - "term": Object { - "slo.revision": 1, - }, - }, - ], - }, - }, - Object { - "bool": Object { - "must": Array [ - Object { - "term": Object { - "slo.id": "slo-2", - }, - }, - Object { - "term": Object { - "slo.revision": 2, - }, - }, - ], - }, - }, - ], - }, - }, - "size": 0, - }, -] -`; diff --git a/x-pack/plugins/observability/server/services/composite_slo/composite_slo_repository.test.ts b/x-pack/plugins/observability/server/services/composite_slo/composite_slo_repository.test.ts deleted file mode 100644 index e1d234018c547..0000000000000 --- a/x-pack/plugins/observability/server/services/composite_slo/composite_slo_repository.test.ts +++ /dev/null @@ -1,169 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import { SavedObjectsClientContract, SavedObjectsFindResponse } from '@kbn/core/server'; -import { savedObjectsClientMock } from '@kbn/core/server/mocks'; -import { compositeSloSchema } from '@kbn/slo-schema'; - -import { CompositeSLO, StoredCompositeSLO } from '../../domain/models'; -import { CompositeSLOIdConflict, CompositeSLONotFound } from '../../errors'; -import { SO_COMPOSITE_SLO_TYPE } from '../../saved_objects'; -import { KibanaSavedObjectsCompositeSLORepository } from './composite_slo_repository'; -import { aStoredCompositeSLO, createCompositeSLO } from './fixtures/composite_slo'; - -function createFindResponse( - compositeSloList: CompositeSLO[] -): SavedObjectsFindResponse { - return { - page: 1, - per_page: 25, - total: compositeSloList.length, - saved_objects: compositeSloList.map((compositeSlo) => ({ - id: compositeSlo.id, - attributes: compositeSloSchema.encode(compositeSlo), - type: SO_COMPOSITE_SLO_TYPE, - references: [], - score: 1, - })), - }; -} - -describe('KibanaSavedObjectsCompositeSLORepository', () => { - let soClientMock: jest.Mocked; - - beforeEach(() => { - soClientMock = savedObjectsClientMock.create(); - }); - - describe('saving a composite SLO', () => { - it('saves the new composite SLO', async () => { - const compositeSlo = createCompositeSLO({ id: 'my-composite-id' }); - soClientMock.find.mockResolvedValueOnce(createFindResponse([])); - soClientMock.create.mockResolvedValueOnce(aStoredCompositeSLO(compositeSlo)); - const repository = new KibanaSavedObjectsCompositeSLORepository(soClientMock); - - const savedCompositeSlo = await repository.save(compositeSlo); - - expect(savedCompositeSlo).toEqual(compositeSlo); - expect(soClientMock.find).toHaveBeenCalledWith({ - type: SO_COMPOSITE_SLO_TYPE, - page: 1, - perPage: 1, - filter: `composite-slo.attributes.id:(${compositeSlo.id})`, - }); - expect(soClientMock.create).toHaveBeenCalledWith( - SO_COMPOSITE_SLO_TYPE, - compositeSloSchema.encode(compositeSlo), - { - id: undefined, - overwrite: true, - } - ); - }); - - it('throws when the Composite SLO id already exists and "throwOnConflict" is true', async () => { - const compositeSlo = createCompositeSLO({ id: 'my-composite-id' }); - soClientMock.find.mockResolvedValueOnce(createFindResponse([compositeSlo])); - const repository = new KibanaSavedObjectsCompositeSLORepository(soClientMock); - - await expect(repository.save(compositeSlo, { throwOnConflict: true })).rejects.toThrowError( - new CompositeSLOIdConflict(`Composite SLO [${compositeSlo.id}] already exists`) - ); - expect(soClientMock.find).toHaveBeenCalledWith({ - type: SO_COMPOSITE_SLO_TYPE, - page: 1, - perPage: 1, - filter: `composite-slo.attributes.id:(${compositeSlo.id})`, - }); - }); - - it('updates the existing composite SLO', async () => { - const compositeSlo = createCompositeSLO({ id: 'my-composite-id' }); - soClientMock.find.mockResolvedValueOnce(createFindResponse([compositeSlo])); - soClientMock.create.mockResolvedValueOnce(aStoredCompositeSLO(compositeSlo)); - const repository = new KibanaSavedObjectsCompositeSLORepository(soClientMock); - - const savedCompositeSLO = await repository.save(compositeSlo); - - expect(savedCompositeSLO).toEqual(compositeSlo); - expect(soClientMock.find).toHaveBeenCalledWith({ - type: SO_COMPOSITE_SLO_TYPE, - page: 1, - perPage: 1, - filter: `composite-slo.attributes.id:(${compositeSlo.id})`, - }); - expect(soClientMock.create).toHaveBeenCalledWith( - SO_COMPOSITE_SLO_TYPE, - compositeSloSchema.encode(compositeSlo), - { - id: 'my-composite-id', - overwrite: true, - } - ); - }); - }); - - describe('deleting a composite SLO', () => { - it('throws when not found', async () => { - soClientMock.find.mockResolvedValueOnce(createFindResponse([])); - const repository = new KibanaSavedObjectsCompositeSLORepository(soClientMock); - - await expect(repository.deleteById('inexistant-slo-id')).rejects.toThrowError( - new CompositeSLONotFound('Composite SLO [inexistant-slo-id] not found') - ); - }); - - it('deletes a composite SLO', async () => { - const compositeSlo = createCompositeSLO({ id: 'my-composite-id' }); - const repository = new KibanaSavedObjectsCompositeSLORepository(soClientMock); - soClientMock.find.mockResolvedValueOnce(createFindResponse([compositeSlo])); - - await repository.deleteById(compositeSlo.id); - - expect(soClientMock.find).toHaveBeenCalledWith({ - type: SO_COMPOSITE_SLO_TYPE, - page: 1, - perPage: 1, - filter: `composite-slo.attributes.id:(${compositeSlo.id})`, - }); - expect(soClientMock.delete).toHaveBeenCalledWith(SO_COMPOSITE_SLO_TYPE, compositeSlo.id); - }); - }); - - describe('finding a composite SLO', () => { - it('finds an existing composite SLO', async () => { - const compositeSlo = createCompositeSLO(); - const repository = new KibanaSavedObjectsCompositeSLORepository(soClientMock); - soClientMock.find.mockResolvedValueOnce(createFindResponse([compositeSlo])); - - const foundSLO = await repository.findById(compositeSlo.id); - expect(foundSLO).toEqual(compositeSlo); - expect(soClientMock.find).toHaveBeenCalledWith({ - type: SO_COMPOSITE_SLO_TYPE, - page: 1, - perPage: 1, - filter: `composite-slo.attributes.id:(${compositeSlo.id})`, - }); - }); - - it('throws when the composite SLO does not exist', async () => { - const repository = new KibanaSavedObjectsCompositeSLORepository(soClientMock); - soClientMock.find.mockResolvedValueOnce(createFindResponse([])); - - await expect(repository.findById('inexistant-id')).rejects.toThrowError( - new CompositeSLONotFound('Composite SLO [inexistant-id] not found') - ); - - expect(soClientMock.find).toHaveBeenCalledWith({ - type: SO_COMPOSITE_SLO_TYPE, - page: 1, - perPage: 1, - filter: 'composite-slo.attributes.id:(inexistant-id)', - }); - }); - }); -}); diff --git a/x-pack/plugins/observability/server/services/composite_slo/composite_slo_repository.ts b/x-pack/plugins/observability/server/services/composite_slo/composite_slo_repository.ts deleted file mode 100644 index e11e0ecd8f071..0000000000000 --- a/x-pack/plugins/observability/server/services/composite_slo/composite_slo_repository.ts +++ /dev/null @@ -1,205 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import { SavedObjectsClientContract } from '@kbn/core-saved-objects-api-server'; -import { compositeSloSchema } from '@kbn/slo-schema'; -import { fold } from 'fp-ts/lib/Either'; -import { pipe } from 'fp-ts/lib/pipeable'; -import * as t from 'io-ts'; - -import { CompositeSLO, StoredCompositeSLO } from '../../domain/models/composite_slo'; -import { CompositeSLOIdConflict, CompositeSLONotFound } from '../../errors'; -import { SO_COMPOSITE_SLO_TYPE } from '../../saved_objects'; - -export interface CompositeSLORepository { - save(compositeSlo: CompositeSLO, options?: { throwOnConflict: boolean }): Promise; - deleteById(id: string): Promise; - findById(id: string): Promise; - find(criteria: Criteria, sort: Sort, pagination: Pagination): Promise>; -} - -export interface Criteria { - name?: string; -} - -export interface Pagination { - page: number; - perPage: number; -} - -export const SortDirection = { - Asc: 'Asc', - Desc: 'Desc', -} as const; - -type ObjectValues = T[keyof T]; -type SortDirection = ObjectValues; - -export const SortField = { - CreationTime: 'CreationTime', - IndicatorType: 'IndicatorType', -}; - -type SortField = ObjectValues; - -export interface Sort { - field: SortField; - direction: SortDirection; -} - -export interface Paginated { - page: number; - perPage: number; - total: number; - results: T[]; -} - -const SAVED_OBJECT_ATTRIBUTES_PATH = 'composite-slo.attributes'; - -export class KibanaSavedObjectsCompositeSLORepository implements CompositeSLORepository { - constructor(private soClient: SavedObjectsClientContract) {} - - async save( - compositeSlo: CompositeSLO, - options = { throwOnConflict: false } - ): Promise { - let existingSavedObjectId; - const findResponse = await this.soClient.find({ - type: SO_COMPOSITE_SLO_TYPE, - page: 1, - perPage: 1, - filter: `${SAVED_OBJECT_ATTRIBUTES_PATH}.id:(${compositeSlo.id})`, - }); - - if (findResponse.total === 1) { - if (options.throwOnConflict) { - throw new CompositeSLOIdConflict(`Composite SLO [${compositeSlo.id}] already exists`); - } - - existingSavedObjectId = findResponse.saved_objects[0].id; - } - - const createResponse = await this.soClient.create( - SO_COMPOSITE_SLO_TYPE, - toStoredCompositeSLO(compositeSlo), - { - id: existingSavedObjectId, - overwrite: true, - } - ); - - return toCompositeSLO(createResponse.attributes); - } - - async deleteById(id: string): Promise { - const response = await this.soClient.find({ - type: SO_COMPOSITE_SLO_TYPE, - page: 1, - perPage: 1, - filter: `${SAVED_OBJECT_ATTRIBUTES_PATH}.id:(${id})`, - }); - - if (response.total === 0) { - throw new CompositeSLONotFound(`Composite SLO [${id}] not found`); - } - - await this.soClient.delete(SO_COMPOSITE_SLO_TYPE, response.saved_objects[0].id); - } - - async findById(id: string): Promise { - const response = await this.soClient.find({ - type: SO_COMPOSITE_SLO_TYPE, - page: 1, - perPage: 1, - filter: `${SAVED_OBJECT_ATTRIBUTES_PATH}.id:(${id})`, - }); - - if (response.total === 0) { - throw new CompositeSLONotFound(`Composite SLO [${id}] not found`); - } - - return toCompositeSLO(response.saved_objects[0].attributes); - } - - async find( - criteria: Criteria, - sort: Sort, - pagination: Pagination - ): Promise> { - const { search, searchFields } = buildSearch(criteria); - const { sortField, sortOrder } = buildSortQuery(sort); - const response = await this.soClient.find({ - type: SO_COMPOSITE_SLO_TYPE, - page: pagination.page, - perPage: pagination.perPage, - search, - searchFields, - sortField, - sortOrder, - }); - - return { - total: response.total, - page: response.page, - perPage: response.per_page, - results: response.saved_objects.map((so) => toCompositeSLO(so.attributes)), - }; - } -} - -function toStoredCompositeSLO(compositeSlo: CompositeSLO): StoredCompositeSLO { - return compositeSloSchema.encode(compositeSlo); -} - -function toCompositeSLO(storedCompositeSlo: StoredCompositeSLO): CompositeSLO { - return pipe( - compositeSloSchema.decode(storedCompositeSlo), - fold(() => { - throw new Error(`Invalid stored composite SLO [${storedCompositeSlo.id}]`); - }, t.identity) - ); -} - -function buildSearch(criteria: Criteria): { - search: string | undefined; - searchFields: string[] | undefined; -} { - if (!criteria.name) { - return { search: undefined, searchFields: undefined }; - } - - return { search: addWildcardsIfAbsent(criteria.name), searchFields: ['name'] }; -} - -function buildSortQuery(sort: Sort): { sortField: string; sortOrder: 'asc' | 'desc' } { - let sortField: string; - switch (sort.field) { - case SortField.CreationTime: - default: - sortField = 'created_at'; - break; - } - - return { - sortField, - sortOrder: sort.direction === SortDirection.Desc ? 'desc' : 'asc', - }; -} - -const WILDCARD_CHAR = '*'; -function addWildcardsIfAbsent(value: string): string { - let updatedValue = value; - if (updatedValue.substring(0, 1) !== WILDCARD_CHAR) { - updatedValue = `${WILDCARD_CHAR}${updatedValue}`; - } - - if (value.substring(value.length - 1) !== WILDCARD_CHAR) { - updatedValue = `${updatedValue}${WILDCARD_CHAR}`; - } - - return updatedValue; -} diff --git a/x-pack/plugins/observability/server/services/composite_slo/create_composite_slo.ts b/x-pack/plugins/observability/server/services/composite_slo/create_composite_slo.ts deleted file mode 100644 index 2e420a53798a6..0000000000000 --- a/x-pack/plugins/observability/server/services/composite_slo/create_composite_slo.ts +++ /dev/null @@ -1,54 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import { - CreateCompositeSLOParams, - CreateCompositeSLOResponse, - CreateSLOResponse, -} from '@kbn/slo-schema'; -import { v1 as uuidv1 } from 'uuid'; - -import { CompositeSLO } from '../../domain/models/composite_slo'; -import { validateCompositeSLO } from '../../domain/services/composite_slo'; -import { SLORepository } from '../slo/slo_repository'; -import { CompositeSLORepository } from './composite_slo_repository'; - -export class CreateCompositeSLO { - constructor( - private compositeSloRepository: CompositeSLORepository, - private sloRepository: SLORepository - ) {} - - public async execute(params: CreateCompositeSLOParams): Promise { - const compositeSlo = toCompositeSLO(params); - const sloList = await this.sloRepository.findAllByIds( - compositeSlo.sources.map((slo) => slo.id) - ); - validateCompositeSLO(compositeSlo, sloList); - - await this.compositeSloRepository.save(compositeSlo, { throwOnConflict: true }); - - return toResponse(compositeSlo); - } -} - -function toCompositeSLO(params: CreateCompositeSLOParams): CompositeSLO { - const now = new Date(); - return { - ...params, - id: params.id ?? uuidv1(), - tags: params.tags ?? [], - createdAt: now, - updatedAt: now, - }; -} - -function toResponse(compositeSlo: CompositeSLO): CreateCompositeSLOResponse { - return { - id: compositeSlo.id, - }; -} diff --git a/x-pack/plugins/observability/server/services/composite_slo/delete_composite_slo.ts b/x-pack/plugins/observability/server/services/composite_slo/delete_composite_slo.ts deleted file mode 100644 index c795db2391cfa..0000000000000 --- a/x-pack/plugins/observability/server/services/composite_slo/delete_composite_slo.ts +++ /dev/null @@ -1,17 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import { CompositeSLOId } from '../../domain/models'; -import { CompositeSLORepository } from './composite_slo_repository'; - -export class DeleteCompositeSLO { - constructor(private compositeSloRepository: CompositeSLORepository) {} - - public async execute(compositeSloId: CompositeSLOId): Promise { - await this.compositeSloRepository.deleteById(compositeSloId); - } -} diff --git a/x-pack/plugins/observability/server/services/composite_slo/find_composite_slo.ts b/x-pack/plugins/observability/server/services/composite_slo/find_composite_slo.ts deleted file mode 100644 index 79bdb734614b1..0000000000000 --- a/x-pack/plugins/observability/server/services/composite_slo/find_composite_slo.ts +++ /dev/null @@ -1,71 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import { - FindCompositeSLOParams, - FindCompositeSLOResponse, - findCompositeSLOResponseSchema, -} from '@kbn/slo-schema'; -import { CompositeSLO } from '../../domain/models'; -import { - CompositeSLORepository, - Paginated, - Pagination, - Sort, - SortDirection, - SortField, - Criteria, -} from './composite_slo_repository'; -import { SummaryClient } from './summary_client'; - -const DEFAULT_PAGE = 1; -const DEFAULT_PER_PAGE = 25; - -export class FindCompositeSLO { - constructor(private repository: CompositeSLORepository, private summaryClient: SummaryClient) {} - - public async execute(params: FindCompositeSLOParams): Promise { - const pagination: Pagination = toPagination(params); - const criteria: Criteria = toCriteria(params); - const sort: Sort = toSort(params); - - const { results: compositeSloList, ...resultMeta }: Paginated = - await this.repository.find(criteria, sort, pagination); - const summaryByCompositeSlo = await this.summaryClient.fetchSummary(compositeSloList); - - return findCompositeSLOResponseSchema.encode({ - page: resultMeta.page, - perPage: resultMeta.perPage, - total: resultMeta.total, - results: compositeSloList.map((compositeSlo) => ({ - ...compositeSlo, - summary: summaryByCompositeSlo[compositeSlo.id], - })), - }); - } -} - -function toCriteria(params: FindCompositeSLOParams): Criteria { - return { name: params.name }; -} - -function toPagination(params: FindCompositeSLOParams): Pagination { - const page = Number(params.page); - const perPage = Number(params.perPage); - - return { - page: !isNaN(page) && page >= 1 ? page : DEFAULT_PAGE, - perPage: !isNaN(perPage) && perPage >= 1 ? perPage : DEFAULT_PER_PAGE, - }; -} - -function toSort(params: FindCompositeSLOParams): Sort { - return { - field: SortField.CreationTime, - direction: params.sortDirection === 'desc' ? SortDirection.Desc : SortDirection.Asc, - }; -} diff --git a/x-pack/plugins/observability/server/services/composite_slo/fixtures/composite_slo.ts b/x-pack/plugins/observability/server/services/composite_slo/fixtures/composite_slo.ts deleted file mode 100644 index bba107e29d689..0000000000000 --- a/x-pack/plugins/observability/server/services/composite_slo/fixtures/composite_slo.ts +++ /dev/null @@ -1,60 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import { cloneDeep } from 'lodash'; -import { v1 as uuidv1 } from 'uuid'; -import { SavedObject } from '@kbn/core-saved-objects-server'; - -import { compositeSloSchema } from '@kbn/slo-schema'; -import { SO_COMPOSITE_SLO_TYPE } from '../../../saved_objects'; -import { CompositeSLO, StoredCompositeSLO, WeightedAverageSource } from '../../../domain/models'; -import { sevenDaysRolling } from '../../slo/fixtures/time_window'; - -export const createWeightedAverageSource = ( - params: Partial = {} -): WeightedAverageSource => { - return cloneDeep({ - id: uuidv1(), - revision: 1, - weight: 1, - ...params, - }); -}; - -const defaultCompositeSLO: Omit = { - name: 'some composite slo', - timeWindow: sevenDaysRolling(), - budgetingMethod: 'occurrences', - objective: { - target: 0.95, - }, - compositeMethod: 'weightedAverage', - sources: [createWeightedAverageSource(), createWeightedAverageSource()], - tags: ['critical', 'k8s'], -}; - -export const createCompositeSLO = (params: Partial = {}): CompositeSLO => { - const now = new Date(); - return cloneDeep({ - ...defaultCompositeSLO, - id: uuidv1(), - createdAt: now, - updatedAt: now, - ...params, - }); -}; - -export const aStoredCompositeSLO = ( - compositeSlo: CompositeSLO -): SavedObject => { - return { - id: uuidv1(), - attributes: compositeSloSchema.encode(compositeSlo), - type: SO_COMPOSITE_SLO_TYPE, - references: [], - }; -}; diff --git a/x-pack/plugins/observability/server/services/composite_slo/get_composite_slo.ts b/x-pack/plugins/observability/server/services/composite_slo/get_composite_slo.ts deleted file mode 100644 index 8a0170cbfa080..0000000000000 --- a/x-pack/plugins/observability/server/services/composite_slo/get_composite_slo.ts +++ /dev/null @@ -1,32 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import { compositeSLOResponseSchema, GetCompositeSLOResponse } from '@kbn/slo-schema'; -import { CompositeSLO, CompositeSLOId, Summary } from '../../domain/models'; -import { CompositeSLORepository } from './composite_slo_repository'; -import { SummaryClient } from './summary_client'; - -export class GetCompositeSLO { - constructor( - private compositeSloRepository: CompositeSLORepository, - private summaryClient: SummaryClient - ) {} - - public async execute(compositeSloId: CompositeSLOId): Promise { - const compositeSlo = await this.compositeSloRepository.findById(compositeSloId); - const summaryByCompositeSlo = await this.summaryClient.fetchSummary([compositeSlo]); - - return toResponse(compositeSlo, summaryByCompositeSlo[compositeSlo.id]); - } -} - -function toResponse(compositeSlo: CompositeSLO, summary: Summary): GetCompositeSLOResponse { - return { - ...compositeSLOResponseSchema.encode(compositeSlo), - summary, - }; -} diff --git a/x-pack/plugins/observability/server/services/composite_slo/index.ts b/x-pack/plugins/observability/server/services/composite_slo/index.ts deleted file mode 100644 index e9f8320ea833e..0000000000000 --- a/x-pack/plugins/observability/server/services/composite_slo/index.ts +++ /dev/null @@ -1,13 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -export * from './composite_slo_repository'; -export * from './create_composite_slo'; -export * from './delete_composite_slo'; -export * from './find_composite_slo'; -export * from './summary_client'; -export * from './update_composite_slo'; diff --git a/x-pack/plugins/observability/server/services/composite_slo/summary_client.test.ts b/x-pack/plugins/observability/server/services/composite_slo/summary_client.test.ts deleted file mode 100644 index 813183c6576d6..0000000000000 --- a/x-pack/plugins/observability/server/services/composite_slo/summary_client.test.ts +++ /dev/null @@ -1,102 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import { ElasticsearchClientMock, elasticsearchServiceMock } from '@kbn/core/server/mocks'; -import { CompositeSLO, Duration, DurationUnit } from '../../domain/models'; -import { sevenDaysRolling } from '../slo/fixtures/time_window'; -import { createCompositeSLO } from './fixtures/composite_slo'; -import { DefaultSummaryClient } from './summary_client'; - -const commonEsResponse = { - took: 100, - timed_out: false, - _shards: { - total: 0, - successful: 0, - skipped: 0, - failed: 0, - }, - hits: { - hits: [], - }, -}; - -const createEsResponse = (compositeSlo: CompositeSLO) => ({ - ...commonEsResponse, - responses: [ - { - ...commonEsResponse, - aggregations: { - bySloId: { - buckets: compositeSlo.sources.map((source) => ({ - key: source.id, - good: { value: 95 }, - total: { value: 100 }, - })), - }, - }, - }, - ], -}); - -describe('SummaryClient', () => { - let esClientMock: ElasticsearchClientMock; - - beforeEach(() => { - esClientMock = elasticsearchServiceMock.createElasticsearchClient(); - jest.useFakeTimers().setSystemTime(new Date('2023-05-29T10:15:00.000Z')); - }); - - describe('fetchSummary', () => { - describe('with a rolling and occurrences composite SLO', () => { - it('returns the summary', async () => { - const compositeSlo = createCompositeSLO({ - objective: { target: 0.97 }, - timeWindow: sevenDaysRolling(), - sources: [ - { id: 'slo-1', revision: 1, weight: 2 }, - { id: 'slo-2', revision: 2, weight: 1 }, - ], - }); - esClientMock.msearch.mockResolvedValueOnce(createEsResponse(compositeSlo)); - const summaryClient = new DefaultSummaryClient(esClientMock); - - const result = await summaryClient.fetchSummary([compositeSlo]); - - expect(result[compositeSlo.id]).toMatchSnapshot(); - // @ts-ignore - expect(esClientMock.msearch.mock.calls[0][0].searches).toMatchSnapshot(); - }); - }); - }); - - describe('with rolling and timeslices SLO', () => { - it('returns the summary', async () => { - const compositeSlo = createCompositeSLO({ - budgetingMethod: 'timeslices', - objective: { - target: 0.97, - timesliceTarget: 0.9, - timesliceWindow: new Duration(10, DurationUnit.Minute), - }, - sources: [ - { id: 'slo-1', revision: 1, weight: 2 }, - { id: 'slo-2', revision: 2, weight: 1 }, - ], - timeWindow: sevenDaysRolling(), - }); - esClientMock.msearch.mockResolvedValueOnce(createEsResponse(compositeSlo)); - const summaryClient = new DefaultSummaryClient(esClientMock); - - const result = await summaryClient.fetchSummary([compositeSlo]); - - expect(result[compositeSlo.id]).toMatchSnapshot(); - // @ts-ignore searches not typed properly - expect(esClientMock.msearch.mock.calls[0][0].searches).toMatchSnapshot(); - }); - }); -}); diff --git a/x-pack/plugins/observability/server/services/composite_slo/summary_client.ts b/x-pack/plugins/observability/server/services/composite_slo/summary_client.ts deleted file mode 100644 index 275e70b6db300..0000000000000 --- a/x-pack/plugins/observability/server/services/composite_slo/summary_client.ts +++ /dev/null @@ -1,192 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import { MsearchMultisearchBody } from '@elastic/elasticsearch/lib/api/typesWithBodyKey'; -import { ElasticsearchClient } from '@kbn/core/server'; -import { - calendarAlignedTimeWindowSchema, - Duration, - occurrencesBudgetingMethodSchema, - timeslicesBudgetingMethodSchema, - toMomentUnitOfTime, -} from '@kbn/slo-schema'; -import moment from 'moment'; -import { SLO_DESTINATION_INDEX_PATTERN } from '../../assets/constants'; -import { CompositeSLO, CompositeSLOId, DateRange, Summary } from '../../domain/models'; -import { computeSLI, computeSummaryStatus, toErrorBudget } from '../../domain/services'; -import { toDateRange } from '../../domain/services/date_range'; -import { toHighPrecision } from '../../utils/number'; - -export interface SummaryClient { - fetchSummary(compositeSloList: CompositeSLO[]): Promise>; -} - -export class DefaultSummaryClient implements SummaryClient { - constructor(private esClient: ElasticsearchClient) {} - - async fetchSummary(compositeSloList: CompositeSLO[]): Promise> { - const dateRangeByCompositeSlo = compositeSloList.reduce>( - (acc, compositeSlo) => { - acc[compositeSlo.id] = toDateRange(compositeSlo.timeWindow); - return acc; - }, - {} - ); - const searches = compositeSloList.flatMap((compositeSlo) => [ - { index: SLO_DESTINATION_INDEX_PATTERN }, - generateSearchQuery(compositeSlo, dateRangeByCompositeSlo[compositeSlo.id]), - ]); - - const summaryByCompositeSlo: Record = {}; - if (searches.length === 0) { - return summaryByCompositeSlo; - } - - const result = await this.esClient.msearch({ searches }); - - for (let i = 0; i < result.responses.length; i++) { - const compositeSlo = compositeSloList[i]; - - // @ts-ignore - const { aggregations = {} } = result.responses[i]; - const buckets = aggregations?.bySloId?.buckets ?? []; - - if ( - calendarAlignedTimeWindowSchema.is(compositeSlo.timeWindow) && - timeslicesBudgetingMethodSchema.is(compositeSlo.budgetingMethod) - ) { - let sliValue = 0; - let totalWeights = 0; - let maxSloTotalSlices = 0; - for (const bucket of buckets) { - const sourceSloId = bucket.key; - const sourceSloGoodSlices = bucket.good.value; - const sourceSloTotalSlices = bucket.total.value; - maxSloTotalSlices = - sourceSloTotalSlices > maxSloTotalSlices ? sourceSloTotalSlices : maxSloTotalSlices; - const sourceSloSliValue = computeSLI(sourceSloGoodSlices, sourceSloTotalSlices); - const sourceSloWeight = compositeSlo.sources.find( - (source) => source.id === sourceSloId - )!.weight; // used to build the query, therefore exists - - totalWeights += sourceSloWeight; - sliValue += sourceSloSliValue < 0 ? 0 : sourceSloWeight * sourceSloSliValue; - } - sliValue /= totalWeights === 0 ? 1 : totalWeights; - - const totalSlicesInCalendar = computeTotalSlicesFromDateRange( - dateRangeByCompositeSlo[compositeSlo.id], - compositeSlo.objective.timesliceWindow! - ); - const initialErrorBudget = 1 - compositeSlo.objective.target; - const errorBudgetConsumed = - ((1 - sliValue) / initialErrorBudget) * (maxSloTotalSlices / totalSlicesInCalendar); - - const errorBudget = toErrorBudget(initialErrorBudget, errorBudgetConsumed); - summaryByCompositeSlo[compositeSlo.id] = { - sliValue: toHighPrecision(sliValue), - errorBudget, - status: computeSummaryStatus(compositeSlo, sliValue, errorBudget), - }; - } else { - let sliValue = 0; - let totalWeights = 0; - for (const bucket of buckets) { - const sourceSloId = bucket.key; - const sourceSloGood = bucket.good.value; - const sourceSloTotal = bucket.total.value; - const sourceSloSliValue = computeSLI(sourceSloGood, sourceSloTotal); - const sourceSloWeight = compositeSlo.sources.find( - (source) => source.id === sourceSloId - )!.weight; // used to build the query, therefore exists - - totalWeights += sourceSloWeight; - sliValue += sourceSloSliValue < 0 ? 0 : sourceSloWeight * sourceSloSliValue; - } - sliValue /= totalWeights === 0 ? 1 : totalWeights; - - const initialErrorBudget = 1 - compositeSlo.objective.target; - const errorBudgetConsumed = (1 - sliValue) / initialErrorBudget; - const errorBudget = toErrorBudget( - initialErrorBudget, - errorBudgetConsumed, - calendarAlignedTimeWindowSchema.is(compositeSlo.timeWindow) - ); - summaryByCompositeSlo[compositeSlo.id] = { - sliValue: toHighPrecision(sliValue), - errorBudget, - status: computeSummaryStatus(compositeSlo, sliValue, errorBudget), - }; - } - } - - return summaryByCompositeSlo; - } -} - -function generateSearchQuery( - compositeSlo: CompositeSLO, - dateRange: DateRange -): MsearchMultisearchBody { - return { - size: 0, - query: { - bool: { - filter: [ - { - range: { - '@timestamp': { gte: dateRange.from.toISOString(), lt: dateRange.to.toISOString() }, - }, - }, - ], - should: compositeSlo.sources.map((source) => ({ - bool: { - must: [ - { term: { 'slo.id': source.id } }, - { term: { 'slo.revision': source.revision } }, - ], - }, - })), - minimum_should_match: 1, - }, - }, - ...(occurrencesBudgetingMethodSchema.is(compositeSlo.budgetingMethod) && { - aggs: { - bySloId: { - terms: { - field: 'slo.id', - }, - aggs: { - good: { sum: { field: 'slo.numerator' } }, - total: { sum: { field: 'slo.denominator' } }, - }, - }, - }, - }), - ...(timeslicesBudgetingMethodSchema.is(compositeSlo.budgetingMethod) && { - aggs: { - bySloId: { - terms: { - field: 'slo.id', - }, - aggs: { - good: { sum: { field: 'slo.isGoodSlice' } }, - total: { value_count: { field: 'slo.isGoodSlice' } }, - }, - }, - }, - }), - }; -} - -function computeTotalSlicesFromDateRange(dateRange: DateRange, timesliceWindow: Duration) { - const dateRangeDurationInUnit = moment(dateRange.to).diff( - dateRange.from, - toMomentUnitOfTime(timesliceWindow.unit) - ); - return Math.ceil(dateRangeDurationInUnit / timesliceWindow!.value); -} diff --git a/x-pack/plugins/observability/server/services/composite_slo/update_composite_slo.ts b/x-pack/plugins/observability/server/services/composite_slo/update_composite_slo.ts deleted file mode 100644 index 49725acdd927c..0000000000000 --- a/x-pack/plugins/observability/server/services/composite_slo/update_composite_slo.ts +++ /dev/null @@ -1,46 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import { - UpdateCompositeSLOParams, - UpdateCompositeSLOResponse, - updateCompositeSLOResponseSchema, -} from '@kbn/slo-schema'; -import { CompositeSLO, CompositeSLOId } from '../../domain/models'; -import { validateCompositeSLO } from '../../domain/services/composite_slo'; -import { SLORepository } from '../slo'; -import { CompositeSLORepository } from './composite_slo_repository'; - -export class UpdateCompositeSLO { - constructor( - private compositeSloRepository: CompositeSLORepository, - private sloRepository: SLORepository - ) {} - - public async execute( - compositeSloId: CompositeSLOId, - params: UpdateCompositeSLOParams - ): Promise { - const originalCompositeSlo = await this.compositeSloRepository.findById(compositeSloId); - - const updatedCompositeSlo: CompositeSLO = Object.assign({}, originalCompositeSlo, params, { - updatedAt: new Date(), - }); - const sloList = await this.sloRepository.findAllByIds( - updatedCompositeSlo.sources.map((slo) => slo.id) - ); - validateCompositeSLO(updatedCompositeSlo, sloList); - - await this.compositeSloRepository.save(updatedCompositeSlo); - - return toResponse(updatedCompositeSlo); - } -} - -function toResponse(compositeSlo: CompositeSLO): UpdateCompositeSLOResponse { - return updateCompositeSLOResponseSchema.encode(compositeSlo); -} diff --git a/x-pack/plugins/observability/tsconfig.json b/x-pack/plugins/observability/tsconfig.json index a3d803b89bb97..d5123d9b5c86b 100644 --- a/x-pack/plugins/observability/tsconfig.json +++ b/x-pack/plugins/observability/tsconfig.json @@ -90,7 +90,8 @@ "@kbn/deeplinks-observability", "@kbn/core-application-common", "@kbn/react-kibana-mount", - "@kbn/react-kibana-context-theme" + "@kbn/react-kibana-context-theme", + "@kbn/shared-ux-link-redirect-app" ], "exclude": [ "target/**/*" diff --git a/x-pack/plugins/observability_onboarding/public/application/app.tsx b/x-pack/plugins/observability_onboarding/public/application/app.tsx index 93a62f5f378e3..fc791436e3887 100644 --- a/x-pack/plugins/observability_onboarding/public/application/app.tsx +++ b/x-pack/plugins/observability_onboarding/public/application/app.tsx @@ -24,7 +24,6 @@ import { Router, Routes, Route } from '@kbn/shared-ux-router'; import { euiDarkVars, euiLightVars } from '@kbn/ui-theme'; import React from 'react'; import ReactDOM from 'react-dom'; -import { RouteComponentProps, RouteProps } from 'react-router-dom'; import { ConfigSchema } from '..'; import { customLogsRoutes } from '../components/app/custom_logs'; import { systemLogsRoutes } from '../components/app/system_logs'; @@ -37,16 +36,6 @@ import { baseRoutes, routes } from '../routes'; import { CustomLogs } from '../routes/templates/custom_logs'; import { SystemLogs } from '../routes/templates/system_logs'; -export type BreadcrumbTitle< - T extends { [K in keyof T]?: string | undefined } = {} -> = string | ((props: RouteComponentProps) => string) | null; - -export interface RouteDefinition< - T extends { [K in keyof T]?: string | undefined } = any -> extends RouteProps { - breadcrumb: BreadcrumbTitle; -} - export const onBoardingTitle = i18n.translate( 'xpack.observability_onboarding.breadcrumbs.onboarding', { @@ -157,6 +146,8 @@ export function ObservabilityOnboardingAppRoot({ const i18nCore = core.i18n; const plugins = { ...deps }; + const renderFeedbackLinkAsPortal = !config.serverless.enabled; + return ( - - - + {renderFeedbackLinkAsPortal && ( + + + + )} diff --git a/x-pack/plugins/observability_onboarding/public/plugin.ts b/x-pack/plugins/observability_onboarding/public/plugin.ts index 05806059b12e3..1a4982eab0859 100644 --- a/x-pack/plugins/observability_onboarding/public/plugin.ts +++ b/x-pack/plugins/observability_onboarding/public/plugin.ts @@ -28,6 +28,7 @@ import type { ObservabilityOnboardingConfig } from '../server'; import { PLUGIN_ID } from '../common'; import { ObservabilityOnboardingLocatorDefinition } from './locators/onboarding_locator/locator_definition'; import { ObservabilityOnboardingPluginLocators } from './locators'; +import { ConfigSchema } from '.'; export type ObservabilityOnboardingPluginSetup = void; export type ObservabilityOnboardingPluginStart = void; @@ -44,6 +45,14 @@ export interface ObservabilityOnboardingPluginStartDeps { observability: ObservabilityPublicStart; } +export interface ObservabilityOnboardingPluginContextValue { + core: CoreStart; + plugins: ObservabilityOnboardingPluginSetupDeps; + data: DataPublicPluginStart; + observability: ObservabilityPublicStart; + config: ConfigSchema; +} + export class ObservabilityOnboardingPlugin implements Plugin< diff --git a/x-pack/plugins/observability_onboarding/public/routes/templates/custom_logs.tsx b/x-pack/plugins/observability_onboarding/public/routes/templates/custom_logs.tsx index c2a18238943d2..411eb2b8e79e1 100644 --- a/x-pack/plugins/observability_onboarding/public/routes/templates/custom_logs.tsx +++ b/x-pack/plugins/observability_onboarding/public/routes/templates/custom_logs.tsx @@ -9,6 +9,8 @@ import { EuiFlexGroup, EuiFlexItem, EuiSpacer, EuiTitle } from '@elastic/eui'; import { i18n } from '@kbn/i18n'; import { useBreadcrumbs } from '@kbn/observability-shared-plugin/public'; import React, { ComponentType, useRef, useState } from 'react'; +import { useKibana } from '@kbn/kibana-react-plugin/public'; +import { ObservabilityOnboardingPluginContextValue } from '../../plugin'; import { breadcrumbsApp } from '../../application/app'; import { Provider as WizardProvider } from '../../components/app/custom_logs'; import { @@ -16,6 +18,7 @@ import { FilmstripTransition, TransitionState, } from '../../components/shared/filmstrip_transition'; +import { ObservabilityOnboardingHeaderActionMenu } from '../../components/app/header_action_menu'; interface Props { children: React.ReactNode; @@ -43,6 +46,12 @@ function AnimatedTransitionsWizard({ children }: Props) { const [title, setTitle] = useState(); const TransitionComponent = useRef(() => null); + const { + services: { config }, + } = useKibana(); + + const isServerless = config.serverless.enabled; + function onChangeStep({ direction, stepTitle, @@ -68,21 +77,33 @@ function AnimatedTransitionsWizard({ children }: Props) { - -

- {title - ? title - : i18n.translate( - 'xpack.observability_onboarding.title.collectCustomLogs', - { - defaultMessage: 'Stream log files to Elastic', - } - )} -

-
+ + + +

+ {title + ? title + : i18n.translate( + 'xpack.observability_onboarding.title.collectCustomLogs', + { + defaultMessage: 'Stream log files to Elastic', + } + )} +

+
+
+ {isServerless && ( + + + + )} +
(); + + const isServerless = config.serverless.enabled; return ( - -

- {i18n.translate( - 'xpack.observability_onboarding.title.collectSystemLogs', - { defaultMessage: 'Install shipper to collect system logs' } - )} -

-
+ + + +

+ {i18n.translate( + 'xpack.observability_onboarding.title.collectSystemLogs', + { defaultMessage: 'Install shipper to collect system logs' } + )} +

+
+
+ {isServerless && ( + + + + )} +
{ +describe('ALL - Custom space', () => { testSpaces.forEach((testSpace) => { describe(`[${testSpace.name}]`, { tags: testSpace.tags }, () => { let packName: string; diff --git a/x-pack/plugins/security_solution/public/app/home/template_wrapper/global_kql_header/index.tsx b/x-pack/plugins/security_solution/public/app/home/template_wrapper/global_kql_header/index.tsx index f5f9b55e59e7c..80ddc7769e91e 100644 --- a/x-pack/plugins/security_solution/public/app/home/template_wrapper/global_kql_header/index.tsx +++ b/x-pack/plugins/security_solution/public/app/home/template_wrapper/global_kql_header/index.tsx @@ -12,7 +12,7 @@ import { useGlobalHeaderPortal } from '../../../../common/hooks/use_global_heade const StyledStickyWrapper = styled.div` position: sticky; z-index: ${(props) => props.theme.eui.euiZHeaderBelowDataGrid}; - top: var(--euiFixedHeadersOffset, 0); + top: var(--kbnAppHeadersOffset, var(--euiFixedHeadersOffset, 0)); `; export const GlobalKQLHeader = React.memo(() => { diff --git a/x-pack/plugins/security_solution/public/detections/components/alerts_table/helpers.test.ts b/x-pack/plugins/security_solution/public/detections/components/alerts_table/helpers.test.ts index 09c54ba2057f1..79c93d0d32ba3 100644 --- a/x-pack/plugins/security_solution/public/detections/components/alerts_table/helpers.test.ts +++ b/x-pack/plugins/security_solution/public/detections/components/alerts_table/helpers.test.ts @@ -545,7 +545,7 @@ describe('helpers', () => { range: { '@timestamp': { gte: '2020-10-29T21:06:10.192Z', - lt: '2020-10-29T21:07:38.774Z', + lte: '2020-10-29T21:07:38.774Z', format: 'strict_date_optional_time', }, }, @@ -557,7 +557,7 @@ describe('helpers', () => { key: '@timestamp', params: { gte: from, - lt: to, + lte: to, format: 'strict_date_optional_time', }, }, diff --git a/x-pack/plugins/security_solution/public/detections/components/alerts_table/helpers.ts b/x-pack/plugins/security_solution/public/detections/components/alerts_table/helpers.ts index 19fcd17cd3c93..7221a9ede2785 100644 --- a/x-pack/plugins/security_solution/public/detections/components/alerts_table/helpers.ts +++ b/x-pack/plugins/security_solution/public/detections/components/alerts_table/helpers.ts @@ -224,7 +224,7 @@ export const buildTimeRangeFilter = (from: string, to: string): Filter[] => [ range: { '@timestamp': { gte: from, - lt: to, + lte: to, format: 'strict_date_optional_time', }, }, @@ -236,7 +236,7 @@ export const buildTimeRangeFilter = (from: string, to: string): Filter[] => [ key: '@timestamp', params: { gte: from, - lt: to, + lte: to, format: 'strict_date_optional_time', }, }, diff --git a/x-pack/plugins/security_solution/public/management/cypress/e2e/automated_response_actions/automated_response_actions.cy.ts b/x-pack/plugins/security_solution/public/management/cypress/e2e/automated_response_actions/automated_response_actions.cy.ts index 4186317a18e26..6f337adfc35fa 100644 --- a/x-pack/plugins/security_solution/public/management/cypress/e2e/automated_response_actions/automated_response_actions.cy.ts +++ b/x-pack/plugins/security_solution/public/management/cypress/e2e/automated_response_actions/automated_response_actions.cy.ts @@ -20,7 +20,8 @@ import { createEndpointHost } from '../../tasks/create_endpoint_host'; import { deleteAllLoadedEndpointData } from '../../tasks/delete_all_endpoint_data'; import { enableAllPolicyProtections } from '../../tasks/endpoint_policy'; -describe( +// FLAKY: https://github.com/elastic/kibana/issues/168340 +describe.skip( 'Automated Response Actions', { tags: ['@ess', '@serverless', '@brokenInServerless'] }, () => { diff --git a/x-pack/plugins/security_solution/public/management/pages/policy/view/protection_updates/protection_updates_layout.tsx b/x-pack/plugins/security_solution/public/management/pages/policy/view/protection_updates/protection_updates_layout.tsx index af2932e305576..cf7012f901974 100644 --- a/x-pack/plugins/security_solution/public/management/pages/policy/view/protection_updates/protection_updates_layout.tsx +++ b/x-pack/plugins/security_solution/public/management/pages/policy/view/protection_updates/protection_updates_layout.tsx @@ -191,6 +191,16 @@ export const ProtectionUpdatesLayout = React.memo( [automaticUpdatesEnabled, selectedDate, today] ); + const updateDatepickerSelectedDate = useCallback( + (date: Moment | null) => { + if (date?.isAfter(cutoffDate) && date?.isSameOrBefore(today)) { + setSelectedDate(date || today); + setManifestVersion(date?.format(internalDateFormat) || 'latest'); + } + }, + [cutoffDate, today] + ); + const renderVersionToDeployPicker = () => { return ( <> @@ -216,10 +226,7 @@ export const ProtectionUpdatesLayout = React.memo( selected={selectedDate} maxDate={today} minDate={cutoffDate} - onChange={(date) => { - setSelectedDate(date || today); - setManifestVersion(date?.format(internalDateFormat) || 'latest'); - }} + onChange={updateDatepickerSelectedDate} />
) : ( diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/routes/signals/open_close_signals_route.ts b/x-pack/plugins/security_solution/server/lib/detection_engine/routes/signals/open_close_signals_route.ts index c3060fcc93b88..ce6e19d4706fe 100644 --- a/x-pack/plugins/security_solution/server/lib/detection_engine/routes/signals/open_close_signals_route.ts +++ b/x-pack/plugins/security_solution/server/lib/detection_engine/routes/signals/open_close_signals_route.ts @@ -131,7 +131,7 @@ const updateSignalsStatusByIds = async ( ) => esClient.updateByQuery({ index: `${DEFAULT_ALERTS_INDEX}-${spaceId}`, - refresh: false, + refresh: true, body: { script: getUpdateSignalStatusScript(status), query: { @@ -158,7 +158,7 @@ const updateSignalsStatusByQuery = async ( esClient.updateByQuery({ index: `${DEFAULT_ALERTS_INDEX}-${spaceId}`, conflicts: options.conflicts, - refresh: false, + refresh: true, body: { script: getUpdateSignalStatusScript(status), query: { diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/routes/signals/set_alert_tags_route.ts b/x-pack/plugins/security_solution/server/lib/detection_engine/routes/signals/set_alert_tags_route.ts index 36d3e57169cce..8b7e81f9bf812 100644 --- a/x-pack/plugins/security_solution/server/lib/detection_engine/routes/signals/set_alert_tags_route.ts +++ b/x-pack/plugins/security_solution/server/lib/detection_engine/routes/signals/set_alert_tags_route.ts @@ -100,7 +100,7 @@ export const setAlertTagsRoute = (router: SecuritySolutionPluginRouter) => { try { const body = await esClient.updateByQuery({ index: `${DEFAULT_ALERTS_INDEX}-${spaceId}`, - refresh: false, + refresh: true, body: { script: painlessScript, query: { diff --git a/x-pack/plugins/security_solution/server/lib/risk_engine/routes/risk_score_calculation_route.ts b/x-pack/plugins/security_solution/server/lib/risk_engine/routes/risk_score_calculation_route.ts index 75c88678fd070..1b02c4a10fd25 100644 --- a/x-pack/plugins/security_solution/server/lib/risk_engine/routes/risk_score_calculation_route.ts +++ b/x-pack/plugins/security_solution/server/lib/risk_engine/routes/risk_score_calculation_route.ts @@ -23,14 +23,14 @@ export const riskScoreCalculationRoute = (router: SecuritySolutionPluginRouter, router.versioned .post({ path: RISK_SCORE_CALCULATION_URL, - access: 'public', + access: 'internal', options: { tags: ['access:securitySolution', `access:${APP_ID}-entity-analytics`], }, }) .addVersion( { - version: '2023-10-31', + version: '1', validate: { request: { body: buildRouteValidation(riskScoreCalculationRequestSchema) } }, }, async (context, request, response) => { diff --git a/x-pack/plugins/security_solution_serverless/common/pli/pli_config.ts b/x-pack/plugins/security_solution_serverless/common/pli/pli_config.ts index 62acff6857a8e..3dcb800dc7a74 100644 --- a/x-pack/plugins/security_solution_serverless/common/pli/pli_config.ts +++ b/x-pack/plugins/security_solution_serverless/common/pli/pli_config.ts @@ -22,6 +22,7 @@ export const PLI_APP_FEATURES: PliAppFeatures = { AppFeatureKey.investigationGuide, AppFeatureKey.threatIntelligence, AppFeatureKey.casesConnectors, + AppFeatureKey.externalRuleActions, ], }, endpoint: { diff --git a/x-pack/plugins/security_solution_serverless/kibana.jsonc b/x-pack/plugins/security_solution_serverless/kibana.jsonc index 3756c1114c009..975aaebe45af8 100644 --- a/x-pack/plugins/security_solution_serverless/kibana.jsonc +++ b/x-pack/plugins/security_solution_serverless/kibana.jsonc @@ -19,7 +19,8 @@ "serverless", "taskManager", "cloud", - "fleet" + "fleet", + "actions" ], "optionalPlugins": [ "securitySolutionEss" diff --git a/x-pack/plugins/security_solution_serverless/server/plugin.ts b/x-pack/plugins/security_solution_serverless/server/plugin.ts index fc77d2829d9f4..99f9fbf4a1e7b 100644 --- a/x-pack/plugins/security_solution_serverless/server/plugin.ts +++ b/x-pack/plugins/security_solution_serverless/server/plugin.ts @@ -32,6 +32,7 @@ import { endpointMeteringService, setEndpointPackagePolicyServerlessFlag, } from './endpoint/services'; +import { enableRuleActions } from './rules/enable_rule_actions'; export class SecuritySolutionServerlessPlugin implements @@ -54,6 +55,7 @@ export class SecuritySolutionServerlessPlugin public setup(coreSetup: CoreSetup, pluginsSetup: SecuritySolutionServerlessPluginSetupDeps) { this.config = createConfig(this.initializerContext, pluginsSetup.securitySolution); + const enabledAppFeatures = getProductAppFeatures(this.config.productTypes); // securitySolutionEss plugin should always be disabled when securitySolutionServerless is enabled. // This check is an additional layer of security to prevent double registrations when @@ -63,12 +65,14 @@ export class SecuritySolutionServerlessPlugin const productTypesStr = JSON.stringify(this.config.productTypes, null, 2); this.logger.info(`Security Solution running with product types:\n${productTypesStr}`); const appFeaturesConfigurator = getProductAppFeaturesConfigurator( - getProductAppFeatures(this.config.productTypes), + enabledAppFeatures, this.config ); pluginsSetup.securitySolution.setAppFeaturesConfigurator(appFeaturesConfigurator); } + enableRuleActions({ actions: pluginsSetup.actions, appFeatureKeys: enabledAppFeatures }); + this.cloudSecurityUsageReportingTask = new SecurityUsageReportingTask({ core: coreSetup, logFactory: this.initializerContext.logger, diff --git a/x-pack/plugins/security_solution_serverless/server/rules/enable_rule_actions.ts b/x-pack/plugins/security_solution_serverless/server/rules/enable_rule_actions.ts new file mode 100644 index 0000000000000..45e851540b286 --- /dev/null +++ b/x-pack/plugins/security_solution_serverless/server/rules/enable_rule_actions.ts @@ -0,0 +1,40 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ +import { AppFeatureSecurityKey } from '@kbn/security-solution-features/keys'; +import { + IndexConnectorTypeId, + SlackWebhookConnectorTypeId, + EmailConnectorTypeId, +} from '@kbn/stack-connectors-plugin/server/connector_types'; +import { EnabledActionTypes } from '@kbn/actions-plugin/server/config'; +import type { AppFeatureKeys } from '@kbn/security-solution-features/src/types'; + +import type { PluginSetupContract as ActionsPluginSetupContract } from '@kbn/actions-plugin/server'; + +const INTERNAL_RULE_ACTIONS = [ + IndexConnectorTypeId, + SlackWebhookConnectorTypeId, + EmailConnectorTypeId, +]; + +/** + * enable rule actions based on AppFeature Config + */ +export const enableRuleActions = ({ + actions, + appFeatureKeys, +}: { + actions: ActionsPluginSetupContract; + appFeatureKeys: AppFeatureKeys; +}) => { + if (appFeatureKeys.includes(AppFeatureSecurityKey.externalRuleActions)) { + // enables all rule actions + actions.setEnabledConnectorTypes([EnabledActionTypes.Any]); + } else { + actions.setEnabledConnectorTypes(INTERNAL_RULE_ACTIONS); + } +}; diff --git a/x-pack/plugins/security_solution_serverless/server/types.ts b/x-pack/plugins/security_solution_serverless/server/types.ts index 6f9c87dd92b18..44a86f534ebdf 100644 --- a/x-pack/plugins/security_solution_serverless/server/types.ts +++ b/x-pack/plugins/security_solution_serverless/server/types.ts @@ -18,6 +18,7 @@ import type { import type { CloudSetup } from '@kbn/cloud-plugin/server'; import type { SecuritySolutionEssPluginSetup } from '@kbn/security-solution-ess/server'; import type { FleetStartContract } from '@kbn/fleet-plugin/server'; +import type { PluginSetupContract as ActionsPluginSetupContract } from '@kbn/actions-plugin/server'; import type { ServerlessPluginSetup } from '@kbn/serverless/server'; import type { ProductTier } from '../common/product'; @@ -37,6 +38,7 @@ export interface SecuritySolutionServerlessPluginSetupDeps { features: PluginSetupContract; taskManager: TaskManagerSetupContract; cloud: CloudSetup; + actions: ActionsPluginSetupContract; } export interface SecuritySolutionServerlessPluginStartDeps { diff --git a/x-pack/plugins/security_solution_serverless/tsconfig.json b/x-pack/plugins/security_solution_serverless/tsconfig.json index 77481caa489fb..ef6c4009f345e 100644 --- a/x-pack/plugins/security_solution_serverless/tsconfig.json +++ b/x-pack/plugins/security_solution_serverless/tsconfig.json @@ -44,6 +44,8 @@ "@kbn/usage-collection-plugin", "@kbn/cloud-defend-plugin", "@kbn/core-logging-server-mocks", - "@kbn/shared-ux-chrome-navigation" + "@kbn/shared-ux-chrome-navigation", + "@kbn/stack-connectors-plugin", + "@kbn/actions-plugin" ] } diff --git a/x-pack/plugins/serverless_search/public/application/components/api_key/api_key.tsx b/x-pack/plugins/serverless_search/public/application/components/api_key/api_key.tsx index 164bdacd5f985..e3aecb517f947 100644 --- a/x-pack/plugins/serverless_search/public/application/components/api_key/api_key.tsx +++ b/x-pack/plugins/serverless_search/public/application/components/api_key/api_key.tsx @@ -82,7 +82,7 @@ export const ApiKeyPanel = ({ setClientApiKey }: { setClientApiKey: (value: stri

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

@@ -90,7 +90,7 @@ export const ApiKeyPanel = ({ setClientApiKey }: { setClientApiKey: (value: stri {i18n.translate('xpack.serverlessSearch.apiKey.panel.description', { defaultMessage: - 'An API key is a private, unique identifier for authentication and authorization.', + 'Use an existing key, or create a new one and copy it somewhere safe.', })} diff --git a/x-pack/plugins/serverless_search/public/application/components/languages/python.ts b/x-pack/plugins/serverless_search/public/application/components/languages/python.ts index ac4ab3d7792b4..dbed5f124e617 100644 --- a/x-pack/plugins/serverless_search/public/application/components/languages/python.ts +++ b/x-pack/plugins/serverless_search/public/application/components/languages/python.ts @@ -14,7 +14,7 @@ export const pythonDefinition: LanguageDefinition = { apiReference: docLinks.pythonApiReference, basicConfig: docLinks.pythonBasicConfig, buildSearchQuery: `client.search(index="books", q="snow")`, - configureClient: ({ url, apiKey }) => `from elasticsearch import Elasticsearch + configureClient: ({ url, apiKey }) => `from elasticsearch_serverless import Elasticsearch client = Elasticsearch( "${url}", @@ -45,7 +45,11 @@ client = Elasticsearch( ] client.bulk(operations=documents)`, - ingestDataIndex: ({ apiKey, url, indexName }) => `from elasticsearch import Elasticsearch + ingestDataIndex: ({ + apiKey, + url, + indexName, + }) => `from elasticsearch_serverless import Elasticsearch client = Elasticsearch( "${url}", @@ -59,10 +63,10 @@ documents = [ client.bulk(operations=documents) `, - installClient: `python -m pip install elasticsearch + installClient: `python -m pip install elasticsearch-serverless # If your application uses async/await in Python you can install with the async extra -# python -m pip install elasticsearch[async] +# python -m pip install elasticsearch_serverless[async] `, name: i18n.translate('xpack.serverlessSearch.languages.python', { defaultMessage: 'Python', diff --git a/x-pack/plugins/serverless_search/public/application/components/overview.test.tsx b/x-pack/plugins/serverless_search/public/application/components/overview.test.tsx index 28748db40cedb..3c59d064d72cc 100644 --- a/x-pack/plugins/serverless_search/public/application/components/overview.test.tsx +++ b/x-pack/plugins/serverless_search/public/application/components/overview.test.tsx @@ -51,7 +51,7 @@ describe('', () => { }); test('api key', () => { const { getByRole } = render(); - expect(getByRole('heading', { level: 2, name: 'Prepare an API Key' })).toBeDefined(); + expect(getByRole('heading', { level: 2, name: 'API Key' })).toBeDefined(); }); test('cloud id', () => { const { getByRole } = render(); diff --git a/x-pack/plugins/serverless_search/public/application/components/overview.tsx b/x-pack/plugins/serverless_search/public/application/components/overview.tsx index bff725c88034d..ed29ac4c14802 100644 --- a/x-pack/plugins/serverless_search/public/application/components/overview.tsx +++ b/x-pack/plugins/serverless_search/public/application/components/overview.tsx @@ -116,12 +116,12 @@ export const ElasticsearchOverview = () => { } links={[]} title={i18n.translate('xpack.serverlessSearch.apiKey.title', { - defaultMessage: 'Prepare an API Key', + defaultMessage: 'API Key', })} /> diff --git a/x-pack/plugins/serverless_search/public/layout/nav.tsx b/x-pack/plugins/serverless_search/public/layout/nav.tsx index b6f1cdbaa56ff..d35b8c4c2983c 100644 --- a/x-pack/plugins/serverless_search/public/layout/nav.tsx +++ b/x-pack/plugins/serverless_search/public/layout/nav.tsx @@ -42,10 +42,11 @@ const navigationTree: NavigationTreeDefinition = { title: i18n.translate('xpack.serverlessSearch.nav.devTools', { defaultMessage: 'Dev Tools', }), - isGroupTitle: true, + link: 'dev_tools:console', + getIsActive: ({ pathNameSerialized, prepend }) => { + return pathNameSerialized.startsWith(prepend('/app/dev_tools')); + }, }, - { link: 'dev_tools:console' }, - { link: 'dev_tools:searchprofiler' }, { id: 'explore', title: i18n.translate('xpack.serverlessSearch.nav.explore', { diff --git a/x-pack/plugins/synthetics/common/constants/synthetics/rest_api.ts b/x-pack/plugins/synthetics/common/constants/synthetics/rest_api.ts index 7be0a61dd6733..02df09faae126 100644 --- a/x-pack/plugins/synthetics/common/constants/synthetics/rest_api.ts +++ b/x-pack/plugins/synthetics/common/constants/synthetics/rest_api.ts @@ -16,7 +16,7 @@ export enum SYNTHETICS_API_URLS { RUN_ONCE_MONITOR = '/internal/synthetics/service/monitors/run_once', TRIGGER_MONITOR = '/internal/synthetics/service/monitors/trigger', SERVICE_ALLOWED = '/internal/synthetics/service/allowed', - SYNTHETICS_APIKEY = '/internal/synthetics/service/api_key', + SYNTHETICS_PROJECT_APIKEY = '/internal/synthetics/service/api_key', SYNTHETICS_HAS_INTEGRATION_MONITORS = '/internal/synthetics/fleet/has_integration_monitors', SYNTHETICS_OVERVIEW = '/internal/synthetics/overview', diff --git a/x-pack/plugins/synthetics/e2e/synthetics/journeys/index.ts b/x-pack/plugins/synthetics/e2e/synthetics/journeys/index.ts index a33e2ab7343c0..63f460ec56771 100644 --- a/x-pack/plugins/synthetics/e2e/synthetics/journeys/index.ts +++ b/x-pack/plugins/synthetics/e2e/synthetics/journeys/index.ts @@ -11,7 +11,7 @@ export * from './add_monitor.journey'; export * from './monitor_selector.journey'; export * from './management_list.journey'; export * from './overview_sorting.journey'; -export * from './overview_scrolling.journey'; +// export * from './overview_scrolling.journey'; // export * from './overview_search.journey'; export * from './private_locations.journey'; export * from './alerting_default.journey'; diff --git a/x-pack/plugins/synthetics/e2e/synthetics/journeys/project_api_keys.journey.ts b/x-pack/plugins/synthetics/e2e/synthetics/journeys/project_api_keys.journey.ts index aa003949ed3dd..0605f9a51a92a 100644 --- a/x-pack/plugins/synthetics/e2e/synthetics/journeys/project_api_keys.journey.ts +++ b/x-pack/plugins/synthetics/e2e/synthetics/journeys/project_api_keys.journey.ts @@ -20,7 +20,7 @@ journey('ProjectAPIKeys', async ({ page }) => { page.on('request', (evt) => { if ( evt.resourceType() === 'fetch' && - evt.url().includes(SYNTHETICS_API_URLS.SYNTHETICS_APIKEY) + evt.url().includes(SYNTHETICS_API_URLS.SYNTHETICS_PROJECT_APIKEY) ) { evt .response() diff --git a/x-pack/plugins/synthetics/public/apps/synthetics/components/settings/project_api_keys/project_api_keys.tsx b/x-pack/plugins/synthetics/public/apps/synthetics/components/settings/project_api_keys/project_api_keys.tsx index 2a772283c3aff..e03ce1879199e 100644 --- a/x-pack/plugins/synthetics/public/apps/synthetics/components/settings/project_api_keys/project_api_keys.tsx +++ b/x-pack/plugins/synthetics/public/apps/synthetics/components/settings/project_api_keys/project_api_keys.tsx @@ -6,9 +6,10 @@ */ import React, { useEffect, useState } from 'react'; import { useKibana } from '@kbn/kibana-react-plugin/public'; -import { EuiText, EuiLink, EuiEmptyPrompt } from '@elastic/eui'; +import { EuiText, EuiLink, EuiEmptyPrompt, EuiSwitch, EuiSpacer } from '@elastic/eui'; import { i18n } from '@kbn/i18n'; import { useFetcher } from '@kbn/observability-shared-plugin/public'; +import { IHttpFetchError, ResponseErrorBody } from '@kbn/core-http-browser'; import { HelpCommands } from './help_commands'; import { LoadingState } from '../../monitors_page/overview/overview/monitor_detail_flyout'; import { fetchProjectAPIKey } from '../../../state/monitor_management/api'; @@ -26,22 +27,41 @@ export const ProjectAPIKeys = () => { } = useEnablement(); const [apiKey, setApiKey] = useState(undefined); const [loadAPIKey, setLoadAPIKey] = useState(false); + const [accessToElasticManagedLocations, setAccessToElasticManagedLocations] = useState(true); const kServices = useKibana().services; const canSaveIntegrations: boolean = !!kServices?.fleet?.authz.integrations.writeIntegrationPolicies; - const { data, loading } = useFetcher(async () => { + const canUsePublicLocations = + useKibana().services?.application?.capabilities.uptime.elasticManagedLocationsEnabled ?? true; + + const { data, loading, error } = useFetcher(async () => { if (loadAPIKey) { - return fetchProjectAPIKey(); + return fetchProjectAPIKey(accessToElasticManagedLocations && Boolean(canUsePublicLocations)); } return null; - }, [loadAPIKey]); + }, [loadAPIKey, canUsePublicLocations]); useEffect(() => { - setApiKey(data?.apiKey.encoded); + if (data?.apiKey) { + setApiKey(data?.apiKey.encoded); + } + setLoadAPIKey(false); }, [data]); + useEffect(() => { + if (error) { + const requestError = error as IHttpFetchError; + kServices?.notifications?.toasts.addError(error, { + title: i18n.translate('xpack.synthetics.createApiKey.error', { + defaultMessage: 'Error', + }), + toastMessage: requestError?.body?.message, + }); + } + }, [error, kServices?.notifications?.toasts]); + const canSave: boolean = !!useKibana().services?.application?.capabilities.uptime.save; if (enablementLoading) { @@ -68,6 +88,17 @@ export const ProjectAPIKeys = () => { {LEARN_MORE_LABEL} + + { + setAccessToElasticManagedLocations(!accessToElasticManagedLocations); + }} + disabled={!canUsePublicLocations} + /> ) : ( <> diff --git a/x-pack/plugins/synthetics/public/apps/synthetics/state/monitor_management/api.ts b/x-pack/plugins/synthetics/public/apps/synthetics/state/monitor_management/api.ts index e67e0b4905a00..251714d8b0642 100644 --- a/x-pack/plugins/synthetics/public/apps/synthetics/state/monitor_management/api.ts +++ b/x-pack/plugins/synthetics/public/apps/synthetics/state/monitor_management/api.ts @@ -6,6 +6,7 @@ */ import { PackagePolicy } from '@kbn/fleet-plugin/common'; +import type { ProjectAPIKeyResponse } from '../../../../../server/routes/monitor_cruds/get_api_key'; import { apiService } from '../../../../utils/api_service'; import { EncryptedSyntheticsMonitor, @@ -61,10 +62,12 @@ export const getDecryptedMonitorAPI = async ({ id }: { id: string }): Promise => { - return await apiService.get(SYNTHETICS_API_URLS.SYNTHETICS_APIKEY); +export const fetchProjectAPIKey = async ( + accessToElasticManagedLocations: boolean +): Promise => { + return await apiService.get(SYNTHETICS_API_URLS.SYNTHETICS_PROJECT_APIKEY, { + accessToElasticManagedLocations, + }); }; export const deletePackagePolicy = async ( diff --git a/x-pack/plugins/synthetics/server/routes/monitor_cruds/add_monitor_project.ts b/x-pack/plugins/synthetics/server/routes/monitor_cruds/add_monitor_project.ts index 0fb8cba181933..e3ca890d1712e 100644 --- a/x-pack/plugins/synthetics/server/routes/monitor_cruds/add_monitor_project.ts +++ b/x-pack/plugins/synthetics/server/routes/monitor_cruds/add_monitor_project.ts @@ -7,7 +7,7 @@ import { schema } from '@kbn/config-schema'; import { i18n } from '@kbn/i18n'; import { DEFAULT_SPACE_ID } from '@kbn/spaces-plugin/common'; -import { SyntheticsRestApiRouteFactory } from '../types'; +import { RouteContext, SyntheticsRestApiRouteFactory } from '../types'; import { ProjectMonitor } from '../../../common/runtime_types'; import { SYNTHETICS_API_URLS } from '../../../common/constants'; @@ -51,6 +51,12 @@ export const addSyntheticsProjectMonitorRoute: SyntheticsRestApiRouteFactory = ( id: DEFAULT_SPACE_ID, }; + const permissionError = await validatePermissions(routeContext, monitors); + + if (permissionError) { + return response.forbidden({ body: { message: permissionError } }); + } + const encryptedSavedObjectsClient = server.encryptedSavedObjects.getClient(); const pushMonitorFormatter = new ProjectMonitorFormatter({ @@ -84,3 +90,30 @@ export const REQUEST_TOO_LARGE = i18n.translate('xpack.synthetics.server.project defaultMessage: 'Delete request payload is too large. Please send a max of 250 monitors to delete per request', }); + +export const validatePermissions = async ( + { server, response, request }: RouteContext, + projectMonitors: ProjectMonitor[] +) => { + const hasPublicLocations = projectMonitors.some(({ locations }) => (locations ?? []).length > 0); + if (!hasPublicLocations) { + return; + } + + const elasticManagedLocationsEnabled = + Boolean( + (await server.coreStart?.capabilities.resolveCapabilities(request)).uptime + .elasticManagedLocationsEnabled + ) ?? true; + if (!elasticManagedLocationsEnabled) { + return ELASTIC_MANAGED_LOCATIONS_DISABLED; + } +}; + +export const ELASTIC_MANAGED_LOCATIONS_DISABLED = i18n.translate( + 'xpack.synthetics.noAccess.publicLocations', + { + defaultMessage: + "You don't have permission to use Elastic managed global locations. Please contact your Kibana administrator.", + } +); diff --git a/x-pack/plugins/synthetics/server/routes/monitor_cruds/edit_monitor.ts b/x-pack/plugins/synthetics/server/routes/monitor_cruds/edit_monitor.ts index 69960d458c684..c6ff9852b6777 100644 --- a/x-pack/plugins/synthetics/server/routes/monitor_cruds/edit_monitor.ts +++ b/x-pack/plugins/synthetics/server/routes/monitor_cruds/edit_monitor.ts @@ -8,6 +8,7 @@ import { schema } from '@kbn/config-schema'; import { SavedObjectsUpdateResponse, SavedObject } from '@kbn/core/server'; import { SavedObjectsErrorHelpers } from '@kbn/core/server'; import { DEFAULT_SPACE_ID } from '@kbn/spaces-plugin/common'; +import { ELASTIC_MANAGED_LOCATIONS_DISABLED } from './add_monitor_project'; import { getDecryptedMonitor } from '../../saved_objects/synthetics_monitor'; import { getPrivateLocations } from '../../synthetics_service/get_private_locations'; import { mergeSourceMonitor } from './helper'; @@ -254,6 +255,6 @@ export const validatePermissions = async ( .elasticManagedLocationsEnabled ) ?? true; if (!elasticManagedLocationsEnabled) { - return "You don't have permission to use public locations"; + return ELASTIC_MANAGED_LOCATIONS_DISABLED; } }; diff --git a/x-pack/plugins/synthetics/server/routes/monitor_cruds/get_api_key.ts b/x-pack/plugins/synthetics/server/routes/monitor_cruds/get_api_key.ts index 481bf6b1b542c..0dab70565aeea 100644 --- a/x-pack/plugins/synthetics/server/routes/monitor_cruds/get_api_key.ts +++ b/x-pack/plugins/synthetics/server/routes/monitor_cruds/get_api_key.ts @@ -4,19 +4,51 @@ * 2.0; you may not use this file except in compliance with the Elastic License * 2.0. */ +import { schema } from '@kbn/config-schema'; +import { SecurityCreateApiKeyResponse } from '@elastic/elasticsearch/lib/api/types'; +import { IKibanaResponse } from '@kbn/core-http-server'; +import { ELASTIC_MANAGED_LOCATIONS_DISABLED } from './add_monitor_project'; import { SyntheticsRestApiRouteFactory } from '../types'; -import { generateAPIKey } from '../../synthetics_service/get_api_key'; +import { generateProjectAPIKey } from '../../synthetics_service/get_api_key'; import { SYNTHETICS_API_URLS } from '../../../common/constants'; +export interface ProjectAPIKeyResponse { + apiKey: SecurityCreateApiKeyResponse | null; +} + export const getAPIKeySyntheticsRoute: SyntheticsRestApiRouteFactory = () => ({ method: 'GET', - path: SYNTHETICS_API_URLS.SYNTHETICS_APIKEY, - validate: {}, - handler: async ({ request, server }): Promise => { - const apiKey = await generateAPIKey({ + path: SYNTHETICS_API_URLS.SYNTHETICS_PROJECT_APIKEY, + validate: { + query: schema.object({ + accessToElasticManagedLocations: schema.maybe(schema.boolean()), + }), + }, + handler: async ({ + request, + server, + response, + }): Promise => { + const { accessToElasticManagedLocations } = request.query; + + if (accessToElasticManagedLocations) { + const elasticManagedLocationsEnabled = + Boolean( + (await server.coreStart?.capabilities.resolveCapabilities(request)).uptime + .elasticManagedLocationsEnabled + ) ?? true; + if (!elasticManagedLocationsEnabled) { + return response.customError({ + body: { message: ELASTIC_MANAGED_LOCATIONS_DISABLED }, + statusCode: 403, + }); + } + } + + const apiKey = await generateProjectAPIKey({ request, server, - projectAPIKey: true, + accessToElasticManagedLocations, }); return { apiKey }; diff --git a/x-pack/plugins/synthetics/server/synthetics_service/get_api_key.ts b/x-pack/plugins/synthetics/server/synthetics_service/get_api_key.ts index b4b424f018267..ec62eb2c80555 100644 --- a/x-pack/plugins/synthetics/server/synthetics_service/get_api_key.ts +++ b/x-pack/plugins/synthetics/server/synthetics_service/get_api_key.ts @@ -6,6 +6,7 @@ */ import type { SecurityClusterPrivilege, + SecurityCreateApiKeyResponse, SecurityIndexPrivilege, } from '@elastic/elasticsearch/lib/api/types'; import { KibanaRequest, SavedObjectsClientContract } from '@kbn/core/server'; @@ -79,11 +80,9 @@ export const getAPIKeyForSyntheticsService = async ({ export const generateAPIKey = async ({ server, request, - projectAPIKey = false, }: { server: SyntheticsServerSetup; request: KibanaRequest; - projectAPIKey?: boolean; }) => { const { security } = server; const isApiKeysEnabled = await security.authc.apiKeys?.areAPIKeysEnabled(); @@ -92,31 +91,6 @@ export const generateAPIKey = async ({ throw new Error('Please enable API keys in kibana to use synthetics service.'); } - if (projectAPIKey) { - /* Exposed to the user. Must create directly with the user */ - return security.authc.apiKeys?.create(request, { - name: 'synthetics-api-key (required for project monitors)', - kibana_role_descriptors: { - uptime_save: { - elasticsearch: {}, - kibana: [ - { - base: [], - spaces: [ALL_SPACES_ID], - feature: { - uptime: ['all'], - }, - }, - ], - }, - }, - metadata: { - description: - 'Created for the Synthetics Agent to be able to communicate with Kibana for generating monitors for projects', - }, - }); - } - const { canEnable } = await hasEnablePermissions(server); if (!canEnable) { throw new SyntheticsForbiddenError(); @@ -135,6 +109,46 @@ export const generateAPIKey = async ({ }); }; +export const generateProjectAPIKey = async ({ + server, + request, + accessToElasticManagedLocations = true, +}: { + server: SyntheticsServerSetup; + request: KibanaRequest; + accessToElasticManagedLocations?: boolean; +}): Promise => { + const { security } = server; + const isApiKeysEnabled = await security.authc.apiKeys?.areAPIKeysEnabled(); + + if (!isApiKeysEnabled) { + throw new Error('Please enable API keys in kibana to use synthetics service.'); + } + + /* Exposed to the user. Must create directly with the user */ + return security.authc.apiKeys?.create(request, { + name: 'synthetics-api-key (required for project monitors)', + kibana_role_descriptors: { + uptime_save: { + elasticsearch: {}, + kibana: [ + { + base: [], + spaces: [ALL_SPACES_ID], + feature: { + uptime: [accessToElasticManagedLocations ? 'all' : 'minimal_all'], + }, + }, + ], + }, + }, + metadata: { + description: + 'Created for the Synthetics Agent to be able to communicate with Kibana for generating monitors for projects', + }, + }); +}; + export const generateAndSaveServiceAPIKey = async ({ server, request, diff --git a/x-pack/plugins/telemetry_collection_xpack/schema/xpack_plugins.json b/x-pack/plugins/telemetry_collection_xpack/schema/xpack_plugins.json index 69002ce27c593..abc8827e31ef7 100644 --- a/x-pack/plugins/telemetry_collection_xpack/schema/xpack_plugins.json +++ b/x-pack/plugins/telemetry_collection_xpack/schema/xpack_plugins.json @@ -4230,10 +4230,16 @@ } } }, + "has_any_services_per_official_agent": { + "type": "boolean", + "_meta": { + "description": "Indicates whether any service is being monitored. This is determined by checking all officially supported agents within the last day" + } + }, "has_any_services": { "type": "boolean", "_meta": { - "description": "Indicates whether any service is being monitored. This is determined by checking all agents within the last day" + "description": "Indicates whether any service is being monitored within the last day." } }, "version": { diff --git a/x-pack/plugins/triggers_actions_ui/public/application/components/toast_with_circuit_breaker_content.tsx b/x-pack/plugins/triggers_actions_ui/public/application/components/toast_with_circuit_breaker_content.tsx new file mode 100644 index 0000000000000..76149e7eef70a --- /dev/null +++ b/x-pack/plugins/triggers_actions_ui/public/application/components/toast_with_circuit_breaker_content.tsx @@ -0,0 +1,50 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { i18n } from '@kbn/i18n'; +import React, { useState, useCallback } from 'react'; +import { EuiButton, EuiFlexGroup, EuiFlexItem, EuiSpacer, EuiText } from '@elastic/eui'; + +const seeFullErrorMessage = i18n.translate( + 'xpack.triggersActionsUI.components.toastWithCircuitBreaker.seeFullError', + { + defaultMessage: 'See full error', + } +); + +const hideFullErrorMessage = i18n.translate( + 'xpack.triggersActionsUI.components.toastWithCircuitBreaker.hideFullError', + { + defaultMessage: 'Hide full error', + } +); + +export const ToastWithCircuitBreakerContent: React.FC = ({ children }) => { + const [showDetails, setShowDetails] = useState(false); + + const onToggleShowDetails = useCallback(() => { + setShowDetails((prev) => !prev); + }, []); + + return ( + <> + {showDetails && ( + <> + {children} + + + )} + + + + {showDetails ? hideFullErrorMessage : seeFullErrorMessage} + + + + + ); +}; diff --git a/x-pack/plugins/triggers_actions_ui/public/application/sections/rule_details/components/rule_status_panel.test.tsx b/x-pack/plugins/triggers_actions_ui/public/application/sections/rule_details/components/rule_status_panel.test.tsx index de3a9baf6da8c..889f1269a3d2b 100644 --- a/x-pack/plugins/triggers_actions_ui/public/application/sections/rule_details/components/rule_status_panel.test.tsx +++ b/x-pack/plugins/triggers_actions_ui/public/application/sections/rule_details/components/rule_status_panel.test.tsx @@ -51,7 +51,7 @@ jest.mock('../../../../common/lib/kibana', () => ({ })); const mockAPIs = { - bulkEnableRules: jest.fn(), + bulkEnableRules: jest.fn().mockResolvedValue({ errors: [] }), bulkDisableRules: jest.fn(), snoozeRule: jest.fn(), unsnoozeRule: jest.fn(), @@ -170,7 +170,6 @@ describe('rule status panel', () => { it('should enable the rule when picking enable in the dropdown', async () => { const rule = mockRule({ enabled: false }); - const bulkEnableRules = jest.fn(); const wrapper = mountWithIntl( { healthColor="primary" statusMessage="Ok" requestRefresh={requestRefresh} - bulkEnableRules={bulkEnableRules} /> ); const actionsElem = wrapper @@ -199,7 +197,7 @@ describe('rule status panel', () => { await nextTick(); }); - expect(bulkEnableRules).toHaveBeenCalledTimes(1); + expect(mockAPIs.bulkEnableRules).toHaveBeenCalledTimes(1); }); it('if rule is already enabled should do nothing when picking enable in the dropdown', async () => { diff --git a/x-pack/plugins/triggers_actions_ui/public/application/sections/rule_details/components/rule_status_panel.tsx b/x-pack/plugins/triggers_actions_ui/public/application/sections/rule_details/components/rule_status_panel.tsx index 7167ad7f9b337..a7b87cc722530 100644 --- a/x-pack/plugins/triggers_actions_ui/public/application/sections/rule_details/components/rule_status_panel.tsx +++ b/x-pack/plugins/triggers_actions_ui/public/application/sections/rule_details/components/rule_status_panel.tsx @@ -126,12 +126,8 @@ export const RuleStatusPanel: React.FC = ({
{ - await bulkDisableRules({ ids: [rule.id] }); - }} - enableRule={async () => { - await bulkEnableRules({ ids: [rule.id] }); - }} + disableRule={() => bulkDisableRules({ ids: [rule.id] })} + enableRule={() => bulkEnableRules({ ids: [rule.id] })} snoozeRule={async () => {}} unsnoozeRule={async () => {}} rule={rule} diff --git a/x-pack/plugins/triggers_actions_ui/public/application/sections/rule_form/rule_add.tsx b/x-pack/plugins/triggers_actions_ui/public/application/sections/rule_form/rule_add.tsx index dede9c80d87c8..de2eb91b74c84 100644 --- a/x-pack/plugins/triggers_actions_ui/public/application/sections/rule_form/rule_add.tsx +++ b/x-pack/plugins/triggers_actions_ui/public/application/sections/rule_form/rule_add.tsx @@ -10,6 +10,8 @@ import { FormattedMessage } from '@kbn/i18n-react'; import { EuiTitle, EuiFlyoutHeader, EuiFlyout, EuiFlyoutBody, EuiPortal } from '@elastic/eui'; import { i18n } from '@kbn/i18n'; import { isEmpty } from 'lodash'; +import { toMountPoint } from '@kbn/kibana-react-plugin/public'; +import { parseRuleCircuitBreakerErrorMessage } from '@kbn/alerting-plugin/common'; import { Rule, RuleTypeParams, @@ -38,6 +40,14 @@ import { getRuleWithInvalidatedFields } from '../../lib/value_validators'; import { DEFAULT_RULE_INTERVAL } from '../../constants'; import { triggersActionsUiConfig } from '../../../common/lib/config_api'; import { getInitialInterval } from './get_initial_interval'; +import { ToastWithCircuitBreakerContent } from '../../components/toast_with_circuit_breaker_content'; + +const defaultCreateRuleErrorMessage = i18n.translate( + 'xpack.triggersActionsUI.sections.ruleAdd.saveErrorNotificationText', + { + defaultMessage: 'Cannot create rule.', + } +); const RuleAdd = ({ consumer, @@ -238,12 +248,17 @@ const RuleAdd = ({ ); return newRule; } catch (errorRes) { - toasts.addDanger( - errorRes.body?.message ?? - i18n.translate('xpack.triggersActionsUI.sections.ruleAdd.saveErrorNotificationText', { - defaultMessage: 'Cannot create rule.', - }) + const message = parseRuleCircuitBreakerErrorMessage( + errorRes.body?.message || defaultCreateRuleErrorMessage ); + toasts.addDanger({ + title: message.summary, + ...(message.details && { + text: toMountPoint( + {message.details} + ), + }), + }); } } diff --git a/x-pack/plugins/triggers_actions_ui/public/application/sections/rule_form/rule_edit.test.tsx b/x-pack/plugins/triggers_actions_ui/public/application/sections/rule_form/rule_edit.test.tsx index 50f8049fc4299..7e937d17f8684 100644 --- a/x-pack/plugins/triggers_actions_ui/public/application/sections/rule_form/rule_edit.test.tsx +++ b/x-pack/plugins/triggers_actions_ui/public/application/sections/rule_form/rule_edit.test.tsx @@ -219,9 +219,9 @@ describe('rule_edit', () => { await act(async () => { wrapper.find('[data-test-subj="saveEditedRuleButton"]').last().simulate('click'); }); - expect(useKibanaMock().services.notifications.toasts.addDanger).toHaveBeenCalledWith( - 'Fail message' - ); + expect(useKibanaMock().services.notifications.toasts.addDanger).toHaveBeenCalledWith({ + title: 'Fail message', + }); }); it('should pass in the config into `getRuleErrors`', async () => { diff --git a/x-pack/plugins/triggers_actions_ui/public/application/sections/rule_form/rule_edit.tsx b/x-pack/plugins/triggers_actions_ui/public/application/sections/rule_form/rule_edit.tsx index b83d2f068e592..3f1c050fb7e25 100644 --- a/x-pack/plugins/triggers_actions_ui/public/application/sections/rule_form/rule_edit.tsx +++ b/x-pack/plugins/triggers_actions_ui/public/application/sections/rule_form/rule_edit.tsx @@ -26,6 +26,8 @@ import { } from '@elastic/eui'; import { cloneDeep, omit } from 'lodash'; import { i18n } from '@kbn/i18n'; +import { toMountPoint } from '@kbn/kibana-react-plugin/public'; +import { parseRuleCircuitBreakerErrorMessage } from '@kbn/alerting-plugin/common'; import { Rule, RuleFlyoutCloseReason, @@ -47,6 +49,14 @@ import { ConfirmRuleClose } from './confirm_rule_close'; import { hasRuleChanged } from './has_rule_changed'; import { getRuleWithInvalidatedFields } from '../../lib/value_validators'; import { triggersActionsUiConfig } from '../../../common/lib/config_api'; +import { ToastWithCircuitBreakerContent } from '../../components/toast_with_circuit_breaker_content'; + +const defaultUpdateRuleErrorMessage = i18n.translate( + 'xpack.triggersActionsUI.sections.ruleEdit.saveErrorNotificationText', + { + defaultMessage: 'Cannot update rule.', + } +); const cloneAndMigrateRule = (initialRule: Rule) => { const clonedRule = cloneDeep(omit(initialRule, 'notifyWhen', 'throttle')); @@ -181,12 +191,17 @@ export const RuleEdit = ({ ); } } catch (errorRes) { - toasts.addDanger( - errorRes.body?.message ?? - i18n.translate('xpack.triggersActionsUI.sections.ruleEdit.saveErrorNotificationText', { - defaultMessage: 'Cannot update rule.', - }) + const message = parseRuleCircuitBreakerErrorMessage( + errorRes.body?.message || defaultUpdateRuleErrorMessage ); + toasts.addDanger({ + title: message.summary, + ...(message.details && { + text: toMountPoint( + {message.details} + ), + }), + }); } setIsSaving(false); } diff --git a/x-pack/plugins/triggers_actions_ui/public/application/sections/rules_list/components/rule_snooze/scheduler.tsx b/x-pack/plugins/triggers_actions_ui/public/application/sections/rules_list/components/rule_snooze/scheduler.tsx index 488140660f4ea..97c8065c18f21 100644 --- a/x-pack/plugins/triggers_actions_ui/public/application/sections/rules_list/components/rule_snooze/scheduler.tsx +++ b/x-pack/plugins/triggers_actions_ui/public/application/sections/rules_list/components/rule_snooze/scheduler.tsx @@ -121,7 +121,15 @@ const RuleSnoozeSchedulerPanel: React.FunctionComponent = ({ const minDate = useMemo( // If the initial schedule is earlier than now, set minDate to it // Set minDate to now if the initial schedule is in the future - () => moment.min(moment(), moment(initialSchedule?.rRule.dtstart ?? undefined)), + () => + moment + .min(moment(), moment(initialSchedule?.rRule.dtstart ?? undefined)) + // Allow the time on minDate to be earlier than the current time + // This is useful especially when the user is trying to create a recurring schedule + // that starts today, and should start at a time earlier than the current time on future + // occurrences + .hour(0) + .minute(0), [initialSchedule] ); diff --git a/x-pack/plugins/triggers_actions_ui/public/application/sections/rules_list/components/rule_status_dropdown.test.tsx b/x-pack/plugins/triggers_actions_ui/public/application/sections/rules_list/components/rule_status_dropdown.test.tsx index 56ca543431185..8bfc131639a30 100644 --- a/x-pack/plugins/triggers_actions_ui/public/application/sections/rules_list/components/rule_status_dropdown.test.tsx +++ b/x-pack/plugins/triggers_actions_ui/public/application/sections/rules_list/components/rule_status_dropdown.test.tsx @@ -12,6 +12,19 @@ import { RuleStatusDropdown, ComponentOpts } from './rule_status_dropdown'; const NOW_STRING = '2020-03-01T00:00:00.000Z'; const SNOOZE_UNTIL = new Date('2020-03-04T00:00:00.000Z'); +jest.mock('../../../../common/lib/kibana', () => ({ + useKibana: () => ({ + services: { + notifications: { + toasts: { + addSuccess: jest.fn(), + addDanger: jest.fn(), + }, + }, + }, + }), +})); + describe('RuleStatusDropdown', () => { const enableRule = jest.fn(); const disableRule = jest.fn(); diff --git a/x-pack/plugins/triggers_actions_ui/public/application/sections/rules_list/components/rule_status_dropdown.tsx b/x-pack/plugins/triggers_actions_ui/public/application/sections/rules_list/components/rule_status_dropdown.tsx index b5db4dc6ccabd..145fda4e4addd 100644 --- a/x-pack/plugins/triggers_actions_ui/public/application/sections/rules_list/components/rule_status_dropdown.tsx +++ b/x-pack/plugins/triggers_actions_ui/public/application/sections/rules_list/components/rule_status_dropdown.tsx @@ -9,6 +9,8 @@ import React, { useState, useEffect, useCallback } from 'react'; import moment from 'moment'; import { i18n } from '@kbn/i18n'; import type { RuleSnooze } from '@kbn/alerting-plugin/common'; +import { toMountPoint } from '@kbn/kibana-react-plugin/public'; +import { parseRuleCircuitBreakerErrorMessage } from '@kbn/alerting-plugin/common'; import { EuiLoadingSpinner, EuiPopover, @@ -20,9 +22,11 @@ import { EuiText, EuiToolTip, } from '@elastic/eui'; +import { useKibana } from '../../../../common/lib/kibana'; import { SnoozePanel } from './rule_snooze'; import { isRuleSnoozed } from '../../../lib'; -import { Rule, SnoozeSchedule } from '../../../../types'; +import { Rule, SnoozeSchedule, BulkOperationResponse } from '../../../../types'; +import { ToastWithCircuitBreakerContent } from '../../../components/toast_with_circuit_breaker_content'; export type SnoozeUnit = 'm' | 'h' | 'd' | 'w' | 'M'; const SNOOZE_END_TIME_FORMAT = 'LL @ LT'; @@ -35,8 +39,8 @@ type DropdownRuleRecord = Pick< export interface ComponentOpts { rule: DropdownRuleRecord; onRuleChanged: () => void; - enableRule: () => Promise; - disableRule: () => Promise; + enableRule: () => Promise; + disableRule: () => Promise; snoozeRule: (snoozeSchedule: SnoozeSchedule) => Promise; unsnoozeRule: (scheduleIds?: string[]) => Promise; isEditable: boolean; @@ -58,6 +62,10 @@ export const RuleStatusDropdown: React.FunctionComponent = ({ const [isEnabled, setIsEnabled] = useState(rule.enabled); const [isSnoozed, setIsSnoozed] = useState(!hideSnoozeOption && isRuleSnoozed(rule)); + const { + notifications: { toasts }, + } = useKibana().services; + useEffect(() => { setIsEnabled(rule.enabled); }, [rule.enabled]); @@ -70,6 +78,25 @@ export const RuleStatusDropdown: React.FunctionComponent = ({ const onClickBadge = useCallback(() => setIsPopoverOpen((isOpen) => !isOpen), [setIsPopoverOpen]); const onClosePopover = useCallback(() => setIsPopoverOpen(false), [setIsPopoverOpen]); + const enableRuleInternal = useCallback(async () => { + const { errors } = await enableRule(); + + if (!errors.length) { + return; + } + + const message = parseRuleCircuitBreakerErrorMessage(errors[0].message); + toasts.addDanger({ + title: message.summary, + ...(message.details && { + text: toMountPoint( + {message.details} + ), + }), + }); + throw new Error(); + }, [enableRule, toasts]); + const onChangeEnabledStatus = useCallback( async (enable: boolean) => { if (rule.enabled === enable) { @@ -78,7 +105,7 @@ export const RuleStatusDropdown: React.FunctionComponent = ({ setIsUpdating(true); try { if (enable) { - await enableRule(); + await enableRuleInternal(); } else { await disableRule(); } @@ -88,7 +115,7 @@ export const RuleStatusDropdown: React.FunctionComponent = ({ setIsUpdating(false); } }, - [rule.enabled, isEnabled, onRuleChanged, enableRule, disableRule] + [rule.enabled, isEnabled, onRuleChanged, enableRuleInternal, disableRule] ); const onSnoozeRule = useCallback( diff --git a/x-pack/plugins/triggers_actions_ui/public/application/sections/rules_list/components/rules_list.tsx b/x-pack/plugins/triggers_actions_ui/public/application/sections/rules_list/components/rules_list.tsx index 9949b51554492..1c40db852e209 100644 --- a/x-pack/plugins/triggers_actions_ui/public/application/sections/rules_list/components/rules_list.tsx +++ b/x-pack/plugins/triggers_actions_ui/public/application/sections/rules_list/components/rules_list.tsx @@ -11,6 +11,8 @@ import { i18n } from '@kbn/i18n'; import { capitalize, isEmpty, isEqual, sortBy } from 'lodash'; import { KueryNode } from '@kbn/es-query'; import { FormattedMessage } from '@kbn/i18n-react'; +import { toMountPoint } from '@kbn/kibana-react-plugin/public'; +import { parseRuleCircuitBreakerErrorMessage } from '@kbn/alerting-plugin/common'; import React, { lazy, useEffect, @@ -90,6 +92,7 @@ import { useLoadRuleAggregationsQuery } from '../../../hooks/use_load_rule_aggre import { useLoadRuleTypesQuery } from '../../../hooks/use_load_rule_types_query'; import { useLoadRulesQuery } from '../../../hooks/use_load_rules_query'; import { useLoadConfigQuery } from '../../../hooks/use_load_config_query'; +import { ToastWithCircuitBreakerContent } from '../../../components/toast_with_circuit_breaker_content'; import { getConfirmDeletionButtonText, @@ -550,15 +553,15 @@ export const RulesList = ({ }; const onDisableRule = useCallback( - async (rule: RuleTableItem) => { - await bulkDisableRules({ http, ids: [rule.id] }); + (rule: RuleTableItem) => { + return bulkDisableRules({ http, ids: [rule.id] }); }, [bulkDisableRules] ); const onEnableRule = useCallback( - async (rule: RuleTableItem) => { - await bulkEnableRules({ http, ids: [rule.id] }); + (rule: RuleTableItem) => { + return bulkEnableRules({ http, ids: [rule.id] }); }, [bulkEnableRules] ); @@ -675,7 +678,23 @@ export const RulesList = ({ : await bulkEnableRules({ http, ids: selectedIds }); setIsEnablingRules(false); - showToast({ action: 'ENABLE', errors, total }); + + const circuitBreakerError = errors.find( + (error) => !!parseRuleCircuitBreakerErrorMessage(error.message).details + ); + + if (circuitBreakerError) { + const parsedError = parseRuleCircuitBreakerErrorMessage(circuitBreakerError.message); + toasts.addDanger({ + title: parsedError.summary, + text: toMountPoint( + {parsedError.details} + ), + }); + } else { + showToast({ action: 'ENABLE', errors, total }); + } + await refreshRules(); onClearSelection(); }; diff --git a/x-pack/plugins/triggers_actions_ui/public/application/sections/rules_list/components/rules_list_table.tsx b/x-pack/plugins/triggers_actions_ui/public/application/sections/rules_list/components/rules_list_table.tsx index 3d929cf7bb5b8..458e14b0b0117 100644 --- a/x-pack/plugins/triggers_actions_ui/public/application/sections/rules_list/components/rules_list_table.tsx +++ b/x-pack/plugins/triggers_actions_ui/public/application/sections/rules_list/components/rules_list_table.tsx @@ -50,6 +50,7 @@ import { TriggersActionsUiConfig, RuleTypeRegistryContract, SnoozeSchedule, + BulkOperationResponse, } from '../../../../types'; import { DEFAULT_NUMBER_FORMAT } from '../../../constants'; import { shouldShowDurationWarning } from '../../../lib/execution_duration_utils'; @@ -125,8 +126,8 @@ export interface RulesListTableProps { onTagClose?: (rule: RuleTableItem) => void; onPercentileOptionsChange?: (options: EuiSelectableOption[]) => void; onRuleChanged: () => Promise; - onEnableRule: (rule: RuleTableItem) => Promise; - onDisableRule: (rule: RuleTableItem) => Promise; + onEnableRule: (rule: RuleTableItem) => Promise; + onDisableRule: (rule: RuleTableItem) => Promise; onSnoozeRule: (rule: RuleTableItem, snoozeSchedule: SnoozeSchedule) => Promise; onUnsnoozeRule: (rule: RuleTableItem, scheduleIds?: string[]) => Promise; onSelectAll: () => void; @@ -193,8 +194,8 @@ export const RulesListTable = (props: RulesListTableProps) => { onManageLicenseClick = EMPTY_HANDLER, onPercentileOptionsChange = EMPTY_HANDLER, onRuleChanged, - onEnableRule = EMPTY_HANDLER, - onDisableRule = EMPTY_HANDLER, + onEnableRule, + onDisableRule, onSnoozeRule = EMPTY_HANDLER, onUnsnoozeRule = EMPTY_HANDLER, onSelectAll = EMPTY_HANDLER, diff --git a/x-pack/test/alerting_api_integration/security_and_spaces/group3/tests/alerting/schedule_circuit_breaker/bulk_edit_with_circuit_breaker.ts b/x-pack/test/alerting_api_integration/security_and_spaces/group3/tests/alerting/schedule_circuit_breaker/bulk_edit_with_circuit_breaker.ts index d878eb7404238..a6db48295a90b 100644 --- a/x-pack/test/alerting_api_integration/security_and_spaces/group3/tests/alerting/schedule_circuit_breaker/bulk_edit_with_circuit_breaker.ts +++ b/x-pack/test/alerting_api_integration/security_and_spaces/group3/tests/alerting/schedule_circuit_breaker/bulk_edit_with_circuit_breaker.ts @@ -62,7 +62,7 @@ export default function bulkEditWithCircuitBreakerTests({ getService }: FtrProvi expect(body.errors.length).eql(2); expect(body.errors[0].message).eql( - 'Failed to bulk edit rule - Run limit reached: The rule has 12 runs per minute; there are only 1 runs per minute available.' + 'Error validating circuit breaker - Rules cannot be bulk edited. The maximum number of runs per minute would be exceeded. - The rules have 12 runs per minute; there is only 1 run per minute available. Before you can modify these rules, you must disable other rules or change their check intervals so they run less frequently.' ); }); diff --git a/x-pack/test/alerting_api_integration/security_and_spaces/group3/tests/alerting/schedule_circuit_breaker/bulk_enable_with_circuit_breaker.ts b/x-pack/test/alerting_api_integration/security_and_spaces/group3/tests/alerting/schedule_circuit_breaker/bulk_enable_with_circuit_breaker.ts index d60409223b2b3..e35bdadfaee19 100644 --- a/x-pack/test/alerting_api_integration/security_and_spaces/group3/tests/alerting/schedule_circuit_breaker/bulk_enable_with_circuit_breaker.ts +++ b/x-pack/test/alerting_api_integration/security_and_spaces/group3/tests/alerting/schedule_circuit_breaker/bulk_enable_with_circuit_breaker.ts @@ -59,7 +59,7 @@ export default function bulkEnableWithCircuitBreakerTests({ getService }: FtrPro expect(body.errors.length).eql(2); expect(body.errors[0].message).eql( - 'Error validating enable rule data - Run limit reached: The rule has 9 runs per minute; there are only 4 runs per minute available.' + 'Error validating circuit breaker - Rules cannot be bulk enabled. The maximum number of runs per minute would be exceeded. - The rules have 9 runs per minute; there are only 4 runs per minute available. Before you can modify these rules, you must disable other rules or change their check intervals so they run less frequently.' ); }); }); diff --git a/x-pack/test/alerting_api_integration/security_and_spaces/group3/tests/alerting/schedule_circuit_breaker/create_with_circuit_breaker.ts b/x-pack/test/alerting_api_integration/security_and_spaces/group3/tests/alerting/schedule_circuit_breaker/create_with_circuit_breaker.ts index bf1a0792a0091..f1aea0fc9ce56 100644 --- a/x-pack/test/alerting_api_integration/security_and_spaces/group3/tests/alerting/schedule_circuit_breaker/create_with_circuit_breaker.ts +++ b/x-pack/test/alerting_api_integration/security_and_spaces/group3/tests/alerting/schedule_circuit_breaker/create_with_circuit_breaker.ts @@ -5,6 +5,7 @@ * 2.0. */ +import expect from '@kbn/expect'; import { FtrProviderContext } from '../../../../../common/ftr_provider_context'; import { getUrlPrefix, getTestRuleData, ObjectRemover } from '../../../../../common/lib'; @@ -26,11 +27,17 @@ export default function createWithCircuitBreakerTests({ getService }: FtrProvide .expect(200); objectRemover.add('space1', createdRule.id, 'rule', 'alerting'); - await supertest + const { + body: { message }, + } = await supertest .post(`${getUrlPrefix('space1')}/api/alerting/rule`) .set('kbn-xsrf', 'foo') .send(getTestRuleData({ schedule: { interval: '10s' } })) .expect(400); + + expect(message).eql( + `Error validating circuit breaker - Rule 'abc' cannot be created. The maximum number of runs per minute would be exceeded. - The rule has 6 runs per minute; there are only 4 runs per minute available. Before you can modify this rule, you must increase its check interval so that it runs less frequently. Alternatively, disable other rules or change their check intervals.` + ); }); it('should prevent rules from being created across spaces', async () => { @@ -41,11 +48,17 @@ export default function createWithCircuitBreakerTests({ getService }: FtrProvide .expect(200); objectRemover.add('space1', createdRule.id, 'rule', 'alerting'); - await supertest + const { + body: { message }, + } = await supertest .post(`${getUrlPrefix('space2')}/api/alerting/rule`) .set('kbn-xsrf', 'foo') .send(getTestRuleData({ schedule: { interval: '10s' } })) .expect(400); + + expect(message).eql( + `Error validating circuit breaker - Rule 'abc' cannot be created. The maximum number of runs per minute would be exceeded. - The rule has 6 runs per minute; there are only 4 runs per minute available. Before you can modify this rule, you must increase its check interval so that it runs less frequently. Alternatively, disable other rules or change their check intervals.` + ); }); it('should allow disabled rules to go over the circuit breaker', async () => { diff --git a/x-pack/test/alerting_api_integration/security_and_spaces/group3/tests/alerting/schedule_circuit_breaker/enable_with_circuit_breaker.ts b/x-pack/test/alerting_api_integration/security_and_spaces/group3/tests/alerting/schedule_circuit_breaker/enable_with_circuit_breaker.ts index 89a90952ed6a7..eb6691952e9b6 100644 --- a/x-pack/test/alerting_api_integration/security_and_spaces/group3/tests/alerting/schedule_circuit_breaker/enable_with_circuit_breaker.ts +++ b/x-pack/test/alerting_api_integration/security_and_spaces/group3/tests/alerting/schedule_circuit_breaker/enable_with_circuit_breaker.ts @@ -45,7 +45,7 @@ export default function enableWithCircuitBreakerTests({ getService }: FtrProvide .expect(400); expect(body.message).eql( - 'Error validating enable rule data - Run limit reached: The rule has 12 runs per minute; there are only 4 runs per minute available.' + `Error validating circuit breaker - Rule 'abc' cannot be enabled. The maximum number of runs per minute would be exceeded. - The rule has 12 runs per minute; there are only 4 runs per minute available. Before you can modify this rule, you must increase its check interval so that it runs less frequently. Alternatively, disable other rules or change their check intervals.` ); }); }); diff --git a/x-pack/test/alerting_api_integration/security_and_spaces/group3/tests/alerting/schedule_circuit_breaker/update_with_circuit_breaker.ts b/x-pack/test/alerting_api_integration/security_and_spaces/group3/tests/alerting/schedule_circuit_breaker/update_with_circuit_breaker.ts index 2b1b8e749def9..7c2413d5eeb23 100644 --- a/x-pack/test/alerting_api_integration/security_and_spaces/group3/tests/alerting/schedule_circuit_breaker/update_with_circuit_breaker.ts +++ b/x-pack/test/alerting_api_integration/security_and_spaces/group3/tests/alerting/schedule_circuit_breaker/update_with_circuit_breaker.ts @@ -53,7 +53,7 @@ export default function updateWithCircuitBreakerTests({ getService }: FtrProvide .expect(400); expect(body.message).eql( - 'Error validating update data - Run limit reached: The rule has 12 runs per minute; there are only 7 runs per minute available.' + `Error validating circuit breaker - Rule 'abc' cannot be updated. The maximum number of runs per minute would be exceeded. - The rule has 12 runs per minute; there are only 4 runs per minute available. Before you can modify this rule, you must increase its check interval so that it runs less frequently. Alternatively, disable other rules or change their check intervals.` ); }); diff --git a/x-pack/test/api_integration/apis/synthetics/add_monitor_project.ts b/x-pack/test/api_integration/apis/synthetics/add_monitor_project.ts index 8745be165a586..303706c930401 100644 --- a/x-pack/test/api_integration/apis/synthetics/add_monitor_project.ts +++ b/x-pack/test/api_integration/apis/synthetics/add_monitor_project.ts @@ -9,7 +9,10 @@ import expect from '@kbn/expect'; import { ConfigKey, ProjectMonitorsRequest } from '@kbn/synthetics-plugin/common/runtime_types'; import { SYNTHETICS_API_URLS } from '@kbn/synthetics-plugin/common/constants'; import { formatKibanaNamespace } from '@kbn/synthetics-plugin/common/formatters'; -import { REQUEST_TOO_LARGE } from '@kbn/synthetics-plugin/server/routes/monitor_cruds/add_monitor_project'; +import { + ELASTIC_MANAGED_LOCATIONS_DISABLED, + REQUEST_TOO_LARGE, +} from '@kbn/synthetics-plugin/server/routes/monitor_cruds/add_monitor_project'; import { PackagePolicy } from '@kbn/fleet-plugin/common'; import { PROFILE_VALUES_ENUM, @@ -132,6 +135,18 @@ export default function ({ getService }: FtrProviderContext) { .expect(404); }); + it('project monitors - returns forbidden if no access to public locations', async () => { + const project = `test-project-${uuidv4()}`; + + await monitorTestService.generateProjectAPIKey(false); + const response = await monitorTestService.addProjectMonitors( + project, + projectMonitors.monitors + ); + expect(response.status).to.eql(403); + expect(response.body.message).to.eql(ELASTIC_MANAGED_LOCATIONS_DISABLED); + }); + it('project monitors - handles browser monitors', async () => { const successfulMonitors = [projectMonitors.monitors[0]]; const project = `test-project-${uuidv4()}`; diff --git a/x-pack/test/api_integration/apis/synthetics/add_monitor_project_private_location.ts b/x-pack/test/api_integration/apis/synthetics/add_monitor_project_private_location.ts index 29b1d6878b2c8..29549684aa44e 100644 --- a/x-pack/test/api_integration/apis/synthetics/add_monitor_project_private_location.ts +++ b/x-pack/test/api_integration/apis/synthetics/add_monitor_project_private_location.ts @@ -73,7 +73,8 @@ export default function ({ getService }: FtrProviderContext) { }, ]; try { - const body = await monitorTestService.addProjectMonitors(project, testMonitors); + const { body, status } = await monitorTestService.addProjectMonitors(project, testMonitors); + expect(status).eql(200); expect(body.createdMonitors.length).eql(1); expect(body.failedMonitors[0].reason).eql( "Couldn't save or update monitor because of an invalid configuration." @@ -96,16 +97,28 @@ export default function ({ getService }: FtrProviderContext) { privateLocations: ['Test private location 0'], }; const testMonitors = [projectMonitors.monitors[0], secondMonitor]; - const body = await monitorTestService.addProjectMonitors(project, testMonitors); + const { body, status: status0 } = await monitorTestService.addProjectMonitors( + project, + testMonitors + ); + expect(status0).eql(200); + expect(body.createdMonitors.length).eql(2); - const editedBody = await monitorTestService.addProjectMonitors(project, testMonitors); + const { body: editedBody, status: editedStatus } = + await monitorTestService.addProjectMonitors(project, testMonitors); + expect(editedStatus).eql(200); + expect(editedBody.createdMonitors.length).eql(0); expect(editedBody.updatedMonitors.length).eql(2); testMonitors[1].name = '!@#$%^&*()_++[\\-\\]- wow name'; testMonitors[1].privateLocations = ['Test private location 8']; - const editedBodyError = await monitorTestService.addProjectMonitors(project, testMonitors); + const { body: editedBodyError, status } = await monitorTestService.addProjectMonitors( + project, + testMonitors + ); + expect(status).eql(200); expect(editedBodyError.createdMonitors.length).eql(0); expect(editedBodyError.updatedMonitors.length).eql(1); expect(editedBodyError.failedMonitors.length).eql(1); diff --git a/x-pack/test/api_integration/apis/synthetics/index.ts b/x-pack/test/api_integration/apis/synthetics/index.ts index b00ff699ca1b6..959014c0362cc 100644 --- a/x-pack/test/api_integration/apis/synthetics/index.ts +++ b/x-pack/test/api_integration/apis/synthetics/index.ts @@ -16,6 +16,7 @@ export default function ({ getService, loadTestFile }: FtrProviderContext) { await esDeleteAllIndices('synthetics*'); }); + loadTestFile(require.resolve('./synthetics_enablement')); loadTestFile(require.resolve('./get_filters')); loadTestFile(require.resolve('./enable_default_alerting')); loadTestFile(require.resolve('./get_monitor')); @@ -27,7 +28,6 @@ export default function ({ getService, loadTestFile }: FtrProviderContext) { loadTestFile(require.resolve('./edit_monitor')); loadTestFile(require.resolve('./delete_monitor')); loadTestFile(require.resolve('./delete_monitor_project')); - loadTestFile(require.resolve('./synthetics_enablement')); loadTestFile(require.resolve('./sync_global_params')); loadTestFile(require.resolve('./add_edit_params')); loadTestFile(require.resolve('./add_monitor_project_private_location')); diff --git a/x-pack/test/api_integration/apis/synthetics/services/synthetics_monitor_test_service.ts b/x-pack/test/api_integration/apis/synthetics/services/synthetics_monitor_test_service.ts index 637044df1fc69..ad88b1d1c2aa4 100644 --- a/x-pack/test/api_integration/apis/synthetics/services/synthetics_monitor_test_service.ts +++ b/x-pack/test/api_integration/apis/synthetics/services/synthetics_monitor_test_service.ts @@ -10,18 +10,41 @@ import { syntheticsMonitorType } from '@kbn/synthetics-plugin/common/types/saved import { EncryptedSyntheticsSavedMonitor } from '@kbn/synthetics-plugin/common/runtime_types'; import { MonitorInspectResponse } from '@kbn/synthetics-plugin/public/apps/synthetics/state/monitor_management/api'; import { v4 as uuidv4 } from 'uuid'; +import expect from '@kbn/expect'; +import { ProjectAPIKeyResponse } from '@kbn/synthetics-plugin/server/routes/monitor_cruds/get_api_key'; import { FtrProviderContext } from '../../../ftr_provider_context'; import { KibanaSupertestProvider } from '../../../../../../test/api_integration/services/supertest'; export class SyntheticsMonitorTestService { private supertest: ReturnType; private getService: FtrProviderContext['getService']; + private supertestWithoutAuth: ReturnType; + public apiKey: string | undefined = ''; constructor(getService: FtrProviderContext['getService']) { + this.supertest = getService('supertest'); this.supertest = getService('supertest'); this.getService = getService; + this.supertestWithoutAuth = getService('supertestWithoutAuth'); } + generateProjectAPIKey = async (accessToPublicLocations = true) => { + const res = await this.supertest + .get( + SYNTHETICS_API_URLS.SYNTHETICS_PROJECT_APIKEY + + '?accessToElasticManagedLocations=' + + accessToPublicLocations + ) + .set('kbn-xsrf', 'true') + .expect(200); + const result = res.body as ProjectAPIKeyResponse; + expect(result).to.have.property('apiKey'); + const apiKey = result.apiKey?.encoded; + expect(apiKey).to.not.be.empty(); + this.apiKey = apiKey; + return apiKey; + }; + async getMonitor(monitorId: string, decrypted: boolean = true, space?: string) { let url = SYNTHETICS_API_URLS.GET_SYNTHETICS_MONITOR.replace('{monitorId}', monitorId) + @@ -62,12 +85,22 @@ export class SyntheticsMonitorTestService { } async addProjectMonitors(project: string, monitors: any) { - const { body } = await this.supertest - .put(SYNTHETICS_API_URLS.SYNTHETICS_MONITORS_PROJECT_UPDATE.replace('{projectName}', project)) - .set('kbn-xsrf', 'true') - .send({ monitors }) - .expect(200); - return body; + if (this.apiKey) { + return this.supertestWithoutAuth + .put( + SYNTHETICS_API_URLS.SYNTHETICS_MONITORS_PROJECT_UPDATE.replace('{projectName}', project) + ) + .set('kbn-xsrf', 'true') + .set('authorization', `ApiKey ${this.apiKey}`) + .send({ monitors }); + } else { + return this.supertest + .put( + SYNTHETICS_API_URLS.SYNTHETICS_MONITORS_PROJECT_UPDATE.replace('{projectName}', project) + ) + .set('kbn-xsrf', 'true') + .send({ monitors }); + } } async deleteMonitorByJourney( diff --git a/x-pack/test/apm_api_integration/tests/time_range_metadata/generate_data.ts b/x-pack/test/apm_api_integration/tests/time_range_metadata/generate_data.ts deleted file mode 100644 index e1f8720a103b0..0000000000000 --- a/x-pack/test/apm_api_integration/tests/time_range_metadata/generate_data.ts +++ /dev/null @@ -1,76 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import { apm, timerange } from '@kbn/apm-synthtrace-client'; -import moment, { Moment } from 'moment'; -import { Transform, Readable } from 'stream'; -import { ApmSynthtraceEsClient } from '@kbn/apm-synthtrace'; - -export function getTransactionEvents(start: Moment, end: Moment) { - const serviceName = 'synth-go'; - const transactionName = 'GET /api/product/list'; - const GO_PROD_RATE = 75; - const GO_PROD_ERROR_RATE = 25; - - const serviceGoProdInstance = apm - .service({ name: serviceName, environment: 'production', agentName: 'go' }) - .instance('instance-a'); - - return [ - timerange(start, end) - .interval('1m') - .rate(GO_PROD_RATE) - .generator((timestamp) => - serviceGoProdInstance - .transaction({ transactionName }) - .timestamp(timestamp) - .duration(1000) - .success() - ), - - timerange(start, end) - .interval('1m') - .rate(GO_PROD_ERROR_RATE) - .generator((timestamp) => - serviceGoProdInstance - .transaction({ transactionName }) - .duration(1000) - .timestamp(timestamp) - .failure() - ), - ]; -} - -export function subtractDateDifference(start: Moment, end: Moment) { - const diff = moment(end).diff(moment(start)) + 1000; - const previousStart = moment(start).subtract(diff, 'milliseconds').format(); - const previousEnd = moment(end).subtract(diff, 'milliseconds').format(); - return { previousStart: moment(previousStart), previousEnd: moment(previousEnd) }; -} - -function deleteSummaryFieldTransform() { - return new Transform({ - objectMode: true, - transform(chunk: any, encoding, callback) { - delete chunk?.transaction?.duration?.summary; - callback(null, chunk); - }, - }); -} - -export function overwriteSynthPipelineWithSummaryFieldDeleteTransform({ - synthtraceEsClient, -}: { - synthtraceEsClient: ApmSynthtraceEsClient; -}) { - return (base: Readable) => { - const defaultPipeline = synthtraceEsClient.getDefaultPipeline()(base); - return (defaultPipeline as unknown as NodeJS.ReadableStream).pipe( - deleteSummaryFieldTransform() - ); - }; -} diff --git a/x-pack/test/apm_api_integration/tests/time_range_metadata/many_apm_server_versions.spec.ts b/x-pack/test/apm_api_integration/tests/time_range_metadata/many_apm_server_versions.spec.ts new file mode 100644 index 0000000000000..7f91aaf93d804 --- /dev/null +++ b/x-pack/test/apm_api_integration/tests/time_range_metadata/many_apm_server_versions.spec.ts @@ -0,0 +1,247 @@ +/* + * Copyright 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 { apm, timerange } from '@kbn/apm-synthtrace-client'; +import moment from 'moment'; +import { + addObserverVersionTransform, + ApmSynthtraceEsClient, + deleteSummaryFieldTransform, +} from '@kbn/apm-synthtrace'; +import { + TRANSACTION_DURATION_HISTOGRAM, + TRANSACTION_DURATION_SUMMARY, +} from '@kbn/apm-plugin/common/es_fields/apm'; +import { ApmDocumentType } from '@kbn/apm-plugin/common/document_type'; +import { RollupInterval } from '@kbn/apm-plugin/common/rollup'; +import { LatencyAggregationType } from '@kbn/apm-plugin/common/latency_aggregation_types'; +import { pipeline, Readable } from 'stream'; +import { FtrProviderContext } from '../../common/ftr_provider_context'; +import { ApmApiClient } from '../../common/config'; + +export default function ApiTest({ getService }: FtrProviderContext) { + const registry = getService('registry'); + const apmApiClient = getService('apmApiClient'); + const synthtrace = getService('synthtraceEsClient'); + const es = getService('es'); + + const baseTime = new Date('2023-10-01T00:00:00.000Z').getTime(); + const startLegacy = moment(baseTime).add(0, 'minutes'); + const start = moment(baseTime).add(5, 'minutes'); + const end = moment(baseTime).add(10, 'minutes'); + + registry.when( + 'Time range metadata when there are multiple APM Server versions', + { config: 'basic', archives: [] }, + () => { + describe('when ingesting traces from APM Server with different versions', () => { + before(async () => { + await generateTraceDataForService({ + serviceName: 'synth-java-legacy', + start: startLegacy, + end, + isLegacy: true, + synthtrace, + }); + + await generateTraceDataForService({ + serviceName: 'synth-java', + start, + end, + isLegacy: false, + synthtrace, + }); + }); + + after(() => { + return synthtrace.clean(); + }); + + it('ingests transaction metrics with transaction.duration.summary', async () => { + const res = await es.search({ + index: 'metrics-apm*', + body: { + query: { + bool: { + filter: [ + { exists: { field: TRANSACTION_DURATION_HISTOGRAM } }, + { exists: { field: TRANSACTION_DURATION_SUMMARY } }, + ], + }, + }, + }, + }); + + // @ts-expect-error + expect(res.hits.total.value).to.be(10); + }); + + it('ingests transaction metrics without transaction.duration.summary', async () => { + const res = await es.search({ + index: 'metrics-apm*', + body: { + query: { + bool: { + filter: [{ exists: { field: TRANSACTION_DURATION_HISTOGRAM } }], + must_not: [{ exists: { field: TRANSACTION_DURATION_SUMMARY } }], + }, + }, + }, + }); + + // @ts-expect-error + expect(res.hits.total.value).to.be(20); + }); + + it('has transaction.duration.summary field for every document type', async () => { + const response = await apmApiClient.readUser({ + endpoint: 'GET /internal/apm/time_range_metadata', + params: { + query: { + start: start.toISOString(), + end: end.toISOString(), + enableContinuousRollups: true, + enableServiceTransactionMetrics: true, + useSpanName: false, + kuery: '', + }, + }, + }); + + const allHasSummaryField = response.body.sources.every((source) => { + if (source.documentType === 'transactionEvent') { + return true; + } + + return source.hasDurationSummaryField; + }); + + expect(allHasSummaryField).to.eql(true); + }); + + it('does not have latency data for synth-java-legacy service', async () => { + const res = await getLatencyChartForService({ + serviceName: 'synth-java-legacy', + start, + end, + apmApiClient, + }); + + expect(res.body.currentPeriod.latencyTimeseries.map(({ y }) => y)).to.eql([ + null, + null, + null, + null, + null, + null, + ]); + }); + + it('has latency data for synth-java service', async () => { + const res = await getLatencyChartForService({ + serviceName: 'synth-java', + start, + end, + apmApiClient, + }); + + expect(res.body.currentPeriod.latencyTimeseries.map(({ y }) => y)).to.eql([ + 1000000, + 1000000, + 1000000, + 1000000, + 1000000, + null, + ]); + }); + }); + } + ); +} + +// This will retrieve latency data expecting the `transaction.duration.summary` field to be present +function getLatencyChartForService({ + serviceName, + start, + end, + apmApiClient, +}: { + serviceName: string; + start: moment.Moment; + end: moment.Moment; + apmApiClient: ApmApiClient; +}) { + return apmApiClient.readUser({ + endpoint: `GET /internal/apm/services/{serviceName}/transactions/charts/latency`, + params: { + path: { serviceName }, + query: { + start: start.toISOString(), + end: end.toISOString(), + environment: 'production', + latencyAggregationType: LatencyAggregationType.avg, + transactionType: 'request', + kuery: '', + documentType: ApmDocumentType.TransactionMetric, + rollupInterval: RollupInterval.OneMinute, + bucketSizeInSeconds: 60, + useDurationSummary: true, + }, + }, + }); +} + +function generateTraceDataForService({ + serviceName, + start, + end, + isLegacy, + synthtrace, +}: { + serviceName: string; + start: moment.Moment; + end: moment.Moment; + isLegacy?: boolean; + synthtrace: ApmSynthtraceEsClient; +}) { + const instance = apm + .service({ + name: serviceName, + environment: 'production', + agentName: 'java', + }) + .instance(`instance`); + + const events = timerange(start, end) + .ratePerMinute(6) + .generator((timestamp) => + instance + .transaction({ transactionName: 'GET /order/{id}' }) + .timestamp(timestamp) + .duration(1000) + .success() + ); + + const apmPipeline = (base: Readable) => { + // @ts-expect-error + const defaultPipeline: NodeJS.ReadableStream = synthtrace.getDefaultPipeline()(base); + + return pipeline( + defaultPipeline, + addObserverVersionTransform('8.5.0'), + deleteSummaryFieldTransform(), + (err) => { + if (err) { + // eslint-disable-next-line no-console + console.error(err); + } + } + ); + }; + + return synthtrace.index(events, isLegacy ? apmPipeline : undefined); +} diff --git a/x-pack/test/apm_api_integration/tests/time_range_metadata/time_range_metadata.spec.ts b/x-pack/test/apm_api_integration/tests/time_range_metadata/time_range_metadata.spec.ts index 34600b863b517..32303b7b0bb4c 100644 --- a/x-pack/test/apm_api_integration/tests/time_range_metadata/time_range_metadata.spec.ts +++ b/x-pack/test/apm_api_integration/tests/time_range_metadata/time_range_metadata.spec.ts @@ -11,18 +11,16 @@ import { omit, sortBy } from 'lodash'; import moment, { Moment } from 'moment'; import { ApmDocumentType } from '@kbn/apm-plugin/common/document_type'; import { RollupInterval } from '@kbn/apm-plugin/common/rollup'; +import { deleteSummaryFieldTransform } from '@kbn/apm-synthtrace'; +import { Readable, pipeline } from 'stream'; import { FtrProviderContext } from '../../common/ftr_provider_context'; -import { - getTransactionEvents, - subtractDateDifference, - overwriteSynthPipelineWithSummaryFieldDeleteTransform, -} from './generate_data'; export default function ApiTest({ getService }: FtrProviderContext) { const registry = getService('registry'); const apmApiClient = getService('apmApiClient'); const synthtraceEsClient = getService('synthtraceEsClient'); const es = getService('es'); + const log = getService('log'); const start = moment('2022-01-01T00:00:00.000Z'); const end = moment('2022-01-02T00:00:00.000Z').subtract(1, 'millisecond'); @@ -80,29 +78,45 @@ export default function ApiTest({ getService }: FtrProviderContext) { { config: 'basic', archives: [] }, () => { describe('data loaded with and without summary field', () => { - const localStart = moment('2023-04-28T00:00:00.000Z'); - const localEnd = moment('2023-04-28T06:00:00.000Z'); + const withoutSummaryFieldStart = moment('2023-04-28T00:00:00.000Z'); + const withoutSummaryFieldEnd = moment(withoutSummaryFieldStart).add(2, 'hours'); + + const withSummaryFieldStart = moment(withoutSummaryFieldEnd); + const withSummaryFieldEnd = moment(withoutSummaryFieldEnd).add(2, 'hours'); + before(async () => { - const regularData = getTransactionEvents(localStart, localEnd); - await synthtraceEsClient.index([...regularData]); - const { previousStart, previousEnd } = subtractDateDifference(localStart, localEnd); - const previousDataWithoutSummaryField = getTransactionEvents(previousStart, previousEnd); - synthtraceEsClient.pipeline( - overwriteSynthPipelineWithSummaryFieldDeleteTransform({ - synthtraceEsClient, - }) + const previousTxEvents = getTransactionEvents( + withoutSummaryFieldStart, + withoutSummaryFieldEnd ); - await synthtraceEsClient.index([...previousDataWithoutSummaryField]); + + const apmPipeline = (base: Readable) => { + // @ts-expect-error + const defaultPipeline: NodeJS.ReadableStream = + synthtraceEsClient.getDefaultPipeline()(base); + + return pipeline(defaultPipeline, deleteSummaryFieldTransform(), (err) => { + if (err) { + log.error(err); + } + }); + }; + + await synthtraceEsClient.index(previousTxEvents, apmPipeline); + + const txEvents = getTransactionEvents(withSummaryFieldStart, withSummaryFieldEnd); + await synthtraceEsClient.index(txEvents); }); + after(() => { - synthtraceEsClient.clean(); - synthtraceEsClient.pipeline(synthtraceEsClient.getDefaultPipeline()); + return synthtraceEsClient.clean(); }); + describe('Values for hasDurationSummaryField for transaction metrics', () => { it('returns true when summary field is available both inside and outside the range', async () => { const response = await getTimeRangeMedata({ - start: moment(localStart).add(3, 'hours'), - end: moment(localEnd), + start: moment(withSummaryFieldStart).add(1, 'hour'), + end: moment(withSummaryFieldEnd), }); expect( @@ -113,10 +127,11 @@ export default function ApiTest({ getService }: FtrProviderContext) { ).length ).to.eql(3); }); + it('returns false when summary field is available inside but not outside the range', async () => { const response = await getTimeRangeMedata({ - start: moment(localStart).subtract(30, 'minutes'), - end: moment(localEnd), + start: moment(withSummaryFieldStart).subtract(30, 'minutes'), + end: moment(withSummaryFieldEnd), }); expect( @@ -491,7 +506,44 @@ export default function ApiTest({ getService }: FtrProviderContext) { }); }); - after(() => synthtraceEsClient.clean()); + after(() => { + return synthtraceEsClient.clean(); + }); } ); } + +function getTransactionEvents(start: Moment, end: Moment) { + const serviceName = 'synth-go'; + const transactionName = 'GET /api/product/list'; + const GO_PROD_RATE = 15; + const GO_PROD_ERROR_RATE = 5; + + const serviceGoProdInstance = apm + .service({ name: serviceName, environment: 'production', agentName: 'go' }) + .instance('instance-a'); + + return [ + timerange(start, end) + .interval('1m') + .rate(GO_PROD_RATE) + .generator((timestamp) => + serviceGoProdInstance + .transaction({ transactionName }) + .timestamp(timestamp) + .duration(1000) + .success() + ), + + timerange(start, end) + .interval('1m') + .rate(GO_PROD_ERROR_RATE) + .generator((timestamp) => + serviceGoProdInstance + .transaction({ transactionName }) + .duration(1000) + .timestamp(timestamp) + .failure() + ), + ]; +} diff --git a/x-pack/test/cloud_security_posture_functional/page_objects/add_cis_integration_form_page.ts b/x-pack/test/cloud_security_posture_functional/page_objects/add_cis_integration_form_page.ts index 924a2ae6c0dca..795c2edb62dd4 100644 --- a/x-pack/test/cloud_security_posture_functional/page_objects/add_cis_integration_form_page.ts +++ b/x-pack/test/cloud_security_posture_functional/page_objects/add_cis_integration_form_page.ts @@ -62,8 +62,23 @@ export function AddCisIntegrationFormPageProvider({ }, fillInTextField: async (selector: string, text: string) => { - const test = await testSubjects.find(selector); - await test.type(text); + const textField = await testSubjects.find(selector); + await textField.type(text); + }, + + chooseDropDown: async (selector: string, text: string) => { + const credentialTypeBox = await testSubjects.find(selector); + const chosenOption = await testSubjects.find(text); + await credentialTypeBox.click(); + await chosenOption.click(); + }, + + getFieldValueInEditPage: async (field: string) => { + /* Newly added/edited integration always shows up on top by default as such we can just always click the most top if we want to check for the latest one */ + const integrationList = await testSubjects.findAll('integrationNameLink'); + await integrationList[0].click(); + const fieldValue = await (await testSubjects.find(field)).getAttribute('value'); + return fieldValue; }, }; @@ -75,8 +90,16 @@ export function AddCisIntegrationFormPageProvider({ ); }; + const navigateToIntegrationCspList = async () => { + await PageObjects.common.navigateToActualUrl( + 'integrations', // Defined in Security Solution plugin + '/detail/cloud_security_posture/policies' + ); + }; + return { cisGcp, navigateToAddIntegrationCspmPage, + navigateToIntegrationCspList, }; } diff --git a/x-pack/test/cloud_security_posture_functional/pages/cis_integration.ts b/x-pack/test/cloud_security_posture_functional/pages/cis_integration.ts index 5935fc49b06a0..20f85163521a7 100644 --- a/x-pack/test/cloud_security_posture_functional/pages/cis_integration.ts +++ b/x-pack/test/cloud_security_posture_functional/pages/cis_integration.ts @@ -16,6 +16,8 @@ const GCP_MANUAL_TEST_ID = 'gcpManualOptionTestId'; const PRJ_ID_TEST_ID = 'project_id_test_id'; const ORG_ID_TEST_ID = 'organization_id_test_id'; const CREDENTIALS_TYPE_TEST_ID = 'credentials_type_test_id'; +const CREDENTIALS_FILE_TEST_ID = 'credentials_file_test_id'; +const CREDENTIALS_JSON_TEST_ID = 'credentials_json_test_id'; // eslint-disable-next-line import/no-default-export export default function (providerContext: FtrProviderContext) { @@ -103,5 +105,75 @@ export default function (providerContext: FtrProviderContext) { ); }); }); + + describe('CIS_GCP Single', () => { + it('Post Installation Google Cloud Shell modal pops up after user clicks on Save button when adding integration, when there are no Project ID, it should use default value', async () => { + await cisIntegrationGcp.clickOptionButton(CIS_GCP_OPTION_TEST_ID); + await cisIntegrationGcp.clickOptionButton(GCP_SINGLE_ACCOUNT_TEST_ID); + await cisIntegrationGcp.clickOptionButton(GCP_CLOUD_SHELL_TEST_ID); + await cisIntegrationGcp.clickSaveButton(); + pageObjects.header.waitUntilLoadingHasFinished(); + expect((await cisIntegrationGcp.isPostInstallGoogleCloudShellModal(false)) === true).to.be( + true + ); + }); + + it('Post Installation Google Cloud Shell modal pops up after user clicks on Save button when adding integration, when there are Project ID, it should use that value', async () => { + const projectName = 'PRJ_NAME_TEST'; + await cisIntegrationGcp.clickOptionButton(CIS_GCP_OPTION_TEST_ID); + await cisIntegrationGcp.clickOptionButton(GCP_SINGLE_ACCOUNT_TEST_ID); + await cisIntegrationGcp.clickOptionButton(GCP_CLOUD_SHELL_TEST_ID); + await cisIntegrationGcp.fillInTextField('project_id_test_id', projectName); + + await cisIntegrationGcp.clickSaveButton(); + pageObjects.header.waitUntilLoadingHasFinished(); + expect( + (await cisIntegrationGcp.isPostInstallGoogleCloudShellModal(false, '', projectName)) === + true + ).to.be(true); + }); + + it('Users are able to add CIS_GCP Integration with Manual settings using Credentials File', async () => { + const projectName = 'PRJ_NAME_TEST'; + const credentialFileName = 'CRED_FILE_TEST_NAME'; + await cisIntegrationGcp.clickOptionButton(CIS_GCP_OPTION_TEST_ID); + await cisIntegrationGcp.clickOptionButton(GCP_SINGLE_ACCOUNT_TEST_ID); + await cisIntegrationGcp.clickOptionButton(GCP_MANUAL_TEST_ID); + await cisIntegrationGcp.fillInTextField(PRJ_ID_TEST_ID, projectName); + await cisIntegrationGcp.fillInTextField(CREDENTIALS_FILE_TEST_ID, credentialFileName); + + await cisIntegrationGcp.clickSaveButton(); + pageObjects.header.waitUntilLoadingHasFinished(); + expect((await cisIntegrationGcp.getPostInstallModal()) !== undefined).to.be(true); + await cisIntegration.navigateToIntegrationCspList(); + expect( + (await cisIntegrationGcp.getFieldValueInEditPage(CREDENTIALS_FILE_TEST_ID)) === + credentialFileName + ).to.be(true); + }); + + it('Users are able to add CIS_GCP Integration with Manual settings using Credentials JSON', async () => { + const projectName = 'PRJ_NAME_TEST'; + const credentialJsonName = 'CRED_JSON_TEST_NAME'; + await cisIntegrationGcp.clickOptionButton(CIS_GCP_OPTION_TEST_ID); + await cisIntegrationGcp.clickOptionButton(GCP_SINGLE_ACCOUNT_TEST_ID); + await cisIntegrationGcp.clickOptionButton(GCP_MANUAL_TEST_ID); + await cisIntegrationGcp.fillInTextField(PRJ_ID_TEST_ID, projectName); + await cisIntegrationGcp.chooseDropDown( + CREDENTIALS_TYPE_TEST_ID, + 'credentials_json_option_test_id' + ); + await cisIntegrationGcp.fillInTextField(CREDENTIALS_JSON_TEST_ID, credentialJsonName); + + await cisIntegrationGcp.clickSaveButton(); + pageObjects.header.waitUntilLoadingHasFinished(); + expect((await cisIntegrationGcp.getPostInstallModal()) !== undefined).to.be(true); + await cisIntegration.navigateToIntegrationCspList(); + expect( + (await cisIntegrationGcp.getFieldValueInEditPage(CREDENTIALS_JSON_TEST_ID)) === + credentialJsonName + ).to.be(true); + }); + }); }); } diff --git a/x-pack/test/detection_engine_api_integration/security_and_spaces/group10/risk_engine/risk_score_calculation.ts b/x-pack/test/detection_engine_api_integration/security_and_spaces/group10/risk_engine/risk_score_calculation.ts index 31a00c92593df..f03214e301dd1 100644 --- a/x-pack/test/detection_engine_api_integration/security_and_spaces/group10/risk_engine/risk_score_calculation.ts +++ b/x-pack/test/detection_engine_api_integration/security_and_spaces/group10/risk_engine/risk_score_calculation.ts @@ -38,7 +38,7 @@ export default ({ getService }: FtrProviderContext): void => { const { body: result } = await supertest .post(RISK_SCORE_CALCULATION_URL) .set('kbn-xsrf', 'true') - .set('elastic-api-version', '2023-10-31') + .set('elastic-api-version', '1') .send(body) .expect(200); return result; diff --git a/x-pack/test/functional/apps/discover/async_scripted_fields.js b/x-pack/test/functional/apps/discover/async_scripted_fields.js index f5143e5fcc084..5810830aec3a6 100644 --- a/x-pack/test/functional/apps/discover/async_scripted_fields.js +++ b/x-pack/test/functional/apps/discover/async_scripted_fields.js @@ -81,7 +81,7 @@ export default function ({ getService, getPageObjects }) { 'dscNoResultsInterceptedWarningsCallout_warningTitle' ); log.debug(shardMessage); - expect(shardMessage).to.be('The data might be incomplete or wrong.'); + expect(shardMessage).to.be('Results are partial and may be incomplete.'); }); }); diff --git a/x-pack/test/observability_api_integration/apis/composite_slo/create.ts b/x-pack/test/observability_api_integration/apis/composite_slo/create.ts deleted file mode 100644 index 0da6c395e83ce..0000000000000 --- a/x-pack/test/observability_api_integration/apis/composite_slo/create.ts +++ /dev/null @@ -1,181 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import expect from '@kbn/expect'; -import { FtrProviderContext } from '../../common/ftr_provider_context'; -import { createCompositeSLOInput } from '../../fixtures/composite_slo'; - -export default function ({ getService }: FtrProviderContext) { - const supertest = getService('supertest'); - const kibanaServer = getService('kibanaServer'); - - describe.skip('create >', () => { - const security = getService('security'); - - before(async () => { - await security.testUser.setRoles(['slo_all']); - await kibanaServer.importExport.load( - 'x-pack/test/observability_api_integration/fixtures/kbn_archiver/saved_objects/slo.json' - ); - }); - - after(async () => { - await security.testUser.restoreDefaults(); - await kibanaServer.importExport.unload( - 'x-pack/test/observability_api_integration/fixtures/kbn_archiver/saved_objects/slo.json' - ); - }); - - it('returns a 400 with invalid payload', async () => { - await supertest - .post(`/api/observability/composite_slos`) - .set('kbn-xsrf', 'foo') - .send({}) - .expect(400) - .then((resp) => { - expect(resp.body.error).to.eql('Bad Request'); - expect(resp.body.message).to.contain('Invalid value undefined supplied to'); - }); - }); - - it('returns a 400 when the number of source SLOs is less than 2', async () => { - await supertest - .post(`/api/observability/composite_slos`) - .set('kbn-xsrf', 'foo') - .send( - createCompositeSLOInput({ - sources: [{ id: 'f9072790-f97c-11ed-895c-170d13e61076', revision: 2, weight: 1 }], - }) - ) - .expect(400) - .then((resp) => { - expect(resp.body.error).to.eql('Bad Request'); - expect(resp.body.message).to.contain( - 'A composite SLO must contain between 2 and 30 source SLOs.' - ); - }); - }); - - it('returns a 400 when the source SLOs are not found', async () => { - await supertest - .post(`/api/observability/composite_slos`) - .set('kbn-xsrf', 'foo') - .send( - createCompositeSLOInput({ - sources: [ - { id: 'inexistant', revision: 1, weight: 1 }, - { id: 'inexistant2', revision: 1, weight: 1 }, - ], - }) - ) - .expect(400) - .then((resp) => { - expect(resp.body.error).to.eql('Bad Request'); - expect(resp.body.message).to.contain( - 'One or many source SLOs are not matching the specified id and revision.' - ); - }); - }); - - it("returns a 400 when the source SLOs' time window don't match", async () => { - await supertest - .post(`/api/observability/composite_slos`) - .set('kbn-xsrf', 'foo') - .send( - createCompositeSLOInput({ - timeWindow: { - duration: '30d', - type: 'rolling', - }, - sources: [ - { id: 'f9072790-f97c-11ed-895c-170d13e61076', revision: 2, weight: 1 }, - { id: 'f6694b30-f97c-11ed-895c-170d13e61076', revision: 1, weight: 2 }, - ], - }) - ) - .expect(400) - .then((resp) => { - expect(resp.body.error).to.eql('Bad Request'); - expect(resp.body.message).to.contain( - 'Invalid time window. Every source SLO must use the same time window as the composite.' - ); - }); - }); - - it('returns a 400 when timeslices window is not defined for a timeslices budgeting method', async () => { - await supertest - .post(`/api/observability/composite_slos`) - .set('kbn-xsrf', 'foo') - .send( - createCompositeSLOInput({ - budgetingMethod: 'timeslices', - objective: { - target: 0.9, - }, - sources: [ - { id: 'f9072790-f97c-11ed-895c-170d13e61076', revision: 2, weight: 1 }, - { id: 'f6694b30-f97c-11ed-895c-170d13e61076', revision: 1, weight: 2 }, - ], - }) - ) - .expect(400) - .then((resp) => { - expect(resp.body.error).to.eql('Bad Request'); - expect(resp.body.message).to.contain( - 'Invalid timeslices objective. A timeslice window must be set and equal to all source SLO.' - ); - }); - }); - - it("returns a 400 when the source SLOs' budgeting method don't match", async () => { - await supertest - .post(`/api/observability/composite_slos`) - .set('kbn-xsrf', 'foo') - .send( - createCompositeSLOInput({ - budgetingMethod: 'timeslices', - objective: { - target: 0.9, - timesliceTarget: 0.95, - timesliceWindow: '1m', - }, - sources: [ - { id: 'f9072790-f97c-11ed-895c-170d13e61076', revision: 2, weight: 1 }, - { id: 'f6694b30-f97c-11ed-895c-170d13e61076', revision: 1, weight: 2 }, - ], - }) - ) - .expect(400) - .then((resp) => { - expect(resp.body.error).to.eql('Bad Request'); - expect(resp.body.message).to.contain( - 'Invalid budgeting method. Every source SLO must use the same timeslice window.' - ); - }); - }); - - describe('happy path', () => { - it('returns a 200', async () => { - await supertest - .post(`/api/observability/composite_slos`) - .set('kbn-xsrf', 'foo') - .send( - createCompositeSLOInput({ - sources: [ - { id: 'f9072790-f97c-11ed-895c-170d13e61076', revision: 2, weight: 1 }, - { id: 'f6694b30-f97c-11ed-895c-170d13e61076', revision: 1, weight: 2 }, - ], - }) - ) - .expect(200) - .then((resp) => { - expect(resp.body.id).to.be.ok(); - }); - }); - }); - }); -} diff --git a/x-pack/test/observability_api_integration/apis/composite_slo/delete.ts b/x-pack/test/observability_api_integration/apis/composite_slo/delete.ts deleted file mode 100644 index bd4f80f2ef550..0000000000000 --- a/x-pack/test/observability_api_integration/apis/composite_slo/delete.ts +++ /dev/null @@ -1,52 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import expect from '@kbn/expect'; -import { FtrProviderContext } from '../../common/ftr_provider_context'; - -export default function ({ getService }: FtrProviderContext) { - const supertest = getService('supertest'); - const kibanaServer = getService('kibanaServer'); - - describe.skip('delete >', () => { - const security = getService('security'); - - before(async () => { - await security.testUser.setRoles(['slo_all']); - await kibanaServer.importExport.load( - 'x-pack/test/observability_api_integration/fixtures/kbn_archiver/saved_objects/simple_composite_slo.json' - ); - }); - - after(async () => { - await security.testUser.restoreDefaults(); - await kibanaServer.importExport.unload( - 'x-pack/test/observability_api_integration/fixtures/kbn_archiver/saved_objects/simple_composite_slo.json' - ); - }); - - it('returns a 404 when the composite SLO is not found', async () => { - await supertest - .delete(`/api/observability/composite_slos/inexistant-id`) - .set('kbn-xsrf', 'foo') - .expect(404) - .then((resp) => { - expect(resp.body.error).to.eql('Not Found'); - expect(resp.body.message).to.contain('Composite SLO [inexistant-id] not found'); - }); - }); - - describe('happy path', () => { - it('returns a 204', async () => { - await supertest - .delete(`/api/observability/composite_slos/b5e88480-fa77-11ed-8871-27f3f5ca40ce`) - .set('kbn-xsrf', 'foo') - .expect(204); - }); - }); - }); -} diff --git a/x-pack/test/observability_api_integration/apis/composite_slo/update.ts b/x-pack/test/observability_api_integration/apis/composite_slo/update.ts deleted file mode 100644 index 69f87da9c8a93..0000000000000 --- a/x-pack/test/observability_api_integration/apis/composite_slo/update.ts +++ /dev/null @@ -1,71 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import expect from '@kbn/expect'; -import { FtrProviderContext } from '../../common/ftr_provider_context'; -import { createCompositeSLOInput } from '../../fixtures/composite_slo'; - -export default function ({ getService }: FtrProviderContext) { - const supertest = getService('supertest'); - const kibanaServer = getService('kibanaServer'); - - describe.skip('update >', () => { - const security = getService('security'); - - before(async () => { - await security.testUser.setRoles(['slo_all']); - await kibanaServer.importExport.load( - 'x-pack/test/observability_api_integration/fixtures/kbn_archiver/saved_objects/slo.json' - ); - }); - - after(async () => { - await security.testUser.restoreDefaults(); - await kibanaServer.importExport.unload( - 'x-pack/test/observability_api_integration/fixtures/kbn_archiver/saved_objects/slo.json' - ); - }); - - it('returns a 404 when not found', async () => { - await supertest - .put(`/api/observability/composite_slos/inexistant-id`) - .set('kbn-xsrf', 'foo') - .send({ name: 'updated composite slo name' }) - .expect(404) - .then((resp) => { - expect(resp.body.error).to.eql('Not Found'); - expect(resp.body.message).to.contain('Composite SLO [inexistant-id] not found'); - }); - }); - - describe('happy path', () => { - it('returns a 200', async () => { - const { body } = await supertest - .post(`/api/observability/composite_slos`) - .set('kbn-xsrf', 'foo') - .send( - createCompositeSLOInput({ - sources: [ - { id: 'f9072790-f97c-11ed-895c-170d13e61076', revision: 2, weight: 1 }, - { id: 'f6694b30-f97c-11ed-895c-170d13e61076', revision: 1, weight: 2 }, - ], - }) - ) - .expect(200); - - await supertest - .put(`/api/observability/composite_slos/${body.id}`) - .set('kbn-xsrf', 'foo') - .send({ name: 'updated composite slo name 🚀' }) - .expect(200) - .then((resp) => { - expect(resp.body.name).to.eql('updated composite slo name 🚀'); - }); - }); - }); - }); -} diff --git a/x-pack/test/observability_api_integration/apis/config.ts b/x-pack/test/observability_api_integration/apis/config.ts deleted file mode 100644 index fac715a634cfa..0000000000000 --- a/x-pack/test/observability_api_integration/apis/config.ts +++ /dev/null @@ -1,14 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import { createTestConfig } from '../common/config'; - -export default createTestConfig({ - license: 'trial', - name: 'X-Pack Observability API integration test', - testFiles: [require.resolve('./composite_slo')], -}); diff --git a/x-pack/test/observability_api_integration/fixtures/composite_slo.ts b/x-pack/test/observability_api_integration/fixtures/composite_slo.ts deleted file mode 100644 index ca206c130ffc7..0000000000000 --- a/x-pack/test/observability_api_integration/fixtures/composite_slo.ts +++ /dev/null @@ -1,34 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import { cloneDeep } from 'lodash'; -import { v1 as uuidv1 } from 'uuid'; -import { CreateCompositeSLOInput } from '@kbn/slo-schema'; - -const defaultCompositeSLOInput: CreateCompositeSLOInput = { - name: 'some composite slo', - timeWindow: { - duration: '7d', - type: 'rolling', - }, - budgetingMethod: 'occurrences', - objective: { - target: 0.95, - }, - compositeMethod: 'weightedAverage', - sources: [ - { id: uuidv1(), revision: 1, weight: 1 }, - { id: uuidv1(), revision: 2, weight: 2 }, - ], - tags: ['critical', 'k8s'], -}; - -export function createCompositeSLOInput( - data: Partial = {} -): CreateCompositeSLOInput { - return cloneDeep({ ...defaultCompositeSLOInput, ...data }); -} diff --git a/x-pack/test/observability_api_integration/fixtures/kbn_archiver/saved_objects/simple_composite_slo.json b/x-pack/test/observability_api_integration/fixtures/kbn_archiver/saved_objects/simple_composite_slo.json deleted file mode 100644 index 528a4d0a45204..0000000000000 --- a/x-pack/test/observability_api_integration/fixtures/kbn_archiver/saved_objects/simple_composite_slo.json +++ /dev/null @@ -1,25 +0,0 @@ -{ - "attributes": { - "budgetingMethod": "occurrences", - "compositeMethod": "weightedAverage", - "createdAt": "2023-05-24T21:12:37.831Z", - "id": "b5e88480-fa77-11ed-8871-27f3f5ca40ce", - "name": "composite slo test", - "objective": { "target": 0.95 }, - "sources": [ - { "id": "f6694b30-f97c-11ed-895c-170d13e61076", "revision": 1, "weight": 2 }, - { "id": "f9072790-f97c-11ed-895c-170d13e61076", "revision": 2, "weight": 1 } - ], - "tags": [], - "timeWindow": { "duration": "7d", "type": "rolling" }, - "updatedAt": "2023-05-24T21:12:37.831Z" - }, - "coreMigrationVersion": "8.8.0", - "created_at": "2023-05-24T21:12:37.843Z", - "id": "b5ea3230-fa77-11ed-8871-27f3f5ca40ce", - "managed": false, - "references": [], - "type": "composite-slo", - "updated_at": "2023-05-24T21:12:37.843Z", - "version": "WzIwNTk2LDFd" -} diff --git a/x-pack/test/plugin_api_integration/test_suites/event_log/public_api_integration.ts b/x-pack/test/plugin_api_integration/test_suites/event_log/public_api_integration.ts index ed7d31efe1c10..0b1ec65593a34 100644 --- a/x-pack/test/plugin_api_integration/test_suites/event_log/public_api_integration.ts +++ b/x-pack/test/plugin_api_integration/test_suites/event_log/public_api_integration.ts @@ -23,7 +23,8 @@ export default function ({ getService }: FtrProviderContext) { const esArchiver = getService('esArchiver'); const kibanaServer = getService('kibanaServer'); - describe('Event Log public API', () => { + // FLAKY: https://github.com/elastic/kibana/issues/168750 + describe.skip('Event Log public API', () => { before(async () => { await spacesService.create({ id: 'namespace-a', diff --git a/x-pack/test/security_solution_cypress/cypress/README.md b/x-pack/test/security_solution_cypress/cypress/README.md index aa749344201fa..c85ba1bea305f 100644 --- a/x-pack/test/security_solution_cypress/cypress/README.md +++ b/x-pack/test/security_solution_cypress/cypress/README.md @@ -42,7 +42,9 @@ Please, before opening a PR with the new test, please make sure that the test fa Note that we use tags in order to select which tests we want to execute: -- `@serverless` includes a test in the Serverless test suite. You need to explicitly add this tag to any test you want to run against a Serverless environment. +- `@serverless` includes a test in the Serverless test suite for PRs (the so-called first quality gate). You need to explicitly add this tag to any test you want to run in CI for open PRs. These tests will run against a local, "simulated" serverless environment. +- `@serverlessQA` includes a test in the Serverless test suite for QA (the so-called second quality gate). You need to explicitly add this tag to any test you want to run in the CD pipeline against real serverless projects deployed in the Serverless QA environment. + - **NOTE:** We are adding this tag temporarily until we check the behavior of our tests in the second quality gate. - `@ess` includes a test in the normal, non-Serverless test suite. You need to explicitly add this tag to any test you want to run against a non-Serverless environment. - `@brokenInServerless` excludes a test from the Serverless test suite (even if it's tagged as `@serverless`). Indicates that a test should run in Serverless, but currently is broken. - `@skipInServerless` excludes a test from the Serverless test suite (even if it's tagged as `@serverless`). Could indicate many things, e.g. "the test is flaky in Serverless", "the test is Flaky in any type of environemnt", "the test has been temporarily excluded, see the comment above why". diff --git a/x-pack/test/security_solution_cypress/cypress/cypress_ci_serverless_qa.config.ts b/x-pack/test/security_solution_cypress/cypress/cypress_ci_serverless_qa.config.ts new file mode 100644 index 0000000000000..e76893eceea36 --- /dev/null +++ b/x-pack/test/security_solution_cypress/cypress/cypress_ci_serverless_qa.config.ts @@ -0,0 +1,50 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { defineCypressConfig } from '@kbn/cypress-config'; +import { esArchiver } from './support/es_archiver'; + +// eslint-disable-next-line import/no-default-export +export default defineCypressConfig({ + reporter: '../../../node_modules/cypress-multi-reporters', + reporterOptions: { + configFile: './cypress/reporter_config.json', + }, + defaultCommandTimeout: 150000, + env: { + grepFilterSpecs: true, + grepOmitFiltered: true, + grepTags: '@serverlessQA --@brokenInServerless --@skipInServerless', + // Grep plugin is working taking under consideration the directory where cypress lives. + // https://github.com/elastic/kibana/pull/167494#discussion_r1340567022 for more context. + grepIntegrationFolder: '../', + }, + execTimeout: 150000, + pageLoadTimeout: 150000, + numTestsKeptInMemory: 0, + retries: { + runMode: 1, + }, + screenshotsFolder: '../../../target/kibana-security-solution/cypress/screenshots', + trashAssetsBeforeRuns: false, + video: false, + videosFolder: '../../../../target/kibana-security-solution/cypress/videos', + viewportHeight: 946, + viewportWidth: 1680, + e2e: { + baseUrl: 'http://localhost:5601', + experimentalCspAllowList: ['default-src', 'script-src', 'script-src-elem'], + experimentalMemoryManagement: true, + specPattern: './cypress/e2e/**/*.cy.ts', + setupNodeEvents(on, config) { + esArchiver(on, config); + // eslint-disable-next-line @typescript-eslint/no-var-requires + require('@cypress/grep/src/plugin')(config); + return config; + }, + }, +}); diff --git a/x-pack/test/security_solution_cypress/cypress/e2e/data_sources/create_runtime_field.cy.ts b/x-pack/test/security_solution_cypress/cypress/e2e/data_sources/create_runtime_field.cy.ts deleted file mode 100644 index 78ed47f878665..0000000000000 --- a/x-pack/test/security_solution_cypress/cypress/e2e/data_sources/create_runtime_field.cy.ts +++ /dev/null @@ -1,63 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import { login } from '../../tasks/login'; -import { visitWithTimeRange } from '../../tasks/navigation'; -import { openTimelineUsingToggle } from '../../tasks/security_main'; -import { openTimelineFieldsBrowser, populateTimeline } from '../../tasks/timeline'; - -import { hostsUrl, ALERTS_URL } from '../../urls/navigation'; - -import { createRule } from '../../tasks/api_calls/rules'; - -import { getNewRule } from '../../objects/rule'; -import { refreshPage } from '../../tasks/security_header'; -import { waitForAlertsToPopulate } from '../../tasks/create_new_rule'; -import { createField } from '../../tasks/create_runtime_field'; -import { openAlertsFieldBrowser } from '../../tasks/alerts'; -import { deleteRuntimeField } from '../../tasks/sourcerer'; -import { GET_DATA_GRID_HEADER } from '../../screens/common/data_grid'; -import { GET_TIMELINE_HEADER } from '../../screens/timeline'; - -const alertRunTimeField = 'field.name.alert.page'; -const timelineRuntimeField = 'field.name.timeline'; - -// TODO: https://github.com/elastic/kibana/issues/161539 -describe( - 'Create DataView runtime field', - { tags: ['@ess', '@serverless', '@brokenInServerless'] }, - () => { - before(() => { - deleteRuntimeField('security-solution-default', alertRunTimeField); - deleteRuntimeField('security-solution-default', timelineRuntimeField); - }); - - beforeEach(() => { - login(); - }); - - it('adds field to alert table', () => { - visitWithTimeRange(ALERTS_URL); - createRule(getNewRule()); - refreshPage(); - waitForAlertsToPopulate(); - openAlertsFieldBrowser(); - createField(alertRunTimeField); - cy.get(GET_DATA_GRID_HEADER(alertRunTimeField)).should('exist'); - }); - - it('adds field to timeline', () => { - visitWithTimeRange(hostsUrl('allHosts')); - openTimelineUsingToggle(); - populateTimeline(); - openTimelineFieldsBrowser(); - - createField(timelineRuntimeField); - cy.get(GET_TIMELINE_HEADER(timelineRuntimeField)).should('exist'); - }); - } -); diff --git a/x-pack/test/security_solution_cypress/cypress/e2e/data_sources/sourcerer.cy.ts b/x-pack/test/security_solution_cypress/cypress/e2e/data_sources/sourcerer.cy.ts deleted file mode 100644 index 0d70bf4dcd3d1..0000000000000 --- a/x-pack/test/security_solution_cypress/cypress/e2e/data_sources/sourcerer.cy.ts +++ /dev/null @@ -1,136 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import { DEFAULT_INDEX_PATTERN } from '@kbn/security-solution-plugin/common/constants'; - -import { login, loginWithUser } from '../../tasks/login'; -import { visitWithTimeRange, visitWithUser } from '../../tasks/navigation'; - -import { hostsUrl } from '../../urls/navigation'; -import { - addIndexToDefault, - deselectSourcererOptions, - isDataViewSelection, - isHostsStatValue, - isKibanaDataViewOption, - isNotSourcererSelection, - isSourcererOptions, - isSourcererSelection, - openAdvancedSettings, - openDataViewSelection, - openSourcerer, - resetSourcerer, - saveSourcerer, -} from '../../tasks/sourcerer'; -import { postDataView } from '../../tasks/common'; -import { createUsersAndRoles, secReadCasesAll, secReadCasesAllUser } from '../../tasks/privileges'; -import { TOASTER } from '../../screens/configure_cases'; -import { SOURCERER } from '../../screens/sourcerer'; - -const usersToCreate = [secReadCasesAllUser]; -const rolesToCreate = [secReadCasesAll]; -const siemDataViewTitle = 'Security Default Data View'; -const dataViews = ['auditbeat-*,fakebeat-*', 'auditbeat-*,*beat*,siem-read*,.kibana*,fakebeat-*']; - -// TODO: https://github.com/elastic/kibana/issues/161539 -describe('Sourcerer', { tags: ['@ess', '@serverless', '@skipInServerless'] }, () => { - before(() => { - cy.task('esArchiverResetKibana'); - dataViews.forEach((dataView: string) => postDataView(dataView)); - }); - - // TODO: https://github.com/elastic/kibana/issues/161539 - describe('permissions', { tags: ['@ess', '@brokenInServerless'] }, () => { - before(() => { - createUsersAndRoles(usersToCreate, rolesToCreate); - }); - it(`role(s) ${secReadCasesAllUser.roles.join()} shows error when user does not have permissions`, () => { - loginWithUser(secReadCasesAllUser); - visitWithUser(hostsUrl('allHosts'), secReadCasesAllUser); - cy.get(TOASTER).should('have.text', 'Write role required to generate data'); - }); - }); - - // TODO: https://github.com/elastic/kibana/issues/161539 - // FLAKY: https://github.com/elastic/kibana/issues/165766 - describe('Default scope', { tags: ['@ess', '@serverless', '@brokenInServerless'] }, () => { - beforeEach(() => { - cy.clearLocalStorage(); - login(); - visitWithTimeRange(hostsUrl('allHosts')); - }); - - it('correctly loads SIEM data view', () => { - openSourcerer(); - isDataViewSelection(siemDataViewTitle); - openAdvancedSettings(); - isSourcererSelection(`auditbeat-*`); - isSourcererOptions(DEFAULT_INDEX_PATTERN.filter((pattern) => pattern !== 'auditbeat-*')); - }); - - describe('Modified badge', () => { - it('Selecting new data view does not add a modified badge', () => { - cy.get(SOURCERER.badgeModified).should(`not.exist`); - openSourcerer(); - cy.get(SOURCERER.badgeModifiedOption).should(`not.exist`); - openDataViewSelection(); - isKibanaDataViewOption(dataViews); - cy.get(SOURCERER.selectListDefaultOption).should(`contain`, siemDataViewTitle); - cy.get(SOURCERER.selectListOption).contains(dataViews[1]).click(); - isDataViewSelection(dataViews[1]); - saveSourcerer(); - cy.get(SOURCERER.badgeModified).should(`not.exist`); - openSourcerer(); - cy.get(SOURCERER.badgeModifiedOption).should(`not.exist`); - }); - - it('shows modified badge when index patterns change and removes when reset', () => { - openSourcerer(); - openDataViewSelection(); - cy.get(SOURCERER.selectListOption).contains(dataViews[1]).click(); - isDataViewSelection(dataViews[1]); - openAdvancedSettings(); - const patterns = dataViews[1].split(','); - deselectSourcererOptions([patterns[0]]); - saveSourcerer(); - cy.get(SOURCERER.badgeModified).should(`exist`); - openSourcerer(); - cy.get(SOURCERER.badgeModifiedOption).should(`exist`); - resetSourcerer(); - saveSourcerer(); - cy.get(SOURCERER.badgeModified).should(`not.exist`); - openSourcerer(); - cy.get(SOURCERER.badgeModifiedOption).should(`not.exist`); - isDataViewSelection(siemDataViewTitle); - }); - }); - - it('disables save when no patterns are selected', () => { - openSourcerer(); - openAdvancedSettings(); - cy.get(SOURCERER.saveButton).should('be.enabled'); - deselectSourcererOptions(['auditbeat-*']); - cy.get(SOURCERER.saveButton).should('be.disabled'); - }); - - it( - 'adds a pattern to the default index and correctly filters out auditbeat-*', - { tags: '@brokenInServerless' }, - () => { - openSourcerer(); - isSourcererSelection(`auditbeat-*`); - isNotSourcererSelection('*beat*'); - addIndexToDefault('*beat*'); - isHostsStatValue('1'); - openSourcerer(); - openAdvancedSettings(); - isSourcererSelection(`auditbeat-*`); - isSourcererSelection('*beat*'); - } - ); - }); -}); diff --git a/x-pack/test/security_solution_cypress/cypress/e2e/data_sources/sourcerer_timeline.ts b/x-pack/test/security_solution_cypress/cypress/e2e/data_sources/sourcerer_timeline.ts deleted file mode 100644 index 4267944740539..0000000000000 --- a/x-pack/test/security_solution_cypress/cypress/e2e/data_sources/sourcerer_timeline.ts +++ /dev/null @@ -1,169 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import { - DEFAULT_ALERTS_INDEX, - DEFAULT_INDEX_PATTERN, -} from '@kbn/security-solution-plugin/common/constants'; - -import { login } from '../../tasks/login'; -import { visitWithTimeRange } from '../../tasks/navigation'; - -import { TIMELINES_URL } from '../../urls/navigation'; -import { - clickAlertCheckbox, - deselectSourcererOptions, - isDataViewSelection, - isKibanaDataViewOption, - isNotSourcererOption, - isNotSourcererSelection, - isSourcererOptions, - isSourcererSelection, - openAdvancedSettings, - openDataViewSelection, - openSourcerer, - refreshUntilAlertsIndexExists, - resetSourcerer, - saveSourcerer, -} from '../../tasks/sourcerer'; -import { openTimelineUsingToggle } from '../../tasks/security_main'; -import { SOURCERER } from '../../screens/sourcerer'; -import { createTimeline } from '../../tasks/api_calls/timelines'; -import { getTimeline, getTimelineModifiedSourcerer } from '../../objects/timeline'; -import { closeTimeline, openTimelineById } from '../../tasks/timeline'; - -const siemDataViewTitle = 'Security Default Data View'; -const dataViews = ['auditbeat-*,fakebeat-*', 'auditbeat-*,*beat*,siem-read*,.kibana*,fakebeat-*']; - -// TODO: https://github.com/elastic/kibana/issues/161539 -describe('Timeline scope', { tags: ['@ess', '@serverless', '@brokenInServerless'] }, () => { - beforeEach(() => { - cy.clearLocalStorage(); - login(); - visitWithTimeRange(TIMELINES_URL); - }); - - it('correctly loads SIEM data view', () => { - openTimelineUsingToggle(); - openSourcerer('timeline'); - isDataViewSelection(siemDataViewTitle); - openAdvancedSettings(); - isSourcererSelection(`auditbeat-*`); - isSourcererSelection(`${DEFAULT_ALERTS_INDEX}-default`); - isSourcererOptions(DEFAULT_INDEX_PATTERN.filter((pattern) => pattern !== 'auditbeat-*')); - isNotSourcererOption(`${DEFAULT_ALERTS_INDEX}-default`); - }); - - describe('Modified badge', () => { - it('Selecting new data view does not add a modified badge', () => { - openTimelineUsingToggle(); - cy.get(SOURCERER.badgeModified).should(`not.exist`); - openSourcerer('timeline'); - cy.get(SOURCERER.badgeModifiedOption).should(`not.exist`); - openDataViewSelection(); - isKibanaDataViewOption(dataViews); - cy.get(SOURCERER.selectListDefaultOption).should(`contain`, siemDataViewTitle); - cy.get(SOURCERER.selectListOption).contains(dataViews[1]).click(); - isDataViewSelection(dataViews[1]); - saveSourcerer(); - cy.get(SOURCERER.badgeModified).should(`not.exist`); - openSourcerer('timeline'); - cy.get(SOURCERER.badgeModifiedOption).should(`not.exist`); - }); - - it('shows modified badge when index patterns change and removes when reset', () => { - openTimelineUsingToggle(); - openSourcerer('timeline'); - openDataViewSelection(); - cy.get(SOURCERER.selectListOption).contains(dataViews[1]).click(); - isDataViewSelection(dataViews[1]); - openAdvancedSettings(); - const patterns = dataViews[1].split(','); - deselectSourcererOptions([patterns[0]]); - saveSourcerer(); - cy.get(SOURCERER.badgeModified).should(`exist`); - openSourcerer('timeline'); - cy.get(SOURCERER.badgeModifiedOption).should(`exist`); - resetSourcerer(); - saveSourcerer(); - cy.get(SOURCERER.badgeModified).should(`not.exist`); - openSourcerer('timeline'); - cy.get(SOURCERER.badgeModifiedOption).should(`not.exist`); - isDataViewSelection(siemDataViewTitle); - }); - }); - describe('Alerts checkbox', () => { - before(() => { - login(); - createTimeline(getTimeline()).then((response) => - cy.wrap(response.body.data.persistTimeline.timeline.savedObjectId).as('timelineId') - ); - createTimeline(getTimelineModifiedSourcerer()).then((response) => - cy.wrap(response.body.data.persistTimeline.timeline.savedObjectId).as('auditbeatTimelineId') - ); - }); - - beforeEach(() => { - login(); - visitWithTimeRange(TIMELINES_URL); - refreshUntilAlertsIndexExists(); - }); - - it('Modifies timeline to alerts only, and switches to different saved timeline without issue', function () { - openTimelineById(this.timelineId).then(() => { - cy.get(SOURCERER.badgeAlerts).should(`not.exist`); - cy.get(SOURCERER.badgeModified).should(`not.exist`); - openSourcerer('timeline'); - clickAlertCheckbox(); - saveSourcerer(); - cy.get(SOURCERER.badgeAlerts).should(`exist`); - cy.get(SOURCERER.badgeModified).should(`not.exist`); - closeTimeline(); - - openTimelineById(this.auditbeatTimelineId).then(() => { - cy.get(SOURCERER.badgeModified).should(`exist`); - cy.get(SOURCERER.badgeAlerts).should(`not.exist`); - openSourcerer('timeline'); - openAdvancedSettings(); - isSourcererSelection(`auditbeat-*`); - }); - }); - }); - - const defaultPatterns = [`auditbeat-*`, `${DEFAULT_ALERTS_INDEX}-default`]; - it('alerts checkbox behaves as expected', () => { - isDataViewSelection(siemDataViewTitle); - defaultPatterns.forEach((pattern) => isSourcererSelection(pattern)); - openDataViewSelection(); - cy.get(SOURCERER.selectListOption).contains(dataViews[1]).click(); - isDataViewSelection(dataViews[1]); - dataViews[1] - .split(',') - .filter((pattern) => pattern !== 'fakebeat-*' && pattern !== 'siem-read*') - .forEach((pattern) => isSourcererSelection(pattern)); - - clickAlertCheckbox(); - isNotSourcererSelection(`auditbeat-*`); - isSourcererSelection(`${DEFAULT_ALERTS_INDEX}-default`); - cy.get(SOURCERER.alertCheckbox).uncheck({ force: true }); - defaultPatterns.forEach((pattern) => isSourcererSelection(pattern)); - }); - - it('shows alerts badge when index patterns change and removes when reset', () => { - clickAlertCheckbox(); - saveSourcerer(); - cy.get(SOURCERER.badgeAlerts).should(`exist`); - openSourcerer('timeline'); - cy.get(SOURCERER.badgeAlertsOption).should(`exist`); - resetSourcerer(); - saveSourcerer(); - cy.get(SOURCERER.badgeAlerts).should(`not.exist`); - openSourcerer('timeline'); - cy.get(SOURCERER.badgeAlertsOption).should(`not.exist`); - }); - }); -}); diff --git a/x-pack/test/security_solution_cypress/cypress/e2e/detection_alerts/cti_enrichments.cy.ts b/x-pack/test/security_solution_cypress/cypress/e2e/detection_alerts/cti_enrichments.cy.ts deleted file mode 100644 index 04de2c6ac6b35..0000000000000 --- a/x-pack/test/security_solution_cypress/cypress/e2e/detection_alerts/cti_enrichments.cy.ts +++ /dev/null @@ -1,197 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import { disableExpandableFlyout } from '../../tasks/api_calls/kibana_advanced_settings'; -import { getNewThreatIndicatorRule, indicatorRuleMatchingDoc } from '../../objects/rule'; -import { cleanKibana } from '../../tasks/common'; -import { login } from '../../tasks/login'; -import { - JSON_TEXT, - TABLE_CELL, - TABLE_ROWS, - THREAT_DETAILS_VIEW, - ENRICHMENT_COUNT_NOTIFICATION, - INDICATOR_MATCH_ENRICHMENT_SECTION, - INVESTIGATION_TIME_ENRICHMENT_SECTION, - THREAT_DETAILS_ACCORDION, -} from '../../screens/alerts_details'; -import { TIMELINE_FIELD } from '../../screens/rule_details'; -import { expandFirstAlert, setEnrichmentDates, viewThreatIntelTab } from '../../tasks/alerts'; -import { createRule } from '../../tasks/api_calls/rules'; -import { openJsonView, openThreatIndicatorDetails } from '../../tasks/alerts_details'; -import { addsFieldsToTimeline, visitRuleDetailsPage } from '../../tasks/rule_details'; - -// TODO: https://github.com/elastic/kibana/issues/161539 -describe('CTI Enrichment', { tags: ['@ess', '@serverless', '@brokenInServerless'] }, () => { - before(() => { - cleanKibana(); - // illegal_argument_exception: unknown setting [index.lifecycle.rollover_alias] - cy.task('esArchiverLoad', { archiveName: 'threat_indicator' }); - cy.task('esArchiverLoad', { archiveName: 'suspicious_source_event' }); - login(); - - disableExpandableFlyout(); - }); - - after(() => { - cy.task('esArchiverUnload', 'threat_indicator'); - cy.task('esArchiverUnload', 'suspicious_source_event'); - }); - - beforeEach(() => { - login(); - createRule({ ...getNewThreatIndicatorRule(), rule_id: 'rule_testing', enabled: true }).then( - (rule) => visitRuleDetailsPage(rule.body.id) - ); - }); - - // TODO: https://github.com/elastic/kibana/issues/161539 - // Skipped: https://github.com/elastic/kibana/issues/162818 - it.skip('Displays enrichment matched.* fields on the timeline', () => { - const expectedFields = { - 'threat.enrichments.matched.atomic': indicatorRuleMatchingDoc.atomic, - 'threat.enrichments.matched.type': indicatorRuleMatchingDoc.matchedType, - 'threat.enrichments.matched.field': - getNewThreatIndicatorRule().threat_mapping[0].entries[0].field, - 'threat.enrichments.matched.id': indicatorRuleMatchingDoc.matchedId, - 'threat.enrichments.matched.index': indicatorRuleMatchingDoc.matchedIndex, - }; - const fields = Object.keys(expectedFields) as Array; - - addsFieldsToTimeline('threat.enrichments.matched', fields); - - fields.forEach((field) => { - cy.get(TIMELINE_FIELD(field)).should('have.text', expectedFields[field]); - }); - }); - - it('Displays persisted enrichments on the JSON view', () => { - const expectedEnrichment = [ - { - 'indicator.file.hash.md5': ['9b6c3518a91d23ed77504b5416bfb5b3'], - 'matched.index': ['logs-ti_abusech.malware'], - 'indicator.file.type': ['elf'], - 'indicator.file.hash.tlsh': [ - '6D7312E017B517CC1371A8353BED205E9128223972AE35302E97528DF957703BAB2DBE', - ], - 'feed.name': ['AbuseCH malware'], - 'indicator.file.hash.ssdeep': [ - '1536:87vbq1lGAXSEYQjbChaAU2yU23M51DjZgSQAvcYkFtZTjzBht5:8D+CAXFYQChaAUk5ljnQssL', - ], - 'indicator.file.hash.sha256': [ - 'a04ac6d98ad989312783d4fe3456c53730b212c79a426fb215708b6c6daa3de3', - ], - 'indicator.first_seen': ['2021-03-10T08:02:14.000Z'], - 'matched.field': ['myhash.mysha256'], - 'indicator.type': ['file'], - 'matched.type': ['indicator_match_rule'], - 'matched.id': ['84cf452c1e0375c3d4412cb550bd1783358468a3b3b777da4829d72c7d6fb74f'], - 'matched.atomic': ['a04ac6d98ad989312783d4fe3456c53730b212c79a426fb215708b6c6daa3de3'], - 'indicator.file.size': [80280], - }, - ]; - - expandFirstAlert(); - openJsonView(); - - cy.get(JSON_TEXT).then((x) => { - const parsed = JSON.parse(x.text()); - expect(parsed.fields['threat.enrichments']).to.deep.equal(expectedEnrichment); - }); - }); - - it('Displays threat indicator details on the threat intel tab', () => { - const expectedThreatIndicatorData = [ - { field: 'feed.name', value: 'AbuseCH malware' }, - { field: 'indicator.file.hash.md5', value: '9b6c3518a91d23ed77504b5416bfb5b3' }, - { - field: 'indicator.file.hash.sha256', - value: 'a04ac6d98ad989312783d4fe3456c53730b212c79a426fb215708b6c6daa3de3', - }, - { - field: 'indicator.file.hash.ssdeep', - value: '1536:87vbq1lGAXSEYQjbChaAU2yU23M51DjZgSQAvcYkFtZTjzBht5:8D+CAXFYQChaAUk5ljnQssL', - }, - { - field: 'indicator.file.hash.tlsh', - value: '6D7312E017B517CC1371A8353BED205E9128223972AE35302E97528DF957703BAB2DBE', - }, - { field: 'indicator.file.size', value: '80280' }, - { field: 'indicator.file.type', value: 'elf' }, - { field: 'indicator.first_seen', value: '2021-03-10T08:02:14.000Z' }, - { field: 'indicator.type', value: 'file' }, - { - field: 'matched.atomic', - value: 'a04ac6d98ad989312783d4fe3456c53730b212c79a426fb215708b6c6daa3de3', - }, - { field: 'matched.field', value: 'myhash.mysha256' }, - { - field: 'matched.id', - value: '84cf452c1e0375c3d4412cb550bd1783358468a3b3b777da4829d72c7d6fb74f', - }, - { field: 'matched.index', value: 'logs-ti_abusech.malware' }, - { field: 'matched.type', value: 'indicator_match_rule' }, - ]; - - expandFirstAlert(); - openThreatIndicatorDetails(); - - cy.get(ENRICHMENT_COUNT_NOTIFICATION).should('have.text', '1'); - cy.get(THREAT_DETAILS_VIEW).within(() => { - cy.get(TABLE_ROWS).should('have.length', expectedThreatIndicatorData.length); - expectedThreatIndicatorData.forEach((row, index) => { - cy.get(TABLE_ROWS) - .eq(index) - .within(() => { - cy.get(TABLE_CELL).eq(0).should('have.text', row.field); - cy.get(TABLE_CELL).eq(1).should('have.text', row.value); - }); - }); - }); - }); - - describe('with additional indicators', () => { - before(() => { - cy.task('esArchiverLoad', { archiveName: 'threat_indicator2' }); - }); - - after(() => { - cy.task('esArchiverUnload', 'threat_indicator2'); - }); - - it('Displays matched fields from both indicator match rules and investigation time enrichments on Threat Intel tab', () => { - const indicatorMatchRuleEnrichment = { - field: 'myhash.mysha256', - value: 'a04ac6d98ad989312783d4fe3456c53730b212c79a426fb215708b6c6daa3de3', - feedName: 'AbuseCH malware', - }; - const investigationTimeEnrichment = { - field: 'source.ip', - value: '192.168.1.1', - feedName: 'feed_name', - }; - - expandFirstAlert(); - viewThreatIntelTab(); - setEnrichmentDates('08/05/2018 10:00 AM'); - - cy.get(`${INDICATOR_MATCH_ENRICHMENT_SECTION} ${THREAT_DETAILS_ACCORDION}`) - .should('exist') - .should( - 'have.text', - `${indicatorMatchRuleEnrichment.field} ${indicatorMatchRuleEnrichment.value} from ${indicatorMatchRuleEnrichment.feedName}` - ); - - cy.get(`${INVESTIGATION_TIME_ENRICHMENT_SECTION} ${THREAT_DETAILS_ACCORDION}`) - .should('exist') - .should( - 'have.text', - `${investigationTimeEnrichment.field} ${investigationTimeEnrichment.value} from ${investigationTimeEnrichment.feedName}` - ); - }); - }); -}); diff --git a/x-pack/test/security_solution_cypress/cypress/e2e/detection_alerts/ransomware_detection.cy.ts b/x-pack/test/security_solution_cypress/cypress/e2e/detection_alerts/ransomware_detection.cy.ts deleted file mode 100644 index 3f8da89072da8..0000000000000 --- a/x-pack/test/security_solution_cypress/cypress/e2e/detection_alerts/ransomware_detection.cy.ts +++ /dev/null @@ -1,73 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import { waitForAlertsToPopulate } from '../../tasks/create_new_rule'; -import { login } from '../../tasks/login'; -import { visitWithTimeRange } from '../../tasks/navigation'; - -import { ALERTS_URL, TIMELINES_URL } from '../../urls/navigation'; -import { ALERTS_HISTOGRAM_SERIES, ALERT_RULE_NAME, MESSAGE } from '../../screens/alerts'; -import { TIMELINE_QUERY, TIMELINE_VIEW_IN_ANALYZER } from '../../screens/timeline'; -import { selectAlertsHistogram } from '../../tasks/alerts'; -import { createTimeline } from '../../tasks/timelines'; - -// TODO: https://github.com/elastic/kibana/issues/161539 -describe( - 'Ransomware Detection Alerts', - { tags: ['@ess', '@serverless', '@brokenInServerless'] }, - () => { - before(() => { - cy.task('esArchiverLoad', { - archiveName: 'ransomware_detection', - useCreate: true, - docsOnly: true, - }); - }); - - describe('Ransomware display in Alerts Section', () => { - beforeEach(() => { - login(); - visitWithTimeRange(ALERTS_URL); - waitForAlertsToPopulate(); - }); - - describe('Alerts table', () => { - it('shows Ransomware Alerts', () => { - cy.get(ALERT_RULE_NAME).should('have.text', 'Ransomware Detection Alert'); - }); - }); - - describe('Trend Chart', () => { - beforeEach(() => { - selectAlertsHistogram(); - }); - - it('shows Ransomware Detection Alert in the trend chart', () => { - cy.get(ALERTS_HISTOGRAM_SERIES).should('have.text', 'Ransomware Detection Alert'); - }); - }); - }); - - // FLAKY: https://github.com/elastic/kibana/issues/168602 - describe.skip('Ransomware in Timelines', () => { - before(() => { - login(); - visitWithTimeRange(TIMELINES_URL); - createTimeline(); - }); - - it('Renders ransomware entries in timelines table', () => { - cy.get(TIMELINE_QUERY).type('event.code: "ransomware"{enter}'); - - // Wait for grid to load, it should have an analyzer icon - cy.get(TIMELINE_VIEW_IN_ANALYZER).should('exist'); - - cy.get(MESSAGE).should('have.text', 'Ransomware Detection Alert'); - }); - }); - } -); diff --git a/x-pack/test/security_solution_cypress/cypress/e2e/detection_alerts/ransomware_prevention.cy.ts b/x-pack/test/security_solution_cypress/cypress/e2e/detection_alerts/ransomware_prevention.cy.ts deleted file mode 100644 index fa4a647ae7f20..0000000000000 --- a/x-pack/test/security_solution_cypress/cypress/e2e/detection_alerts/ransomware_prevention.cy.ts +++ /dev/null @@ -1,79 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import { waitForAlertsToPopulate } from '../../tasks/create_new_rule'; -import { login } from '../../tasks/login'; -import { visitWithTimeRange } from '../../tasks/navigation'; - -import { ALERTS_URL, TIMELINES_URL } from '../../urls/navigation'; -import { ALERTS_HISTOGRAM_SERIES, ALERT_RULE_NAME, MESSAGE } from '../../screens/alerts'; -import { TIMELINE_QUERY, TIMELINE_VIEW_IN_ANALYZER } from '../../screens/timeline'; -import { selectAlertsHistogram } from '../../tasks/alerts'; -import { createTimeline } from '../../tasks/timelines'; -import { cleanKibana } from '../../tasks/common'; - -// TODO: https://github.com/elastic/kibana/issues/161539 -describe( - 'Ransomware Prevention Alerts', - { tags: ['@ess', '@serverless', '@brokenInServerless'] }, - () => { - before(() => { - cleanKibana(); - cy.task('esArchiverLoad', { - archiveName: 'ransomware_prevention', - useCreate: true, - docsOnly: true, - }); - }); - - after(() => { - cy.task('esArchiverUnload', 'ransomware_prevention'); - }); - - describe('Ransomware display in Alerts Section', () => { - beforeEach(() => { - login(); - visitWithTimeRange(ALERTS_URL); - waitForAlertsToPopulate(); - }); - - describe('Alerts table', () => { - it('shows Ransomware Alerts', () => { - cy.get(ALERT_RULE_NAME).should('have.text', 'Ransomware Prevention Alert'); - }); - }); - - describe('Trend Chart', () => { - beforeEach(() => { - selectAlertsHistogram(); - }); - - it('shows Ransomware Prevention Alert in the trend chart', () => { - cy.get(ALERTS_HISTOGRAM_SERIES).should('have.text', 'Ransomware Prevention Alert'); - }); - }); - }); - - describe('Ransomware in Timelines', () => { - beforeEach(() => { - login(); - visitWithTimeRange(TIMELINES_URL); - - createTimeline(); - }); - - it('Renders ransomware entries in timelines table', () => { - cy.get(TIMELINE_QUERY).type('event.code: "ransomware"{enter}'); - - // Wait for grid to load, it should have an analyzer icon - cy.get(TIMELINE_VIEW_IN_ANALYZER).should('exist'); - - cy.get(MESSAGE).should('have.text', 'Ransomware Prevention Alert'); - }); - }); - } -); diff --git a/x-pack/test/security_solution_cypress/cypress/e2e/detection_response/detection_alerts/alert_status.cy.ts b/x-pack/test/security_solution_cypress/cypress/e2e/detection_response/detection_alerts/alert_status.cy.ts new file mode 100644 index 0000000000000..5d56239e74c99 --- /dev/null +++ b/x-pack/test/security_solution_cypress/cypress/e2e/detection_response/detection_alerts/alert_status.cy.ts @@ -0,0 +1,230 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { getNewRule } from '../../../objects/rule'; +import { ALERTS_COUNT, SELECTED_ALERTS } from '../../../screens/alerts'; + +import { + selectNumberOfAlerts, + waitForAlerts, + markAcknowledgedFirstAlert, + markAlertsAcknowledged, + goToAcknowledgedAlerts, + closeFirstAlert, + closeAlerts, + goToClosedAlerts, + goToOpenedAlerts, + openAlerts, + openFirstAlert, +} from '../../../tasks/alerts'; +import { createRule } from '../../../tasks/api_calls/rules'; +import { deleteAlertsAndRules } from '../../../tasks/common'; +import { waitForAlertsToPopulate } from '../../../tasks/create_new_rule'; +import { login } from '../../../tasks/login'; +import { visit } from '../../../tasks/navigation'; + +import { ALERTS_URL } from '../../../urls/navigation'; + +describe('Changing alert status', { tags: ['@ess', '@serverless'] }, () => { + before(() => { + cy.task('esArchiverLoad', { archiveName: 'auditbeat_big' }); + }); + + context('Opening alerts', () => { + beforeEach(() => { + login(); + deleteAlertsAndRules(); + createRule(getNewRule()); + visit(ALERTS_URL); + waitForAlertsToPopulate(); + selectNumberOfAlerts(3); + cy.get(SELECTED_ALERTS).should('have.text', `Selected 3 alerts`); + closeAlerts(); + waitForAlerts(); + }); + + after(() => { + cy.task('esArchiverUnload', 'auditbeat_big'); + }); + + it('can mark a closed alert as open', () => { + waitForAlertsToPopulate(); + cy.get(ALERTS_COUNT) + .invoke('text') + .then((numberOfOpenedAlertsText) => { + const numberOfOpenedAlerts = parseInt(numberOfOpenedAlertsText, 10); + goToClosedAlerts(); + waitForAlerts(); + cy.get(ALERTS_COUNT) + .invoke('text') + .then((alertNumberString) => { + const numberOfAlerts = alertNumberString.split(' ')[0]; + const numberOfAlertsToBeOpened = 1; + + openFirstAlert(); + waitForAlerts(); + + const expectedNumberOfAlerts = +numberOfAlerts - numberOfAlertsToBeOpened; + cy.get(ALERTS_COUNT).contains(expectedNumberOfAlerts); + + goToOpenedAlerts(); + waitForAlerts(); + + cy.get(ALERTS_COUNT).contains(`${numberOfOpenedAlerts + numberOfAlertsToBeOpened}`); + }); + }); + }); + + it('can bulk open alerts', () => { + waitForAlertsToPopulate(); + cy.get(ALERTS_COUNT) + .invoke('text') + .then((numberOfOpenedAlertsText) => { + const numberOfOpenedAlerts = parseInt(numberOfOpenedAlertsText, 10); + goToClosedAlerts(); + waitForAlerts(); + cy.get(ALERTS_COUNT) + .invoke('text') + .then((alertNumberString) => { + const numberOfAlerts = alertNumberString.split(' ')[0]; + const numberOfAlertsToBeOpened = 2; + const numberOfAlertsToBeSelected = 2; + + selectNumberOfAlerts(numberOfAlertsToBeSelected); + cy.get(SELECTED_ALERTS).should( + 'have.text', + `Selected ${numberOfAlertsToBeSelected} alerts` + ); + + openAlerts(); + waitForAlerts(); + + const expectedNumberOfAlerts = +numberOfAlerts - numberOfAlertsToBeOpened; + cy.get(ALERTS_COUNT).contains(expectedNumberOfAlerts); + + goToOpenedAlerts(); + waitForAlerts(); + + cy.get(ALERTS_COUNT).contains(`${numberOfOpenedAlerts + numberOfAlertsToBeOpened}`); + }); + }); + }); + }); + + context('Marking alerts as acknowledged', () => { + beforeEach(() => { + login(); + deleteAlertsAndRules(); + createRule(getNewRule()); + visit(ALERTS_URL); + waitForAlertsToPopulate(); + }); + + it('can mark alert as acknowledged', () => { + cy.get(ALERTS_COUNT) + .invoke('text') + .then((alertNumberString) => { + const numberOfAlerts = alertNumberString.split(' ')[0]; + const numberOfAlertsToBeMarkedAcknowledged = 1; + + markAcknowledgedFirstAlert(); + waitForAlerts(); + const expectedNumberOfAlerts = +numberOfAlerts - numberOfAlertsToBeMarkedAcknowledged; + cy.get(ALERTS_COUNT).contains(expectedNumberOfAlerts); + + goToAcknowledgedAlerts(); + waitForAlerts(); + + cy.get(ALERTS_COUNT).contains(`${numberOfAlertsToBeMarkedAcknowledged}`); + }); + }); + + it('can bulk mark alerts as acknowledged', () => { + cy.get(ALERTS_COUNT) + .invoke('text') + .then((alertNumberString) => { + const numberOfAlerts = alertNumberString.split(' ')[0]; + const numberOfAlertsToBeMarkedAcknowledged = 2; + const numberOfAlertsToBeSelected = 2; + + selectNumberOfAlerts(numberOfAlertsToBeSelected); + + markAlertsAcknowledged(); + waitForAlerts(); + const expectedNumberOfAlerts = +numberOfAlerts - numberOfAlertsToBeMarkedAcknowledged; + cy.get(ALERTS_COUNT).contains(expectedNumberOfAlerts); + + goToAcknowledgedAlerts(); + waitForAlerts(); + + cy.get(ALERTS_COUNT).contains(numberOfAlertsToBeMarkedAcknowledged); + }); + }); + }); + + context('Closing alerts', () => { + beforeEach(() => { + login(); + deleteAlertsAndRules(); + createRule(getNewRule({ rule_id: '1', max_signals: 100 })); + visit(ALERTS_URL); + waitForAlertsToPopulate(); + }); + it('can close an alert', () => { + const numberOfAlertsToBeClosed = 1; + cy.get(ALERTS_COUNT) + .invoke('text') + .then((alertNumberString) => { + const numberOfAlerts = alertNumberString.split(' ')[0]; + cy.get(ALERTS_COUNT).should('have.text', `${numberOfAlerts} alerts`); + + selectNumberOfAlerts(numberOfAlertsToBeClosed); + + cy.get(SELECTED_ALERTS).should('have.text', `Selected ${numberOfAlertsToBeClosed} alert`); + + closeFirstAlert(); + waitForAlerts(); + + const expectedNumberOfAlertsAfterClosing = +numberOfAlerts - numberOfAlertsToBeClosed; + cy.get(ALERTS_COUNT).contains(expectedNumberOfAlertsAfterClosing); + + goToClosedAlerts(); + waitForAlerts(); + + cy.get(ALERTS_COUNT).contains(numberOfAlertsToBeClosed); + }); + }); + + it('can bulk close alerts', () => { + const numberOfAlertsToBeClosed = 2; + cy.get(ALERTS_COUNT) + .invoke('text') + .then((alertNumberString) => { + const numberOfAlerts = alertNumberString.split(' ')[0]; + cy.get(ALERTS_COUNT).should('have.text', `${numberOfAlerts} alerts`); + + selectNumberOfAlerts(numberOfAlertsToBeClosed); + + cy.get(SELECTED_ALERTS).should( + 'have.text', + `Selected ${numberOfAlertsToBeClosed} alerts` + ); + + closeAlerts(); + waitForAlerts(); + + const expectedNumberOfAlertsAfterClosing = +numberOfAlerts - numberOfAlertsToBeClosed; + cy.get(ALERTS_COUNT).contains(expectedNumberOfAlertsAfterClosing); + + goToClosedAlerts(); + waitForAlerts(); + + cy.get(ALERTS_COUNT).contains(numberOfAlertsToBeClosed); + }); + }); + }); +}); diff --git a/x-pack/test/security_solution_cypress/cypress/e2e/detection_alerts/alert_tags.cy.ts b/x-pack/test/security_solution_cypress/cypress/e2e/detection_response/detection_alerts/alert_tags.cy.ts similarity index 83% rename from x-pack/test/security_solution_cypress/cypress/e2e/detection_alerts/alert_tags.cy.ts rename to x-pack/test/security_solution_cypress/cypress/e2e/detection_response/detection_alerts/alert_tags.cy.ts index ff8e890ab9966..c7b6b16a45c2f 100644 --- a/x-pack/test/security_solution_cypress/cypress/e2e/detection_alerts/alert_tags.cy.ts +++ b/x-pack/test/security_solution_cypress/cypress/e2e/detection_response/detection_alerts/alert_tags.cy.ts @@ -5,28 +5,27 @@ * 2.0. */ -import { getNewRule } from '../../objects/rule'; +import { getNewRule } from '../../../objects/rule'; import { clickAlertTag, openAlertTaggingBulkActionMenu, selectNumberOfAlerts, updateAlertTags, -} from '../../tasks/alerts'; -import { createRule } from '../../tasks/api_calls/rules'; -import { cleanKibana, deleteAlertsAndRules } from '../../tasks/common'; -import { login } from '../../tasks/login'; -import { visitWithTimeRange } from '../../tasks/navigation'; -import { ALERTS_URL } from '../../urls/navigation'; -import { waitForAlertsToPopulate } from '../../tasks/create_new_rule'; +} from '../../../tasks/alerts'; +import { createRule } from '../../../tasks/api_calls/rules'; +import { cleanKibana, deleteAlertsAndRules } from '../../../tasks/common'; +import { login } from '../../../tasks/login'; +import { visitWithTimeRange } from '../../../tasks/navigation'; +import { ALERTS_URL } from '../../../urls/navigation'; +import { waitForAlertsToPopulate } from '../../../tasks/create_new_rule'; import { ALERTS_TABLE_ROW_LOADER, MIXED_ALERT_TAG, SELECTED_ALERT_TAG, UNSELECTED_ALERT_TAG, -} from '../../screens/alerts'; +} from '../../../screens/alerts'; -// TODO: https://github.com/elastic/kibana/issues/161539 -describe('Alert tagging', { tags: ['@ess', '@serverless', '@brokenInServerless'] }, () => { +describe('Alert tagging', { tags: ['@ess', '@serverless'] }, () => { before(() => { cleanKibana(); cy.task('esArchiverResetKibana'); diff --git a/x-pack/test/security_solution_cypress/cypress/e2e/detection_alerts/alerts_detection_callouts_index_outdated.cy.ts b/x-pack/test/security_solution_cypress/cypress/e2e/detection_response/detection_alerts/alerts_detection_callouts_index_outdated.cy.ts similarity index 91% rename from x-pack/test/security_solution_cypress/cypress/e2e/detection_alerts/alerts_detection_callouts_index_outdated.cy.ts rename to x-pack/test/security_solution_cypress/cypress/e2e/detection_response/detection_alerts/alerts_detection_callouts_index_outdated.cy.ts index 686edd1bf4f81..bbdba453351bb 100644 --- a/x-pack/test/security_solution_cypress/cypress/e2e/detection_alerts/alerts_detection_callouts_index_outdated.cy.ts +++ b/x-pack/test/security_solution_cypress/cypress/e2e/detection_response/detection_alerts/alerts_detection_callouts_index_outdated.cy.ts @@ -7,21 +7,21 @@ import { ROLES } from '@kbn/security-solution-plugin/common/test'; -import { ALERTS_URL } from '../../urls/navigation'; -import { RULES_MANAGEMENT_URL } from '../../urls/rules_management'; -import { ruleDetailsUrl } from '../../urls/rule_details'; -import { getNewRule } from '../../objects/rule'; -import { PAGE_TITLE } from '../../screens/common/page'; +import { ALERTS_URL } from '../../../urls/navigation'; +import { RULES_MANAGEMENT_URL } from '../../../urls/rules_management'; +import { ruleDetailsUrl } from '../../../urls/rule_details'; +import { getNewRule } from '../../../objects/rule'; +import { PAGE_TITLE } from '../../../screens/common/page'; -import { login } from '../../tasks/login'; -import { visit } from '../../tasks/navigation'; +import { login } from '../../../tasks/login'; +import { visit } from '../../../tasks/navigation'; -import { createRule, deleteCustomRule } from '../../tasks/api_calls/rules'; +import { createRule, deleteCustomRule } from '../../../tasks/api_calls/rules'; import { getCallOut, NEED_ADMIN_FOR_UPDATE_CALLOUT, waitForCallOutToBeShown, -} from '../../tasks/common/callouts'; +} from '../../../tasks/common/callouts'; const loadPageAsPlatformEngineerUser = (url: string) => { login(ROLES.soc_manager); @@ -33,7 +33,6 @@ const waitForPageTitleToBeShown = () => { cy.get(PAGE_TITLE).should('be.visible'); }; -// TODO: https://github.com/elastic/kibana/issues/161539 Does it need to run in Serverless? describe( 'Detections > Need Admin Callouts indicating an admin is needed to migrate the alert data set', { tags: ['@ess', '@skipInServerless'] }, diff --git a/x-pack/test/security_solution_cypress/cypress/e2e/detection_alerts/missing_privileges_callout.cy.ts b/x-pack/test/security_solution_cypress/cypress/e2e/detection_response/detection_alerts/missing_privileges_callout.cy.ts similarity index 88% rename from x-pack/test/security_solution_cypress/cypress/e2e/detection_alerts/missing_privileges_callout.cy.ts rename to x-pack/test/security_solution_cypress/cypress/e2e/detection_response/detection_alerts/missing_privileges_callout.cy.ts index e12dabe044598..f38899300ed7f 100644 --- a/x-pack/test/security_solution_cypress/cypress/e2e/detection_alerts/missing_privileges_callout.cy.ts +++ b/x-pack/test/security_solution_cypress/cypress/e2e/detection_response/detection_alerts/missing_privileges_callout.cy.ts @@ -7,21 +7,21 @@ import { ROLES } from '@kbn/security-solution-plugin/common/test'; -import { ALERTS_URL } from '../../urls/navigation'; -import { RULES_MANAGEMENT_URL } from '../../urls/rules_management'; -import { getNewRule } from '../../objects/rule'; -import { PAGE_TITLE } from '../../screens/common/page'; - -import { login } from '../../tasks/login'; -import { visit } from '../../tasks/navigation'; -import { createRule, deleteCustomRule } from '../../tasks/api_calls/rules'; +import { ALERTS_URL } from '../../../urls/navigation'; +import { RULES_MANAGEMENT_URL } from '../../../urls/rules_management'; +import { getNewRule } from '../../../objects/rule'; +import { PAGE_TITLE } from '../../../screens/common/page'; + +import { login } from '../../../tasks/login'; +import { visit } from '../../../tasks/navigation'; +import { createRule, deleteCustomRule } from '../../../tasks/api_calls/rules'; import { getCallOut, waitForCallOutToBeShown, dismissCallOut, MISSING_PRIVILEGES_CALLOUT, -} from '../../tasks/common/callouts'; -import { ruleDetailsUrl } from '../../urls/rule_details'; +} from '../../../tasks/common/callouts'; +import { ruleDetailsUrl } from '../../../urls/rule_details'; const loadPageAsReadOnlyUser = (url: string) => { login(ROLES.reader); diff --git a/x-pack/test/security_solution_cypress/cypress/e2e/detection_response/detection_alerts/threat_match_enrichments.cy.ts b/x-pack/test/security_solution_cypress/cypress/e2e/detection_response/detection_alerts/threat_match_enrichments.cy.ts new file mode 100644 index 0000000000000..2bda5a6acadc2 --- /dev/null +++ b/x-pack/test/security_solution_cypress/cypress/e2e/detection_response/detection_alerts/threat_match_enrichments.cy.ts @@ -0,0 +1,201 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { disableExpandableFlyout } from '../../../tasks/api_calls/kibana_advanced_settings'; +import { getNewThreatIndicatorRule, indicatorRuleMatchingDoc } from '../../../objects/rule'; +import { cleanKibana } from '../../../tasks/common'; +import { login } from '../../../tasks/login'; +import { + JSON_TEXT, + TABLE_CELL, + TABLE_ROWS, + THREAT_DETAILS_VIEW, + ENRICHMENT_COUNT_NOTIFICATION, + INDICATOR_MATCH_ENRICHMENT_SECTION, + INVESTIGATION_TIME_ENRICHMENT_SECTION, + THREAT_DETAILS_ACCORDION, +} from '../../../screens/alerts_details'; +import { TIMELINE_FIELD } from '../../../screens/rule_details'; +import { expandFirstAlert, setEnrichmentDates, viewThreatIntelTab } from '../../../tasks/alerts'; +import { createRule } from '../../../tasks/api_calls/rules'; +import { openJsonView, openThreatIndicatorDetails } from '../../../tasks/alerts_details'; +import { addsFieldsToTimeline, visitRuleDetailsPage } from '../../../tasks/rule_details'; + +// TODO: https://github.com/elastic/kibana/issues/161539 +describe( + 'Threat Match Enrichment', + { tags: ['@ess', '@serverless', '@brokenInServerless'] }, + () => { + before(() => { + cleanKibana(); + // illegal_argument_exception: unknown setting [index.lifecycle.rollover_alias] + cy.task('esArchiverLoad', { archiveName: 'threat_indicator' }); + cy.task('esArchiverLoad', { archiveName: 'suspicious_source_event' }); + login(); + + disableExpandableFlyout(); + }); + + after(() => { + cy.task('esArchiverUnload', 'threat_indicator'); + cy.task('esArchiverUnload', 'suspicious_source_event'); + }); + + beforeEach(() => { + login(); + createRule({ ...getNewThreatIndicatorRule(), rule_id: 'rule_testing', enabled: true }).then( + (rule) => visitRuleDetailsPage(rule.body.id) + ); + }); + + // TODO: https://github.com/elastic/kibana/issues/161539 + // Skipped: https://github.com/elastic/kibana/issues/162818 + it.skip('Displays enrichment matched.* fields on the timeline', () => { + const expectedFields = { + 'threat.enrichments.matched.atomic': indicatorRuleMatchingDoc.atomic, + 'threat.enrichments.matched.type': indicatorRuleMatchingDoc.matchedType, + 'threat.enrichments.matched.field': + getNewThreatIndicatorRule().threat_mapping[0].entries[0].field, + 'threat.enrichments.matched.id': indicatorRuleMatchingDoc.matchedId, + 'threat.enrichments.matched.index': indicatorRuleMatchingDoc.matchedIndex, + }; + const fields = Object.keys(expectedFields) as Array; + + addsFieldsToTimeline('threat.enrichments.matched', fields); + + fields.forEach((field) => { + cy.get(TIMELINE_FIELD(field)).should('have.text', expectedFields[field]); + }); + }); + + it('Displays persisted enrichments on the JSON view', () => { + const expectedEnrichment = [ + { + 'indicator.file.hash.md5': ['9b6c3518a91d23ed77504b5416bfb5b3'], + 'matched.index': ['logs-ti_abusech.malware'], + 'indicator.file.type': ['elf'], + 'indicator.file.hash.tlsh': [ + '6D7312E017B517CC1371A8353BED205E9128223972AE35302E97528DF957703BAB2DBE', + ], + 'feed.name': ['AbuseCH malware'], + 'indicator.file.hash.ssdeep': [ + '1536:87vbq1lGAXSEYQjbChaAU2yU23M51DjZgSQAvcYkFtZTjzBht5:8D+CAXFYQChaAUk5ljnQssL', + ], + 'indicator.file.hash.sha256': [ + 'a04ac6d98ad989312783d4fe3456c53730b212c79a426fb215708b6c6daa3de3', + ], + 'indicator.first_seen': ['2021-03-10T08:02:14.000Z'], + 'matched.field': ['myhash.mysha256'], + 'indicator.type': ['file'], + 'matched.type': ['indicator_match_rule'], + 'matched.id': ['84cf452c1e0375c3d4412cb550bd1783358468a3b3b777da4829d72c7d6fb74f'], + 'matched.atomic': ['a04ac6d98ad989312783d4fe3456c53730b212c79a426fb215708b6c6daa3de3'], + 'indicator.file.size': [80280], + }, + ]; + + expandFirstAlert(); + openJsonView(); + + cy.get(JSON_TEXT).then((x) => { + const parsed = JSON.parse(x.text()); + expect(parsed.fields['threat.enrichments']).to.deep.equal(expectedEnrichment); + }); + }); + + it('Displays threat indicator details on the threat intel tab', () => { + const expectedThreatIndicatorData = [ + { field: 'feed.name', value: 'AbuseCH malware' }, + { field: 'indicator.file.hash.md5', value: '9b6c3518a91d23ed77504b5416bfb5b3' }, + { + field: 'indicator.file.hash.sha256', + value: 'a04ac6d98ad989312783d4fe3456c53730b212c79a426fb215708b6c6daa3de3', + }, + { + field: 'indicator.file.hash.ssdeep', + value: '1536:87vbq1lGAXSEYQjbChaAU2yU23M51DjZgSQAvcYkFtZTjzBht5:8D+CAXFYQChaAUk5ljnQssL', + }, + { + field: 'indicator.file.hash.tlsh', + value: '6D7312E017B517CC1371A8353BED205E9128223972AE35302E97528DF957703BAB2DBE', + }, + { field: 'indicator.file.size', value: '80280' }, + { field: 'indicator.file.type', value: 'elf' }, + { field: 'indicator.first_seen', value: '2021-03-10T08:02:14.000Z' }, + { field: 'indicator.type', value: 'file' }, + { + field: 'matched.atomic', + value: 'a04ac6d98ad989312783d4fe3456c53730b212c79a426fb215708b6c6daa3de3', + }, + { field: 'matched.field', value: 'myhash.mysha256' }, + { + field: 'matched.id', + value: '84cf452c1e0375c3d4412cb550bd1783358468a3b3b777da4829d72c7d6fb74f', + }, + { field: 'matched.index', value: 'logs-ti_abusech.malware' }, + { field: 'matched.type', value: 'indicator_match_rule' }, + ]; + + expandFirstAlert(); + openThreatIndicatorDetails(); + + cy.get(ENRICHMENT_COUNT_NOTIFICATION).should('have.text', '1'); + cy.get(THREAT_DETAILS_VIEW).within(() => { + cy.get(TABLE_ROWS).should('have.length', expectedThreatIndicatorData.length); + expectedThreatIndicatorData.forEach((row, index) => { + cy.get(TABLE_ROWS) + .eq(index) + .within(() => { + cy.get(TABLE_CELL).eq(0).should('have.text', row.field); + cy.get(TABLE_CELL).eq(1).should('have.text', row.value); + }); + }); + }); + }); + + describe('with additional indicators', () => { + before(() => { + cy.task('esArchiverLoad', { archiveName: 'threat_indicator2' }); + }); + + after(() => { + cy.task('esArchiverUnload', 'threat_indicator2'); + }); + + it('Displays matched fields from both indicator match rules and investigation time enrichments on Threat Intel tab', () => { + const indicatorMatchRuleEnrichment = { + field: 'myhash.mysha256', + value: 'a04ac6d98ad989312783d4fe3456c53730b212c79a426fb215708b6c6daa3de3', + feedName: 'AbuseCH malware', + }; + const investigationTimeEnrichment = { + field: 'source.ip', + value: '192.168.1.1', + feedName: 'feed_name', + }; + + expandFirstAlert(); + viewThreatIntelTab(); + setEnrichmentDates('08/05/2018 10:00 AM'); + + cy.get(`${INDICATOR_MATCH_ENRICHMENT_SECTION} ${THREAT_DETAILS_ACCORDION}`) + .should('exist') + .should( + 'have.text', + `${indicatorMatchRuleEnrichment.field} ${indicatorMatchRuleEnrichment.value} from ${indicatorMatchRuleEnrichment.feedName}` + ); + + cy.get(`${INVESTIGATION_TIME_ENRICHMENT_SECTION} ${THREAT_DETAILS_ACCORDION}`) + .should('exist') + .should( + 'have.text', + `${investigationTimeEnrichment.field} ${investigationTimeEnrichment.value} from ${investigationTimeEnrichment.feedName}` + ); + }); + }); + } +); diff --git a/x-pack/test/security_solution_cypress/cypress/e2e/detection_response/rule_actions/rule_actions_pli_complete.cy.ts b/x-pack/test/security_solution_cypress/cypress/e2e/detection_response/rule_actions/rule_actions_pli_complete.cy.ts new file mode 100644 index 0000000000000..6d3491a7e3acc --- /dev/null +++ b/x-pack/test/security_solution_cypress/cypress/e2e/detection_response/rule_actions/rule_actions_pli_complete.cy.ts @@ -0,0 +1,72 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { getNewRule } from '../../../objects/rule'; + +import { + INDEX_SELECTOR, + SLACK_ACTION_BTN, + WEBHOOK_ACTION_BTN, + EMAIL_ACTION_BTN, + ACTION_BTN, +} from '../../../screens/common/rule_actions'; + +import { createRule } from '../../../tasks/api_calls/rules'; + +import { RULES_MANAGEMENT_URL } from '../../../urls/rules_management'; +import { cleanKibana, deleteAlertsAndRules } from '../../../tasks/common'; +import { goToActionsStepTab } from '../../../tasks/create_new_rule'; +import { login } from '../../../tasks/login'; + +import { editFirstRule } from '../../../tasks/alerts_detection_rules'; + +import { visit } from '../../../tasks/navigation'; + +const rule = getNewRule(); + +describe( + 'Rule actions PLI complete product tier', + { + tags: ['@serverless'], + + env: { + ftrConfig: { + productTypes: [ + { product_line: 'security', product_tier: 'complete' }, + { product_line: 'endpoint', product_tier: 'complete' }, + ], + }, + }, + }, + () => { + before(() => { + cleanKibana(); + login(); + }); + + beforeEach(() => { + deleteAlertsAndRules(); + createRule(rule); + login(); + }); + + it('more than 3 rule actions should be available', () => { + visit(RULES_MANAGEMENT_URL); + editFirstRule(); + + goToActionsStepTab(); + + // all actions available + cy.get(ACTION_BTN).should('have.length.greaterThan', 4); + + cy.get(INDEX_SELECTOR).should('be.visible'); + cy.get(SLACK_ACTION_BTN).should('be.visible'); + cy.get(EMAIL_ACTION_BTN).should('be.visible'); + cy.get(WEBHOOK_ACTION_BTN).should('be.visible'); + }); + } +); diff --git a/x-pack/test/security_solution_cypress/cypress/e2e/detection_response/rule_actions/rule_actions_pli_essentials.cy.ts b/x-pack/test/security_solution_cypress/cypress/e2e/detection_response/rule_actions/rule_actions_pli_essentials.cy.ts new file mode 100644 index 0000000000000..1555b1788f6ce --- /dev/null +++ b/x-pack/test/security_solution_cypress/cypress/e2e/detection_response/rule_actions/rule_actions_pli_essentials.cy.ts @@ -0,0 +1,74 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { getNewRule } from '../../../objects/rule'; + +import { + INDEX_SELECTOR, + SLACK_ACTION_BTN, + WEBHOOK_ACTION_BTN, + EMAIL_ACTION_BTN, + ACTION_BTN, +} from '../../../screens/common/rule_actions'; + +import { createRule } from '../../../tasks/api_calls/rules'; + +import { RULES_MANAGEMENT_URL } from '../../../urls/rules_management'; +import { cleanKibana, deleteAlertsAndRules } from '../../../tasks/common'; +import { goToActionsStepTab } from '../../../tasks/create_new_rule'; +import { login } from '../../../tasks/login'; + +import { editFirstRule } from '../../../tasks/alerts_detection_rules'; + +import { visit } from '../../../tasks/navigation'; + +const rule = getNewRule(); + +describe( + 'Rule actions PLI essentials product tier', + { + tags: ['@serverless'], + + env: { + ftrConfig: { + productTypes: [ + { product_line: 'security', product_tier: 'essentials' }, + { product_line: 'endpoint', product_tier: 'essentials' }, + ], + }, + }, + }, + () => { + before(() => { + cleanKibana(); + login(); + }); + + beforeEach(() => { + deleteAlertsAndRules(); + createRule(rule); + login(); + }); + + it('only 3 rule actions should be available', () => { + visit(RULES_MANAGEMENT_URL); + editFirstRule(); + + goToActionsStepTab(); + + // only 3 basic actions available + cy.get(ACTION_BTN).should('have.length', 3); + + cy.get(INDEX_SELECTOR).should('be.visible'); + cy.get(SLACK_ACTION_BTN).should('be.visible'); + cy.get(EMAIL_ACTION_BTN).should('be.visible'); + + // webhook is not available + cy.get(WEBHOOK_ACTION_BTN).should('not.exist'); + }); + } +); diff --git a/x-pack/test/security_solution_cypress/cypress/e2e/detection_response/sourcerer/create_runtime_field.cy.ts b/x-pack/test/security_solution_cypress/cypress/e2e/detection_response/sourcerer/create_runtime_field.cy.ts new file mode 100644 index 0000000000000..2fd13f8b6696d --- /dev/null +++ b/x-pack/test/security_solution_cypress/cypress/e2e/detection_response/sourcerer/create_runtime_field.cy.ts @@ -0,0 +1,58 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { login } from '../../../tasks/login'; +import { visitWithTimeRange } from '../../../tasks/navigation'; +import { openTimelineUsingToggle } from '../../../tasks/security_main'; +import { openTimelineFieldsBrowser, populateTimeline } from '../../../tasks/timeline'; + +import { hostsUrl, ALERTS_URL } from '../../../urls/navigation'; + +import { createRule } from '../../../tasks/api_calls/rules'; + +import { getNewRule } from '../../../objects/rule'; +import { refreshPage } from '../../../tasks/security_header'; +import { waitForAlertsToPopulate } from '../../../tasks/create_new_rule'; +import { createField } from '../../../tasks/create_runtime_field'; +import { openAlertsFieldBrowser } from '../../../tasks/alerts'; +import { deleteRuntimeField } from '../../../tasks/sourcerer'; +import { GET_DATA_GRID_HEADER } from '../../../screens/common/data_grid'; +import { GET_TIMELINE_HEADER } from '../../../screens/timeline'; + +const alertRunTimeField = 'field.name.alert.page'; +const timelineRuntimeField = 'field.name.timeline'; + +describe('Create DataView runtime field', { tags: ['@ess', '@serverless'] }, () => { + before(() => { + deleteRuntimeField('security-solution-default', alertRunTimeField); + deleteRuntimeField('security-solution-default', timelineRuntimeField); + }); + + beforeEach(() => { + login(); + }); + + it('adds field to alert table', () => { + visitWithTimeRange(ALERTS_URL); + createRule(getNewRule()); + refreshPage(); + waitForAlertsToPopulate(); + openAlertsFieldBrowser(); + createField(alertRunTimeField); + cy.get(GET_DATA_GRID_HEADER(alertRunTimeField)).should('exist'); + }); + + it('adds field to timeline', () => { + visitWithTimeRange(hostsUrl('allHosts')); + openTimelineUsingToggle(); + populateTimeline(); + openTimelineFieldsBrowser(); + + createField(timelineRuntimeField); + cy.get(GET_TIMELINE_HEADER(timelineRuntimeField)).should('exist'); + }); +}); diff --git a/x-pack/test/security_solution_cypress/cypress/e2e/detection_response/sourcerer/sourcerer.cy.ts b/x-pack/test/security_solution_cypress/cypress/e2e/detection_response/sourcerer/sourcerer.cy.ts new file mode 100644 index 0000000000000..d26543bea97f7 --- /dev/null +++ b/x-pack/test/security_solution_cypress/cypress/e2e/detection_response/sourcerer/sourcerer.cy.ts @@ -0,0 +1,115 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { DEFAULT_INDEX_PATTERN } from '@kbn/security-solution-plugin/common/constants'; + +import { login } from '../../../tasks/login'; +import { visitWithTimeRange } from '../../../tasks/navigation'; + +import { hostsUrl } from '../../../urls/navigation'; +import { + addIndexToDefault, + deselectSourcererOptions, + isDataViewSelection, + isHostsStatValue, + isKibanaDataViewOption, + isNotSourcererSelection, + isSourcererOptions, + isSourcererSelection, + openAdvancedSettings, + openDataViewSelection, + openSourcerer, + resetSourcerer, + saveSourcerer, +} from '../../../tasks/sourcerer'; +import { postDataView } from '../../../tasks/common'; +import { SOURCERER } from '../../../screens/sourcerer'; + +const siemDataViewTitle = 'Security Default Data View'; +const dataViews = ['auditbeat-*,fakebeat-*', 'auditbeat-*,*beat*,siem-read*,.kibana*,fakebeat-*']; + +describe('Sourcerer', { tags: ['@ess', '@serverless'] }, () => { + before(() => { + cy.task('esArchiverResetKibana'); + dataViews.forEach((dataView: string) => postDataView(dataView)); + }); + + beforeEach(() => { + cy.clearLocalStorage(); + login(); + visitWithTimeRange(hostsUrl('allHosts')); + }); + + it('correctly loads SIEM data view', () => { + openSourcerer(); + isDataViewSelection(siemDataViewTitle); + openAdvancedSettings(); + isSourcererSelection(`auditbeat-*`); + isSourcererOptions(DEFAULT_INDEX_PATTERN.filter((pattern) => pattern !== 'auditbeat-*')); + }); + + describe('Modified badge', () => { + it('Selecting new data view does not add a modified badge', () => { + cy.get(SOURCERER.badgeModified).should(`not.exist`); + openSourcerer(); + cy.get(SOURCERER.badgeModifiedOption).should(`not.exist`); + openDataViewSelection(); + isKibanaDataViewOption(dataViews); + cy.get(SOURCERER.selectListDefaultOption).should(`contain`, siemDataViewTitle); + cy.get(SOURCERER.selectListOption).contains(dataViews[1]).click(); + isDataViewSelection(dataViews[1]); + saveSourcerer(); + cy.get(SOURCERER.badgeModified).should(`not.exist`); + openSourcerer(); + cy.get(SOURCERER.badgeModifiedOption).should(`not.exist`); + }); + + it('shows modified badge when index patterns change and removes when reset', () => { + openSourcerer(); + openDataViewSelection(); + cy.get(SOURCERER.selectListOption).contains(dataViews[1]).click(); + isDataViewSelection(dataViews[1]); + openAdvancedSettings(); + const patterns = dataViews[1].split(','); + deselectSourcererOptions([patterns[0]]); + saveSourcerer(); + cy.get(SOURCERER.badgeModified).should(`exist`); + openSourcerer(); + cy.get(SOURCERER.badgeModifiedOption).should(`exist`); + resetSourcerer(); + saveSourcerer(); + cy.get(SOURCERER.badgeModified).should(`not.exist`); + openSourcerer(); + cy.get(SOURCERER.badgeModifiedOption).should(`not.exist`); + isDataViewSelection(siemDataViewTitle); + }); + }); + + it('disables save when no patterns are selected', () => { + openSourcerer(); + openAdvancedSettings(); + cy.get(SOURCERER.saveButton).should('be.enabled'); + deselectSourcererOptions(['auditbeat-*']); + cy.get(SOURCERER.saveButton).should('be.disabled'); + }); + + it( + 'adds a pattern to the default index and correctly filters out auditbeat-*', + { tags: '@brokenInServerless' }, + () => { + openSourcerer(); + isSourcererSelection(`auditbeat-*`); + isNotSourcererSelection('*beat*'); + addIndexToDefault('*beat*'); + isHostsStatValue('1'); + openSourcerer(); + openAdvancedSettings(); + isSourcererSelection(`auditbeat-*`); + isSourcererSelection('*beat*'); + } + ); +}); diff --git a/x-pack/test/security_solution_cypress/cypress/e2e/detection_response/sourcerer/sourcerer_permissions.cy.ts b/x-pack/test/security_solution_cypress/cypress/e2e/detection_response/sourcerer/sourcerer_permissions.cy.ts new file mode 100644 index 0000000000000..fa4bf2d27061b --- /dev/null +++ b/x-pack/test/security_solution_cypress/cypress/e2e/detection_response/sourcerer/sourcerer_permissions.cy.ts @@ -0,0 +1,36 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { loginWithUser } from '../../../tasks/login'; +import { visitWithUser } from '../../../tasks/navigation'; + +import { hostsUrl } from '../../../urls/navigation'; +import { postDataView } from '../../../tasks/common'; +import { + createUsersAndRoles, + secReadCasesAll, + secReadCasesAllUser, +} from '../../../tasks/privileges'; +import { TOASTER } from '../../../screens/configure_cases'; + +const usersToCreate = [secReadCasesAllUser]; +const rolesToCreate = [secReadCasesAll]; +const dataViews = ['auditbeat-*,fakebeat-*', 'auditbeat-*,*beat*,siem-read*,.kibana*,fakebeat-*']; + +describe('Sourcerer permissions', { tags: ['@ess', '@skipInServerless'] }, () => { + before(() => { + cy.task('esArchiverResetKibana'); + dataViews.forEach((dataView: string) => postDataView(dataView)); + createUsersAndRoles(usersToCreate, rolesToCreate); + }); + + it(`role(s) ${secReadCasesAllUser.roles.join()} shows error when user does not have permissions`, () => { + loginWithUser(secReadCasesAllUser); + visitWithUser(hostsUrl('allHosts'), secReadCasesAllUser); + cy.get(TOASTER).should('have.text', 'Write role required to generate data'); + }); +}); diff --git a/x-pack/test/security_solution_cypress/cypress/e2e/data_sources/sourcerer_timeline.cy.ts b/x-pack/test/security_solution_cypress/cypress/e2e/detection_response/sourcerer/sourcerer_timeline.cy.ts similarity index 92% rename from x-pack/test/security_solution_cypress/cypress/e2e/data_sources/sourcerer_timeline.cy.ts rename to x-pack/test/security_solution_cypress/cypress/e2e/detection_response/sourcerer/sourcerer_timeline.cy.ts index 22729c9e7661e..64a4e7224f820 100644 --- a/x-pack/test/security_solution_cypress/cypress/e2e/data_sources/sourcerer_timeline.cy.ts +++ b/x-pack/test/security_solution_cypress/cypress/e2e/detection_response/sourcerer/sourcerer_timeline.cy.ts @@ -10,10 +10,10 @@ import { DEFAULT_INDEX_PATTERN, } from '@kbn/security-solution-plugin/common/constants'; -import { login } from '../../tasks/login'; -import { visitWithTimeRange } from '../../tasks/navigation'; +import { login } from '../../../tasks/login'; +import { visitWithTimeRange } from '../../../tasks/navigation'; -import { TIMELINES_URL } from '../../urls/navigation'; +import { TIMELINES_URL } from '../../../urls/navigation'; import { clickAlertCheckbox, deselectSourcererOptions, @@ -29,12 +29,12 @@ import { refreshUntilAlertsIndexExists, resetSourcerer, saveSourcerer, -} from '../../tasks/sourcerer'; -import { openTimelineUsingToggle } from '../../tasks/security_main'; -import { SOURCERER } from '../../screens/sourcerer'; -import { createTimeline } from '../../tasks/api_calls/timelines'; -import { getTimeline, getTimelineModifiedSourcerer } from '../../objects/timeline'; -import { closeTimeline, openTimelineById } from '../../tasks/timeline'; +} from '../../../tasks/sourcerer'; +import { openTimelineUsingToggle } from '../../../tasks/security_main'; +import { SOURCERER } from '../../../screens/sourcerer'; +import { createTimeline } from '../../../tasks/api_calls/timelines'; +import { getTimeline, getTimelineModifiedSourcerer } from '../../../objects/timeline'; +import { closeTimeline, openTimelineById } from '../../../tasks/timeline'; const siemDataViewTitle = 'Security Default Data View'; const dataViews = ['auditbeat-*,fakebeat-*', 'auditbeat-*,*beat*,siem-read*,.kibana*,fakebeat-*']; diff --git a/x-pack/test/security_solution_cypress/cypress/e2e/detection_response/value_lists/permissions.cy.ts b/x-pack/test/security_solution_cypress/cypress/e2e/detection_response/value_lists/permissions.cy.ts new file mode 100644 index 0000000000000..ddc1f939c08fe --- /dev/null +++ b/x-pack/test/security_solution_cypress/cypress/e2e/detection_response/value_lists/permissions.cy.ts @@ -0,0 +1,23 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { ROLES } from '@kbn/security-solution-plugin/common/test'; + +import { login } from '../../../tasks/login'; +import { visit } from '../../../tasks/navigation'; +import { RULES_MANAGEMENT_URL } from '../../../urls/rules_management'; +import { VALUE_LISTS_MODAL_ACTIVATOR } from '../../../screens/lists'; + +describe('value list permissions', { tags: ['@ess', '@skipInServerless'] }, () => { + describe('user with restricted access role', () => { + it('Does not allow a t1 analyst user to upload a value list', () => { + login(ROLES.t1_analyst); + visit(RULES_MANAGEMENT_URL, { role: ROLES.t1_analyst }); + cy.get(VALUE_LISTS_MODAL_ACTIVATOR).should('have.attr', 'disabled'); + }); + }); +}); diff --git a/x-pack/test/security_solution_cypress/cypress/e2e/detection_response/value_lists/value_lists.cy.ts b/x-pack/test/security_solution_cypress/cypress/e2e/detection_response/value_lists/value_lists.cy.ts index faa82b4fc6cdf..4b1c3e93f631e 100644 --- a/x-pack/test/security_solution_cypress/cypress/e2e/detection_response/value_lists/value_lists.cy.ts +++ b/x-pack/test/security_solution_cypress/cypress/e2e/detection_response/value_lists/value_lists.cy.ts @@ -5,8 +5,6 @@ * 2.0. */ -import { ROLES } from '@kbn/security-solution-plugin/common/test'; - import { login } from '../../../tasks/login'; import { visit } from '../../../tasks/navigation'; import { RULES_MANAGEMENT_URL } from '../../../urls/rules_management'; @@ -25,253 +23,224 @@ import { deleteValueLists, KNOWN_VALUE_LIST_FILES, } from '../../../tasks/lists'; -import { - VALUE_LISTS_TABLE, - VALUE_LISTS_ROW, - VALUE_LISTS_MODAL_ACTIVATOR, -} from '../../../screens/lists'; +import { VALUE_LISTS_TABLE, VALUE_LISTS_ROW } from '../../../screens/lists'; import { refreshIndex } from '../../../tasks/api_calls/elasticsearch'; -// TODO: https://github.com/elastic/kibana/issues/161539 -// FLAKY: https://github.com/elastic/kibana/issues/165699 -describe('value lists', { tags: ['@ess', '@serverless', '@skipInServerless'] }, () => { - // TODO: https://github.com/elastic/kibana/issues/161539 - describe('management modal', { tags: ['@ess', '@serverless', '@brokenInServerless'] }, () => { - beforeEach(() => { - login(); - deleteValueLists([ - KNOWN_VALUE_LIST_FILES.TEXT, - KNOWN_VALUE_LIST_FILES.IPs, - KNOWN_VALUE_LIST_FILES.CIDRs, - ]); - createListsIndex(); - visit(RULES_MANAGEMENT_URL); - waitForListsIndex(); - waitForValueListsModalToBeLoaded(); - }); +describe('value lists management modal', { tags: ['@ess', '@serverless'] }, () => { + beforeEach(() => { + login(); + deleteValueLists([ + KNOWN_VALUE_LIST_FILES.TEXT, + KNOWN_VALUE_LIST_FILES.IPs, + KNOWN_VALUE_LIST_FILES.CIDRs, + ]); + createListsIndex(); + visit(RULES_MANAGEMENT_URL); + waitForListsIndex(); + waitForValueListsModalToBeLoaded(); + }); + + it('can open and close the modal', () => { + openValueListsModal(); + closeValueListsModal(); + }); - it('can open and close the modal', () => { + describe('create list types', () => { + beforeEach(() => { openValueListsModal(); - closeValueListsModal(); }); - // TODO: https://github.com/elastic/kibana/issues/161539 - // Flaky in serverless tests - describe('create list types', { tags: ['@brokenInServerless'] }, () => { - beforeEach(() => { - openValueListsModal(); - }); - - it('creates a "keyword" list from an uploaded file', () => { - selectValueListType('keyword'); - selectValueListsFile(KNOWN_VALUE_LIST_FILES.TEXT); - uploadValueList(); + it('creates a "keyword" list from an uploaded file', () => { + selectValueListType('keyword'); + selectValueListsFile(KNOWN_VALUE_LIST_FILES.TEXT); + uploadValueList(); - cy.get(VALUE_LISTS_TABLE) - .find(VALUE_LISTS_ROW) - .should(($row) => { - expect($row.text()).to.contain(KNOWN_VALUE_LIST_FILES.TEXT); - expect($row.text()).to.contain('Keywords'); - }); - }); + cy.get(VALUE_LISTS_TABLE) + .find(VALUE_LISTS_ROW) + .should(($row) => { + expect($row.text()).to.contain(KNOWN_VALUE_LIST_FILES.TEXT); + expect($row.text()).to.contain('Keywords'); + }); + }); - it('creates a "text" list from an uploaded file', () => { - selectValueListType('text'); - selectValueListsFile(KNOWN_VALUE_LIST_FILES.TEXT); - uploadValueList(); + it('creates a "text" list from an uploaded file', () => { + selectValueListType('text'); + selectValueListsFile(KNOWN_VALUE_LIST_FILES.TEXT); + uploadValueList(); - cy.get(VALUE_LISTS_TABLE) - .find(VALUE_LISTS_ROW) - .should(($row) => { - expect($row.text()).to.contain(KNOWN_VALUE_LIST_FILES.TEXT); - expect($row.text()).to.contain('Text'); - }); - }); + cy.get(VALUE_LISTS_TABLE) + .find(VALUE_LISTS_ROW) + .should(($row) => { + expect($row.text()).to.contain(KNOWN_VALUE_LIST_FILES.TEXT); + expect($row.text()).to.contain('Text'); + }); + }); - it('creates a "ip" list from an uploaded file', () => { - selectValueListType('ip'); - selectValueListsFile(KNOWN_VALUE_LIST_FILES.IPs); - uploadValueList(); + it('creates a "ip" list from an uploaded file', () => { + selectValueListType('ip'); + selectValueListsFile(KNOWN_VALUE_LIST_FILES.IPs); + uploadValueList(); - cy.get(VALUE_LISTS_TABLE) - .find(VALUE_LISTS_ROW) - .should(($row) => { - expect($row.text()).to.contain(KNOWN_VALUE_LIST_FILES.IPs); - expect($row.text()).to.contain('IP addresses'); - }); - }); + cy.get(VALUE_LISTS_TABLE) + .find(VALUE_LISTS_ROW) + .should(($row) => { + expect($row.text()).to.contain(KNOWN_VALUE_LIST_FILES.IPs); + expect($row.text()).to.contain('IP addresses'); + }); + }); - it('creates a "ip_range" list from an uploaded file', () => { - selectValueListType('ip_range'); - selectValueListsFile(KNOWN_VALUE_LIST_FILES.CIDRs); - uploadValueList(); + it('creates a "ip_range" list from an uploaded file', () => { + selectValueListType('ip_range'); + selectValueListsFile(KNOWN_VALUE_LIST_FILES.CIDRs); + uploadValueList(); - cy.get(VALUE_LISTS_TABLE) - .find(VALUE_LISTS_ROW) - .should(($row) => { - expect($row.text()).to.contain(KNOWN_VALUE_LIST_FILES.CIDRs); - expect($row.text()).to.contain('IP ranges'); - }); - }); + cy.get(VALUE_LISTS_TABLE) + .find(VALUE_LISTS_ROW) + .should(($row) => { + expect($row.text()).to.contain(KNOWN_VALUE_LIST_FILES.CIDRs); + expect($row.text()).to.contain('IP ranges'); + }); }); + }); - // TODO: https://github.com/elastic/kibana/issues/161539 - // Flaky in serverless tests - describe('delete list types', { tags: ['@brokenInServerless'] }, () => { - it('deletes a "keyword" list from an uploaded file', () => { - importValueList(KNOWN_VALUE_LIST_FILES.TEXT, 'keyword'); - openValueListsModal(); - deleteValueListsFile(KNOWN_VALUE_LIST_FILES.TEXT); - cy.get(VALUE_LISTS_TABLE) - .find(VALUE_LISTS_ROW) - .should(($row) => { - expect($row.text()).not.to.contain(KNOWN_VALUE_LIST_FILES.TEXT); - }); - }); + describe('delete list types', () => { + it('deletes a "keyword" list from an uploaded file', () => { + importValueList(KNOWN_VALUE_LIST_FILES.TEXT, 'keyword'); + openValueListsModal(); + deleteValueListsFile(KNOWN_VALUE_LIST_FILES.TEXT); + cy.get(VALUE_LISTS_TABLE) + .find(VALUE_LISTS_ROW) + .should(($row) => { + expect($row.text()).not.to.contain(KNOWN_VALUE_LIST_FILES.TEXT); + }); + }); - it('deletes a "text" list from an uploaded file', () => { - importValueList(KNOWN_VALUE_LIST_FILES.TEXT, 'text'); - openValueListsModal(); - deleteValueListsFile(KNOWN_VALUE_LIST_FILES.TEXT); - cy.get(VALUE_LISTS_TABLE) - .find(VALUE_LISTS_ROW) - .should(($row) => { - expect($row.text()).not.to.contain(KNOWN_VALUE_LIST_FILES.TEXT); - }); - }); + it('deletes a "text" list from an uploaded file', () => { + importValueList(KNOWN_VALUE_LIST_FILES.TEXT, 'text'); + openValueListsModal(); + deleteValueListsFile(KNOWN_VALUE_LIST_FILES.TEXT); + cy.get(VALUE_LISTS_TABLE) + .find(VALUE_LISTS_ROW) + .should(($row) => { + expect($row.text()).not.to.contain(KNOWN_VALUE_LIST_FILES.TEXT); + }); + }); - it('deletes a "ip" from an uploaded file', () => { - importValueList(KNOWN_VALUE_LIST_FILES.IPs, 'ip'); - openValueListsModal(); - deleteValueListsFile(KNOWN_VALUE_LIST_FILES.IPs); - cy.get(VALUE_LISTS_TABLE) - .find(VALUE_LISTS_ROW) - .should(($row) => { - expect($row.text()).not.to.contain(KNOWN_VALUE_LIST_FILES.IPs); - }); - }); + it('deletes a "ip" from an uploaded file', () => { + importValueList(KNOWN_VALUE_LIST_FILES.IPs, 'ip'); + openValueListsModal(); + deleteValueListsFile(KNOWN_VALUE_LIST_FILES.IPs); + cy.get(VALUE_LISTS_TABLE) + .find(VALUE_LISTS_ROW) + .should(($row) => { + expect($row.text()).not.to.contain(KNOWN_VALUE_LIST_FILES.IPs); + }); + }); - it('deletes a "ip_range" from an uploaded file', () => { - importValueList(KNOWN_VALUE_LIST_FILES.CIDRs, 'ip_range', ['192.168.100.0']); - openValueListsModal(); - deleteValueListsFile(KNOWN_VALUE_LIST_FILES.CIDRs); - cy.get(VALUE_LISTS_TABLE) - .find(VALUE_LISTS_ROW) - .should(($row) => { - expect($row.text()).not.to.contain(KNOWN_VALUE_LIST_FILES.CIDRs); - }); - }); + it('deletes a "ip_range" from an uploaded file', () => { + importValueList(KNOWN_VALUE_LIST_FILES.CIDRs, 'ip_range', ['192.168.100.0']); + openValueListsModal(); + deleteValueListsFile(KNOWN_VALUE_LIST_FILES.CIDRs); + cy.get(VALUE_LISTS_TABLE) + .find(VALUE_LISTS_ROW) + .should(($row) => { + expect($row.text()).not.to.contain(KNOWN_VALUE_LIST_FILES.CIDRs); + }); }); + }); - // TODO: https://github.com/elastic/kibana/issues/161539 - // Flaky in serverless tests - describe('export list types', { tags: ['@brokenInServerless'] }, () => { - it('exports a "keyword" list from an uploaded file', () => { - cy.intercept('POST', `/api/lists/items/_export?list_id=${KNOWN_VALUE_LIST_FILES.TEXT}`).as( - 'exportList' - ); - importValueList(KNOWN_VALUE_LIST_FILES.TEXT, 'keyword'); + describe('export list types', () => { + it('exports a "keyword" list from an uploaded file', () => { + cy.intercept('POST', `/api/lists/items/_export?list_id=${KNOWN_VALUE_LIST_FILES.TEXT}`).as( + 'exportList' + ); + importValueList(KNOWN_VALUE_LIST_FILES.TEXT, 'keyword'); - // Importing value lists includes bulk creation of list items with refresh=wait_for - // While it should wait for data update and return after that it's not always a case with bulk operations. - // Sometimes list items are empty making this test flaky. - // To fix it refresh used list items index (for the default space) - refreshIndex('.items-default'); + // Importing value lists includes bulk creation of list items with refresh=wait_for + // While it should wait for data update and return after that it's not always a case with bulk operations. + // Sometimes list items are empty making this test flaky. + // To fix it refresh used list items index (for the default space) + refreshIndex('.items-default'); - openValueListsModal(); - exportValueList(); + openValueListsModal(); + exportValueList(); - cy.wait('@exportList').then(({ response }) => { - cy.fixture(KNOWN_VALUE_LIST_FILES.TEXT).then((list: string) => { - const [lineOne, lineTwo] = list.split('\n'); - expect(response?.body).to.contain(lineOne); - expect(response?.body).to.contain(lineTwo); - }); + cy.wait('@exportList').then(({ response }) => { + cy.fixture(KNOWN_VALUE_LIST_FILES.TEXT).then((list: string) => { + const [lineOne, lineTwo] = list.split('\n'); + expect(response?.body).to.contain(lineOne); + expect(response?.body).to.contain(lineTwo); }); }); + }); - it('exports a "text" list from an uploaded file', () => { - cy.intercept('POST', `/api/lists/items/_export?list_id=${KNOWN_VALUE_LIST_FILES.TEXT}`).as( - 'exportList' - ); - importValueList(KNOWN_VALUE_LIST_FILES.TEXT, 'text'); + it('exports a "text" list from an uploaded file', () => { + cy.intercept('POST', `/api/lists/items/_export?list_id=${KNOWN_VALUE_LIST_FILES.TEXT}`).as( + 'exportList' + ); + importValueList(KNOWN_VALUE_LIST_FILES.TEXT, 'text'); - // Importing value lists includes bulk creation of list items with refresh=wait_for - // While it should wait for data update and return after that it's not always a case with bulk operations. - // Sometimes list items are empty making this test flaky. - // To fix it refresh used list items index (for the default space) - refreshIndex('.items-default'); + // Importing value lists includes bulk creation of list items with refresh=wait_for + // While it should wait for data update and return after that it's not always a case with bulk operations. + // Sometimes list items are empty making this test flaky. + // To fix it refresh used list items index (for the default space) + refreshIndex('.items-default'); - openValueListsModal(); - exportValueList(); + openValueListsModal(); + exportValueList(); - cy.wait('@exportList').then(({ response }) => { - cy.fixture(KNOWN_VALUE_LIST_FILES.TEXT).then((list: string) => { - const [lineOne, lineTwo] = list.split('\n'); - expect(response?.body).to.contain(lineOne); - expect(response?.body).to.contain(lineTwo); - }); + cy.wait('@exportList').then(({ response }) => { + cy.fixture(KNOWN_VALUE_LIST_FILES.TEXT).then((list: string) => { + const [lineOne, lineTwo] = list.split('\n'); + expect(response?.body).to.contain(lineOne); + expect(response?.body).to.contain(lineTwo); }); }); + }); - it('exports a "ip" list from an uploaded file', () => { - cy.intercept('POST', `/api/lists/items/_export?list_id=${KNOWN_VALUE_LIST_FILES.IPs}`).as( - 'exportList' - ); - importValueList(KNOWN_VALUE_LIST_FILES.IPs, 'ip'); + it('exports a "ip" list from an uploaded file', () => { + cy.intercept('POST', `/api/lists/items/_export?list_id=${KNOWN_VALUE_LIST_FILES.IPs}`).as( + 'exportList' + ); + importValueList(KNOWN_VALUE_LIST_FILES.IPs, 'ip'); - // Importing value lists includes bulk creation of list items with refresh=wait_for - // While it should wait for data update and return after that it's not always a case with bulk operations. - // Sometimes list items are empty making this test flaky. - // To fix it refresh used list items index (for the default space) - refreshIndex('.items-default'); + // Importing value lists includes bulk creation of list items with refresh=wait_for + // While it should wait for data update and return after that it's not always a case with bulk operations. + // Sometimes list items are empty making this test flaky. + // To fix it refresh used list items index (for the default space) + refreshIndex('.items-default'); - openValueListsModal(); - exportValueList(); - cy.wait('@exportList').then(({ response }) => { - cy.fixture(KNOWN_VALUE_LIST_FILES.IPs).then((list: string) => { - const [lineOne, lineTwo] = list.split('\n'); - expect(response?.body).to.contain(lineOne); - expect(response?.body).to.contain(lineTwo); - }); + openValueListsModal(); + exportValueList(); + cy.wait('@exportList').then(({ response }) => { + cy.fixture(KNOWN_VALUE_LIST_FILES.IPs).then((list: string) => { + const [lineOne, lineTwo] = list.split('\n'); + expect(response?.body).to.contain(lineOne); + expect(response?.body).to.contain(lineTwo); }); }); + }); - it('exports a "ip_range" list from an uploaded file', () => { - cy.intercept('POST', `/api/lists/items/_export?list_id=${KNOWN_VALUE_LIST_FILES.CIDRs}`).as( - 'exportList' - ); - importValueList(KNOWN_VALUE_LIST_FILES.CIDRs, 'ip_range', ['192.168.100.0']); + it('exports a "ip_range" list from an uploaded file', () => { + cy.intercept('POST', `/api/lists/items/_export?list_id=${KNOWN_VALUE_LIST_FILES.CIDRs}`).as( + 'exportList' + ); + importValueList(KNOWN_VALUE_LIST_FILES.CIDRs, 'ip_range', ['192.168.100.0']); - // Importing value lists includes bulk creation of list items with refresh=wait_for - // While it should wait for data update and return after that it's not always a case with bulk operations. - // Sometimes list items are empty making this test flaky. - // To fix it refresh used list items index (for the default space) - refreshIndex('.items-default'); + // Importing value lists includes bulk creation of list items with refresh=wait_for + // While it should wait for data update and return after that it's not always a case with bulk operations. + // Sometimes list items are empty making this test flaky. + // To fix it refresh used list items index (for the default space) + refreshIndex('.items-default'); - openValueListsModal(); - exportValueList(); - cy.wait('@exportList').then(({ response }) => { - cy.fixture(KNOWN_VALUE_LIST_FILES.CIDRs).then((list: string) => { - const [lineOne] = list.split('\n'); - expect(response?.body).to.contain(lineOne); - }); + openValueListsModal(); + exportValueList(); + cy.wait('@exportList').then(({ response }) => { + cy.fixture(KNOWN_VALUE_LIST_FILES.CIDRs).then((list: string) => { + const [lineOne] = list.split('\n'); + expect(response?.body).to.contain(lineOne); }); }); }); }); - - // TODO: https://github.com/elastic/kibana/issues/164451 We should find a way to make this spec work in Serverless - // TODO: https://github.com/elastic/kibana/issues/161539 - describe( - 'user with restricted access role', - { tags: ['@ess', '@serverless', '@skipInServerless'] }, - () => { - it('Does not allow a t1 analyst user to upload a value list', () => { - login(ROLES.t1_analyst); - visit(RULES_MANAGEMENT_URL, { role: ROLES.t1_analyst }); - cy.get(VALUE_LISTS_MODAL_ACTIVATOR).should('have.attr', 'disabled'); - }); - } - ); }); diff --git a/x-pack/test/security_solution_cypress/cypress/e2e/detection_alerts/enrichments.cy.ts b/x-pack/test/security_solution_cypress/cypress/e2e/entity_analytics/enrichments.cy.ts similarity index 100% rename from x-pack/test/security_solution_cypress/cypress/e2e/detection_alerts/enrichments.cy.ts rename to x-pack/test/security_solution_cypress/cypress/e2e/entity_analytics/enrichments.cy.ts diff --git a/x-pack/test/security_solution_cypress/cypress/e2e/explore/dashboards/entity_analytics.cy.ts b/x-pack/test/security_solution_cypress/cypress/e2e/explore/dashboards/entity_analytics.cy.ts index a14aa11bc1cdd..92fad4effbd4a 100644 --- a/x-pack/test/security_solution_cypress/cypress/e2e/explore/dashboards/entity_analytics.cy.ts +++ b/x-pack/test/security_solution_cypress/cypress/e2e/explore/dashboards/entity_analytics.cy.ts @@ -135,7 +135,8 @@ describe('Entity Analytics Dashboard', { tags: ['@ess', '@brokenInServerless'] } }); }); - describe('With host risk data', () => { + // FLAKY: https://github.com/elastic/kibana/issues/168490 + describe.skip('With host risk data', () => { before(() => { cy.task('esArchiverLoad', { archiveName: 'risk_hosts' }); }); diff --git a/x-pack/test/security_solution_cypress/cypress/e2e/explore/overview/overview.cy.ts b/x-pack/test/security_solution_cypress/cypress/e2e/explore/overview/overview.cy.ts index 900a77643e988..6ab6e76efd946 100644 --- a/x-pack/test/security_solution_cypress/cypress/e2e/explore/overview/overview.cy.ts +++ b/x-pack/test/security_solution_cypress/cypress/e2e/explore/overview/overview.cy.ts @@ -17,7 +17,7 @@ import { cleanKibana } from '../../../tasks/common'; import { createTimeline, favoriteTimeline } from '../../../tasks/api_calls/timelines'; import { getTimeline } from '../../../objects/timeline'; -describe('Overview Page', { tags: ['@ess', '@serverless'] }, () => { +describe('Overview Page', { tags: ['@ess', '@serverless', '@serverlessQA'] }, () => { before(() => { cleanKibana(); cy.task('esArchiverLoad', { archiveName: 'overview' }); diff --git a/x-pack/test/security_solution_cypress/cypress/e2e/detection_alerts/alerts_charts.cy.ts b/x-pack/test/security_solution_cypress/cypress/e2e/investigations/alerts/alerts_charts.cy.ts similarity index 79% rename from x-pack/test/security_solution_cypress/cypress/e2e/detection_alerts/alerts_charts.cy.ts rename to x-pack/test/security_solution_cypress/cypress/e2e/investigations/alerts/alerts_charts.cy.ts index f5055f7c8770c..86dd58889a0a8 100644 --- a/x-pack/test/security_solution_cypress/cypress/e2e/detection_alerts/alerts_charts.cy.ts +++ b/x-pack/test/security_solution_cypress/cypress/e2e/investigations/alerts/alerts_charts.cy.ts @@ -5,25 +5,25 @@ * 2.0. */ -import { getNewRule } from '../../objects/rule'; -import { ALERTS_COUNT } from '../../screens/alerts'; +import { getNewRule } from '../../../objects/rule'; +import { ALERTS_COUNT } from '../../../screens/alerts'; import { clickAlertsHistogramLegend, clickAlertsHistogramLegendAddToTimeline, clickAlertsHistogramLegendFilterFor, clickAlertsHistogramLegendFilterOut, selectAlertsHistogram, -} from '../../tasks/alerts'; -import { createRule } from '../../tasks/api_calls/rules'; -import { cleanKibana } from '../../tasks/common'; -import { login } from '../../tasks/login'; -import { visitWithTimeRange } from '../../tasks/navigation'; -import { ALERTS_URL } from '../../urls/navigation'; +} from '../../../tasks/alerts'; +import { createRule } from '../../../tasks/api_calls/rules'; +import { cleanKibana } from '../../../tasks/common'; +import { login } from '../../../tasks/login'; +import { visitWithTimeRange } from '../../../tasks/navigation'; +import { ALERTS_URL } from '../../../urls/navigation'; import { GLOBAL_SEARCH_BAR_FILTER_ITEM, GLOBAL_SEARCH_BAR_FILTER_ITEM_DELETE, -} from '../../screens/search_bar'; -import { TOASTER } from '../../screens/alerts_detection_rules'; +} from '../../../screens/search_bar'; +import { TOASTER } from '../../../screens/alerts_detection_rules'; // TODO: https://github.com/elastic/kibana/issues/161539 describe( diff --git a/x-pack/test/security_solution_cypress/cypress/e2e/investigations/alerts/ransomware_detection.cy.ts b/x-pack/test/security_solution_cypress/cypress/e2e/investigations/alerts/ransomware_detection.cy.ts new file mode 100644 index 0000000000000..bc0e3469b9c7e --- /dev/null +++ b/x-pack/test/security_solution_cypress/cypress/e2e/investigations/alerts/ransomware_detection.cy.ts @@ -0,0 +1,68 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { waitForAlertsToPopulate } from '../../../tasks/create_new_rule'; +import { login } from '../../../tasks/login'; +import { visitWithTimeRange } from '../../../tasks/navigation'; + +import { ALERTS_URL, TIMELINES_URL } from '../../../urls/navigation'; +import { ALERTS_HISTOGRAM_SERIES, ALERT_RULE_NAME, MESSAGE } from '../../../screens/alerts'; +import { TIMELINE_QUERY, TIMELINE_VIEW_IN_ANALYZER } from '../../../screens/timeline'; +import { selectAlertsHistogram } from '../../../tasks/alerts'; +import { createTimeline } from '../../../tasks/timelines'; + +describe('Ransomware Detection Alerts', { tags: ['@ess', '@serverless'] }, () => { + before(() => { + cy.task('esArchiverLoad', { + archiveName: 'ransomware_detection', + useCreate: true, + docsOnly: true, + }); + }); + + describe('Ransomware display in Alerts Section', () => { + beforeEach(() => { + login(); + visitWithTimeRange(ALERTS_URL); + waitForAlertsToPopulate(); + }); + + describe('Alerts table', () => { + it('shows Ransomware Alerts', () => { + cy.get(ALERT_RULE_NAME).should('have.text', 'Ransomware Detection Alert'); + }); + }); + + describe('Trend Chart', () => { + beforeEach(() => { + selectAlertsHistogram(); + }); + + it('shows Ransomware Detection Alert in the trend chart', () => { + cy.get(ALERTS_HISTOGRAM_SERIES).should('have.text', 'Ransomware Detection Alert'); + }); + }); + }); + + // FLAKY: https://github.com/elastic/kibana/issues/168602 + describe.skip('Ransomware in Timelines', () => { + before(() => { + login(); + visitWithTimeRange(TIMELINES_URL); + createTimeline(); + }); + + it('Renders ransomware entries in timelines table', () => { + cy.get(TIMELINE_QUERY).type('event.code: "ransomware"{enter}'); + + // Wait for grid to load, it should have an analyzer icon + cy.get(TIMELINE_VIEW_IN_ANALYZER).should('exist'); + + cy.get(MESSAGE).should('have.text', 'Ransomware Detection Alert'); + }); + }); +}); diff --git a/x-pack/test/security_solution_cypress/cypress/e2e/investigations/alerts/ransomware_prevention.cy.ts b/x-pack/test/security_solution_cypress/cypress/e2e/investigations/alerts/ransomware_prevention.cy.ts new file mode 100644 index 0000000000000..f3fc88f6518ac --- /dev/null +++ b/x-pack/test/security_solution_cypress/cypress/e2e/investigations/alerts/ransomware_prevention.cy.ts @@ -0,0 +1,74 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { waitForAlertsToPopulate } from '../../../tasks/create_new_rule'; +import { login } from '../../../tasks/login'; +import { visitWithTimeRange } from '../../../tasks/navigation'; + +import { ALERTS_URL, TIMELINES_URL } from '../../../urls/navigation'; +import { ALERTS_HISTOGRAM_SERIES, ALERT_RULE_NAME, MESSAGE } from '../../../screens/alerts'; +import { TIMELINE_QUERY, TIMELINE_VIEW_IN_ANALYZER } from '../../../screens/timeline'; +import { selectAlertsHistogram } from '../../../tasks/alerts'; +import { createTimeline } from '../../../tasks/timelines'; +import { cleanKibana } from '../../../tasks/common'; + +describe('Ransomware Prevention Alerts', { tags: ['@ess', '@serverless'] }, () => { + before(() => { + cleanKibana(); + cy.task('esArchiverLoad', { + archiveName: 'ransomware_prevention', + useCreate: true, + docsOnly: true, + }); + }); + + after(() => { + cy.task('esArchiverUnload', 'ransomware_prevention'); + }); + + describe('Ransomware display in Alerts Section', () => { + beforeEach(() => { + login(); + visitWithTimeRange(ALERTS_URL); + waitForAlertsToPopulate(); + }); + + describe('Alerts table', () => { + it('shows Ransomware Alerts', () => { + cy.get(ALERT_RULE_NAME).should('have.text', 'Ransomware Prevention Alert'); + }); + }); + + describe('Trend Chart', () => { + beforeEach(() => { + selectAlertsHistogram(); + }); + + it('shows Ransomware Prevention Alert in the trend chart', () => { + cy.get(ALERTS_HISTOGRAM_SERIES).should('have.text', 'Ransomware Prevention Alert'); + }); + }); + }); + + describe('Ransomware in Timelines', () => { + beforeEach(() => { + login(); + visitWithTimeRange(TIMELINES_URL); + + createTimeline(); + }); + + it('Renders ransomware entries in timelines table', () => { + cy.get(TIMELINE_QUERY).type('event.code: "ransomware"{enter}'); + + // Wait for grid to load, it should have an analyzer icon + cy.get(TIMELINE_VIEW_IN_ANALYZER).should('exist'); + + cy.get(MESSAGE).should('have.text', 'Ransomware Prevention Alert'); + }); + }); +}); diff --git a/x-pack/test/security_solution_cypress/cypress/e2e/investigations/timelines/data_providers.cy.ts b/x-pack/test/security_solution_cypress/cypress/e2e/investigations/timelines/data_providers.cy.ts index dd96c92d355a6..7d68d156802c2 100644 --- a/x-pack/test/security_solution_cypress/cypress/e2e/investigations/timelines/data_providers.cy.ts +++ b/x-pack/test/security_solution_cypress/cypress/e2e/investigations/timelines/data_providers.cy.ts @@ -31,65 +31,61 @@ import { hostsUrl } from '../../../urls/navigation'; import { cleanKibana, scrollToBottom } from '../../../tasks/common'; // Failing in serverless -describe( - 'timeline data providers', - { tags: ['@ess', '@serverless', '@brokenInServerless'] }, - () => { - before(() => { - cleanKibana(); - }); +describe('timeline data providers', { tags: ['@ess', '@serverless'] }, () => { + before(() => { + cleanKibana(); + }); - beforeEach(() => { - login(); - visitWithTimeRange(hostsUrl('allHosts')); - waitForAllHostsToBeLoaded(); - scrollToBottom(); - createNewTimeline(); - addNameAndDescriptionToTimeline(getTimeline()); - populateTimeline(); - }); + beforeEach(() => { + login(); + visitWithTimeRange(hostsUrl('allHosts')); + waitForAllHostsToBeLoaded(); + scrollToBottom(); + createNewTimeline(); + addNameAndDescriptionToTimeline(getTimeline()); + populateTimeline(); + }); - it('displays the data provider action menu when Enter is pressed', () => { - addDataProvider({ field: 'host.name', operator: 'exists' }); + it('displays the data provider action menu when Enter is pressed', () => { + addDataProvider({ field: 'host.name', operator: 'exists' }); - cy.get(TIMELINE_DATA_PROVIDERS_ACTION_MENU).should('not.exist'); - cy.get(`${TIMELINE_FLYOUT_HEADER} ${TIMELINE_DROPPED_DATA_PROVIDERS}`).focus(); - cy.get(`${TIMELINE_FLYOUT_HEADER} ${TIMELINE_DROPPED_DATA_PROVIDERS}`) - .first() - .parent() - .type('{enter}'); - - cy.get(TIMELINE_DATA_PROVIDERS_ACTION_MENU).should('exist'); - }); + cy.get(TIMELINE_DATA_PROVIDERS_ACTION_MENU).should('not.exist'); + cy.get(`${TIMELINE_FLYOUT_HEADER} ${TIMELINE_DROPPED_DATA_PROVIDERS}`).focus(); + cy.get(`${TIMELINE_FLYOUT_HEADER} ${TIMELINE_DROPPED_DATA_PROVIDERS}`) + .first() + .parent() + .type('{enter}'); - it.skip( - 'persists timeline when data provider is updated by dragging a field from data grid', - { tags: ['@brokenInServerless'] }, - () => { - updateDataProviderbyDraggingField('host.name', 0); - waitForTimelineChanges(); - cy.reload(); - cy.get(`${GET_TIMELINE_GRID_CELL('host.name')}`) - .first() - .then((hostname) => { - cy.get(TIMELINE_DATA_PROVIDERS_CONTAINER).contains(`host.name: "${hostname.text()}"`); - }); - } - ); + cy.get(TIMELINE_DATA_PROVIDERS_ACTION_MENU).should('exist'); + }); - it('persists timeline when a field is added by hover action "Add To Timeline" in data provider ', () => { - addDataProvider({ field: 'host.name', operator: 'exists' }); - waitForTimelineChanges(); - updateDataProviderByFieldHoverAction('host.name', 0); + it.skip( + 'persists timeline when data provider is updated by dragging a field from data grid', + { tags: ['@brokenInServerless'] }, + () => { + updateDataProviderbyDraggingField('host.name', 0); waitForTimelineChanges(); cy.reload(); cy.get(`${GET_TIMELINE_GRID_CELL('host.name')}`) .first() .then((hostname) => { - cy.get(TIMELINE_DATA_PROVIDERS_CONTAINER).should((dataProviderContainer) => { - expect(dataProviderContainer).to.contain(`host.name: "${hostname.text()}"`); - }); + cy.get(TIMELINE_DATA_PROVIDERS_CONTAINER).contains(`host.name: "${hostname.text()}"`); + }); + } + ); + + it('persists timeline when a field is added by hover action "Add To Timeline" in data provider ', () => { + addDataProvider({ field: 'host.name', operator: 'exists' }); + waitForTimelineChanges(); + updateDataProviderByFieldHoverAction('host.name', 0); + waitForTimelineChanges(); + cy.reload(); + cy.get(`${GET_TIMELINE_GRID_CELL('host.name')}`) + .first() + .then((hostname) => { + cy.get(TIMELINE_DATA_PROVIDERS_CONTAINER).should((dataProviderContainer) => { + expect(dataProviderContainer).to.contain(`host.name: "${hostname.text()}"`); }); - }); - } -); + }); + }); +}); diff --git a/x-pack/test/security_solution_cypress/cypress/e2e/investigations/timelines/esql/search_filter.cy.ts b/x-pack/test/security_solution_cypress/cypress/e2e/investigations/timelines/esql/search_filter.cy.ts index 1e3539ab58527..ae99886d2fc02 100644 --- a/x-pack/test/security_solution_cypress/cypress/e2e/investigations/timelines/esql/search_filter.cy.ts +++ b/x-pack/test/security_solution_cypress/cypress/e2e/investigations/timelines/esql/search_filter.cy.ts @@ -33,7 +33,8 @@ const INITIAL_END_DATE = 'Jan 19, 2024 @ 20:33:29.186'; const NEW_START_DATE = 'Jan 18, 2023 @ 20:33:29.186'; const esqlQuery = 'from auditbeat-* | where ecs.version == "8.0.0"'; -describe( +// FLAKY: https://github.com/elastic/kibana/issues/168758 +describe.skip( 'Basic esql search and filter operations', { tags: ['@ess'], diff --git a/x-pack/test/security_solution_cypress/cypress/e2e/investigations/timelines/export.cy.ts b/x-pack/test/security_solution_cypress/cypress/e2e/investigations/timelines/export.cy.ts index 48143184249d2..ca80b427f9c16 100644 --- a/x-pack/test/security_solution_cypress/cypress/e2e/investigations/timelines/export.cy.ts +++ b/x-pack/test/security_solution_cypress/cypress/e2e/investigations/timelines/export.cy.ts @@ -22,7 +22,7 @@ import { expectedExportedTimeline, getTimeline } from '../../../objects/timeline import { cleanKibana } from '../../../tasks/common'; // FLAKY: https://github.com/elastic/kibana/issues/165744 -describe('Export timelines', { tags: ['@ess', '@serverless', '@brokenInServerless'] }, () => { +describe('Export timelines', { tags: ['@ess', '@serverless'] }, () => { before(() => { cleanKibana(); login(); diff --git a/x-pack/test/security_solution_cypress/cypress/e2e/investigations/timelines/fields_browser.cy.ts b/x-pack/test/security_solution_cypress/cypress/e2e/investigations/timelines/fields_browser.cy.ts index a85966d590852..d4301853029a6 100644 --- a/x-pack/test/security_solution_cypress/cypress/e2e/investigations/timelines/fields_browser.cy.ts +++ b/x-pack/test/security_solution_cypress/cypress/e2e/investigations/timelines/fields_browser.cy.ts @@ -51,7 +51,7 @@ const defaultHeaders = [ ]; // Flaky in serverless tests -describe('Fields Browser', { tags: ['@ess', '@serverless', '@brokenInServerless'] }, () => { +describe('Fields Browser', { tags: ['@ess', '@serverless'] }, () => { before(() => { cleanKibana(); }); diff --git a/x-pack/test/security_solution_cypress/cypress/e2e/investigations/timelines/flyout_button.cy.ts b/x-pack/test/security_solution_cypress/cypress/e2e/investigations/timelines/flyout_button.cy.ts index 8e85d82fecafd..a6896de020a5a 100644 --- a/x-pack/test/security_solution_cypress/cypress/e2e/investigations/timelines/flyout_button.cy.ts +++ b/x-pack/test/security_solution_cypress/cypress/e2e/investigations/timelines/flyout_button.cy.ts @@ -24,7 +24,7 @@ import { import { hostsUrl } from '../../../urls/navigation'; -describe('timeline flyout button', { tags: ['@ess', '@brokenInServerless'] }, () => { +describe('timeline flyout button', () => { before(() => { cleanKibana(); }); @@ -35,22 +35,26 @@ describe('timeline flyout button', { tags: ['@ess', '@brokenInServerless'] }, () waitForAllHostsToBeLoaded(); }); - it('toggles open the timeline', () => { + it('toggles open the timeline', { tags: ['@ess', '@serverless'] }, () => { openTimelineUsingToggle(); cy.get(TIMELINE_FLYOUT_HEADER).should('have.css', 'visibility', 'visible'); closeTimelineUsingToggle(); }); - it('re-focuses the toggle button when timeline is closed by clicking the active timeline toggle button', () => { - openTimelineUsingToggle(); - closeTimelineUsingToggle(); + it( + 're-focuses the toggle button when timeline is closed by clicking the active timeline toggle button', + { tags: ['@ess', '@serverless'] }, + () => { + openTimelineUsingToggle(); + closeTimelineUsingToggle(); - cy.get(TIMELINE_BOTTOM_BAR_TOGGLE_BUTTON).should('have.focus'); - }); + cy.get(TIMELINE_BOTTOM_BAR_TOGGLE_BUTTON).should('have.focus'); + } + ); it( 're-focuses the toggle button when timeline is closed by clicking the [X] close button', - { tags: '@brokenInServerless' }, + { tags: ['@ess', '@serverless'] }, () => { openTimelineUsingToggle(); closeTimelineUsingCloseButton(); @@ -59,29 +63,40 @@ describe('timeline flyout button', { tags: ['@ess', '@brokenInServerless'] }, () } ); - it('re-focuses the toggle button when timeline is closed by pressing the Esc key', () => { - openTimelineUsingToggle(); - cy.get('body').type('{esc}'); + it( + 're-focuses the toggle button when timeline is closed by pressing the Esc key', + { tags: ['@ess', '@serverless'] }, + () => { + openTimelineUsingToggle(); + cy.get('body').type('{esc}'); - cy.get(TIMELINE_BOTTOM_BAR_TOGGLE_BUTTON).should('have.focus'); - }); + cy.get(TIMELINE_BOTTOM_BAR_TOGGLE_BUTTON).should('have.focus'); + } + ); - it('the `(+)` button popover menu owns focus when open', () => { - openCreateTimelineOptionsPopover(); - cy.get(CREATE_NEW_TIMELINE).focus(); - cy.get(CREATE_NEW_TIMELINE).should('have.focus'); - closeCreateTimelineOptionsPopover(); - cy.get(CREATE_NEW_TIMELINE).should('not.exist'); - }); + it( + 'the `(+)` button popover menu owns focus when open', + { tags: ['@ess', '@serverless'] }, + () => { + openCreateTimelineOptionsPopover(); + cy.get(CREATE_NEW_TIMELINE).focus(); + cy.get(CREATE_NEW_TIMELINE).should('have.focus'); + closeCreateTimelineOptionsPopover(); + cy.get(CREATE_NEW_TIMELINE).should('not.exist'); + } + ); - it('should render the global search dropdown when the input is focused', () => { - openTimelineUsingToggle(); - cy.get('[data-test-subj="nav-search-input"]').focus(); - cy.get('[data-test-subj="nav-search-input"]').should('be.focused'); - cy.get('[data-test-subj="nav-search-option"]').should('be.visible'); - cy.get('[data-test-subj="nav-search-option"]').first().realHover(); - // check that at least one item is visible in the search bar after mousing over, i.e. it's still usable. - cy.get('[data-test-subj="nav-search-option"]').its('length').should('be.gte', 1); - closeTimelineUsingCloseButton(); - }); + it( + 'should render the global search dropdown when the input is focused', + { tags: ['@ess'] }, + () => { + openTimelineUsingToggle(); + cy.get('[data-test-subj="nav-search-input"]').focus(); + cy.get('[data-test-subj="nav-search-input"]').should('be.focused'); + cy.get('[data-test-subj="nav-search-option"]').should('be.visible'); + cy.get('[data-test-subj="nav-search-option"]').first().realHover(); + // check that at least one item is visible in the search bar after mousing over, i.e. it's still usable. + cy.get('[data-test-subj="nav-search-option"]').its('length').should('be.gte', 1); + } + ); }); diff --git a/x-pack/test/security_solution_cypress/cypress/e2e/investigations/timelines/full_screen.cy.ts b/x-pack/test/security_solution_cypress/cypress/e2e/investigations/timelines/full_screen.cy.ts index 61226d987dedf..72f5aa576449c 100644 --- a/x-pack/test/security_solution_cypress/cypress/e2e/investigations/timelines/full_screen.cy.ts +++ b/x-pack/test/security_solution_cypress/cypress/e2e/investigations/timelines/full_screen.cy.ts @@ -20,7 +20,7 @@ import { populateTimeline } from '../../../tasks/timeline'; import { hostsUrl } from '../../../urls/navigation'; // FLAKY: https://github.com/elastic/kibana/issues/165638 -describe('Toggle full screen', { tags: ['@ess', '@serverless', '@brokenInServerless'] }, () => { +describe('Toggle full screen', { tags: ['@ess', '@serverless'] }, () => { before(() => { cleanKibana(); }); diff --git a/x-pack/test/security_solution_cypress/cypress/e2e/investigations/timelines/inspect.cy.ts b/x-pack/test/security_solution_cypress/cypress/e2e/investigations/timelines/inspect.cy.ts index 8d529b60d0e03..235c8c248b33d 100644 --- a/x-pack/test/security_solution_cypress/cypress/e2e/investigations/timelines/inspect.cy.ts +++ b/x-pack/test/security_solution_cypress/cypress/e2e/investigations/timelines/inspect.cy.ts @@ -15,7 +15,7 @@ import { executeTimelineKQL, openTimelineInspectButton } from '../../../tasks/ti import { hostsUrl } from '../../../urls/navigation'; // FLAKY: https://github.com/elastic/kibana/issues/165688 -describe('Inspect', { tags: ['@ess', '@serverless', '@brokenInServerless'] }, () => { +describe('Inspect', { tags: ['@ess', '@serverless'] }, () => { context('Timeline', () => { it('inspects the timeline', () => { const hostExistsQuery = 'host.name: *'; diff --git a/x-pack/test/security_solution_cypress/cypress/e2e/investigations/timelines/local_storage.cy.ts b/x-pack/test/security_solution_cypress/cypress/e2e/investigations/timelines/local_storage.cy.ts index b2ecdb5e2c137..44061ffdf3ee0 100644 --- a/x-pack/test/security_solution_cypress/cypress/e2e/investigations/timelines/local_storage.cy.ts +++ b/x-pack/test/security_solution_cypress/cypress/e2e/investigations/timelines/local_storage.cy.ts @@ -5,7 +5,6 @@ * 2.0. */ -import { reload } from '../../../tasks/common'; import { login } from '../../../tasks/login'; import { visitWithTimeRange } from '../../../tasks/navigation'; import { hostsUrl } from '../../../urls/navigation'; @@ -14,7 +13,7 @@ import { DATAGRID_HEADERS, DATAGRID_HEADER } from '../../../screens/timeline'; import { waitsForEventsToBeLoaded } from '../../../tasks/hosts/events'; import { removeColumn } from '../../../tasks/timeline'; -describe('persistent timeline', { tags: ['@ess', '@serverless', '@brokenInServerless'] }, () => { +describe('persistent timeline', { tags: ['@ess', '@serverless'] }, () => { before(() => { login(); visitWithTimeRange(hostsUrl('allHosts')); @@ -34,7 +33,7 @@ describe('persistent timeline', { tags: ['@ess', '@serverless', '@brokenInServer cy.get(DATAGRID_HEADER(COLUMN)).should('exist'); removeColumn(COLUMN); - reload(); + cy.reload(); waitsForEventsToBeLoaded(); /* After the deletion of the message column and the reload of the page, we make sure diff --git a/x-pack/test/security_solution_cypress/cypress/e2e/investigations/timelines/open_timeline.cy.ts b/x-pack/test/security_solution_cypress/cypress/e2e/investigations/timelines/open_timeline.cy.ts index afa000478e8fb..7f9083acb0b9f 100644 --- a/x-pack/test/security_solution_cypress/cypress/e2e/investigations/timelines/open_timeline.cy.ts +++ b/x-pack/test/security_solution_cypress/cypress/e2e/investigations/timelines/open_timeline.cy.ts @@ -36,7 +36,7 @@ import { import { TIMELINES_URL } from '../../../urls/navigation'; -describe('Open timeline', { tags: ['@brokenInServerless', '@ess'] }, () => { +describe('Open timeline', { tags: ['@serverless', '@ess'] }, () => { describe('Open timeline modal', () => { before(function () { cleanKibana(); diff --git a/x-pack/test/security_solution_cypress/cypress/e2e/investigations/timelines/pagination.cy.ts b/x-pack/test/security_solution_cypress/cypress/e2e/investigations/timelines/pagination.cy.ts index 310efb66807e0..0037ae179c633 100644 --- a/x-pack/test/security_solution_cypress/cypress/e2e/investigations/timelines/pagination.cy.ts +++ b/x-pack/test/security_solution_cypress/cypress/e2e/investigations/timelines/pagination.cy.ts @@ -25,7 +25,7 @@ import { hostsUrl } from '../../../urls/navigation'; // Flaky on serverless const defaultPageSize = 25; -describe('Pagination', { tags: ['@ess', '@serverless', '@brokenInServerless'] }, () => { +describe('Pagination', { tags: ['@ess', '@serverless'] }, () => { before(() => { cleanKibana(); cy.task('esArchiverLoad', { archiveName: 'timeline' }); diff --git a/x-pack/test/security_solution_cypress/cypress/e2e/investigations/timelines/search_or_filter.cy.ts b/x-pack/test/security_solution_cypress/cypress/e2e/investigations/timelines/search_or_filter.cy.ts index a695597a48709..a6f5ae49f5d8a 100644 --- a/x-pack/test/security_solution_cypress/cypress/e2e/investigations/timelines/search_or_filter.cy.ts +++ b/x-pack/test/security_solution_cypress/cypress/e2e/investigations/timelines/search_or_filter.cy.ts @@ -27,7 +27,7 @@ import { waitForTimelinesPanelToBeLoaded } from '../../../tasks/timelines'; import { hostsUrl, TIMELINES_URL } from '../../../urls/navigation'; -describe('Timeline search and filters', { tags: ['@ess', '@brokenInServerless'] }, () => { +describe('Timeline search and filters', { tags: ['@ess', '@serverless'] }, () => { before(() => { cleanKibana(); }); diff --git a/x-pack/test/security_solution_cypress/cypress/e2e/investigations/timelines/toggle_column.cy.ts b/x-pack/test/security_solution_cypress/cypress/e2e/investigations/timelines/toggle_column.cy.ts index 625642da5c5fa..6845d402d21f1 100644 --- a/x-pack/test/security_solution_cypress/cypress/e2e/investigations/timelines/toggle_column.cy.ts +++ b/x-pack/test/security_solution_cypress/cypress/e2e/investigations/timelines/toggle_column.cy.ts @@ -20,34 +20,30 @@ import { import { hostsUrl } from '../../../urls/navigation'; -describe( - 'toggle column in timeline', - { tags: ['@ess', '@serverless', '@brokenInServerless'] }, - () => { - before(() => { - cleanKibana(); - cy.intercept('POST', '/api/timeline/_export?file_name=timelines_export.ndjson').as('export'); - }); - - beforeEach(() => { - login(); - visitWithTimeRange(hostsUrl('allHosts')); - openTimelineUsingToggle(); - populateTimeline(); - }); - - it('removes the @timestamp field from the timeline when the user un-checks the toggle', () => { - expandFirstTimelineEventDetails(); - clickTimestampToggleField(); - - cy.get(TIMESTAMP_HEADER_FIELD).should('not.exist'); - }); - - it('adds the _id field to the timeline when the user checks the field', () => { - expandFirstTimelineEventDetails(); - clickIdToggleField(); - - cy.get(ID_HEADER_FIELD).should('exist'); - }); - } -); +describe('toggle column in timeline', { tags: ['@ess', '@serverless'] }, () => { + before(() => { + cleanKibana(); + cy.intercept('POST', '/api/timeline/_export?file_name=timelines_export.ndjson').as('export'); + }); + + beforeEach(() => { + login(); + visitWithTimeRange(hostsUrl('allHosts')); + openTimelineUsingToggle(); + populateTimeline(); + }); + + it('removes the @timestamp field from the timeline when the user un-checks the toggle', () => { + expandFirstTimelineEventDetails(); + clickTimestampToggleField(); + + cy.get(TIMESTAMP_HEADER_FIELD).should('not.exist'); + }); + + it('adds the _id field to the timeline when the user checks the field', () => { + expandFirstTimelineEventDetails(); + clickIdToggleField(); + + cy.get(ID_HEADER_FIELD).should('exist'); + }); +}); diff --git a/x-pack/test/security_solution_cypress/cypress/e2e/investigations/timelines/url_state.cy.ts b/x-pack/test/security_solution_cypress/cypress/e2e/investigations/timelines/url_state.cy.ts index 5028f54146e85..c49f1d51d9617 100644 --- a/x-pack/test/security_solution_cypress/cypress/e2e/investigations/timelines/url_state.cy.ts +++ b/x-pack/test/security_solution_cypress/cypress/e2e/investigations/timelines/url_state.cy.ts @@ -23,7 +23,7 @@ import { visit, visitWithTimeRange } from '../../../tasks/navigation'; import { TIMELINES_URL } from '../../../urls/navigation'; -describe('Open timeline', { tags: ['@brokenInServerless', '@ess'] }, () => { +describe('Open timeline', { tags: ['@serverless', '@ess'] }, () => { let timelineSavedObjectId: string | null = null; before(function () { cleanKibana(); diff --git a/x-pack/test/security_solution_cypress/cypress/screens/common/rule_actions.ts b/x-pack/test/security_solution_cypress/cypress/screens/common/rule_actions.ts index 76975fbe760f1..e6d44f0918c6d 100644 --- a/x-pack/test/security_solution_cypress/cypress/screens/common/rule_actions.ts +++ b/x-pack/test/security_solution_cypress/cypress/screens/common/rule_actions.ts @@ -7,6 +7,13 @@ export const EMAIL_ACTION_BTN = '[data-test-subj=".email-siem-ActionTypeSelectOption"]'; +export const WEBHOOK_ACTION_BTN = '[data-test-subj=".webhook-siem-ActionTypeSelectOption"]'; + +/** + * all rule actions buttons, elements which data-test-subj attribute ends with '-siem-ActionTypeSelectOption' + */ +export const ACTION_BTN = '[data-test-subj$="-siem-ActionTypeSelectOption"]'; + export const CREATE_ACTION_CONNECTOR_BTN = '[data-test-subj="createActionConnectorButton-0"]'; export const SAVE_ACTION_CONNECTOR_BTN = '[data-test-subj="saveActionButtonModal"]'; diff --git a/x-pack/test/security_solution_cypress/cypress/tasks/alerts.ts b/x-pack/test/security_solution_cypress/cypress/tasks/alerts.ts index 1bbdc9eac1539..4950f2c65fab2 100644 --- a/x-pack/test/security_solution_cypress/cypress/tasks/alerts.ts +++ b/x-pack/test/security_solution_cypress/cypress/tasks/alerts.ts @@ -304,6 +304,12 @@ export const goToAcknowledgedAlerts = () => { cy.get(TIMELINE_COLUMN_SPINNER).should('not.exist'); }; +export const markAlertsAcknowledged = () => { + cy.get(TAKE_ACTION_POPOVER_BTN).click({ force: true }); + cy.get(MARK_ALERT_ACKNOWLEDGED_BTN).should('be.visible'); + cy.get(MARK_ALERT_ACKNOWLEDGED_BTN).click(); +}; + export const markAcknowledgedFirstAlert = () => { expandFirstAlertActions(); cy.get(MARK_ALERT_ACKNOWLEDGED_BTN).should('be.visible'); diff --git a/x-pack/test/security_solution_cypress/package.json b/x-pack/test/security_solution_cypress/package.json index dce7081c251dd..c434d5d7a4099 100644 --- a/x-pack/test/security_solution_cypress/package.json +++ b/x-pack/test/security_solution_cypress/package.json @@ -23,6 +23,7 @@ "cypress:open:serverless": "yarn cypress:serverless open --config-file ../../test/security_solution_cypress/cypress/cypress_serverless.config.ts --spec './cypress/e2e/**/*.cy.ts'", "cypress:run:serverless": "yarn cypress:serverless --spec './cypress/e2e/!(investigations|explore)/**/*.cy.ts'", "cypress:run:cloud:serverless": "yarn cypress:cloud:serverless run --config-file ./cypress/cypress_ci_serverless.config.ts --env CLOUD_SERVERLESS=true", + "cypress:run:qa:serverless": "yarn cypress:cloud:serverless run --config-file ./cypress/cypress_ci_serverless_qa.config.ts --env CLOUD_SERVERLESS=true", "cypress:investigations:run:serverless": "yarn cypress:serverless --spec './cypress/e2e/investigations/**/*.cy.ts'", "cypress:explore:run:serverless": "yarn cypress:serverless --spec './cypress/e2e/explore/**/*.cy.ts'", "cypress:changed-specs-only:serverless": "yarn cypress:serverless --changed-specs-only --env burn=5", diff --git a/x-pack/test/tsconfig.json b/x-pack/test/tsconfig.json index 5da72a7c99d5f..7d29b3794ac8a 100644 --- a/x-pack/test/tsconfig.json +++ b/x-pack/test/tsconfig.json @@ -126,7 +126,6 @@ "@kbn/maps-vector-tile-utils", "@kbn/server-route-repository", "@kbn/core-http-common", - "@kbn/slo-schema", "@kbn/lens-plugin", "@kbn/notifications-plugin", "@kbn/logs-shared-plugin", diff --git a/x-pack/test_serverless/api_integration/test_suites/common/reporting/management.ts b/x-pack/test_serverless/api_integration/test_suites/common/reporting/management.ts index ca9bdd44aadfb..309a56b2296e7 100644 --- a/x-pack/test_serverless/api_integration/test_suites/common/reporting/management.ts +++ b/x-pack/test_serverless/api_integration/test_suites/common/reporting/management.ts @@ -23,6 +23,9 @@ export default ({ getService }: FtrProviderContext) => { const supertest = getService('supertestWithoutAuth'); describe('Reporting Management', function () { + // security_exception: action [indices:admin/create] is unauthorized for user [elastic] with effective roles [superuser] on restricted indices [.reporting-2020.04.19], this action is granted by the index privileges [create_index,manage,all] + this.tags(['failsOnMKI']); + const dataArchive = 'x-pack/test/functional/es_archives/reporting/archived_reports'; beforeEach(async () => { diff --git a/x-pack/test_serverless/api_integration/test_suites/observability/config.feature_flags.ts b/x-pack/test_serverless/api_integration/test_suites/observability/config.feature_flags.ts index bedcfb3889b00..06fb7e5682ea3 100644 --- a/x-pack/test_serverless/api_integration/test_suites/observability/config.feature_flags.ts +++ b/x-pack/test_serverless/api_integration/test_suites/observability/config.feature_flags.ts @@ -20,7 +20,10 @@ export default createTestConfig({ suiteTags: { exclude: ['skipSvlOblt'] }, services, // add feature flags - kbnServerArgs: ['--xpack.observability.unsafe.thresholdRule.enabled=true'], + kbnServerArgs: [ + '--xpack.observability.unsafe.thresholdRule.enabled=true', + '--xpack.infra.enabled=true', + ], // load tests in the index file testFiles: [require.resolve('./index.feature_flags.ts')], diff --git a/x-pack/test_serverless/api_integration/test_suites/observability/config.ts b/x-pack/test_serverless/api_integration/test_suites/observability/config.ts index a9484f1aee7bf..9901c9736b9aa 100644 --- a/x-pack/test_serverless/api_integration/test_suites/observability/config.ts +++ b/x-pack/test_serverless/api_integration/test_suites/observability/config.ts @@ -20,5 +20,4 @@ export default createTestConfig({ // include settings from project controller // https://github.com/elastic/project-controller/blob/main/internal/project/observability/config/elasticsearch.yml esServerArgs: ['xpack.ml.dfa.enabled=false', 'xpack.ml.nlp.enabled=false'], - kbnServerArgs: ['--xpack.infra.enabled=true'], }); diff --git a/x-pack/test_serverless/api_integration/test_suites/observability/index.feature_flags.ts b/x-pack/test_serverless/api_integration/test_suites/observability/index.feature_flags.ts index a3a5ab552ee3f..aaaf1b706fb9d 100644 --- a/x-pack/test_serverless/api_integration/test_suites/observability/index.feature_flags.ts +++ b/x-pack/test_serverless/api_integration/test_suites/observability/index.feature_flags.ts @@ -10,5 +10,6 @@ import { FtrProviderContext } from '../../ftr_provider_context'; export default function ({ loadTestFile }: FtrProviderContext) { describe('Serverless observability API - feature flags', function () { loadTestFile(require.resolve('./custom_threshold_rule')); + loadTestFile(require.resolve('./infra')); }); } diff --git a/x-pack/test_serverless/api_integration/test_suites/observability/index.ts b/x-pack/test_serverless/api_integration/test_suites/observability/index.ts index f7d428387370a..72cb01c03fd2f 100644 --- a/x-pack/test_serverless/api_integration/test_suites/observability/index.ts +++ b/x-pack/test_serverless/api_integration/test_suites/observability/index.ts @@ -16,6 +16,5 @@ export default function ({ loadTestFile }: FtrProviderContext) { loadTestFile(require.resolve('./telemetry/telemetry_config')); loadTestFile(require.resolve('./apm_api_integration/feature_flags.ts')); loadTestFile(require.resolve('./cases')); - loadTestFile(require.resolve('./infra')); }); } diff --git a/x-pack/test_serverless/api_integration/test_suites/observability/infra/index.ts b/x-pack/test_serverless/api_integration/test_suites/observability/infra/index.ts index 7769ffa652e6f..9ab20b80205d7 100644 --- a/x-pack/test_serverless/api_integration/test_suites/observability/infra/index.ts +++ b/x-pack/test_serverless/api_integration/test_suites/observability/infra/index.ts @@ -5,10 +5,14 @@ * 2.0. */ -import { FtrProviderContext } from '../../../ftr_provider_context'; +import type { FtrProviderContext } from '../../../ftr_provider_context'; export default function ({ loadTestFile }: FtrProviderContext) { describe('Infra UI', function () { + // all these tests are failing on MKI: + // Error: expected 200 "OK", got 404 "Not Found" + this.tags(['failsOnMKI']); + loadTestFile(require.resolve('./metadata')); loadTestFile(require.resolve('./snapshot')); loadTestFile(require.resolve('./processes')); diff --git a/x-pack/test_serverless/api_integration/test_suites/observability/telemetry/snapshot_telemetry.ts b/x-pack/test_serverless/api_integration/test_suites/observability/telemetry/snapshot_telemetry.ts index f0fc2a357156e..f6f2d63d566bc 100644 --- a/x-pack/test_serverless/api_integration/test_suites/observability/telemetry/snapshot_telemetry.ts +++ b/x-pack/test_serverless/api_integration/test_suites/observability/telemetry/snapshot_telemetry.ts @@ -18,7 +18,8 @@ import type { UsageStatsPayloadTestFriendly } from '../../../../../test/api_inte export default function ({ getService }: FtrProviderContext) { const usageApi = getService('usageAPI'); - describe('Snapshot telemetry', function () { + // FLAKY: https://github.com/elastic/kibana/issues/168625 + describe.skip('Snapshot telemetry', function () { let stats: UsageStatsPayloadTestFriendly; before(async () => { diff --git a/x-pack/test_serverless/api_integration/test_suites/search/config.feature_flags.ts b/x-pack/test_serverless/api_integration/test_suites/search/config.feature_flags.ts index d56585c4634f9..ad5a651179e32 100644 --- a/x-pack/test_serverless/api_integration/test_suites/search/config.feature_flags.ts +++ b/x-pack/test_serverless/api_integration/test_suites/search/config.feature_flags.ts @@ -24,5 +24,5 @@ export default createTestConfig({ // include settings from project controller // https://github.com/elastic/project-controller/blob/main/internal/project/esproject/config/elasticsearch.yml - esServerArgs: ['xpack.ml.ad.enabled=false', 'xpack.ml.dfa.enabled=false'], + esServerArgs: [], }); diff --git a/x-pack/test_serverless/api_integration/test_suites/search/config.ts b/x-pack/test_serverless/api_integration/test_suites/search/config.ts index 7afde0944020c..4d0445a99a3e6 100644 --- a/x-pack/test_serverless/api_integration/test_suites/search/config.ts +++ b/x-pack/test_serverless/api_integration/test_suites/search/config.ts @@ -17,5 +17,5 @@ export default createTestConfig({ // include settings from project controller // https://github.com/elastic/project-controller/blob/main/internal/project/esproject/config/elasticsearch.yml - esServerArgs: ['xpack.ml.ad.enabled=false', 'xpack.ml.dfa.enabled=false'], + esServerArgs: [], }); diff --git a/x-pack/test_serverless/api_integration/test_suites/search/index.ts b/x-pack/test_serverless/api_integration/test_suites/search/index.ts index 7b5f69bc5da8b..c81c324ea15bd 100644 --- a/x-pack/test_serverless/api_integration/test_suites/search/index.ts +++ b/x-pack/test_serverless/api_integration/test_suites/search/index.ts @@ -15,5 +15,6 @@ export default function ({ loadTestFile }: FtrProviderContext) { loadTestFile(require.resolve('./telemetry/telemetry_config')); loadTestFile(require.resolve('./cases/find_cases')); loadTestFile(require.resolve('./cases/post_case')); + loadTestFile(require.resolve('./serverless_search')); }); } diff --git a/x-pack/test_serverless/api_integration/test_suites/search/serverless_search/api_key.ts b/x-pack/test_serverless/api_integration/test_suites/search/serverless_search/api_key.ts new file mode 100644 index 0000000000000..d22d6fc8360ce --- /dev/null +++ b/x-pack/test_serverless/api_integration/test_suites/search/serverless_search/api_key.ts @@ -0,0 +1,103 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import expect from 'expect'; +import { kibanaTestUser } from '@kbn/test'; +import { SecurityApiKey } from '@elastic/elasticsearch/lib/api/types'; +import { FtrProviderContext } from '../../../ftr_provider_context'; + +const API_BASE_PATH = '/internal/serverless_search'; + +export default function ({ getService }: FtrProviderContext) { + const svlCommonApi = getService('svlCommonApi'); + const supertest = getService('supertest'); + const es = getService('es'); + const log = getService('log'); + + describe('API Key routes', function () { + describe('GET api_keys', function () { + it('return apiKeys', async () => { + const { body } = await supertest + .get(`${API_BASE_PATH}/api_keys`) + .set(svlCommonApi.getInternalRequestHeader()) + .expect(200); + + expect(body).toBeDefined(); + expect(body.apiKeys).toBeDefined(); + expect(Array.isArray(body.apiKeys)).toBe(true); + }); + }); + + describe('POST api_key', function () { + const deleteAllApiKeys = async () => { + let apiKeys: SecurityApiKey[]; + // Delete existing API keys + try { + const apiKeysResult = await es.security.getApiKey({ username: kibanaTestUser.username }); + apiKeys = apiKeysResult.api_keys; + } catch (err) { + log.debug('[Setup error] error listing API keys'); + throw err; + } + + expect(Array.isArray(apiKeys)).toBe(true); + if (apiKeys.length === 0) { + return; + } + + const apiKeysToDelete = apiKeys.map(({ id }) => id); + await es.security.invalidateApiKey({ ids: apiKeysToDelete }); + }; + before(async () => { + await deleteAllApiKeys(); + }); + after(async () => { + await deleteAllApiKeys(); + }); + it('can create a key that expires', async () => { + const createBody = { + name: 'test-api-key-001', + expiration: '60d', + }; + const { body } = await supertest + .post(`${API_BASE_PATH}/api_key`) + .set(svlCommonApi.getInternalRequestHeader()) + .send(createBody) + .expect(200); + + expect(body).toMatchObject({ name: 'test-api-key-001', expiration: expect.anything() }); + }); + it('can create a key that never expires', async () => { + const createBody = { + name: 'test-api-key-002', + }; + const { body } = await supertest + .post(`${API_BASE_PATH}/api_key`) + .set(svlCommonApi.getInternalRequestHeader()) + .send(createBody) + .expect(200); + + expect(body).toMatchObject({ name: 'test-api-key-002' }); + }); + it('has beats_logstash_format in result', async () => { + const createBody = { + name: 'test-api-key-003', + }; + const { body } = await supertest + .post(`${API_BASE_PATH}/api_key`) + .set(svlCommonApi.getInternalRequestHeader()) + .send(createBody) + .expect(200); + + expect(body).toMatchObject({ + name: 'test-api-key-003', + beats_logstash_format: expect.stringContaining(':'), + }); + }); + }); + }); +} diff --git a/x-pack/test_serverless/api_integration/test_suites/search/serverless_search/connectors.ts b/x-pack/test_serverless/api_integration/test_suites/search/serverless_search/connectors.ts new file mode 100644 index 0000000000000..ac7ddcf5372f5 --- /dev/null +++ b/x-pack/test_serverless/api_integration/test_suites/search/serverless_search/connectors.ts @@ -0,0 +1,42 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import expect from 'expect'; +import { FtrProviderContext } from '../../../ftr_provider_context'; + +const API_BASE_PATH = '/internal/serverless_search'; + +export default function ({ getService }: FtrProviderContext) { + const svlCommonApi = getService('svlCommonApi'); + const supertest = getService('supertest'); + + describe('Connectors routes', function () { + describe('GET connectors', function () { + it('returns list of connectors', async () => { + const { body } = await supertest + .get(`${API_BASE_PATH}/connectors`) + .set(svlCommonApi.getInternalRequestHeader()) + .expect(200); + + expect(body.connectors).toBeDefined(); + expect(Array.isArray(body.connectors)).toBe(true); + }); + }); + describe('GET connectors', function () { + it('returns list of connector_types', async () => { + const { body } = await supertest + .get(`${API_BASE_PATH}/connector_types`) + .set(svlCommonApi.getInternalRequestHeader()) + .expect(200); + + expect(body.connectors).toBeDefined(); + expect(Array.isArray(body.connectors)).toBe(true); + expect(body.connectors.length).toBeGreaterThan(0); + }); + }); + }); +} diff --git a/x-pack/test/observability_api_integration/apis/composite_slo/index.ts b/x-pack/test_serverless/api_integration/test_suites/search/serverless_search/index.ts similarity index 54% rename from x-pack/test/observability_api_integration/apis/composite_slo/index.ts rename to x-pack/test_serverless/api_integration/test_suites/search/serverless_search/index.ts index bc7f0a5362cb8..dd80cb7f5342d 100644 --- a/x-pack/test/observability_api_integration/apis/composite_slo/index.ts +++ b/x-pack/test_serverless/api_integration/test_suites/search/serverless_search/index.ts @@ -5,12 +5,12 @@ * 2.0. */ -import { FtrProviderContext } from '../../common/ftr_provider_context'; +import { FtrProviderContext } from '../../../ftr_provider_context'; export default function ({ loadTestFile }: FtrProviderContext) { - describe('composite_slo', () => { - loadTestFile(require.resolve('./create')); - loadTestFile(require.resolve('./delete')); - loadTestFile(require.resolve('./update')); + describe('Serverless Search - Server', function () { + loadTestFile(require.resolve('./api_key')); + loadTestFile(require.resolve('./connectors')); + loadTestFile(require.resolve('./indices')); }); } diff --git a/x-pack/test_serverless/api_integration/test_suites/search/serverless_search/indices.ts b/x-pack/test_serverless/api_integration/test_suites/search/serverless_search/indices.ts new file mode 100644 index 0000000000000..a387f6e7e320e --- /dev/null +++ b/x-pack/test_serverless/api_integration/test_suites/search/serverless_search/indices.ts @@ -0,0 +1,43 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import expect from 'expect'; +import { FtrProviderContext } from '../../../ftr_provider_context'; + +const API_BASE_PATH = '/internal/serverless_search'; + +export default function ({ getService }: FtrProviderContext) { + const svlCommonApi = getService('svlCommonApi'); + const supertest = getService('supertest'); + + describe('Indices routes', function () { + describe('GET indices', function () { + it('has route', async () => { + const { body } = await supertest + .get(`${API_BASE_PATH}/indices`) + .set(svlCommonApi.getInternalRequestHeader()) + .expect(200); + + expect(body).toBeDefined(); + }); + it('accepts search_query', async () => { + await supertest + .get(`${API_BASE_PATH}/indices`) + .set(svlCommonApi.getInternalRequestHeader()) + .query({ search_query: 'foo' }) + .expect(200); + }); + it('accepts from & size', async () => { + await supertest + .get(`${API_BASE_PATH}/indices`) + .set(svlCommonApi.getInternalRequestHeader()) + .query({ from: 0, size: 10 }) + .expect(200); + }); + }); + }); +} diff --git a/x-pack/test_serverless/api_integration/test_suites/search/telemetry/telemetry_config.ts b/x-pack/test_serverless/api_integration/test_suites/search/telemetry/telemetry_config.ts index 8df4bae9df5a0..ad523c6be982f 100644 --- a/x-pack/test_serverless/api_integration/test_suites/search/telemetry/telemetry_config.ts +++ b/x-pack/test_serverless/api_integration/test_suites/search/telemetry/telemetry_config.ts @@ -5,6 +5,7 @@ * 2.0. */ +import { expect } from 'expect'; import { FtrProviderContext } from '../../../ftr_provider_context'; export default function telemetryConfigTest({ getService }: FtrProviderContext) { @@ -23,30 +24,34 @@ export default function telemetryConfigTest({ getService }: FtrProviderContext) }; it('GET should get the default config', async () => { - await supertest + const { body } = await supertest .get('/api/telemetry/v2/config') .set(svlCommonApi.getCommonRequestHeader()) - .expect(200, baseConfig); + .expect(200); + + expect(body).toMatchObject(baseConfig); }); it('GET should get updated labels after dynamically updating them', async () => { + const uniqueJourneyName = `my-ftr-test-${new Date().getMilliseconds()}`; await supertest .put('/internal/core/_settings') .set(svlCommonApi.getInternalRequestHeader()) .set('elastic-api-version', '1') - .send({ 'telemetry.labels.journeyName': 'my-ftr-test' }) + .send({ 'telemetry.labels.journeyName': uniqueJourneyName }) .expect(200, { ok: true }); - await supertest + const { body } = await supertest .get('/api/telemetry/v2/config') .set(svlCommonApi.getCommonRequestHeader()) - .expect(200, { - ...baseConfig, - labels: { - ...baseConfig.labels, - journeyName: 'my-ftr-test', - }, - }); + .expect(200); + expect(body).toMatchObject({ + ...baseConfig, + labels: { + ...baseConfig.labels, + journeyName: uniqueJourneyName, + }, + }); }); }); } diff --git a/x-pack/test_serverless/api_integration/test_suites/security/cloud_security_posture/benchmark.ts b/x-pack/test_serverless/api_integration/test_suites/security/cloud_security_posture/benchmark.ts index a0fd49e24e34a..53802db8caf3d 100644 --- a/x-pack/test_serverless/api_integration/test_suites/security/cloud_security_posture/benchmark.ts +++ b/x-pack/test_serverless/api_integration/test_suites/security/cloud_security_posture/benchmark.ts @@ -18,7 +18,10 @@ export default function ({ getService }: FtrProviderContext) { const esArchiver = getService('esArchiver'); const kibanaServer = getService('kibanaServer'); - describe('GET /internal/cloud_security_posture/benchmark', () => { + describe('GET /internal/cloud_security_posture/benchmark', function () { + // security_exception: action [indices:admin/create] is unauthorized for user [elastic] with effective roles [superuser] on restricted indices [.fleet-actions-7], this action is granted by the index privileges [create_index,manage,all] + this.tags(['failsOnMKI']); + let agentPolicyId: string; let agentPolicyId2: string; let agentPolicyId3: string; diff --git a/x-pack/test_serverless/api_integration/test_suites/security/cloud_security_posture/get_csp_rule_template.ts b/x-pack/test_serverless/api_integration/test_suites/security/cloud_security_posture/get_csp_rule_template.ts index 0e8734b7b0cd6..19208865deb5c 100644 --- a/x-pack/test_serverless/api_integration/test_suites/security/cloud_security_posture/get_csp_rule_template.ts +++ b/x-pack/test_serverless/api_integration/test_suites/security/cloud_security_posture/get_csp_rule_template.ts @@ -19,7 +19,10 @@ export default function ({ getService }: FtrProviderContext) { const esArchiver = getService('esArchiver'); const kibanaServer = getService('kibanaServer'); - describe('GET internal/cloud_security_posture/rules/_find', () => { + describe('GET internal/cloud_security_posture/rules/_find', function () { + // security_exception: action [indices:admin/create] is unauthorized for user [elastic] with effective roles [superuser] on restricted indices [.fleet-actions-7], this action is granted by the index privileges [create_index,manage,all] + this.tags(['failsOnMKI']); + let agentPolicyId: string; beforeEach(async () => { diff --git a/x-pack/test_serverless/api_integration/test_suites/security/cloud_security_posture/status/status_indexed.ts b/x-pack/test_serverless/api_integration/test_suites/security/cloud_security_posture/status/status_indexed.ts index f31d295db631d..ace5eef6a5499 100644 --- a/x-pack/test_serverless/api_integration/test_suites/security/cloud_security_posture/status/status_indexed.ts +++ b/x-pack/test_serverless/api_integration/test_suites/security/cloud_security_posture/status/status_indexed.ts @@ -41,7 +41,10 @@ export default function (providerContext: FtrProviderContext) { const esArchiver = getService('esArchiver'); const kibanaServer = getService('kibanaServer'); - describe('GET /internal/cloud_security_posture/status', () => { + describe('GET /internal/cloud_security_posture/status', function () { + // security_exception: action [indices:admin/create] is unauthorized for user [elastic] with effective roles [superuser] on restricted indices [.fleet-actions-7], this action is granted by the index privileges [create_index,manage,all] + this.tags(['failsOnMKI']); + let agentPolicyId: string; describe('STATUS = INDEXED TEST', () => { diff --git a/x-pack/test_serverless/api_integration/test_suites/security/cloud_security_posture/status/status_indexing.ts b/x-pack/test_serverless/api_integration/test_suites/security/cloud_security_posture/status/status_indexing.ts index 7c7f342170c4c..316fb54f829c6 100644 --- a/x-pack/test_serverless/api_integration/test_suites/security/cloud_security_posture/status/status_indexing.ts +++ b/x-pack/test_serverless/api_integration/test_suites/security/cloud_security_posture/status/status_indexing.ts @@ -41,7 +41,10 @@ export default function (providerContext: FtrProviderContext) { const esArchiver = getService('esArchiver'); const kibanaServer = getService('kibanaServer'); - describe('GET /internal/cloud_security_posture/status', () => { + describe('GET /internal/cloud_security_posture/status', function () { + // security_exception: action [indices:admin/create] is unauthorized for user [elastic] with effective roles [superuser] on restricted indices [.fleet-actions-7], this action is granted by the index privileges [create_index,manage,all] + this.tags(['failsOnMKI']); + let agentPolicyId: string; describe('STATUS = INDEXING TEST', () => { diff --git a/x-pack/test_serverless/api_integration/test_suites/security/cloud_security_posture/status/status_not_deployed_not_installed.ts b/x-pack/test_serverless/api_integration/test_suites/security/cloud_security_posture/status/status_not_deployed_not_installed.ts index a797f47eef787..ac516bc68434c 100644 --- a/x-pack/test_serverless/api_integration/test_suites/security/cloud_security_posture/status/status_not_deployed_not_installed.ts +++ b/x-pack/test_serverless/api_integration/test_suites/security/cloud_security_posture/status/status_not_deployed_not_installed.ts @@ -19,7 +19,10 @@ export default function (providerContext: FtrProviderContext) { const esArchiver = getService('esArchiver'); const kibanaServer = getService('kibanaServer'); - describe('GET /internal/cloud_security_posture/status', () => { + describe('GET /internal/cloud_security_posture/status', function () { + // security_exception: action [indices:admin/create] is unauthorized for user [elastic] with effective roles [superuser] on restricted indices [.fleet-actions-7], this action is granted by the index privileges [create_index,manage,all] + this.tags(['failsOnMKI']); + let agentPolicyId: string; describe('STATUS = NOT-DEPLOYED and STATUS = NOT-INSTALLED TEST', () => { diff --git a/x-pack/test_serverless/api_integration/test_suites/security/cloud_security_posture/telemetry.ts b/x-pack/test_serverless/api_integration/test_suites/security/cloud_security_posture/telemetry.ts index aa189472eebcc..155d85dc0f06c 100644 --- a/x-pack/test_serverless/api_integration/test_suites/security/cloud_security_posture/telemetry.ts +++ b/x-pack/test_serverless/api_integration/test_suites/security/cloud_security_posture/telemetry.ts @@ -61,7 +61,10 @@ export default function ({ getService }: FtrProviderContext) { }, }; - describe('Verify cloud_security_posture telemetry payloads', async () => { + describe('Verify cloud_security_posture telemetry payloads', function () { + // security_exception: action [indices:admin/create] is unauthorized for user [elastic] with effective roles [superuser] on restricted indices [.fleet-actions-7], this action is granted by the index privileges [create_index,manage,all] + this.tags(['failsOnMKI']); + let agentPolicyId: string; before(async () => { diff --git a/x-pack/test_serverless/functional/test_suites/common/examples/search/warnings.ts b/x-pack/test_serverless/functional/test_suites/common/examples/search/warnings.ts index 694d1ed335c22..ff24321f11348 100644 --- a/x-pack/test_serverless/functional/test_suites/common/examples/search/warnings.ts +++ b/x-pack/test_serverless/functional/test_suites/common/examples/search/warnings.ts @@ -107,7 +107,7 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { await retry.try(async () => { const toasts = await find.allByCssSelector(toastsSelector); expect(toasts.length).to.be(2); - const expects = ['The data might be incomplete or wrong.', 'Query result']; + const expects = ['Results are partial and may be incomplete.', 'Query result']; await asyncForEach(toasts, async (t, index) => { expect(await t.getVisibleText()).to.eql(expects[index]); }); @@ -164,7 +164,7 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { await retry.try(async () => { toasts = await find.allByCssSelector(toastsSelector); expect(toasts.length).to.be(2); - const expects = ['The data might be incomplete or wrong.', 'Query result']; + const expects = ['Results are partial and may be incomplete.', 'Query result']; await asyncForEach(toasts, async (t, index) => { expect(await t.getVisibleText()).to.eql(expects[index]); }); diff --git a/x-pack/test_serverless/functional/test_suites/observability/cases/configure.ts b/x-pack/test_serverless/functional/test_suites/observability/cases/configure.ts index 3ed07084edd8c..f63ce94ead3fe 100644 --- a/x-pack/test_serverless/functional/test_suites/observability/cases/configure.ts +++ b/x-pack/test_serverless/functional/test_suites/observability/cases/configure.ts @@ -21,14 +21,24 @@ export default ({ getPageObject, getService }: FtrProviderContext) => { const find = getService('find'); describe('Configure Case', function () { - // Error: timed out waiting for assertRadioGroupValue: Expected the radio group value to equal "close-by-pushing" + // security_exception: action [indices:data/write/delete/byquery] is unauthorized for user [elastic] with effective roles [superuser] on restricted indices [.kibana_alerting_cases], this action is granted by the index privileges [delete,write,all] this.tags(['failsOnMKI']); before(async () => { await svlCommonPage.login(); await svlObltNavigation.navigateToLandingPage(); await svlCommonNavigation.sidenav.clickLink({ deepLinkId: 'observability-overview:cases' }); + await header.waitUntilLoadingHasFinished(); + + await retry.waitFor('configure-case-button exist', async () => { + return await testSubjects.exists('configure-case-button'); + }); + await common.clickAndValidate('configure-case-button', 'case-configure-title'); await header.waitUntilLoadingHasFinished(); + + await retry.waitFor('case-configure-title exist', async () => { + return await testSubjects.exists('case-configure-title'); + }); }); after(async () => { @@ -36,8 +46,7 @@ export default ({ getPageObject, getService }: FtrProviderContext) => { await svlCommonPage.forceLogout(); }); - // FLAKY: https://github.com/elastic/kibana/issues/166469 - describe.skip('Closure options', function () { + describe('Closure options', function () { it('defaults the closure option correctly', async () => { await cases.common.assertRadioGroupValue('closure-options-radio-group', 'close-by-user'); }); @@ -50,8 +59,7 @@ export default ({ getPageObject, getService }: FtrProviderContext) => { }); }); - // FLAKY: https://github.com/elastic/kibana/issues/167869 - describe.skip('Connectors', function () { + describe('Connectors', function () { it('defaults the connector to none correctly', async () => { await retry.waitFor('dropdown-connector-no-connector to exist', async () => { return await testSubjects.exists('dropdown-connector-no-connector'); diff --git a/x-pack/test_serverless/functional/test_suites/search/config.examples.ts b/x-pack/test_serverless/functional/test_suites/search/config.examples.ts index 67c77ac423844..0d30d29ab2a9f 100644 --- a/x-pack/test_serverless/functional/test_suites/search/config.examples.ts +++ b/x-pack/test_serverless/functional/test_suites/search/config.examples.ts @@ -23,5 +23,5 @@ export default createTestConfig({ // include settings from project controller // https://github.com/elastic/project-controller/blob/main/internal/project/esproject/config/elasticsearch.yml - esServerArgs: ['xpack.ml.ad.enabled=false', 'xpack.ml.dfa.enabled=false'], + esServerArgs: [], }); diff --git a/x-pack/test_serverless/functional/test_suites/search/config.feature_flags.ts b/x-pack/test_serverless/functional/test_suites/search/config.feature_flags.ts index 9d9663be9230f..dc109ec9705f9 100644 --- a/x-pack/test_serverless/functional/test_suites/search/config.feature_flags.ts +++ b/x-pack/test_serverless/functional/test_suites/search/config.feature_flags.ts @@ -24,5 +24,5 @@ export default createTestConfig({ // include settings from project controller // https://github.com/elastic/project-controller/blob/main/internal/project/esproject/config/elasticsearch.yml - esServerArgs: ['xpack.ml.ad.enabled=false', 'xpack.ml.dfa.enabled=false'], + esServerArgs: [], }); diff --git a/x-pack/test_serverless/functional/test_suites/search/config.screenshots.ts b/x-pack/test_serverless/functional/test_suites/search/config.screenshots.ts index 3a8966904b5c9..f146583710057 100644 --- a/x-pack/test_serverless/functional/test_suites/search/config.screenshots.ts +++ b/x-pack/test_serverless/functional/test_suites/search/config.screenshots.ts @@ -19,5 +19,5 @@ export default createTestConfig({ // include settings from project controller // https://github.com/elastic/project-controller/blob/main/internal/project/esproject/config/elasticsearch.yml - esServerArgs: ['xpack.ml.ad.enabled=false', 'xpack.ml.dfa.enabled=false'], + esServerArgs: [], }); diff --git a/x-pack/test_serverless/functional/test_suites/search/config.ts b/x-pack/test_serverless/functional/test_suites/search/config.ts index 5e0168a7c530d..c2171c532bf23 100644 --- a/x-pack/test_serverless/functional/test_suites/search/config.ts +++ b/x-pack/test_serverless/functional/test_suites/search/config.ts @@ -17,5 +17,5 @@ export default createTestConfig({ // include settings from project controller // https://github.com/elastic/project-controller/blob/main/internal/project/esproject/config/elasticsearch.yml - esServerArgs: ['xpack.ml.ad.enabled=false', 'xpack.ml.dfa.enabled=false'], + esServerArgs: [], }); diff --git a/x-pack/test_serverless/functional/test_suites/security/ftr/cases/configure.ts b/x-pack/test_serverless/functional/test_suites/security/ftr/cases/configure.ts index 5c71abf3ad7ba..19cd7a3ccdce0 100644 --- a/x-pack/test_serverless/functional/test_suites/security/ftr/cases/configure.ts +++ b/x-pack/test_serverless/functional/test_suites/security/ftr/cases/configure.ts @@ -26,8 +26,18 @@ export default ({ getPageObject, getService }: FtrProviderContext) => { await svlCommonPage.login(); await svlSecNavigation.navigateToLandingPage(); await testSubjects.click('solutionSideNavItemLink-cases'); + await header.waitUntilLoadingHasFinished(); + + await retry.waitFor('configure-case-button exist', async () => { + return await testSubjects.exists('configure-case-button'); + }); + await common.clickAndValidate('configure-case-button', 'case-configure-title'); await header.waitUntilLoadingHasFinished(); + + await retry.waitFor('case-configure-title exist', async () => { + return await testSubjects.exists('case-configure-title'); + }); }); after(async () => { @@ -36,8 +46,6 @@ export default ({ getPageObject, getService }: FtrProviderContext) => { }); describe('Closure options', function () { - // Error: Expected the radio group value to equal "close-by-pushing" (got "close-by-user") - this.tags(['failsOnMKI']); it('defaults the closure option correctly', async () => { await cases.common.assertRadioGroupValue('closure-options-radio-group', 'close-by-user'); });