diff --git a/.ci/Jenkinsfile_coverage b/.ci/Jenkinsfile_coverage
new file mode 100644
index 0000000000000..d9ec1861c9979
--- /dev/null
+++ b/.ci/Jenkinsfile_coverage
@@ -0,0 +1,112 @@
+#!/bin/groovy
+
+library 'kibana-pipeline-library'
+kibanaLibrary.load() // load from the Jenkins instance
+
+stage("Kibana Pipeline") { // This stage is just here to help the BlueOcean UI a little bit
+ timeout(time: 180, unit: 'MINUTES') {
+ timestamps {
+ ansiColor('xterm') {
+ catchError {
+ withEnv([
+ 'CODE_COVERAGE=1', // Needed for multiple ci scripts, such as remote.ts, test/scripts/*.sh, schema.js, etc.
+ ]) {
+ parallel([
+ 'kibana-intake-agent': {
+ withEnv([
+ 'NODE_ENV=test' // Needed for jest tests only
+ ]) {
+ kibanaPipeline.legacyJobRunner('kibana-intake')()
+ }
+ },
+ 'x-pack-intake-agent': {
+ withEnv([
+ 'NODE_ENV=test' // Needed for jest tests only
+ ]) {
+ kibanaPipeline.legacyJobRunner('x-pack-intake')()
+ }
+ },
+ 'kibana-oss-agent': kibanaPipeline.withWorkers('kibana-oss-tests', { kibanaPipeline.buildOss() }, [
+ 'oss-ciGroup1': kibanaPipeline.getOssCiGroupWorker(1),
+ 'oss-ciGroup2': kibanaPipeline.getOssCiGroupWorker(2),
+ 'oss-ciGroup3': kibanaPipeline.getOssCiGroupWorker(3),
+ 'oss-ciGroup4': kibanaPipeline.getOssCiGroupWorker(4),
+ 'oss-ciGroup5': kibanaPipeline.getOssCiGroupWorker(5),
+ 'oss-ciGroup6': kibanaPipeline.getOssCiGroupWorker(6),
+ 'oss-ciGroup7': kibanaPipeline.getOssCiGroupWorker(7),
+ 'oss-ciGroup8': kibanaPipeline.getOssCiGroupWorker(8),
+ 'oss-ciGroup9': kibanaPipeline.getOssCiGroupWorker(9),
+ 'oss-ciGroup10': kibanaPipeline.getOssCiGroupWorker(10),
+ 'oss-ciGroup11': kibanaPipeline.getOssCiGroupWorker(11),
+ 'oss-ciGroup12': kibanaPipeline.getOssCiGroupWorker(12),
+ ]),
+ 'kibana-xpack-agent-1': kibanaPipeline.withWorkers('kibana-xpack-tests-1', { kibanaPipeline.buildXpack() }, [
+ 'xpack-ciGroup1': kibanaPipeline.getXpackCiGroupWorker(1),
+ 'xpack-ciGroup2': kibanaPipeline.getXpackCiGroupWorker(2),
+ ]),
+ 'kibana-xpack-agent-2': kibanaPipeline.withWorkers('kibana-xpack-tests-2', { kibanaPipeline.buildXpack() }, [
+ 'xpack-ciGroup3': kibanaPipeline.getXpackCiGroupWorker(3),
+ 'xpack-ciGroup4': kibanaPipeline.getXpackCiGroupWorker(4),
+ ]),
+
+ 'kibana-xpack-agent-3': kibanaPipeline.withWorkers('kibana-xpack-tests-3', { kibanaPipeline.buildXpack() }, [
+ 'xpack-ciGroup5': kibanaPipeline.getXpackCiGroupWorker(5),
+ 'xpack-ciGroup6': kibanaPipeline.getXpackCiGroupWorker(6),
+ 'xpack-ciGroup7': kibanaPipeline.getXpackCiGroupWorker(7),
+ 'xpack-ciGroup8': kibanaPipeline.getXpackCiGroupWorker(8),
+ 'xpack-ciGroup9': kibanaPipeline.getXpackCiGroupWorker(9),
+ 'xpack-ciGroup10': kibanaPipeline.getXpackCiGroupWorker(10),
+ ]),
+ ])
+ kibanaPipeline.jobRunner('tests-l', false) {
+ kibanaPipeline.downloadCoverageArtifacts()
+ kibanaPipeline.bash(
+ '''
+ # bootstrap from x-pack folder
+ source src/dev/ci_setup/setup_env.sh
+ cd x-pack
+ yarn kbn bootstrap --prefer-offline
+ cd ..
+ # extract archives
+ mkdir -p /tmp/extracted_coverage
+ echo extracting intakes
+ tar -xzf /tmp/downloaded_coverage/coverage/kibana-intake/kibana-coverage.tar.gz -C /tmp/extracted_coverage
+ tar -xzf /tmp/downloaded_coverage/coverage/x-pack-intake/kibana-coverage.tar.gz -C /tmp/extracted_coverage
+ echo extracting kibana-oss-tests
+ tar -xzf /tmp/downloaded_coverage/coverage/kibana-oss-tests/kibana-coverage.tar.gz -C /tmp/extracted_coverage
+ echo extracting kibana-xpack-tests
+ for i in {1..3}; do
+ tar -xzf /tmp/downloaded_coverage/coverage/kibana-xpack-tests-${i}/kibana-coverage.tar.gz -C /tmp/extracted_coverage
+ done
+ # replace path in json files to have valid html report
+ pwd=$(pwd)
+ du -sh /tmp/extracted_coverage/target/kibana-coverage/
+ echo replacing path in json files
+ for i in {1..9}; do
+ sed -i "s|/dev/shm/workspace/kibana|$pwd|g" /tmp/extracted_coverage/target/kibana-coverage/functional/${i}*.json &
+ done
+ wait
+ # merge oss & x-pack reports
+ echo merging coverage reports
+ yarn nyc report --temp-dir /tmp/extracted_coverage/target/kibana-coverage/jest --report-dir target/kibana-coverage/jest-combined --reporter=html --reporter=json-summary
+ yarn nyc report --temp-dir /tmp/extracted_coverage/target/kibana-coverage/functional --report-dir target/kibana-coverage/functional-combined --reporter=html --reporter=json-summary
+ echo copy mocha reports
+ mkdir -p target/kibana-coverage/mocha-combined
+ cp -r /tmp/extracted_coverage/target/kibana-coverage/mocha target/kibana-coverage/mocha-combined
+ ''',
+ "run `yarn kbn bootstrap && merge coverage`"
+ )
+ sh 'tar -czf kibana-jest-coverage.tar.gz target/kibana-coverage/jest-combined/*'
+ kibanaPipeline.uploadCoverageArtifacts("coverage/jest-combined", 'kibana-jest-coverage.tar.gz')
+ sh 'tar -czf kibana-functional-coverage.tar.gz target/kibana-coverage/functional-combined/*'
+ kibanaPipeline.uploadCoverageArtifacts("coverage/functional-combined", 'kibana-functional-coverage.tar.gz')
+ sh 'tar -czf kibana-mocha-coverage.tar.gz target/kibana-coverage/mocha-combined/*'
+ kibanaPipeline.uploadCoverageArtifacts("coverage/mocha-combined", 'kibana-mocha-coverage.tar.gz')
+ }
+ }
+ }
+ kibanaPipeline.sendMail()
+ }
+ }
+ }
+}
diff --git a/.ci/Jenkinsfile_flaky b/.ci/Jenkinsfile_flaky
index 669395564db44..f702405aad69e 100644
--- a/.ci/Jenkinsfile_flaky
+++ b/.ci/Jenkinsfile_flaky
@@ -99,7 +99,7 @@ def getWorkerMap(agentNumber, numberOfExecutions, worker, workerFailures, maxWor
def numberOfWorkers = Math.min(numberOfExecutions, maxWorkerProcesses)
for(def i = 1; i <= numberOfWorkers; i++) {
- def workerExecutions = numberOfExecutions/numberOfWorkers + (i <= numberOfExecutions%numberOfWorkers ? 1 : 0)
+ def workerExecutions = floor(numberOfExecutions/numberOfWorkers + (i <= numberOfExecutions%numberOfWorkers ? 1 : 0))
workerMap["agent-${agentNumber}-worker-${i}"] = { workerNumber ->
for(def j = 0; j < workerExecutions; j++) {
diff --git a/.ci/es-snapshots/Jenkinsfile_build_es b/.ci/es-snapshots/Jenkinsfile_build_es
new file mode 100644
index 0000000000000..ad0ad54275e12
--- /dev/null
+++ b/.ci/es-snapshots/Jenkinsfile_build_es
@@ -0,0 +1,162 @@
+#!/bin/groovy
+
+// This job effectively has two SCM configurations:
+// one for kibana, used to check out this Jenkinsfile (which means it's the job's main SCM configuration), as well as kick-off the downstream verification job
+// one for elasticsearch, used to check out the elasticsearch source before building it
+
+// There are two parameters that drive which branch is checked out for each of these, but they will typically be the same
+// 'branch_specifier' is for kibana / the job itself
+// ES_BRANCH is for elasticsearch
+
+library 'kibana-pipeline-library'
+kibanaLibrary.load()
+
+def ES_BRANCH = params.ES_BRANCH
+
+if (!ES_BRANCH) {
+ error "Parameter 'ES_BRANCH' must be specified."
+}
+
+currentBuild.displayName += " - ${ES_BRANCH}"
+currentBuild.description = "ES: ${ES_BRANCH} Kibana: ${params.branch_specifier}"
+
+def PROMOTE_WITHOUT_VERIFY = !!params.PROMOTE_WITHOUT_VERIFICATION
+
+timeout(time: 120, unit: 'MINUTES') {
+ timestamps {
+ ansiColor('xterm') {
+ node('linux && immutable') {
+ catchError {
+ def VERSION
+ def SNAPSHOT_ID
+ def DESTINATION
+
+ def scmVars = checkoutEs(ES_BRANCH)
+ def GIT_COMMIT = scmVars.GIT_COMMIT
+ def GIT_COMMIT_SHORT = sh(script: "git rev-parse --short ${GIT_COMMIT}", returnStdout: true).trim()
+
+ buildArchives('to-archive')
+
+ dir('to-archive') {
+ def now = new Date()
+ def date = now.format("yyyyMMdd-HHmmss")
+
+ def filesRaw = sh(script: "ls -1", returnStdout: true).trim()
+ def files = filesRaw
+ .split("\n")
+ .collect { filename ->
+ // Filename examples
+ // elasticsearch-oss-8.0.0-SNAPSHOT-linux-x86_64.tar.gz
+ // elasticsearch-8.0.0-SNAPSHOT-linux-x86_64.tar.gz
+ def parts = filename.replace("elasticsearch-oss", "oss").split("-")
+
+ VERSION = VERSION ?: parts[1]
+ SNAPSHOT_ID = SNAPSHOT_ID ?: "${date}_${GIT_COMMIT_SHORT}"
+ DESTINATION = DESTINATION ?: "${VERSION}/archives/${SNAPSHOT_ID}"
+
+ return [
+ filename: filename,
+ checksum: filename + '.sha512',
+ url: "https://storage.googleapis.com/kibana-ci-es-snapshots-daily/${DESTINATION}/${filename}".toString(),
+ version: parts[1],
+ platform: parts[3],
+ architecture: parts[4].split('\\.')[0],
+ license: parts[0] == 'oss' ? 'oss' : 'default',
+ ]
+ }
+
+ sh 'find * -exec bash -c "shasum -a 512 {} > {}.sha512" \\;'
+
+ def manifest = [
+ bucket: "kibana-ci-es-snapshots-daily/${DESTINATION}".toString(),
+ branch: ES_BRANCH,
+ sha: GIT_COMMIT,
+ sha_short: GIT_COMMIT_SHORT,
+ version: VERSION,
+ generated: now.format("yyyy-MM-dd'T'HH:mm:ss'Z'", TimeZone.getTimeZone("UTC")),
+ archives: files,
+ ]
+ def manifestJson = toJSON(manifest).toString()
+ writeFile file: 'manifest.json', text: manifestJson
+
+ upload(DESTINATION, '*.*')
+
+ sh "cp manifest.json manifest-latest.json"
+ upload(VERSION, 'manifest-latest.json')
+ }
+
+ if (PROMOTE_WITHOUT_VERIFY) {
+ esSnapshots.promote(VERSION, SNAPSHOT_ID)
+
+ emailext(
+ to: 'build-kibana@elastic.co',
+ subject: "ES snapshot promoted without verification: ${params.ES_BRANCH}",
+ body: '${SCRIPT,template="groovy-html.template"}',
+ mimeType: 'text/html',
+ )
+ } else {
+ build(
+ propagate: false,
+ wait: false,
+ job: 'elasticsearch+snapshots+verify',
+ parameters: [
+ string(name: 'branch_specifier', value: branch_specifier),
+ string(name: 'SNAPSHOT_VERSION', value: VERSION),
+ string(name: 'SNAPSHOT_ID', value: SNAPSHOT_ID),
+ ]
+ )
+ }
+ }
+
+ kibanaPipeline.sendMail()
+ }
+ }
+ }
+}
+
+def checkoutEs(branch) {
+ retryWithDelay(8, 15) {
+ return checkout([
+ $class: 'GitSCM',
+ branches: [[name: branch]],
+ doGenerateSubmoduleConfigurations: false,
+ extensions: [],
+ submoduleCfg: [],
+ userRemoteConfigs: [[
+ credentialsId: 'f6c7695a-671e-4f4f-a331-acdce44ff9ba',
+ url: 'git@github.com:elastic/elasticsearch',
+ ]],
+ ])
+ }
+}
+
+def upload(destination, pattern) {
+ return googleStorageUpload(
+ credentialsId: 'kibana-ci-gcs-plugin',
+ bucket: "gs://kibana-ci-es-snapshots-daily/${destination}",
+ pattern: pattern,
+ sharedPublicly: false,
+ showInline: false,
+ )
+}
+
+def buildArchives(destination) {
+ def props = readProperties file: '.ci/java-versions.properties'
+ withEnv([
+ // Select the correct JDK for this branch
+ "PATH=/var/lib/jenkins/.java/${props.ES_BUILD_JAVA}/bin:${env.PATH}",
+
+ // These Jenkins env vars trigger some automation in the elasticsearch repo that we don't want
+ "BUILD_NUMBER=",
+ "JENKINS_URL=",
+ "BUILD_URL=",
+ "JOB_NAME=",
+ "NODE_NAME=",
+ ]) {
+ sh """
+ ./gradlew -p distribution/archives assemble --parallel
+ mkdir -p ${destination}
+ find distribution/archives -type f \\( -name 'elasticsearch-*-*-*-*.tar.gz' -o -name 'elasticsearch-*-*-*-*.zip' \\) -not -path *no-jdk* -exec cp {} ${destination} \\;
+ """
+ }
+}
diff --git a/.ci/es-snapshots/Jenkinsfile_trigger_build_es b/.ci/es-snapshots/Jenkinsfile_trigger_build_es
new file mode 100644
index 0000000000000..186917e967824
--- /dev/null
+++ b/.ci/es-snapshots/Jenkinsfile_trigger_build_es
@@ -0,0 +1,19 @@
+#!/bin/groovy
+
+if (!params.branches_yaml) {
+ error "'branches_yaml' parameter must be specified"
+}
+
+def branches = readYaml text: params.branches_yaml
+
+branches.each { branch ->
+ build(
+ propagate: false,
+ wait: false,
+ job: 'elasticsearch+snapshots+build',
+ parameters: [
+ string(name: 'branch_specifier', value: branch),
+ string(name: 'ES_BRANCH', value: branch),
+ ]
+ )
+}
diff --git a/.ci/es-snapshots/Jenkinsfile_verify_es b/.ci/es-snapshots/Jenkinsfile_verify_es
new file mode 100644
index 0000000000000..3d5ec75fa0e72
--- /dev/null
+++ b/.ci/es-snapshots/Jenkinsfile_verify_es
@@ -0,0 +1,72 @@
+#!/bin/groovy
+
+library 'kibana-pipeline-library'
+kibanaLibrary.load()
+
+def SNAPSHOT_VERSION = params.SNAPSHOT_VERSION
+def SNAPSHOT_ID = params.SNAPSHOT_ID
+
+if (!SNAPSHOT_VERSION) {
+ error "Parameter SNAPSHOT_VERSION must be specified"
+}
+
+if (!SNAPSHOT_ID) {
+ error "Parameter SNAPSHOT_ID must be specified"
+}
+
+currentBuild.displayName += " - ${SNAPSHOT_VERSION}"
+currentBuild.description = "ES: ${SNAPSHOT_VERSION} Kibana: ${params.branch_specifier}"
+
+def SNAPSHOT_MANIFEST = "https://storage.googleapis.com/kibana-ci-es-snapshots-daily/${SNAPSHOT_VERSION}/archives/${SNAPSHOT_ID}/manifest.json"
+
+timeout(time: 120, unit: 'MINUTES') {
+ timestamps {
+ ansiColor('xterm') {
+ catchError {
+ withEnv(["ES_SNAPSHOT_MANIFEST=${SNAPSHOT_MANIFEST}"]) {
+ parallel([
+ // TODO we just need to run integration tests from intake?
+ 'kibana-intake-agent': kibanaPipeline.legacyJobRunner('kibana-intake'),
+ 'x-pack-intake-agent': kibanaPipeline.legacyJobRunner('x-pack-intake'),
+ 'kibana-oss-agent': kibanaPipeline.withWorkers('kibana-oss-tests', { kibanaPipeline.buildOss() }, [
+ 'oss-ciGroup1': kibanaPipeline.getOssCiGroupWorker(1),
+ 'oss-ciGroup2': kibanaPipeline.getOssCiGroupWorker(2),
+ 'oss-ciGroup3': kibanaPipeline.getOssCiGroupWorker(3),
+ 'oss-ciGroup4': kibanaPipeline.getOssCiGroupWorker(4),
+ 'oss-ciGroup5': kibanaPipeline.getOssCiGroupWorker(5),
+ 'oss-ciGroup6': kibanaPipeline.getOssCiGroupWorker(6),
+ 'oss-ciGroup7': kibanaPipeline.getOssCiGroupWorker(7),
+ 'oss-ciGroup8': kibanaPipeline.getOssCiGroupWorker(8),
+ 'oss-ciGroup9': kibanaPipeline.getOssCiGroupWorker(9),
+ 'oss-ciGroup10': kibanaPipeline.getOssCiGroupWorker(10),
+ 'oss-ciGroup11': kibanaPipeline.getOssCiGroupWorker(11),
+ 'oss-ciGroup12': kibanaPipeline.getOssCiGroupWorker(12),
+ ]),
+ 'kibana-xpack-agent': kibanaPipeline.withWorkers('kibana-xpack-tests', { kibanaPipeline.buildXpack() }, [
+ 'xpack-ciGroup1': kibanaPipeline.getXpackCiGroupWorker(1),
+ 'xpack-ciGroup2': kibanaPipeline.getXpackCiGroupWorker(2),
+ 'xpack-ciGroup3': kibanaPipeline.getXpackCiGroupWorker(3),
+ 'xpack-ciGroup4': kibanaPipeline.getXpackCiGroupWorker(4),
+ 'xpack-ciGroup5': kibanaPipeline.getXpackCiGroupWorker(5),
+ 'xpack-ciGroup6': kibanaPipeline.getXpackCiGroupWorker(6),
+ 'xpack-ciGroup7': kibanaPipeline.getXpackCiGroupWorker(7),
+ 'xpack-ciGroup8': kibanaPipeline.getXpackCiGroupWorker(8),
+ 'xpack-ciGroup9': kibanaPipeline.getXpackCiGroupWorker(9),
+ 'xpack-ciGroup10': kibanaPipeline.getXpackCiGroupWorker(10),
+ ]),
+ ])
+ }
+
+ promoteSnapshot(SNAPSHOT_VERSION, SNAPSHOT_ID)
+ }
+
+ kibanaPipeline.sendMail()
+ }
+ }
+}
+
+def promoteSnapshot(snapshotVersion, snapshotId) {
+ node('linux && immutable') {
+ esSnapshots.promote(snapshotVersion, snapshotId)
+ }
+}
diff --git a/.eslintrc.js b/.eslintrc.js
index 03a674993ab50..a7bb204da4775 100644
--- a/.eslintrc.js
+++ b/.eslintrc.js
@@ -82,43 +82,12 @@ module.exports = {
'react-hooks/exhaustive-deps': 'off',
},
},
- {
- files: ['src/legacy/core_plugins/kibana/**/*.{js,ts,tsx}'],
- rules: {
- 'react-hooks/rules-of-hooks': 'off',
- 'react-hooks/exhaustive-deps': 'off',
- },
- },
- {
- files: ['src/legacy/core_plugins/tile_map/**/*.{js,ts,tsx}'],
- rules: {
- 'react-hooks/exhaustive-deps': 'off',
- },
- },
- {
- files: ['src/legacy/core_plugins/vis_type_markdown/**/*.{js,ts,tsx}'],
- rules: {
- 'react-hooks/exhaustive-deps': 'off',
- },
- },
- {
- files: ['src/legacy/core_plugins/vis_type_metric/**/*.{js,ts,tsx}'],
- rules: {
- 'jsx-a11y/click-events-have-key-events': 'off',
- },
- },
{
files: ['src/legacy/core_plugins/vis_type_table/**/*.{js,ts,tsx}'],
rules: {
'react-hooks/exhaustive-deps': 'off',
},
},
- {
- files: ['src/legacy/core_plugins/vis_type_vega/**/*.{js,ts,tsx}'],
- rules: {
- 'react-hooks/exhaustive-deps': 'off',
- },
- },
{
files: ['src/legacy/ui/public/vis/**/*.{js,ts,tsx}'],
rules: {
@@ -177,12 +146,6 @@ module.exports = {
'react-hooks/exhaustive-deps': 'off',
},
},
- {
- files: ['x-pack/legacy/plugins/monitoring/**/*.{js,ts,tsx}'],
- rules: {
- 'jsx-a11y/click-events-have-key-events': 'off',
- },
- },
{
files: ['x-pack/legacy/plugins/snapshot_restore/**/*.{js,ts,tsx}'],
rules: {
@@ -253,6 +216,7 @@ module.exports = {
'!x-pack/test/**/*',
'(src|x-pack)/plugins/**/(public|server)/**/*',
'src/core/(public|server)/**/*',
+ 'examples/**/*',
],
from: [
'src/core/public/**/*',
@@ -289,11 +253,15 @@ module.exports = {
'x-pack/legacy/plugins/**/*',
'!x-pack/legacy/plugins/*/server/**/*',
'!x-pack/legacy/plugins/*/index.{js,ts,tsx}',
+
+ 'examples/**/*',
+ '!examples/**/server/**/*',
],
from: [
'src/core/server',
'src/core/server/**/*',
'(src|x-pack)/plugins/*/server/**/*',
+ 'examples/**/server/**/*',
],
errorMessage:
'Server modules cannot be imported into client modules or shared modules.',
@@ -373,9 +341,8 @@ module.exports = {
'src/fixtures/**/*.js', // TODO: this directory needs to be more obviously "public" (or go away)
],
settings: {
- // instructs import/no-extraneous-dependencies to treat modules
- // in plugins/ or ui/ namespace as "core modules" so they don't
- // trigger failures for not being listed in package.json
+ // instructs import/no-extraneous-dependencies to treat certain modules
+ // as core modules, even if they aren't listed in package.json
'import/core-modules': [
'plugins',
'legacy/ui',
@@ -729,15 +696,13 @@ module.exports = {
'no-unreachable': 'error',
'no-unsafe-finally': 'error',
'no-useless-call': 'error',
- // This will be turned on after bug fixes are mostly complete
- // 'no-useless-catch': 'warn',
+ 'no-useless-catch': 'error',
'no-useless-concat': 'error',
'no-useless-computed-key': 'error',
// This will be turned on after bug fixes are mostly complete
// 'no-useless-escape': 'warn',
'no-useless-rename': 'error',
- // This will be turned on after bug fixes are mostly complete
- // 'no-useless-return': 'warn',
+ 'no-useless-return': 'error',
// This will be turned on after bug fixers are mostly complete
// 'no-void': 'warn',
'one-var-declaration-per-line': 'error',
@@ -745,14 +710,13 @@ module.exports = {
'prefer-promise-reject-errors': 'error',
'prefer-rest-params': 'error',
'prefer-spread': 'error',
- // This style will be turned on after most bugs are fixed
- // 'prefer-template': 'warn',
+ 'prefer-template': 'error',
'react/boolean-prop-naming': 'error',
'react/button-has-type': 'error',
+ 'react/display-name': 'error',
'react/forbid-dom-props': 'error',
'react/no-access-state-in-setstate': 'error',
- // This style will be turned on after most bugs are fixed
- // 'react/no-children-prop': 'warn',
+ 'react/no-children-prop': 'error',
'react/no-danger-with-children': 'error',
'react/no-deprecated': 'error',
'react/no-did-mount-set-state': 'error',
@@ -814,21 +778,6 @@ module.exports = {
},
},
- /**
- * Monitoring overrides
- */
- {
- files: ['x-pack/legacy/plugins/monitoring/**/*.js'],
- rules: {
- 'no-unused-vars': ['error', { args: 'all', argsIgnorePattern: '^_' }],
- 'no-else-return': 'error',
- },
- },
- {
- files: ['x-pack/legacy/plugins/monitoring/public/**/*.js'],
- env: { browser: true },
- },
-
/**
* Canvas overrides
*/
diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS
index 1137fb99f81a7..9a4f2b71da1ff 100644
--- a/.github/CODEOWNERS
+++ b/.github/CODEOWNERS
@@ -14,6 +14,7 @@
/src/legacy/core_plugins/kibana/public/local_application_service/ @elastic/kibana-app
/src/legacy/core_plugins/kibana/public/home/ @elastic/kibana-app
/src/legacy/core_plugins/kibana/public/dev_tools/ @elastic/kibana-app
+/src/legacy/core_plugins/metrics/ @elastic/kibana-app
/src/plugins/home/ @elastic/kibana-app
/src/plugins/kibana_legacy/ @elastic/kibana-app
/src/plugins/timelion/ @elastic/kibana-app
@@ -30,6 +31,7 @@
/src/plugins/visualizations/ @elastic/kibana-app-arch
/x-pack/plugins/advanced_ui_actions/ @elastic/kibana-app-arch
/src/legacy/core_plugins/data/ @elastic/kibana-app-arch
+/src/legacy/core_plugins/elasticsearch/lib/create_proxy.js @elastic/kibana-app-arch
/src/legacy/core_plugins/embeddable_api/ @elastic/kibana-app-arch
/src/legacy/core_plugins/interpreter/ @elastic/kibana-app-arch
/src/legacy/core_plugins/kibana_react/ @elastic/kibana-app-arch
@@ -84,6 +86,7 @@
/packages/kbn-es/ @elastic/kibana-operations
/packages/kbn-pm/ @elastic/kibana-operations
/packages/kbn-test/ @elastic/kibana-operations
+/packages/kbn-ui-shared-deps/ @elastic/kibana-operations
/src/legacy/server/keystore/ @elastic/kibana-operations
/src/legacy/server/pid/ @elastic/kibana-operations
/src/legacy/server/sass/ @elastic/kibana-operations
@@ -146,6 +149,3 @@
/x-pack/legacy/plugins/searchprofiler/ @elastic/es-ui
/x-pack/legacy/plugins/snapshot_restore/ @elastic/es-ui
/x-pack/legacy/plugins/watcher/ @elastic/es-ui
-
-# Kibana TSVB external contractors
-/src/legacy/core_plugins/metrics/ @elastic/kibana-tsvb-external
diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md
index 06e08c85dafec..6ae3db559b61b 100644
--- a/CONTRIBUTING.md
+++ b/CONTRIBUTING.md
@@ -190,6 +190,19 @@ These snapshots are built on a nightly basis which expire after a couple weeks.
yarn es snapshot
```
+##### Keeping data between snapshots
+
+If you want to keep the data inside your Elasticsearch between usages of this command,
+you should use the following command, to keep your data folder outside the downloaded snapshot
+folder:
+
+```bash
+yarn es snapshot -E path.data=../data
+```
+
+The same parameter can be used with the source and archive command shown in the following
+paragraphs.
+
#### Source
By default, it will reference an [elasticsearch](https://github.com/elastic/elasticsearch) checkout which is a sibling to the Kibana directory named `elasticsearch`. If you wish to use a checkout in another location you can provide that by supplying `--source-path`
diff --git a/docs/apm/settings.asciidoc b/docs/apm/settings.asciidoc
index 2fc8748f13b09..37122fc9c635d 100644
--- a/docs/apm/settings.asciidoc
+++ b/docs/apm/settings.asciidoc
@@ -3,8 +3,16 @@
[[apm-settings-in-kibana]]
=== APM settings in Kibana
-You do not need to configure any settings to use APM. It is enabled by default.
-If you'd like to change any of the default values,
-copy and paste the relevant settings below into your `kibana.yml` configuration file.
+You do not need to configure any settings to use the APM app. It is enabled by default.
+
+[float]
+[[apm-indices-settings]]
+==== APM Indices
+
+include::./../settings/apm-settings.asciidoc[tag=apm-indices-settings]
+
+[float]
+[[general-apm-settings]]
+==== General APM settings
include::./../settings/apm-settings.asciidoc[tag=general-apm-settings]
diff --git a/docs/apm/troubleshooting.asciidoc b/docs/apm/troubleshooting.asciidoc
index ec0863b09d653..22279b69b70fe 100644
--- a/docs/apm/troubleshooting.asciidoc
+++ b/docs/apm/troubleshooting.asciidoc
@@ -17,6 +17,7 @@ This section can help with any of the following:
There are a number of factors that could be at play here.
One important thing to double-check first is your index template.
+*Index template*
An APM index template must exist for the APM app to work correctly.
By default, this index template is created by APM Server on startup.
However, this only happens if `setup.template.enabled` is `true` in `apm-server.yml`.
@@ -34,14 +35,21 @@ GET /_template/apm-{version}
--------------------------------------------------
// CONSOLE
+*Using Logstash, Kafka, etc.*
If you're not outputting data directly from APM Server to Elasticsearch (perhaps you're using Logstash or Kafka),
then the index template will not be set up automatically. Instead, you'll need to
-{apm-server-ref}/_manually_loading_template_configuration.html#load-template-manually-alternate[load the template manually].
+{apm-server-ref}/_manually_loading_template_configuration.html[load the template manually].
-Finally, this problem can also occur if you've changed the index name that you write APM data to.
-The default index pattern can be found {apm-server-ref}/elasticsearch-output.html#index-option-es[here].
-If you change this setting, you must also configure the `setup.template.name` and `setup.template.pattern` options.
+*Using a custom index names*
+This problem can also occur if you've customized the index name that you write APM data to.
+The default index name that APM writes events to can be found
+{apm-server-ref}/elasticsearch-output.html#index-option-es[here].
+If you change the default, you must also configure the `setup.template.name` and `setup.template.pattern` options.
See {apm-server-ref}/configuration-template.html[Load the Elasticsearch index template].
+If the Elasticsearch index template has already been successfully loaded to the index,
+you can customize the indices that the APM app uses to display data.
+Navigate to *APM* > *Settings* > *Indices*, and change all `apm_oss.*Pattern` values to
+include the new index pattern. For example: `customIndexName-*`.
==== Unknown route
diff --git a/docs/developer/plugin/development-uiexports.asciidoc b/docs/developer/plugin/development-uiexports.asciidoc
index 6368446f7fb43..18d326cbfb9c0 100644
--- a/docs/developer/plugin/development-uiexports.asciidoc
+++ b/docs/developer/plugin/development-uiexports.asciidoc
@@ -9,8 +9,8 @@ An aggregate list of available UiExport types:
| hacks | Any module that should be included in every application
| visTypes | Modules that register providers with the `ui/registry/vis_types` registry.
| inspectorViews | Modules that register custom inspector views via the `viewRegistry` in `ui/inspector`.
-| chromeNavControls | Modules that register providers with the `ui/registry/chrome_nav_controls` registry.
-| navbarExtensions | Modules that register providers with the `ui/registry/navbar_extensions` registry.
-| docViews | Modules that register providers with the `ui/registry/doc_views` registry.
+| chromeNavControls | Modules that register providers with the `ui/registry/chrome_header_nav_controls` registry.
+| navbarExtensions | Modules that register providers with the setup contract of the `navigation` plugin.
+| docViews | Modules that register providers with the setup contract method `addDocView` of the `discover` plugin.
| app | Adds an application to the system. This uiExport type is defined as an object of metadata rather than just a module id.
|=======================================================================
diff --git a/docs/development/core/public/kibana-plugin-public.appbase.chromeless.md b/docs/development/core/public/kibana-plugin-public.appbase.chromeless.md
new file mode 100644
index 0000000000000..ddbf9aafbd28a
--- /dev/null
+++ b/docs/development/core/public/kibana-plugin-public.appbase.chromeless.md
@@ -0,0 +1,13 @@
+
+
+[Home](./index.md) > [kibana-plugin-public](./kibana-plugin-public.md) > [AppBase](./kibana-plugin-public.appbase.md) > [chromeless](./kibana-plugin-public.appbase.chromeless.md)
+
+## AppBase.chromeless property
+
+Hide the UI chrome when the application is mounted. Defaults to `false`. Takes precedence over chrome service visibility settings.
+
+Signature:
+
+```typescript
+chromeless?: boolean;
+```
diff --git a/docs/development/core/public/kibana-plugin-public.appbase.id.md b/docs/development/core/public/kibana-plugin-public.appbase.id.md
index 57daa0c94bdf6..89dd32d296104 100644
--- a/docs/development/core/public/kibana-plugin-public.appbase.id.md
+++ b/docs/development/core/public/kibana-plugin-public.appbase.id.md
@@ -4,6 +4,8 @@
## AppBase.id property
+The unique identifier of the application
+
Signature:
```typescript
diff --git a/docs/development/core/public/kibana-plugin-public.appbase.md b/docs/development/core/public/kibana-plugin-public.appbase.md
index a93a195c559b1..eb6d91cb92488 100644
--- a/docs/development/core/public/kibana-plugin-public.appbase.md
+++ b/docs/development/core/public/kibana-plugin-public.appbase.md
@@ -16,10 +16,14 @@ export interface AppBase
| Property | Type | Description |
| --- | --- | --- |
| [capabilities](./kibana-plugin-public.appbase.capabilities.md) | Partial<Capabilities> | Custom capabilities defined by the app. |
+| [chromeless](./kibana-plugin-public.appbase.chromeless.md) | boolean | Hide the UI chrome when the application is mounted. Defaults to false. Takes precedence over chrome service visibility settings. |
| [euiIconType](./kibana-plugin-public.appbase.euiicontype.md) | string | A EUI iconType that will be used for the app's icon. This icon takes precendence over the icon property. |
| [icon](./kibana-plugin-public.appbase.icon.md) | string | A URL to an image file used as an icon. Used as a fallback if euiIconType is not provided. |
-| [id](./kibana-plugin-public.appbase.id.md) | string | |
+| [id](./kibana-plugin-public.appbase.id.md) | string | The unique identifier of the application |
+| [navLinkStatus](./kibana-plugin-public.appbase.navlinkstatus.md) | AppNavLinkStatus | The initial status of the application's navLink. Defaulting to visible if status is accessible and hidden if status is inaccessible See [AppNavLinkStatus](./kibana-plugin-public.appnavlinkstatus.md) |
| [order](./kibana-plugin-public.appbase.order.md) | number | An ordinal used to sort nav links relative to one another for display. |
+| [status](./kibana-plugin-public.appbase.status.md) | AppStatus | The initial status of the application. Defaulting to accessible |
| [title](./kibana-plugin-public.appbase.title.md) | string | The title of the application. |
-| [tooltip$](./kibana-plugin-public.appbase.tooltip_.md) | Observable<string> | An observable for a tooltip shown when hovering over app link. |
+| [tooltip](./kibana-plugin-public.appbase.tooltip.md) | string | A tooltip shown when hovering over app link. |
+| [updater$](./kibana-plugin-public.appbase.updater_.md) | Observable<AppUpdater> | An [AppUpdater](./kibana-plugin-public.appupdater.md) observable that can be used to update the application [AppUpdatableFields](./kibana-plugin-public.appupdatablefields.md) at runtime. |
diff --git a/docs/development/core/public/kibana-plugin-public.appbase.navlinkstatus.md b/docs/development/core/public/kibana-plugin-public.appbase.navlinkstatus.md
new file mode 100644
index 0000000000000..d6744c3e75756
--- /dev/null
+++ b/docs/development/core/public/kibana-plugin-public.appbase.navlinkstatus.md
@@ -0,0 +1,13 @@
+
+
+[Home](./index.md) > [kibana-plugin-public](./kibana-plugin-public.md) > [AppBase](./kibana-plugin-public.appbase.md) > [navLinkStatus](./kibana-plugin-public.appbase.navlinkstatus.md)
+
+## AppBase.navLinkStatus property
+
+The initial status of the application's navLink. Defaulting to `visible` if `status` is `accessible` and `hidden` if status is `inaccessible` See [AppNavLinkStatus](./kibana-plugin-public.appnavlinkstatus.md)
+
+Signature:
+
+```typescript
+navLinkStatus?: AppNavLinkStatus;
+```
diff --git a/docs/development/core/public/kibana-plugin-public.appbase.tooltip_.md b/docs/development/core/public/kibana-plugin-public.appbase.status.md
similarity index 56%
rename from docs/development/core/public/kibana-plugin-public.appbase.tooltip_.md
rename to docs/development/core/public/kibana-plugin-public.appbase.status.md
index 0767ead5f1455..a5fbadbeea1ff 100644
--- a/docs/development/core/public/kibana-plugin-public.appbase.tooltip_.md
+++ b/docs/development/core/public/kibana-plugin-public.appbase.status.md
@@ -1,13 +1,13 @@
-[Home](./index.md) > [kibana-plugin-public](./kibana-plugin-public.md) > [AppBase](./kibana-plugin-public.appbase.md) > [tooltip$](./kibana-plugin-public.appbase.tooltip_.md)
+[Home](./index.md) > [kibana-plugin-public](./kibana-plugin-public.md) > [AppBase](./kibana-plugin-public.appbase.md) > [status](./kibana-plugin-public.appbase.status.md)
-## AppBase.tooltip$ property
+## AppBase.status property
-An observable for a tooltip shown when hovering over app link.
+The initial status of the application. Defaulting to `accessible`
Signature:
```typescript
-tooltip$?: Observable;
+status?: AppStatus;
```
diff --git a/docs/development/core/public/kibana-plugin-public.appbase.tooltip.md b/docs/development/core/public/kibana-plugin-public.appbase.tooltip.md
new file mode 100644
index 0000000000000..85921a5a321dd
--- /dev/null
+++ b/docs/development/core/public/kibana-plugin-public.appbase.tooltip.md
@@ -0,0 +1,13 @@
+
+
+[Home](./index.md) > [kibana-plugin-public](./kibana-plugin-public.md) > [AppBase](./kibana-plugin-public.appbase.md) > [tooltip](./kibana-plugin-public.appbase.tooltip.md)
+
+## AppBase.tooltip property
+
+A tooltip shown when hovering over app link.
+
+Signature:
+
+```typescript
+tooltip?: string;
+```
diff --git a/docs/development/core/public/kibana-plugin-public.appbase.updater_.md b/docs/development/core/public/kibana-plugin-public.appbase.updater_.md
new file mode 100644
index 0000000000000..3edd357383449
--- /dev/null
+++ b/docs/development/core/public/kibana-plugin-public.appbase.updater_.md
@@ -0,0 +1,44 @@
+
+
+[Home](./index.md) > [kibana-plugin-public](./kibana-plugin-public.md) > [AppBase](./kibana-plugin-public.appbase.md) > [updater$](./kibana-plugin-public.appbase.updater_.md)
+
+## AppBase.updater$ property
+
+An [AppUpdater](./kibana-plugin-public.appupdater.md) observable that can be used to update the application [AppUpdatableFields](./kibana-plugin-public.appupdatablefields.md) at runtime.
+
+Signature:
+
+```typescript
+updater$?: Observable;
+```
+
+## Example
+
+How to update an application navLink at runtime
+
+```ts
+// inside your plugin's setup function
+export class MyPlugin implements Plugin {
+ private appUpdater = new BehaviorSubject(() => ({}));
+
+ setup({ application }) {
+ application.register({
+ id: 'my-app',
+ title: 'My App',
+ updater$: this.appUpdater,
+ async mount(params) {
+ const { renderApp } = await import('./application');
+ return renderApp(params);
+ },
+ });
+ }
+
+ start() {
+ // later, when the navlink needs to be updated
+ appUpdater.next(() => {
+ navLinkStatus: AppNavLinkStatus.disabled,
+ })
+ }
+
+```
+
diff --git a/docs/development/core/public/kibana-plugin-public.appleaveaction.md b/docs/development/core/public/kibana-plugin-public.appleaveaction.md
new file mode 100644
index 0000000000000..ae56205f5e45c
--- /dev/null
+++ b/docs/development/core/public/kibana-plugin-public.appleaveaction.md
@@ -0,0 +1,15 @@
+
+
+[Home](./index.md) > [kibana-plugin-public](./kibana-plugin-public.md) > [AppLeaveAction](./kibana-plugin-public.appleaveaction.md)
+
+## AppLeaveAction type
+
+Possible actions to return from a [AppLeaveHandler](./kibana-plugin-public.appleavehandler.md)
+
+See [AppLeaveConfirmAction](./kibana-plugin-public.appleaveconfirmaction.md) and [AppLeaveDefaultAction](./kibana-plugin-public.appleavedefaultaction.md)
+
+Signature:
+
+```typescript
+export declare type AppLeaveAction = AppLeaveDefaultAction | AppLeaveConfirmAction;
+```
diff --git a/docs/development/core/public/kibana-plugin-public.appleaveactiontype.md b/docs/development/core/public/kibana-plugin-public.appleaveactiontype.md
new file mode 100644
index 0000000000000..482b2e489b33e
--- /dev/null
+++ b/docs/development/core/public/kibana-plugin-public.appleaveactiontype.md
@@ -0,0 +1,21 @@
+
+
+[Home](./index.md) > [kibana-plugin-public](./kibana-plugin-public.md) > [AppLeaveActionType](./kibana-plugin-public.appleaveactiontype.md)
+
+## AppLeaveActionType enum
+
+Possible type of actions on application leave.
+
+Signature:
+
+```typescript
+export declare enum AppLeaveActionType
+```
+
+## Enumeration Members
+
+| Member | Value | Description |
+| --- | --- | --- |
+| confirm | "confirm" | |
+| default | "default" | |
+
diff --git a/docs/development/core/public/kibana-plugin-public.appleaveconfirmaction.md b/docs/development/core/public/kibana-plugin-public.appleaveconfirmaction.md
new file mode 100644
index 0000000000000..4cd99dd2a3fb3
--- /dev/null
+++ b/docs/development/core/public/kibana-plugin-public.appleaveconfirmaction.md
@@ -0,0 +1,24 @@
+
+
+[Home](./index.md) > [kibana-plugin-public](./kibana-plugin-public.md) > [AppLeaveConfirmAction](./kibana-plugin-public.appleaveconfirmaction.md)
+
+## AppLeaveConfirmAction interface
+
+Action to return from a [AppLeaveHandler](./kibana-plugin-public.appleavehandler.md) to show a confirmation message when trying to leave an application.
+
+See
+
+Signature:
+
+```typescript
+export interface AppLeaveConfirmAction
+```
+
+## Properties
+
+| Property | Type | Description |
+| --- | --- | --- |
+| [text](./kibana-plugin-public.appleaveconfirmaction.text.md) | string | |
+| [title](./kibana-plugin-public.appleaveconfirmaction.title.md) | string | |
+| [type](./kibana-plugin-public.appleaveconfirmaction.type.md) | AppLeaveActionType.confirm | |
+
diff --git a/docs/development/core/public/kibana-plugin-public.appleaveconfirmaction.text.md b/docs/development/core/public/kibana-plugin-public.appleaveconfirmaction.text.md
new file mode 100644
index 0000000000000..dbbd11c6f71f8
--- /dev/null
+++ b/docs/development/core/public/kibana-plugin-public.appleaveconfirmaction.text.md
@@ -0,0 +1,11 @@
+
+
+[Home](./index.md) > [kibana-plugin-public](./kibana-plugin-public.md) > [AppLeaveConfirmAction](./kibana-plugin-public.appleaveconfirmaction.md) > [text](./kibana-plugin-public.appleaveconfirmaction.text.md)
+
+## AppLeaveConfirmAction.text property
+
+Signature:
+
+```typescript
+text: string;
+```
diff --git a/docs/development/core/public/kibana-plugin-public.appleaveconfirmaction.title.md b/docs/development/core/public/kibana-plugin-public.appleaveconfirmaction.title.md
new file mode 100644
index 0000000000000..684ef384a37c3
--- /dev/null
+++ b/docs/development/core/public/kibana-plugin-public.appleaveconfirmaction.title.md
@@ -0,0 +1,11 @@
+
+
+[Home](./index.md) > [kibana-plugin-public](./kibana-plugin-public.md) > [AppLeaveConfirmAction](./kibana-plugin-public.appleaveconfirmaction.md) > [title](./kibana-plugin-public.appleaveconfirmaction.title.md)
+
+## AppLeaveConfirmAction.title property
+
+Signature:
+
+```typescript
+title?: string;
+```
diff --git a/docs/development/core/public/kibana-plugin-public.appleaveconfirmaction.type.md b/docs/development/core/public/kibana-plugin-public.appleaveconfirmaction.type.md
new file mode 100644
index 0000000000000..926cecf893cc8
--- /dev/null
+++ b/docs/development/core/public/kibana-plugin-public.appleaveconfirmaction.type.md
@@ -0,0 +1,11 @@
+
+
+[Home](./index.md) > [kibana-plugin-public](./kibana-plugin-public.md) > [AppLeaveConfirmAction](./kibana-plugin-public.appleaveconfirmaction.md) > [type](./kibana-plugin-public.appleaveconfirmaction.type.md)
+
+## AppLeaveConfirmAction.type property
+
+Signature:
+
+```typescript
+type: AppLeaveActionType.confirm;
+```
diff --git a/docs/development/core/public/kibana-plugin-public.appleavedefaultaction.md b/docs/development/core/public/kibana-plugin-public.appleavedefaultaction.md
new file mode 100644
index 0000000000000..ed2f729a0c648
--- /dev/null
+++ b/docs/development/core/public/kibana-plugin-public.appleavedefaultaction.md
@@ -0,0 +1,22 @@
+
+
+[Home](./index.md) > [kibana-plugin-public](./kibana-plugin-public.md) > [AppLeaveDefaultAction](./kibana-plugin-public.appleavedefaultaction.md)
+
+## AppLeaveDefaultAction interface
+
+Action to return from a [AppLeaveHandler](./kibana-plugin-public.appleavehandler.md) to execute the default behaviour when leaving the application.
+
+See
+
+Signature:
+
+```typescript
+export interface AppLeaveDefaultAction
+```
+
+## Properties
+
+| Property | Type | Description |
+| --- | --- | --- |
+| [type](./kibana-plugin-public.appleavedefaultaction.type.md) | AppLeaveActionType.default | |
+
diff --git a/docs/development/core/public/kibana-plugin-public.appleavedefaultaction.type.md b/docs/development/core/public/kibana-plugin-public.appleavedefaultaction.type.md
new file mode 100644
index 0000000000000..ee12393121a5a
--- /dev/null
+++ b/docs/development/core/public/kibana-plugin-public.appleavedefaultaction.type.md
@@ -0,0 +1,11 @@
+
+
+[Home](./index.md) > [kibana-plugin-public](./kibana-plugin-public.md) > [AppLeaveDefaultAction](./kibana-plugin-public.appleavedefaultaction.md) > [type](./kibana-plugin-public.appleavedefaultaction.type.md)
+
+## AppLeaveDefaultAction.type property
+
+Signature:
+
+```typescript
+type: AppLeaveActionType.default;
+```
diff --git a/docs/development/core/public/kibana-plugin-public.appleavehandler.md b/docs/development/core/public/kibana-plugin-public.appleavehandler.md
new file mode 100644
index 0000000000000..e879227961bc6
--- /dev/null
+++ b/docs/development/core/public/kibana-plugin-public.appleavehandler.md
@@ -0,0 +1,15 @@
+
+
+[Home](./index.md) > [kibana-plugin-public](./kibana-plugin-public.md) > [AppLeaveHandler](./kibana-plugin-public.appleavehandler.md)
+
+## AppLeaveHandler type
+
+A handler that will be executed before leaving the application, either when going to another application or when closing the browser tab or manually changing the url. Should return `confirm` to to prompt a message to the user before leaving the page, or `default` to keep the default behavior (doing nothing).
+
+See [AppMountParameters](./kibana-plugin-public.appmountparameters.md) for detailed usage examples.
+
+Signature:
+
+```typescript
+export declare type AppLeaveHandler = (factory: AppLeaveActionFactory) => AppLeaveAction;
+```
diff --git a/docs/development/core/public/kibana-plugin-public.applicationsetup.md b/docs/development/core/public/kibana-plugin-public.applicationsetup.md
index a63de399c2ecb..cf9bc5189af40 100644
--- a/docs/development/core/public/kibana-plugin-public.applicationsetup.md
+++ b/docs/development/core/public/kibana-plugin-public.applicationsetup.md
@@ -16,5 +16,6 @@ export interface ApplicationSetup
| Method | Description |
| --- | --- |
| [register(app)](./kibana-plugin-public.applicationsetup.register.md) | Register an mountable application to the system. |
+| [registerAppUpdater(appUpdater$)](./kibana-plugin-public.applicationsetup.registerappupdater.md) | Register an application updater that can be used to change the [AppUpdatableFields](./kibana-plugin-public.appupdatablefields.md) fields of all applications at runtime.This is meant to be used by plugins that needs to updates the whole list of applications. To only updates a specific application, use the updater$ property of the registered application instead. |
| [registerMountContext(contextName, provider)](./kibana-plugin-public.applicationsetup.registermountcontext.md) | Register a context provider for application mounting. Will only be available to applications that depend on the plugin that registered this context. Deprecated, use [CoreSetup.getStartServices()](./kibana-plugin-public.coresetup.getstartservices.md). |
diff --git a/docs/development/core/public/kibana-plugin-public.applicationsetup.registerappupdater.md b/docs/development/core/public/kibana-plugin-public.applicationsetup.registerappupdater.md
new file mode 100644
index 0000000000000..39b4f878a3f79
--- /dev/null
+++ b/docs/development/core/public/kibana-plugin-public.applicationsetup.registerappupdater.md
@@ -0,0 +1,47 @@
+
+
+[Home](./index.md) > [kibana-plugin-public](./kibana-plugin-public.md) > [ApplicationSetup](./kibana-plugin-public.applicationsetup.md) > [registerAppUpdater](./kibana-plugin-public.applicationsetup.registerappupdater.md)
+
+## ApplicationSetup.registerAppUpdater() method
+
+Register an application updater that can be used to change the [AppUpdatableFields](./kibana-plugin-public.appupdatablefields.md) fields of all applications at runtime.
+
+This is meant to be used by plugins that needs to updates the whole list of applications. To only updates a specific application, use the `updater$` property of the registered application instead.
+
+Signature:
+
+```typescript
+registerAppUpdater(appUpdater$: Observable): void;
+```
+
+## Parameters
+
+| Parameter | Type | Description |
+| --- | --- | --- |
+| appUpdater$ | Observable<AppUpdater> | |
+
+Returns:
+
+`void`
+
+## Example
+
+How to register an application updater that disables some applications:
+
+```ts
+// inside your plugin's setup function
+export class MyPlugin implements Plugin {
+ setup({ application }) {
+ application.registerAppUpdater(
+ new BehaviorSubject(app => {
+ if (myPluginApi.shouldDisable(app))
+ return {
+ status: AppStatus.inaccessible,
+ };
+ })
+ );
+ }
+}
+
+```
+
diff --git a/docs/development/core/public/kibana-plugin-public.applicationstart.md b/docs/development/core/public/kibana-plugin-public.applicationstart.md
index 4baa4565ff7b0..e36ef3f14f87e 100644
--- a/docs/development/core/public/kibana-plugin-public.applicationstart.md
+++ b/docs/development/core/public/kibana-plugin-public.applicationstart.md
@@ -22,6 +22,6 @@ export interface ApplicationStart
| Method | Description |
| --- | --- |
| [getUrlForApp(appId, options)](./kibana-plugin-public.applicationstart.geturlforapp.md) | Returns a relative URL to a given app, including the global base path. |
-| [navigateToApp(appId, options)](./kibana-plugin-public.applicationstart.navigatetoapp.md) | Navigiate to a given app |
+| [navigateToApp(appId, options)](./kibana-plugin-public.applicationstart.navigatetoapp.md) | Navigate to a given app |
| [registerMountContext(contextName, provider)](./kibana-plugin-public.applicationstart.registermountcontext.md) | Register a context provider for application mounting. Will only be available to applications that depend on the plugin that registered this context. Deprecated, use [CoreSetup.getStartServices()](./kibana-plugin-public.coresetup.getstartservices.md). |
diff --git a/docs/development/core/public/kibana-plugin-public.applicationstart.navigatetoapp.md b/docs/development/core/public/kibana-plugin-public.applicationstart.navigatetoapp.md
index eef31fe661f54..3e29d09ea4cd5 100644
--- a/docs/development/core/public/kibana-plugin-public.applicationstart.navigatetoapp.md
+++ b/docs/development/core/public/kibana-plugin-public.applicationstart.navigatetoapp.md
@@ -4,7 +4,7 @@
## ApplicationStart.navigateToApp() method
-Navigiate to a given app
+Navigate to a given app
Signature:
@@ -12,7 +12,7 @@ Navigiate to a given app
navigateToApp(appId: string, options?: {
path?: string;
state?: any;
- }): void;
+ }): Promise;
```
## Parameters
@@ -24,5 +24,5 @@ navigateToApp(appId: string, options?: {
Returns:
-`void`
+`Promise`
diff --git a/docs/development/core/public/kibana-plugin-public.appmountparameters.md b/docs/development/core/public/kibana-plugin-public.appmountparameters.md
index aa5ca93ed8ff0..9586eba96a697 100644
--- a/docs/development/core/public/kibana-plugin-public.appmountparameters.md
+++ b/docs/development/core/public/kibana-plugin-public.appmountparameters.md
@@ -17,4 +17,5 @@ export interface AppMountParameters
| --- | --- | --- |
| [appBasePath](./kibana-plugin-public.appmountparameters.appbasepath.md) | string | The route path for configuring navigation to the application. This string should not include the base path from HTTP. |
| [element](./kibana-plugin-public.appmountparameters.element.md) | HTMLElement | The container element to render the application into. |
+| [onAppLeave](./kibana-plugin-public.appmountparameters.onappleave.md) | (handler: AppLeaveHandler) => void | A function that can be used to register a handler that will be called when the user is leaving the current application, allowing to prompt a confirmation message before actually changing the page.This will be called either when the user goes to another application, or when trying to close the tab or manually changing the url. |
diff --git a/docs/development/core/public/kibana-plugin-public.appmountparameters.onappleave.md b/docs/development/core/public/kibana-plugin-public.appmountparameters.onappleave.md
new file mode 100644
index 0000000000000..55eb840ce1cf6
--- /dev/null
+++ b/docs/development/core/public/kibana-plugin-public.appmountparameters.onappleave.md
@@ -0,0 +1,41 @@
+
+
+[Home](./index.md) > [kibana-plugin-public](./kibana-plugin-public.md) > [AppMountParameters](./kibana-plugin-public.appmountparameters.md) > [onAppLeave](./kibana-plugin-public.appmountparameters.onappleave.md)
+
+## AppMountParameters.onAppLeave property
+
+A function that can be used to register a handler that will be called when the user is leaving the current application, allowing to prompt a confirmation message before actually changing the page.
+
+This will be called either when the user goes to another application, or when trying to close the tab or manually changing the url.
+
+Signature:
+
+```typescript
+onAppLeave: (handler: AppLeaveHandler) => void;
+```
+
+## Example
+
+
+```ts
+// application.tsx
+import React from 'react';
+import ReactDOM from 'react-dom';
+import { BrowserRouter, Route } from 'react-router-dom';
+
+import { CoreStart, AppMountParams } from 'src/core/public';
+import { MyPluginDepsStart } from './plugin';
+
+export renderApp = ({ appBasePath, element, onAppLeave }: AppMountParams) => {
+ const { renderApp, hasUnsavedChanges } = await import('./application');
+ onAppLeave(actions => {
+ if(hasUnsavedChanges()) {
+ return actions.confirm('Some changes were not saved. Are you sure you want to leave?');
+ }
+ return actions.default();
+ });
+ return renderApp(params);
+}
+
+```
+
diff --git a/docs/development/core/public/kibana-plugin-public.appnavlinkstatus.md b/docs/development/core/public/kibana-plugin-public.appnavlinkstatus.md
new file mode 100644
index 0000000000000..d6b22ac2b9217
--- /dev/null
+++ b/docs/development/core/public/kibana-plugin-public.appnavlinkstatus.md
@@ -0,0 +1,23 @@
+
+
+[Home](./index.md) > [kibana-plugin-public](./kibana-plugin-public.md) > [AppNavLinkStatus](./kibana-plugin-public.appnavlinkstatus.md)
+
+## AppNavLinkStatus enum
+
+Status of the application's navLink.
+
+Signature:
+
+```typescript
+export declare enum AppNavLinkStatus
+```
+
+## Enumeration Members
+
+| Member | Value | Description |
+| --- | --- | --- |
+| default | 0 | The application navLink will be visible if the application's [AppStatus](./kibana-plugin-public.appstatus.md) is set to accessible and hidden if the application status is set to inaccessible. |
+| disabled | 2 | The application navLink is visible but inactive and not clickable in the navigation bar. |
+| hidden | 3 | The application navLink does not appear in the navigation bar. |
+| visible | 1 | The application navLink is visible and clickable in the navigation bar. |
+
diff --git a/docs/development/core/public/kibana-plugin-public.appstatus.md b/docs/development/core/public/kibana-plugin-public.appstatus.md
new file mode 100644
index 0000000000000..23fb7186569da
--- /dev/null
+++ b/docs/development/core/public/kibana-plugin-public.appstatus.md
@@ -0,0 +1,21 @@
+
+
+[Home](./index.md) > [kibana-plugin-public](./kibana-plugin-public.md) > [AppStatus](./kibana-plugin-public.appstatus.md)
+
+## AppStatus enum
+
+Accessibility status of an application.
+
+Signature:
+
+```typescript
+export declare enum AppStatus
+```
+
+## Enumeration Members
+
+| Member | Value | Description |
+| --- | --- | --- |
+| accessible | 0 | Application is accessible. |
+| inaccessible | 1 | Application is not accessible. |
+
diff --git a/docs/development/core/public/kibana-plugin-public.appupdatablefields.md b/docs/development/core/public/kibana-plugin-public.appupdatablefields.md
new file mode 100644
index 0000000000000..b9260c79cd972
--- /dev/null
+++ b/docs/development/core/public/kibana-plugin-public.appupdatablefields.md
@@ -0,0 +1,13 @@
+
+
+[Home](./index.md) > [kibana-plugin-public](./kibana-plugin-public.md) > [AppUpdatableFields](./kibana-plugin-public.appupdatablefields.md)
+
+## AppUpdatableFields type
+
+Defines the list of fields that can be updated via an [AppUpdater](./kibana-plugin-public.appupdater.md).
+
+Signature:
+
+```typescript
+export declare type AppUpdatableFields = Pick;
+```
diff --git a/docs/development/core/public/kibana-plugin-public.appupdater.md b/docs/development/core/public/kibana-plugin-public.appupdater.md
new file mode 100644
index 0000000000000..f1b965cc2fc22
--- /dev/null
+++ b/docs/development/core/public/kibana-plugin-public.appupdater.md
@@ -0,0 +1,13 @@
+
+
+[Home](./index.md) > [kibana-plugin-public](./kibana-plugin-public.md) > [AppUpdater](./kibana-plugin-public.appupdater.md)
+
+## AppUpdater type
+
+Updater for applications. see [ApplicationSetup](./kibana-plugin-public.applicationsetup.md)
+
+Signature:
+
+```typescript
+export declare type AppUpdater = (app: AppBase) => Partial | undefined;
+```
diff --git a/docs/development/core/public/kibana-plugin-public.chromenavlink.md b/docs/development/core/public/kibana-plugin-public.chromenavlink.md
index 93ebbe3653ac4..4cb9080222ac5 100644
--- a/docs/development/core/public/kibana-plugin-public.chromenavlink.md
+++ b/docs/development/core/public/kibana-plugin-public.chromenavlink.md
@@ -24,7 +24,7 @@ export interface ChromeNavLink
| [id](./kibana-plugin-public.chromenavlink.id.md) | string | A unique identifier for looking up links. |
| [linkToLastSubUrl](./kibana-plugin-public.chromenavlink.linktolastsuburl.md) | boolean | Whether or not the subUrl feature should be enabled. |
| [order](./kibana-plugin-public.chromenavlink.order.md) | number | An ordinal used to sort nav links relative to one another for display. |
-| [subUrlBase](./kibana-plugin-public.chromenavlink.suburlbase.md) | string | A url base that legacy apps can set to match deep URLs to an applcation. |
+| [subUrlBase](./kibana-plugin-public.chromenavlink.suburlbase.md) | string | A url base that legacy apps can set to match deep URLs to an application. |
| [title](./kibana-plugin-public.chromenavlink.title.md) | string | The title of the application. |
| [tooltip](./kibana-plugin-public.chromenavlink.tooltip.md) | string | A tooltip shown when hovering over an app link. |
| [url](./kibana-plugin-public.chromenavlink.url.md) | string | A url that legacy apps can set to deep link into their applications. |
diff --git a/docs/development/core/public/kibana-plugin-public.chromenavlink.suburlbase.md b/docs/development/core/public/kibana-plugin-public.chromenavlink.suburlbase.md
index b9d12432a01df..1b8fb0574cf8b 100644
--- a/docs/development/core/public/kibana-plugin-public.chromenavlink.suburlbase.md
+++ b/docs/development/core/public/kibana-plugin-public.chromenavlink.suburlbase.md
@@ -8,7 +8,7 @@
>
>
-A url base that legacy apps can set to match deep URLs to an applcation.
+A url base that legacy apps can set to match deep URLs to an application.
Signature:
diff --git a/docs/development/core/public/kibana-plugin-public.md b/docs/development/core/public/kibana-plugin-public.md
index e2c2866b57b6b..64cbdd880fed1 100644
--- a/docs/development/core/public/kibana-plugin-public.md
+++ b/docs/development/core/public/kibana-plugin-public.md
@@ -1,137 +1,151 @@
-
-
-[Home](./index.md) > [kibana-plugin-public](./kibana-plugin-public.md)
-
-## kibana-plugin-public package
-
-The Kibana Core APIs for client-side plugins.
-
-A plugin's `public/index` file must contain a named import, `plugin`, that implements [PluginInitializer](./kibana-plugin-public.plugininitializer.md) which returns an object that implements [Plugin](./kibana-plugin-public.plugin.md).
-
-The plugin integrates with the core system via lifecycle events: `setup`, `start`, and `stop`. In each lifecycle method, the plugin will receive the corresponding core services available (either [CoreSetup](./kibana-plugin-public.coresetup.md) or [CoreStart](./kibana-plugin-public.corestart.md)) and any interfaces returned by dependency plugins' lifecycle method. Anything returned by the plugin's lifecycle method will be exposed to downstream dependencies when their corresponding lifecycle methods are invoked.
-
-## Classes
-
-| Class | Description |
-| --- | --- |
-| [SavedObjectsClient](./kibana-plugin-public.savedobjectsclient.md) | Saved Objects is Kibana's data persisentence mechanism allowing plugins to use Elasticsearch for storing plugin state. The client-side SavedObjectsClient is a thin convenience library around the SavedObjects HTTP API for interacting with Saved Objects. |
-| [SimpleSavedObject](./kibana-plugin-public.simplesavedobject.md) | This class is a very simple wrapper for SavedObjects loaded from the server with the [SavedObjectsClient](./kibana-plugin-public.savedobjectsclient.md).It provides basic functionality for creating/saving/deleting saved objects, but doesn't include any type-specific implementations. |
-| [ToastsApi](./kibana-plugin-public.toastsapi.md) | Methods for adding and removing global toast messages. |
-
-## Interfaces
-
-| Interface | Description |
-| --- | --- |
-| [App](./kibana-plugin-public.app.md) | Extension of [common app properties](./kibana-plugin-public.appbase.md) with the mount function. |
-| [AppBase](./kibana-plugin-public.appbase.md) | |
-| [ApplicationSetup](./kibana-plugin-public.applicationsetup.md) | |
-| [ApplicationStart](./kibana-plugin-public.applicationstart.md) | |
-| [AppMountContext](./kibana-plugin-public.appmountcontext.md) | The context object received when applications are mounted to the DOM. Deprecated, use [CoreSetup.getStartServices()](./kibana-plugin-public.coresetup.getstartservices.md). |
-| [AppMountParameters](./kibana-plugin-public.appmountparameters.md) | |
-| [Capabilities](./kibana-plugin-public.capabilities.md) | The read-only set of capabilities available for the current UI session. Capabilities are simple key-value pairs of (string, boolean), where the string denotes the capability ID, and the boolean is a flag indicating if the capability is enabled or disabled. |
-| [ChromeBadge](./kibana-plugin-public.chromebadge.md) | |
-| [ChromeBrand](./kibana-plugin-public.chromebrand.md) | |
-| [ChromeDocTitle](./kibana-plugin-public.chromedoctitle.md) | APIs for accessing and updating the document title. |
-| [ChromeHelpExtension](./kibana-plugin-public.chromehelpextension.md) | |
-| [ChromeNavControl](./kibana-plugin-public.chromenavcontrol.md) | |
-| [ChromeNavControls](./kibana-plugin-public.chromenavcontrols.md) | [APIs](./kibana-plugin-public.chromenavcontrols.md) for registering new controls to be displayed in the navigation bar. |
-| [ChromeNavLink](./kibana-plugin-public.chromenavlink.md) | |
-| [ChromeNavLinks](./kibana-plugin-public.chromenavlinks.md) | [APIs](./kibana-plugin-public.chromenavlinks.md) for manipulating nav links. |
-| [ChromeRecentlyAccessed](./kibana-plugin-public.chromerecentlyaccessed.md) | [APIs](./kibana-plugin-public.chromerecentlyaccessed.md) for recently accessed history. |
-| [ChromeRecentlyAccessedHistoryItem](./kibana-plugin-public.chromerecentlyaccessedhistoryitem.md) | |
-| [ChromeStart](./kibana-plugin-public.chromestart.md) | ChromeStart allows plugins to customize the global chrome header UI and enrich the UX with additional information about the current location of the browser. |
-| [ContextSetup](./kibana-plugin-public.contextsetup.md) | An object that handles registration of context providers and configuring handlers with context. |
-| [CoreSetup](./kibana-plugin-public.coresetup.md) | Core services exposed to the Plugin setup lifecycle |
-| [CoreStart](./kibana-plugin-public.corestart.md) | Core services exposed to the Plugin start lifecycle |
-| [DocLinksStart](./kibana-plugin-public.doclinksstart.md) | |
-| [EnvironmentMode](./kibana-plugin-public.environmentmode.md) | |
-| [ErrorToastOptions](./kibana-plugin-public.errortoastoptions.md) | Options available for [IToasts](./kibana-plugin-public.itoasts.md) APIs. |
-| [FatalErrorInfo](./kibana-plugin-public.fatalerrorinfo.md) | Represents the message and stack of a fatal Error |
-| [FatalErrorsSetup](./kibana-plugin-public.fatalerrorssetup.md) | FatalErrors stop the Kibana Public Core and displays a fatal error screen with details about the Kibana build and the error. |
-| [HttpErrorRequest](./kibana-plugin-public.httperrorrequest.md) | |
-| [HttpErrorResponse](./kibana-plugin-public.httperrorresponse.md) | |
-| [HttpFetchOptions](./kibana-plugin-public.httpfetchoptions.md) | All options that may be used with a [HttpHandler](./kibana-plugin-public.httphandler.md). |
-| [HttpFetchQuery](./kibana-plugin-public.httpfetchquery.md) | |
-| [HttpHandler](./kibana-plugin-public.httphandler.md) | A function for making an HTTP requests to Kibana's backend. See [HttpFetchOptions](./kibana-plugin-public.httpfetchoptions.md) for options and [IHttpResponse](./kibana-plugin-public.ihttpresponse.md) for the response. |
-| [HttpHeadersInit](./kibana-plugin-public.httpheadersinit.md) | |
-| [HttpInterceptor](./kibana-plugin-public.httpinterceptor.md) | An object that may define global interceptor functions for different parts of the request and response lifecycle. See [IHttpInterceptController](./kibana-plugin-public.ihttpinterceptcontroller.md). |
-| [HttpRequestInit](./kibana-plugin-public.httprequestinit.md) | Fetch API options available to [HttpHandler](./kibana-plugin-public.httphandler.md)s. |
-| [HttpSetup](./kibana-plugin-public.httpsetup.md) | |
-| [I18nStart](./kibana-plugin-public.i18nstart.md) | I18nStart.Context is required by any localizable React component from @kbn/i18n and @elastic/eui packages and is supposed to be used as the topmost component for any i18n-compatible React tree. |
-| [IAnonymousPaths](./kibana-plugin-public.ianonymouspaths.md) | APIs for denoting paths as not requiring authentication |
-| [IBasePath](./kibana-plugin-public.ibasepath.md) | APIs for manipulating the basePath on URL segments. |
-| [IContextContainer](./kibana-plugin-public.icontextcontainer.md) | An object that handles registration of context providers and configuring handlers with context. |
-| [IHttpFetchError](./kibana-plugin-public.ihttpfetcherror.md) | |
-| [IHttpInterceptController](./kibana-plugin-public.ihttpinterceptcontroller.md) | Used to halt a request Promise chain in a [HttpInterceptor](./kibana-plugin-public.httpinterceptor.md). |
-| [IHttpResponse](./kibana-plugin-public.ihttpresponse.md) | |
-| [IHttpResponseInterceptorOverrides](./kibana-plugin-public.ihttpresponseinterceptoroverrides.md) | Properties that can be returned by HttpInterceptor.request to override the response. |
-| [IUiSettingsClient](./kibana-plugin-public.iuisettingsclient.md) | Client-side client that provides access to the advanced settings stored in elasticsearch. The settings provide control over the behavior of the Kibana application. For example, a user can specify how to display numeric or date fields. Users can adjust the settings via Management UI. [IUiSettingsClient](./kibana-plugin-public.iuisettingsclient.md) |
-| [LegacyCoreSetup](./kibana-plugin-public.legacycoresetup.md) | Setup interface exposed to the legacy platform via the ui/new_platform module. |
-| [LegacyCoreStart](./kibana-plugin-public.legacycorestart.md) | Start interface exposed to the legacy platform via the ui/new_platform module. |
-| [LegacyNavLink](./kibana-plugin-public.legacynavlink.md) | |
-| [NotificationsSetup](./kibana-plugin-public.notificationssetup.md) | |
-| [NotificationsStart](./kibana-plugin-public.notificationsstart.md) | |
-| [OverlayBannersStart](./kibana-plugin-public.overlaybannersstart.md) | |
-| [OverlayRef](./kibana-plugin-public.overlayref.md) | Returned by [OverlayStart](./kibana-plugin-public.overlaystart.md) methods for closing a mounted overlay. |
-| [OverlayStart](./kibana-plugin-public.overlaystart.md) | |
-| [PackageInfo](./kibana-plugin-public.packageinfo.md) | |
-| [Plugin](./kibana-plugin-public.plugin.md) | The interface that should be returned by a PluginInitializer. |
-| [PluginInitializerContext](./kibana-plugin-public.plugininitializercontext.md) | The available core services passed to a PluginInitializer |
-| [SavedObject](./kibana-plugin-public.savedobject.md) | |
-| [SavedObjectAttributes](./kibana-plugin-public.savedobjectattributes.md) | The data for a Saved Object is stored as an object in the attributes property. |
-| [SavedObjectReference](./kibana-plugin-public.savedobjectreference.md) | A reference to another saved object. |
-| [SavedObjectsBaseOptions](./kibana-plugin-public.savedobjectsbaseoptions.md) | |
-| [SavedObjectsBatchResponse](./kibana-plugin-public.savedobjectsbatchresponse.md) | |
-| [SavedObjectsBulkCreateObject](./kibana-plugin-public.savedobjectsbulkcreateobject.md) | |
-| [SavedObjectsBulkCreateOptions](./kibana-plugin-public.savedobjectsbulkcreateoptions.md) | |
-| [SavedObjectsBulkUpdateObject](./kibana-plugin-public.savedobjectsbulkupdateobject.md) | |
-| [SavedObjectsBulkUpdateOptions](./kibana-plugin-public.savedobjectsbulkupdateoptions.md) | |
-| [SavedObjectsCreateOptions](./kibana-plugin-public.savedobjectscreateoptions.md) | |
-| [SavedObjectsFindOptions](./kibana-plugin-public.savedobjectsfindoptions.md) | |
-| [SavedObjectsFindResponsePublic](./kibana-plugin-public.savedobjectsfindresponsepublic.md) | Return type of the Saved Objects find() method.\*Note\*: this type is different between the Public and Server Saved Objects clients. |
-| [SavedObjectsImportConflictError](./kibana-plugin-public.savedobjectsimportconflicterror.md) | Represents a failure to import due to a conflict. |
-| [SavedObjectsImportError](./kibana-plugin-public.savedobjectsimporterror.md) | Represents a failure to import. |
-| [SavedObjectsImportMissingReferencesError](./kibana-plugin-public.savedobjectsimportmissingreferenceserror.md) | Represents a failure to import due to missing references. |
-| [SavedObjectsImportResponse](./kibana-plugin-public.savedobjectsimportresponse.md) | The response describing the result of an import. |
-| [SavedObjectsImportRetry](./kibana-plugin-public.savedobjectsimportretry.md) | Describes a retry operation for importing a saved object. |
-| [SavedObjectsImportUnknownError](./kibana-plugin-public.savedobjectsimportunknownerror.md) | Represents a failure to import due to an unknown reason. |
-| [SavedObjectsImportUnsupportedTypeError](./kibana-plugin-public.savedobjectsimportunsupportedtypeerror.md) | Represents a failure to import due to having an unsupported saved object type. |
-| [SavedObjectsMigrationVersion](./kibana-plugin-public.savedobjectsmigrationversion.md) | Information about the migrations that have been applied to this SavedObject. When Kibana starts up, KibanaMigrator detects outdated documents and migrates them based on this value. For each migration that has been applied, the plugin's name is used as a key and the latest migration version as the value. |
-| [SavedObjectsStart](./kibana-plugin-public.savedobjectsstart.md) | |
-| [SavedObjectsUpdateOptions](./kibana-plugin-public.savedobjectsupdateoptions.md) | |
-| [UiSettingsState](./kibana-plugin-public.uisettingsstate.md) | |
-
-## Type Aliases
-
-| Type Alias | Description |
-| --- | --- |
-| [AppMount](./kibana-plugin-public.appmount.md) | A mount function called when the user navigates to this app's route. |
-| [AppMountDeprecated](./kibana-plugin-public.appmountdeprecated.md) | A mount function called when the user navigates to this app's route. |
-| [AppUnmount](./kibana-plugin-public.appunmount.md) | A function called when an application should be unmounted from the page. This function should be synchronous. |
-| [ChromeBreadcrumb](./kibana-plugin-public.chromebreadcrumb.md) | |
-| [ChromeHelpExtensionMenuCustomLink](./kibana-plugin-public.chromehelpextensionmenucustomlink.md) | |
-| [ChromeHelpExtensionMenuDiscussLink](./kibana-plugin-public.chromehelpextensionmenudiscusslink.md) | |
-| [ChromeHelpExtensionMenuDocumentationLink](./kibana-plugin-public.chromehelpextensionmenudocumentationlink.md) | |
-| [ChromeHelpExtensionMenuGitHubLink](./kibana-plugin-public.chromehelpextensionmenugithublink.md) | |
-| [ChromeHelpExtensionMenuLink](./kibana-plugin-public.chromehelpextensionmenulink.md) | |
-| [ChromeNavLinkUpdateableFields](./kibana-plugin-public.chromenavlinkupdateablefields.md) | |
-| [HandlerContextType](./kibana-plugin-public.handlercontexttype.md) | Extracts the type of the first argument of a [HandlerFunction](./kibana-plugin-public.handlerfunction.md) to represent the type of the context. |
-| [HandlerFunction](./kibana-plugin-public.handlerfunction.md) | A function that accepts a context object and an optional number of additional arguments. Used for the generic types in [IContextContainer](./kibana-plugin-public.icontextcontainer.md) |
-| [HandlerParameters](./kibana-plugin-public.handlerparameters.md) | Extracts the types of the additional arguments of a [HandlerFunction](./kibana-plugin-public.handlerfunction.md), excluding the [HandlerContextType](./kibana-plugin-public.handlercontexttype.md). |
-| [HttpStart](./kibana-plugin-public.httpstart.md) | See [HttpSetup](./kibana-plugin-public.httpsetup.md) |
-| [IContextProvider](./kibana-plugin-public.icontextprovider.md) | A function that returns a context value for a specific key of given context type. |
-| [IToasts](./kibana-plugin-public.itoasts.md) | Methods for adding and removing global toast messages. See [ToastsApi](./kibana-plugin-public.toastsapi.md). |
-| [MountPoint](./kibana-plugin-public.mountpoint.md) | A function that should mount DOM content inside the provided container element and return a handler to unmount it. |
-| [PluginInitializer](./kibana-plugin-public.plugininitializer.md) | The plugin export at the root of a plugin's public directory should conform to this interface. |
-| [PluginOpaqueId](./kibana-plugin-public.pluginopaqueid.md) | |
-| [RecursiveReadonly](./kibana-plugin-public.recursivereadonly.md) | |
-| [SavedObjectAttribute](./kibana-plugin-public.savedobjectattribute.md) | Type definition for a Saved Object attribute value |
-| [SavedObjectAttributeSingle](./kibana-plugin-public.savedobjectattributesingle.md) | Don't use this type, it's simply a helper type for [SavedObjectAttribute](./kibana-plugin-public.savedobjectattribute.md) |
-| [SavedObjectsClientContract](./kibana-plugin-public.savedobjectsclientcontract.md) | SavedObjectsClientContract as implemented by the [SavedObjectsClient](./kibana-plugin-public.savedobjectsclient.md) |
-| [Toast](./kibana-plugin-public.toast.md) | |
-| [ToastInput](./kibana-plugin-public.toastinput.md) | Inputs for [IToasts](./kibana-plugin-public.itoasts.md) APIs. |
-| [ToastInputFields](./kibana-plugin-public.toastinputfields.md) | Allowed fields for [ToastInput](./kibana-plugin-public.toastinput.md). |
-| [ToastsSetup](./kibana-plugin-public.toastssetup.md) | [IToasts](./kibana-plugin-public.itoasts.md) |
-| [ToastsStart](./kibana-plugin-public.toastsstart.md) | [IToasts](./kibana-plugin-public.itoasts.md) |
-| [UnmountCallback](./kibana-plugin-public.unmountcallback.md) | A function that will unmount the element previously mounted by the associated [MountPoint](./kibana-plugin-public.mountpoint.md) |
-
+
+
+[Home](./index.md) > [kibana-plugin-public](./kibana-plugin-public.md)
+
+## kibana-plugin-public package
+
+The Kibana Core APIs for client-side plugins.
+
+A plugin's `public/index` file must contain a named import, `plugin`, that implements [PluginInitializer](./kibana-plugin-public.plugininitializer.md) which returns an object that implements [Plugin](./kibana-plugin-public.plugin.md).
+
+The plugin integrates with the core system via lifecycle events: `setup`, `start`, and `stop`. In each lifecycle method, the plugin will receive the corresponding core services available (either [CoreSetup](./kibana-plugin-public.coresetup.md) or [CoreStart](./kibana-plugin-public.corestart.md)) and any interfaces returned by dependency plugins' lifecycle method. Anything returned by the plugin's lifecycle method will be exposed to downstream dependencies when their corresponding lifecycle methods are invoked.
+
+## Classes
+
+| Class | Description |
+| --- | --- |
+| [SavedObjectsClient](./kibana-plugin-public.savedobjectsclient.md) | Saved Objects is Kibana's data persisentence mechanism allowing plugins to use Elasticsearch for storing plugin state. The client-side SavedObjectsClient is a thin convenience library around the SavedObjects HTTP API for interacting with Saved Objects. |
+| [SimpleSavedObject](./kibana-plugin-public.simplesavedobject.md) | This class is a very simple wrapper for SavedObjects loaded from the server with the [SavedObjectsClient](./kibana-plugin-public.savedobjectsclient.md).It provides basic functionality for creating/saving/deleting saved objects, but doesn't include any type-specific implementations. |
+| [ToastsApi](./kibana-plugin-public.toastsapi.md) | Methods for adding and removing global toast messages. |
+
+## Enumerations
+
+| Enumeration | Description |
+| --- | --- |
+| [AppLeaveActionType](./kibana-plugin-public.appleaveactiontype.md) | Possible type of actions on application leave. |
+| [AppNavLinkStatus](./kibana-plugin-public.appnavlinkstatus.md) | Status of the application's navLink. |
+| [AppStatus](./kibana-plugin-public.appstatus.md) | Accessibility status of an application. |
+
+## Interfaces
+
+| Interface | Description |
+| --- | --- |
+| [App](./kibana-plugin-public.app.md) | Extension of [common app properties](./kibana-plugin-public.appbase.md) with the mount function. |
+| [AppBase](./kibana-plugin-public.appbase.md) | |
+| [AppLeaveConfirmAction](./kibana-plugin-public.appleaveconfirmaction.md) | Action to return from a [AppLeaveHandler](./kibana-plugin-public.appleavehandler.md) to show a confirmation message when trying to leave an application.See |
+| [AppLeaveDefaultAction](./kibana-plugin-public.appleavedefaultaction.md) | Action to return from a [AppLeaveHandler](./kibana-plugin-public.appleavehandler.md) to execute the default behaviour when leaving the application.See |
+| [ApplicationSetup](./kibana-plugin-public.applicationsetup.md) | |
+| [ApplicationStart](./kibana-plugin-public.applicationstart.md) | |
+| [AppMountContext](./kibana-plugin-public.appmountcontext.md) | The context object received when applications are mounted to the DOM. Deprecated, use [CoreSetup.getStartServices()](./kibana-plugin-public.coresetup.getstartservices.md). |
+| [AppMountParameters](./kibana-plugin-public.appmountparameters.md) | |
+| [Capabilities](./kibana-plugin-public.capabilities.md) | The read-only set of capabilities available for the current UI session. Capabilities are simple key-value pairs of (string, boolean), where the string denotes the capability ID, and the boolean is a flag indicating if the capability is enabled or disabled. |
+| [ChromeBadge](./kibana-plugin-public.chromebadge.md) | |
+| [ChromeBrand](./kibana-plugin-public.chromebrand.md) | |
+| [ChromeDocTitle](./kibana-plugin-public.chromedoctitle.md) | APIs for accessing and updating the document title. |
+| [ChromeHelpExtension](./kibana-plugin-public.chromehelpextension.md) | |
+| [ChromeNavControl](./kibana-plugin-public.chromenavcontrol.md) | |
+| [ChromeNavControls](./kibana-plugin-public.chromenavcontrols.md) | [APIs](./kibana-plugin-public.chromenavcontrols.md) for registering new controls to be displayed in the navigation bar. |
+| [ChromeNavLink](./kibana-plugin-public.chromenavlink.md) | |
+| [ChromeNavLinks](./kibana-plugin-public.chromenavlinks.md) | [APIs](./kibana-plugin-public.chromenavlinks.md) for manipulating nav links. |
+| [ChromeRecentlyAccessed](./kibana-plugin-public.chromerecentlyaccessed.md) | [APIs](./kibana-plugin-public.chromerecentlyaccessed.md) for recently accessed history. |
+| [ChromeRecentlyAccessedHistoryItem](./kibana-plugin-public.chromerecentlyaccessedhistoryitem.md) | |
+| [ChromeStart](./kibana-plugin-public.chromestart.md) | ChromeStart allows plugins to customize the global chrome header UI and enrich the UX with additional information about the current location of the browser. |
+| [ContextSetup](./kibana-plugin-public.contextsetup.md) | An object that handles registration of context providers and configuring handlers with context. |
+| [CoreSetup](./kibana-plugin-public.coresetup.md) | Core services exposed to the Plugin setup lifecycle |
+| [CoreStart](./kibana-plugin-public.corestart.md) | Core services exposed to the Plugin start lifecycle |
+| [DocLinksStart](./kibana-plugin-public.doclinksstart.md) | |
+| [EnvironmentMode](./kibana-plugin-public.environmentmode.md) | |
+| [ErrorToastOptions](./kibana-plugin-public.errortoastoptions.md) | Options available for [IToasts](./kibana-plugin-public.itoasts.md) APIs. |
+| [FatalErrorInfo](./kibana-plugin-public.fatalerrorinfo.md) | Represents the message and stack of a fatal Error |
+| [FatalErrorsSetup](./kibana-plugin-public.fatalerrorssetup.md) | FatalErrors stop the Kibana Public Core and displays a fatal error screen with details about the Kibana build and the error. |
+| [HttpErrorRequest](./kibana-plugin-public.httperrorrequest.md) | |
+| [HttpErrorResponse](./kibana-plugin-public.httperrorresponse.md) | |
+| [HttpFetchOptions](./kibana-plugin-public.httpfetchoptions.md) | All options that may be used with a [HttpHandler](./kibana-plugin-public.httphandler.md). |
+| [HttpFetchQuery](./kibana-plugin-public.httpfetchquery.md) | |
+| [HttpHandler](./kibana-plugin-public.httphandler.md) | A function for making an HTTP requests to Kibana's backend. See [HttpFetchOptions](./kibana-plugin-public.httpfetchoptions.md) for options and [IHttpResponse](./kibana-plugin-public.ihttpresponse.md) for the response. |
+| [HttpHeadersInit](./kibana-plugin-public.httpheadersinit.md) | |
+| [HttpInterceptor](./kibana-plugin-public.httpinterceptor.md) | An object that may define global interceptor functions for different parts of the request and response lifecycle. See [IHttpInterceptController](./kibana-plugin-public.ihttpinterceptcontroller.md). |
+| [HttpRequestInit](./kibana-plugin-public.httprequestinit.md) | Fetch API options available to [HttpHandler](./kibana-plugin-public.httphandler.md)s. |
+| [HttpSetup](./kibana-plugin-public.httpsetup.md) | |
+| [I18nStart](./kibana-plugin-public.i18nstart.md) | I18nStart.Context is required by any localizable React component from @kbn/i18n and @elastic/eui packages and is supposed to be used as the topmost component for any i18n-compatible React tree. |
+| [IAnonymousPaths](./kibana-plugin-public.ianonymouspaths.md) | APIs for denoting paths as not requiring authentication |
+| [IBasePath](./kibana-plugin-public.ibasepath.md) | APIs for manipulating the basePath on URL segments. |
+| [IContextContainer](./kibana-plugin-public.icontextcontainer.md) | An object that handles registration of context providers and configuring handlers with context. |
+| [IHttpFetchError](./kibana-plugin-public.ihttpfetcherror.md) | |
+| [IHttpInterceptController](./kibana-plugin-public.ihttpinterceptcontroller.md) | Used to halt a request Promise chain in a [HttpInterceptor](./kibana-plugin-public.httpinterceptor.md). |
+| [IHttpResponse](./kibana-plugin-public.ihttpresponse.md) | |
+| [IHttpResponseInterceptorOverrides](./kibana-plugin-public.ihttpresponseinterceptoroverrides.md) | Properties that can be returned by HttpInterceptor.request to override the response. |
+| [IUiSettingsClient](./kibana-plugin-public.iuisettingsclient.md) | Client-side client that provides access to the advanced settings stored in elasticsearch. The settings provide control over the behavior of the Kibana application. For example, a user can specify how to display numeric or date fields. Users can adjust the settings via Management UI. [IUiSettingsClient](./kibana-plugin-public.iuisettingsclient.md) |
+| [LegacyCoreSetup](./kibana-plugin-public.legacycoresetup.md) | Setup interface exposed to the legacy platform via the ui/new_platform module. |
+| [LegacyCoreStart](./kibana-plugin-public.legacycorestart.md) | Start interface exposed to the legacy platform via the ui/new_platform module. |
+| [LegacyNavLink](./kibana-plugin-public.legacynavlink.md) | |
+| [NotificationsSetup](./kibana-plugin-public.notificationssetup.md) | |
+| [NotificationsStart](./kibana-plugin-public.notificationsstart.md) | |
+| [OverlayBannersStart](./kibana-plugin-public.overlaybannersstart.md) | |
+| [OverlayRef](./kibana-plugin-public.overlayref.md) | Returned by [OverlayStart](./kibana-plugin-public.overlaystart.md) methods for closing a mounted overlay. |
+| [OverlayStart](./kibana-plugin-public.overlaystart.md) | |
+| [PackageInfo](./kibana-plugin-public.packageinfo.md) | |
+| [Plugin](./kibana-plugin-public.plugin.md) | The interface that should be returned by a PluginInitializer. |
+| [PluginInitializerContext](./kibana-plugin-public.plugininitializercontext.md) | The available core services passed to a PluginInitializer |
+| [SavedObject](./kibana-plugin-public.savedobject.md) | |
+| [SavedObjectAttributes](./kibana-plugin-public.savedobjectattributes.md) | The data for a Saved Object is stored as an object in the attributes property. |
+| [SavedObjectReference](./kibana-plugin-public.savedobjectreference.md) | A reference to another saved object. |
+| [SavedObjectsBaseOptions](./kibana-plugin-public.savedobjectsbaseoptions.md) | |
+| [SavedObjectsBatchResponse](./kibana-plugin-public.savedobjectsbatchresponse.md) | |
+| [SavedObjectsBulkCreateObject](./kibana-plugin-public.savedobjectsbulkcreateobject.md) | |
+| [SavedObjectsBulkCreateOptions](./kibana-plugin-public.savedobjectsbulkcreateoptions.md) | |
+| [SavedObjectsBulkUpdateObject](./kibana-plugin-public.savedobjectsbulkupdateobject.md) | |
+| [SavedObjectsBulkUpdateOptions](./kibana-plugin-public.savedobjectsbulkupdateoptions.md) | |
+| [SavedObjectsCreateOptions](./kibana-plugin-public.savedobjectscreateoptions.md) | |
+| [SavedObjectsFindOptions](./kibana-plugin-public.savedobjectsfindoptions.md) | |
+| [SavedObjectsFindResponsePublic](./kibana-plugin-public.savedobjectsfindresponsepublic.md) | Return type of the Saved Objects find() method.\*Note\*: this type is different between the Public and Server Saved Objects clients. |
+| [SavedObjectsImportConflictError](./kibana-plugin-public.savedobjectsimportconflicterror.md) | Represents a failure to import due to a conflict. |
+| [SavedObjectsImportError](./kibana-plugin-public.savedobjectsimporterror.md) | Represents a failure to import. |
+| [SavedObjectsImportMissingReferencesError](./kibana-plugin-public.savedobjectsimportmissingreferenceserror.md) | Represents a failure to import due to missing references. |
+| [SavedObjectsImportResponse](./kibana-plugin-public.savedobjectsimportresponse.md) | The response describing the result of an import. |
+| [SavedObjectsImportRetry](./kibana-plugin-public.savedobjectsimportretry.md) | Describes a retry operation for importing a saved object. |
+| [SavedObjectsImportUnknownError](./kibana-plugin-public.savedobjectsimportunknownerror.md) | Represents a failure to import due to an unknown reason. |
+| [SavedObjectsImportUnsupportedTypeError](./kibana-plugin-public.savedobjectsimportunsupportedtypeerror.md) | Represents a failure to import due to having an unsupported saved object type. |
+| [SavedObjectsMigrationVersion](./kibana-plugin-public.savedobjectsmigrationversion.md) | Information about the migrations that have been applied to this SavedObject. When Kibana starts up, KibanaMigrator detects outdated documents and migrates them based on this value. For each migration that has been applied, the plugin's name is used as a key and the latest migration version as the value. |
+| [SavedObjectsStart](./kibana-plugin-public.savedobjectsstart.md) | |
+| [SavedObjectsUpdateOptions](./kibana-plugin-public.savedobjectsupdateoptions.md) | |
+| [UiSettingsState](./kibana-plugin-public.uisettingsstate.md) | |
+
+## Type Aliases
+
+| Type Alias | Description |
+| --- | --- |
+| [AppLeaveAction](./kibana-plugin-public.appleaveaction.md) | Possible actions to return from a [AppLeaveHandler](./kibana-plugin-public.appleavehandler.md)See [AppLeaveConfirmAction](./kibana-plugin-public.appleaveconfirmaction.md) and [AppLeaveDefaultAction](./kibana-plugin-public.appleavedefaultaction.md) |
+| [AppLeaveHandler](./kibana-plugin-public.appleavehandler.md) | A handler that will be executed before leaving the application, either when going to another application or when closing the browser tab or manually changing the url. Should return confirm to to prompt a message to the user before leaving the page, or default to keep the default behavior (doing nothing).See [AppMountParameters](./kibana-plugin-public.appmountparameters.md) for detailed usage examples. |
+| [AppMount](./kibana-plugin-public.appmount.md) | A mount function called when the user navigates to this app's route. |
+| [AppMountDeprecated](./kibana-plugin-public.appmountdeprecated.md) | A mount function called when the user navigates to this app's route. |
+| [AppUnmount](./kibana-plugin-public.appunmount.md) | A function called when an application should be unmounted from the page. This function should be synchronous. |
+| [AppUpdatableFields](./kibana-plugin-public.appupdatablefields.md) | Defines the list of fields that can be updated via an [AppUpdater](./kibana-plugin-public.appupdater.md). |
+| [AppUpdater](./kibana-plugin-public.appupdater.md) | Updater for applications. see [ApplicationSetup](./kibana-plugin-public.applicationsetup.md) |
+| [ChromeBreadcrumb](./kibana-plugin-public.chromebreadcrumb.md) | |
+| [ChromeHelpExtensionMenuCustomLink](./kibana-plugin-public.chromehelpextensionmenucustomlink.md) | |
+| [ChromeHelpExtensionMenuDiscussLink](./kibana-plugin-public.chromehelpextensionmenudiscusslink.md) | |
+| [ChromeHelpExtensionMenuDocumentationLink](./kibana-plugin-public.chromehelpextensionmenudocumentationlink.md) | |
+| [ChromeHelpExtensionMenuGitHubLink](./kibana-plugin-public.chromehelpextensionmenugithublink.md) | |
+| [ChromeHelpExtensionMenuLink](./kibana-plugin-public.chromehelpextensionmenulink.md) | |
+| [ChromeNavLinkUpdateableFields](./kibana-plugin-public.chromenavlinkupdateablefields.md) | |
+| [HandlerContextType](./kibana-plugin-public.handlercontexttype.md) | Extracts the type of the first argument of a [HandlerFunction](./kibana-plugin-public.handlerfunction.md) to represent the type of the context. |
+| [HandlerFunction](./kibana-plugin-public.handlerfunction.md) | A function that accepts a context object and an optional number of additional arguments. Used for the generic types in [IContextContainer](./kibana-plugin-public.icontextcontainer.md) |
+| [HandlerParameters](./kibana-plugin-public.handlerparameters.md) | Extracts the types of the additional arguments of a [HandlerFunction](./kibana-plugin-public.handlerfunction.md), excluding the [HandlerContextType](./kibana-plugin-public.handlercontexttype.md). |
+| [HttpStart](./kibana-plugin-public.httpstart.md) | See [HttpSetup](./kibana-plugin-public.httpsetup.md) |
+| [IContextProvider](./kibana-plugin-public.icontextprovider.md) | A function that returns a context value for a specific key of given context type. |
+| [IToasts](./kibana-plugin-public.itoasts.md) | Methods for adding and removing global toast messages. See [ToastsApi](./kibana-plugin-public.toastsapi.md). |
+| [MountPoint](./kibana-plugin-public.mountpoint.md) | A function that should mount DOM content inside the provided container element and return a handler to unmount it. |
+| [PluginInitializer](./kibana-plugin-public.plugininitializer.md) | The plugin export at the root of a plugin's public directory should conform to this interface. |
+| [PluginOpaqueId](./kibana-plugin-public.pluginopaqueid.md) | |
+| [RecursiveReadonly](./kibana-plugin-public.recursivereadonly.md) | |
+| [SavedObjectAttribute](./kibana-plugin-public.savedobjectattribute.md) | Type definition for a Saved Object attribute value |
+| [SavedObjectAttributeSingle](./kibana-plugin-public.savedobjectattributesingle.md) | Don't use this type, it's simply a helper type for [SavedObjectAttribute](./kibana-plugin-public.savedobjectattribute.md) |
+| [SavedObjectsClientContract](./kibana-plugin-public.savedobjectsclientcontract.md) | SavedObjectsClientContract as implemented by the [SavedObjectsClient](./kibana-plugin-public.savedobjectsclient.md) |
+| [Toast](./kibana-plugin-public.toast.md) | |
+| [ToastInput](./kibana-plugin-public.toastinput.md) | Inputs for [IToasts](./kibana-plugin-public.itoasts.md) APIs. |
+| [ToastInputFields](./kibana-plugin-public.toastinputfields.md) | Allowed fields for [ToastInput](./kibana-plugin-public.toastinput.md). |
+| [ToastsSetup](./kibana-plugin-public.toastssetup.md) | [IToasts](./kibana-plugin-public.itoasts.md) |
+| [ToastsStart](./kibana-plugin-public.toastsstart.md) | [IToasts](./kibana-plugin-public.itoasts.md) |
+| [UnmountCallback](./kibana-plugin-public.unmountcallback.md) | A function that will unmount the element previously mounted by the associated [MountPoint](./kibana-plugin-public.mountpoint.md) |
+
diff --git a/docs/development/core/public/kibana-plugin-public.overlaystart.md b/docs/development/core/public/kibana-plugin-public.overlaystart.md
index 8b6f11bd819f8..a83044763344b 100644
--- a/docs/development/core/public/kibana-plugin-public.overlaystart.md
+++ b/docs/development/core/public/kibana-plugin-public.overlaystart.md
@@ -16,6 +16,7 @@ export interface OverlayStart
| Property | Type | Description |
| --- | --- | --- |
| [banners](./kibana-plugin-public.overlaystart.banners.md) | OverlayBannersStart | [OverlayBannersStart](./kibana-plugin-public.overlaybannersstart.md) |
+| [openConfirm](./kibana-plugin-public.overlaystart.openconfirm.md) | OverlayModalStart['openConfirm'] | |
| [openFlyout](./kibana-plugin-public.overlaystart.openflyout.md) | OverlayFlyoutStart['open'] | |
| [openModal](./kibana-plugin-public.overlaystart.openmodal.md) | OverlayModalStart['open'] | |
diff --git a/docs/development/core/public/kibana-plugin-public.overlaystart.openconfirm.md b/docs/development/core/public/kibana-plugin-public.overlaystart.openconfirm.md
new file mode 100644
index 0000000000000..543a69e0b3318
--- /dev/null
+++ b/docs/development/core/public/kibana-plugin-public.overlaystart.openconfirm.md
@@ -0,0 +1,12 @@
+
+
+[Home](./index.md) > [kibana-plugin-public](./kibana-plugin-public.md) > [OverlayStart](./kibana-plugin-public.overlaystart.md) > [openConfirm](./kibana-plugin-public.overlaystart.openconfirm.md)
+
+## OverlayStart.openConfirm property
+
+
+Signature:
+
+```typescript
+openConfirm: OverlayModalStart['openConfirm'];
+```
diff --git a/docs/development/core/public/kibana-plugin-public.savedobjectsclient.find.md b/docs/development/core/public/kibana-plugin-public.savedobjectsclient.find.md
index 1ce18834f5319..a4fa3f17d0d94 100644
--- a/docs/development/core/public/kibana-plugin-public.savedobjectsclient.find.md
+++ b/docs/development/core/public/kibana-plugin-public.savedobjectsclient.find.md
@@ -9,5 +9,5 @@ Search for objects
Signature:
```typescript
-find: (options: Pick) => Promise>;
+find: (options: Pick) => Promise>;
```
diff --git a/docs/development/core/public/kibana-plugin-public.savedobjectsclient.md b/docs/development/core/public/kibana-plugin-public.savedobjectsclient.md
index 3b916db972673..88485aa71f7c5 100644
--- a/docs/development/core/public/kibana-plugin-public.savedobjectsclient.md
+++ b/docs/development/core/public/kibana-plugin-public.savedobjectsclient.md
@@ -24,7 +24,7 @@ The constructor for this class is marked as internal. Third-party code should no
| [bulkGet](./kibana-plugin-public.savedobjectsclient.bulkget.md) | | (objects?: { id: string; type: string; }[]) => Promise<SavedObjectsBatchResponse<SavedObjectAttributes>> | Returns an array of objects by id |
| [create](./kibana-plugin-public.savedobjectsclient.create.md) | | <T extends SavedObjectAttributes>(type: string, attributes: T, options?: SavedObjectsCreateOptions) => Promise<SimpleSavedObject<T>> | Persists an object |
| [delete](./kibana-plugin-public.savedobjectsclient.delete.md) | | (type: string, id: string) => Promise<{}> | Deletes an object |
-| [find](./kibana-plugin-public.savedobjectsclient.find.md) | | <T extends SavedObjectAttributes>(options: Pick<SavedObjectFindOptionsServer, "search" | "filter" | "type" | "page" | "fields" | "searchFields" | "defaultSearchOperator" | "hasReference" | "sortField" | "perPage">) => Promise<SavedObjectsFindResponsePublic<T>> | Search for objects |
+| [find](./kibana-plugin-public.savedobjectsclient.find.md) | | <T extends SavedObjectAttributes>(options: Pick<SavedObjectFindOptionsServer, "search" | "filter" | "type" | "page" | "perPage" | "sortField" | "fields" | "searchFields" | "hasReference" | "defaultSearchOperator">) => Promise<SavedObjectsFindResponsePublic<T>> | Search for objects |
| [get](./kibana-plugin-public.savedobjectsclient.get.md) | | <T extends SavedObjectAttributes>(type: string, id: string) => Promise<SimpleSavedObject<T>> | Fetches a single object |
## Methods
diff --git a/docs/development/core/server/kibana-plugin-server.clusterclient.asscoped.md b/docs/development/core/server/kibana-plugin-server.clusterclient.asscoped.md
index ed7d028a1ec8a..bb1f481c9ef4f 100644
--- a/docs/development/core/server/kibana-plugin-server.clusterclient.asscoped.md
+++ b/docs/development/core/server/kibana-plugin-server.clusterclient.asscoped.md
@@ -9,14 +9,14 @@ Creates an instance of [IScopedClusterClient](./kibana-plugin-server.iscopedclus
Signature:
```typescript
-asScoped(request?: KibanaRequest | LegacyRequest | FakeRequest): IScopedClusterClient;
+asScoped(request?: ScopeableRequest): IScopedClusterClient;
```
## Parameters
| Parameter | Type | Description |
| --- | --- | --- |
-| request | KibanaRequest | LegacyRequest | FakeRequest | Request the IScopedClusterClient instance will be scoped to. Supports request optionality, Legacy.Request & FakeRequest for BWC with LegacyPlatform |
+| request | ScopeableRequest | Request the IScopedClusterClient instance will be scoped to. Supports request optionality, Legacy.Request & FakeRequest for BWC with LegacyPlatform |
Returns:
diff --git a/docs/development/core/server/kibana-plugin-server.clusterclient.md b/docs/development/core/server/kibana-plugin-server.clusterclient.md
index 5fdda7ef3e499..d547b846e65b7 100644
--- a/docs/development/core/server/kibana-plugin-server.clusterclient.md
+++ b/docs/development/core/server/kibana-plugin-server.clusterclient.md
@@ -4,7 +4,7 @@
## ClusterClient class
-Represents an Elasticsearch cluster API client and allows to call API on behalf of the internal Kibana user and the actual user that is derived from the request headers (via `asScoped(...)`).
+Represents an Elasticsearch cluster API client created by the platform. It allows to call API on behalf of the internal Kibana user and the actual user that is derived from the request headers (via `asScoped(...)`).
See [ClusterClient](./kibana-plugin-server.clusterclient.md).
diff --git a/docs/development/core/server/kibana-plugin-server.elasticsearchservicesetup.adminclient.md b/docs/development/core/server/kibana-plugin-server.elasticsearchservicesetup.adminclient.md
new file mode 100644
index 0000000000000..415423f555266
--- /dev/null
+++ b/docs/development/core/server/kibana-plugin-server.elasticsearchservicesetup.adminclient.md
@@ -0,0 +1,22 @@
+
+
+[Home](./index.md) > [kibana-plugin-server](./kibana-plugin-server.md) > [ElasticsearchServiceSetup](./kibana-plugin-server.elasticsearchservicesetup.md) > [adminClient](./kibana-plugin-server.elasticsearchservicesetup.adminclient.md)
+
+## ElasticsearchServiceSetup.adminClient property
+
+A client for the `admin` cluster. All Elasticsearch config value changes are processed under the hood. See [IClusterClient](./kibana-plugin-server.iclusterclient.md).
+
+Signature:
+
+```typescript
+readonly adminClient: IClusterClient;
+```
+
+## Example
+
+
+```js
+const client = core.elasticsearch.adminClient;
+
+```
+
diff --git a/docs/development/core/server/kibana-plugin-server.elasticsearchservicesetup.adminclient_.md b/docs/development/core/server/kibana-plugin-server.elasticsearchservicesetup.adminclient_.md
deleted file mode 100644
index b5bfc68d3ca0c..0000000000000
--- a/docs/development/core/server/kibana-plugin-server.elasticsearchservicesetup.adminclient_.md
+++ /dev/null
@@ -1,19 +0,0 @@
-
-
-[Home](./index.md) > [kibana-plugin-server](./kibana-plugin-server.md) > [ElasticsearchServiceSetup](./kibana-plugin-server.elasticsearchservicesetup.md) > [adminClient$](./kibana-plugin-server.elasticsearchservicesetup.adminclient_.md)
-
-## ElasticsearchServiceSetup.adminClient$ property
-
-Observable of clients for the `admin` cluster. Observable emits when Elasticsearch config changes on the Kibana server. See [IClusterClient](./kibana-plugin-server.iclusterclient.md).
-
-
-```js
-const client = await elasticsearch.adminClient$.pipe(take(1)).toPromise();
-
-```
-
-Signature:
-
-```typescript
-readonly adminClient$: Observable;
-```
diff --git a/docs/development/core/server/kibana-plugin-server.elasticsearchservicesetup.createclient.md b/docs/development/core/server/kibana-plugin-server.elasticsearchservicesetup.createclient.md
index 3d26f2d4cec88..797f402cc2580 100644
--- a/docs/development/core/server/kibana-plugin-server.elasticsearchservicesetup.createclient.md
+++ b/docs/development/core/server/kibana-plugin-server.elasticsearchservicesetup.createclient.md
@@ -9,7 +9,7 @@ Create application specific Elasticsearch cluster API client with customized con
Signature:
```typescript
-readonly createClient: (type: string, clientConfig?: Partial) => IClusterClient;
+readonly createClient: (type: string, clientConfig?: Partial) => ICustomClusterClient;
```
## Example
diff --git a/docs/development/core/server/kibana-plugin-server.elasticsearchservicesetup.dataclient.md b/docs/development/core/server/kibana-plugin-server.elasticsearchservicesetup.dataclient.md
new file mode 100644
index 0000000000000..e9845dce6915d
--- /dev/null
+++ b/docs/development/core/server/kibana-plugin-server.elasticsearchservicesetup.dataclient.md
@@ -0,0 +1,22 @@
+
+
+[Home](./index.md) > [kibana-plugin-server](./kibana-plugin-server.md) > [ElasticsearchServiceSetup](./kibana-plugin-server.elasticsearchservicesetup.md) > [dataClient](./kibana-plugin-server.elasticsearchservicesetup.dataclient.md)
+
+## ElasticsearchServiceSetup.dataClient property
+
+A client for the `data` cluster. All Elasticsearch config value changes are processed under the hood. See [IClusterClient](./kibana-plugin-server.iclusterclient.md).
+
+Signature:
+
+```typescript
+readonly dataClient: IClusterClient;
+```
+
+## Example
+
+
+```js
+const client = core.elasticsearch.dataClient;
+
+```
+
diff --git a/docs/development/core/server/kibana-plugin-server.elasticsearchservicesetup.dataclient_.md b/docs/development/core/server/kibana-plugin-server.elasticsearchservicesetup.dataclient_.md
deleted file mode 100644
index 9411f2f6b8694..0000000000000
--- a/docs/development/core/server/kibana-plugin-server.elasticsearchservicesetup.dataclient_.md
+++ /dev/null
@@ -1,19 +0,0 @@
-
-
-[Home](./index.md) > [kibana-plugin-server](./kibana-plugin-server.md) > [ElasticsearchServiceSetup](./kibana-plugin-server.elasticsearchservicesetup.md) > [dataClient$](./kibana-plugin-server.elasticsearchservicesetup.dataclient_.md)
-
-## ElasticsearchServiceSetup.dataClient$ property
-
-Observable of clients for the `data` cluster. Observable emits when Elasticsearch config changes on the Kibana server. See [IClusterClient](./kibana-plugin-server.iclusterclient.md).
-
-
-```js
-const client = await elasticsearch.dataClient$.pipe(take(1)).toPromise();
-
-```
-
-Signature:
-
-```typescript
-readonly dataClient$: Observable;
-```
diff --git a/docs/development/core/server/kibana-plugin-server.elasticsearchservicesetup.md b/docs/development/core/server/kibana-plugin-server.elasticsearchservicesetup.md
index e3d151cdc0d8b..2de3f6e6d1bbc 100644
--- a/docs/development/core/server/kibana-plugin-server.elasticsearchservicesetup.md
+++ b/docs/development/core/server/kibana-plugin-server.elasticsearchservicesetup.md
@@ -15,17 +15,7 @@ export interface ElasticsearchServiceSetup
| Property | Type | Description |
| --- | --- | --- |
-| [adminClient$](./kibana-plugin-server.elasticsearchservicesetup.adminclient_.md) | Observable<IClusterClient> | Observable of clients for the admin cluster. Observable emits when Elasticsearch config changes on the Kibana server. See [IClusterClient](./kibana-plugin-server.iclusterclient.md).
-```js
-const client = await elasticsearch.adminClient$.pipe(take(1)).toPromise();
-
-```
- |
-| [createClient](./kibana-plugin-server.elasticsearchservicesetup.createclient.md) | (type: string, clientConfig?: Partial<ElasticsearchClientConfig>) => IClusterClient | Create application specific Elasticsearch cluster API client with customized config. See [IClusterClient](./kibana-plugin-server.iclusterclient.md). |
-| [dataClient$](./kibana-plugin-server.elasticsearchservicesetup.dataclient_.md) | Observable<IClusterClient> | Observable of clients for the data cluster. Observable emits when Elasticsearch config changes on the Kibana server. See [IClusterClient](./kibana-plugin-server.iclusterclient.md).
-```js
-const client = await elasticsearch.dataClient$.pipe(take(1)).toPromise();
-
-```
- |
+| [adminClient](./kibana-plugin-server.elasticsearchservicesetup.adminclient.md) | IClusterClient | A client for the admin cluster. All Elasticsearch config value changes are processed under the hood. See [IClusterClient](./kibana-plugin-server.iclusterclient.md). |
+| [createClient](./kibana-plugin-server.elasticsearchservicesetup.createclient.md) | (type: string, clientConfig?: Partial<ElasticsearchClientConfig>) => ICustomClusterClient | Create application specific Elasticsearch cluster API client with customized config. See [IClusterClient](./kibana-plugin-server.iclusterclient.md). |
+| [dataClient](./kibana-plugin-server.elasticsearchservicesetup.dataclient.md) | IClusterClient | A client for the data cluster. All Elasticsearch config value changes are processed under the hood. See [IClusterClient](./kibana-plugin-server.iclusterclient.md). |
diff --git a/docs/development/core/server/kibana-plugin-server.iclusterclient.md b/docs/development/core/server/kibana-plugin-server.iclusterclient.md
index 834afa6db5157..e7435a9d91a74 100644
--- a/docs/development/core/server/kibana-plugin-server.iclusterclient.md
+++ b/docs/development/core/server/kibana-plugin-server.iclusterclient.md
@@ -4,12 +4,12 @@
## IClusterClient type
-Represents an Elasticsearch cluster API client and allows to call API on behalf of the internal Kibana user and the actual user that is derived from the request headers (via `asScoped(...)`).
+Represents an Elasticsearch cluster API client created by the platform. It allows to call API on behalf of the internal Kibana user and the actual user that is derived from the request headers (via `asScoped(...)`).
See [ClusterClient](./kibana-plugin-server.clusterclient.md).
Signature:
```typescript
-export declare type IClusterClient = Pick;
+export declare type IClusterClient = Pick;
```
diff --git a/docs/development/core/server/kibana-plugin-server.icustomclusterclient.md b/docs/development/core/server/kibana-plugin-server.icustomclusterclient.md
new file mode 100644
index 0000000000000..d7511a119fc0f
--- /dev/null
+++ b/docs/development/core/server/kibana-plugin-server.icustomclusterclient.md
@@ -0,0 +1,15 @@
+
+
+[Home](./index.md) > [kibana-plugin-server](./kibana-plugin-server.md) > [ICustomClusterClient](./kibana-plugin-server.icustomclusterclient.md)
+
+## ICustomClusterClient type
+
+Represents an Elasticsearch cluster API client created by a plugin. It allows to call API on behalf of the internal Kibana user and the actual user that is derived from the request headers (via `asScoped(...)`).
+
+See [ClusterClient](./kibana-plugin-server.clusterclient.md).
+
+Signature:
+
+```typescript
+export declare type ICustomClusterClient = Pick;
+```
diff --git a/docs/development/core/server/kibana-plugin-server.kibanaresponsefactory.md b/docs/development/core/server/kibana-plugin-server.kibanaresponsefactory.md
index 85874f5ec16ba..2e496aa0c46fc 100644
--- a/docs/development/core/server/kibana-plugin-server.kibanaresponsefactory.md
+++ b/docs/development/core/server/kibana-plugin-server.kibanaresponsefactory.md
@@ -10,7 +10,7 @@ Set of helpers used to create `KibanaResponse` to form HTTP response on an incom
```typescript
kibanaResponseFactory: {
- custom: | Buffer | Stream | {
+ custom: | {
message: string | Error;
attributes?: Record | undefined;
} | undefined>(options: CustomHttpResponseOptions) => KibanaResponse;
@@ -21,9 +21,9 @@ kibanaResponseFactory: {
conflict: (options?: ErrorHttpResponseOptions) => KibanaResponse;
internalError: (options?: ErrorHttpResponseOptions) => KibanaResponse;
customError: (options: CustomHttpResponseOptions) => KibanaResponse;
- redirected: (options: RedirectResponseOptions) => KibanaResponse | Buffer | Stream>;
- ok: (options?: HttpResponseOptions) => KibanaResponse | Buffer | Stream>;
- accepted: (options?: HttpResponseOptions) => KibanaResponse | Buffer | Stream>;
+ redirected: (options: RedirectResponseOptions) => KibanaResponse>;
+ ok: (options?: HttpResponseOptions) => KibanaResponse>;
+ accepted: (options?: HttpResponseOptions) => KibanaResponse>;
noContent: (options?: HttpResponseOptions) => KibanaResponse;
}
```
diff --git a/docs/development/core/server/kibana-plugin-server.md b/docs/development/core/server/kibana-plugin-server.md
index 5e7f84c55244d..5e28643843af3 100644
--- a/docs/development/core/server/kibana-plugin-server.md
+++ b/docs/development/core/server/kibana-plugin-server.md
@@ -17,7 +17,7 @@ The plugin integrates with the core system via lifecycle events: `setup`
| Class | Description |
| --- | --- |
| [BasePath](./kibana-plugin-server.basepath.md) | Access or manipulate the Kibana base path |
-| [ClusterClient](./kibana-plugin-server.clusterclient.md) | Represents an Elasticsearch cluster API client and allows to call API on behalf of the internal Kibana user and the actual user that is derived from the request headers (via asScoped(...)).See [ClusterClient](./kibana-plugin-server.clusterclient.md). |
+| [ClusterClient](./kibana-plugin-server.clusterclient.md) | Represents an Elasticsearch cluster API client created by the platform. It allows to call API on behalf of the internal Kibana user and the actual user that is derived from the request headers (via asScoped(...)).See [ClusterClient](./kibana-plugin-server.clusterclient.md). |
| [CspConfig](./kibana-plugin-server.cspconfig.md) | CSP configuration for use in Kibana. |
| [ElasticsearchErrorHelpers](./kibana-plugin-server.elasticsearcherrorhelpers.md) | Helpers for working with errors returned from the Elasticsearch service.Since the internal data of errors are subject to change, consumers of the Elasticsearch service should always use these helpers to classify errors instead of checking error internals such as body.error.header[WWW-Authenticate] |
| [KibanaRequest](./kibana-plugin-server.kibanarequest.md) | Kibana specific abstraction for an incoming request. |
@@ -175,8 +175,9 @@ The plugin integrates with the core system via lifecycle events: `setup`
| [Headers](./kibana-plugin-server.headers.md) | Http request headers to read. |
| [HttpResponsePayload](./kibana-plugin-server.httpresponsepayload.md) | Data send to the client as a response payload. |
| [IBasePath](./kibana-plugin-server.ibasepath.md) | Access or manipulate the Kibana base path[BasePath](./kibana-plugin-server.basepath.md) |
-| [IClusterClient](./kibana-plugin-server.iclusterclient.md) | Represents an Elasticsearch cluster API client and allows to call API on behalf of the internal Kibana user and the actual user that is derived from the request headers (via asScoped(...)).See [ClusterClient](./kibana-plugin-server.clusterclient.md). |
+| [IClusterClient](./kibana-plugin-server.iclusterclient.md) | Represents an Elasticsearch cluster API client created by the platform. It allows to call API on behalf of the internal Kibana user and the actual user that is derived from the request headers (via asScoped(...)).See [ClusterClient](./kibana-plugin-server.clusterclient.md). |
| [IContextProvider](./kibana-plugin-server.icontextprovider.md) | A function that returns a context value for a specific key of given context type. |
+| [ICustomClusterClient](./kibana-plugin-server.icustomclusterclient.md) | Represents an Elasticsearch cluster API client created by a plugin. It allows to call API on behalf of the internal Kibana user and the actual user that is derived from the request headers (via asScoped(...)).See [ClusterClient](./kibana-plugin-server.clusterclient.md). |
| [IsAuthenticated](./kibana-plugin-server.isauthenticated.md) | Return authentication status for a request. |
| [ISavedObjectsRepository](./kibana-plugin-server.isavedobjectsrepository.md) | See [SavedObjectsRepository](./kibana-plugin-server.savedobjectsrepository.md) |
| [IScopedClusterClient](./kibana-plugin-server.iscopedclusterclient.md) | Serves the same purpose as "normal" ClusterClient but exposes additional callAsCurrentUser method that doesn't use credentials of the Kibana internal user (as callAsInternalUser does) to request Elasticsearch API, but rather passes HTTP headers extracted from the current user request to the API.See [ScopedClusterClient](./kibana-plugin-server.scopedclusterclient.md). |
@@ -213,6 +214,7 @@ The plugin integrates with the core system via lifecycle events: `setup`
| [SavedObjectsClientContract](./kibana-plugin-server.savedobjectsclientcontract.md) | Saved Objects is Kibana's data persisentence mechanism allowing plugins to use Elasticsearch for storing plugin state.\#\# SavedObjectsClient errorsSince the SavedObjectsClient has its hands in everything we are a little paranoid about the way we present errors back to to application code. Ideally, all errors will be either:1. Caused by bad implementation (ie. undefined is not a function) and as such unpredictable 2. An error that has been classified and decorated appropriately by the decorators in [SavedObjectsErrorHelpers](./kibana-plugin-server.savedobjectserrorhelpers.md)Type 1 errors are inevitable, but since all expected/handle-able errors should be Type 2 the isXYZError() helpers exposed at SavedObjectsErrorHelpers should be used to understand and manage error responses from the SavedObjectsClient.Type 2 errors are decorated versions of the source error, so if the elasticsearch client threw an error it will be decorated based on its type. That means that rather than looking for error.body.error.type or doing substring checks on error.body.error.reason, just use the helpers to understand the meaning of the error:\`\`\`js if (SavedObjectsErrorHelpers.isNotFoundError(error)) { // handle 404 }if (SavedObjectsErrorHelpers.isNotAuthorizedError(error)) { // 401 handling should be automatic, but in case you wanted to know }// always rethrow the error unless you handle it throw error; \`\`\`\#\#\# 404s from missing indexFrom the perspective of application code and APIs the SavedObjectsClient is a black box that persists objects. One of the internal details that users have no control over is that we use an elasticsearch index for persistance and that index might be missing.At the time of writing we are in the process of transitioning away from the operating assumption that the SavedObjects index is always available. Part of this transition is handling errors resulting from an index missing. These used to trigger a 500 error in most cases, and in others cause 404s with different error messages.From my (Spencer) perspective, a 404 from the SavedObjectsApi is a 404; The object the request/call was targeting could not be found. This is why \#14141 takes special care to ensure that 404 errors are generic and don't distinguish between index missing or document missing.\#\#\# 503s from missing indexUnlike all other methods, create requests are supposed to succeed even when the Kibana index does not exist because it will be automatically created by elasticsearch. When that is not the case it is because Elasticsearch's action.auto_create_index setting prevents it from being created automatically so we throw a special 503 with the intention of informing the user that their Elasticsearch settings need to be updated.See [SavedObjectsClient](./kibana-plugin-server.savedobjectsclient.md) See [SavedObjectsErrorHelpers](./kibana-plugin-server.savedobjectserrorhelpers.md) |
| [SavedObjectsClientFactory](./kibana-plugin-server.savedobjectsclientfactory.md) | Describes the factory used to create instances of the Saved Objects Client. |
| [SavedObjectsClientWrapperFactory](./kibana-plugin-server.savedobjectsclientwrapperfactory.md) | Describes the factory used to create instances of Saved Objects Client Wrappers. |
+| [ScopeableRequest](./kibana-plugin-server.scopeablerequest.md) | A user credentials container. It accommodates the necessary auth credentials to impersonate the current user.See [KibanaRequest](./kibana-plugin-server.kibanarequest.md). |
| [SharedGlobalConfig](./kibana-plugin-server.sharedglobalconfig.md) | |
| [UiSettingsType](./kibana-plugin-server.uisettingstype.md) | UI element type to represent the settings. |
diff --git a/docs/development/core/server/kibana-plugin-server.scopeablerequest.md b/docs/development/core/server/kibana-plugin-server.scopeablerequest.md
new file mode 100644
index 0000000000000..5a9443376996d
--- /dev/null
+++ b/docs/development/core/server/kibana-plugin-server.scopeablerequest.md
@@ -0,0 +1,15 @@
+
+
+[Home](./index.md) > [kibana-plugin-server](./kibana-plugin-server.md) > [ScopeableRequest](./kibana-plugin-server.scopeablerequest.md)
+
+## ScopeableRequest type
+
+A user credentials container. It accommodates the necessary auth credentials to impersonate the current user.
+
+See [KibanaRequest](./kibana-plugin-server.kibanarequest.md).
+
+Signature:
+
+```typescript
+export declare type ScopeableRequest = KibanaRequest | LegacyRequest | FakeRequest;
+```
diff --git a/docs/limitations.asciidoc b/docs/limitations.asciidoc
index 9bcba3b65d660..818cc766bf6a9 100644
--- a/docs/limitations.asciidoc
+++ b/docs/limitations.asciidoc
@@ -19,4 +19,4 @@ These {stack} features also have limitations that affect {kib}:
include::limitations/nested-objects.asciidoc[]
-include::limitations/export-data.asciidoc[]
+include::limitations/export-data.asciidoc[]
\ No newline at end of file
diff --git a/docs/management/index-patterns.asciidoc b/docs/management/index-patterns.asciidoc
index 8d9ef515108ed..8e687f641c92b 100644
--- a/docs/management/index-patterns.asciidoc
+++ b/docs/management/index-patterns.asciidoc
@@ -1,17 +1,22 @@
[[index-patterns]]
-== Index patterns
+== Creating an index pattern
-To visualize and explore data in {kib}, you must create an index pattern.
-An index pattern tells {kib} which {es} indices contain the data that you want to work with.
-An index pattern can match a single index, multiple indices, and a rollup index.
+To explore and visualize data in {kib}, you must create an index pattern.
+An index pattern tells {kib} which {es} indices contain the data that
+you want to work with.
+Once you create an index pattern, you're ready to:
+
+* Interactively explore your data in <>.
+* Analyze your data in charts, tables, gauges, tag clouds, and more in <>.
+* Show off your data in a <