diff --git a/.buildkite/kibana.sh b/.buildkite/kibana.sh
new file mode 100644
index 0000000000..857d15a814
--- /dev/null
+++ b/.buildkite/kibana.sh
@@ -0,0 +1,42 @@
+#!/usr/bin/env bash
+
+set -euo pipefail
+
+# Since we're into the current repo, move to the top-level
+cd ..
+
+echo "--- Clone elasticsearch-js"
+git clone -v -- git@github.com:elastic/elasticsearch-js.git
+pushd elasticsearch-js
+git checkout $BUILDKITE_BRANCH
+popd
+
+echo "--- Clone Kibana"
+git clone -v --reference /usr/local/git-references/git-github-com-elastic-kibana-git -- git@github.com:elastic/kibana.git
+cd kibana
+
+echo "--- Install Node.js and Yarn"
+curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.1/install.sh | bash
+set +e # https://github.com/nvm-sh/nvm/issues/3117
+export NVM_DIR="$([ -z "${XDG_CONFIG_HOME-}" ] && printf %s "${HOME}/.nvm" || printf %s "${XDG_CONFIG_HOME}/nvm")"
+[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" # This loads nvm
+set -e
+
+nvm install
+nvm use
+npm install --global yarn
+
+echo "--- Install elasticsearch-js"
+pushd ../elasticsearch-js
+npm install
+npm run build
+npm pack
+popd
+yarn add ../elasticsearch-js/elastic-elasticsearch-*.tgz
+
+echo "--- Bootstrap Kibana"
+git --no-pager diff
+yarn kbn bootstrap --allow-root
+
+echo "--- Check types"
+node scripts/type_check.js
diff --git a/.buildkite/kibana.yml b/.buildkite/kibana.yml
new file mode 100644
index 0000000000..d67ab615fd
--- /dev/null
+++ b/.buildkite/kibana.yml
@@ -0,0 +1,9 @@
+agents:
+  memory: "24G"
+  cpu: "4"
+  ephemeralStorage: 15Gi
+
+
+steps:
+  - label: "Run Kibana type checks"
+    command: .buildkite/kibana.sh
diff --git a/.github/download-artifacts/index.js b/.github/download-artifacts/index.js
index 8ac5556e56..75d43aab0d 100644
--- a/.github/download-artifacts/index.js
+++ b/.github/download-artifacts/index.js
@@ -40,23 +40,21 @@ const downloadedSpec = join(esFolder, 'rest-api-spec', 'api')
 const specFolder = join(__dirname, '..', '..', 'specification', '_json_spec')
 
 async function downloadArtifacts (opts) {
-  if (typeof opts.version !== 'string' && typeof opts.branch !== 'string') {
-    throw new Error('Missing version or branch')
+  if (typeof opts.branch !== 'string') {
+    throw new Error('Missing branch')
   }
 
-  core.info('Checking out spec and test')
+  core.info('Resolving artifact URL')
 
-  core.info('Resolving version')
   let resolved
   try {
-    resolved = await resolve(opts.version || fromBranch(opts.branch), opts.hash)
+    resolved = await resolve(opts.branch)
   } catch (err) {
     core.error(err.message)
     process.exit(1)
   }
 
-  opts.version = resolved.version
-  core.info(`Resolved version ${opts.version}`)
+  core.info(`Resolved artifact URL for ${resolved.commit_url}`)
 
   core.info('Cleanup')
   await rm(esFolder)
@@ -96,74 +94,26 @@ async function downloadArtifacts (opts) {
   core.info('Done')
 }
 
-async function resolve (version, hash) {
-  if (version === 'latest') {
-    const response = await fetch('https://artifacts-api.elastic.co/v1/versions')
-    if (!response.ok) {
-      throw new Error(`unexpected response ${response.statusText}`)
-    }
-    const { versions } = await response.json()
-    version = versions.pop()
-  }
-
-  core.info(`Resolving version ${version}`)
-  const response = await fetch(`https://artifacts-api.elastic.co/v1/versions/${version}`)
+async function resolve (branch) {
+  const url = `https://artifacts-snapshot.elastic.co/elasticsearch/latest/${branch}.json`
+  const response = await fetch(url)
   if (!response.ok) {
-    throw new Error(`unexpected response ${response.statusText}`)
+    throw new Error(`Unexpected response. Invalid version? ${url}: ${response.statusText}`)
   }
-
   const data = await response.json()
-  const esBuilds = data.version.builds
-    .filter(build => build.projects.elasticsearch != null)
-    .map(build => {
-      return {
-        projects: build.projects.elasticsearch,
-        buildId: build.build_id,
-        date: build.start_time,
-        version: build.version
-      }
-    })
-    .sort((a, b) => {
-      const dA = new Date(a.date)
-      const dB = new Date(b.date)
-      if (dA > dB) return -1
-      if (dA < dB) return 1
-      return 0
-    })
-
-  if (hash != null) {
-    const build = esBuilds.find(build => build.projects.commit_hash === hash)
-    if (!build) {
-      throw new Error(`Can't find any build with hash '${hash}'`)
-    }
-    const zipKey = Object.keys(build.projects.packages).find(key => key.startsWith('rest-resources-zip-') && key.endsWith('.zip'))
-    return {
-      url: build.projects.packages[zipKey].url,
-      id: build.buildId,
-      hash: build.projects.commit_hash,
-      version: build.version
-    }
-  }
 
-  const lastBuild = esBuilds[0]
-  const zipKey = Object.keys(lastBuild.projects.packages).find(key => key.startsWith('rest-resources-zip-') && key.endsWith('.zip'))
-  return {
-    url: lastBuild.projects.packages[zipKey].url,
-    id: lastBuild.buildId,
-    hash: lastBuild.projects.commit_hash,
-    version: lastBuild.version
+  let manifest_url = data.manifest_url
+  const manifestResponse = await fetch(manifest_url)
+  if (!manifestResponse.ok) {
+    throw new Error(`Unexpected manifestResponse. ${manifest_url}: ${manifestResponse.statusText}`)
   }
-}
+  const manifestData = await manifestResponse.json()
+  const elasticsearch = manifestData.projects.elasticsearch
+  const restResourceName = `rest-resources-zip-${manifestData.version}.zip`
 
-function fromBranch (branch) {
-  if (branch === 'main') {
-    return 'latest'
-  } else if (branch === '7.x') {
-    return '7.x-SNAPSHOT'
-  } else if ((branch.startsWith('7.') || branch.startsWith('8.')) && !isNaN(Number(branch.split('.')[1]))) {
-    return `${branch}-SNAPSHOT`
-  } else {
-    throw new Error(`Cannot derive version from branch '${branch}'`)
+  return {
+    url: elasticsearch.packages[restResourceName].url,
+    commit_url: elasticsearch.commit_url,
   }
 }
 
@@ -172,7 +122,7 @@ async function main (options) {
 }
 
 const options = minimist(process.argv.slice(2), {
-  string: ['id', 'version', 'hash', 'branch']
+  string: ['branch']
 })
 main(options).catch(t => {
   core.error(t)
diff --git a/.github/validate-pr/index.js b/.github/validate-pr/index.js
index 53dc3dec79..22f40cd724 100644
--- a/.github/validate-pr/index.js
+++ b/.github/validate-pr/index.js
@@ -19,23 +19,37 @@
 
 /* global argv, path, cd */
 
-'use strict'
+import { dirname } from 'path'
+import { fileURLToPath } from 'url'
+import 'zx/globals'
+import assert from 'assert'
+import * as core from '@actions/core'
+import { copyFile } from 'fs/promises'
+import * as github from '@actions/github'
+import specification from '../../output/schema/schema.json' assert { type: 'json' }
+import { run as getReport } from '../../../clients-flight-recorder/scripts/types-validator/index.js'
+import {
+  getNamespace,
+  getName
+} from '../../../clients-flight-recorder/scripts/types-validator/utils.js'
+
+const __dirname = dirname(fileURLToPath(import.meta.url))
 
-require('zx/globals')
-const assert = require('assert')
-const core = require('@actions/core')
-const { copyFile } = require('fs/promises')
-const github = require('@actions/github')
 const octokit = github.getOctokit(argv.token)
-const specification = require('../../output/schema/schema.json')
-const getReport = require('../../../clients-flight-recorder/scripts/types-validator')
-const { getNamespace, getName } = require('../../../clients-flight-recorder/scripts/types-validator/utils')
 
 const privateNames = ['_global']
 const tick = '`'
-const tsValidationPath = path.join(__dirname, '..', '..', '..', 'clients-flight-recorder', 'scripts', 'types-validator')
-
-async function run () {
+const tsValidationPath = path.join(
+  __dirname,
+  '..',
+  '..',
+  '..',
+  'clients-flight-recorder',
+  'scripts',
+  'types-validator'
+)
+
+async function run() {
   await copyFile(
     path.join(__dirname, '..', '..', 'output', 'typescript', 'types.ts'),
     path.join(tsValidationPath, 'types.ts')
@@ -53,14 +67,20 @@ async function run () {
       per_page: 100
     })
     if (data.length > 0) {
-      files.push(...data.map(entry => entry.filename))
+      files.push(
+        ...data
+          .filter((entry) => entry.status !== 'deleted')
+          .map((entry) => entry.filename)
+      )
       page += 1
     } else {
       break
     }
   }
 
-  const specFiles = files.filter(file => file.includes('specification') && !file.includes('compiler/test'))
+  const specFiles = files.filter(
+    (file) => file.includes('specification') && !file.includes('compiler/test')
+  )
   const table = []
 
   cd(tsValidationPath)
@@ -163,7 +183,7 @@ function generateResponse (r) {
   return `${r.passingResponse}/${r.totalResponse}`
 }
 
-run().catch(err => {
+run().catch((err) => {
   core.error(err)
   process.exit(1)
 })
diff --git a/.github/validate-pr/package.json b/.github/validate-pr/package.json
index d10bc4ddd9..fd5dee602c 100644
--- a/.github/validate-pr/package.json
+++ b/.github/validate-pr/package.json
@@ -2,7 +2,8 @@
   "name": "validate-pr",
   "version": "1.0.0",
   "description": "",
-  "main": "index.js",
+  "type": "module",
+  "exports": "./index.js",
   "scripts": {
     "test": "echo \"Error: no test specified\" && exit 1"
   },
diff --git a/.github/workflows/update-rest-api-json.yml b/.github/workflows/update-rest-api-json.yml
index c1168d430d..5c260fc28d 100644
--- a/.github/workflows/update-rest-api-json.yml
+++ b/.github/workflows/update-rest-api-json.yml
@@ -37,7 +37,7 @@ jobs:
 
       - name: Generate output
         run: |
-          SKIP_VERSION_UPDATE=true make contrib
+          make contrib
 
       - name: Debug git status
         run: |
diff --git a/.github/workflows/validate-pr.yml b/.github/workflows/validate-pr.yml
index 6d473ad3f5..511d1ac0c2 100644
--- a/.github/workflows/validate-pr.yml
+++ b/.github/workflows/validate-pr.yml
@@ -4,6 +4,8 @@ on:
   pull_request:
     branches:
       - main
+      - 8.x
+      - '[0-9]+.[0-9]+'
 
 jobs:
   validate-pr:
@@ -57,7 +59,7 @@ jobs:
           else
             branch=$GITHUB_REF_NAME
           fi
-          node scripts/upload-recording/download.js --branch $branch
+          node scripts/upload-recording/download.js --branch $branch --git
           node scripts/clone-elasticsearch/index.js --branch $branch
         env:
           GCS_CREDENTIALS: ${{ secrets.GCS_CREDENTIALS }}
diff --git a/.spectral.yaml b/.spectral.yaml
index 109addd298..73e8469994 100644
--- a/.spectral.yaml
+++ b/.spectral.yaml
@@ -17,8 +17,10 @@ rules:
   operation-operationId: warn
   operation-operationId-unique: warn
   operation-operationId-valid-in-url: warn
-  operation-tag-defined: warn
+  operation-tag-defined: error
   operation-tags: warn
+  # Parameters
+  path-params: warn
   # Responses
   operation-success-response: warn
   # Schema
@@ -26,7 +28,7 @@ rules:
   oas2-schema: warn
   # Tags
   openapi-tags: warn
-  openapi-tags-alphabetical: info
+  openapi-tags-alphabetical: false
   # Turn off some built-in rules
   operation-description: false
   operation-singular-tag: false
diff --git a/Makefile b/Makefile
index e5a047d692..a725cee70f 100644
--- a/Makefile
+++ b/Makefile
@@ -60,23 +60,16 @@ dump-routes: ## Create a new schema with all generics expanded
 contrib: | generate license-check spec-format-fix transform-to-openapi filter-for-serverless ## Pre contribution target
 
 overlay-docs: ## Apply overlays to OpenAPI documents
-	@npx bump overlay "output/openapi/elasticsearch-serverless-openapi.json" "docs/overlays/elasticsearch-serverless-openapi-overlays.yaml" > "output/openapi/elasticsearch-serverless-openapi.tmp1.json"
-	@npx bump overlay "output/openapi/elasticsearch-serverless-openapi.tmp1.json" "docs/overlays/elasticsearch-shared-example-overlays.yaml" > "output/openapi/elasticsearch-serverless-openapi.tmp2.json"
-	@npx @redocly/cli bundle output/openapi/elasticsearch-serverless-openapi.tmp2.json --ext json -o output/openapi/elasticsearch-serverless-openapi.examples.json
 	@npx bump overlay "output/openapi/elasticsearch-openapi.json" "docs/overlays/elasticsearch-openapi-overlays.yaml" > "output/openapi/elasticsearch-openapi.tmp1.json"
-	@npx bump overlay "output/openapi/elasticsearch-openapi.tmp1.json" "docs/overlays/elasticsearch-shared-example-overlays.yaml" > "output/openapi/elasticsearch-openapi.tmp2.json"
+	@npx bump overlay "output/openapi/elasticsearch-openapi.tmp1.json" "docs/overlays/elasticsearch-shared-overlays.yaml" > "output/openapi/elasticsearch-openapi.tmp2.json"
 	@npx @redocly/cli bundle output/openapi/elasticsearch-openapi.tmp2.json --ext json -o output/openapi/elasticsearch-openapi.examples.json
-	rm output/openapi/elasticsearch-serverless-openapi.tmp*.json
 	rm output/openapi/elasticsearch-openapi.tmp*.json
 
-lint-docs: ## Lint the OpenAPI documents
-	@npx @stoplight/spectral-cli lint output/openapi/*.json --ruleset .spectral.yaml
+lint-docs: ## Lint the OpenAPI documents after overlays
+	@npx @stoplight/spectral-cli lint output/openapi/elasticsearch-*.examples.json --ruleset .spectral.yaml
 
-lint-docs-errs: ## Lint the OpenAPI documents and return only errors
-	@npx @stoplight/spectral-cli lint output/openapi/*.json --ruleset .spectral.yaml -D
-
-lint-docs-serverless: ## Lint only the serverless OpenAPI document
-	@npx @stoplight/spectral-cli lint output/openapi/elasticsearch-serverless-openapi.json --ruleset .spectral.yaml
+lint-docs-errs: ## Lint the OpenAPI documents after overlays and return only errors
+	@npx @stoplight/spectral-cli lint output/openapi/elasticsearch-*.examples.json --ruleset .spectral.yaml -D
 
 help:  ## Display help
 	@awk 'BEGIN {FS = ":.*##"; printf "Usage:\n  make \033[36m<target>\033[0m\n"} /^[a-zA-Z_-]+:.*?##/ { printf "  \033[36m%-15s\033[0m %s\n", $$1, $$2 } /^##@/ { printf "\n\033[1m%s\033[0m\n", substr($$0, 5) } ' $(MAKEFILE_LIST)
diff --git a/api-design-guidelines/naming.md b/api-design-guidelines/naming.md
index 6ebd58feb1..d503b408ac 100644
--- a/api-design-guidelines/naming.md
+++ b/api-design-guidelines/naming.md
@@ -100,6 +100,8 @@ Care should be given to ensure that:
 - All member APIs of a given namespace are logically related and form a coherent set.
 - Related functionality is not distributed across multiple arbitrary namespaces
 
+NOTE: The endpoint namespaces are used to generate tags in the OpenAPI documents. The tags are ultimately used to group the endpoints in the API documentation. To override the default tag, use `@doc_tag`.
+
 ### Use the global namespace sparingly
 
 The top-level global namespace should be treated with particular care. It is traditionally reserved for search and document endpoints only. A case should be made and a broader discussion carried out before new endpoints unrelated to these functions are added to the global namespace.
diff --git a/catalog-info.yaml b/catalog-info.yaml
new file mode 100644
index 0000000000..d13ccec7f3
--- /dev/null
+++ b/catalog-info.yaml
@@ -0,0 +1,57 @@
+---
+# yaml-language-server: $schema=https://json.schemastore.org/catalog-info.json
+apiVersion: backstage.io/v1alpha1
+kind: Component
+metadata:
+  name: elasticsearch-specification
+
+spec:
+  type: library
+  owner: group:devtools-team
+  lifecycle: beta
+
+---
+# yaml-language-server: $schema=https://gist.githubusercontent.com/elasticmachine/988b80dae436cafea07d9a4a460a011d/raw/rre.schema.json
+apiVersion: backstage.io/v1alpha1
+kind: Resource
+metadata:
+  name: kibana-type-checks-pipeline
+  description: Run Kibana type checks against the specification
+
+spec:
+  type: buildkite-pipeline
+  owner: group:devtools-team
+  system: buildkite
+
+  implementation:
+    apiVersion: buildkite.elastic.dev/v1
+    kind: Pipeline
+    metadata:
+      name: Kibana type checks
+    spec:
+      repository: elastic/elasticsearch-specification
+      pipeline_file: .buildkite/kibana.yml
+      provider_settings:
+        trigger_mode: none
+      teams:
+        devtools-team:
+          access_level: MANAGE_BUILD_AND_READ
+        everyone:
+          access_level: READ_ONLY
+      schedules:
+        Daily main:
+          branch: 'main'
+          cronline: '0 4 * * *'
+          message: 'Daily run for main branch'
+        Daily 8.x:
+          branch: '8.x'
+          cronline: '0 4 * * *'
+          message: 'Daily run for 8.x branch'
+        Daily 8.17:
+          branch: '8.17'
+          cronline: '0 4 * * *'
+          message: 'Daily run for 8.17 branch'
+        Daily 8.18:
+          branch: '8.18'
+          cronline: '0 4 * * *'
+          message: 'Daily run for 8.18 branch'
diff --git a/compiler-rs/clients_schema/src/lib.rs b/compiler-rs/clients_schema/src/lib.rs
index 17d8c70ed0..d8f2d16f3c 100644
--- a/compiler-rs/clients_schema/src/lib.rs
+++ b/compiler-rs/clients_schema/src/lib.rs
@@ -55,6 +55,11 @@ pub trait Documented {
     fn description(&self) -> Option<&str>;
 }
 
+pub trait ExternalDocument {
+    fn ext_doc_id(&self) -> Option<&str>;
+    fn ext_doc_url(&self) -> Option<&str>;
+}
+
 #[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq, PartialOrd, Ord, Hash)]
 pub struct TypeName {
     // Order is important for Ord implementation
@@ -314,6 +319,12 @@ pub struct Property {
     #[serde(skip_serializing_if = "Option::is_none")]
     pub doc_id: Option<String>,
 
+    #[serde(skip_serializing_if = "Option::is_none")]
+    pub ext_doc_url: Option<String>,
+
+    #[serde(skip_serializing_if = "Option::is_none")]
+    pub ext_doc_id: Option<String>,
+
     #[serde(skip_serializing_if = "Option::is_none")]
     pub server_default: Option<ServerDefault>,
 
@@ -355,6 +366,16 @@ impl Documented for Property {
     }
 }
 
+impl ExternalDocument for Property {
+    fn ext_doc_url(&self) -> Option<&str> {
+        self.ext_doc_url.as_deref()
+    }
+
+    fn ext_doc_id(&self) -> Option<&str> {
+        self.ext_doc_id.as_deref()
+    }
+}
+
 #[derive(Debug, Clone, Serialize, Deserialize)]
 #[serde(untagged)]
 pub enum ServerDefault {
@@ -477,6 +498,13 @@ pub struct BaseType {
     #[serde(skip_serializing_if = "Option::is_none")]
     pub doc_id: Option<String>,
 
+    /// Link to public documentation
+    #[serde(skip_serializing_if = "Option::is_none")]
+    pub ext_doc_url: Option<String>,
+
+    #[serde(skip_serializing_if = "Option::is_none")]
+    pub ext_doc_id: Option<String>,
+
     #[serde(skip_serializing_if = "Option::is_none")]
     pub deprecation: Option<Deprecation>,
 
@@ -512,6 +540,8 @@ impl BaseType {
             description: None,
             variant_name: None,
             spec_location: None,
+            ext_doc_id: None,
+            ext_doc_url: None,
         }
     }
 }
@@ -530,6 +560,16 @@ impl Documented for BaseType {
     }
 }
 
+impl ExternalDocument for BaseType {
+    fn ext_doc_url(&self) -> Option<&str> {
+        self.ext_doc_url.as_deref()
+    }
+
+    fn ext_doc_id(&self) -> Option<&str> {
+        self.ext_doc_id.as_deref()
+    }
+}
+
 trait WithBaseType {
     fn base(&self) -> &BaseType;
 }
@@ -548,6 +588,16 @@ impl<T: WithBaseType> Documented for T {
     }
 }
 
+impl<T: WithBaseType> ExternalDocument for T {
+    fn ext_doc_url(&self) -> Option<&str> {
+        self.base().doc_url()
+    }
+
+    fn ext_doc_id(&self) -> Option<&str> {
+        self.base().doc_id()
+    }
+}
+
 /// An interface type
 #[derive(Debug, Clone, Serialize, Deserialize)]
 #[serde(rename_all = "camelCase")]
@@ -809,12 +859,21 @@ pub struct Endpoint {
     #[serde(skip_serializing_if = "Option::is_none")]
     pub doc_id: Option<String>,
 
+    #[serde(skip_serializing_if = "Option::is_none")]
+    pub ext_doc_id: Option<String>,
+
+    #[serde(skip_serializing_if = "Option::is_none")]
+    pub ext_doc_url: Option<String>,
+
     #[serde(skip_serializing_if = "Option::is_none")]
     pub deprecation: Option<Deprecation>,
 
     #[serde(skip_serializing_if = "Option::is_none")]
     pub availability: Option<Availabilities>,
 
+    #[serde(skip_serializing_if = "Option::is_none")]
+    pub doc_tag: Option<String>,
+
     /// If missing, there is not yet a request definition for this endpoint.
     #[serde(skip_serializing_if = "Option::is_none")]
     pub request: Option<TypeName>,
@@ -851,6 +910,16 @@ impl Documented for Endpoint {
     }
 }
 
+impl ExternalDocument for Endpoint {
+    fn ext_doc_url(&self) -> Option<&str> {
+        self.ext_doc_url.as_deref()
+    }
+
+    fn ext_doc_id(&self) -> Option<&str> {
+        self.ext_doc_id.as_deref()
+    }
+}
+
 #[derive(Debug, Clone, Serialize, Deserialize)]
 #[serde(rename_all = "camelCase")]
 pub struct Privileges {
diff --git a/compiler-rs/clients_schema_to_openapi/src/lib.rs b/compiler-rs/clients_schema_to_openapi/src/lib.rs
index c4fc22d0df..e82b4b30b8 100644
--- a/compiler-rs/clients_schema_to_openapi/src/lib.rs
+++ b/compiler-rs/clients_schema_to_openapi/src/lib.rs
@@ -155,18 +155,20 @@ pub fn availability_as_extensions(availabilities: &Option<Availabilities>) -> In
     if let Some(avails) = availabilities {
         // We may have several availabilities, but since generally exists only on stateful (stack)
         for (_, availability) in avails {
-            if let Some(since) = &availability.since {
-                result.insert("x-available-since".to_string(), serde_json::Value::String(since.clone()));
-            }
             if let Some(stability) = &availability.stability {
                 match stability {
                     Stability::Beta => {
                         result.insert("x-beta".to_string(), serde_json::Value::Bool(true));
                     }
                     Stability::Experimental => {
-                        result.insert("x-technical-preview".to_string(), serde_json::Value::Bool(true));
+                        result.insert("x-state".to_string(), serde_json::Value::String("Technical preview".to_string()));
+                    }
+                    Stability::Stable => {
+                        if let Some(since) = &availability.since {
+                            let stable_since = "Added in ".to_string() + since;
+                            result.insert("x-state".to_string(), serde_json::Value::String(stable_since));
+                        }
                     }
-                    _ => {}
                 }
             }
         }
diff --git a/compiler-rs/clients_schema_to_openapi/src/paths.rs b/compiler-rs/clients_schema_to_openapi/src/paths.rs
index df8617bb4b..ed7e145ce9 100644
--- a/compiler-rs/clients_schema_to_openapi/src/paths.rs
+++ b/compiler-rs/clients_schema_to_openapi/src/paths.rs
@@ -47,10 +47,10 @@ pub fn add_endpoint(
     }
 
     // Namespace
-    // let namespace = match endpoint.name.split_once('.') {
-    //    Some((ns, _)) => ns,
-    //    None => "core",
-    //};
+    let namespace = match endpoint.name.split_once('.') {
+       Some((ns, _)) => ns,
+       None => &endpoint.name,
+    };
 
     // Will we produce multiple paths? If true, we will register components for reuse across paths
     let is_multipath = endpoint.urls.len() > 1 || endpoint.urls.iter().any(|u| u.methods.len() > 1);
@@ -196,10 +196,15 @@ pub fn add_endpoint(
 
         // Create the operation, it will be repeated if we have several methods
         let operation = openapiv3::Operation {
-            tags: vec![endpoint.name.clone()],
+            tags: if let Some(doc_tag) = &endpoint.doc_tag {
+                vec![doc_tag.clone()]
+            } else {
+                vec![namespace.to_string()]
+            },
             summary: sum_desc.summary,
             description: sum_desc.description,
             external_docs: tac.convert_external_docs(endpoint),
+            // external_docs: None, // Need values that differ from client purposes
             operation_id: None, // set in clone_operation below with operation_counter
             parameters,
             request_body: request_body.clone(),
diff --git a/compiler-rs/clients_schema_to_openapi/src/schemas.rs b/compiler-rs/clients_schema_to_openapi/src/schemas.rs
index 256eb5d3b0..210755056b 100644
--- a/compiler-rs/clients_schema_to_openapi/src/schemas.rs
+++ b/compiler-rs/clients_schema_to_openapi/src/schemas.rs
@@ -38,7 +38,7 @@ const SCHEMA_PLACEHOLDER: ReferenceOr<Schema> = ReferenceOr::Reference {
 /// Convert `schema.json` type and value definitions to OpenAPI schemas:
 ///
 /// The `convert_*` functions return a concrete schema and not a reference and do not store them in
-/// the OpenAPI `components.schema`. This is the role of `for_type_name` hat creates and stores the
+/// the OpenAPI `components.schema`. This is the role of `for_type_name` that creates and stores the
 /// schema and returns a reference.
 impl<'a> TypesAndComponents<'a> {
     /// Convert a value. Returns a schema reference and not a concrete schema, as values can
@@ -209,9 +209,9 @@ impl<'a> TypesAndComponents<'a> {
         self.for_body(&response.body)
     }
 
-    pub fn convert_external_docs(&self, obj: &impl clients_schema::Documented) -> Option<ExternalDocumentation> {
+    pub fn convert_external_docs(&self, obj: &impl clients_schema::ExternalDocument) -> Option<ExternalDocumentation> {
         // FIXME: does the model contain resolved doc_id?
-        obj.doc_url().map(|url| {
+        obj.ext_doc_url().map(|url| {
             let branch: &str = self
                 .model
                 .info
diff --git a/compiler-rs/compiler-wasm-lib/pkg/compiler_wasm_lib_bg.wasm b/compiler-rs/compiler-wasm-lib/pkg/compiler_wasm_lib_bg.wasm
index 4e11b1c40c..feb5be1194 100644
Binary files a/compiler-rs/compiler-wasm-lib/pkg/compiler_wasm_lib_bg.wasm and b/compiler-rs/compiler-wasm-lib/pkg/compiler_wasm_lib_bg.wasm differ
diff --git a/compiler-rs/openapi_to_clients_schema/src/types.rs b/compiler-rs/openapi_to_clients_schema/src/types.rs
index 647d57afcd..b31d89c567 100644
--- a/compiler-rs/openapi_to_clients_schema/src/types.rs
+++ b/compiler-rs/openapi_to_clients_schema/src/types.rs
@@ -121,7 +121,7 @@ fn generate_type_for_schema(
         })
     }
     if let Some(ref docs) = data.external_docs {
-        base.doc_url = Some(docs.url.clone())
+        base.ext_doc_url = Some(docs.ext_docs_url.clone())
     }
 
     // TODO: data.readonly/writeonly -> OverloadOf?
diff --git a/compiler/package-lock.json b/compiler/package-lock.json
index 56c687fd0d..a3a5241e08 100644
--- a/compiler/package-lock.json
+++ b/compiler/package-lock.json
@@ -12,6 +12,7 @@
         "chalk": "^4.1.2",
         "compiler-wasm-lib": "file:../compiler-rs/compiler-wasm-lib/pkg",
         "fastest-levenshtein": "^1.0.12",
+        "minimist": "^1.2.6",
         "ora": "^5.4.1",
         "safe-stable-stringify": "^2.5.0",
         "semver": "^7.5.2",
@@ -22,7 +23,6 @@
         "@types/node": "^17.0.12",
         "ava": "^4.1.0",
         "c8": "^7.11.0",
-        "minimist": "^1.2.6",
         "prettier": "2.5.1",
         "prettier-plugin-organize-imports": "^4.0.0",
         "ts-node": "^10.4.0",
diff --git a/compiler/package.json b/compiler/package.json
index 069df9b440..2d3e1aa621 100644
--- a/compiler/package.json
+++ b/compiler/package.json
@@ -6,8 +6,8 @@
   "scripts": {
     "lint": "ts-standard src",
     "lint:fix": "ts-standard --fix src",
-    "format:check": "prettier --config .prettierrc.json --check ../specification/",
-    "format:fix": "prettier --config .prettierrc.json --write ../specification/",
+    "format:check": "prettier --config .prettierrc.json --loglevel warn --check ../specification/",
+    "format:fix": "prettier --config .prettierrc.json --loglevel warn --write ../specification/",
     "generate-schema": "ts-node src/index.ts",
     "transform-expand-generics": "ts-node src/transform/expand-generics.ts",
     "transform-to-openapi": "ts-node src/transform/schema-to-openapi.ts",
@@ -26,7 +26,6 @@
     "@types/node": "^17.0.12",
     "ava": "^4.1.0",
     "c8": "^7.11.0",
-    "minimist": "^1.2.6",
     "prettier": "2.5.1",
     "prettier-plugin-organize-imports": "^4.0.0",
     "ts-node": "^10.4.0",
@@ -41,7 +40,8 @@
     "safe-stable-stringify": "^2.5.0",
     "semver": "^7.5.2",
     "ts-morph": "^13.0.3",
-    "zx": "^4.3.0"
+    "zx": "^4.3.0",
+    "minimist": "^1.2.6"
   },
   "engines": {
     "node": ">=14"
diff --git a/compiler/run-validations.js b/compiler/run-validations.js
index 7a729533ae..9f68cfd66d 100755
--- a/compiler/run-validations.js
+++ b/compiler/run-validations.js
@@ -23,13 +23,17 @@
 
 let ora
 let closest
+let minimist
 try {
   require('zx/globals')
   ora = require('ora')
   const fl = require('fastest-levenshtein')
   closest = fl.closest
+  minimist = require('minimist')
 } catch (err) {
-  console.log('It looks like you didn\'t install the project dependencies, please run \'make setup\'')
+  console.log(
+    "It looks like you didn't install the project dependencies, please run 'make setup'"
+  )
   process.exit(1)
 }
 
@@ -49,37 +53,42 @@ const uploadRecordingsPath = path.join(__dirname, '..', '..', 'clients-flight-re
 const tsValidationPath = path.join(__dirname, '..', '..', 'clients-flight-recorder', 'scripts', 'types-validator')
 const DAY = 1000 * 60 * 60 * 24
 const specPath = path.join(__dirname, '..', 'specification')
-const outputPath = path.join(__dirname, '..', 'output/schema')
+const outputPath = path.join(__dirname, '..', 'output')
 
 const apis = require('../output/schema/schema.json')
   .endpoints
   .map(endpoint => endpoint.name)
 
 async function run () {
+  const options = minimist(process.argv.slice(2), {
+    string: ['api', 'type', 'branch'],
+    boolean: ['cache'],
+    default: { cache: true }
+  })
+
   spinner.text = 'Checking requirements'
 
-  const noCache = argv.cache === false
+  const noCache = options.cache === false
   const metadata = await readMetadata()
   const lastRun = metadata.lastRun ? new Date(metadata.lastRun) : new Date(0)
   const isStale = lastRun.getTime() + DAY < Date.now()
 
-  if (typeof argv.api !== 'string') {
+  if (options.api === '') {
     spinner.fail('You must specify the api, for example: \'make validate api=index type=request branch=main\'')
     process.exit(1)
   }
 
-  if (!apis.includes(argv.api)) {
-    spinner.fail(`The api '${argv.api}' does not exists, did you mean '${closest(argv.api, apis)}'?`)
+  if (!apis.includes(options.api)) {
+    spinner.fail(`The api '${options.api}' does not exists, did you mean '${closest(options.api, apis)}'?`)
     process.exit(1)
   }
-
-  // if true it's because the make target wasn't configured with a type argument
-  if (argv.type !== true && argv.type !== 'request' && argv.type !== 'response') {
+  // if the empty string it's because the make target wasn't configured with a type argument
+  if (options.type !== '' && options.type !== 'request' && options.type !== 'response') {
     spinner.fail('You must specify the type (request or response), for example: \'make validate api=index type=request branch=main\'')
     process.exit(1)
   }
 
-  if (typeof argv.branch !== 'string' && typeof argv.branch !== 'number') {
+  if (options.branch === '') {
     spinner.fail('You must specify the branch, for example: \'make validate api=index type=request branch=main\'')
     process.exit(1)
   }
@@ -87,7 +96,7 @@ async function run () {
 
   const isFlightRecorderCloned = await $`[[ -d ${path.join(__dirname, '..', '..', 'clients-flight-recorder')} ]]`.exitCode === 0
   if (!isFlightRecorderCloned) {
-    spinner.text = 'It looks like you didn\'t cloned the flight recorder, doing that for you'
+    spinner.text = 'It looks like you didn\'t clone the flight recorder, doing that for you'
     await $`git clone https://github.com/elastic/clients-flight-recorder.git ${path.join(__dirname, '..', '..', 'clients-flight-recorder')}`
   } else if (isStale) {
     spinner.text = 'Pulling the latest flight recorder changes'
@@ -99,7 +108,7 @@ async function run () {
   const isCompilerInstalled = await $`[[ -d ${path.join(compilerPath, 'node_modules')} ]]`.exitCode === 0
   const isTsGeneratorInstalled = await $`[[ -d ${path.join(tsGeneratorPath, 'node_modules')} ]]`.exitCode === 0
   if (noCache || !isCompilerInstalled || !isTsGeneratorInstalled) {
-    spinner.text = 'It looks like you didn\'t installed the project dependencies, doing that for you'
+    spinner.text = "It looks like you didn't install the project dependencies, doing that for you"
     await $`npm install --prefix ${compilerPath}`
     await $`npm install --prefix ${tsGeneratorPath}`
   }
@@ -166,8 +175,7 @@ async function run () {
 
   spinner.text = 'Running validations'
 
-  const branchArg = argv.branch.toString()
-  const branchName = branchArg.startsWith('7.') ? '7.x' : branchArg
+  const branchName = options.branch.startsWith('7.') ? '7.x' : options.branch
 
   if (noCache || isStale || metadata.branchName !== branchName) {
     metadata.lastRun = new Date()
@@ -177,20 +185,20 @@ async function run () {
     await $`node ${path.join(uploadRecordingsPath, 'download.js')} --branch ${branchName}`
 
     spinner.text = 'Fetching artifacts'
-    await $`node ${path.join(cloneEsPath, 'index.js')} --branch ${argv['branch']}`
+    await $`node ${path.join(cloneEsPath, 'index.js')} --branch ${branchName}`
   }
 
   cd(tsValidationPath)
   spinner.text = 'Validating endpoints'
   // the ts validator will copy types.ts and schema.json autonomously
   const flags = ['--verbose']
-  if (argv.type === true) {
+  if (options.type === '') {
     flags.push('--request')
     flags.push('--response')
   } else {
-    flags.push(`--${argv.type}`)
+    flags.push(`--${options.type}`)
   }
-  const output = await $`node ${path.join(tsValidationPath, 'index.js')} --api ${argv.api} --branch ${branchName} ${flags}`
+  const output = await $`node ${path.join(tsValidationPath, 'index.js')} --api ${options.api} --branch ${branchName} ${flags}`
 
   cd(path.join(compilerPath, '..'))
   if (output.exitCode === 0) {
diff --git a/compiler/src/model/build-model.ts b/compiler/src/model/build-model.ts
index f59d1359fb..5d9187f6c8 100644
--- a/compiler/src/model/build-model.ts
+++ b/compiler/src/model/build-model.ts
@@ -67,6 +67,8 @@ export function compileEndpoints (): Record<string, model.Endpoint> {
       name: api,
       description: spec.documentation.description,
       docUrl: spec.documentation.url,
+      docTag: spec.docTag,
+      extDocUrl: spec.externalDocs?.url,
       // Setting these values by default should be removed
       // when we no longer use rest-api-spec stubs as the
       // source of truth for stability/visibility.
diff --git a/compiler/src/model/json-spec.ts b/compiler/src/model/json-spec.ts
index 491321b5ec..5f2f689c8d 100644
--- a/compiler/src/model/json-spec.ts
+++ b/compiler/src/model/json-spec.ts
@@ -61,6 +61,11 @@ export interface JsonSpec {
     description: string
     required?: boolean
   }
+  docTag?: string
+  externalDocs?: {
+    url: string
+    description?: string
+  }
 }
 
 export default function buildJsonSpec (): Map<string, JsonSpec> {
diff --git a/compiler/src/model/metamodel.ts b/compiler/src/model/metamodel.ts
index 9e73372d1c..9f01d7a956 100644
--- a/compiler/src/model/metamodel.ts
+++ b/compiler/src/model/metamodel.ts
@@ -126,6 +126,8 @@ export class Property {
   description?: string
   docUrl?: string
   docId?: string
+  extDocId?: string
+  extDocUrl?: string
   serverDefault?: boolean | string | number | string[] | number[]
   deprecation?: Deprecation
   availability?: Availabilities
@@ -158,6 +160,8 @@ export abstract class BaseType {
   /** Link to public documentation */
   docUrl?: string
   docId?: string
+  extDocId?: string
+  extDocUrl?: string
   deprecation?: Deprecation
   /** If this endpoint has a quirk that needs special attention, give a short explanation about it */
   esQuirk?: string
@@ -406,9 +410,11 @@ export class Endpoint {
   description: string
   docUrl: string
   docId?: string
+  extDocId?: string
+  extDocUrl?: string
   deprecation?: Deprecation
   availability: Availabilities
-
+  docTag?: string
   /**
    * If the request value is `null` it means that there is not yet a
    * request type definition for this endpoint.
diff --git a/compiler/src/model/utils.ts b/compiler/src/model/utils.ts
index e330242eef..769de32bfc 100644
--- a/compiler/src/model/utils.ts
+++ b/compiler/src/model/utils.ts
@@ -625,7 +625,7 @@ export function hoistRequestAnnotations (
   request: model.Request, jsDocs: JSDoc[], mappings: Record<string, model.Endpoint>, response: model.TypeName | null
 ): void {
   const knownRequestAnnotations = [
-    'rest_spec_name', 'behavior', 'class_serializer', 'index_privileges', 'cluster_privileges', 'doc_id', 'availability'
+    'rest_spec_name', 'behavior', 'class_serializer', 'index_privileges', 'cluster_privileges', 'doc_id', 'availability', 'doc_tag', 'ext_doc_id'
   ]
   // in most of the cases the jsDocs comes in a single block,
   // but it can happen that the user defines multiple single line jsDoc.
@@ -685,6 +685,12 @@ export function hoistRequestAnnotations (
       const docUrl = docIds.find(entry => entry[0] === value.trim())
       assert(jsDocs, docUrl != null, `The @doc_id '${value.trim()}' is not present in _doc_ids/table.csv`)
       endpoint.docUrl = docUrl[1].replace(/\r/g, '')
+    } else if (tag === 'ext_doc_id') {
+      assert(jsDocs, value.trim() !== '', `Request ${request.name.name}'s @ext_doc_id cannot be empty`)
+      endpoint.extDocId = value.trim()
+      const docUrl = docIds.find(entry => entry[0] === value.trim())
+      assert(jsDocs, docUrl != null, `The @ext_doc_id '${value.trim()}' is not present in _doc_ids/table.csv`)
+      endpoint.extDocUrl = docUrl[1].replace(/\r/g, '')
     } else if (tag === 'availability') {
       // The @availability jsTag is different than most because it allows
       // multiple values within the same docstring, hence needing to parse
@@ -696,6 +702,9 @@ export function hoistRequestAnnotations (
       for (const [availabilityName, availabilityValue] of Object.entries(availabilities)) {
         endpoint.availability[availabilityName] = availabilityValue
       }
+    } else if (tag === 'doc_tag') {
+      assert(jsDocs, value.trim() !== '', `Request ${request.name.name}'s @doc_tag cannot be empty`)
+      endpoint.docTag = value.trim()
     } else {
       assert(jsDocs, false, `Unhandled tag: '${tag}' with value: '${value}' on request ${request.name.name}`)
     }
@@ -710,7 +719,7 @@ export function hoistTypeAnnotations (type: model.TypeDefinition, jsDocs: JSDoc[
   assert(jsDocs, jsDocs.length < 2, 'Use a single multiline jsDoc block instead of multiple single line blocks')
 
   const validTags = ['class_serializer', 'doc_url', 'doc_id', 'behavior', 'variants', 'variant', 'shortcut_property',
-    'codegen_names', 'non_exhaustive', 'es_quirk', 'behavior_meta']
+    'codegen_names', 'non_exhaustive', 'es_quirk', 'behavior_meta', 'ext_doc_id']
   const tags = parseJsDocTags(jsDocs)
   if (jsDocs.length === 1) {
     const description = jsDocs[0].getDescription()
@@ -739,6 +748,12 @@ export function hoistTypeAnnotations (type: model.TypeDefinition, jsDocs: JSDoc[
       const docUrl = docIds.find(entry => entry[0] === value.trim())
       assert(jsDocs, docUrl != null, `The @doc_id '${value.trim()}' is not present in _doc_ids/table.csv`)
       type.docUrl = docUrl[1].replace(/\r/g, '')
+    } else if (tag === 'ext_doc_id') {
+      assert(jsDocs, value.trim() !== '', `Type ${type.name.namespace}.${type.name.name}'s @ext_doc_id cannot be empty`)
+      type.extDocId = value.trim()
+      const docUrl = docIds.find(entry => entry[0] === value.trim())
+      assert(jsDocs, docUrl != null, `The @ext_doc_id '${value.trim()}' is not present in _doc_ids/table.csv`)
+      type.extDocUrl = docUrl[1].replace(/\r/g, '')
     } else if (tag === 'codegen_names') {
       type.codegenNames = parseCommaSeparated(value)
       assert(jsDocs,
@@ -761,7 +776,7 @@ function hoistPropertyAnnotations (property: model.Property, jsDocs: JSDoc[]): v
   assert(jsDocs, jsDocs.length < 2, 'Use a single multiline jsDoc block instead of multiple single line blocks')
 
   const validTags = ['prop_serializer', 'doc_url', 'aliases', 'codegen_name', 'server_default',
-    'variant', 'doc_id', 'es_quirk', 'availability']
+    'variant', 'doc_id', 'es_quirk', 'availability', 'ext_doc_id']
   const tags = parseJsDocTags(jsDocs)
   if (jsDocs.length === 1) {
     const description = jsDocs[0].getDescription()
@@ -805,6 +820,13 @@ function hoistPropertyAnnotations (property: model.Property, jsDocs: JSDoc[]): v
       if (docUrl != null) {
         property.docUrl = docUrl[1].replace(/\r/g, '')
       }
+    } else if (tag === 'ext_doc_id') {
+      assert(jsDocs, value.trim() !== '', `Property ${property.name}'s @ext_doc_id is cannot be empty`)
+      property.extDocId = value
+      const docUrl = docIds.find(entry => entry[0] === value)
+      if (docUrl != null) {
+        property.extDocUrl = docUrl[1].replace(/\r/g, '')
+      }
     } else if (tag === 'server_default') {
       assert(jsDocs, property.type.kind === 'instance_of' || property.type.kind === 'union_of' || property.type.kind === 'array_of', `Default values can only be configured for instance_of or union_of types, you are using ${property.type.kind}`)
       assert(jsDocs, !property.required, 'Default values can only be specified on optional properties')
diff --git a/docs/doc-comments-guide.md b/docs/doc-comments-guide.md
index c8174e8ef9..d801c7a8dd 100644
--- a/docs/doc-comments-guide.md
+++ b/docs/doc-comments-guide.md
@@ -58,7 +58,7 @@ export interface Request extends RequestBase {
 ([original source code](https://github.com/elastic/elasticsearch-specification/blob/main/specification/_global/rank_eval/RankEvalRequest.ts))
 
 For more information about the tags in this example (and other common tags such
-as `@deprecated` and `@doc_id`), refer to the [Modeling Guide](https://github.com/elastic/elasticsearch-specification/blob/main/docs/modeling-guide.md#additional-information).
+as `@deprecated` and `@ext_doc_id`), refer to the [Modeling Guide](https://github.com/elastic/elasticsearch-specification/blob/main/docs/modeling-guide.md#additional-information).
 
 ## Markup language
 
@@ -76,9 +76,9 @@ GFM also has implementations in most languages, meaning that code generators wil
 
 **Doc comments are reference material**: they should be as succinct as possible while capturing all the necessary information to use the elements they're documenting. Remember that they will often show up in small IDE autocompletion popups!
 
-In particular, doc comments are not the right place for tutorials or examples, which should be in dedicated documentation pages. These pages can of course be linked from the doc comments.
+In particular, doc comments are not the right place for tutorials or extended examples, which should be in dedicated documentation pages. To reduce the risk of broken links, use `@ext_doc_id` to implement a link to additional documentation. 
 
-API endpoints will also have a `@doc_url` JSDoc tag that links to that API's detailed documentation page.
+API endpoints can also have `@doc_id` or `@doc_url` JSDoc tags that enable clients to link to the API docs, for example.
 
 ### Multi-paragraph doc comments
 
diff --git a/docs/modeling-guide.md b/docs/modeling-guide.md
index 123a844acb..0a9246759e 100644
--- a/docs/modeling-guide.md
+++ b/docs/modeling-guide.md
@@ -598,10 +598,53 @@ class Foo {
 }
 ```
 
+#### `@doc_id`
+
+An identifier that can be used for generating the doc url in clients.
+The unique id/url pair must exist in `specification/_doc_ids/table.csv`.
+NOTE: This link is *not* included in the OpenAPI output.
+
+```ts
+/**
+ * @rest_spec_name api
+ * @doc_id foobar
+ */
+class Request {
+  ...
+}
+```
+
+```csv
+foobar,/guide/en/example
+```
+
+#### `@ext_doc_id`
+
+An identifier for a link.
+The unique id/url pair must exist in `specification/_doc_ids/table.csv`.
+NOTE: This link is included in the OpenAPI output.
+
+```ts
+/**
+ * @variants container
+ * @non_exhaustive
+ * @ext_doc_id query-dsl
+ */
+export class QueryContainer {
+  ...
+}
+```
+
+```csv
+query-dsl,/guide/en/example
+```
+
+
 #### `@doc_url`
 
 The documentation url for the parameter or definition.
-If possible, use `@doc_id`.
+To reduce the risk of broken links, use `@doc_id` instead.
+NOTE: This link is *not* included in the OpenAPI output.
 
 ```ts
 class Foo {
@@ -612,24 +655,23 @@ class Foo {
 }
 ```
 
-#### `@doc_id`
+#### `@doc_tag`
 
-The documentation id that can be used for generating the doc url.
-You must add the id/url pair in `specification/_doc_ids/table.csv`.
+An OpenAPI tag that is used to group similar endpoints in the API documentation.
+If it is absent, by default the tag is derived from the first part of the namespace.
 
 ```ts
 /**
  * @rest_spec_name api
- * @doc_id foobar
+ * @doc_tag my tag
  */
 class Request {
   ...
 }
 ```
 
-```csv
-foobar,/guide/en/example
-```
+NOTE: In the OpenAPI specification, operations can have multiple tags. However, we currently support only a single tag.
+
 
 #### `@codegen_name`
 
diff --git a/docs/overlays/elasticsearch-openapi-overlays.yaml b/docs/overlays/elasticsearch-openapi-overlays.yaml
index 6e33dbec30..f69a3d5d03 100644
--- a/docs/overlays/elasticsearch-openapi-overlays.yaml
+++ b/docs/overlays/elasticsearch-openapi-overlays.yaml
@@ -1,17 +1,20 @@
-# overlays.yaml
+# Overlays that are specific to the Elasticsearch OpenAPI document
 overlay: 1.0.0
 info:
   title: Overlays for the Elasticsearch OpenAPI document
   version: 0.0.1
 actions:
+# Add document info details
   - target: '$.info'
     description: Add a document description and feedback link
     update:
       title: Elasticsearch API
       description: >
+        Elasticsearch provides REST APIs that are used by the UI components and can be called directly to configure and access Elasticsearch features.
+        
         ## Documentation source and versions
         
-        This documentation is derived from the `main` branch of the [elasticsearch-specification](https://github.com/elastic/elasticsearch-specification) repository.
+        This documentation is derived from the `8.16` branch of the [elasticsearch-specification](https://github.com/elastic/elasticsearch-specification) repository.
         It is provided under license [Attribution-NonCommercial-NoDerivatives 4.0 International](https://creativecommons.org/licenses/by-nc-nd/4.0/).
       x-doc-license:
         name: Attribution-NonCommercial-NoDerivatives 4.0 International
@@ -19,3 +22,333 @@ actions:
       x-feedbackLink:
         label: Feedback
         url: https://github.com/elastic/docs-content/issues/new?assignees=&labels=feedback%2Ccommunity&projects=&template=api-feedback.yaml&title=%5BFeedback%5D%3A+
+# Add security details
+  - target: '$.components'
+    description: Add securitySchemes
+    update:
+        securitySchemes:
+          apiKeyAuth:
+            in: header
+            name: Authorization
+            type: apiKey
+            description: |
+              Elasticsearch APIs support key-based authentication.
+              You must create an API key and use the encoded value in the request header.
+              For example:
+
+              
+              ```
+              curl -X GET "${ES_URL}/_cat/indices?v=true" \
+                -H "Authorization: ApiKey ${API_KEY}"
+              ```
+              
+              To get API keys, use the `/_security/api_key` APIs.
+          basicAuth:
+            scheme: basic
+            type: http
+          bearerAuth:
+            scheme: bearer
+            type: http
+            description: |
+              Elasticsearch APIs support the use of bearer tokens in the `Authorization` HTTP header to authenticate with the API.
+              For examples, refer to [Token-based authentication services](https://www.elastic.co/guide/en/elasticsearch/reference/current/token-authentication-services.html)
+  - target: '$'
+    description: Add document security
+    update:
+      security:
+        - apiKeyAuth: []
+        - basicAuth: []
+        - bearerAuth: []
+# Examples that apply only to the Elasticsearch OpenAPI document
+  - target: "$.paths['/_features']['get']"
+    description: "Add examples for get features operation"
+    update:
+      responses:
+        200:
+          content:
+            application/json:
+              examples:
+                getFeaturesResponseExample1:
+                  $ref: "../../specification/features/get_features/FeaturesApiResponseExample1.json"
+  - target: "$.paths['/_features/_reset']['post']"
+    description: "Add examples for reset features operation"
+    update:
+      responses:
+        200:
+          content:
+            application/json:
+              examples:
+                resetFeaturesResponseExample1:
+                  $ref: "../../specification/features/reset_features/ResetFeaturesResponseExample1.json"
+  - target: "$.components['requestBodies']['cluster.allocation_explain']"
+    description: "Add examples for cluster allocation explain operation"
+    update: 
+      content: 
+        application/json: 
+          examples: 
+            clusterAllocationExplainRequestExample1: 
+              $ref: "../../specification/cluster/allocation_explain/clusterAllocationExplainRequestExample1.json"
+  - target: "$.components['responses']['cluster.health#200']"
+    description: "Add examples for cluster health operation"
+    update: 
+      content:
+        application/json:
+          examples:
+            clusterHealthResponseExample1:
+              $ref: "../../specification/cluster/health/clusterHealthResponseExample1.json"
+  - target: "$.paths['/_cluster/settings']['put']"
+    description: "Add examples for cluster update settings operation"
+    update: 
+      requestBody: 
+        content: 
+          application/json: 
+            examples: 
+              clusterPutSettingsRequestExample1: 
+                $ref: "../../specification/cluster/put_settings/clusterPutSettingsRequestExample1.json"
+  - target: "$.paths['/_cluster/reroute']['post']"
+    description: "Add examples for cluster reroute operation"
+    update: 
+      requestBody: 
+        content: 
+          application/json: 
+            examples: 
+              clusterRerouteRequestExample1: 
+                $ref: "../../specification/cluster/reroute/clusterRerouteRequestExample1.json"
+  - target: "$.components['requestBodies']['nodes.reload_secure_settings']"
+    description: "Add examples for nodes reload secure settings operation"
+    update: 
+      content: 
+        application/json: 
+          examples: 
+            clusterNodesReloadSecureSettingsRequestExample1: 
+              $ref: "../../specification/nodes/reload_secure_settings/clusterNodesReloadSecureSettingsRequestExample1.json"
+  - target: "$.components['responses']['nodes.reload_secure_settings#200']"
+    description: "Add response examples for nodes reload secure settings operation"
+    update: 
+      content:
+        application/json:
+          examples:
+            clusterNodesReloadSecureSettingsResponseExample1:
+              $ref: "../../specification/nodes/reload_secure_settings/clusterNodesReloadSecureSettingsResponseExample1.json"
+  - target: "$.paths['/_tasks']['get']"
+    description: "Add examples for task management operation"
+    update:
+      responses:
+        200:
+          content:
+            application/json:
+              examples:
+                getTasksResponseExample1:
+                  $ref: "../../specification/tasks/get/getTasksResponseExample1.json"
+  - target: "$.components['responses']['nodes.info#200']"
+    description: "Add response examples for nodes info"
+    update: 
+      content:
+        application/json:
+          examples:
+            nodesInfoResponseExample1:
+              $ref: "../../specification/nodes/info/nodesInfoResponseExample1.yaml"
+  - target: "$.paths['/_ilm/policy/{policy}']['delete']"
+    description: "Add examples for delete lifecycle policy operation"
+    update:
+      responses:
+        200:
+          content:
+            application/json:
+              examples:
+                deleteLifecycleResponseExample1:
+                  $ref: "../../specification/ilm/delete_lifecycle/DeleteLifecycleResponseExample1.json" 
+  - target: "$.paths['/_ilm/policy/{policy}']['put']"
+    description: "Add examples for create a lifecycle operation"
+    update:
+      update: 
+      requestBody: 
+        content: 
+          application/json: 
+            examples:
+              putLifecycleRequestExample1: 
+                $ref: "../../specification/ilm/put_lifecycle/PutLifecycleRequestExample1.json"
+      responses:
+        200:
+          content:
+            application/json:
+              examples:
+                putLifecycleResponseExample1:
+                  $ref: "../../specification/ilm/put_lifecycle/PutLifecycleResponseExample1.json"  
+  - target: "$.components['responses']['ilm.get_lifecycle#200']"
+    description: "Add examples for get lifecycle policy operation"
+    update: 
+      content:
+        application/json:
+          examples:
+            getLifecycleResponseExample1:
+              $ref: "../../specification/ilm/get_lifecycle/GetLifecycleResponseExample1.json"
+  - target: "$.paths['/_ilm/migrate_to_data_tiers']['post']"
+    description: "Add examples for migrate to data tiers routing operation"
+    update:
+      update: 
+      requestBody: 
+        content: 
+          application/json: 
+            examples: 
+              migrateToDataTiersRequestExample1: 
+                $ref: "../../specification/ilm/migrate_to_data_tiers/MigrateToDataTiersRequestExample1.json"
+      responses:
+        200:
+          content:
+            application/json:
+              examples:
+                migrateToDataTiersResponseExample1:
+                  $ref: "../../specification/ilm/migrate_to_data_tiers/MigrateToDataTiersResponseExample1.json"
+  - target: "$.paths['/_ilm/move/{index}']['post']"
+    description: "Add examples for move to lifecycle step operation"
+    update:
+      update: 
+      requestBody: 
+        content: 
+          application/json: 
+            examples:
+              moveToStepRequestExample1: 
+                $ref: "../../specification/ilm/move_to_step/MoveToStepRequestExample1.json"
+      responses:
+        200:
+          content:
+            application/json:
+              examples:
+                moveToStepResponseExample1:
+                  $ref: "../../specification/ilm/move_to_step/MoveToStepResponseExample1.json"
+  - target: "$.paths['/_ilm/start']['post']"
+    description: "Add examples for start index lifecycle management operation"
+    update:
+      responses:
+        200:
+          content:
+            application/json:
+              examples:
+                startILMResponseExample1:
+                  $ref: "../../specification/ilm/start/StartILMResponseExample1.json"
+  - target: "$.paths['/_ilm/stop']['post']"
+    description: "Add examples for stop index lifecycle management operation"
+    update:
+      responses:
+        200:
+          content:
+            application/json:
+              examples:
+                stopILMResponseExample1:
+                  $ref: "../../specification/ilm/stop/stopILMResponseExample1.json"
+  - target: "$.paths['/_ilm/status']['get']"
+    description: "Add examples for get index lifecycle management status operation"
+    update:
+      responses:
+        200:
+          content:
+            application/json:
+              examples:
+                getILMStatusResponseExample1:
+                  $ref: "../../specification/ilm/get_status/GetILMStatusResponseExample1.json"
+  - target: "$.paths['/{index}/_ilm/explain']['get']"
+    description: "Add examples for explain lifecycle operation"
+    update:
+      responses:
+        200:
+          content:
+            application/json:
+              examples:
+                explainLifecycleResponseExample1:
+                  $ref: "../../specification/ilm/explain_lifecycle/ExplainLifecycleResponseExample1.json"
+  - target: "$.paths['/{index}/_ilm/remove']['post']"
+    description: "Add examples for remove policy from index operation"
+    update:
+      responses:
+        200:
+          content:
+            application/json:
+              examples:
+                removePolicyResponseExample1:
+                  $ref: "../../specification/ilm/remove_policy/RemovePolicyResponseExample1.json"
+  - target: "$.components['requestBodies']['indices.clone']"
+    description: "Add examples for clone index request"
+    update: 
+      content: 
+        application/json: 
+          examples: 
+            indicesCloneRequestExample1: 
+              $ref: "../../specification/indices/clone/indicesCloneRequestExample1.yaml"
+  - target: "$.paths['/{index}/_close']['post']"
+    description: "Add examples for close index response"
+    update:
+      responses:
+        200:
+          content:
+            application/json:
+              examples:
+                indicesCloseResponseExample1:
+                  $ref: "../../specification/indices/close/indicesCloseResponseExample1.yaml"
+  - target: "$.components['responses']['indices.data_streams_stats#200']"
+    description: "Add example for data stream stats response"
+    update: 
+      content:
+        application/json:
+          examples:
+            indicesDataStreamStatsResponseExample1:
+              $ref: "../../specification/indices/data_streams_stats/indicesDataStreamStatsResponseExample1.yaml"
+  - target: "$.paths['/{index}/_open']['post']"
+    description: "Add examples for open index response"
+    update:
+      responses:
+        200:
+          content:
+            application/json:
+              examples:
+                indicesOpenResponseExample1:
+                  $ref: "../../specification/indices/open/indicesOpenResponseExample1.yaml"
+  - target: "$.paths['/_autoscaling/policy/{name}']['delete']"
+    description: "Add examples for delete autoscaling policy response"
+    update:
+      responses:
+        200:
+          content:
+            application/json:
+              examples:
+                deleteAutoscalingPolicyResponseExample1:
+                  $ref: "../../specification/autoscaling/delete_autoscaling_policy/autoscalingApisDeleteAutoscalingPolicyResponseExample1.yaml"
+  - target: "$.paths['/_autoscaling/capacity']['get']"
+    description: "Add examples for get autoscaling capacity response"
+    update:
+      responses:
+        200:
+          content:
+            application/json:
+              examples:
+                getAutoscalingCapacityResponseExample1:
+                  $ref: "../../specification/autoscaling/get_autoscaling_capacity/autoscalingApisGetAutoscalingCapacityResponseExample1.yaml"
+  - target: "$.paths['/_autoscaling/policy/{name}']['get']"
+    description: "Add examples for get autoscaling policy response"
+    update:
+      responses:
+        200:
+          content:
+            application/json:
+              examples:
+                getAutoscalingPolicyResponseExample1:
+                  $ref: "../../specification/autoscaling/get_autoscaling_policy/autoscalingApisGetAutoscalingPolicyResponseExample1.yaml"
+  - target: "$.paths['/_autoscaling/policy/{name}']['put']"
+    description: "Add examples for create autoscaling policy operation"
+    update:
+      update: 
+      requestBody: 
+        content: 
+          application/json: 
+            examples:
+              createAutoscalingPolicyRequestExample1: 
+                $ref: "../../specification/autoscaling/put_autoscaling_policy/autoscalingApisPutAutoscalingPolicyRequestExample1.yaml"
+              createAutoscalingPolicyRequestExample2: 
+                $ref: "../../specification/autoscaling/put_autoscaling_policy/autoscalingApisPutAutoscalingPolicyRequestExample2.yaml"
+      responses:
+        200:
+          content:
+            application/json:
+              examples:
+                createAutoscalingPolicyResponseExample1:
+                  $ref: "../../specification/autoscaling/put_autoscaling_policy/autoscalingApisPutAutoscalingPolicyResponseExample1.yaml"
diff --git a/docs/overlays/elasticsearch-serverless-openapi-overlays.yaml b/docs/overlays/elasticsearch-serverless-openapi-overlays.yaml
deleted file mode 100644
index ff8a013400..0000000000
--- a/docs/overlays/elasticsearch-serverless-openapi-overlays.yaml
+++ /dev/null
@@ -1,30 +0,0 @@
-# overlays.yaml
-overlay: 1.0.0
-info:
-  title: Overlays for the Elasticsearch Serverless OpenAPI document
-  version: 0.0.1
-actions:
-  - target: '$.info'
-    description: Add a document description and feedback link
-    update:
-      title: Elasticsearch Serverless API
-      description: >
-        **Technical preview**  
-        This functionality is in technical preview and may be changed or removed in a future release.
-        Elastic will work to fix any issues, but features in technical preview are not subject to the support SLA of official GA features.
-
-        ## Documentation source and versions
-        
-        This documentation is derived from the `main` branch of the [elasticsearch-specification](https://github.com/elastic/elasticsearch-specification) repository.
-        It is provided under license [Attribution-NonCommercial-NoDerivatives 4.0 International](https://creativecommons.org/licenses/by-nc-nd/4.0/).
-      x-doc-license:
-        name: Attribution-NonCommercial-NoDerivatives 4.0 International
-        url: 'https://creativecommons.org/licenses/by-nc-nd/4.0/'
-      x-feedbackLink:
-        label: Feedback
-        url: https://github.com/elastic/docs-content/issues/new?assignees=&labels=feedback%2Ccommunity&projects=&template=api-feedback.yaml&title=%5BFeedback%5D%3A+
-  # Temporarily mark all operations as beta
-  - target: "$.paths[*]['get','put','post','delete','options','head','patch','trace']"
-    description: Add x-beta
-    update:
-      x-beta: true
\ No newline at end of file
diff --git a/docs/overlays/elasticsearch-shared-example-overlays.yaml b/docs/overlays/elasticsearch-shared-example-overlays.yaml
deleted file mode 100644
index 033b8fb9b0..0000000000
--- a/docs/overlays/elasticsearch-shared-example-overlays.yaml
+++ /dev/null
@@ -1,72 +0,0 @@
-# overlays.yaml
-overlay: 1.0.0
-info:
-  title: Overlays for examples that apply to both Elasticsearcb and Elasticsearch Serverless OpenAPI documents
-  version: 0.0.1
-actions:
-  - target: "$.components['requestBodies']['async_search.submit']"
-    description: "Add example for asynch search submit request"
-    update: 
-      content:
-        application/json:
-          examples:
-            asyncSearchSubmitResponseExample1:
-              $ref: "../../specification/async_search/submit/AsyncSearchSubmitRequestExample1.json"
-  - target: "$.components['responses']['async_search.submit#200']"
-    description: "Add example for asynch search submit response"
-    update: 
-      content:
-        application/json:
-          examples:
-            asyncSearchSubmitResponseExample1:
-              $ref: "../../specification/async_search/submit/AsyncSearchSubmitResponseExample1.json"
-  - target: "$.paths['/_transform/{transform_id}']['put']"
-    description: "Add examples for create transform operation"
-    update: 
-      requestBody: 
-        content: 
-          application/json: 
-            examples: 
-              createTransformRequestExample1: 
-                $ref: "../../specification/transform/put_transform/PutTransformRequestExample1.json"
-              createTransformRequestExample2:
-                $ref: "../../specification/transform/put_transform/PutTransformRequestExample2.json"
-      responses:
-        200:
-          content:
-            application/json:
-              examples:
-                createTransformResponseExample1:
-                  $ref: "../../specification/transform/put_transform/PutTransformResponseExample1.json"
-  - target: "$.components['requestBodies']['transform.preview_transform']"
-    description: "Add examples for preview transform operation"
-    update: 
-      content: 
-        application/json: 
-          examples: 
-            previewTransformRequestExample1: 
-              $ref: "../../specification/transform/preview_transform/PreviewTransformRequestExample1.json"
-  - target: "$.components['reponses']['transform.preview_transform#200']"
-    description: "Add examples for preview transform operation"
-    update: 
-      content:
-        application/json:
-          examples:
-            previewTransformResponseExample1:
-              $ref: "../../specification/transform/preview_transform/PreviewTransformResponseExample1.json"
-  - target: "$.paths['/_transform/{transform_id}/_update']['post']"
-    description: "Add examples for update transform operation"
-    update: 
-      requestBody: 
-        content: 
-          application/json: 
-            examples: 
-              updateTransformRequestExample1: 
-                $ref: "../../specification/transform/update_transform/UpdateTransformRequestExample1.json"
-      responses:
-        200:
-          content:
-            application/json:
-              examples:
-                updateTransformResponseExample1:
-                  $ref: "../../specification/transform/update_transform/UpdateTransformResponseExample1.json"
\ No newline at end of file
diff --git a/docs/overlays/elasticsearch-shared-overlays.yaml b/docs/overlays/elasticsearch-shared-overlays.yaml
new file mode 100644
index 0000000000..57d55d4da8
--- /dev/null
+++ b/docs/overlays/elasticsearch-shared-overlays.yaml
@@ -0,0 +1,1260 @@
+# Overlays that are applicable to both Elasticsearch and Elasticsearch Serverless OpenAPI documents
+overlay: 1.0.0
+info:
+  title: Overlays for changes that apply to both Elasticsearch and Elasticsearch Serverless OpenAPI documents
+  version: 0.0.1
+actions:
+# Add an alphabetically sorted list of tags
+  - target: '$'
+    description: Add document-level tags sorted by display name
+    update:
+      tags:
+      # A
+        - name: autoscaling
+          x-displayName: Autoscaling
+      # B
+        - name: analytics
+          x-displayName: Behavioral analytics
+      # C 
+        - name: cat
+          x-displayName: Compact and aligned text (CAT)
+          description: >
+            The compact and aligned text (CAT) APIs aim are intended only for human consumption using the Kibana console or command line.
+            They are not intended for use by applications.
+            For application consumption, it's recommend to use a corresponding JSON API.
+            
+            All the cat commands accept a query string parameter `help` to see all the headers and info they provide, and the `/_cat` command alone lists all the available commands.
+        - name: cluster
+          x-displayName: Cluster
+        - name: health_report
+          x-displayName: Cluster - Health
+        - name: connector
+          x-displayName: Connector
+          description: >
+            The connector and sync jobs APIs provide a convenient way to create and manage Elastic connectors and sync jobs in an internal index.
+            
+            Connectors are Elasticsearch integrations that bring content from third-party data sources, which can be deployed on Elastic Cloud or hosted on your own infrastructure:
+            
+            * Elastic managed connectors (Native connectors) are a managed service on Elastic Cloud
+            
+            * Self-managed connectors (Connector clients) are self-managed on your infrastructure.
+            
+            
+            This API provides an alternative to relying solely on Kibana UI for connector and sync job management. The API comes with a set of validations and assertions to ensure that the state representation in the internal index remains valid.
+          externalDocs:
+            url: https://www.elastic.co/guide/en/elasticsearch/reference/8.16/es-connectors-tutorial-api.html
+            description: Connector API tutorial
+        - name: ccr
+          x-displayName: Cross-cluster replication
+      # D
+        - name: data stream
+          x-displayName: Data stream
+          externalDocs:
+            description: Data stream overview 
+            url: https://www.elastic.co/guide/en/elasticsearch/reference/8.16/data-streams.html
+        - name: document
+          x-displayName: Document
+          externalDocs:
+            description: Reading and writing documents
+            url: https://www.elastic.co/guide/en/elasticsearch/reference/8.16/docs-replication.html
+      # E  
+        - name: enrich
+          x-displayName: Enrich
+        - name: eql
+          x-displayName: EQL
+          description: >
+            Event Query Language (EQL) is a query language for event-based time series data, such as logs, metrics, and traces.
+          externalDocs:
+            url: https://www.elastic.co/guide/en/elasticsearch/reference/8.16/eql.html
+            description: EQL search
+        - name: esql
+          x-displayName: ES|QL
+          description: >
+            The Elasticsearch Query Language (ES|QL) provides a powerful way to filter, transform, and analyze data stored in Elasticsearch, and in the future in other runtimes.
+          externalDocs:
+            url: https://www.elastic.co/guide/en/elasticsearch/reference/8.16/esql.html
+            description: ES|QL overview and tutorials
+      # F
+        - name: features
+          description: The feature APIs enable you to introspect and manage features provided by Elasticsearch and Elasticsearch plugins.
+          x-displayName: Features
+        - name: fleet
+          x-displayName: Fleet
+      # G
+        - name: graph
+          x-displayName: Graph explore
+          description: >
+            The graph explore API enables you to extract and summarize information about the documents and terms in an Elasticsearch data stream or index.
+          externalDocs:
+            url: https://www.elastic.co/guide/en/kibana/8.16/xpack-graph.html
+            description: Getting started with Graph
+      # I
+        - name: indices
+          x-displayName: Index
+          description: >
+            Index APIs enable you to manage individual indices, index settings, aliases, mappings, and index templates.
+        - name: ilm
+          x-displayName: Index lifecycle management
+          externalDocs:
+            url: https://www.elastic.co/guide/en/elasticsearch/reference/8.16/index-lifecycle-management.html
+            description: Manage the index lifecycle
+        - name: inference
+          x-displayName: Inference
+          description: >
+            Inference APIs enable you to use certain services, such as built-in machine learning models (ELSER, E5), models uploaded through Eland, Cohere, OpenAI, Azure, Google AI Studio or Hugging Face.
+            For built-in models and models uploaded through Eland, the inference APIs offer an alternative way to use and manage trained models.
+            However, if you do not plan to use the inference APIs to use these models or if you want to use non-NLP models, use the machine learning trained model APIs.
+        - name: info
+          x-displayName: Info
+        - name: ingest
+          x-displayName: Ingest
+          description: Ingest APIs enable you to manage tasks and resources related to ingest pipelines and processors.
+      # L  
+        - name: license
+          x-displayName: Licensing
+          description: Licensing APIs enable you to manage your licenses.
+        - name: logstash
+          x-displayName: Logstash
+          description: >
+            Logstash APIs enable you to manage pipelines that are used by Logstash Central Management.
+          externalDocs:
+            url: https://www.elastic.co/guide/en/logstash/8.16/logstash-centralized-pipeline-management.html
+            description: Centralized pipeline management
+      # M
+        - name: ml
+          x-displayName: Machine learning
+        - name: ml anomaly
+          x-displayName: Machine learning anomaly detection
+          # description:
+          externalDocs:
+            url: https://www.elastic.co/guide/en/machine-learning/8.16/ml-ad-finding-anomalies.html
+            description: Finding anomalies
+        - name: ml data frame
+          x-displayName: Machine learning data frame analytics
+          # description:
+          externalDocs:
+            url: https://www.elastic.co/guide/en/machine-learning/8.16/ml-dfa-overview.html
+            description: Data frame analytics overview
+        - name: ml trained model
+          x-displayName: Machine learning trained model
+          # description:
+          externalDocs:
+            url: https://www.elastic.co/guide/en/machine-learning/8.16/ml-nlp-overview.html
+            description: Natural language processing overview
+        - name: migration
+          x-displayName: Migration
+        - name: monitoring
+          x-displayName: Monitoring
+      # N
+        - name: shutdown
+          x-displayName: Node lifecycle
+      # Q
+        - name: query_rules
+          x-displayName: Query rules
+          description: >
+            Query rules enable you to configure per-query rules that are applied at query time to queries that match the specific rule.
+            Query rules are organized into rulesets, collections of query rules that are matched against incoming queries.
+            Query rules are applied using the rule query.
+            
+            If a query matches one or more rules in the ruleset, the query is re-written to apply the rules before searching.
+            This allows pinning documents for only queries that match a specific term.
+          externalDocs:
+            url: https://www.elastic.co/guide/en/elasticsearch/reference/8.16/query-dsl-rule-query.html
+            description: Rule query
+      # R
+        - name: rollup
+          x-displayName: Rollup
+      # S
+        - name: script
+          x-displayName: Script
+        - name: search
+          x-displayName: Search
+        - name: search_application
+          x-displayName: Search application
+        - name: searchable_snapshots
+          x-displayName: Searchable snapshots
+        - name: security
+          x-displayName: Security
+        - name: snapshot
+          x-displayName: Snapshot and restore
+          description: >
+            Snapshot and restore APIs enable you to set up snapshot repositories, manage snapshot backups, and restore snapshots to a running cluster.
+          externalDocs:
+            url: https://www.elastic.co/guide/en/elasticsearch/reference/8.16/snapshot-restore.html
+            description: Snapshot and restore
+        - name: slm
+          x-displayName: Snapshot lifecycle management
+          description: >
+            Snapshot lifecycle management (SLM) APIs enable you to set up policies to automatically take snapshots and control how long they are retained.
+          externalDocs:
+            url: https://www.elastic.co/guide/en/elasticsearch/reference/8.16/snapshots-take-snapshot.html
+            description: Create a snapshot
+        - name: sql
+          x-displayName: SQL
+          description: >
+            Elasticsearch's SQL APIs enable you to run SQL queries on Elasticsearch indices and data streams.
+          externalDocs:
+            url: https://www.elastic.co/guide/en/elasticsearch/reference/8.16/xpack-sql.html
+            description: An overview and tutorials for the Elasticsearch SQL features
+        - name: synonyms
+          x-displayName: Synonyms
+          description: >
+            The synonyms management API provides a convenient way to define and manage synonyms in an internal system index.
+            Related synonyms can be grouped in a "synonyms set".
+            Create as many synonym sets as you need.
+      # T  
+        - name: tasks
+          x-displayName: Task management
+        - name: text_structure
+          x-displayName: Text structure
+        - name: transform
+          x-displayName: Transform
+      # U
+        - name: xpack
+          x-displayName: Usage
+      # W
+        - name: watcher
+          x-displayName: Watcher
+# Add x-model and/or abbreviate schemas that should point to other references
+  - target: "$.components['schemas']['_types.query_dsl:QueryContainer']"
+    description: Add x-model for the QueryContainer object
+    update:
+      x-model: true
+  - target: "$.components['schemas']['_types.analysis:CharFilter'].oneOf"
+    description: Remove existing oneOf definition for CharFilter
+    remove: true
+  - target: "$.components['schemas']['_types.analysis:CharFilter']"
+    description: Simplify CharFilter definition
+    update:
+      x-model: true
+  - target: "$.components['schemas']['_types.analysis:Tokenizer'].oneOf"
+    description: Remove existing oneOf definition for tokenizer
+    remove: true
+  - target: "$.components['schemas']['_types.analysis:Tokenizer']"
+    description: Simplify tokenizer definition
+    update:
+      x-model: true
+  - target: "$.components['schemas']['_types.analysis:TokenFilter'].oneOf"
+    description: Remove existing oneOf definition for tokenfilter
+    remove: true
+  - target: "$.components['schemas']['_types.analysis:TokenFilter']"
+    description: Simplify tokenfilter definition
+    update:
+      x-model: true
+  - target: "$.components['schemas']['security._types:RoleTemplateScript']"
+    description: Add x-model where recommended by Bump.sh
+    update:
+      x-model: true
+      externalDocs:
+        description: Templating a role query
+        url: https://www.elastic.co/guide/en/elasticsearch/reference/8.16/field-and-document-access-control.html#templating-role-query
+  - target: "$.components['schemas']['_types.query_dsl:DistanceFeatureQuery']"
+    description: Add x-model for distance feature query
+    update:
+      x-model: true
+  - target: "$.components['schemas']['_types.query_dsl:GeoShapeQuery']"
+    description: Add x-model
+    update:
+      x-model: true
+  - target: "$.components['schemas']['_types.query_dsl:GeoPolygonQuery']"
+    description: Add x-model
+    update:
+      x-model: true
+  - target: "$.components['schemas']['_types.query_dsl:GeoDistanceQuery']"
+    description: Add x-model
+    update:
+      x-model: true
+  - target: "$.components['schemas']['_types.query_dsl:DistanceFeatureQueryBase']"
+    description: Add x-model to distance feature query base
+    update:
+      x-model: true
+  - target: "$.components['schemas']['_types.query_dsl:GeoDistanceFeatureQuery']"
+    description: Add x-model to geo distance feature query 
+    update:
+      x-model: true
+  - target: "$.components['schemas']['_types.query_dsl:DistanceFeatureQueryBaseGeoLocationDistance']"
+    description: Add x-model to distance feature query base geolocation distance
+    update:
+      x-model: true
+  - target: "$.components['schemas']['_types.query_dsl:DateDistanceFeatureQuery']"
+    description: Add x-model
+    update:
+      x-model: true
+  - target: "$.components['schemas']['_types.query_dsl:DistanceFeatureQueryBaseDateMathDuration']"
+    description: Add x-model
+    update:
+      x-model: true
+  - target: "$.components['schemas']['_types.query_dsl:MoreLikeThisQuery']"
+    description: Add x-model for more like this query
+    update:
+      x-model: true
+  - target: "$.components['schemas']['_types.query_dsl:PercolateQuery']"
+    description: Add x-model for percolate query
+    update:
+      x-model: true
+  - target: "$.components['schemas']['_types.query_dsl:RankFeatureQuery']"
+    description: Add x-model for rank feature query
+    update:
+      x-model: true
+  - target: "$.components['schemas']['_types.query_dsl:ScriptQuery']"
+    description: Add x-model for script query
+    update:
+      x-model: true
+  - target: "$.components['schemas']['_types.query_dsl:ScriptScoreFunction']"
+    description: Add x-model for script score query
+    update:
+      x-model: true
+  - target: "$.components['schemas']['_types.query_dsl:ScriptScoreQuery']"
+    description: Add x-model for script score query
+    update:
+      x-model: true
+  - target: "$.components['schemas']['_types.query_dsl:WrapperQuery']"
+    description: Add x-model for wrapper query
+    update:
+      x-model: true
+  - target: "$.components['schemas']['_types.query_dsl:PinnedQuery']"
+    description: Add x-model for pinned query
+    update:
+      x-model: true
+  - target: "$.components['schemas']['_types.query_dsl:RuleQuery']"
+    description: Add x-model for rule query
+    update:
+      x-model: true
+  - target: "$.components['schemas']['_types.query_dsl:BoolQuery']"
+    description: Add x-model for boolean query
+    update:
+      x-model: true
+  - target: "$.components['schemas']['_types.query_dsl:QueryBase']"
+    description: Add x-model for query base
+    update:
+      x-model: true
+  - target: "$.components['schemas']['_types.query_dsl:BoostingQuery']"
+    description: Add x-model for query base
+    update:
+      x-model: true
+  - target: "$.components['schemas']['_types.query_dsl:CommonTermsQuery']"
+    description: Add x-model for common terms query
+    update:
+      x-model: true
+  - target: "$.components['schemas']['_types.query_dsl:CombinedFieldsQuery']"
+    description: Add x-model for combined fields query
+    update:
+      x-model: true
+  - target: "$.components['schemas']['_types.query_dsl:ConstantScoreQuery']"
+    description: Add x-model for constant score query
+    update:
+      x-model: true
+  - target: "$.components['schemas']['_types.query_dsl:DisMaxQuery']"
+    description: Add x-model to Disjunction max query
+    update:
+      x-model: true
+  - target: "$.components['schemas']['_types.query_dsl:UntypedDistanceFeatureQuery']"
+    description: Add x-model to untyped distance feature query
+    update:
+      x-model: true
+  - target: "$.components['schemas']['_types.query_dsl:ExistsQuery']"
+    description: Add x-model
+    update:
+      x-model: true
+  - target: "$.components['schemas']['_types.query_dsl:FunctionScoreQuery']"
+    description: Add x-model
+    update:
+      x-model: true
+  - target: "$.components['schemas']['_types.query_dsl:FunctionScoreContainer']"
+    description: Add x-model
+    update:
+      x-model: true
+  - target: "$.components['schemas']['_types.query_dsl:DecayFunction']"
+    description: Add x-model
+    update:
+      x-model: true
+  - target: "$.components['schemas']['_types.query_dsl:UntypedDecayFunction']"
+    description: Add x-model
+    update:
+      x-model: true
+  - target: "$.components['schemas']['_types.query_dsl:DecayFunctionBase']"
+    description: Add x-model
+    update:
+      x-model: true
+  - target: "$.components['schemas']['_types.query_dsl:MultiValueMode']"
+    description: Add x-model
+    update:
+      x-model: true
+  - target: "$.components['schemas']['_types.query_dsl:DateDecayFunction']"
+    description: Add x-model
+    update:
+      x-model: true
+  - target: "$.components['schemas']['_types.query_dsl:DecayFunctionBaseDateMathDuration']"
+    description: Add x-model
+    update:
+      x-model: true
+  - target: "$.components['schemas']['_types.query_dsl:NumericDecayFunction']"
+    description: Add x-model
+    update:
+      x-model: true
+  - target: "$.components['schemas']['_types.query_dsl:DecayFunctionBasedoubledouble']"
+    description: Add x-model
+    update:
+      x-model: true
+  - target: "$.components['schemas']['_types.query_dsl:GeoDecayFunction']"
+    description: Add x-model
+    update:
+      x-model: true
+  - target: "$.components['schemas']['_types.query_dsl:DecayFunctionBaseGeoLocationDistance']"
+    description: Add x-model
+    update:
+      x-model: true
+  - target: "$.components['schemas']['_types.query_dsl:FieldValueFactorScoreFunction']"
+    description: Add x-model
+    update:
+      x-model: true
+  - target: "$.components['schemas']['_types.query_dsl:RandomScoreFunction']"
+    description: Add x-model
+    update:
+      x-model: true
+  - target: "$.components['schemas']['_types.query_dsl:FuzzyQuery']"
+    description: Add x-model
+    update:
+      x-model: true
+  - target: "$.components['schemas']['_types.query_dsl:GeoBoundingBoxQuery']"
+    description: Add x-model
+    update:
+      x-model: true
+  - target: "$.components['schemas']['_types.query_dsl:HasChildQuery']"
+    description: Add x-model
+    update:
+      x-model: true
+  - target: "$.components['schemas']['_types.query_dsl:HasParentQuery']"
+    description: Add x-model
+    update:
+      x-model: true
+  - target: "$.components['schemas']['_types.query_dsl:ParentIdQuery']"
+    description: Add x-model
+    update:
+      x-model: true
+  - target: "$.components['schemas']['_types.query_dsl:IntervalsQuery']"
+    description: Add x-model
+    update:
+      x-model: true
+  - target: "$.components['schemas']['_types.query_dsl:IntervalsAllOf']"
+    description: Add x-model
+    update:
+      x-model: true
+  - target: "$.components['schemas']['_types.query_dsl:IntervalsContainer']"
+    description: Add x-model
+    update:
+      x-model: true
+  - target: "$.components['schemas']['_types.query_dsl:IntervalsAnyOf']"
+    description: Add x-model
+    update:
+      x-model: true
+  - target: "$.components['schemas']['_types.query_dsl:IntervalsFilter']"
+    description: Add x-model
+    update:
+      x-model: true
+  - target: "$.components['schemas']['_types.query_dsl:IntervalsFuzzy']"
+    description: Add x-model
+    update:
+      x-model: true
+  - target: "$.components['schemas']['_types.query_dsl:IntervalsMatch']"
+    description: Add x-model
+    update:
+      x-model: true
+  - target: "$.components['schemas']['_types.query_dsl:IntervalsPrefix']"
+    description: Add x-model
+    update:
+      x-model: true
+  - target: "$.components['schemas']['_types.query_dsl:IntervalsWildcard']"
+    description: Add x-model
+    update:
+      x-model: true
+  - target: "$.components['schemas']['_types.query_dsl:MatchQuery']"
+    description: Add x-model
+    update:
+      x-model: true
+  - target: "$.components['schemas']['_types.query_dsl:MatchBoolPrefixQuery']"
+    description: Add x-model
+    update:
+      x-model: true
+  - target: "$.components['schemas']['_types.query_dsl:MatchPhraseQuery']"
+    description: Add x-model
+    update:
+      x-model: true
+  - target: "$.components['schemas']['_types.query_dsl:MatchPhrasePrefixQuery']"
+    description: Add x-model
+    update:
+      x-model: true
+  - target: "$.components['schemas']['_types.query_dsl:MultiMatchQuery']"
+    description: Add x-model
+    update:
+      x-model: true
+  - target: "$.components['schemas']['_types.query_dsl:QueryStringQuery']"
+    description: Add x-model
+    update:
+      x-model: true
+  - target: "$.components['schemas']['_types.query_dsl:SimpleQueryStringQuery']"
+    description: Add x-model
+    update:
+      x-model: true
+  - target: "$.components['schemas']['_types.query_dsl:ShapeQuery']"
+    description: Add x-model
+    update:
+      x-model: true
+  - target: "$.components['schemas']['_types.query_dsl:NestedQuery']"
+    description: Add x-model
+    update:
+      x-model: true
+  - target: "$.components['schemas']['_types.query_dsl:MatchAllQuery']"
+    description: Add x-model
+    update:
+      x-model: true
+  - target: "$.components['schemas']['_types.query_dsl:MatchNoneQuery']"
+    description: Add x-model
+    update:
+      x-model: true
+  - target: "$.components['schemas']['_types.query_dsl:SpanContainingQuery']"
+    description: Add x-model
+    update:
+      x-model: true
+  - target: "$.components['schemas']['_types.query_dsl:SpanFieldMaskingQuery']"
+    description: Add x-model
+    update:
+      x-model: true
+  - target: "$.components['schemas']['_types.query_dsl:SpanFirstQuery']"
+    description: Add x-model
+    update:
+      x-model: true
+  - target: "$.components['schemas']['_types.query_dsl:SpanMultiTermQuery']"
+    description: Add x-model
+    update:
+      x-model: true
+  - target: "$.components['schemas']['_types.query_dsl:SpanNearQuery']"
+    description: Add x-model
+    update:
+      x-model: true
+  - target: "$.components['schemas']['_types.query_dsl:SpanNotQuery']"
+    description: Add x-model
+    update:
+      x-model: true
+  - target: "$.components['schemas']['_types.query_dsl:SpanOrQuery']"
+    description: Add x-model
+    update:
+      x-model: true
+  - target: "$.components['schemas']['_types.query_dsl:SpanTermQuery']"
+    description: Add x-model
+    update:
+      x-model: true
+  - target: "$.components['schemas']['_types.query_dsl:SpanWithinQuery']"
+    description: Add x-model
+    update:
+      x-model: true
+  - target: "$.components['schemas']['_types:KnnQuery']"
+    description: Add x-model
+    update:
+      x-model: true
+  - target: "$.components['schemas']['_types.query_dsl:SparseVectorQuery']"
+    description: Add x-model
+    update:
+      x-model: true
+  - target: "$.components['schemas']['_types.query_dsl:SemanticQuery']"
+    description: Add x-model
+    update:
+      x-model: true
+  - target: "$.components['schemas']['_types.query_dsl:TextExpansionQuery']"
+    description: Add x-model
+    update:
+      x-model: true
+  - target: "$.components['schemas']['_types.query_dsl:WeightedTokensQuery']"
+    description: Add x-model
+    update:
+      x-model: true
+  - target: "$.components['schemas']['_types.query_dsl:IdsQuery']"
+    description: Add x-model
+    update:
+      x-model: true
+  - target: "$.components['schemas']['_types.query_dsl:PrefixQuery']"
+    description: Add x-model
+    update:
+      x-model: true
+  - target: "$.components['schemas']['_types.query_dsl:RangeQuery']"
+    description: Add x-model
+    update:
+      x-model: true
+  - target: "$.components['schemas']['_types.query_dsl:RegexpQuery']"
+    description: Add x-model
+    update:
+      x-model: true
+  - target: "$.components['schemas']['_types.query_dsl:TermQuery']"
+    description: Add x-model
+    update:
+      x-model: true
+  - target: "$.components['schemas']['_types.query_dsl:TermsQuery']"
+    description: Add x-model
+    update:
+      x-model: true
+  - target: "$.components['schemas']['_types.query_dsl:TermsSetQuery']"
+    description: Add x-model
+    update:
+      x-model: true
+  - target: "$.components['schemas']['_types.query_dsl:WildcardQuery']"
+    description: Add x-model
+    update:
+      x-model: true
+# Abbreviate and annotate items that are not shown in Bump.sh due to depth limits
+  - target: "$.components['schemas']['_types.aggregations:Aggregate']"
+    description: Add x-model
+    update:
+      x-model: true
+  - target: "$.components['schemas']['_types.aggregations:CardinalityAggregate']"
+    description: Add x-model
+    update:
+      x-model: true
+  - target: "$.components['schemas']['_types.aggregations:HdrPercentilesAggregate']"
+    description: Add x-model
+    update:
+      x-model: true
+  - target: "$.components['schemas']['_types.aggregations:HdrPercentileRanksAggregate']"
+    description: Add x-model
+    update:
+      x-model: true
+  - target: "$.components['schemas']['_types.aggregations:PercentileRanksAggregation']"
+    description: Add x-model
+    update:
+      x-model: true
+  - target: "$.components['schemas']['_types.aggregations:TDigestPercentilesAggregate']"
+    description: Add x-model
+    update:
+      x-model: true
+  - target: "$.components['schemas']['_types.aggregations:TDigestPercentileRanksAggregate']"
+    description: Add x-model
+    update:
+      x-model: true
+  - target: "$.components['schemas']['_types.aggregations:PercentilesBucketAggregate']"
+    description: Add x-model
+    update:
+      x-model: true
+  - target: "$.components['schemas']['_types.aggregations:MedianAbsoluteDeviationAggregate']"
+    description: Add x-model
+    update:
+      x-model: true
+  - target: "$.components['schemas']['_types.aggregations:MinAggregate']"
+    description: Add x-model
+    update:
+      x-model: true
+  - target: "$.components['schemas']['_types.aggregations:MaxAggregate']"
+    description: Add x-model
+    update:
+      x-model: true
+  - target: "$.components['schemas']['_types.aggregations:SumAggregate']"
+    description: Add x-model
+    update:
+      x-model: true
+  - target: "$.components['schemas']['_types.aggregations:AvgAggregate']"
+    description: Add x-model
+    update:
+      x-model: true
+  - target: "$.components['schemas']['_types.aggregations:WeightedAvgAggregate']"
+    description: Add x-model
+    update:
+      x-model: true
+  - target: "$.components['schemas']['_types.aggregations:ValueCountAggregate']"
+    description: Add x-model
+    update:
+      x-model: true
+  - target: "$.components['schemas']['_types.aggregations:SimpleValueAggregate']"
+    description: Add x-model
+    update:
+      x-model: true
+  - target: "$.components['schemas']['_types.aggregations:DerivativeAggregate']"
+    description: Add x-model
+    update:
+      x-model: true
+  - target: "$.components['schemas']['_types.aggregations:BucketMetricValueAggregate']"
+    description: Add x-model
+    update:
+      x-model: true
+  - target: "$.components['schemas']['_types.aggregations:StatsAggregate']"
+    description: Add x-model
+    update:
+      x-model: true
+  - target: "$.components['schemas']['_types.aggregations:StatsBucketAggregate']"
+    description: Add x-model
+    update:
+      x-model: true
+  - target: "$.components['schemas']['_types.aggregations:ExtendedStatsAggregate']"
+    description: Add x-model
+    update:
+      x-model: true
+  - target: "$.components['schemas']['_types.aggregations:ExtendedStatsBucketAggregate']"
+    description: Add x-model
+    update:
+      x-model: true
+  - target: "$.components['schemas']['_types.aggregations:GeoBoundsAggregate']"
+    description: Add x-model
+    update:
+      x-model: true
+  - target: "$.components['schemas']['_types.aggregations:GeoCentroidAggregate']"
+    description: Add x-model
+    update:
+      x-model: true
+  - target: "$.components['schemas']['_types.aggregations:HistogramAggregate']"
+    description: Add x-model
+    update:
+      x-model: true
+  - target: "$.components['schemas']['_types.aggregations:DateHistogramAggregate']"
+    description: Add x-model
+    update:
+      x-model: true
+  - target: "$.components['schemas']['_types.aggregations:AutoDateHistogramAggregate']"
+    description: Add x-model
+    update:
+      x-model: true
+  - target: "$.components['schemas']['_types.aggregations:VariableWidthHistogramAggregate']"
+    description: Add x-model
+    update:
+      x-model: true
+  - target: "$.components['schemas']['_types.aggregations:StringTermsAggregate']"
+    description: Add x-model
+    update:
+      x-model: true
+  - target: "$.components['schemas']['_types.aggregations:LongTermsAggregate']"
+    description: Add x-model
+    update:
+      x-model: true
+  - target: "$.components['schemas']['_types.aggregations:DoubleTermsAggregate']"
+    description: Add x-model
+    update:
+      x-model: true
+  - target: "$.components['schemas']['_types.aggregations:UnmappedTermsAggregate']"
+    description: Add x-model
+    update:
+      x-model: true
+  - target: "$.components['schemas']['_types.aggregations:LongRareTermsAggregate']"
+    description: Add x-model
+    update:
+      x-model: true
+  - target: "$.components['schemas']['_types.aggregations:StringRareTermsAggregate']"
+    description: Add x-model
+    update:
+      x-model: true
+  - target: "$.components['schemas']['_types.aggregations:UnmappedRareTermsAggregate']"
+    description: Add x-model
+    update:
+      x-model: true
+  - target: "$.components['schemas']['_types.aggregations:MultiTermsAggregate']"
+    description: Add x-model
+    update:
+      x-model: true
+  - target: "$.components['schemas']['_types.aggregations:MissingAggregate']"
+    description: Add x-model
+    update:
+      x-model: true
+  - target: "$.components['schemas']['_types.aggregations:NestedAggregate']"
+    description: Add x-model
+    update:
+      x-model: true
+  - target: "$.components['schemas']['_types.aggregations:ReverseNestedAggregate']"
+    description: Add x-model
+    update:
+      x-model: true
+  - target: "$.components['schemas']['_types.aggregations:GlobalAggregate']"
+    description: Add x-model
+    update:
+      x-model: true
+  - target: "$.components['schemas']['_types.aggregations:FilterAggregate']"
+    description: Add x-model
+    update:
+      x-model: true
+  - target: "$.components['schemas']['_types.aggregations:ChildrenAggregate']"
+    description: Add x-model
+    update:
+      x-model: true
+  - target: "$.components['schemas']['_types.aggregations:ParentAggregate']"
+    description: Add x-model
+    update:
+      x-model: true
+  - target: "$.components['schemas']['_types.aggregations:SamplerAggregate']"
+    description: Add x-model
+    update:
+      x-model: true
+  - target: "$.components['schemas']['_types.aggregations:UnmappedSamplerAggregate']"
+    description: Add x-model
+    update:
+      x-model: true
+  - target: "$.components['schemas']['_types.aggregations:GeoHashGridAggregate']"
+    description: Add x-model
+    update:
+      x-model: true
+  - target: "$.components['schemas']['_types.aggregations:GeoTileGridAggregate']"
+    description: Add x-model
+    update:
+      x-model: true
+  - target: "$.components['schemas']['_types.aggregations:GeoHexGridAggregate']"
+    description: Add x-model
+    update:
+      x-model: true
+  - target: "$.components['schemas']['_types.aggregations:RangeAggregate']"
+    description: Add x-model
+    update:
+      x-model: true
+  - target: "$.components['schemas']['_types.aggregations:DateRangeAggregate']"
+    description: Add x-model
+    update:
+      x-model: true
+  - target: "$.components['schemas']['_types.aggregations:GeoDistanceAggregate']"
+    description: Add x-model
+    update:
+      x-model: true
+  - target: "$.components['schemas']['_types.aggregations:IpRangeAggregate']"
+    description: Add x-model
+    update:
+      x-model: true
+  - target: "$.components['schemas']['_types.aggregations:IpPrefixAggregate']"
+    description: Add x-model
+    update:
+      x-model: true
+  - target: "$.components['schemas']['_types.aggregations:FiltersAggregate']"
+    description: Add x-model
+    update:
+      x-model: true
+  - target: "$.components['schemas']['_types.aggregations:AdjacencyMatrixAggregate']"
+    description: Add x-model
+    update:
+      x-model: true
+  - target: "$.components['schemas']['_types.aggregations:SignificantLongTermsAggregate']"
+    description: Add x-model
+    update:
+      x-model: true
+  - target: "$.components['schemas']['_types.aggregations:SignificantStringTermsAggregate']"
+    description: Add x-model
+    update:
+      x-model: true
+  - target: "$.components['schemas']['_types.aggregations:UnmappedSignificantTermsAggregate']"
+    description: Add x-model
+    update:
+      x-model: true 
+  - target: "$.components['schemas']['_types.aggregations:SignificantTermsAggregation']"
+    description: Add x-model
+    update:
+      x-model: true
+  - target: "$.components['schemas']['_types.aggregations:CompositeAggregate']"
+    description: Add x-model
+    update:
+      x-model: true
+  - target: "$.components['schemas']['_types.aggregations:FrequentItemSetsAggregate']"
+    description: Add x-model
+    update:
+      x-model: true
+  - target: "$.components['schemas']['_types.aggregations:TimeSeriesAggregate']"
+    description: Add x-model
+    update:
+      x-model: true
+  - target: "$.components['schemas']['_types.aggregations:ScriptedMetricAggregate']"
+    description: Add x-model
+    update:
+      x-model: true
+  - target: "$.components['schemas']['_types.aggregations:TopHitsAggregate']"
+    description: Add x-model
+    update:
+      x-model: true
+  - target: "$.components['schemas']['_types.aggregations:InferenceAggregate']"
+    description: Add x-model
+    update:
+      x-model: true
+  - target: "$.components['schemas']['_types.aggregations:StringStatsAggregate']"
+    description: Add x-model
+    update:
+      x-model: true
+  - target: "$.components['schemas']['_types.aggregations:BoxPlotAggregate']"
+    description: Add x-model
+    update:
+      x-model: true
+  - target: "$.components['schemas']['_types.aggregations:TopMetricsAggregate']"
+    description: Add x-model
+    update:
+      x-model: true
+  - target: "$.components['schemas']['_types.aggregations:TTestAggregate']"
+    description: Add x-model
+    update:
+      x-model: true
+  - target: "$.components['schemas']['_types.aggregations:RateAggregate']"
+    description: Add x-model
+    update:
+      x-model: true
+  - target: "$.components['schemas']['_types.aggregations:CumulativeCardinalityAggregate']"
+    description: Add x-model
+    update:
+      x-model: true
+  - target: "$.components['schemas']['_types.aggregations:MatrixStatsAggregate']"
+    description: Add x-model
+    update:
+      x-model: true
+  - target: "$.components['schemas']['_types.aggregations:GeoLineAggregate']"
+    description: Add x-model
+    update:
+      x-model: true
+  - target: "$.components['schemas']['_types.aggregations:AutoDateHistogramAggregation']"
+    description: Add x-model
+    update:
+      x-model: true
+  - target: "$.components['schemas']['_types.aggregations:CategorizeTextAggregation']"
+    description: Add x-model
+    update:
+      x-model: true
+  - target: "$.components['schemas']['_types.aggregations:DiversifiedSamplerAggregation']"
+    description: Add x-model
+    update:
+      x-model: true
+  - target: "$.components['schemas']['_types.aggregations:RandomSamplerAggregation']"
+    description: Add x-model
+    update:
+      x-model: true
+  - target: "$.components['schemas']['_types.aggregations:RareTermsAggregation']"
+    description: Add x-model
+    update:
+      x-model: true
+  - target: "$.components['schemas']['_types.aggregations:SignificantTextAggregation']"
+    description: Add x-model
+    update:
+      x-model: true
+  - target: "$.components['schemas']['_types.aggregations:TermsAggregation']"
+    description: Add x-model
+    update:
+      x-model: true
+  - target: "$.components['schemas']['_types.aggregations:AverageBucketAggregation']"
+    description: Add x-model
+    update:
+      x-model: true
+  - target: "$.components['schemas']['_types.aggregations:BucketScriptAggregation']"
+    description: Add x-model
+    update:
+      x-model: true
+  - target: "$.components['schemas']['_types.aggregations:BucketKsAggregation']"
+    description: Add x-model
+    update:
+      x-model: true
+  - target: "$.components['schemas']['_types.aggregations:BucketCorrelationAggregation']"
+    description: Add x-model
+    update:
+      x-model: true
+  - target: "$.components['schemas']['_types.aggregations:BucketSelectorAggregation']"
+    description: Add x-model
+    update:
+      x-model: true
+  - target: "$.components['schemas']['_types.aggregations:BucketSortAggregation']"
+    description: Add x-model
+    update:
+      x-model: true
+  - target: "$.components['schemas']['_types.aggregations:CumulativeSumAggregation']"
+    description: Add x-model
+    update:
+      x-model: true
+  - target: "$.components['schemas']['_types.aggregations:MaxBucketAggregation']"
+    description: Add x-model
+    update:
+      x-model: true
+  - target: "$.components['schemas']['_types.aggregations:MinBucketAggregation']"
+    description: Add x-model
+    update:
+      x-model: true
+  - target: "$.components['schemas']['_types.aggregations:MovingFunctionAggregation']"
+    description: Add x-model
+    update:
+      x-model: true
+  - target: "$.components['schemas']['_types.aggregations:MovingPercentilesAggregation']"
+    description: Add x-model
+    update:
+      x-model: true
+  - target: "$.components['schemas']['_types.aggregations:NormalizeAggregation']"
+    description: Add x-model
+    update:
+      x-model: true
+  - target: "$.components['schemas']['_types.aggregations:SerialDifferencingAggregation']"
+    description: Add x-model
+    update:
+      x-model: true
+  - target: "$.components['schemas']['_types.aggregations:SumBucketAggregation']"
+    description: Add x-model
+    update:
+      x-model: true 
+  - target: "$.components['schemas']['_types.query_dsl:LikeDocument']"
+    description: Add x-model to LikeDocument schema
+    update:
+      x-model: true
+  - target: "$.components['schemas']['ml._types:Datafeed'].properties.query"
+    description: Remove query object from anomaly detection datafeed
+    remove: true
+  - target: "$.components['schemas']['ml._types:Datafeed'].properties"
+    description: Re-add a simplified query object in anomaly detection datafeed
+    update:
+      query:
+        x-model: true
+        type: object
+        description: >
+          The Elasticsearch query domain-specific language (DSL).
+          This value corresponds to the query object in an Elasticsearch search POST body.
+          All the options that are supported by Elasticsearch can be used, as this object is passed verbatim to Elasticsearch.
+          By default, this property has the following value: `{"match_all": {"boost": 1}}`.
+        externalDocs:
+          url: https://www.elastic.co/guide/en/elasticsearch/reference/8.16/query-dsl.html
+          description: Query DSL
+  - target: "$.components['schemas']['ml._types:CategorizationAnalyzerDefinition'].properties.tokenizer"
+    description: Remove tokenizer object from ML anomaly detection analysis config
+    remove: true
+  - target: "$.components['schemas']['ml._types:CategorizationAnalyzerDefinition'].properties"
+    description: Re-add a simplified tokenizer object in anomaly detection analysis config
+    update:
+      tokenizer:
+        x-model: true
+        oneOf:
+          - type: object
+          - type: string
+        description: >
+          The name or definition of the tokenizer to use after character filters are applied.
+          This property is compulsory if `categorization_analyzer` is specified as an object.
+          Machine learning provides a tokenizer called `ml_standard` that tokenizes in a way that has been determined to produce good categorization results on a variety of log file formats for logs in English.
+          If you want to use that tokenizer but change the character or token filters, specify `"tokenizer": "ml_standard"` in your `categorization_analyzer`.
+          Additionally, the `ml_classic` tokenizer is available, which tokenizes in the same way as the non-customizable tokenizer in old versions of the product (before 6.2).
+          `ml_classic` was the default categorization tokenizer in versions 6.2 to 7.13, so if you need categorization identical to the default for jobs created in these versions, specify `"tokenizer": "ml_classic"` in your `categorization_analyzer`.
+        externalDocs:
+          url: https://www.elastic.co/guide/en/elasticsearch/reference/8.16/analysis-tokenizers.html
+          description: Tokenizer reference
+  - target: "$.components['schemas']['ml._types:DataframeAnalyticsSource'].properties.query"
+    description: Remove query object from data frame analytics source
+    remove: true
+  - target: "$.components['schemas']['ml._types:DataframeAnalyticsSource'].properties"
+    description: Re-add a simplified query object in data frame analytics source
+    update:
+      query:
+        x-model: true
+        type: object
+        description: >
+          The Elasticsearch query domain-specific language (DSL).
+          This value corresponds to the query object in an Elasticsearch search POST body.
+          All the options that are supported by Elasticsearch can be used, as this object is passed verbatim to Elasticsearch.
+          By default, this property has the following value: `{"match_all": {}}`.
+        externalDocs:
+          url: https://www.elastic.co/guide/en/elasticsearch/reference/8.16/query-dsl.html
+          description: Query DSL
+  - target: "$.components['schemas']['transform._types:Source'].properties.query"
+    description: Remove query object from transform source
+    remove: true
+  - target: "$.components['schemas']['transform._types:Source'].properties"
+    description: Re-add a simplified query object in transform source
+    update:
+      query:
+        x-model: true
+        type: object
+        description: >
+          A query clause that retrieves a subset of data from the source index.
+        externalDocs:
+          url: https://www.elastic.co/guide/en/elasticsearch/reference/8.16/query-dsl.html
+          description: Query DSL
+  - target: "$.components['schemas']['_global.search._types:FieldCollapse']"
+    description: Add x-model and externalDocs
+    update:
+      x-model: true
+      externalDocs:
+        url: https://www.elastic.co/guide/en/elasticsearch/reference/8.16/collapse-search-results.html
+  - target: "$.components['schemas']['_global.msearch:MultisearchBody'].properties"
+    description: Add x-model
+    update:
+      aggregations:
+        x-model: true
+# Examples
+  - target: "$.components['requestBodies']['async_search.submit']"
+    description: "Add example for asynch search submit request"
+    update: 
+      content:
+        application/json:
+          examples:
+            asyncSearchSubmitRequestExample1:
+              $ref: "../../specification/async_search/submit/AsyncSearchSubmitRequestExample1.json"
+  - target: "$.components['responses']['async_search.submit#200']"
+    description: "Add example for asynch search submit response"
+    update: 
+      content:
+        application/json:
+          examples:
+            asyncSearchSubmitResponseExample1:
+              $ref: "../../specification/async_search/submit/AsyncSearchSubmitResponseExample1.json"
+  - target: "$.paths['/_transform/{transform_id}']['put']"
+    description: "Add examples for create transform operation"
+    update: 
+      requestBody: 
+        content: 
+          application/json: 
+            examples: 
+              createTransformRequestExample1: 
+                $ref: "../../specification/transform/put_transform/PutTransformRequestExample1.json"
+              createTransformRequestExample2:
+                $ref: "../../specification/transform/put_transform/PutTransformRequestExample2.json"
+      responses:
+        200:
+          content:
+            application/json:
+              examples:
+                createTransformResponseExample1:
+                  $ref: "../../specification/transform/put_transform/PutTransformResponseExample1.json"
+  - target: "$.components['requestBodies']['transform.preview_transform']"
+    description: "Add examples for preview transform operation"
+    update: 
+      content: 
+        application/json: 
+          examples: 
+            previewTransformRequestExample1: 
+              $ref: "../../specification/transform/preview_transform/PreviewTransformRequestExample1.json"
+  - target: "$.components['responses']['transform.preview_transform#200']"
+    description: "Add examples for preview transform operation"
+    update: 
+      content:
+        application/json:
+          examples:
+            previewTransformResponseExample1:
+              $ref: "../../specification/transform/preview_transform/PreviewTransformResponseExample1.json"
+  - target: "$.paths['/_transform/{transform_id}/_update']['post']"
+    description: "Add examples for update transform operation"
+    update: 
+      requestBody: 
+        content: 
+          application/json: 
+            examples: 
+              updateTransformRequestExample1: 
+                $ref: "../../specification/transform/update_transform/UpdateTransformRequestExample1.json"
+      responses:
+        200:
+          content:
+            application/json:
+              examples:
+                updateTransformResponseExample1:
+                  $ref: "../../specification/transform/update_transform/UpdateTransformResponseExample1.json"
+  - target: "$.paths['/_eql/search/status/{id}']['get']"
+    description: "Add examples for get async EQL status operation"
+    update: 
+      responses:
+        200:
+          content:
+            application/json:
+              examples:
+                eqlGetStatusResponseExample1:
+                  $ref: "../../specification/eql/get_status/EqlGetStatusResponseExample1.json"
+  - target: "$.components['requestBodies']['eql.search']"
+    description: "Add examples for EQL search operation"
+    update: 
+      content: 
+        application/json: 
+          examples: 
+            eqlSearchRequestExample1: 
+              $ref: "../../specification/eql/search/EqlSearchRequestExample1.json"
+            eqlSearchRequestExample2: 
+              $ref: "../../specification/eql/search/EqlSearchRequestExample2.json"
+  - target: "$.components['reponses']['eql.search#200']"
+    description: "Add examples for EQL search operation"
+    update: 
+      content:
+        application/json:
+          examples:
+            eqlSearchResponseExample2:
+              $ref: "../../specification/eql/search/EqlSearchResponseExample2.json"
+  - target: "$.paths['/_query']['post']"
+    description: "Add examples for ES|QL query operation"
+    update: 
+      requestBody: 
+        content: 
+          application/json: 
+            examples: 
+              esqlQueryRequestExample1: 
+                $ref: "../../specification/esql/query/EsqlQueryApiRequestExample1.json"
+  - target: "$.components['requestBodies']['graph.explore']"
+    description: "Add example for graph explore request"
+    update: 
+      content:
+        application/json:
+          examples:
+            graphExploreRequestExample1:
+              $ref: "../../specification/graph/explore/graphExploreRequestExample1.json"
+  - target: "$.paths['/{index}/_block/{block}']['put']"
+    description: "Add examples for add index block operation"
+    update: 
+      responses:
+        200:
+          content:
+            application/json:
+              examples:
+                indicesAddBlockResponseExample1:
+                  $ref: "../../specification/indices/add_block/IndicesAddBlockResponseExample1.yaml"
+  - target: "$.components['requestBodies']['indices.analyze']"
+    description: "Add example for analyze API request"
+    update: 
+      content:
+        application/json:
+          examples:
+            indicesAnalyzeRequestExample1:
+              $ref: "../../specification/indices/analyze/indicesAnalyzeRequestExample1.yaml"
+  - target: "$.paths['/{index}']['put']"
+    description: "Add examples for create index request"
+    update: 
+      requestBody:
+        content:
+          application/json:
+            examples:
+              indicesCreateRequestExample1:
+                $ref: "../../specification/indices/create/indicesCreateRequestExample1.yaml"
+              indicesCreateRequestExample2:
+                $ref: "../../specification/indices/create/indicesCreateRequestExample2.yaml"
+  - target: "$.paths['/_data_stream/{name}/_lifecycle']['delete']"
+    description: "Add example for delete data stream lifecycle response"
+    update: 
+      responses:
+        200:
+          content:
+            application/json:
+              examples:
+                indicesDeleteDataLifecycleResponseExample1:
+                  $ref: "../../specification/indices/delete_data_lifecycle/IndicesDeleteDataLifecycleResponseExample1.yaml"
+  - target: "$.paths['/_data_stream/{name}/_lifecycle']['get']"
+    description: "Add example for get data stream lifecycle response"
+    update: 
+      responses:
+        200:
+          content:
+            application/json:
+              examples:
+                indicesGetDataLifecycleResponseExample1:
+                  $ref: "../../specification/indices/get_data_lifecycle/IndicesGetDataLifecycleResponseExample1.yaml"
+  - target: "$.components['responses']['indices.get_data_stream#200']"
+    description: "Add example for get data stream response"
+    update: 
+      content:
+        application/json:
+          examples:
+            indicesGetDataStreamResponseExample:
+              $ref: "../../specification/indices/get_data_stream/indicesGetDataStreamResponseExample1.yaml"
+  - target: "$.paths['/_data_stream/{name}/_lifecycle']['put']"
+    description: "Add examples update data stream lifecycle request and response"
+    update: 
+      requestBody: 
+        content: 
+          application/json: 
+            examples: 
+              indicesPutDataLifecycleRequestExample1: 
+                $ref: "../../specification/indices/put_data_lifecycle/IndicesPutDataLifecycleRequestExample1.yaml"
+              indicesPutLifecycleRequestExample2:
+                $ref: "../../specification/indices/put_data_lifecycle/IndicesPutDataLifecycleRequestExample2.yaml"
+      responses:
+        200:
+          content:
+            application/json:
+              examples:
+                indicesPutDataLifecycleResponseExample1:
+                  $ref: "../../specification/indices/put_data_lifecycle/IndicesPutDataLifecycleResponseExample1.yaml"
+  - target: "$.paths['/{index}/_lifecycle/explain']['get']"
+    description: "Add example for explain data stream lifecycle response"
+    update: 
+      responses:
+        200:
+          content:
+            application/json:
+              examples:
+                indicesExplainDataLifecycleResponseExample:
+                  $ref: "../../specification/indices/explain_data_lifecycle/IndicesExplainDataLifecycleResponseExample1.yaml"
\ No newline at end of file
diff --git a/output/openapi/elasticsearch-openapi.json b/output/openapi/elasticsearch-openapi.json
index 2f93e1ca53..036d7e2c3c 100644
--- a/output/openapi/elasticsearch-openapi.json
+++ b/output/openapi/elasticsearch-openapi.json
@@ -12,13 +12,10 @@
     "/_async_search/{id}": {
       "get": {
         "tags": [
-          "async_search.get"
+          "search"
         ],
-        "summary": "Retrieves the results of a previously submitted async search request given its identifier",
-        "description": "If the Elasticsearch security features are enabled, access to the results of a specific async search is restricted to the user or API key that submitted it.",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/async-search.html"
-        },
+        "summary": "Get async search results",
+        "description": "Retrieve the results of a previously submitted asynchronous search request.\nIf the Elasticsearch security features are enabled, access to the results of a specific async search is restricted to the user or API key that submitted it.",
         "operationId": "async-search-get",
         "parameters": [
           {
@@ -75,17 +72,14 @@
             }
           }
         },
-        "x-available-since": "7.7.0"
+        "x-state": "Added in 7.7.0"
       },
       "delete": {
         "tags": [
-          "async_search.delete"
+          "search"
         ],
-        "summary": "Deletes an async search by identifier",
-        "description": "If the search is still running, the search request will be cancelled.\nOtherwise, the saved search results are deleted.\nIf the Elasticsearch security features are enabled, the deletion of a specific async search is restricted to: the authenticated user that submitted the original search request; users that have the `cancel_task` cluster privilege.",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/async-search.html"
-        },
+        "summary": "Delete an async search",
+        "description": "If the asynchronous search is still running, it is cancelled.\nOtherwise, the saved search results are deleted.\nIf the Elasticsearch security features are enabled, the deletion of a specific async search is restricted to: the authenticated user that submitted the original search request; users that have the `cancel_task` cluster privilege.",
         "operationId": "async-search-delete",
         "parameters": [
           {
@@ -112,19 +106,16 @@
             }
           }
         },
-        "x-available-since": "7.7.0"
+        "x-state": "Added in 7.7.0"
       }
     },
     "/_async_search/status/{id}": {
       "get": {
         "tags": [
-          "async_search.status"
+          "search"
         ],
-        "summary": "Get async search status\n",
-        "description": "Retrieves the status of a previously submitted async search request given its identifier, without retrieving search results.\nIf the Elasticsearch security features are enabled, use of this API is restricted to the `monitoring_user` role.",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/async-search.html"
-        },
+        "summary": "Get the async search status",
+        "description": "Get the status of a previously submitted async search request given its identifier, without retrieving search results.\nIf the Elasticsearch security features are enabled, use of this API is restricted to the `monitoring_user` role.",
         "operationId": "async-search-status",
         "parameters": [
           {
@@ -137,6 +128,16 @@
               "$ref": "#/components/schemas/_types:Id"
             },
             "style": "simple"
+          },
+          {
+            "in": "query",
+            "name": "keep_alive",
+            "description": "Specifies how long the async search needs to be available.\nOngoing async searches and any saved search results are deleted after this period.",
+            "deprecated": false,
+            "schema": {
+              "$ref": "#/components/schemas/_types:Duration"
+            },
+            "style": "form"
           }
         ],
         "responses": {
@@ -151,19 +152,16 @@
             }
           }
         },
-        "x-available-since": "7.11.0"
+        "x-state": "Added in 7.11.0"
       }
     },
     "/_async_search": {
       "post": {
         "tags": [
-          "async_search.submit"
+          "search"
         ],
-        "summary": "Runs a search request asynchronously",
-        "description": "When the primary sort of the results is an indexed field, shards get sorted based on minimum and maximum value that they hold for that field, hence partial results become available following the sort criteria that was requested.\nWarning: Async search does not support scroll nor search requests that only include the suggest section.\nBy default, Elasticsearch doesn’t allow you to store an async search response larger than 10Mb and an attempt to do this results in an error.\nThe maximum allowed size for a stored async search response can be set by changing the `search.max_async_search_response_size` cluster level setting.",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/async-search.html"
-        },
+        "summary": "Run an async search",
+        "description": "When the primary sort of the results is an indexed field, shards get sorted based on minimum and maximum value that they hold for that field. Partial results become available following the sort criteria that was requested.\n\nWarning: Asynchronous search does not support scroll or search requests that include only the suggest section.\n\nBy default, Elasticsearch does not allow you to store an async search response larger than 10Mb and an attempt to do this results in an error.\nThe maximum allowed size for a stored async search response can be set by changing the `search.max_async_search_response_size` cluster level setting.",
         "operationId": "async-search-submit",
         "parameters": [
           {
@@ -235,9 +233,6 @@
           {
             "$ref": "#/components/parameters/async_search.submit#routing"
           },
-          {
-            "$ref": "#/components/parameters/async_search.submit#scroll"
-          },
           {
             "$ref": "#/components/parameters/async_search.submit#search_type"
           },
@@ -313,19 +308,16 @@
             "$ref": "#/components/responses/async_search.submit#200"
           }
         },
-        "x-available-since": "7.7.0"
+        "x-state": "Added in 7.7.0"
       }
     },
     "/{index}/_async_search": {
       "post": {
         "tags": [
-          "async_search.submit"
+          "search"
         ],
-        "summary": "Runs a search request asynchronously",
-        "description": "When the primary sort of the results is an indexed field, shards get sorted based on minimum and maximum value that they hold for that field, hence partial results become available following the sort criteria that was requested.\nWarning: Async search does not support scroll nor search requests that only include the suggest section.\nBy default, Elasticsearch doesn’t allow you to store an async search response larger than 10Mb and an attempt to do this results in an error.\nThe maximum allowed size for a stored async search response can be set by changing the `search.max_async_search_response_size` cluster level setting.",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/async-search.html"
-        },
+        "summary": "Run an async search",
+        "description": "When the primary sort of the results is an indexed field, shards get sorted based on minimum and maximum value that they hold for that field. Partial results become available following the sort criteria that was requested.\n\nWarning: Asynchronous search does not support scroll or search requests that include only the suggest section.\n\nBy default, Elasticsearch does not allow you to store an async search response larger than 10Mb and an attempt to do this results in an error.\nThe maximum allowed size for a stored async search response can be set by changing the `search.max_async_search_response_size` cluster level setting.",
         "operationId": "async-search-submit-1",
         "parameters": [
           {
@@ -400,9 +392,6 @@
           {
             "$ref": "#/components/parameters/async_search.submit#routing"
           },
-          {
-            "$ref": "#/components/parameters/async_search.submit#scroll"
-          },
           {
             "$ref": "#/components/parameters/async_search.submit#search_type"
           },
@@ -478,18 +467,18 @@
             "$ref": "#/components/responses/async_search.submit#200"
           }
         },
-        "x-available-since": "7.7.0"
+        "x-state": "Added in 7.7.0"
       }
     },
     "/_autoscaling/policy/{name}": {
       "get": {
         "tags": [
-          "autoscaling.get_autoscaling_policy"
+          "autoscaling"
         ],
-        "summary": "Retrieves an autoscaling policy",
-        "description": "Designed for indirect use by ECE/ESS and ECK. Direct use is not supported.",
+        "summary": "Get an autoscaling policy",
+        "description": "NOTE: This feature is designed for indirect use by Elasticsearch Service, Elastic Cloud Enterprise, and Elastic Cloud on Kubernetes. Direct use is not supported.",
         "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/autoscaling-get-autoscaling-capacity.html"
+          "url": "https://www.elastic.co/guide/en/cloud/current/ec-autoscaling.html"
         },
         "operationId": "autoscaling-get-autoscaling-policy",
         "parameters": [
@@ -503,6 +492,16 @@
               "$ref": "#/components/schemas/_types:Name"
             },
             "style": "simple"
+          },
+          {
+            "in": "query",
+            "name": "master_timeout",
+            "description": "Period to wait for a connection to the master node.\nIf no response is received before the timeout expires, the request fails and returns an error.",
+            "deprecated": false,
+            "schema": {
+              "$ref": "#/components/schemas/_types:Duration"
+            },
+            "style": "form"
           }
         ],
         "responses": {
@@ -517,16 +516,16 @@
             }
           }
         },
-        "x-available-since": "7.11.0"
+        "x-state": "Added in 7.11.0"
       },
       "put": {
         "tags": [
-          "autoscaling.put_autoscaling_policy"
+          "autoscaling"
         ],
-        "summary": "Creates a new autoscaling policy",
-        "description": "Designed for indirect use by ECE/ESS and ECK. Direct use is not supported.",
+        "summary": "Create or update an autoscaling policy",
+        "description": "NOTE: This feature is designed for indirect use by Elasticsearch Service, Elastic Cloud Enterprise, and Elastic Cloud on Kubernetes. Direct use is not supported.",
         "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/autoscaling-put-autoscaling-policy.html"
+          "url": "https://www.elastic.co/guide/en/cloud/current/ec-autoscaling.html"
         },
         "operationId": "autoscaling-put-autoscaling-policy",
         "parameters": [
@@ -540,6 +539,26 @@
               "$ref": "#/components/schemas/_types:Name"
             },
             "style": "simple"
+          },
+          {
+            "in": "query",
+            "name": "master_timeout",
+            "description": "Period to wait for a connection to the master node.\nIf no response is received before the timeout expires, the request fails and returns an error.",
+            "deprecated": false,
+            "schema": {
+              "$ref": "#/components/schemas/_types:Duration"
+            },
+            "style": "form"
+          },
+          {
+            "in": "query",
+            "name": "timeout",
+            "description": "Period to wait for a response. If no response is received before the timeout expires, the request fails and returns an error.",
+            "deprecated": false,
+            "schema": {
+              "$ref": "#/components/schemas/_types:Duration"
+            },
+            "style": "form"
           }
         ],
         "requestBody": {
@@ -564,16 +583,16 @@
             }
           }
         },
-        "x-available-since": "7.11.0"
+        "x-state": "Added in 7.11.0"
       },
       "delete": {
         "tags": [
-          "autoscaling.delete_autoscaling_policy"
+          "autoscaling"
         ],
-        "summary": "Deletes an autoscaling policy",
-        "description": "Designed for indirect use by ECE/ESS and ECK. Direct use is not supported.",
+        "summary": "Delete an autoscaling policy",
+        "description": "NOTE: This feature is designed for indirect use by Elasticsearch Service, Elastic Cloud Enterprise, and Elastic Cloud on Kubernetes. Direct use is not supported.",
         "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/autoscaling-delete-autoscaling-policy.html"
+          "url": "https://www.elastic.co/guide/en/cloud/current/ec-autoscaling.html"
         },
         "operationId": "autoscaling-delete-autoscaling-policy",
         "parameters": [
@@ -587,6 +606,26 @@
               "$ref": "#/components/schemas/_types:Name"
             },
             "style": "simple"
+          },
+          {
+            "in": "query",
+            "name": "master_timeout",
+            "description": "Period to wait for a connection to the master node.\nIf no response is received before the timeout expires, the request fails and returns an error.",
+            "deprecated": false,
+            "schema": {
+              "$ref": "#/components/schemas/_types:Duration"
+            },
+            "style": "form"
+          },
+          {
+            "in": "query",
+            "name": "timeout",
+            "description": "Period to wait for a response. If no response is received before the timeout expires, the request fails and returns an error.",
+            "deprecated": false,
+            "schema": {
+              "$ref": "#/components/schemas/_types:Duration"
+            },
+            "style": "form"
           }
         ],
         "responses": {
@@ -601,20 +640,32 @@
             }
           }
         },
-        "x-available-since": "7.11.0"
+        "x-state": "Added in 7.11.0"
       }
     },
     "/_autoscaling/capacity": {
       "get": {
         "tags": [
-          "autoscaling.get_autoscaling_capacity"
+          "autoscaling"
         ],
-        "summary": "Gets the current autoscaling capacity based on the configured autoscaling policy",
-        "description": "Designed for indirect use by ECE/ESS and ECK. Direct use is not supported.",
+        "summary": "Get the autoscaling capacity",
+        "description": "NOTE: This feature is designed for indirect use by Elasticsearch Service, Elastic Cloud Enterprise, and Elastic Cloud on Kubernetes. Direct use is not supported.\n\nThis API gets the current autoscaling capacity based on the configured autoscaling policy.\nIt will return information to size the cluster appropriately to the current workload.\n\nThe `required_capacity` is calculated as the maximum of the `required_capacity` result of all individual deciders that are enabled for the policy.\n\nThe operator should verify that the `current_nodes` match the operator’s knowledge of the cluster to avoid making autoscaling decisions based on stale or incomplete information.\n\nThe response contains decider-specific information you can use to diagnose how and why autoscaling determined a certain capacity was required.\nThis information is provided for diagnosis only.\nDo not use this information to make autoscaling decisions.",
         "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/autoscaling-get-autoscaling-capacity.html"
+          "url": "https://www.elastic.co/guide/en/cloud/current/ec-autoscaling.html"
         },
         "operationId": "autoscaling-get-autoscaling-capacity",
+        "parameters": [
+          {
+            "in": "query",
+            "name": "master_timeout",
+            "description": "Period to wait for a connection to the master node.\nIf no response is received before the timeout expires, the request fails and returns an error.",
+            "deprecated": false,
+            "schema": {
+              "$ref": "#/components/schemas/_types:Duration"
+            },
+            "style": "form"
+          }
+        ],
         "responses": {
           "200": {
             "description": "",
@@ -638,21 +689,21 @@
             }
           }
         },
-        "x-available-since": "7.11.0"
+        "x-state": "Added in 7.11.0"
       }
     },
     "/_bulk": {
       "put": {
         "tags": [
-          "bulk"
+          "document"
         ],
         "summary": "Bulk index or delete documents",
         "description": "Performs multiple indexing or delete operations in a single API call.\nThis reduces overhead and can greatly increase indexing speed.",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/docs-bulk.html"
-        },
         "operationId": "bulk-1",
         "parameters": [
+          {
+            "$ref": "#/components/parameters/bulk#list_executed_pipelines"
+          },
           {
             "$ref": "#/components/parameters/bulk#pipeline"
           },
@@ -679,6 +730,9 @@
           },
           {
             "$ref": "#/components/parameters/bulk#require_alias"
+          },
+          {
+            "$ref": "#/components/parameters/bulk#require_data_stream"
           }
         ],
         "requestBody": {
@@ -692,15 +746,15 @@
       },
       "post": {
         "tags": [
-          "bulk"
+          "document"
         ],
         "summary": "Bulk index or delete documents",
         "description": "Performs multiple indexing or delete operations in a single API call.\nThis reduces overhead and can greatly increase indexing speed.",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/docs-bulk.html"
-        },
         "operationId": "bulk",
         "parameters": [
+          {
+            "$ref": "#/components/parameters/bulk#list_executed_pipelines"
+          },
           {
             "$ref": "#/components/parameters/bulk#pipeline"
           },
@@ -727,6 +781,9 @@
           },
           {
             "$ref": "#/components/parameters/bulk#require_alias"
+          },
+          {
+            "$ref": "#/components/parameters/bulk#require_data_stream"
           }
         ],
         "requestBody": {
@@ -742,18 +799,18 @@
     "/{index}/_bulk": {
       "put": {
         "tags": [
-          "bulk"
+          "document"
         ],
         "summary": "Bulk index or delete documents",
         "description": "Performs multiple indexing or delete operations in a single API call.\nThis reduces overhead and can greatly increase indexing speed.",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/docs-bulk.html"
-        },
         "operationId": "bulk-3",
         "parameters": [
           {
             "$ref": "#/components/parameters/bulk#index"
           },
+          {
+            "$ref": "#/components/parameters/bulk#list_executed_pipelines"
+          },
           {
             "$ref": "#/components/parameters/bulk#pipeline"
           },
@@ -780,6 +837,9 @@
           },
           {
             "$ref": "#/components/parameters/bulk#require_alias"
+          },
+          {
+            "$ref": "#/components/parameters/bulk#require_data_stream"
           }
         ],
         "requestBody": {
@@ -793,18 +853,18 @@
       },
       "post": {
         "tags": [
-          "bulk"
+          "document"
         ],
         "summary": "Bulk index or delete documents",
         "description": "Performs multiple indexing or delete operations in a single API call.\nThis reduces overhead and can greatly increase indexing speed.",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/docs-bulk.html"
-        },
         "operationId": "bulk-2",
         "parameters": [
           {
             "$ref": "#/components/parameters/bulk#index"
           },
+          {
+            "$ref": "#/components/parameters/bulk#list_executed_pipelines"
+          },
           {
             "$ref": "#/components/parameters/bulk#pipeline"
           },
@@ -831,6 +891,9 @@
           },
           {
             "$ref": "#/components/parameters/bulk#require_alias"
+          },
+          {
+            "$ref": "#/components/parameters/bulk#require_data_stream"
           }
         ],
         "requestBody": {
@@ -846,13 +909,10 @@
     "/_cat/aliases": {
       "get": {
         "tags": [
-          "cat.aliases"
+          "cat"
         ],
         "summary": "Get aliases",
         "description": "Retrieves the cluster’s index aliases, including filter and routing information.\nThe API does not return data stream aliases.\n\nCAT APIs are only intended for human consumption using the command line or the Kibana console. They are not intended for use by applications. For application consumption, use the aliases API.",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/cat-alias.html"
-        },
         "operationId": "cat-aliases",
         "parameters": [
           {
@@ -869,13 +929,10 @@
     "/_cat/aliases/{name}": {
       "get": {
         "tags": [
-          "cat.aliases"
+          "cat"
         ],
         "summary": "Get aliases",
         "description": "Retrieves the cluster’s index aliases, including filter and routing information.\nThe API does not return data stream aliases.\n\nCAT APIs are only intended for human consumption using the command line or the Kibana console. They are not intended for use by applications. For application consumption, use the aliases API.",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/cat-alias.html"
-        },
         "operationId": "cat-aliases-1",
         "parameters": [
           {
@@ -895,13 +952,10 @@
     "/_cat/allocation": {
       "get": {
         "tags": [
-          "cat.allocation"
+          "cat"
         ],
         "summary": "Provides a snapshot of the number of shards allocated to each data node and their disk space",
         "description": "IMPORTANT: cat APIs are only intended for human consumption using the command line or Kibana console. They are not intended for use by applications.",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/cat-allocation.html"
-        },
         "operationId": "cat-allocation",
         "parameters": [
           {
@@ -918,13 +972,10 @@
     "/_cat/allocation/{node_id}": {
       "get": {
         "tags": [
-          "cat.allocation"
+          "cat"
         ],
         "summary": "Provides a snapshot of the number of shards allocated to each data node and their disk space",
         "description": "IMPORTANT: cat APIs are only intended for human consumption using the command line or Kibana console. They are not intended for use by applications.",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/cat-allocation.html"
-        },
         "operationId": "cat-allocation-1",
         "parameters": [
           {
@@ -944,32 +995,26 @@
     "/_cat/component_templates": {
       "get": {
         "tags": [
-          "cat.component_templates"
+          "cat"
         ],
         "summary": "Get component templates",
         "description": "Returns information about component templates in a cluster.\nComponent templates are building blocks for constructing index templates that specify index mappings, settings, and aliases.\n\nCAT APIs are only intended for human consumption using the command line or Kibana console.\nThey are not intended for use by applications. For application consumption, use the get component template API.",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/master/cat-component-templates.html"
-        },
         "operationId": "cat-component-templates",
         "responses": {
           "200": {
             "$ref": "#/components/responses/cat.component_templates#200"
           }
         },
-        "x-available-since": "5.1.0"
+        "x-state": "Added in 5.1.0"
       }
     },
     "/_cat/component_templates/{name}": {
       "get": {
         "tags": [
-          "cat.component_templates"
+          "cat"
         ],
         "summary": "Get component templates",
         "description": "Returns information about component templates in a cluster.\nComponent templates are building blocks for constructing index templates that specify index mappings, settings, and aliases.\n\nCAT APIs are only intended for human consumption using the command line or Kibana console.\nThey are not intended for use by applications. For application consumption, use the get component template API.",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/master/cat-component-templates.html"
-        },
         "operationId": "cat-component-templates-1",
         "parameters": [
           {
@@ -981,19 +1026,16 @@
             "$ref": "#/components/responses/cat.component_templates#200"
           }
         },
-        "x-available-since": "5.1.0"
+        "x-state": "Added in 5.1.0"
       }
     },
     "/_cat/count": {
       "get": {
         "tags": [
-          "cat.count"
+          "cat"
         ],
         "summary": "Get a document count",
         "description": "Provides quick access to a document count for a data stream, an index, or an entire cluster.\nThe document count only includes live documents, not deleted documents which have not yet been removed by the merge process.\n\nCAT APIs are only intended for human consumption using the command line or Kibana console.\nThey are not intended for use by applications. For application consumption, use the count API.",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/cat-count.html"
-        },
         "operationId": "cat-count",
         "responses": {
           "200": {
@@ -1005,13 +1047,10 @@
     "/_cat/count/{index}": {
       "get": {
         "tags": [
-          "cat.count"
+          "cat"
         ],
         "summary": "Get a document count",
         "description": "Provides quick access to a document count for a data stream, an index, or an entire cluster.\nThe document count only includes live documents, not deleted documents which have not yet been removed by the merge process.\n\nCAT APIs are only intended for human consumption using the command line or Kibana console.\nThey are not intended for use by applications. For application consumption, use the count API.",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/cat-count.html"
-        },
         "operationId": "cat-count-1",
         "parameters": [
           {
@@ -1028,13 +1067,10 @@
     "/_cat/fielddata": {
       "get": {
         "tags": [
-          "cat.fielddata"
+          "cat"
         ],
         "summary": "Returns the amount of heap memory currently used by the field data cache on every data node in the cluster",
         "description": "IMPORTANT: cat APIs are only intended for human consumption using the command line or Kibana console.\nThey are not intended for use by applications. For application consumption, use the nodes stats API.",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/cat-fielddata.html"
-        },
         "operationId": "cat-fielddata",
         "parameters": [
           {
@@ -1054,13 +1090,10 @@
     "/_cat/fielddata/{fields}": {
       "get": {
         "tags": [
-          "cat.fielddata"
+          "cat"
         ],
         "summary": "Returns the amount of heap memory currently used by the field data cache on every data node in the cluster",
         "description": "IMPORTANT: cat APIs are only intended for human consumption using the command line or Kibana console.\nThey are not intended for use by applications. For application consumption, use the nodes stats API.",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/cat-fielddata.html"
-        },
         "operationId": "cat-fielddata-1",
         "parameters": [
           {
@@ -1083,13 +1116,10 @@
     "/_cat/health": {
       "get": {
         "tags": [
-          "cat.health"
+          "cat"
         ],
         "summary": "Returns the health status of a cluster, similar to the cluster health API",
         "description": "IMPORTANT: cat APIs are only intended for human consumption using the command line or Kibana console.\nThey are not intended for use by applications. For application consumption, use the cluster health API.\nThis API is often used to check malfunctioning clusters.\nTo help you track cluster health alongside log files and alerting systems, the API returns timestamps in two formats:\n`HH:MM:SS`, which is human-readable but includes no date information;\n`Unix epoch time`, which is machine-sortable and includes date information.\nThe latter format is useful for cluster recoveries that take multiple days.\nYou can use the cat health API to verify cluster health across multiple nodes.\nYou also can use the API to track the recovery of a large cluster over a longer period of time.",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/cat-health.html"
-        },
         "operationId": "cat-health",
         "parameters": [
           {
@@ -1133,13 +1163,10 @@
     "/_cat": {
       "get": {
         "tags": [
-          "cat.help"
+          "cat"
         ],
         "summary": "Get CAT help",
         "description": "Returns help for the CAT APIs.",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/cat.html"
-        },
         "operationId": "cat-help",
         "responses": {
           "200": {
@@ -1161,13 +1188,10 @@
     "/_cat/indices": {
       "get": {
         "tags": [
-          "cat.indices"
+          "cat"
         ],
         "summary": "Get index information",
         "description": "Returns high-level information about indices in a cluster, including backing indices for data streams.\n\nUse this request to get the following information for each index in a cluster:\n- shard count\n- document count\n- deleted document count\n- primary store size\n- total store size of all shards, including shard replicas\n\nThese metrics are retrieved directly from Lucene, which Elasticsearch uses internally to power indexing and search. As a result, all document counts include hidden nested documents.\nTo get an accurate count of Elasticsearch documents, use the cat count or count APIs.\n\nCAT APIs are only intended for human consumption using the command line or Kibana console.\nThey are not intended for use by applications. For application consumption, use an index endpoint.",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/cat-indices.html"
-        },
         "operationId": "cat-indices",
         "parameters": [
           {
@@ -1199,13 +1223,10 @@
     "/_cat/indices/{index}": {
       "get": {
         "tags": [
-          "cat.indices"
+          "cat"
         ],
         "summary": "Get index information",
         "description": "Returns high-level information about indices in a cluster, including backing indices for data streams.\n\nUse this request to get the following information for each index in a cluster:\n- shard count\n- document count\n- deleted document count\n- primary store size\n- total store size of all shards, including shard replicas\n\nThese metrics are retrieved directly from Lucene, which Elasticsearch uses internally to power indexing and search. As a result, all document counts include hidden nested documents.\nTo get an accurate count of Elasticsearch documents, use the cat count or count APIs.\n\nCAT APIs are only intended for human consumption using the command line or Kibana console.\nThey are not intended for use by applications. For application consumption, use an index endpoint.",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/cat-indices.html"
-        },
         "operationId": "cat-indices-1",
         "parameters": [
           {
@@ -1240,13 +1261,10 @@
     "/_cat/master": {
       "get": {
         "tags": [
-          "cat.master"
+          "cat"
         ],
         "summary": "Returns information about the master node, including the ID, bound IP address, and name",
         "description": "IMPORTANT: cat APIs are only intended for human consumption using the command line or Kibana console. They are not intended for use by applications. For application consumption, use the nodes info API.",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/cat-master.html"
-        },
         "operationId": "cat-master",
         "responses": {
           "200": {
@@ -1268,13 +1286,10 @@
     "/_cat/ml/data_frame/analytics": {
       "get": {
         "tags": [
-          "cat.ml_data_frame_analytics"
+          "cat"
         ],
         "summary": "Get data frame analytics jobs",
         "description": "Returns configuration and usage information about data frame analytics jobs.\n\nCAT APIs are only intended for human consumption using the Kibana\nconsole or command line. They are not intended for use by applications. For\napplication consumption, use the get data frame analytics jobs statistics API.",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/cat-dfanalytics.html"
-        },
         "operationId": "cat-ml-data-frame-analytics",
         "parameters": [
           {
@@ -1298,19 +1313,16 @@
             "$ref": "#/components/responses/cat.ml_data_frame_analytics#200"
           }
         },
-        "x-available-since": "7.7.0"
+        "x-state": "Added in 7.7.0"
       }
     },
     "/_cat/ml/data_frame/analytics/{id}": {
       "get": {
         "tags": [
-          "cat.ml_data_frame_analytics"
+          "cat"
         ],
         "summary": "Get data frame analytics jobs",
         "description": "Returns configuration and usage information about data frame analytics jobs.\n\nCAT APIs are only intended for human consumption using the Kibana\nconsole or command line. They are not intended for use by applications. For\napplication consumption, use the get data frame analytics jobs statistics API.",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/cat-dfanalytics.html"
-        },
         "operationId": "cat-ml-data-frame-analytics-1",
         "parameters": [
           {
@@ -1337,19 +1349,16 @@
             "$ref": "#/components/responses/cat.ml_data_frame_analytics#200"
           }
         },
-        "x-available-since": "7.7.0"
+        "x-state": "Added in 7.7.0"
       }
     },
     "/_cat/ml/datafeeds": {
       "get": {
         "tags": [
-          "cat.ml_datafeeds"
+          "cat"
         ],
         "summary": "Get datafeeds",
         "description": "Returns configuration and usage information about datafeeds.\nThis API returns a maximum of 10,000 datafeeds.\nIf the Elasticsearch security features are enabled, you must have `monitor_ml`, `monitor`, `manage_ml`, or `manage`\ncluster privileges to use this API.\n\nCAT APIs are only intended for human consumption using the Kibana\nconsole or command line. They are not intended for use by applications. For\napplication consumption, use the get datafeed statistics API.",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/cat-datafeeds.html"
-        },
         "operationId": "cat-ml-datafeeds",
         "parameters": [
           {
@@ -1370,19 +1379,16 @@
             "$ref": "#/components/responses/cat.ml_datafeeds#200"
           }
         },
-        "x-available-since": "7.7.0"
+        "x-state": "Added in 7.7.0"
       }
     },
     "/_cat/ml/datafeeds/{datafeed_id}": {
       "get": {
         "tags": [
-          "cat.ml_datafeeds"
+          "cat"
         ],
         "summary": "Get datafeeds",
         "description": "Returns configuration and usage information about datafeeds.\nThis API returns a maximum of 10,000 datafeeds.\nIf the Elasticsearch security features are enabled, you must have `monitor_ml`, `monitor`, `manage_ml`, or `manage`\ncluster privileges to use this API.\n\nCAT APIs are only intended for human consumption using the Kibana\nconsole or command line. They are not intended for use by applications. For\napplication consumption, use the get datafeed statistics API.",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/cat-datafeeds.html"
-        },
         "operationId": "cat-ml-datafeeds-1",
         "parameters": [
           {
@@ -1406,19 +1412,16 @@
             "$ref": "#/components/responses/cat.ml_datafeeds#200"
           }
         },
-        "x-available-since": "7.7.0"
+        "x-state": "Added in 7.7.0"
       }
     },
     "/_cat/ml/anomaly_detectors": {
       "get": {
         "tags": [
-          "cat.ml_jobs"
+          "cat"
         ],
         "summary": "Get anomaly detection jobs",
         "description": "Returns configuration and usage information for anomaly detection jobs.\nThis API returns a maximum of 10,000 jobs.\nIf the Elasticsearch security features are enabled, you must have `monitor_ml`,\n`monitor`, `manage_ml`, or `manage` cluster privileges to use this API.\n\nCAT APIs are only intended for human consumption using the Kibana\nconsole or command line. They are not intended for use by applications. For\napplication consumption, use the get anomaly detection job statistics API.",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/cat-anomaly-detectors.html"
-        },
         "operationId": "cat-ml-jobs",
         "parameters": [
           {
@@ -1442,19 +1445,16 @@
             "$ref": "#/components/responses/cat.ml_jobs#200"
           }
         },
-        "x-available-since": "7.7.0"
+        "x-state": "Added in 7.7.0"
       }
     },
     "/_cat/ml/anomaly_detectors/{job_id}": {
       "get": {
         "tags": [
-          "cat.ml_jobs"
+          "cat"
         ],
         "summary": "Get anomaly detection jobs",
         "description": "Returns configuration and usage information for anomaly detection jobs.\nThis API returns a maximum of 10,000 jobs.\nIf the Elasticsearch security features are enabled, you must have `monitor_ml`,\n`monitor`, `manage_ml`, or `manage` cluster privileges to use this API.\n\nCAT APIs are only intended for human consumption using the Kibana\nconsole or command line. They are not intended for use by applications. For\napplication consumption, use the get anomaly detection job statistics API.",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/cat-anomaly-detectors.html"
-        },
         "operationId": "cat-ml-jobs-1",
         "parameters": [
           {
@@ -1481,19 +1481,16 @@
             "$ref": "#/components/responses/cat.ml_jobs#200"
           }
         },
-        "x-available-since": "7.7.0"
+        "x-state": "Added in 7.7.0"
       }
     },
     "/_cat/ml/trained_models": {
       "get": {
         "tags": [
-          "cat.ml_trained_models"
+          "cat"
         ],
         "summary": "Get trained models",
         "description": "Returns configuration and usage information about inference trained models.\n\nCAT APIs are only intended for human consumption using the Kibana\nconsole or command line. They are not intended for use by applications. For\napplication consumption, use the get trained models statistics API.",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/cat-trained-model.html"
-        },
         "operationId": "cat-ml-trained-models",
         "parameters": [
           {
@@ -1520,19 +1517,16 @@
             "$ref": "#/components/responses/cat.ml_trained_models#200"
           }
         },
-        "x-available-since": "7.7.0"
+        "x-state": "Added in 7.7.0"
       }
     },
     "/_cat/ml/trained_models/{model_id}": {
       "get": {
         "tags": [
-          "cat.ml_trained_models"
+          "cat"
         ],
         "summary": "Get trained models",
         "description": "Returns configuration and usage information about inference trained models.\n\nCAT APIs are only intended for human consumption using the Kibana\nconsole or command line. They are not intended for use by applications. For\napplication consumption, use the get trained models statistics API.",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/cat-trained-model.html"
-        },
         "operationId": "cat-ml-trained-models-1",
         "parameters": [
           {
@@ -1562,19 +1556,16 @@
             "$ref": "#/components/responses/cat.ml_trained_models#200"
           }
         },
-        "x-available-since": "7.7.0"
+        "x-state": "Added in 7.7.0"
       }
     },
     "/_cat/nodeattrs": {
       "get": {
         "tags": [
-          "cat.nodeattrs"
+          "cat"
         ],
         "summary": "Returns information about custom node attributes",
         "description": "IMPORTANT: cat APIs are only intended for human consumption using the command line or Kibana console. They are not intended for use by applications. For application consumption, use the nodes info API.",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/cat-nodeattrs.html"
-        },
         "operationId": "cat-nodeattrs",
         "responses": {
           "200": {
@@ -1596,13 +1587,10 @@
     "/_cat/nodes": {
       "get": {
         "tags": [
-          "cat.nodes"
+          "cat"
         ],
         "summary": "Returns information about the nodes in a cluster",
         "description": "IMPORTANT: cat APIs are only intended for human consumption using the command line or Kibana console. They are not intended for use by applications. For application consumption, use the nodes info API.",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/cat-nodes.html"
-        },
         "operationId": "cat-nodes",
         "parameters": [
           {
@@ -1663,13 +1651,10 @@
     "/_cat/pending_tasks": {
       "get": {
         "tags": [
-          "cat.pending_tasks"
+          "cat"
         ],
         "summary": "Returns cluster-level changes that have not yet been executed",
         "description": "IMPORTANT: cat APIs are only intended for human consumption using the command line or Kibana console. They are not intended for use by applications. For application consumption, use the pending cluster tasks API.",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/cat-pending-tasks.html"
-        },
         "operationId": "cat-pending-tasks",
         "responses": {
           "200": {
@@ -1691,13 +1676,10 @@
     "/_cat/plugins": {
       "get": {
         "tags": [
-          "cat.plugins"
+          "cat"
         ],
         "summary": "Returns a list of plugins running on each node of a cluster",
         "description": "IMPORTANT: cat APIs are only intended for human consumption using the command line or Kibana console. They are not intended for use by applications. For application consumption, use the nodes info API.",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/cat-plugins.html"
-        },
         "operationId": "cat-plugins",
         "responses": {
           "200": {
@@ -1719,13 +1701,10 @@
     "/_cat/recovery": {
       "get": {
         "tags": [
-          "cat.recovery"
+          "cat"
         ],
         "summary": "Returns information about ongoing and completed shard recoveries",
         "description": "Shard recovery is the process of initializing a shard copy, such as restoring a primary shard from a snapshot or syncing a replica shard from a primary shard. When a shard recovery completes, the recovered shard is available for search and indexing.\nFor data streams, the API returns information about the stream’s backing indices.\nIMPORTANT: cat APIs are only intended for human consumption using the command line or Kibana console. They are not intended for use by applications. For application consumption, use the index recovery API.",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/cat-recovery.html"
-        },
         "operationId": "cat-recovery",
         "parameters": [
           {
@@ -1748,13 +1727,10 @@
     "/_cat/recovery/{index}": {
       "get": {
         "tags": [
-          "cat.recovery"
+          "cat"
         ],
         "summary": "Returns information about ongoing and completed shard recoveries",
         "description": "Shard recovery is the process of initializing a shard copy, such as restoring a primary shard from a snapshot or syncing a replica shard from a primary shard. When a shard recovery completes, the recovered shard is available for search and indexing.\nFor data streams, the API returns information about the stream’s backing indices.\nIMPORTANT: cat APIs are only intended for human consumption using the command line or Kibana console. They are not intended for use by applications. For application consumption, use the index recovery API.",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/cat-recovery.html"
-        },
         "operationId": "cat-recovery-1",
         "parameters": [
           {
@@ -1780,13 +1756,10 @@
     "/_cat/repositories": {
       "get": {
         "tags": [
-          "cat.repositories"
+          "cat"
         ],
         "summary": "Returns the snapshot repositories for a cluster",
         "description": "IMPORTANT: cat APIs are only intended for human consumption using the command line or Kibana console. They are not intended for use by applications. For application consumption, use the get snapshot repository API.",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/cat-repositories.html"
-        },
         "operationId": "cat-repositories",
         "responses": {
           "200": {
@@ -1803,19 +1776,16 @@
             }
           }
         },
-        "x-available-since": "2.1.0"
+        "x-state": "Added in 2.1.0"
       }
     },
     "/_cat/segments": {
       "get": {
         "tags": [
-          "cat.segments"
+          "cat"
         ],
         "summary": "Returns low-level information about the Lucene segments in index shards",
         "description": "For data streams, the API returns information about the backing indices.\nIMPORTANT: cat APIs are only intended for human consumption using the command line or Kibana console. They are not intended for use by applications. For application consumption, use the index segments API.",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/cat-segments.html"
-        },
         "operationId": "cat-segments",
         "parameters": [
           {
@@ -1832,13 +1802,10 @@
     "/_cat/segments/{index}": {
       "get": {
         "tags": [
-          "cat.segments"
+          "cat"
         ],
         "summary": "Returns low-level information about the Lucene segments in index shards",
         "description": "For data streams, the API returns information about the backing indices.\nIMPORTANT: cat APIs are only intended for human consumption using the command line or Kibana console. They are not intended for use by applications. For application consumption, use the index segments API.",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/cat-segments.html"
-        },
         "operationId": "cat-segments-1",
         "parameters": [
           {
@@ -1858,13 +1825,10 @@
     "/_cat/shards": {
       "get": {
         "tags": [
-          "cat.shards"
+          "cat"
         ],
         "summary": "Returns information about the shards in a cluster",
         "description": "For data streams, the API returns information about the backing indices.\nIMPORTANT: cat APIs are only intended for human consumption using the command line or Kibana console. They are not intended for use by applications.",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/cat-shards.html"
-        },
         "operationId": "cat-shards",
         "parameters": [
           {
@@ -1881,13 +1845,10 @@
     "/_cat/shards/{index}": {
       "get": {
         "tags": [
-          "cat.shards"
+          "cat"
         ],
         "summary": "Returns information about the shards in a cluster",
         "description": "For data streams, the API returns information about the backing indices.\nIMPORTANT: cat APIs are only intended for human consumption using the command line or Kibana console. They are not intended for use by applications.",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/cat-shards.html"
-        },
         "operationId": "cat-shards-1",
         "parameters": [
           {
@@ -1907,13 +1868,10 @@
     "/_cat/snapshots": {
       "get": {
         "tags": [
-          "cat.snapshots"
+          "cat"
         ],
         "summary": "Returns information about the snapshots stored in one or more repositories",
         "description": "A snapshot is a backup of an index or running Elasticsearch cluster.\nIMPORTANT: cat APIs are only intended for human consumption using the command line or Kibana console. They are not intended for use by applications. For application consumption, use the get snapshot API.",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/cat-snapshots.html"
-        },
         "operationId": "cat-snapshots",
         "parameters": [
           {
@@ -1925,19 +1883,16 @@
             "$ref": "#/components/responses/cat.snapshots#200"
           }
         },
-        "x-available-since": "2.1.0"
+        "x-state": "Added in 2.1.0"
       }
     },
     "/_cat/snapshots/{repository}": {
       "get": {
         "tags": [
-          "cat.snapshots"
+          "cat"
         ],
         "summary": "Returns information about the snapshots stored in one or more repositories",
         "description": "A snapshot is a backup of an index or running Elasticsearch cluster.\nIMPORTANT: cat APIs are only intended for human consumption using the command line or Kibana console. They are not intended for use by applications. For application consumption, use the get snapshot API.",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/cat-snapshots.html"
-        },
         "operationId": "cat-snapshots-1",
         "parameters": [
           {
@@ -1952,19 +1907,16 @@
             "$ref": "#/components/responses/cat.snapshots#200"
           }
         },
-        "x-available-since": "2.1.0"
+        "x-state": "Added in 2.1.0"
       }
     },
     "/_cat/tasks": {
       "get": {
         "tags": [
-          "cat.tasks"
+          "cat"
         ],
         "summary": "Returns information about tasks currently executing in the cluster",
         "description": "IMPORTANT: cat APIs are only intended for human consumption using the command line or Kibana console. They are not intended for use by applications. For application consumption, use the task management API.",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/tasks.html"
-        },
         "operationId": "cat-tasks",
         "parameters": [
           {
@@ -2029,39 +1981,32 @@
             }
           }
         },
-        "x-technical-preview": true,
-        "x-available-since": "5.0.0"
+        "x-state": "Technical preview"
       }
     },
     "/_cat/templates": {
       "get": {
         "tags": [
-          "cat.templates"
+          "cat"
         ],
         "summary": "Returns information about index templates in a cluster",
         "description": "You can use index templates to apply index settings and field mappings to new indices at creation.\nIMPORTANT: cat APIs are only intended for human consumption using the command line or Kibana console. They are not intended for use by applications. For application consumption, use the get index template API.",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/cat-templates.html"
-        },
         "operationId": "cat-templates",
         "responses": {
           "200": {
             "$ref": "#/components/responses/cat.templates#200"
           }
         },
-        "x-available-since": "5.2.0"
+        "x-state": "Added in 5.2.0"
       }
     },
     "/_cat/templates/{name}": {
       "get": {
         "tags": [
-          "cat.templates"
+          "cat"
         ],
         "summary": "Returns information about index templates in a cluster",
         "description": "You can use index templates to apply index settings and field mappings to new indices at creation.\nIMPORTANT: cat APIs are only intended for human consumption using the command line or Kibana console. They are not intended for use by applications. For application consumption, use the get index template API.",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/cat-templates.html"
-        },
         "operationId": "cat-templates-1",
         "parameters": [
           {
@@ -2073,19 +2018,16 @@
             "$ref": "#/components/responses/cat.templates#200"
           }
         },
-        "x-available-since": "5.2.0"
+        "x-state": "Added in 5.2.0"
       }
     },
     "/_cat/thread_pool": {
       "get": {
         "tags": [
-          "cat.thread_pool"
+          "cat"
         ],
         "summary": "Returns thread pool statistics for each node in a cluster",
         "description": "Returned information includes all built-in thread pools and custom thread pools.\nIMPORTANT: cat APIs are only intended for human consumption using the command line or Kibana console. They are not intended for use by applications. For application consumption, use the nodes info API.",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/cat-thread-pool.html"
-        },
         "operationId": "cat-thread-pool",
         "parameters": [
           {
@@ -2102,13 +2044,10 @@
     "/_cat/thread_pool/{thread_pool_patterns}": {
       "get": {
         "tags": [
-          "cat.thread_pool"
+          "cat"
         ],
         "summary": "Returns thread pool statistics for each node in a cluster",
         "description": "Returned information includes all built-in thread pools and custom thread pools.\nIMPORTANT: cat APIs are only intended for human consumption using the command line or Kibana console. They are not intended for use by applications. For application consumption, use the nodes info API.",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/cat-thread-pool.html"
-        },
         "operationId": "cat-thread-pool-1",
         "parameters": [
           {
@@ -2128,13 +2067,10 @@
     "/_cat/transforms": {
       "get": {
         "tags": [
-          "cat.transforms"
+          "cat"
         ],
         "summary": "Get transforms",
         "description": "Returns configuration and usage information about transforms.\n\nCAT APIs are only intended for human consumption using the Kibana\nconsole or command line. They are not intended for use by applications. For\napplication consumption, use the get transform statistics API.",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/cat-transforms.html"
-        },
         "operationId": "cat-transforms",
         "parameters": [
           {
@@ -2161,19 +2097,16 @@
             "$ref": "#/components/responses/cat.transforms#200"
           }
         },
-        "x-available-since": "7.7.0"
+        "x-state": "Added in 7.7.0"
       }
     },
     "/_cat/transforms/{transform_id}": {
       "get": {
         "tags": [
-          "cat.transforms"
+          "cat"
         ],
         "summary": "Get transforms",
         "description": "Returns configuration and usage information about transforms.\n\nCAT APIs are only intended for human consumption using the Kibana\nconsole or command line. They are not intended for use by applications. For\napplication consumption, use the get transform statistics API.",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/cat-transforms.html"
-        },
         "operationId": "cat-transforms-1",
         "parameters": [
           {
@@ -2203,19 +2136,16 @@
             "$ref": "#/components/responses/cat.transforms#200"
           }
         },
-        "x-available-since": "7.7.0"
+        "x-state": "Added in 7.7.0"
       }
     },
     "/_ccr/auto_follow/{name}": {
       "get": {
         "tags": [
-          "ccr.get_auto_follow_pattern"
+          "ccr"
         ],
         "summary": "Gets configured auto-follow patterns",
         "description": "Returns the specified auto-follow pattern collection.",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/ccr-get-auto-follow-pattern.html"
-        },
         "operationId": "ccr-get-auto-follow-pattern-1",
         "parameters": [
           {
@@ -2227,17 +2157,14 @@
             "$ref": "#/components/responses/ccr.get_auto_follow_pattern#200"
           }
         },
-        "x-available-since": "6.5.0"
+        "x-state": "Added in 6.5.0"
       },
       "put": {
         "tags": [
-          "ccr.put_auto_follow_pattern"
+          "ccr"
         ],
         "summary": "Creates a new named collection of auto-follow patterns against a specified remote cluster",
         "description": "Newly created indices on the remote cluster matching any of the specified patterns will be automatically configured as follower indices.",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/ccr-put-auto-follow-pattern.html"
-        },
         "operationId": "ccr-put-auto-follow-pattern",
         "parameters": [
           {
@@ -2259,9 +2186,6 @@
                 "type": "object",
                 "properties": {
                   "remote_cluster": {
-                    "externalDocs": {
-                      "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/modules-remote-clusters.html"
-                    },
                     "description": "The remote cluster containing the leader indices to match against.",
                     "type": "string"
                   },
@@ -2337,16 +2261,13 @@
             }
           }
         },
-        "x-available-since": "6.5.0"
+        "x-state": "Added in 6.5.0"
       },
       "delete": {
         "tags": [
-          "ccr.delete_auto_follow_pattern"
+          "ccr"
         ],
         "summary": "Deletes auto-follow patterns",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/ccr-delete-auto-follow-pattern.html"
-        },
         "operationId": "ccr-delete-auto-follow-pattern",
         "parameters": [
           {
@@ -2373,18 +2294,15 @@
             }
           }
         },
-        "x-available-since": "6.5.0"
+        "x-state": "Added in 6.5.0"
       }
     },
     "/{index}/_ccr/follow": {
       "put": {
         "tags": [
-          "ccr.follow"
+          "ccr"
         ],
         "summary": "Creates a new follower index configured to follow the referenced leader index",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/ccr-put-follow.html"
-        },
         "operationId": "ccr-follow",
         "parameters": [
           {
@@ -2485,18 +2403,15 @@
             }
           }
         },
-        "x-available-since": "6.5.0"
+        "x-state": "Added in 6.5.0"
       }
     },
     "/{index}/_ccr/info": {
       "get": {
         "tags": [
-          "ccr.follow_info"
+          "ccr"
         ],
         "summary": "Retrieves information about all follower indices, including parameters and status for each follower index",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/ccr-get-follow-info.html"
-        },
         "operationId": "ccr-follow-info",
         "parameters": [
           {
@@ -2534,18 +2449,15 @@
             }
           }
         },
-        "x-available-since": "6.7.0"
+        "x-state": "Added in 6.7.0"
       }
     },
     "/{index}/_ccr/stats": {
       "get": {
         "tags": [
-          "ccr.follow_stats"
+          "ccr"
         ],
         "summary": "Retrieves follower stats. return shard-level stats about the following tasks associated with each shard for the specified indices",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/ccr-get-follow-stats.html"
-        },
         "operationId": "ccr-follow-stats",
         "parameters": [
           {
@@ -2583,18 +2495,15 @@
             }
           }
         },
-        "x-available-since": "6.5.0"
+        "x-state": "Added in 6.5.0"
       }
     },
     "/{index}/_ccr/forget_follower": {
       "post": {
         "tags": [
-          "ccr.forget_follower"
+          "ccr"
         ],
         "summary": "Removes the follower retention leases from the leader",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/ccr-post-forget-follower.html"
-        },
         "operationId": "ccr-forget-follower",
         "parameters": [
           {
@@ -2653,37 +2562,31 @@
             }
           }
         },
-        "x-available-since": "6.7.0"
+        "x-state": "Added in 6.7.0"
       }
     },
     "/_ccr/auto_follow": {
       "get": {
         "tags": [
-          "ccr.get_auto_follow_pattern"
+          "ccr"
         ],
         "summary": "Gets configured auto-follow patterns",
         "description": "Returns the specified auto-follow pattern collection.",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/ccr-get-auto-follow-pattern.html"
-        },
         "operationId": "ccr-get-auto-follow-pattern",
         "responses": {
           "200": {
             "$ref": "#/components/responses/ccr.get_auto_follow_pattern#200"
           }
         },
-        "x-available-since": "6.5.0"
+        "x-state": "Added in 6.5.0"
       }
     },
     "/_ccr/auto_follow/{name}/pause": {
       "post": {
         "tags": [
-          "ccr.pause_auto_follow_pattern"
+          "ccr"
         ],
         "summary": "Pauses an auto-follow pattern",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/ccr-pause-auto-follow-pattern.html"
-        },
         "operationId": "ccr-pause-auto-follow-pattern",
         "parameters": [
           {
@@ -2710,19 +2613,16 @@
             }
           }
         },
-        "x-available-since": "7.5.0"
+        "x-state": "Added in 7.5.0"
       }
     },
     "/{index}/_ccr/pause_follow": {
       "post": {
         "tags": [
-          "ccr.pause_follow"
+          "ccr"
         ],
         "summary": "Pauses a follower index",
         "description": "The follower index will not fetch any additional operations from the leader index.",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/ccr-post-pause-follow.html"
-        },
         "operationId": "ccr-pause-follow",
         "parameters": [
           {
@@ -2749,18 +2649,15 @@
             }
           }
         },
-        "x-available-since": "6.5.0"
+        "x-state": "Added in 6.5.0"
       }
     },
     "/_ccr/auto_follow/{name}/resume": {
       "post": {
         "tags": [
-          "ccr.resume_auto_follow_pattern"
+          "ccr"
         ],
         "summary": "Resumes an auto-follow pattern that has been paused",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/ccr-resume-auto-follow-pattern.html"
-        },
         "operationId": "ccr-resume-auto-follow-pattern",
         "parameters": [
           {
@@ -2787,18 +2684,15 @@
             }
           }
         },
-        "x-available-since": "7.5.0"
+        "x-state": "Added in 7.5.0"
       }
     },
     "/{index}/_ccr/resume_follow": {
       "post": {
         "tags": [
-          "ccr.resume_follow"
+          "ccr"
         ],
         "summary": "Resumes a follower index that has been paused",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/ccr-post-resume-follow.html"
-        },
         "operationId": "ccr-resume-follow",
         "parameters": [
           {
@@ -2866,18 +2760,15 @@
             }
           }
         },
-        "x-available-since": "6.5.0"
+        "x-state": "Added in 6.5.0"
       }
     },
     "/_ccr/stats": {
       "get": {
         "tags": [
-          "ccr.stats"
+          "ccr"
         ],
         "summary": "Gets all stats related to cross-cluster replication",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/ccr-get-stats.html"
-        },
         "operationId": "ccr-stats",
         "responses": {
           "200": {
@@ -2903,18 +2794,15 @@
             }
           }
         },
-        "x-available-since": "6.5.0"
+        "x-state": "Added in 6.5.0"
       }
     },
     "/{index}/_ccr/unfollow": {
       "post": {
         "tags": [
-          "ccr.unfollow"
+          "ccr"
         ],
         "summary": "Stops the following task associated with a follower index and removes index metadata and settings associated with cross-cluster replication",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/ccr-post-unfollow.html"
-        },
         "operationId": "ccr-unfollow",
         "parameters": [
           {
@@ -2941,17 +2829,18 @@
             }
           }
         },
-        "x-available-since": "6.5.0"
+        "x-state": "Added in 6.5.0"
       }
     },
     "/_search/scroll": {
       "get": {
         "tags": [
-          "scroll"
+          "search"
         ],
-        "summary": "Allows to retrieve a large numbers of results from a single search request",
+        "summary": "Run a scrolling search",
+        "description": "IMPORTANT: The scroll API is no longer recommend for deep pagination. If you need to preserve the index state while paging through more than 10,000 hits, use the `search_after` parameter with a point in time (PIT).\n\nThe scroll API gets large sets of results from a single scrolling search request.\nTo get the necessary scroll ID, submit a search API request that includes an argument for the `scroll` query parameter.\nThe `scroll` parameter indicates how long Elasticsearch should retain the search context for the request.\nThe search response returns a scroll ID in the `_scroll_id` response body parameter.\nYou can then use the scroll ID with the scroll API to retrieve the next batch of results for the request.\nIf the Elasticsearch security features are enabled, the access to the results of a specific scroll ID is restricted to the user or API key that submitted the search.\n\nYou can also use the scroll API to specify a new scroll parameter that extends or shortens the retention period for the search context.\n\nIMPORTANT: Results from a scrolling search reflect the state of the index at the time of the initial search request. Subsequent indexing or document changes only affect later search and scroll requests.",
         "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/master/search-request-body.html#request-body-search-scroll"
+          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/paginate-search-results.html#scroll-search-results"
         },
         "operationId": "scroll",
         "parameters": [
@@ -2976,11 +2865,12 @@
       },
       "post": {
         "tags": [
-          "scroll"
+          "search"
         ],
-        "summary": "Allows to retrieve a large numbers of results from a single search request",
+        "summary": "Run a scrolling search",
+        "description": "IMPORTANT: The scroll API is no longer recommend for deep pagination. If you need to preserve the index state while paging through more than 10,000 hits, use the `search_after` parameter with a point in time (PIT).\n\nThe scroll API gets large sets of results from a single scrolling search request.\nTo get the necessary scroll ID, submit a search API request that includes an argument for the `scroll` query parameter.\nThe `scroll` parameter indicates how long Elasticsearch should retain the search context for the request.\nThe search response returns a scroll ID in the `_scroll_id` response body parameter.\nYou can then use the scroll ID with the scroll API to retrieve the next batch of results for the request.\nIf the Elasticsearch security features are enabled, the access to the results of a specific scroll ID is restricted to the user or API key that submitted the search.\n\nYou can also use the scroll API to specify a new scroll parameter that extends or shortens the retention period for the search context.\n\nIMPORTANT: Results from a scrolling search reflect the state of the index at the time of the initial search request. Subsequent indexing or document changes only affect later search and scroll requests.",
         "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/master/search-request-body.html#request-body-search-scroll"
+          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/paginate-search-results.html#scroll-search-results"
         },
         "operationId": "scroll-1",
         "parameters": [
@@ -3005,12 +2895,10 @@
       },
       "delete": {
         "tags": [
-          "clear_scroll"
+          "search"
         ],
-        "summary": "Clears the search context and results for a scrolling search",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/clear-scroll-api.html"
-        },
+        "summary": "Clear a scrolling search",
+        "description": "Clear the search context and results for a scrolling search.",
         "operationId": "clear-scroll",
         "requestBody": {
           "$ref": "#/components/requestBodies/clear_scroll"
@@ -3025,11 +2913,12 @@
     "/_search/scroll/{scroll_id}": {
       "get": {
         "tags": [
-          "scroll"
+          "search"
         ],
-        "summary": "Allows to retrieve a large numbers of results from a single search request",
+        "summary": "Run a scrolling search",
+        "description": "IMPORTANT: The scroll API is no longer recommend for deep pagination. If you need to preserve the index state while paging through more than 10,000 hits, use the `search_after` parameter with a point in time (PIT).\n\nThe scroll API gets large sets of results from a single scrolling search request.\nTo get the necessary scroll ID, submit a search API request that includes an argument for the `scroll` query parameter.\nThe `scroll` parameter indicates how long Elasticsearch should retain the search context for the request.\nThe search response returns a scroll ID in the `_scroll_id` response body parameter.\nYou can then use the scroll ID with the scroll API to retrieve the next batch of results for the request.\nIf the Elasticsearch security features are enabled, the access to the results of a specific scroll ID is restricted to the user or API key that submitted the search.\n\nYou can also use the scroll API to specify a new scroll parameter that extends or shortens the retention period for the search context.\n\nIMPORTANT: Results from a scrolling search reflect the state of the index at the time of the initial search request. Subsequent indexing or document changes only affect later search and scroll requests.",
         "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/master/search-request-body.html#request-body-search-scroll"
+          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/paginate-search-results.html#scroll-search-results"
         },
         "operationId": "scroll-2",
         "parameters": [
@@ -3057,11 +2946,12 @@
       },
       "post": {
         "tags": [
-          "scroll"
+          "search"
         ],
-        "summary": "Allows to retrieve a large numbers of results from a single search request",
+        "summary": "Run a scrolling search",
+        "description": "IMPORTANT: The scroll API is no longer recommend for deep pagination. If you need to preserve the index state while paging through more than 10,000 hits, use the `search_after` parameter with a point in time (PIT).\n\nThe scroll API gets large sets of results from a single scrolling search request.\nTo get the necessary scroll ID, submit a search API request that includes an argument for the `scroll` query parameter.\nThe `scroll` parameter indicates how long Elasticsearch should retain the search context for the request.\nThe search response returns a scroll ID in the `_scroll_id` response body parameter.\nYou can then use the scroll ID with the scroll API to retrieve the next batch of results for the request.\nIf the Elasticsearch security features are enabled, the access to the results of a specific scroll ID is restricted to the user or API key that submitted the search.\n\nYou can also use the scroll API to specify a new scroll parameter that extends or shortens the retention period for the search context.\n\nIMPORTANT: Results from a scrolling search reflect the state of the index at the time of the initial search request. Subsequent indexing or document changes only affect later search and scroll requests.",
         "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/master/search-request-body.html#request-body-search-scroll"
+          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/paginate-search-results.html#scroll-search-results"
         },
         "operationId": "scroll-3",
         "parameters": [
@@ -3089,12 +2979,10 @@
       },
       "delete": {
         "tags": [
-          "clear_scroll"
+          "search"
         ],
-        "summary": "Clears the search context and results for a scrolling search",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/clear-scroll-api.html"
-        },
+        "summary": "Clear a scrolling search",
+        "description": "Clear the search context and results for a scrolling search.",
         "operationId": "clear-scroll-1",
         "parameters": [
           {
@@ -3114,12 +3002,10 @@
     "/_pit": {
       "delete": {
         "tags": [
-          "close_point_in_time"
+          "search"
         ],
-        "summary": "Closes a point-in-time",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/point-in-time-api.html"
-        },
+        "summary": "Close a point in time",
+        "description": "A point in time must be opened explicitly before being used in search requests.\nThe `keep_alive` parameter tells Elasticsearch how long it should persist.\nA point in time is automatically closed when the `keep_alive` period has elapsed.\nHowever, keeping points in time has a cost; close them as soon as they are no longer required for search requests.",
         "operationId": "close-point-in-time",
         "requestBody": {
           "content": {
@@ -3162,18 +3048,16 @@
             }
           }
         },
-        "x-available-since": "7.10.0"
+        "x-state": "Added in 7.10.0"
       }
     },
     "/_cluster/allocation/explain": {
       "get": {
         "tags": [
-          "cluster.allocation_explain"
+          "cluster"
         ],
-        "summary": "Provides explanations for shard allocations in the cluster",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/cluster-allocation-explain.html"
-        },
+        "summary": "Explain the shard allocations",
+        "description": "Get explanations for shard allocations in the cluster.\nFor unassigned shards, it provides an explanation for why the shard is unassigned.\nFor assigned shards, it provides an explanation for why the shard is remaining on its current node and has not moved or rebalanced to another node.\nThis API can be very useful when attempting to diagnose why a shard is unassigned or why a shard continues to remain on its current node when you might expect otherwise.",
         "operationId": "cluster-allocation-explain",
         "parameters": [
           {
@@ -3191,16 +3075,14 @@
             "$ref": "#/components/responses/cluster.allocation_explain#200"
           }
         },
-        "x-available-since": "5.0.0"
+        "x-state": "Added in 5.0.0"
       },
       "post": {
         "tags": [
-          "cluster.allocation_explain"
+          "cluster"
         ],
-        "summary": "Provides explanations for shard allocations in the cluster",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/cluster-allocation-explain.html"
-        },
+        "summary": "Explain the shard allocations",
+        "description": "Get explanations for shard allocations in the cluster.\nFor unassigned shards, it provides an explanation for why the shard is unassigned.\nFor assigned shards, it provides an explanation for why the shard is remaining on its current node and has not moved or rebalanced to another node.\nThis API can be very useful when attempting to diagnose why a shard is unassigned or why a shard continues to remain on its current node when you might expect otherwise.",
         "operationId": "cluster-allocation-explain-1",
         "parameters": [
           {
@@ -3218,19 +3100,16 @@
             "$ref": "#/components/responses/cluster.allocation_explain#200"
           }
         },
-        "x-available-since": "5.0.0"
+        "x-state": "Added in 5.0.0"
       }
     },
     "/_component_template/{name}": {
       "get": {
         "tags": [
-          "cluster.get_component_template"
+          "indices"
         ],
         "summary": "Get component templates",
         "description": "Retrieves information about component templates.",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/indices-component-template.html"
-        },
         "operationId": "cluster-get-component-template-1",
         "parameters": [
           {
@@ -3254,17 +3133,14 @@
             "$ref": "#/components/responses/cluster.get_component_template#200"
           }
         },
-        "x-available-since": "7.8.0"
+        "x-state": "Added in 7.8.0"
       },
       "put": {
         "tags": [
-          "cluster.put_component_template"
+          "indices"
         ],
         "summary": "Create or update a component template",
         "description": "Creates or updates a component template.\nComponent templates are building blocks for constructing index templates that specify index mappings, settings, and aliases.\n\nAn index template can be composed of multiple component templates.\nTo use a component template, specify it in an index template’s `composed_of` list.\nComponent templates are only applied to new data streams and indices as part of a matching index template.\n\nSettings and mappings specified directly in the index template or the create index request override any settings or mappings specified in a component template.\n\nComponent templates are only used during index creation.\nFor data streams, this includes data stream creation and the creation of a stream’s backing indices.\nChanges to component templates do not affect existing indices, including a stream’s backing indices.\n\nYou can use C-style `/* *\\/` block comments in component templates.\nYou can include comments anywhere in the request body except before the opening curly bracket.",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/indices-component-template.html"
-        },
         "operationId": "cluster-put-component-template",
         "parameters": [
           {
@@ -3285,17 +3161,14 @@
             "$ref": "#/components/responses/cluster.put_component_template#200"
           }
         },
-        "x-available-since": "7.8.0"
+        "x-state": "Added in 7.8.0"
       },
       "post": {
         "tags": [
-          "cluster.put_component_template"
+          "indices"
         ],
         "summary": "Create or update a component template",
         "description": "Creates or updates a component template.\nComponent templates are building blocks for constructing index templates that specify index mappings, settings, and aliases.\n\nAn index template can be composed of multiple component templates.\nTo use a component template, specify it in an index template’s `composed_of` list.\nComponent templates are only applied to new data streams and indices as part of a matching index template.\n\nSettings and mappings specified directly in the index template or the create index request override any settings or mappings specified in a component template.\n\nComponent templates are only used during index creation.\nFor data streams, this includes data stream creation and the creation of a stream’s backing indices.\nChanges to component templates do not affect existing indices, including a stream’s backing indices.\n\nYou can use C-style `/* *\\/` block comments in component templates.\nYou can include comments anywhere in the request body except before the opening curly bracket.",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/indices-component-template.html"
-        },
         "operationId": "cluster-put-component-template-1",
         "parameters": [
           {
@@ -3316,17 +3189,14 @@
             "$ref": "#/components/responses/cluster.put_component_template#200"
           }
         },
-        "x-available-since": "7.8.0"
+        "x-state": "Added in 7.8.0"
       },
       "delete": {
         "tags": [
-          "cluster.delete_component_template"
+          "indices"
         ],
         "summary": "Delete component templates",
         "description": "Deletes component templates.\nComponent templates are building blocks for constructing index templates that specify index mappings, settings, and aliases.",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/indices-component-template.html"
-        },
         "operationId": "cluster-delete-component-template",
         "parameters": [
           {
@@ -3373,17 +3243,14 @@
             }
           }
         },
-        "x-available-since": "7.8.0"
+        "x-state": "Added in 7.8.0"
       },
       "head": {
         "tags": [
-          "cluster.exists_component_template"
+          "indices"
         ],
         "summary": "Check component templates",
         "description": "Returns information about whether a particular component template exists.",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/indices-component-template.html"
-        },
         "operationId": "cluster-exists-component-template",
         "parameters": [
           {
@@ -3426,17 +3293,18 @@
             }
           }
         },
-        "x-available-since": "7.8.0"
+        "x-state": "Added in 7.8.0"
       }
     },
     "/_cluster/voting_config_exclusions": {
       "post": {
         "tags": [
-          "cluster.post_voting_config_exclusions"
+          "cluster"
         ],
-        "summary": "Updates the cluster voting config exclusions by node ids or node names",
+        "summary": "Update voting configuration exclusions",
+        "description": "Update the cluster voting config exclusions by node IDs or node names.\nBy default, if there are more than three master-eligible nodes in the cluster and you remove fewer than half of the master-eligible nodes in the cluster at once, the voting configuration automatically shrinks.\nIf you want to shrink the voting configuration to contain fewer than three nodes or to remove half or more of the master-eligible nodes in the cluster at once, use this API to remove departing nodes from the voting configuration manually.\nThe API adds an entry for each specified node to the cluster’s voting configuration exclusions list.\nIt then waits until the cluster has reconfigured its voting configuration to exclude the specified nodes.\n\nClusters should have no voting configuration exclusions in normal operation.\nOnce the excluded nodes have stopped, clear the voting configuration exclusions with `DELETE /_cluster/voting_config_exclusions`.\nThis API waits for the nodes to be fully removed from the cluster before it returns.\nIf your cluster has voting configuration exclusions for nodes that you no longer intend to remove, use `DELETE /_cluster/voting_config_exclusions?wait_for_removal=false` to clear the voting configuration exclusions without waiting for the nodes to leave the cluster.\n\nA response to `POST /_cluster/voting_config_exclusions` with an HTTP status code of 200 OK guarantees that the node has been removed from the voting configuration and will not be reinstated until the voting configuration exclusions are cleared by calling `DELETE /_cluster/voting_config_exclusions`.\nIf the call to `POST /_cluster/voting_config_exclusions` fails or returns a response with an HTTP status code other than 200 OK then the node may not have been removed from the voting configuration.\nIn that case, you may safely retry the call.\n\nNOTE: Voting exclusions are required only when you remove at least half of the master-eligible nodes from a cluster in a short time period.\nThey are not required when removing master-ineligible nodes or when removing fewer than half of the master-eligible nodes.",
         "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/voting-config-exclusions.html"
+          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/add-elasticsearch-nodes.html"
         },
         "operationId": "cluster-post-voting-config-exclusions",
         "parameters": [
@@ -3479,15 +3347,16 @@
             }
           }
         },
-        "x-available-since": "7.0.0"
+        "x-state": "Added in 7.0.0"
       },
       "delete": {
         "tags": [
-          "cluster.delete_voting_config_exclusions"
+          "cluster"
         ],
-        "summary": "Clears cluster voting config exclusions",
+        "summary": "Clear cluster voting config exclusions",
+        "description": "Remove master-eligible nodes from the voting configuration exclusion list.",
         "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/voting-config-exclusions.html"
+          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/add-elasticsearch-nodes.html"
         },
         "operationId": "cluster-delete-voting-config-exclusions",
         "parameters": [
@@ -3510,19 +3379,16 @@
             }
           }
         },
-        "x-available-since": "7.0.0"
+        "x-state": "Added in 7.0.0"
       }
     },
     "/_component_template": {
       "get": {
         "tags": [
-          "cluster.get_component_template"
+          "indices"
         ],
         "summary": "Get component templates",
         "description": "Retrieves information about component templates.",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/indices-component-template.html"
-        },
         "operationId": "cluster-get-component-template",
         "parameters": [
           {
@@ -3543,19 +3409,16 @@
             "$ref": "#/components/responses/cluster.get_component_template#200"
           }
         },
-        "x-available-since": "7.8.0"
+        "x-state": "Added in 7.8.0"
       }
     },
     "/_cluster/settings": {
       "get": {
         "tags": [
-          "cluster.get_settings"
+          "cluster"
         ],
-        "summary": "Returns cluster-wide settings",
+        "summary": "Get cluster-wide settings",
         "description": "By default, it returns only settings that have been explicitly defined.",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/cluster-get-settings.html"
-        },
         "operationId": "cluster-get-settings",
         "parameters": [
           {
@@ -3638,12 +3501,10 @@
       },
       "put": {
         "tags": [
-          "cluster.put_settings"
+          "cluster"
         ],
-        "summary": "Updates the cluster settings",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/cluster-update-settings.html"
-        },
+        "summary": "Update the cluster settings",
+        "description": "Configure and update dynamic settings on a running cluster.\nYou can also configure dynamic settings locally on an unstarted or shut down node in `elasticsearch.yml`.\n\nUpdates made with this API can be persistent, which apply across cluster restarts, or transient, which reset after a cluster restart.\nYou can also reset transient or persistent settings by assigning them a null value.\n\nIf you configure the same setting using multiple methods, Elasticsearch applies the settings in following order of precedence: 1) Transient setting; 2) Persistent setting; 3) `elasticsearch.yml` setting; 4) Default setting value.\nFor example, you can apply a transient setting to override a persistent setting or `elasticsearch.yml` setting.\nHowever, a change to an `elasticsearch.yml` setting will not override a defined transient or persistent setting.\n\nTIP: In Elastic Cloud, use the user settings feature to configure all cluster settings. This method automatically rejects unsafe settings that could break your cluster.\nIf you run Elasticsearch on your own hardware, use this API to configure dynamic cluster settings.\nOnly use `elasticsearch.yml` for static cluster settings and node settings.\nThe API doesn’t require a restart and ensures a setting’s value is the same on all nodes.\n\nWARNING: Transient cluster settings are no longer recommended. Use persistent cluster settings instead.\nIf a cluster becomes unstable, transient settings can clear unexpectedly, resulting in a potentially undesired cluster configuration.",
         "operationId": "cluster-put-settings",
         "parameters": [
           {
@@ -3740,13 +3601,10 @@
     "/_cluster/health": {
       "get": {
         "tags": [
-          "cluster.health"
+          "cluster"
         ],
-        "summary": "The cluster health API returns a simple status on the health of the cluster",
-        "description": "You can also use the API to get the health status of only specified data streams and indices. For data streams, the API retrieves the health status of the stream’s backing indices.\nThe cluster health status is: green, yellow or red. On the shard level, a red status indicates that the specific shard is not allocated in the cluster, yellow means that the primary shard is allocated but replicas are not, and green means that all shards are allocated. The index level status is controlled by the worst shard status. The cluster status is controlled by the worst index status.",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/cluster-health.html"
-        },
+        "summary": "Get the cluster health status",
+        "description": "You can also use the API to get the health status of only specified data streams and indices.\nFor data streams, the API retrieves the health status of the stream’s backing indices.\n\nThe cluster health status is: green, yellow or red.\nOn the shard level, a red status indicates that the specific shard is not allocated in the cluster. Yellow means that the primary shard is allocated but replicas are not. Green means that all shards are allocated.\nThe index level status is controlled by the worst shard status.\n\nOne of the main benefits of the API is the ability to wait until the cluster reaches a certain high watermark health level.\nThe cluster status is controlled by the worst index status.",
         "operationId": "cluster-health",
         "parameters": [
           {
@@ -3788,19 +3646,16 @@
             "$ref": "#/components/responses/cluster.health#200"
           }
         },
-        "x-available-since": "1.3.0"
+        "x-state": "Added in 1.3.0"
       }
     },
     "/_cluster/health/{index}": {
       "get": {
         "tags": [
-          "cluster.health"
+          "cluster"
         ],
-        "summary": "The cluster health API returns a simple status on the health of the cluster",
-        "description": "You can also use the API to get the health status of only specified data streams and indices. For data streams, the API retrieves the health status of the stream’s backing indices.\nThe cluster health status is: green, yellow or red. On the shard level, a red status indicates that the specific shard is not allocated in the cluster, yellow means that the primary shard is allocated but replicas are not, and green means that all shards are allocated. The index level status is controlled by the worst shard status. The cluster status is controlled by the worst index status.",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/cluster-health.html"
-        },
+        "summary": "Get the cluster health status",
+        "description": "You can also use the API to get the health status of only specified data streams and indices.\nFor data streams, the API retrieves the health status of the stream’s backing indices.\n\nThe cluster health status is: green, yellow or red.\nOn the shard level, a red status indicates that the specific shard is not allocated in the cluster. Yellow means that the primary shard is allocated but replicas are not. Green means that all shards are allocated.\nThe index level status is controlled by the worst shard status.\n\nOne of the main benefits of the API is the ability to wait until the cluster reaches a certain high watermark health level.\nThe cluster status is controlled by the worst index status.",
         "operationId": "cluster-health-1",
         "parameters": [
           {
@@ -3845,19 +3700,16 @@
             "$ref": "#/components/responses/cluster.health#200"
           }
         },
-        "x-available-since": "1.3.0"
+        "x-state": "Added in 1.3.0"
       }
     },
     "/_info/{target}": {
       "get": {
         "tags": [
-          "cluster.info"
+          "cluster"
         ],
         "summary": "Get cluster info",
         "description": "Returns basic information about the cluster.",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/cluster-info.html"
-        },
         "operationId": "cluster-info",
         "parameters": [
           {
@@ -3907,19 +3759,16 @@
             }
           }
         },
-        "x-available-since": "8.9.0"
+        "x-state": "Added in 8.9.0"
       }
     },
     "/_cluster/pending_tasks": {
       "get": {
         "tags": [
-          "cluster.pending_tasks"
+          "cluster"
         ],
-        "summary": "Returns cluster-level changes (such as create index, update mapping, allocate or fail shard) that have not yet been executed",
-        "description": "NOTE: This API returns a list of any pending updates to the cluster state.\nThese are distinct from the tasks reported by the Task Management API which include periodic tasks and tasks initiated by the user, such as node stats, search queries, or create index requests.\nHowever, if a user-initiated task such as a create index command causes a cluster state update, the activity of this task might be reported by both task api and pending cluster tasks API.",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/cluster-pending.html"
-        },
+        "summary": "Get the pending cluster tasks",
+        "description": "Get information about cluster-level changes (such as create index, update mapping, allocate or fail shard) that have not yet taken effect.\n\nNOTE: This API returns a list of any pending updates to the cluster state.\nThese are distinct from the tasks reported by the task management API which include periodic tasks and tasks initiated by the user, such as node stats, search queries, or create index requests.\nHowever, if a user-initiated task such as a create index command causes a cluster state update, the activity of this task might be reported by both task api and pending cluster tasks API.",
         "operationId": "cluster-pending-tasks",
         "parameters": [
           {
@@ -3971,13 +3820,10 @@
     "/_remote/info": {
       "get": {
         "tags": [
-          "cluster.remote_info"
+          "cluster"
         ],
-        "summary": "The cluster remote info API allows you to retrieve all of the configured\n",
-        "description": "remote cluster information. It returns connection and endpoint information\nkeyed by the configured remote cluster alias.",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/cluster-remote-info.html"
-        },
+        "summary": "Get remote cluster information",
+        "description": "Get all of the configured remote cluster information.\nThis API returns connection and endpoint information keyed by the configured remote cluster alias.",
         "operationId": "cluster-remote-info",
         "responses": {
           "200": {
@@ -3994,24 +3840,22 @@
             }
           }
         },
-        "x-available-since": "6.1.0"
+        "x-state": "Added in 6.1.0"
       }
     },
     "/_cluster/reroute": {
       "post": {
         "tags": [
-          "cluster.reroute"
+          "cluster"
         ],
-        "summary": "Allows to manually change the allocation of individual shards in the cluster",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/cluster-reroute.html"
-        },
+        "summary": "Reroute the cluster",
+        "description": "Manually change the allocation of individual shards in the cluster.\nFor example, a shard can be moved from one node to another explicitly, an allocation can be canceled, and an unassigned shard can be explicitly allocated to a specific node.\n\nIt is important to note that after processing any reroute commands Elasticsearch will perform rebalancing as normal (respecting the values of settings such as `cluster.routing.rebalance.enable`) in order to remain in a balanced state.\nFor example, if the requested allocation includes moving a shard from node1 to node2 then this may cause a shard to be moved from node2 back to node1 to even things out.\n\nThe cluster can be set to disable allocations using the `cluster.routing.allocation.enable` setting.\nIf allocations are disabled then the only allocations that will be performed are explicit ones given using the reroute command, and consequent allocations due to rebalancing.\n\nThe cluster will attempt to allocate a shard a maximum of `index.allocation.max_retries` times in a row (defaults to `5`), before giving up and leaving the shard unallocated.\nThis scenario can be caused by structural problems such as having an analyzer which refers to a stopwords file which doesn’t exist on all nodes.\n\nOnce the problem has been corrected, allocation can be manually retried by calling the reroute API with the `?retry_failed` URI query parameter, which will attempt a single retry round for these shards.",
         "operationId": "cluster-reroute",
         "parameters": [
           {
             "in": "query",
             "name": "dry_run",
-            "description": "If true, then the request simulates the operation only and returns the resulting state.",
+            "description": "If true, then the request simulates the operation.\nIt will calculate the result of applying the commands to the current cluster state and return the resulting cluster state after the commands (and rebalancing) have been applied; it will not actually perform the requested changes.",
             "deprecated": false,
             "schema": {
               "type": "boolean"
@@ -4021,7 +3865,7 @@
           {
             "in": "query",
             "name": "explain",
-            "description": "If true, then the response contains an explanation of why the commands can or cannot be executed.",
+            "description": "If true, then the response contains an explanation of why the commands can or cannot run.",
             "deprecated": false,
             "schema": {
               "type": "boolean"
@@ -4117,18 +3961,16 @@
             }
           }
         },
-        "x-available-since": "5.0.0"
+        "x-state": "Added in 5.0.0"
       }
     },
     "/_cluster/state": {
       "get": {
         "tags": [
-          "cluster.state"
+          "cluster"
         ],
-        "summary": "Returns a comprehensive information about the state of the cluster",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/cluster-state.html"
-        },
+        "summary": "Get the cluster state",
+        "description": "Get comprehensive information about the state of the cluster.\n\nThe cluster state is an internal data structure which keeps track of a variety of information needed by every node, including the identity and attributes of the other nodes in the cluster; cluster-wide settings; index metadata, including the mapping and settings for each index; the location and status of every shard copy in the cluster.\n\nThe elected master node ensures that every node in the cluster has a copy of the same cluster state.\nThis API lets you retrieve a representation of this internal state for debugging or diagnostic purposes.\nYou may need to consult the Elasticsearch source code to determine the precise meaning of the response.\n\nBy default the API will route requests to the elected master node since this node is the authoritative source of cluster states.\nYou can also retrieve the cluster state held on the node handling the API request by adding the `?local=true` query parameter.\n\nElasticsearch may need to expend significant effort to compute a response to this API in larger clusters, and the response may comprise a very large quantity of data.\nIf you use this API repeatedly, your cluster may become unstable.\n\nWARNING: The response is a representation of an internal data structure.\nIts format is not subject to the same compatibility guarantees as other more stable APIs and may change from version to version.\nDo not query this API using external monitoring tools.\nInstead, obtain the information you require using other more stable cluster APIs.",
         "operationId": "cluster-state",
         "parameters": [
           {
@@ -4161,18 +4003,16 @@
             "$ref": "#/components/responses/cluster.state#200"
           }
         },
-        "x-available-since": "1.3.0"
+        "x-state": "Added in 1.3.0"
       }
     },
     "/_cluster/state/{metric}": {
       "get": {
         "tags": [
-          "cluster.state"
+          "cluster"
         ],
-        "summary": "Returns a comprehensive information about the state of the cluster",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/cluster-state.html"
-        },
+        "summary": "Get the cluster state",
+        "description": "Get comprehensive information about the state of the cluster.\n\nThe cluster state is an internal data structure which keeps track of a variety of information needed by every node, including the identity and attributes of the other nodes in the cluster; cluster-wide settings; index metadata, including the mapping and settings for each index; the location and status of every shard copy in the cluster.\n\nThe elected master node ensures that every node in the cluster has a copy of the same cluster state.\nThis API lets you retrieve a representation of this internal state for debugging or diagnostic purposes.\nYou may need to consult the Elasticsearch source code to determine the precise meaning of the response.\n\nBy default the API will route requests to the elected master node since this node is the authoritative source of cluster states.\nYou can also retrieve the cluster state held on the node handling the API request by adding the `?local=true` query parameter.\n\nElasticsearch may need to expend significant effort to compute a response to this API in larger clusters, and the response may comprise a very large quantity of data.\nIf you use this API repeatedly, your cluster may become unstable.\n\nWARNING: The response is a representation of an internal data structure.\nIts format is not subject to the same compatibility guarantees as other more stable APIs and may change from version to version.\nDo not query this API using external monitoring tools.\nInstead, obtain the information you require using other more stable cluster APIs.",
         "operationId": "cluster-state-1",
         "parameters": [
           {
@@ -4208,18 +4048,16 @@
             "$ref": "#/components/responses/cluster.state#200"
           }
         },
-        "x-available-since": "1.3.0"
+        "x-state": "Added in 1.3.0"
       }
     },
     "/_cluster/state/{metric}/{index}": {
       "get": {
         "tags": [
-          "cluster.state"
+          "cluster"
         ],
-        "summary": "Returns a comprehensive information about the state of the cluster",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/cluster-state.html"
-        },
+        "summary": "Get the cluster state",
+        "description": "Get comprehensive information about the state of the cluster.\n\nThe cluster state is an internal data structure which keeps track of a variety of information needed by every node, including the identity and attributes of the other nodes in the cluster; cluster-wide settings; index metadata, including the mapping and settings for each index; the location and status of every shard copy in the cluster.\n\nThe elected master node ensures that every node in the cluster has a copy of the same cluster state.\nThis API lets you retrieve a representation of this internal state for debugging or diagnostic purposes.\nYou may need to consult the Elasticsearch source code to determine the precise meaning of the response.\n\nBy default the API will route requests to the elected master node since this node is the authoritative source of cluster states.\nYou can also retrieve the cluster state held on the node handling the API request by adding the `?local=true` query parameter.\n\nElasticsearch may need to expend significant effort to compute a response to this API in larger clusters, and the response may comprise a very large quantity of data.\nIf you use this API repeatedly, your cluster may become unstable.\n\nWARNING: The response is a representation of an internal data structure.\nIts format is not subject to the same compatibility guarantees as other more stable APIs and may change from version to version.\nDo not query this API using external monitoring tools.\nInstead, obtain the information you require using other more stable cluster APIs.",
         "operationId": "cluster-state-2",
         "parameters": [
           {
@@ -4258,23 +4096,20 @@
             "$ref": "#/components/responses/cluster.state#200"
           }
         },
-        "x-available-since": "1.3.0"
+        "x-state": "Added in 1.3.0"
       }
     },
     "/_cluster/stats": {
       "get": {
         "tags": [
-          "cluster.stats"
+          "cluster"
         ],
-        "summary": "Returns cluster statistics",
-        "description": "It returns basic index metrics (shard numbers, store size, memory usage) and information about the current nodes that form the cluster (number, roles, os, jvm versions, memory usage, cpu and installed plugins).",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/cluster-stats.html"
-        },
+        "summary": "Get cluster statistics",
+        "description": "Get basic index metrics (shard numbers, store size, memory usage) and information about the current nodes that form the cluster (number, roles, os, jvm versions, memory usage, cpu and installed plugins).",
         "operationId": "cluster-stats",
         "parameters": [
           {
-            "$ref": "#/components/parameters/cluster.stats#flat_settings"
+            "$ref": "#/components/parameters/cluster.stats#include_remotes"
           },
           {
             "$ref": "#/components/parameters/cluster.stats#timeout"
@@ -4285,26 +4120,23 @@
             "$ref": "#/components/responses/cluster.stats#200"
           }
         },
-        "x-available-since": "1.3.0"
+        "x-state": "Added in 1.3.0"
       }
     },
     "/_cluster/stats/nodes/{node_id}": {
       "get": {
         "tags": [
-          "cluster.stats"
+          "cluster"
         ],
-        "summary": "Returns cluster statistics",
-        "description": "It returns basic index metrics (shard numbers, store size, memory usage) and information about the current nodes that form the cluster (number, roles, os, jvm versions, memory usage, cpu and installed plugins).",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/cluster-stats.html"
-        },
+        "summary": "Get cluster statistics",
+        "description": "Get basic index metrics (shard numbers, store size, memory usage) and information about the current nodes that form the cluster (number, roles, os, jvm versions, memory usage, cpu and installed plugins).",
         "operationId": "cluster-stats-1",
         "parameters": [
           {
             "$ref": "#/components/parameters/cluster.stats#node_id"
           },
           {
-            "$ref": "#/components/parameters/cluster.stats#flat_settings"
+            "$ref": "#/components/parameters/cluster.stats#include_remotes"
           },
           {
             "$ref": "#/components/parameters/cluster.stats#timeout"
@@ -4315,18 +4147,16 @@
             "$ref": "#/components/responses/cluster.stats#200"
           }
         },
-        "x-available-since": "1.3.0"
+        "x-state": "Added in 1.3.0"
       }
     },
     "/_connector/{connector_id}/_check_in": {
       "put": {
         "tags": [
-          "connector.check_in"
+          "connector"
         ],
-        "summary": "Updates the last_seen field in the connector, and sets it to current timestamp",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/check-in-connector-api.html"
-        },
+        "summary": "Check in a connector",
+        "description": "Update the `last_seen` field in the connector and set it to the current timestamp.",
         "operationId": "connector-check-in",
         "parameters": [
           {
@@ -4361,19 +4191,16 @@
             }
           }
         },
-        "x-technical-preview": true,
-        "x-available-since": "8.12.0"
+        "x-state": "Technical preview"
       }
     },
     "/_connector/{connector_id}": {
       "get": {
         "tags": [
-          "connector.get"
+          "connector"
         ],
-        "summary": "Retrieves a connector",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/get-connector-api.html"
-        },
+        "summary": "Get a connector",
+        "description": "Get the details about a connector.",
         "operationId": "connector-get",
         "parameters": [
           {
@@ -4400,17 +4227,13 @@
             }
           }
         },
-        "x-beta": true,
-        "x-available-since": "8.12.0"
+        "x-beta": true
       },
       "put": {
         "tags": [
-          "connector.put"
+          "connector"
         ],
-        "summary": "Creates or updates a connector",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/create-connector-api.html"
-        },
+        "summary": "Create or update a connector",
         "operationId": "connector-put",
         "parameters": [
           {
@@ -4425,17 +4248,14 @@
             "$ref": "#/components/responses/connector.put#200"
           }
         },
-        "x-beta": true,
-        "x-available-since": "8.12.0"
+        "x-beta": true
       },
       "delete": {
         "tags": [
-          "connector.delete"
+          "connector"
         ],
-        "summary": "Deletes a connector",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/delete-connector-api.html"
-        },
+        "summary": "Delete a connector",
+        "description": "Removes a connector and associated sync jobs.\nThis is a destructive action that is not recoverable.\nNOTE: This action doesn’t delete any API keys, ingest pipelines, or data indices associated with the connector.\nThese need to be removed manually.",
         "operationId": "connector-delete",
         "parameters": [
           {
@@ -4472,19 +4292,16 @@
             }
           }
         },
-        "x-beta": true,
-        "x-available-since": "8.12.0"
+        "x-beta": true
       }
     },
     "/_connector/{connector_id}/_last_sync": {
       "put": {
         "tags": [
-          "connector.last_sync"
+          "connector"
         ],
-        "summary": "Updates last sync stats in the connector document",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/update-connector-last-sync-api.html"
-        },
+        "summary": "Update the connector last sync stats",
+        "description": "Update the fields related to the last sync of a connector.\nThis action is used for analytics and monitoring.",
         "operationId": "connector-last-sync",
         "parameters": [
           {
@@ -4567,19 +4384,16 @@
             }
           }
         },
-        "x-technical-preview": true,
-        "x-available-since": "8.12.0"
+        "x-state": "Technical preview"
       }
     },
     "/_connector": {
       "get": {
         "tags": [
-          "connector.list"
+          "connector"
         ],
-        "summary": "Returns existing connectors",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/list-connector-api.html"
-        },
+        "summary": "Get all connectors",
+        "description": "Get information about all connectors.",
         "operationId": "connector-list",
         "parameters": [
           {
@@ -4670,17 +4484,13 @@
             }
           }
         },
-        "x-beta": true,
-        "x-available-since": "8.12.0"
+        "x-beta": true
       },
       "put": {
         "tags": [
-          "connector.put"
+          "connector"
         ],
-        "summary": "Creates or updates a connector",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/create-connector-api.html"
-        },
+        "summary": "Create or update a connector",
         "operationId": "connector-put-1",
         "requestBody": {
           "$ref": "#/components/requestBodies/connector.put"
@@ -4690,17 +4500,14 @@
             "$ref": "#/components/responses/connector.put#200"
           }
         },
-        "x-beta": true,
-        "x-available-since": "8.12.0"
+        "x-beta": true
       },
       "post": {
         "tags": [
-          "connector.post"
+          "connector"
         ],
-        "summary": "Creates a connector",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/create-connector-api.html"
-        },
+        "summary": "Create a connector",
+        "description": "Connectors are Elasticsearch integrations that bring content from third-party data sources, which can be deployed on Elastic Cloud or hosted on your own infrastructure.\nElastic managed connectors (Native connectors) are a managed service on Elastic Cloud.\nSelf-managed connectors (Connector clients) are self-managed on your infrastructure.",
         "operationId": "connector-post",
         "requestBody": {
           "content": {
@@ -4755,19 +4562,16 @@
             }
           }
         },
-        "x-beta": true,
-        "x-available-since": "8.12.0"
+        "x-beta": true
       }
     },
     "/_connector/_sync_job/{connector_sync_job_id}/_cancel": {
       "put": {
         "tags": [
-          "connector.sync_job_cancel"
+          "connector"
         ],
-        "summary": "Cancels a connector sync job",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/cancel-connector-sync-job-api.html"
-        },
+        "summary": "Cancel a connector sync job",
+        "description": "Cancel a connector sync job, which sets the status to cancelling and updates `cancellation_requested_at` to the current time.\nThe connector service is then responsible for setting the status of connector sync jobs to cancelled.",
         "operationId": "connector-sync-job-cancel",
         "parameters": [
           {
@@ -4802,19 +4606,15 @@
             }
           }
         },
-        "x-beta": true,
-        "x-available-since": "8.12.0"
+        "x-beta": true
       }
     },
     "/_connector/_sync_job/{connector_sync_job_id}": {
       "get": {
         "tags": [
-          "connector.sync_job_get"
+          "connector"
         ],
-        "summary": "Retrieves a connector sync job",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/get-connector-sync-job-api.html"
-        },
+        "summary": "Get a connector sync job",
         "operationId": "connector-sync-job-get",
         "parameters": [
           {
@@ -4841,17 +4641,14 @@
             }
           }
         },
-        "x-beta": true,
-        "x-available-since": "8.12.0"
+        "x-beta": true
       },
       "delete": {
         "tags": [
-          "connector.sync_job_delete"
+          "connector"
         ],
-        "summary": "Deletes a connector sync job",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/delete-connector-sync-job-api.html"
-        },
+        "summary": "Delete a connector sync job",
+        "description": "Remove a connector sync job and its associated data.\nThis is a destructive action that is not recoverable.",
         "operationId": "connector-sync-job-delete",
         "parameters": [
           {
@@ -4878,19 +4675,16 @@
             }
           }
         },
-        "x-beta": true,
-        "x-available-since": "8.12.0"
+        "x-beta": true
       }
     },
     "/_connector/_sync_job": {
       "get": {
         "tags": [
-          "connector.sync_job_list"
+          "connector"
         ],
-        "summary": "Lists connector sync jobs",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/list-connector-sync-jobs-api.html"
-        },
+        "summary": "Get all connector sync jobs",
+        "description": "Get information about all stored connector sync jobs listed by their creation date in ascending order.",
         "operationId": "connector-sync-job-list",
         "parameters": [
           {
@@ -4981,17 +4775,14 @@
             }
           }
         },
-        "x-beta": true,
-        "x-available-since": "8.12.0"
+        "x-beta": true
       },
       "post": {
         "tags": [
-          "connector.sync_job_post"
+          "connector"
         ],
-        "summary": "Creates a connector sync job",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/create-connector-sync-job-api.html"
-        },
+        "summary": "Create a connector sync job",
+        "description": "Create a connector sync job document in the internal index and initialize its counters and timestamps with default values.",
         "operationId": "connector-sync-job-post",
         "requestBody": {
           "content": {
@@ -5037,19 +4828,16 @@
             }
           }
         },
-        "x-beta": true,
-        "x-available-since": "8.12.0"
+        "x-beta": true
       }
     },
     "/_connector/{connector_id}/_filtering/_activate": {
       "put": {
         "tags": [
-          "connector.update_active_filtering"
+          "connector"
         ],
-        "summary": "Activates the valid draft filtering for a connector",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/update-connector-filtering-api.html"
-        },
+        "summary": "Activate the connector draft filter",
+        "description": "Activates the valid draft filtering for a connector.",
         "operationId": "connector-update-active-filtering",
         "parameters": [
           {
@@ -5084,19 +4872,16 @@
             }
           }
         },
-        "x-technical-preview": true,
-        "x-available-since": "8.12.0"
+        "x-state": "Technical preview"
       }
     },
     "/_connector/{connector_id}/_api_key_id": {
       "put": {
         "tags": [
-          "connector.update_api_key_id"
+          "connector"
         ],
-        "summary": "Updates the API key id in the connector document",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/update-connector-api-key-id-api.html"
-        },
+        "summary": "Update the connector API key ID",
+        "description": "Update the `api_key_id` and `api_key_secret_id` fields of a connector.\nYou can specify the ID of the API key used for authorization and the ID of the connector secret where the API key is stored.\nThe connector secret ID is required only for Elastic managed (native) connectors.\nSelf-managed connectors (connector clients) do not use this field.",
         "operationId": "connector-update-api-key-id",
         "parameters": [
           {
@@ -5149,19 +4934,16 @@
             }
           }
         },
-        "x-beta": true,
-        "x-available-since": "8.12.0"
+        "x-beta": true
       }
     },
     "/_connector/{connector_id}/_configuration": {
       "put": {
         "tags": [
-          "connector.update_configuration"
+          "connector"
         ],
-        "summary": "Updates the configuration field in the connector document",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/update-connector-configuration-api.html"
-        },
+        "summary": "Update the connector configuration",
+        "description": "Update the configuration field in the connector document.",
         "operationId": "connector-update-configuration",
         "parameters": [
           {
@@ -5217,19 +4999,16 @@
             }
           }
         },
-        "x-beta": true,
-        "x-available-since": "8.12.0"
+        "x-beta": true
       }
     },
     "/_connector/{connector_id}/_error": {
       "put": {
         "tags": [
-          "connector.update_error"
+          "connector"
         ],
-        "summary": "Updates the filtering field in the connector document",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/update-connector-error-api.html"
-        },
+        "summary": "Update the connector error field",
+        "description": "Set the error field for the connector.\nIf the error provided in the request body is non-null, the connector’s status is updated to error.\nOtherwise, if the error is reset to null, the connector status is updated to connected.",
         "operationId": "connector-update-error",
         "parameters": [
           {
@@ -5289,19 +5068,16 @@
             }
           }
         },
-        "x-technical-preview": true,
-        "x-available-since": "8.12.0"
+        "x-state": "Technical preview"
       }
     },
     "/_connector/{connector_id}/_filtering": {
       "put": {
         "tags": [
-          "connector.update_filtering"
+          "connector"
         ],
-        "summary": "Updates the filtering field in the connector document",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/update-connector-filtering-api.html"
-        },
+        "summary": "Update the connector filtering",
+        "description": "Update the draft filtering configuration of a connector and marks the draft validation state as edited.\nThe filtering draft is activated once validated by the running Elastic connector service.\nThe filtering property is used to configure sync rules (both basic and advanced) for a connector.",
         "operationId": "connector-update-filtering",
         "parameters": [
           {
@@ -5363,19 +5139,16 @@
             }
           }
         },
-        "x-beta": true,
-        "x-available-since": "8.12.0"
+        "x-beta": true
       }
     },
     "/_connector/{connector_id}/_filtering/_validation": {
       "put": {
         "tags": [
-          "connector.update_filtering_validation"
+          "connector"
         ],
-        "summary": "Updates the draft filtering validation info for a connector",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/update-connector-filtering-validation-api.html"
-        },
+        "summary": "Update the connector draft filtering validation",
+        "description": "Update the draft filtering validation info for a connector.",
         "operationId": "connector-update-filtering-validation",
         "parameters": [
           {
@@ -5428,19 +5201,16 @@
             }
           }
         },
-        "x-technical-preview": true,
-        "x-available-since": "8.12.0"
+        "x-state": "Technical preview"
       }
     },
     "/_connector/{connector_id}/_index_name": {
       "put": {
         "tags": [
-          "connector.update_index_name"
+          "connector"
         ],
-        "summary": "Updates the index_name in the connector document",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/update-connector-index-name-api.html"
-        },
+        "summary": "Update the connector index name",
+        "description": "Update the `index_name` field of a connector, specifying the index where the data ingested by the connector is stored.",
         "operationId": "connector-update-index-name",
         "parameters": [
           {
@@ -5500,19 +5270,15 @@
             }
           }
         },
-        "x-beta": true,
-        "x-available-since": "8.12.0"
+        "x-beta": true
       }
     },
     "/_connector/{connector_id}/_name": {
       "put": {
         "tags": [
-          "connector.update_name"
+          "connector"
         ],
-        "summary": "Updates the name and description fields in the connector document",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/update-connector-name-description-api.html"
-        },
+        "summary": "Update the connector name and description",
         "operationId": "connector-update-name",
         "parameters": [
           {
@@ -5565,19 +5331,15 @@
             }
           }
         },
-        "x-beta": true,
-        "x-available-since": "8.12.0"
+        "x-beta": true
       }
     },
     "/_connector/{connector_id}/_native": {
       "put": {
         "tags": [
-          "connector.update_native"
+          "connector"
         ],
-        "summary": "Updates the is_native flag in the connector document",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/update-connector-native-api.html"
-        },
+        "summary": "Update the connector is_native flag",
         "operationId": "connector-update-native",
         "parameters": [
           {
@@ -5630,19 +5392,16 @@
             }
           }
         },
-        "x-beta": true,
-        "x-available-since": "8.12.0"
+        "x-beta": true
       }
     },
     "/_connector/{connector_id}/_pipeline": {
       "put": {
         "tags": [
-          "connector.update_pipeline"
+          "connector"
         ],
-        "summary": "Updates the pipeline field in the connector document",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/update-connector-pipeline-api.html"
-        },
+        "summary": "Update the connector pipeline",
+        "description": "When you create a new connector, the configuration of an ingest pipeline is populated with default settings.",
         "operationId": "connector-update-pipeline",
         "parameters": [
           {
@@ -5695,19 +5454,15 @@
             }
           }
         },
-        "x-beta": true,
-        "x-available-since": "8.12.0"
+        "x-beta": true
       }
     },
     "/_connector/{connector_id}/_scheduling": {
       "put": {
         "tags": [
-          "connector.update_scheduling"
+          "connector"
         ],
-        "summary": "Updates the scheduling field in the connector document",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/update-connector-scheduling-api.html"
-        },
+        "summary": "Update the connector scheduling",
         "operationId": "connector-update-scheduling",
         "parameters": [
           {
@@ -5760,19 +5515,15 @@
             }
           }
         },
-        "x-beta": true,
-        "x-available-since": "8.12.0"
+        "x-beta": true
       }
     },
     "/_connector/{connector_id}/_service_type": {
       "put": {
         "tags": [
-          "connector.update_service_type"
+          "connector"
         ],
-        "summary": "Updates the service type of the connector",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/update-connector-service-type-api.html"
-        },
+        "summary": "Update the connector service type",
         "operationId": "connector-update-service-type",
         "parameters": [
           {
@@ -5825,19 +5576,15 @@
             }
           }
         },
-        "x-beta": true,
-        "x-available-since": "8.12.0"
+        "x-beta": true
       }
     },
     "/_connector/{connector_id}/_status": {
       "put": {
         "tags": [
-          "connector.update_status"
+          "connector"
         ],
-        "summary": "Updates the status of the connector",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/update-connector-status-api.html"
-        },
+        "summary": "Update the connector status",
         "operationId": "connector-update-status",
         "parameters": [
           {
@@ -5890,19 +5637,16 @@
             }
           }
         },
-        "x-technical-preview": true,
-        "x-available-since": "8.12.0"
+        "x-state": "Technical preview"
       }
     },
     "/_count": {
       "get": {
         "tags": [
-          "count"
+          "search"
         ],
-        "summary": "Returns number of documents matching a query",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/master/search-count.html"
-        },
+        "summary": "Count search results",
+        "description": "Get the number of documents matching a query.",
         "operationId": "count-1",
         "parameters": [
           {
@@ -5959,12 +5703,10 @@
       },
       "post": {
         "tags": [
-          "count"
+          "search"
         ],
-        "summary": "Returns number of documents matching a query",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/master/search-count.html"
-        },
+        "summary": "Count search results",
+        "description": "Get the number of documents matching a query.",
         "operationId": "count",
         "parameters": [
           {
@@ -6023,12 +5765,10 @@
     "/{index}/_count": {
       "get": {
         "tags": [
-          "count"
+          "search"
         ],
-        "summary": "Returns number of documents matching a query",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/master/search-count.html"
-        },
+        "summary": "Count search results",
+        "description": "Get the number of documents matching a query.",
         "operationId": "count-3",
         "parameters": [
           {
@@ -6088,12 +5828,10 @@
       },
       "post": {
         "tags": [
-          "count"
+          "search"
         ],
-        "summary": "Returns number of documents matching a query",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/master/search-count.html"
-        },
+        "summary": "Count search results",
+        "description": "Get the number of documents matching a query.",
         "operationId": "count-2",
         "parameters": [
           {
@@ -6155,13 +5893,10 @@
     "/{index}/_create/{id}": {
       "put": {
         "tags": [
-          "create"
+          "document"
         ],
         "summary": "Index a document",
         "description": "Adds a JSON document to the specified data stream or index and makes it searchable.\nIf the target is an index and the document already exists, the request updates the document and increments its version.",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/master/docs-index_.html"
-        },
         "operationId": "create",
         "parameters": [
           {
@@ -6200,17 +5935,14 @@
             "$ref": "#/components/responses/create#200"
           }
         },
-        "x-available-since": "5.0.0"
+        "x-state": "Added in 5.0.0"
       },
       "post": {
         "tags": [
-          "create"
+          "document"
         ],
         "summary": "Index a document",
         "description": "Adds a JSON document to the specified data stream or index and makes it searchable.\nIf the target is an index and the document already exists, the request updates the document and increments its version.",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/master/docs-index_.html"
-        },
         "operationId": "create-1",
         "parameters": [
           {
@@ -6249,24 +5981,22 @@
             "$ref": "#/components/responses/create#200"
           }
         },
-        "x-available-since": "5.0.0"
+        "x-state": "Added in 5.0.0"
       }
     },
     "/_dangling/{index_uuid}": {
       "post": {
         "tags": [
-          "dangling_indices.import_dangling_index"
+          "indices"
         ],
-        "summary": "Imports the specified dangling index",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/master/modules-gateway-dangling-indices.html"
-        },
+        "summary": "Import a dangling index",
+        "description": "If Elasticsearch encounters index data that is absent from the current cluster state, those indices are considered to be dangling.\nFor example, this can happen if you delete more than `cluster.indices.tombstones.size` indices while an Elasticsearch node is offline.",
         "operationId": "dangling-indices-import-dangling-index",
         "parameters": [
           {
             "in": "path",
             "name": "index_uuid",
-            "description": "The UUID of the dangling index",
+            "description": "The UUID of the index to import. Use the get dangling indices API to locate the UUID.",
             "required": true,
             "deprecated": false,
             "schema": {
@@ -6277,7 +6007,7 @@
           {
             "in": "query",
             "name": "accept_data_loss",
-            "description": "Must be set to true in order to import the dangling index",
+            "description": "This parameter must be set to true to import a dangling index.\nBecause Elasticsearch cannot know where the dangling index data came from or determine which shard copies are fresh and which are stale, it cannot guarantee that the imported data represents the latest state of the index when it was last in the cluster.",
             "required": true,
             "deprecated": false,
             "schema": {
@@ -6318,22 +6048,20 @@
             }
           }
         },
-        "x-available-since": "7.9.0"
+        "x-state": "Added in 7.9.0"
       },
       "delete": {
         "tags": [
-          "dangling_indices.delete_dangling_index"
+          "indices"
         ],
-        "summary": "Deletes the specified dangling index",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/master/modules-gateway-dangling-indices.html"
-        },
+        "summary": "Delete a dangling index",
+        "description": "If Elasticsearch encounters index data that is absent from the current cluster state, those indices are considered to be dangling.\nFor example, this can happen if you delete more than `cluster.indices.tombstones.size` indices while an Elasticsearch node is offline.",
         "operationId": "dangling-indices-delete-dangling-index",
         "parameters": [
           {
             "in": "path",
             "name": "index_uuid",
-            "description": "The UUID of the dangling index",
+            "description": "The UUID of the index to delete. Use the get dangling indices API to find the UUID.",
             "required": true,
             "deprecated": false,
             "schema": {
@@ -6344,7 +6072,7 @@
           {
             "in": "query",
             "name": "accept_data_loss",
-            "description": "Must be set to true in order to delete the dangling index",
+            "description": "This parameter must be set to true to acknowledge that it will no longer be possible to recove data from the dangling index.",
             "required": true,
             "deprecated": false,
             "schema": {
@@ -6385,18 +6113,16 @@
             }
           }
         },
-        "x-available-since": "7.9.0"
+        "x-state": "Added in 7.9.0"
       }
     },
     "/_dangling": {
       "get": {
         "tags": [
-          "dangling_indices.list_dangling_indices"
+          "indices"
         ],
-        "summary": "Returns all dangling indices",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/master/modules-gateway-dangling-indices.html"
-        },
+        "summary": "Get the dangling indices",
+        "description": "If Elasticsearch encounters index data that is absent from the current cluster state, those indices are considered to be dangling.\nFor example, this can happen if you delete more than `cluster.indices.tombstones.size` indices while an Elasticsearch node is offline.\n\nUse this API to list dangling indices, which you can then import or delete.",
         "operationId": "dangling-indices-list-dangling-indices",
         "responses": {
           "200": {
@@ -6421,19 +6147,16 @@
             }
           }
         },
-        "x-available-since": "7.9.0"
+        "x-state": "Added in 7.9.0"
       }
     },
     "/{index}/_doc/{id}": {
       "get": {
         "tags": [
-          "get"
+          "document"
         ],
         "summary": "Get a document by its ID",
         "description": "Retrieves the document with the specified ID from an index.",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/master/docs-get.html"
-        },
         "operationId": "get",
         "parameters": [
           {
@@ -6584,13 +6307,10 @@
       },
       "put": {
         "tags": [
-          "index"
+          "document"
         ],
         "summary": "Index a document",
         "description": "Adds a JSON document to the specified data stream or index and makes it searchable.\nIf the target is an index and the document already exists, the request updates the document and increments its version.",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/master/docs-index_.html"
-        },
         "operationId": "index",
         "parameters": [
           {
@@ -6644,13 +6364,10 @@
       },
       "post": {
         "tags": [
-          "index"
+          "document"
         ],
         "summary": "Index a document",
         "description": "Adds a JSON document to the specified data stream or index and makes it searchable.\nIf the target is an index and the document already exists, the request updates the document and increments its version.",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/master/docs-index_.html"
-        },
         "operationId": "index-1",
         "parameters": [
           {
@@ -6704,13 +6421,10 @@
       },
       "delete": {
         "tags": [
-          "delete"
+          "document"
         ],
         "summary": "Delete a document",
         "description": "Removes a JSON document from the specified index.",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/master/docs-delete.html"
-        },
         "operationId": "delete",
         "parameters": [
           {
@@ -6831,13 +6545,10 @@
       },
       "head": {
         "tags": [
-          "exists"
+          "document"
         ],
         "summary": "Check a document",
         "description": "Checks if a specified document exists.",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/master/docs-get.html"
-        },
         "operationId": "exists",
         "parameters": [
           {
@@ -6976,13 +6687,10 @@
     "/{index}/_delete_by_query": {
       "post": {
         "tags": [
-          "delete_by_query"
+          "document"
         ],
         "summary": "Delete documents",
         "description": "Deletes documents that match the specified query.",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/master/docs-delete-by-query.html"
-        },
         "operationId": "delete-by-query",
         "parameters": [
           {
@@ -7380,18 +7088,16 @@
             }
           }
         },
-        "x-available-since": "5.0.0"
+        "x-state": "Added in 5.0.0"
       }
     },
     "/_delete_by_query/{task_id}/_rethrottle": {
       "post": {
         "tags": [
-          "delete_by_query_rethrottle"
+          "document"
         ],
-        "summary": "Changes the number of requests per second for a particular Delete By Query operation",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/docs-delete-by-query.html"
-        },
+        "summary": "Throttle a delete by query operation",
+        "description": "Change the number of requests per second for a particular delete by query operation.\nRethrottling that speeds up the query takes effect immediately but rethrotting that slows down the query takes effect after completing the current batch to prevent scroll timeouts.",
         "operationId": "delete-by-query-rethrottle",
         "parameters": [
           {
@@ -7428,19 +7134,16 @@
             }
           }
         },
-        "x-available-since": "6.5.0"
+        "x-state": "Added in 6.5.0"
       }
     },
     "/_scripts/{id}": {
       "get": {
         "tags": [
-          "get_script"
+          "script"
         ],
         "summary": "Get a script or search template",
         "description": "Retrieves a stored script or search template.",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/master/modules-scripting.html"
-        },
         "operationId": "get-script",
         "parameters": [
           {
@@ -7495,13 +7198,10 @@
       },
       "put": {
         "tags": [
-          "put_script"
+          "script"
         ],
         "summary": "Create or update a script or search template",
         "description": "Creates or updates a stored script or search template.",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/master/modules-scripting.html"
-        },
         "operationId": "put-script",
         "parameters": [
           {
@@ -7525,13 +7225,10 @@
       },
       "post": {
         "tags": [
-          "put_script"
+          "script"
         ],
         "summary": "Create or update a script or search template",
         "description": "Creates or updates a stored script or search template.",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/master/modules-scripting.html"
-        },
         "operationId": "put-script-1",
         "parameters": [
           {
@@ -7555,13 +7252,10 @@
       },
       "delete": {
         "tags": [
-          "delete_script"
+          "script"
         ],
         "summary": "Delete a script or search template",
         "description": "Deletes a stored script or search template.",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/master/modules-scripting.html"
-        },
         "operationId": "delete-script",
         "parameters": [
           {
@@ -7613,13 +7307,10 @@
     "/_enrich/policy/{name}": {
       "get": {
         "tags": [
-          "enrich.get_policy"
+          "enrich"
         ],
         "summary": "Get an enrich policy",
         "description": "Returns information about an enrich policy.",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/get-enrich-policy-api.html"
-        },
         "operationId": "enrich-get-policy",
         "parameters": [
           {
@@ -7631,17 +7322,14 @@
             "$ref": "#/components/responses/enrich.get_policy#200"
           }
         },
-        "x-available-since": "7.5.0"
+        "x-state": "Added in 7.5.0"
       },
       "put": {
         "tags": [
-          "enrich.put_policy"
+          "enrich"
         ],
         "summary": "Create an enrich policy",
         "description": "Creates an enrich policy.",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/put-enrich-policy-api.html"
-        },
         "operationId": "enrich-put-policy",
         "parameters": [
           {
@@ -7689,17 +7377,14 @@
             }
           }
         },
-        "x-available-since": "7.5.0"
+        "x-state": "Added in 7.5.0"
       },
       "delete": {
         "tags": [
-          "enrich.delete_policy"
+          "enrich"
         ],
         "summary": "Delete an enrich policy",
         "description": "Deletes an existing enrich policy and its enrich index.",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/delete-enrich-policy-api.html"
-        },
         "operationId": "enrich-delete-policy",
         "parameters": [
           {
@@ -7726,18 +7411,16 @@
             }
           }
         },
-        "x-available-since": "7.5.0"
+        "x-state": "Added in 7.5.0"
       }
     },
     "/_enrich/policy/{name}/_execute": {
       "put": {
         "tags": [
-          "enrich.execute_policy"
+          "enrich"
         ],
-        "summary": "Creates the enrich index for an existing enrich policy",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/execute-enrich-policy-api.html"
-        },
+        "summary": "Run an enrich policy",
+        "description": "Create the enrich index for an existing enrich policy.",
         "operationId": "enrich-execute-policy",
         "parameters": [
           {
@@ -7773,7 +7456,7 @@
                     "status": {
                       "$ref": "#/components/schemas/enrich.execute_policy:ExecuteEnrichPolicyStatus"
                     },
-                    "task_id": {
+                    "task": {
                       "$ref": "#/components/schemas/_types:TaskId"
                     }
                   }
@@ -7782,38 +7465,32 @@
             }
           }
         },
-        "x-available-since": "7.5.0"
+        "x-state": "Added in 7.5.0"
       }
     },
     "/_enrich/policy": {
       "get": {
         "tags": [
-          "enrich.get_policy"
+          "enrich"
         ],
         "summary": "Get an enrich policy",
         "description": "Returns information about an enrich policy.",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/get-enrich-policy-api.html"
-        },
         "operationId": "enrich-get-policy-1",
         "responses": {
           "200": {
             "$ref": "#/components/responses/enrich.get_policy#200"
           }
         },
-        "x-available-since": "7.5.0"
+        "x-state": "Added in 7.5.0"
       }
     },
     "/_enrich/_stats": {
       "get": {
         "tags": [
-          "enrich.stats"
+          "enrich"
         ],
         "summary": "Get enrich stats",
         "description": "Returns enrich coordinator statistics and information about enrich policies that are currently executing.",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/enrich-stats-api.html"
-        },
         "operationId": "enrich-stats",
         "responses": {
           "200": {
@@ -7839,7 +7516,6 @@
                     },
                     "cache_stats": {
                       "description": "Objects containing information about the enrich cache stats on each ingest node.",
-                      "x-available-since": "7.16.0",
                       "type": "array",
                       "items": {
                         "$ref": "#/components/schemas/enrich.stats:CacheStats"
@@ -7855,18 +7531,16 @@
             }
           }
         },
-        "x-available-since": "7.5.0"
+        "x-state": "Added in 7.5.0"
       }
     },
     "/_eql/search/{id}": {
       "get": {
         "tags": [
-          "eql.get"
+          "eql"
         ],
-        "summary": "Returns the current status and available results for an async EQL search or a stored synchronous EQL search",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/get-async-eql-search-api.html"
-        },
+        "summary": "Get async EQL search results",
+        "description": "Get the current status and available results for an async EQL search or a stored synchronous EQL search.",
         "operationId": "eql-get",
         "parameters": [
           {
@@ -7913,17 +7587,14 @@
             }
           }
         },
-        "x-available-since": "7.9.0"
+        "x-state": "Added in 7.9.0"
       },
       "delete": {
         "tags": [
-          "eql.delete"
+          "eql"
         ],
-        "summary": "Deletes an async EQL search or a stored synchronous EQL search",
-        "description": "The API also deletes results for the search.",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/eql-search-api.html"
-        },
+        "summary": "Delete an async EQL search",
+        "description": "Delete an async EQL search or a stored synchronous EQL search.\nThe API also deletes results for the search.",
         "operationId": "eql-delete",
         "parameters": [
           {
@@ -7950,18 +7621,16 @@
             }
           }
         },
-        "x-available-since": "7.9.0"
+        "x-state": "Added in 7.9.0"
       }
     },
     "/_eql/search/status/{id}": {
       "get": {
         "tags": [
-          "eql.get_status"
+          "eql"
         ],
-        "summary": "Returns the current status for an async EQL search or a stored synchronous EQL search without returning results",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/get-async-eql-status-api.html"
-        },
+        "summary": "Get the async EQL status",
+        "description": "Get the current status for an async EQL search or a stored synchronous EQL search without returning results.",
         "operationId": "eql-get-status",
         "parameters": [
           {
@@ -8016,17 +7685,18 @@
             }
           }
         },
-        "x-available-since": "7.9.0"
+        "x-state": "Added in 7.9.0"
       }
     },
     "/{index}/_eql/search": {
       "get": {
         "tags": [
-          "eql.search"
+          "eql"
         ],
-        "summary": "Returns results matching a query expressed in Event Query Language (EQL)",
+        "summary": "Get EQL search results",
+        "description": "Returns search results for an Event Query Language (EQL) query.\nEQL assumes each document in a data stream or index corresponds to an event.",
         "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/eql-search-api.html"
+          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/eql.html"
         },
         "operationId": "eql-search",
         "parameters": [
@@ -8060,15 +7730,16 @@
             "$ref": "#/components/responses/eql.search#200"
           }
         },
-        "x-available-since": "7.9.0"
+        "x-state": "Added in 7.9.0"
       },
       "post": {
         "tags": [
-          "eql.search"
+          "eql"
         ],
-        "summary": "Returns results matching a query expressed in Event Query Language (EQL)",
+        "summary": "Get EQL search results",
+        "description": "Returns search results for an Event Query Language (EQL) query.\nEQL assumes each document in a data stream or index corresponds to an event.",
         "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/eql-search-api.html"
+          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/eql.html"
         },
         "operationId": "eql-search-1",
         "parameters": [
@@ -8102,17 +7773,18 @@
             "$ref": "#/components/responses/eql.search#200"
           }
         },
-        "x-available-since": "7.9.0"
+        "x-state": "Added in 7.9.0"
       }
     },
     "/_query": {
       "post": {
         "tags": [
-          "esql.query"
+          "esql"
         ],
-        "summary": "Executes an ES|QL request",
+        "summary": "Run an ES|QL query",
+        "description": "Get search results for an ES|QL (Elasticsearch query language) query.",
         "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/esql-rest.html"
+          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/esql.html"
         },
         "operationId": "esql-query",
         "parameters": [
@@ -8164,9 +7836,6 @@
                     "type": "string"
                   },
                   "params": {
-                    "externalDocs": {
-                      "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/esql-rest.html#esql-rest-params"
-                    },
                     "description": "To avoid any attempts of hacking or code injection, extract the values in a separate list of parameters. Use question mark placeholders (?) in the query string for each of the parameters.",
                     "type": "array",
                     "items": {
@@ -8211,20 +7880,16 @@
               }
             }
           }
-        },
-        "x-available-since": "8.11.0"
+        }
       }
     },
     "/{index}/_source/{id}": {
       "get": {
         "tags": [
-          "get_source"
+          "document"
         ],
         "summary": "Get a document's source",
         "description": "Returns the source of a document.",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/master/docs-get.html"
-        },
         "operationId": "get-source",
         "parameters": [
           {
@@ -8364,13 +8029,10 @@
       },
       "head": {
         "tags": [
-          "exists_source"
+          "document"
         ],
         "summary": "Check for a document source",
         "description": "Checks if a document's `_source` is stored.",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/master/docs-get.html"
-        },
         "operationId": "exists-source",
         "parameters": [
           {
@@ -8494,19 +8156,16 @@
             }
           }
         },
-        "x-available-since": "5.4.0"
+        "x-state": "Added in 5.4.0"
       }
     },
     "/{index}/_explain/{id}": {
       "get": {
         "tags": [
-          "explain"
+          "search"
         ],
         "summary": "Explain a document match result",
         "description": "Returns information about why a specific document matches, or doesn’t match, a query.",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/master/search-explain.html"
-        },
         "operationId": "explain",
         "parameters": [
           {
@@ -8563,13 +8222,10 @@
       },
       "post": {
         "tags": [
-          "explain"
+          "search"
         ],
         "summary": "Explain a document match result",
         "description": "Returns information about why a specific document matches, or doesn’t match, a query.",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/master/search-explain.html"
-        },
         "operationId": "explain-1",
         "parameters": [
           {
@@ -8628,12 +8284,9 @@
     "/_features": {
       "get": {
         "tags": [
-          "features.get_features"
+          "features"
         ],
         "summary": "Gets a list of features which can be included in snapshots using the feature_states field when creating a snapshot",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/master/get-features-api.html"
-        },
         "operationId": "features-get-features",
         "responses": {
           "200": {
@@ -8658,18 +8311,15 @@
             }
           }
         },
-        "x-available-since": "7.12.0"
+        "x-state": "Added in 7.12.0"
       }
     },
     "/_features/_reset": {
       "post": {
         "tags": [
-          "features.reset_features"
+          "features"
         ],
         "summary": "Resets the internal state of features, usually by deleting system indices",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/master/modules-snapshots.html"
-        },
         "operationId": "features-reset-features",
         "responses": {
           "200": {
@@ -8694,20 +8344,16 @@
             }
           }
         },
-        "x-technical-preview": true,
-        "x-available-since": "7.12.0"
+        "x-state": "Technical preview"
       }
     },
     "/_field_caps": {
       "get": {
         "tags": [
-          "field_caps"
+          "search"
         ],
-        "summary": "The field capabilities API returns the information about the capabilities of fields among multiple indices",
-        "description": "The field capabilities API returns runtime fields like any other field. For example, a runtime field with a type\nof keyword is returned as any other field that belongs to the `keyword` family.",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/master/search-field-caps.html"
-        },
+        "summary": "Get the field capabilities",
+        "description": "Get information about the capabilities of fields among multiple indices.\n\nFor data streams, the API returns field capabilities among the stream’s backing indices.\nIt returns runtime fields like any other field.\nFor example, a runtime field with a type of keyword is returned the same as any other field that belongs to the `keyword` family.",
         "operationId": "field-caps",
         "parameters": [
           {
@@ -8743,17 +8389,14 @@
             "$ref": "#/components/responses/field_caps#200"
           }
         },
-        "x-available-since": "5.4.0"
+        "x-state": "Added in 5.4.0"
       },
       "post": {
         "tags": [
-          "field_caps"
+          "search"
         ],
-        "summary": "The field capabilities API returns the information about the capabilities of fields among multiple indices",
-        "description": "The field capabilities API returns runtime fields like any other field. For example, a runtime field with a type\nof keyword is returned as any other field that belongs to the `keyword` family.",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/master/search-field-caps.html"
-        },
+        "summary": "Get the field capabilities",
+        "description": "Get information about the capabilities of fields among multiple indices.\n\nFor data streams, the API returns field capabilities among the stream’s backing indices.\nIt returns runtime fields like any other field.\nFor example, a runtime field with a type of keyword is returned the same as any other field that belongs to the `keyword` family.",
         "operationId": "field-caps-1",
         "parameters": [
           {
@@ -8789,19 +8432,16 @@
             "$ref": "#/components/responses/field_caps#200"
           }
         },
-        "x-available-since": "5.4.0"
+        "x-state": "Added in 5.4.0"
       }
     },
     "/{index}/_field_caps": {
       "get": {
         "tags": [
-          "field_caps"
+          "search"
         ],
-        "summary": "The field capabilities API returns the information about the capabilities of fields among multiple indices",
-        "description": "The field capabilities API returns runtime fields like any other field. For example, a runtime field with a type\nof keyword is returned as any other field that belongs to the `keyword` family.",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/master/search-field-caps.html"
-        },
+        "summary": "Get the field capabilities",
+        "description": "Get information about the capabilities of fields among multiple indices.\n\nFor data streams, the API returns field capabilities among the stream’s backing indices.\nIt returns runtime fields like any other field.\nFor example, a runtime field with a type of keyword is returned the same as any other field that belongs to the `keyword` family.",
         "operationId": "field-caps-2",
         "parameters": [
           {
@@ -8840,17 +8480,14 @@
             "$ref": "#/components/responses/field_caps#200"
           }
         },
-        "x-available-since": "5.4.0"
+        "x-state": "Added in 5.4.0"
       },
       "post": {
         "tags": [
-          "field_caps"
+          "search"
         ],
-        "summary": "The field capabilities API returns the information about the capabilities of fields among multiple indices",
-        "description": "The field capabilities API returns runtime fields like any other field. For example, a runtime field with a type\nof keyword is returned as any other field that belongs to the `keyword` family.",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/master/search-field-caps.html"
-        },
+        "summary": "Get the field capabilities",
+        "description": "Get information about the capabilities of fields among multiple indices.\n\nFor data streams, the API returns field capabilities among the stream’s backing indices.\nIt returns runtime fields like any other field.\nFor example, a runtime field with a type of keyword is returned the same as any other field that belongs to the `keyword` family.",
         "operationId": "field-caps-3",
         "parameters": [
           {
@@ -8889,19 +8526,16 @@
             "$ref": "#/components/responses/field_caps#200"
           }
         },
-        "x-available-since": "5.4.0"
+        "x-state": "Added in 5.4.0"
       }
     },
     "/{index}/_fleet/global_checkpoints": {
       "get": {
         "tags": [
-          "fleet.global_checkpoints"
+          "fleet"
         ],
         "summary": "Returns the current global checkpoints for an index",
         "description": "This API is design for internal use by the fleet server project.",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/get-global-checkpoints.html"
-        },
         "operationId": "fleet-global-checkpoints",
         "parameters": [
           {
@@ -8993,13 +8627,13 @@
             }
           }
         },
-        "x-available-since": "7.13.0"
+        "x-state": "Added in 7.13.0"
       }
     },
     "/_fleet/_fleet_msearch": {
       "get": {
         "tags": [
-          "fleet.msearch"
+          "fleet"
         ],
         "summary": "Executes several [fleet searches](https://www.elastic.co/guide/en/elasticsearch/reference/current/fleet-search.html) with a single API request",
         "description": "The API follows the same structure as the [multi search](https://www.elastic.co/guide/en/elasticsearch/reference/current/search-multi-search.html) API. However, similar to the fleet search API, it\nsupports the wait_for_checkpoints parameter.",
@@ -9053,12 +8687,11 @@
             "$ref": "#/components/responses/fleet.msearch#200"
           }
         },
-        "x-technical-preview": true,
-        "x-available-since": "7.16.0"
+        "x-state": "Technical preview"
       },
       "post": {
         "tags": [
-          "fleet.msearch"
+          "fleet"
         ],
         "summary": "Executes several [fleet searches](https://www.elastic.co/guide/en/elasticsearch/reference/current/fleet-search.html) with a single API request",
         "description": "The API follows the same structure as the [multi search](https://www.elastic.co/guide/en/elasticsearch/reference/current/search-multi-search.html) API. However, similar to the fleet search API, it\nsupports the wait_for_checkpoints parameter.",
@@ -9112,14 +8745,13 @@
             "$ref": "#/components/responses/fleet.msearch#200"
           }
         },
-        "x-technical-preview": true,
-        "x-available-since": "7.16.0"
+        "x-state": "Technical preview"
       }
     },
     "/{index}/_fleet/_fleet_msearch": {
       "get": {
         "tags": [
-          "fleet.msearch"
+          "fleet"
         ],
         "summary": "Executes several [fleet searches](https://www.elastic.co/guide/en/elasticsearch/reference/current/fleet-search.html) with a single API request",
         "description": "The API follows the same structure as the [multi search](https://www.elastic.co/guide/en/elasticsearch/reference/current/search-multi-search.html) API. However, similar to the fleet search API, it\nsupports the wait_for_checkpoints parameter.",
@@ -9176,12 +8808,11 @@
             "$ref": "#/components/responses/fleet.msearch#200"
           }
         },
-        "x-technical-preview": true,
-        "x-available-since": "7.16.0"
+        "x-state": "Technical preview"
       },
       "post": {
         "tags": [
-          "fleet.msearch"
+          "fleet"
         ],
         "summary": "Executes several [fleet searches](https://www.elastic.co/guide/en/elasticsearch/reference/current/fleet-search.html) with a single API request",
         "description": "The API follows the same structure as the [multi search](https://www.elastic.co/guide/en/elasticsearch/reference/current/search-multi-search.html) API. However, similar to the fleet search API, it\nsupports the wait_for_checkpoints parameter.",
@@ -9238,14 +8869,13 @@
             "$ref": "#/components/responses/fleet.msearch#200"
           }
         },
-        "x-technical-preview": true,
-        "x-available-since": "7.16.0"
+        "x-state": "Technical preview"
       }
     },
     "/{index}/_fleet/_fleet_search": {
       "get": {
         "tags": [
-          "fleet.search"
+          "fleet"
         ],
         "summary": "The purpose of the fleet search api is to provide a search api where the search will only be executed\n",
         "description": "after provided checkpoint has been processed and is visible for searches inside of Elasticsearch.",
@@ -9395,12 +9025,11 @@
             "$ref": "#/components/responses/fleet.search#200"
           }
         },
-        "x-technical-preview": true,
-        "x-available-since": "7.16.0"
+        "x-state": "Technical preview"
       },
       "post": {
         "tags": [
-          "fleet.search"
+          "fleet"
         ],
         "summary": "The purpose of the fleet search api is to provide a search api where the search will only be executed\n",
         "description": "after provided checkpoint has been processed and is visible for searches inside of Elasticsearch.",
@@ -9550,19 +9179,16 @@
             "$ref": "#/components/responses/fleet.search#200"
           }
         },
-        "x-technical-preview": true,
-        "x-available-since": "7.16.0"
+        "x-state": "Technical preview"
       }
     },
     "/_script_context": {
       "get": {
         "tags": [
-          "get_script_context"
+          "script"
         ],
-        "summary": "Returns all script contexts",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/painless/master/painless-contexts.html"
-        },
+        "summary": "Get script contexts",
+        "description": "Get a list of supported script contexts and their methods.",
         "operationId": "get-script-context",
         "responses": {
           "200": {
@@ -9592,12 +9218,10 @@
     "/_script_language": {
       "get": {
         "tags": [
-          "get_script_languages"
+          "script"
         ],
-        "summary": "Returns available script types, languages and contexts",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/master/modules-scripting.html"
-        },
+        "summary": "Get script languages",
+        "description": "Get a list of available script types, languages, and contexts.",
         "operationId": "get-script-languages",
         "responses": {
           "200": {
@@ -9634,11 +9258,12 @@
     "/{index}/_graph/explore": {
       "get": {
         "tags": [
-          "graph.explore"
+          "graph"
         ],
-        "summary": "Extracts and summarizes information about the documents and terms in an Elasticsearch data stream or index",
+        "summary": "Explore graph analytics",
+        "description": "Extract and summarize information about the documents and terms in an Elasticsearch data stream or index.\nThe easiest way to understand the behavior of this API is to use the Graph UI to explore connections.\nAn initial request to the `_explore` API contains a seed query that identifies the documents of interest and specifies the fields that define the vertices and connections you want to include in the graph.\nSubsequent requests enable you to spider out from one more vertices of interest.\nYou can exclude vertices that have already been returned.",
         "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/graph-explore-api.html"
+          "url": "https://www.elastic.co/guide/en/kibana/current/xpack-graph.html"
         },
         "operationId": "graph-explore",
         "parameters": [
@@ -9663,11 +9288,12 @@
       },
       "post": {
         "tags": [
-          "graph.explore"
+          "graph"
         ],
-        "summary": "Extracts and summarizes information about the documents and terms in an Elasticsearch data stream or index",
+        "summary": "Explore graph analytics",
+        "description": "Extract and summarize information about the documents and terms in an Elasticsearch data stream or index.\nThe easiest way to understand the behavior of this API is to use the Graph UI to explore connections.\nAn initial request to the `_explore` API contains a seed query that identifies the documents of interest and specifies the fields that define the vertices and connections you want to include in the graph.\nSubsequent requests enable you to spider out from one more vertices of interest.\nYou can exclude vertices that have already been returned.",
         "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/graph-explore-api.html"
+          "url": "https://www.elastic.co/guide/en/kibana/current/xpack-graph.html"
         },
         "operationId": "graph-explore-1",
         "parameters": [
@@ -9696,10 +9322,8 @@
         "tags": [
           "health_report"
         ],
-        "summary": "Returns the health of the cluster",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/health-api.html"
-        },
+        "summary": "Get the cluster health",
+        "description": "Get a report with the health status of an Elasticsearch cluster.\nThe report contains a list of indicators that compose Elasticsearch functionality.\n\nEach indicator has a health status of: green, unknown, yellow or red.\nThe indicator will provide an explanation and metadata describing the reason for its current health status.\n\nThe cluster’s status is controlled by the worst indicator status.\n\nIn the event that an indicator’s status is non-green, a list of impacts may be present in the indicator result which detail the functionalities that are negatively affected by the health issue.\nEach impact carries with it a severity level, an area of the system that is affected, and a simple description of the impact on the system.\n\nSome health indicators can determine the root cause of a health problem and prescribe a set of steps that can be performed in order to improve the health of the system.\nThe root cause and remediation steps are encapsulated in a diagnosis.\nA diagnosis contains a cause detailing a root cause analysis, an action containing a brief description of the steps to take to fix the problem, the list of affected resources (if applicable), and a detailed step-by-step troubleshooting guide to fix the diagnosed problem.\n\nNOTE: The health indicators perform root cause analysis of non-green health statuses. This can be computationally expensive when called frequently.\nWhen setting up automated polling of the API for health status, set verbose to false to disable the more expensive analysis logic.",
         "operationId": "health-report",
         "parameters": [
           {
@@ -9717,7 +9341,7 @@
             "$ref": "#/components/responses/health_report#200"
           }
         },
-        "x-available-since": "8.7.0"
+        "x-state": "Added in 8.7.0"
       }
     },
     "/_health_report/{feature}": {
@@ -9725,10 +9349,8 @@
         "tags": [
           "health_report"
         ],
-        "summary": "Returns the health of the cluster",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/health-api.html"
-        },
+        "summary": "Get the cluster health",
+        "description": "Get a report with the health status of an Elasticsearch cluster.\nThe report contains a list of indicators that compose Elasticsearch functionality.\n\nEach indicator has a health status of: green, unknown, yellow or red.\nThe indicator will provide an explanation and metadata describing the reason for its current health status.\n\nThe cluster’s status is controlled by the worst indicator status.\n\nIn the event that an indicator’s status is non-green, a list of impacts may be present in the indicator result which detail the functionalities that are negatively affected by the health issue.\nEach impact carries with it a severity level, an area of the system that is affected, and a simple description of the impact on the system.\n\nSome health indicators can determine the root cause of a health problem and prescribe a set of steps that can be performed in order to improve the health of the system.\nThe root cause and remediation steps are encapsulated in a diagnosis.\nA diagnosis contains a cause detailing a root cause analysis, an action containing a brief description of the steps to take to fix the problem, the list of affected resources (if applicable), and a detailed step-by-step troubleshooting guide to fix the diagnosed problem.\n\nNOTE: The health indicators perform root cause analysis of non-green health statuses. This can be computationally expensive when called frequently.\nWhen setting up automated polling of the API for health status, set verbose to false to disable the more expensive analysis logic.",
         "operationId": "health-report-1",
         "parameters": [
           {
@@ -9749,18 +9371,15 @@
             "$ref": "#/components/responses/health_report#200"
           }
         },
-        "x-available-since": "8.7.0"
+        "x-state": "Added in 8.7.0"
       }
     },
     "/_ilm/policy/{policy}": {
       "get": {
         "tags": [
-          "ilm.get_lifecycle"
+          "ilm"
         ],
-        "summary": "Retrieves a lifecycle policy",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/ilm-get-lifecycle.html"
-        },
+        "summary": "Get lifecycle policies",
         "operationId": "ilm-get-lifecycle",
         "parameters": [
           {
@@ -9778,16 +9397,16 @@
             "$ref": "#/components/responses/ilm.get_lifecycle#200"
           }
         },
-        "x-available-since": "6.6.0"
+        "x-state": "Added in 6.6.0"
       },
       "put": {
         "tags": [
-          "ilm.put_lifecycle"
+          "ilm"
         ],
-        "summary": "Creates a lifecycle policy",
-        "description": "If the specified policy exists, the policy is replaced and the policy version is incremented.",
+        "summary": "Create or update a lifecycle policy",
+        "description": "If the specified policy exists, it is replaced and the policy version is incremented.\n\nNOTE: Only the latest version of the policy is stored, you cannot revert to previous versions.",
         "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/ilm-put-lifecycle.html"
+          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/ilm-index-lifecycle.html"
         },
         "operationId": "ilm-put-lifecycle",
         "parameters": [
@@ -9849,17 +9468,14 @@
             }
           }
         },
-        "x-available-since": "6.6.0"
+        "x-state": "Added in 6.6.0"
       },
       "delete": {
         "tags": [
-          "ilm.delete_lifecycle"
+          "ilm"
         ],
-        "summary": "Deletes the specified lifecycle policy definition",
+        "summary": "Delete a lifecycle policy",
         "description": "You cannot delete policies that are currently in use. If the policy is being used to manage any indices, the request fails and returns an error.",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/ilm-delete-lifecycle.html"
-        },
         "operationId": "ilm-delete-lifecycle",
         "parameters": [
           {
@@ -9906,19 +9522,16 @@
             }
           }
         },
-        "x-available-since": "6.6.0"
+        "x-state": "Added in 6.6.0"
       }
     },
     "/{index}/_ilm/explain": {
       "get": {
         "tags": [
-          "ilm.explain_lifecycle"
+          "ilm"
         ],
-        "summary": "Retrieves information about the index’s current lifecycle state, such as the currently executing phase, action, and step",
-        "description": "Shows when the index entered each one, the definition of the running phase, and information about any failures.",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/ilm-explain-lifecycle.html"
-        },
+        "summary": "Explain the lifecycle state",
+        "description": "Get the current lifecycle status for one or more indices.\nFor data streams, the API retrieves the current lifecycle status for the stream's backing indices.\n\nThe response indicates when the index entered each lifecycle state, provides the definition of the running phase, and information about any failures.",
         "operationId": "ilm-explain-lifecycle",
         "parameters": [
           {
@@ -9996,18 +9609,15 @@
             }
           }
         },
-        "x-available-since": "6.6.0"
+        "x-state": "Added in 6.6.0"
       }
     },
     "/_ilm/policy": {
       "get": {
         "tags": [
-          "ilm.get_lifecycle"
+          "ilm"
         ],
-        "summary": "Retrieves a lifecycle policy",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/ilm-get-lifecycle.html"
-        },
+        "summary": "Get lifecycle policies",
         "operationId": "ilm-get-lifecycle-1",
         "parameters": [
           {
@@ -10022,18 +9632,16 @@
             "$ref": "#/components/responses/ilm.get_lifecycle#200"
           }
         },
-        "x-available-since": "6.6.0"
+        "x-state": "Added in 6.6.0"
       }
     },
     "/_ilm/status": {
       "get": {
         "tags": [
-          "ilm.get_status"
+          "ilm"
         ],
-        "summary": "Retrieves the current index lifecycle management (ILM) status",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/ilm-get-status.html"
-        },
+        "summary": "Get the ILM status",
+        "description": "Get the current index lifecycle management status.",
         "operationId": "ilm-get-status",
         "responses": {
           "200": {
@@ -10055,18 +9663,18 @@
             }
           }
         },
-        "x-available-since": "6.6.0"
+        "x-state": "Added in 6.6.0"
       }
     },
     "/_ilm/migrate_to_data_tiers": {
       "post": {
         "tags": [
-          "ilm.migrate_to_data_tiers"
+          "ilm"
         ],
-        "summary": "Switches the indices, ILM policies, and legacy, composable and component templates from using custom node attributes and\n",
-        "description": "attribute-based allocation filters to using data tiers, and optionally deletes one legacy index template.+\nUsing node roles enables ILM to automatically move the indices between data tiers.",
+        "summary": "Migrate to data tiers routing",
+        "description": "Switch the indices, ILM policies, and legacy, composable, and component templates from using custom node attributes and attribute-based allocation filters to using data tiers.\nOptionally, delete one legacy index template.\nUsing node roles enables ILM to automatically move the indices between data tiers.\n\nMigrating away from custom node attributes routing can be manually performed.\nThis API provides an automated way of performing three out of the four manual steps listed in the migration guide:\n\n1. Stop setting the custom hot attribute on new indices.\n1. Remove custom allocation settings from existing ILM policies.\n1. Replace custom allocation settings from existing indices with the corresponding tier preference.\n\nILM must be stopped before performing the migration.\nUse the stop ILM and get ILM status APIs to wait until the reported operation mode is `STOPPED`.",
         "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/ilm-migrate-to-data-tiers.html"
+          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/migrate-index-allocation-filters.html"
         },
         "operationId": "ilm-migrate-to-data-tiers",
         "parameters": [
@@ -10154,18 +9762,16 @@
             }
           }
         },
-        "x-available-since": "7.14.0"
+        "x-state": "Added in 7.14.0"
       }
     },
     "/_ilm/move/{index}": {
       "post": {
         "tags": [
-          "ilm.move_to_step"
+          "ilm"
         ],
-        "summary": "Manually moves an index into the specified step and executes that step",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/ilm-move-to-step.html"
-        },
+        "summary": "Move to a lifecycle step",
+        "description": "Manually move an index into a specific step in the lifecycle policy and run that step.\n\nWARNING: This operation can result in the loss of data. Manually moving an index into a specific step runs that step even if it has already been performed. This is a potentially destructive action and this should be considered an expert level API.\n\nYou must specify both the current step and the step to be executed in the body of the request.\nThe request will fail if the current step does not match the step currently running for the index\nThis is to prevent the index from being moved from an unexpected step into the next step.\n\nWhen specifying the target (`next_step`) to which the index will be moved, either the name or both the action and name fields are optional.\nIf only the phase is specified, the index will move to the first step of the first action in the target phase.\nIf the phase and action are specified, the index will move to the first step of the specified action in the specified phase.\nOnly actions specified in the ILM policy are considered valid.\nAn index cannot move to a step that is not part of its policy.",
         "operationId": "ilm-move-to-step",
         "parameters": [
           {
@@ -10192,7 +9798,11 @@
                   "next_step": {
                     "$ref": "#/components/schemas/ilm.move_to_step:StepKey"
                   }
-                }
+                },
+                "required": [
+                  "current_step",
+                  "next_step"
+                ]
               }
             }
           }
@@ -10209,18 +9819,16 @@
             }
           }
         },
-        "x-available-since": "6.6.0"
+        "x-state": "Added in 6.6.0"
       }
     },
     "/{index}/_ilm/remove": {
       "post": {
         "tags": [
-          "ilm.remove_policy"
+          "ilm"
         ],
-        "summary": "Removes the assigned lifecycle policy and stops managing the specified index",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/ilm-remove-policy.html"
-        },
+        "summary": "Remove policies from an index",
+        "description": "Remove the assigned lifecycle policies from an index or a data stream's backing indices.\nIt also stops managing the indices.",
         "operationId": "ilm-remove-policy",
         "parameters": [
           {
@@ -10262,18 +9870,16 @@
             }
           }
         },
-        "x-available-since": "6.6.0"
+        "x-state": "Added in 6.6.0"
       }
     },
     "/{index}/_ilm/retry": {
       "post": {
         "tags": [
-          "ilm.retry"
+          "ilm"
         ],
-        "summary": "Retries executing the policy for an index that is in the ERROR step",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/ilm-retry-policy.html"
-        },
+        "summary": "Retry a policy",
+        "description": "Retry running the lifecycle policy for an index that is in the ERROR step.\nThe API sets the policy back to the step where the error occurred and runs the step.\nUse the explain lifecycle state API to determine whether an index is in the ERROR step.",
         "operationId": "ilm-retry",
         "parameters": [
           {
@@ -10300,23 +9906,22 @@
             }
           }
         },
-        "x-available-since": "6.6.0"
+        "x-state": "Added in 6.6.0"
       }
     },
     "/_ilm/start": {
       "post": {
         "tags": [
-          "ilm.start"
+          "ilm"
         ],
-        "summary": "Start the index lifecycle management (ILM) plugin",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/ilm-start.html"
-        },
+        "summary": "Start the ILM plugin",
+        "description": "Start the index lifecycle management plugin if it is currently stopped.\nILM is started automatically when the cluster is formed.\nRestarting ILM is necessary only when it has been stopped using the stop ILM API.",
         "operationId": "ilm-start",
         "parameters": [
           {
             "in": "query",
             "name": "master_timeout",
+            "description": "Explicit operation timeout for connection to master node",
             "deprecated": false,
             "schema": {
               "$ref": "#/components/schemas/_types:Duration"
@@ -10326,6 +9931,7 @@
           {
             "in": "query",
             "name": "timeout",
+            "description": "Explicit operation timeout",
             "deprecated": false,
             "schema": {
               "$ref": "#/components/schemas/_types:Duration"
@@ -10345,23 +9951,22 @@
             }
           }
         },
-        "x-available-since": "6.6.0"
+        "x-state": "Added in 6.6.0"
       }
     },
     "/_ilm/stop": {
       "post": {
         "tags": [
-          "ilm.stop"
+          "ilm"
         ],
-        "summary": "Halts all lifecycle management operations and stops the index lifecycle management (ILM) plugin",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/ilm-stop.html"
-        },
+        "summary": "Stop the ILM plugin",
+        "description": "Halt all lifecycle management operations and stop the index lifecycle management plugin.\nThis is useful when you are performing maintenance on the cluster and need to prevent ILM from performing any actions on your indices.\n\nThe API returns as soon as the stop request has been acknowledged, but the plugin might continue to run until in-progress operations complete and the plugin can be safely stopped.\nUse the get ILM status API to check whether ILM is running.",
         "operationId": "ilm-stop",
         "parameters": [
           {
             "in": "query",
             "name": "master_timeout",
+            "description": "Explicit operation timeout for connection to master node",
             "deprecated": false,
             "schema": {
               "$ref": "#/components/schemas/_types:Duration"
@@ -10371,6 +9976,7 @@
           {
             "in": "query",
             "name": "timeout",
+            "description": "Explicit operation timeout",
             "deprecated": false,
             "schema": {
               "$ref": "#/components/schemas/_types:Duration"
@@ -10390,19 +9996,16 @@
             }
           }
         },
-        "x-available-since": "6.6.0"
+        "x-state": "Added in 6.6.0"
       }
     },
     "/{index}/_doc": {
       "post": {
         "tags": [
-          "index"
+          "document"
         ],
         "summary": "Index a document",
         "description": "Adds a JSON document to the specified data stream or index and makes it searchable.\nIf the target is an index and the document already exists, the request updates the document and increments its version.",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/master/docs-index_.html"
-        },
         "operationId": "index-2",
         "parameters": [
           {
@@ -10455,13 +10058,10 @@
     "/{index}/_block/{block}": {
       "put": {
         "tags": [
-          "indices.add_block"
+          "indices"
         ],
         "summary": "Add an index block",
         "description": "Limits the operations allowed on an index by blocking specific operation types.",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/master/index-modules-blocks.html"
-        },
         "operationId": "indices-add-block",
         "parameters": [
           {
@@ -10568,18 +10168,16 @@
             }
           }
         },
-        "x-available-since": "7.9.0"
+        "x-state": "Added in 7.9.0"
       }
     },
     "/_analyze": {
       "get": {
         "tags": [
-          "indices.analyze"
+          "indices"
         ],
-        "summary": "Performs analysis on a text string and returns the resulting tokens",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/indices-analyze.html"
-        },
+        "summary": "Get tokens from text analysis",
+        "description": "The analyze API performs [analysis](https://www.elastic.co/guide/en/elasticsearch/reference/current/analysis.html) on a text string and returns the resulting tokens.",
         "operationId": "indices-analyze",
         "requestBody": {
           "$ref": "#/components/requestBodies/indices.analyze"
@@ -10592,12 +10190,10 @@
       },
       "post": {
         "tags": [
-          "indices.analyze"
+          "indices"
         ],
-        "summary": "Performs analysis on a text string and returns the resulting tokens",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/indices-analyze.html"
-        },
+        "summary": "Get tokens from text analysis",
+        "description": "The analyze API performs [analysis](https://www.elastic.co/guide/en/elasticsearch/reference/current/analysis.html) on a text string and returns the resulting tokens.",
         "operationId": "indices-analyze-1",
         "requestBody": {
           "$ref": "#/components/requestBodies/indices.analyze"
@@ -10612,12 +10208,10 @@
     "/{index}/_analyze": {
       "get": {
         "tags": [
-          "indices.analyze"
+          "indices"
         ],
-        "summary": "Performs analysis on a text string and returns the resulting tokens",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/indices-analyze.html"
-        },
+        "summary": "Get tokens from text analysis",
+        "description": "The analyze API performs [analysis](https://www.elastic.co/guide/en/elasticsearch/reference/current/analysis.html) on a text string and returns the resulting tokens.",
         "operationId": "indices-analyze-2",
         "parameters": [
           {
@@ -10635,12 +10229,10 @@
       },
       "post": {
         "tags": [
-          "indices.analyze"
+          "indices"
         ],
-        "summary": "Performs analysis on a text string and returns the resulting tokens",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/indices-analyze.html"
-        },
+        "summary": "Get tokens from text analysis",
+        "description": "The analyze API performs [analysis](https://www.elastic.co/guide/en/elasticsearch/reference/current/analysis.html) on a text string and returns the resulting tokens.",
         "operationId": "indices-analyze-3",
         "parameters": [
           {
@@ -10660,13 +10252,10 @@
     "/_cache/clear": {
       "post": {
         "tags": [
-          "indices.clear_cache"
+          "indices"
         ],
         "summary": "Clears the caches of one or more indices",
         "description": "For data streams, the API clears the caches of the stream’s backing indices.",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-clearcache.html"
-        },
         "operationId": "indices-clear-cache",
         "parameters": [
           {
@@ -10701,13 +10290,10 @@
     "/{index}/_cache/clear": {
       "post": {
         "tags": [
-          "indices.clear_cache"
+          "indices"
         ],
         "summary": "Clears the caches of one or more indices",
         "description": "For data streams, the API clears the caches of the stream’s backing indices.",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-clearcache.html"
-        },
         "operationId": "indices-clear-cache-1",
         "parameters": [
           {
@@ -10745,12 +10331,9 @@
     "/{index}/_clone/{target}": {
       "put": {
         "tags": [
-          "indices.clone"
+          "indices"
         ],
         "summary": "Clones an existing index",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-clone-index.html"
-        },
         "operationId": "indices-clone",
         "parameters": [
           {
@@ -10777,16 +10360,13 @@
             "$ref": "#/components/responses/indices.clone#200"
           }
         },
-        "x-available-since": "7.4.0"
+        "x-state": "Added in 7.4.0"
       },
       "post": {
         "tags": [
-          "indices.clone"
+          "indices"
         ],
         "summary": "Clones an existing index",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-clone-index.html"
-        },
         "operationId": "indices-clone-1",
         "parameters": [
           {
@@ -10813,18 +10393,15 @@
             "$ref": "#/components/responses/indices.clone#200"
           }
         },
-        "x-available-since": "7.4.0"
+        "x-state": "Added in 7.4.0"
       }
     },
     "/{index}/_close": {
       "post": {
         "tags": [
-          "indices.close"
+          "indices"
         ],
         "summary": "Closes an index",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/indices-close.html"
-        },
         "operationId": "indices-close",
         "parameters": [
           {
@@ -10935,13 +10512,10 @@
     "/{index}": {
       "get": {
         "tags": [
-          "indices.get"
+          "indices"
         ],
         "summary": "Get index information",
         "description": "Returns information about one or more indices. For data streams, the API returns information about the\nstream’s backing indices.",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-get-index.html"
-        },
         "operationId": "indices-get",
         "parameters": [
           {
@@ -11054,13 +10628,10 @@
       },
       "put": {
         "tags": [
-          "indices.create"
+          "indices"
         ],
         "summary": "Create an index",
         "description": "Creates a new index.",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/indices-create-index.html"
-        },
         "operationId": "indices-create",
         "parameters": [
           {
@@ -11160,13 +10731,10 @@
       },
       "delete": {
         "tags": [
-          "indices.delete"
+          "indices"
         ],
         "summary": "Delete indices",
         "description": "Deletes one or more indices.",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-delete-index.html"
-        },
         "operationId": "indices-delete",
         "parameters": [
           {
@@ -11246,13 +10814,10 @@
       },
       "head": {
         "tags": [
-          "indices.exists"
+          "indices"
         ],
         "summary": "Check indices",
         "description": "Checks if one or more indices, index aliases, or data streams exist.",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-exists.html"
-        },
         "operationId": "indices-exists",
         "parameters": [
           {
@@ -11340,13 +10905,10 @@
     "/_data_stream/{name}": {
       "get": {
         "tags": [
-          "indices.get_data_stream"
+          "data stream"
         ],
         "summary": "Get data streams",
         "description": "Retrieves information about one or more data streams.",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/master/data-streams.html"
-        },
         "operationId": "indices-get-data-stream-1",
         "parameters": [
           {
@@ -11370,17 +10932,14 @@
             "$ref": "#/components/responses/indices.get_data_stream#200"
           }
         },
-        "x-available-since": "7.9.0"
+        "x-state": "Added in 7.9.0"
       },
       "put": {
         "tags": [
-          "indices.create_data_stream"
+          "data stream"
         ],
         "summary": "Create a data stream",
         "description": "Creates a data stream.\nYou must have a matching index template with data stream enabled.",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/master/data-streams.html"
-        },
         "operationId": "indices-create-data-stream",
         "parameters": [
           {
@@ -11427,17 +10986,14 @@
             }
           }
         },
-        "x-available-since": "7.9.0"
+        "x-state": "Added in 7.9.0"
       },
       "delete": {
         "tags": [
-          "indices.delete_data_stream"
+          "indices"
         ],
         "summary": "Delete data streams",
         "description": "Deletes one or more data streams and their backing indices.",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/master/data-streams.html"
-        },
         "operationId": "indices-delete-data-stream",
         "parameters": [
           {
@@ -11484,19 +11040,16 @@
             }
           }
         },
-        "x-available-since": "7.9.0"
+        "x-state": "Added in 7.9.0"
       }
     },
     "/_data_stream/_stats": {
       "get": {
         "tags": [
-          "indices.data_streams_stats"
+          "data stream"
         ],
         "summary": "Get data stream stats",
         "description": "Retrieves statistics for one or more data streams.",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/master/data-streams.html"
-        },
         "operationId": "indices-data-streams-stats",
         "parameters": [
           {
@@ -11508,19 +11061,16 @@
             "$ref": "#/components/responses/indices.data_streams_stats#200"
           }
         },
-        "x-available-since": "7.9.0"
+        "x-state": "Added in 7.9.0"
       }
     },
     "/_data_stream/{name}/_stats": {
       "get": {
         "tags": [
-          "indices.data_streams_stats"
+          "data stream"
         ],
         "summary": "Get data stream stats",
         "description": "Retrieves statistics for one or more data streams.",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/master/data-streams.html"
-        },
         "operationId": "indices-data-streams-stats-1",
         "parameters": [
           {
@@ -11535,19 +11085,16 @@
             "$ref": "#/components/responses/indices.data_streams_stats#200"
           }
         },
-        "x-available-since": "7.9.0"
+        "x-state": "Added in 7.9.0"
       }
     },
     "/{index}/_alias/{name}": {
       "get": {
         "tags": [
-          "indices.get_alias"
+          "indices"
         ],
         "summary": "Get aliases",
         "description": "Retrieves information for one or more data stream or index aliases.",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-aliases.html"
-        },
         "operationId": "indices-get-alias-2",
         "parameters": [
           {
@@ -11577,13 +11124,10 @@
       },
       "put": {
         "tags": [
-          "indices.put_alias"
+          "indices"
         ],
         "summary": "Create or update an alias",
         "description": "Adds a data stream or index to an alias.",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-aliases.html"
-        },
         "operationId": "indices-put-alias",
         "parameters": [
           {
@@ -11610,13 +11154,10 @@
       },
       "post": {
         "tags": [
-          "indices.put_alias"
+          "indices"
         ],
         "summary": "Create or update an alias",
         "description": "Adds a data stream or index to an alias.",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-aliases.html"
-        },
         "operationId": "indices-put-alias-1",
         "parameters": [
           {
@@ -11643,13 +11184,10 @@
       },
       "delete": {
         "tags": [
-          "indices.delete_alias"
+          "indices"
         ],
         "summary": "Delete an alias",
         "description": "Removes a data stream or index from an alias.",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-aliases.html"
-        },
         "operationId": "indices-delete-alias",
         "parameters": [
           {
@@ -11673,13 +11211,10 @@
       },
       "head": {
         "tags": [
-          "indices.exists_alias"
+          "indices"
         ],
         "summary": "Check aliases",
         "description": "Checks if one or more data stream or index aliases exist.",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-aliases.html"
-        },
         "operationId": "indices-exists-alias-1",
         "parameters": [
           {
@@ -11711,13 +11246,10 @@
     "/{index}/_aliases/{name}": {
       "put": {
         "tags": [
-          "indices.put_alias"
+          "indices"
         ],
         "summary": "Create or update an alias",
         "description": "Adds a data stream or index to an alias.",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-aliases.html"
-        },
         "operationId": "indices-put-alias-2",
         "parameters": [
           {
@@ -11744,13 +11276,10 @@
       },
       "post": {
         "tags": [
-          "indices.put_alias"
+          "indices"
         ],
         "summary": "Create or update an alias",
         "description": "Adds a data stream or index to an alias.",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-aliases.html"
-        },
         "operationId": "indices-put-alias-3",
         "parameters": [
           {
@@ -11777,13 +11306,10 @@
       },
       "delete": {
         "tags": [
-          "indices.delete_alias"
+          "indices"
         ],
         "summary": "Delete an alias",
         "description": "Removes a data stream or index from an alias.",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-aliases.html"
-        },
         "operationId": "indices-delete-alias-1",
         "parameters": [
           {
@@ -11809,13 +11335,10 @@
     "/_data_stream/{name}/_lifecycle": {
       "get": {
         "tags": [
-          "indices.get_data_lifecycle"
+          "data stream"
         ],
         "summary": "Get data stream lifecycles",
         "description": "Retrieves the data stream lifecycle configuration of one or more data streams.",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/master/data-streams-get-lifecycle.html"
-        },
         "operationId": "indices-get-data-lifecycle",
         "parameters": [
           {
@@ -11883,17 +11406,14 @@
             }
           }
         },
-        "x-available-since": "8.11.0"
+        "x-state": "Added in 8.11.0"
       },
       "put": {
         "tags": [
-          "indices.put_data_lifecycle"
+          "indices"
         ],
         "summary": "Update data stream lifecycles",
         "description": "Update the data stream lifecycle of the specified data streams.",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/master/data-streams-put-lifecycle.html"
-        },
         "operationId": "indices-put-data-lifecycle",
         "parameters": [
           {
@@ -11967,17 +11487,14 @@
             }
           }
         },
-        "x-available-since": "8.11.0"
+        "x-state": "Added in 8.11.0"
       },
       "delete": {
         "tags": [
-          "indices.delete_data_lifecycle"
+          "indices"
         ],
         "summary": "Delete data stream lifecycles",
         "description": "Removes the data stream lifecycle from a data stream, rendering it not managed by the data stream lifecycle.",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/master/data-streams-delete-lifecycle.html"
-        },
         "operationId": "indices-delete-data-lifecycle",
         "parameters": [
           {
@@ -12034,19 +11551,16 @@
             }
           }
         },
-        "x-available-since": "8.11.0"
+        "x-state": "Added in 8.11.0"
       }
     },
     "/_index_template/{name}": {
       "get": {
         "tags": [
-          "indices.get_index_template"
+          "indices"
         ],
         "summary": "Get index templates",
         "description": "Returns information about one or more index templates.",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-get-template.html"
-        },
         "operationId": "indices-get-index-template-1",
         "parameters": [
           {
@@ -12070,17 +11584,14 @@
             "$ref": "#/components/responses/indices.get_index_template#200"
           }
         },
-        "x-available-since": "7.9.0"
+        "x-state": "Added in 7.9.0"
       },
       "put": {
         "tags": [
-          "indices.put_index_template"
+          "indices"
         ],
         "summary": "Create or update an index template",
         "description": "Index templates define settings, mappings, and aliases that can be applied automatically to new indices.",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-put-template.html"
-        },
         "operationId": "indices-put-index-template",
         "parameters": [
           {
@@ -12104,17 +11615,14 @@
             "$ref": "#/components/responses/indices.put_index_template#200"
           }
         },
-        "x-available-since": "7.9.0"
+        "x-state": "Added in 7.9.0"
       },
       "post": {
         "tags": [
-          "indices.put_index_template"
+          "indices"
         ],
         "summary": "Create or update an index template",
         "description": "Index templates define settings, mappings, and aliases that can be applied automatically to new indices.",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-put-template.html"
-        },
         "operationId": "indices-put-index-template-1",
         "parameters": [
           {
@@ -12138,17 +11646,14 @@
             "$ref": "#/components/responses/indices.put_index_template#200"
           }
         },
-        "x-available-since": "7.9.0"
+        "x-state": "Added in 7.9.0"
       },
       "delete": {
         "tags": [
-          "indices.delete_index_template"
+          "indices"
         ],
         "summary": "Delete an index template",
         "description": "The provided <index-template> may contain multiple template names separated by a comma. If multiple template\nnames are specified then there is no wildcard support and the provided names should match completely with\nexisting templates.",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-delete-template.html"
-        },
         "operationId": "indices-delete-index-template",
         "parameters": [
           {
@@ -12195,16 +11700,14 @@
             }
           }
         },
-        "x-available-since": "7.8.0"
+        "x-state": "Added in 7.8.0"
       },
       "head": {
         "tags": [
-          "indices.exists_index_template"
+          "indices"
         ],
-        "summary": "Returns information about whether a particular index template exists",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/master/index-templates.html"
-        },
+        "summary": "Check index templates",
+        "description": "Check whether index templates exist.",
         "operationId": "indices-exists-index-template",
         "parameters": [
           {
@@ -12242,13 +11745,10 @@
     "/_template/{name}": {
       "get": {
         "tags": [
-          "indices.get_template"
+          "indices"
         ],
         "summary": "Get index templates",
         "description": "Retrieves information about one or more index templates.",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-get-template-v1.html"
-        },
         "operationId": "indices-get-template-1",
         "parameters": [
           {
@@ -12272,13 +11772,10 @@
       },
       "put": {
         "tags": [
-          "indices.put_template"
+          "indices"
         ],
         "summary": "Create or update an index template",
         "description": "Index templates define settings, mappings, and aliases that can be applied automatically to new indices.",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-templates-v1.html"
-        },
         "operationId": "indices-put-template",
         "parameters": [
           {
@@ -12308,13 +11805,10 @@
       },
       "post": {
         "tags": [
-          "indices.put_template"
+          "indices"
         ],
         "summary": "Create or update an index template",
         "description": "Index templates define settings, mappings, and aliases that can be applied automatically to new indices.",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-templates-v1.html"
-        },
         "operationId": "indices-put-template-1",
         "parameters": [
           {
@@ -12344,12 +11838,9 @@
       },
       "delete": {
         "tags": [
-          "indices.delete_template"
+          "indices"
         ],
         "summary": "Deletes a legacy index template",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-delete-template-v1.html"
-        },
         "operationId": "indices-delete-template",
         "parameters": [
           {
@@ -12399,13 +11890,10 @@
       },
       "head": {
         "tags": [
-          "indices.exists_template"
+          "indices"
         ],
         "summary": "Check existence of index templates",
         "description": "Returns information about whether a particular index template exists.",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-template-exists-v1.html"
-        },
         "operationId": "indices-exists-template",
         "parameters": [
           {
@@ -12463,12 +11951,9 @@
     "/{index}/_disk_usage": {
       "post": {
         "tags": [
-          "indices.disk_usage"
+          "indices"
         ],
         "summary": "Analyzes the disk usage of each field of an index or data stream",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/indices-disk-usage.html"
-        },
         "operationId": "indices-disk-usage",
         "parameters": [
           {
@@ -12545,19 +12030,15 @@
             }
           }
         },
-        "x-technical-preview": true,
-        "x-available-since": "7.15.0"
+        "x-state": "Technical preview"
       }
     },
     "/{index}/_downsample/{target_index}": {
       "post": {
         "tags": [
-          "indices.downsample"
+          "indices"
         ],
         "summary": "Aggregates a time series (TSDS) index and stores pre-computed statistical summaries (`min`, `max`, `sum`, `value_count` and `avg`) for each metric field grouped by a configured time interval",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/indices-downsample-data-stream.html"
-        },
         "operationId": "indices-downsample",
         "parameters": [
           {
@@ -12605,20 +12086,16 @@
             }
           }
         },
-        "x-technical-preview": true,
-        "x-available-since": "8.5.0"
+        "x-state": "Technical preview"
       }
     },
     "/_alias/{name}": {
       "get": {
         "tags": [
-          "indices.get_alias"
+          "indices"
         ],
         "summary": "Get aliases",
         "description": "Retrieves information for one or more data stream or index aliases.",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-aliases.html"
-        },
         "operationId": "indices-get-alias-1",
         "parameters": [
           {
@@ -12645,13 +12122,10 @@
       },
       "head": {
         "tags": [
-          "indices.exists_alias"
+          "indices"
         ],
         "summary": "Check aliases",
         "description": "Checks if one or more data stream or index aliases exist.",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-aliases.html"
-        },
         "operationId": "indices-exists-alias",
         "parameters": [
           {
@@ -12680,13 +12154,10 @@
     "/{index}/_lifecycle/explain": {
       "get": {
         "tags": [
-          "indices.explain_data_lifecycle"
+          "indices"
         ],
         "summary": "Get the status for a data stream lifecycle",
-        "description": "Retrieves information about an index or data stream’s current data stream lifecycle status, such as time since index creation, time since rollover, the lifecycle configuration managing the index, or any errors encountered during lifecycle execution.",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/data-streams-explain-lifecycle.html"
-        },
+        "description": "Get information about an index or data stream's current data stream lifecycle status, such as time since index creation, time since rollover, the lifecycle configuration managing the index, or any errors encountered during lifecycle execution.",
         "operationId": "indices-explain-data-lifecycle",
         "parameters": [
           {
@@ -12744,18 +12215,15 @@
             }
           }
         },
-        "x-available-since": "8.11.0"
+        "x-state": "Added in 8.11.0"
       }
     },
     "/{index}/_field_usage_stats": {
       "get": {
         "tags": [
-          "indices.field_usage_stats"
+          "indices"
         ],
         "summary": "Returns field usage information for each shard and field of an index",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/master/field-usage-stats.html"
-        },
         "operationId": "indices-field-usage-stats",
         "parameters": [
           {
@@ -12852,19 +12320,15 @@
             }
           }
         },
-        "x-technical-preview": true,
-        "x-available-since": "7.15.0"
+        "x-state": "Technical preview"
       }
     },
     "/_flush": {
       "get": {
         "tags": [
-          "indices.flush"
+          "indices"
         ],
         "summary": "Flushes one or more data streams or indices",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/indices-flush.html"
-        },
         "operationId": "indices-flush-1",
         "parameters": [
           {
@@ -12891,12 +12355,9 @@
       },
       "post": {
         "tags": [
-          "indices.flush"
+          "indices"
         ],
         "summary": "Flushes one or more data streams or indices",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/indices-flush.html"
-        },
         "operationId": "indices-flush",
         "parameters": [
           {
@@ -12925,12 +12386,9 @@
     "/{index}/_flush": {
       "get": {
         "tags": [
-          "indices.flush"
+          "indices"
         ],
         "summary": "Flushes one or more data streams or indices",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/indices-flush.html"
-        },
         "operationId": "indices-flush-3",
         "parameters": [
           {
@@ -12960,12 +12418,9 @@
       },
       "post": {
         "tags": [
-          "indices.flush"
+          "indices"
         ],
         "summary": "Flushes one or more data streams or indices",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/indices-flush.html"
-        },
         "operationId": "indices-flush-2",
         "parameters": [
           {
@@ -12997,12 +12452,9 @@
     "/_forcemerge": {
       "post": {
         "tags": [
-          "indices.forcemerge"
+          "indices"
         ],
         "summary": "Performs the force merge operation on one or more indices",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-forcemerge.html"
-        },
         "operationId": "indices-forcemerge",
         "parameters": [
           {
@@ -13032,18 +12484,15 @@
             "$ref": "#/components/responses/indices.forcemerge#200"
           }
         },
-        "x-available-since": "2.1.0"
+        "x-state": "Added in 2.1.0"
       }
     },
     "/{index}/_forcemerge": {
       "post": {
         "tags": [
-          "indices.forcemerge"
+          "indices"
         ],
         "summary": "Performs the force merge operation on one or more indices",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-forcemerge.html"
-        },
         "operationId": "indices-forcemerge-1",
         "parameters": [
           {
@@ -13076,19 +12525,16 @@
             "$ref": "#/components/responses/indices.forcemerge#200"
           }
         },
-        "x-available-since": "2.1.0"
+        "x-state": "Added in 2.1.0"
       }
     },
     "/_alias": {
       "get": {
         "tags": [
-          "indices.get_alias"
+          "indices"
         ],
         "summary": "Get aliases",
         "description": "Retrieves information for one or more data stream or index aliases.",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-aliases.html"
-        },
         "operationId": "indices-get-alias",
         "parameters": [
           {
@@ -13114,13 +12560,10 @@
     "/{index}/_alias": {
       "get": {
         "tags": [
-          "indices.get_alias"
+          "indices"
         ],
         "summary": "Get aliases",
         "description": "Retrieves information for one or more data stream or index aliases.",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-aliases.html"
-        },
         "operationId": "indices-get-alias-3",
         "parameters": [
           {
@@ -13149,13 +12592,10 @@
     "/_data_stream": {
       "get": {
         "tags": [
-          "indices.get_data_stream"
+          "data stream"
         ],
         "summary": "Get data streams",
         "description": "Retrieves information about one or more data streams.",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/master/data-streams.html"
-        },
         "operationId": "indices-get-data-stream",
         "parameters": [
           {
@@ -13176,19 +12616,16 @@
             "$ref": "#/components/responses/indices.get_data_stream#200"
           }
         },
-        "x-available-since": "7.9.0"
+        "x-state": "Added in 7.9.0"
       }
     },
     "/_mapping/field/{fields}": {
       "get": {
         "tags": [
-          "indices.get_field_mapping"
+          "indices"
         ],
         "summary": "Get mapping definitions",
         "description": "Retrieves mapping definitions for one or more fields.\nFor data streams, the API retrieves field mappings for the stream’s backing indices.",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-get-field-mapping.html"
-        },
         "operationId": "indices-get-field-mapping",
         "parameters": [
           {
@@ -13220,13 +12657,10 @@
     "/{index}/_mapping/field/{fields}": {
       "get": {
         "tags": [
-          "indices.get_field_mapping"
+          "indices"
         ],
         "summary": "Get mapping definitions",
         "description": "Retrieves mapping definitions for one or more fields.\nFor data streams, the API retrieves field mappings for the stream’s backing indices.",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-get-field-mapping.html"
-        },
         "operationId": "indices-get-field-mapping-1",
         "parameters": [
           {
@@ -13261,13 +12695,10 @@
     "/_index_template": {
       "get": {
         "tags": [
-          "indices.get_index_template"
+          "indices"
         ],
         "summary": "Get index templates",
         "description": "Returns information about one or more index templates.",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-get-template.html"
-        },
         "operationId": "indices-get-index-template",
         "parameters": [
           {
@@ -13288,19 +12719,16 @@
             "$ref": "#/components/responses/indices.get_index_template#200"
           }
         },
-        "x-available-since": "7.9.0"
+        "x-state": "Added in 7.9.0"
       }
     },
     "/_mapping": {
       "get": {
         "tags": [
-          "indices.get_mapping"
+          "indices"
         ],
         "summary": "Get mapping definitions",
         "description": "Retrieves mapping definitions for one or more indices.\nFor data streams, the API retrieves mappings for the stream’s backing indices.",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-get-mapping.html"
-        },
         "operationId": "indices-get-mapping",
         "parameters": [
           {
@@ -13329,13 +12757,10 @@
     "/{index}/_mapping": {
       "get": {
         "tags": [
-          "indices.get_mapping"
+          "indices"
         ],
         "summary": "Get mapping definitions",
         "description": "Retrieves mapping definitions for one or more indices.\nFor data streams, the API retrieves mappings for the stream’s backing indices.",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-get-mapping.html"
-        },
         "operationId": "indices-get-mapping-1",
         "parameters": [
           {
@@ -13365,13 +12790,10 @@
       },
       "put": {
         "tags": [
-          "indices.put_mapping"
+          "indices"
         ],
         "summary": "Update field mappings",
         "description": "Adds new fields to an existing data stream or index.\nYou can also use this API to change the search settings of existing fields.\nFor data streams, these changes are applied to all backing indices by default.",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-put-mapping.html"
-        },
         "operationId": "indices-put-mapping",
         "parameters": [
           {
@@ -13407,13 +12829,10 @@
       },
       "post": {
         "tags": [
-          "indices.put_mapping"
+          "indices"
         ],
         "summary": "Update field mappings",
         "description": "Adds new fields to an existing data stream or index.\nYou can also use this API to change the search settings of existing fields.\nFor data streams, these changes are applied to all backing indices by default.",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-put-mapping.html"
-        },
         "operationId": "indices-put-mapping-1",
         "parameters": [
           {
@@ -13451,13 +12870,10 @@
     "/_settings": {
       "get": {
         "tags": [
-          "indices.get_settings"
+          "indices"
         ],
         "summary": "Get index settings",
         "description": "Returns setting information for one or more indices. For data streams,\nreturns setting information for the stream’s backing indices.",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-get-settings.html"
-        },
         "operationId": "indices-get-settings",
         "parameters": [
           {
@@ -13490,13 +12906,10 @@
       },
       "put": {
         "tags": [
-          "indices.put_settings"
+          "indices"
         ],
         "summary": "Update index settings",
         "description": "Changes dynamic index settings in real time. For data streams, index setting\nchanges are applied to all backing indices by default.",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-update-settings.html"
-        },
         "operationId": "indices-put-settings",
         "parameters": [
           {
@@ -13534,13 +12947,10 @@
     "/{index}/_settings": {
       "get": {
         "tags": [
-          "indices.get_settings"
+          "indices"
         ],
         "summary": "Get index settings",
         "description": "Returns setting information for one or more indices. For data streams,\nreturns setting information for the stream’s backing indices.",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-get-settings.html"
-        },
         "operationId": "indices-get-settings-1",
         "parameters": [
           {
@@ -13576,13 +12986,10 @@
       },
       "put": {
         "tags": [
-          "indices.put_settings"
+          "indices"
         ],
         "summary": "Update index settings",
         "description": "Changes dynamic index settings in real time. For data streams, index setting\nchanges are applied to all backing indices by default.",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-update-settings.html"
-        },
         "operationId": "indices-put-settings-1",
         "parameters": [
           {
@@ -13623,13 +13030,10 @@
     "/{index}/_settings/{name}": {
       "get": {
         "tags": [
-          "indices.get_settings"
+          "indices"
         ],
         "summary": "Get index settings",
         "description": "Returns setting information for one or more indices. For data streams,\nreturns setting information for the stream’s backing indices.",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-get-settings.html"
-        },
         "operationId": "indices-get-settings-2",
         "parameters": [
           {
@@ -13670,13 +13074,10 @@
     "/_settings/{name}": {
       "get": {
         "tags": [
-          "indices.get_settings"
+          "indices"
         ],
         "summary": "Get index settings",
         "description": "Returns setting information for one or more indices. For data streams,\nreturns setting information for the stream’s backing indices.",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-get-settings.html"
-        },
         "operationId": "indices-get-settings-3",
         "parameters": [
           {
@@ -13714,13 +13115,10 @@
     "/_template": {
       "get": {
         "tags": [
-          "indices.get_template"
+          "indices"
         ],
         "summary": "Get index templates",
         "description": "Retrieves information about one or more index templates.",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-get-template-v1.html"
-        },
         "operationId": "indices-get-template",
         "parameters": [
           {
@@ -13743,13 +13141,10 @@
     "/_data_stream/_migrate/{name}": {
       "post": {
         "tags": [
-          "indices.migrate_to_data_stream"
+          "data stream"
         ],
         "summary": "Convert an index alias to a data stream",
         "description": "Converts an index alias to a data stream.\nYou must have a matching index template that is data stream enabled.\nThe alias must meet the following criteria:\nThe alias must have a write index;\nAll indices for the alias must have a `@timestamp` field mapping of a `date` or `date_nanos` field type;\nThe alias must not have any filters;\nThe alias must not use custom routing.\nIf successful, the request removes the alias and creates a data stream with the same name.\nThe indices for the alias become hidden backing indices for the stream.\nThe write index for the alias becomes the write index for the stream.",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/master/data-streams.html"
-        },
         "operationId": "indices-migrate-to-data-stream",
         "parameters": [
           {
@@ -13796,19 +13191,16 @@
             }
           }
         },
-        "x-available-since": "7.9.0"
+        "x-state": "Added in 7.9.0"
       }
     },
     "/_data_stream/_modify": {
       "post": {
         "tags": [
-          "indices.modify_data_stream"
+          "data stream"
         ],
         "summary": "Update data streams",
         "description": "Performs one or more data stream modification actions in a single atomic operation.",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/master/data-streams.html"
-        },
         "operationId": "indices-modify-data-stream",
         "requestBody": {
           "content": {
@@ -13844,19 +13236,16 @@
             }
           }
         },
-        "x-available-since": "7.16.0"
+        "x-state": "Added in 7.16.0"
       }
     },
     "/{index}/_open": {
       "post": {
         "tags": [
-          "indices.open"
+          "indices"
         ],
         "summary": "Opens a closed index",
         "description": "For data streams, the API opens any closed backing indices.",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-open-close.html"
-        },
         "operationId": "indices-open",
         "parameters": [
           {
@@ -13960,12 +13349,9 @@
     "/_data_stream/_promote/{name}": {
       "post": {
         "tags": [
-          "indices.promote_data_stream"
+          "indices"
         ],
         "summary": "Promotes a data stream from a replicated data stream managed by CCR to a regular data stream",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/master/data-streams.html"
-        },
         "operationId": "indices-promote-data-stream",
         "parameters": [
           {
@@ -14002,19 +13388,16 @@
             }
           }
         },
-        "x-available-since": "7.9.0"
+        "x-state": "Added in 7.9.0"
       }
     },
     "/_recovery": {
       "get": {
         "tags": [
-          "indices.recovery"
+          "indices"
         ],
         "summary": "Returns information about ongoing and completed shard recoveries for one or more indices",
         "description": "For data streams, the API returns information for the stream’s backing indices.",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-recovery.html"
-        },
         "operationId": "indices-recovery",
         "parameters": [
           {
@@ -14034,13 +13417,10 @@
     "/{index}/_recovery": {
       "get": {
         "tags": [
-          "indices.recovery"
+          "indices"
         ],
         "summary": "Returns information about ongoing and completed shard recoveries for one or more indices",
         "description": "For data streams, the API returns information for the stream’s backing indices.",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-recovery.html"
-        },
         "operationId": "indices-recovery-1",
         "parameters": [
           {
@@ -14063,13 +13443,10 @@
     "/_refresh": {
       "get": {
         "tags": [
-          "indices.refresh"
+          "indices"
         ],
         "summary": "Refresh an index",
         "description": "A refresh makes recent operations performed on one or more indices available for search.\nFor data streams, the API runs the refresh operation on the stream’s backing indices.",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-refresh.html"
-        },
         "operationId": "indices-refresh-1",
         "parameters": [
           {
@@ -14090,13 +13467,10 @@
       },
       "post": {
         "tags": [
-          "indices.refresh"
+          "indices"
         ],
         "summary": "Refresh an index",
         "description": "A refresh makes recent operations performed on one or more indices available for search.\nFor data streams, the API runs the refresh operation on the stream’s backing indices.",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-refresh.html"
-        },
         "operationId": "indices-refresh",
         "parameters": [
           {
@@ -14119,13 +13493,10 @@
     "/{index}/_refresh": {
       "get": {
         "tags": [
-          "indices.refresh"
+          "indices"
         ],
         "summary": "Refresh an index",
         "description": "A refresh makes recent operations performed on one or more indices available for search.\nFor data streams, the API runs the refresh operation on the stream’s backing indices.",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-refresh.html"
-        },
         "operationId": "indices-refresh-3",
         "parameters": [
           {
@@ -14149,13 +13520,10 @@
       },
       "post": {
         "tags": [
-          "indices.refresh"
+          "indices"
         ],
         "summary": "Refresh an index",
         "description": "A refresh makes recent operations performed on one or more indices available for search.\nFor data streams, the API runs the refresh operation on the stream’s backing indices.",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-refresh.html"
-        },
         "operationId": "indices-refresh-2",
         "parameters": [
           {
@@ -14181,12 +13549,9 @@
     "/{index}/_reload_search_analyzers": {
       "get": {
         "tags": [
-          "indices.reload_search_analyzers"
+          "indices"
         ],
         "summary": "Reloads an index's search analyzers and their resources",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-reload-analyzers.html"
-        },
         "operationId": "indices-reload-search-analyzers",
         "parameters": [
           {
@@ -14207,16 +13572,13 @@
             "$ref": "#/components/responses/indices.reload_search_analyzers#200"
           }
         },
-        "x-available-since": "7.3.0"
+        "x-state": "Added in 7.3.0"
       },
       "post": {
         "tags": [
-          "indices.reload_search_analyzers"
+          "indices"
         ],
         "summary": "Reloads an index's search analyzers and their resources",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-reload-analyzers.html"
-        },
         "operationId": "indices-reload-search-analyzers-1",
         "parameters": [
           {
@@ -14237,19 +13599,16 @@
             "$ref": "#/components/responses/indices.reload_search_analyzers#200"
           }
         },
-        "x-available-since": "7.3.0"
+        "x-state": "Added in 7.3.0"
       }
     },
     "/_resolve/cluster/{name}": {
       "get": {
         "tags": [
-          "indices.resolve_cluster"
+          "indices"
         ],
         "summary": "Resolves the specified index expressions to return information about each cluster, including\n",
         "description": "the local cluster, if included.\nMultiple patterns and remote clusters are supported.",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-resolve-cluster-api.html"
-        },
         "operationId": "indices-resolve-cluster",
         "parameters": [
           {
@@ -14319,19 +13678,16 @@
             }
           }
         },
-        "x-available-since": "8.13.0"
+        "x-state": "Added in 8.13.0"
       }
     },
     "/_resolve/index/{name}": {
       "get": {
         "tags": [
-          "indices.resolve_index"
+          "indices"
         ],
-        "summary": "Resolves the specified name(s) and/or index patterns for indices, aliases, and data streams",
-        "description": "Multiple patterns and remote clusters are supported.",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-resolve-index-api.html"
-        },
+        "summary": "Resolve indices",
+        "description": "Resolve the names and/or index patterns for indices, aliases, and data streams.\nMultiple patterns and remote clusters are supported.",
         "operationId": "indices-resolve-index",
         "parameters": [
           {
@@ -14413,19 +13769,16 @@
             }
           }
         },
-        "x-available-since": "7.9.0"
+        "x-state": "Added in 7.9.0"
       }
     },
     "/{alias}/_rollover": {
       "post": {
         "tags": [
-          "indices.rollover"
+          "indices"
         ],
         "summary": "Roll over to a new index",
         "description": "Creates a new index for a data stream or index alias.",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/indices-rollover-index.html"
-        },
         "operationId": "indices-rollover",
         "parameters": [
           {
@@ -14452,19 +13805,16 @@
             "$ref": "#/components/responses/indices.rollover#200"
           }
         },
-        "x-available-since": "5.0.0"
+        "x-state": "Added in 5.0.0"
       }
     },
     "/{alias}/_rollover/{new_index}": {
       "post": {
         "tags": [
-          "indices.rollover"
+          "indices"
         ],
         "summary": "Roll over to a new index",
         "description": "Creates a new index for a data stream or index alias.",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/indices-rollover-index.html"
-        },
         "operationId": "indices-rollover-1",
         "parameters": [
           {
@@ -14494,19 +13844,16 @@
             "$ref": "#/components/responses/indices.rollover#200"
           }
         },
-        "x-available-since": "5.0.0"
+        "x-state": "Added in 5.0.0"
       }
     },
     "/_segments": {
       "get": {
         "tags": [
-          "indices.segments"
+          "indices"
         ],
         "summary": "Returns low-level information about the Lucene segments in index shards",
         "description": "For data streams, the API returns information about the stream’s backing indices.",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-segments.html"
-        },
         "operationId": "indices-segments",
         "parameters": [
           {
@@ -14532,13 +13879,10 @@
     "/{index}/_segments": {
       "get": {
         "tags": [
-          "indices.segments"
+          "indices"
         ],
         "summary": "Returns low-level information about the Lucene segments in index shards",
         "description": "For data streams, the API returns information about the stream’s backing indices.",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-segments.html"
-        },
         "operationId": "indices-segments-1",
         "parameters": [
           {
@@ -14567,13 +13911,10 @@
     "/_shard_stores": {
       "get": {
         "tags": [
-          "indices.shard_stores"
+          "indices"
         ],
         "summary": "Retrieves store information about replica shards in one or more indices",
         "description": "For data streams, the API retrieves store information for the stream’s backing indices.",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-shards-stores.html"
-        },
         "operationId": "indices-shard-stores",
         "parameters": [
           {
@@ -14599,13 +13940,10 @@
     "/{index}/_shard_stores": {
       "get": {
         "tags": [
-          "indices.shard_stores"
+          "indices"
         ],
         "summary": "Retrieves store information about replica shards in one or more indices",
         "description": "For data streams, the API retrieves store information for the stream’s backing indices.",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-shards-stores.html"
-        },
         "operationId": "indices-shard-stores-1",
         "parameters": [
           {
@@ -14634,12 +13972,9 @@
     "/{index}/_shrink/{target}": {
       "put": {
         "tags": [
-          "indices.shrink"
+          "indices"
         ],
         "summary": "Shrinks an existing index into a new index with fewer primary shards",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/indices-shrink-index.html"
-        },
         "operationId": "indices-shrink",
         "parameters": [
           {
@@ -14666,16 +14001,13 @@
             "$ref": "#/components/responses/indices.shrink#200"
           }
         },
-        "x-available-since": "5.0.0"
+        "x-state": "Added in 5.0.0"
       },
       "post": {
         "tags": [
-          "indices.shrink"
+          "indices"
         ],
         "summary": "Shrinks an existing index into a new index with fewer primary shards",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/indices-shrink-index.html"
-        },
         "operationId": "indices-shrink-1",
         "parameters": [
           {
@@ -14702,19 +14034,16 @@
             "$ref": "#/components/responses/indices.shrink#200"
           }
         },
-        "x-available-since": "5.0.0"
+        "x-state": "Added in 5.0.0"
       }
     },
     "/_index_template/_simulate_index/{name}": {
       "post": {
         "tags": [
-          "indices.simulate_index_template"
+          "indices"
         ],
         "summary": "Simulate an index",
         "description": "Returns the index configuration that would be applied to the specified index from an existing index template.",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-simulate-index.html"
-        },
         "operationId": "indices-simulate-index-template",
         "parameters": [
           {
@@ -14775,19 +14104,16 @@
             }
           }
         },
-        "x-available-since": "7.9.0"
+        "x-state": "Added in 7.9.0"
       }
     },
     "/_index_template/_simulate": {
       "post": {
         "tags": [
-          "indices.simulate_template"
+          "indices"
         ],
         "summary": "Simulate an index template",
         "description": "Returns the index configuration that would be applied by a particular index template.",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-simulate-template.html"
-        },
         "operationId": "indices-simulate-template",
         "parameters": [
           {
@@ -14813,13 +14139,10 @@
     "/_index_template/_simulate/{name}": {
       "post": {
         "tags": [
-          "indices.simulate_template"
+          "indices"
         ],
         "summary": "Simulate an index template",
         "description": "Returns the index configuration that would be applied by a particular index template.",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-simulate-template.html"
-        },
         "operationId": "indices-simulate-template-1",
         "parameters": [
           {
@@ -14848,12 +14171,9 @@
     "/{index}/_split/{target}": {
       "put": {
         "tags": [
-          "indices.split"
+          "indices"
         ],
         "summary": "Splits an existing index into a new index with more primary shards",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/indices-split-index.html"
-        },
         "operationId": "indices-split",
         "parameters": [
           {
@@ -14880,16 +14200,13 @@
             "$ref": "#/components/responses/indices.split#200"
           }
         },
-        "x-available-since": "6.1.0"
+        "x-state": "Added in 6.1.0"
       },
       "post": {
         "tags": [
-          "indices.split"
+          "indices"
         ],
         "summary": "Splits an existing index into a new index with more primary shards",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/indices-split-index.html"
-        },
         "operationId": "indices-split-1",
         "parameters": [
           {
@@ -14916,19 +14233,16 @@
             "$ref": "#/components/responses/indices.split#200"
           }
         },
-        "x-available-since": "6.1.0"
+        "x-state": "Added in 6.1.0"
       }
     },
     "/_stats": {
       "get": {
         "tags": [
-          "indices.stats"
+          "indices"
         ],
         "summary": "Returns statistics for one or more indices",
         "description": "For data streams, the API retrieves statistics for the stream’s backing indices.",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-stats.html"
-        },
         "operationId": "indices-stats",
         "parameters": [
           {
@@ -14964,19 +14278,16 @@
             "$ref": "#/components/responses/indices.stats#200"
           }
         },
-        "x-available-since": "1.3.0"
+        "x-state": "Added in 1.3.0"
       }
     },
     "/_stats/{metric}": {
       "get": {
         "tags": [
-          "indices.stats"
+          "indices"
         ],
         "summary": "Returns statistics for one or more indices",
         "description": "For data streams, the API retrieves statistics for the stream’s backing indices.",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-stats.html"
-        },
         "operationId": "indices-stats-1",
         "parameters": [
           {
@@ -15015,19 +14326,16 @@
             "$ref": "#/components/responses/indices.stats#200"
           }
         },
-        "x-available-since": "1.3.0"
+        "x-state": "Added in 1.3.0"
       }
     },
     "/{index}/_stats": {
       "get": {
         "tags": [
-          "indices.stats"
+          "indices"
         ],
         "summary": "Returns statistics for one or more indices",
         "description": "For data streams, the API retrieves statistics for the stream’s backing indices.",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-stats.html"
-        },
         "operationId": "indices-stats-2",
         "parameters": [
           {
@@ -15066,19 +14374,16 @@
             "$ref": "#/components/responses/indices.stats#200"
           }
         },
-        "x-available-since": "1.3.0"
+        "x-state": "Added in 1.3.0"
       }
     },
     "/{index}/_stats/{metric}": {
       "get": {
         "tags": [
-          "indices.stats"
+          "indices"
         ],
         "summary": "Returns statistics for one or more indices",
         "description": "For data streams, the API retrieves statistics for the stream’s backing indices.",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-stats.html"
-        },
         "operationId": "indices-stats-3",
         "parameters": [
           {
@@ -15120,18 +14425,15 @@
             "$ref": "#/components/responses/indices.stats#200"
           }
         },
-        "x-available-since": "1.3.0"
+        "x-state": "Added in 1.3.0"
       }
     },
     "/{index}/_unfreeze": {
       "post": {
         "tags": [
-          "indices.unfreeze"
+          "indices"
         ],
         "summary": "Unfreezes an index",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/unfreeze-index-api.html"
-        },
         "operationId": "indices-unfreeze",
         "parameters": [
           {
@@ -15230,19 +14532,16 @@
             }
           }
         },
-        "x-available-since": "6.6.0"
+        "x-state": "Added in 6.6.0"
       }
     },
     "/_aliases": {
       "post": {
         "tags": [
-          "indices.update_aliases"
+          "indices"
         ],
         "summary": "Create or update an alias",
         "description": "Adds a data stream or index to an alias.",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-aliases.html"
-        },
         "operationId": "indices-update-aliases",
         "parameters": [
           {
@@ -15297,19 +14596,16 @@
             }
           }
         },
-        "x-available-since": "1.3.0"
+        "x-state": "Added in 1.3.0"
       }
     },
     "/_validate/query": {
       "get": {
         "tags": [
-          "indices.validate_query"
+          "indices"
         ],
         "summary": "Validate a query",
         "description": "Validates a query without running it.",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/master/search-validate.html"
-        },
         "operationId": "indices-validate-query",
         "parameters": [
           {
@@ -15357,17 +14653,14 @@
             "$ref": "#/components/responses/indices.validate_query#200"
           }
         },
-        "x-available-since": "1.3.0"
+        "x-state": "Added in 1.3.0"
       },
       "post": {
         "tags": [
-          "indices.validate_query"
+          "indices"
         ],
         "summary": "Validate a query",
         "description": "Validates a query without running it.",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/master/search-validate.html"
-        },
         "operationId": "indices-validate-query-1",
         "parameters": [
           {
@@ -15415,19 +14708,16 @@
             "$ref": "#/components/responses/indices.validate_query#200"
           }
         },
-        "x-available-since": "1.3.0"
+        "x-state": "Added in 1.3.0"
       }
     },
     "/{index}/_validate/query": {
       "get": {
         "tags": [
-          "indices.validate_query"
+          "indices"
         ],
         "summary": "Validate a query",
         "description": "Validates a query without running it.",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/master/search-validate.html"
-        },
         "operationId": "indices-validate-query-2",
         "parameters": [
           {
@@ -15478,17 +14768,14 @@
             "$ref": "#/components/responses/indices.validate_query#200"
           }
         },
-        "x-available-since": "1.3.0"
+        "x-state": "Added in 1.3.0"
       },
       "post": {
         "tags": [
-          "indices.validate_query"
+          "indices"
         ],
         "summary": "Validate a query",
         "description": "Validates a query without running it.",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/master/search-validate.html"
-        },
         "operationId": "indices-validate-query-3",
         "parameters": [
           {
@@ -15539,18 +14826,15 @@
             "$ref": "#/components/responses/indices.validate_query#200"
           }
         },
-        "x-available-since": "1.3.0"
+        "x-state": "Added in 1.3.0"
       }
     },
     "/_inference/{inference_id}": {
       "get": {
         "tags": [
-          "inference.get"
+          "inference"
         ],
         "summary": "Get an inference endpoint",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/master/get-inference-api.html"
-        },
         "operationId": "inference-get-1",
         "parameters": [
           {
@@ -15562,17 +14846,13 @@
             "$ref": "#/components/responses/inference.get#200"
           }
         },
-        "x-technical-preview": true,
-        "x-available-since": "8.11.0"
+        "x-state": "Added in 8.11.0"
       },
       "put": {
         "tags": [
-          "inference.put"
+          "inference"
         ],
         "summary": "Create an inference endpoint",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/master/put-inference-api.html"
-        },
         "operationId": "inference-put",
         "parameters": [
           {
@@ -15587,17 +14867,13 @@
             "$ref": "#/components/responses/inference.put#200"
           }
         },
-        "x-technical-preview": true,
-        "x-available-since": "8.11.0"
+        "x-state": "Added in 8.11.0"
       },
       "post": {
         "tags": [
-          "inference.inference"
+          "inference"
         ],
         "summary": "Perform inference on the service",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/master/post-inference-api.html"
-        },
         "operationId": "inference-inference",
         "parameters": [
           {
@@ -15615,17 +14891,13 @@
             "$ref": "#/components/responses/inference.inference#200"
           }
         },
-        "x-technical-preview": true,
-        "x-available-since": "8.11.0"
+        "x-state": "Added in 8.11.0"
       },
       "delete": {
         "tags": [
-          "inference.delete"
+          "inference"
         ],
         "summary": "Delete an inference endpoint",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/master/delete-inference-api.html"
-        },
         "operationId": "inference-delete",
         "parameters": [
           {
@@ -15643,19 +14915,15 @@
             "$ref": "#/components/responses/inference.delete#200"
           }
         },
-        "x-technical-preview": true,
-        "x-available-since": "8.11.0"
+        "x-state": "Added in 8.11.0"
       }
     },
     "/_inference/{task_type}/{inference_id}": {
       "get": {
         "tags": [
-          "inference.get"
+          "inference"
         ],
         "summary": "Get an inference endpoint",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/master/get-inference-api.html"
-        },
         "operationId": "inference-get-2",
         "parameters": [
           {
@@ -15670,17 +14938,13 @@
             "$ref": "#/components/responses/inference.get#200"
           }
         },
-        "x-technical-preview": true,
-        "x-available-since": "8.11.0"
+        "x-state": "Added in 8.11.0"
       },
       "put": {
         "tags": [
-          "inference.put"
+          "inference"
         ],
         "summary": "Create an inference endpoint",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/master/put-inference-api.html"
-        },
         "operationId": "inference-put-1",
         "parameters": [
           {
@@ -15698,17 +14962,13 @@
             "$ref": "#/components/responses/inference.put#200"
           }
         },
-        "x-technical-preview": true,
-        "x-available-since": "8.11.0"
+        "x-state": "Added in 8.11.0"
       },
       "post": {
         "tags": [
-          "inference.inference"
+          "inference"
         ],
         "summary": "Perform inference on the service",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/master/post-inference-api.html"
-        },
         "operationId": "inference-inference-1",
         "parameters": [
           {
@@ -15729,17 +14989,13 @@
             "$ref": "#/components/responses/inference.inference#200"
           }
         },
-        "x-technical-preview": true,
-        "x-available-since": "8.11.0"
+        "x-state": "Added in 8.11.0"
       },
       "delete": {
         "tags": [
-          "inference.delete"
+          "inference"
         ],
         "summary": "Delete an inference endpoint",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/master/delete-inference-api.html"
-        },
         "operationId": "inference-delete-1",
         "parameters": [
           {
@@ -15760,27 +15016,22 @@
             "$ref": "#/components/responses/inference.delete#200"
           }
         },
-        "x-technical-preview": true,
-        "x-available-since": "8.11.0"
+        "x-state": "Added in 8.11.0"
       }
     },
     "/_inference": {
       "get": {
         "tags": [
-          "inference.get"
+          "inference"
         ],
         "summary": "Get an inference endpoint",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/master/get-inference-api.html"
-        },
         "operationId": "inference-get",
         "responses": {
           "200": {
             "$ref": "#/components/responses/inference.get#200"
           }
         },
-        "x-technical-preview": true,
-        "x-available-since": "8.11.0"
+        "x-state": "Added in 8.11.0"
       }
     },
     "/": {
@@ -15790,9 +15041,6 @@
         ],
         "summary": "Get cluster info",
         "description": "Returns basic information about the cluster.",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/index.html"
-        },
         "operationId": "info",
         "responses": {
           "200": {
@@ -15833,13 +15081,10 @@
       },
       "head": {
         "tags": [
-          "ping"
+          "cluster"
         ],
         "summary": "Ping the cluster",
-        "description": "Returns whether the cluster is running.",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/index.html"
-        },
+        "description": "Get information about whether the cluster is running.",
         "operationId": "ping",
         "responses": {
           "200": {
@@ -15854,12 +15099,10 @@
     "/_ingest/geoip/database/{id}": {
       "get": {
         "tags": [
-          "ingest.get_geoip_database"
+          "ingest"
         ],
-        "summary": "Returns information about one or more geoip database configurations",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/master/TODO.html"
-        },
+        "summary": "Get GeoIP database configurations",
+        "description": "Get information about one or more IP geolocation database configurations.",
         "operationId": "ingest-get-geoip-database-1",
         "parameters": [
           {
@@ -15874,16 +15117,14 @@
             "$ref": "#/components/responses/ingest.get_geoip_database#200"
           }
         },
-        "x-available-since": "8.15.0"
+        "x-state": "Added in 8.15.0"
       },
       "put": {
         "tags": [
-          "ingest.put_geoip_database"
+          "ingest"
         ],
-        "summary": "Returns information about one or more geoip database configurations",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/master/TODO.html"
-        },
+        "summary": "Create or update GeoIP database configurations",
+        "description": "Create or update IP geolocation database configurations.",
         "operationId": "ingest-put-geoip-database",
         "parameters": [
           {
@@ -15952,16 +15193,14 @@
             }
           }
         },
-        "x-available-since": "8.15.0"
+        "x-state": "Added in 8.15.0"
       },
       "delete": {
         "tags": [
-          "ingest.delete_geoip_database"
+          "ingest"
         ],
-        "summary": "Deletes a geoip database configuration",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/master/TODO.html"
-        },
+        "summary": "Delete GeoIP database configurations",
+        "description": "Delete one or more IP geolocation database configurations.",
         "operationId": "ingest-delete-geoip-database",
         "parameters": [
           {
@@ -16008,18 +15247,157 @@
             }
           }
         },
-        "x-available-since": "8.15.0"
+        "x-state": "Added in 8.15.0"
+      }
+    },
+    "/_ingest/ip_location/database/{id}": {
+      "get": {
+        "tags": [
+          "ingest"
+        ],
+        "summary": "Returns information about one or more IP location database configurations",
+        "operationId": "ingest-get-ip-location-database-1",
+        "parameters": [
+          {
+            "$ref": "#/components/parameters/ingest.get_ip_location_database#id"
+          },
+          {
+            "$ref": "#/components/parameters/ingest.get_ip_location_database#master_timeout"
+          }
+        ],
+        "responses": {
+          "200": {
+            "$ref": "#/components/responses/ingest.get_ip_location_database#200"
+          }
+        },
+        "x-state": "Added in 8.15.0"
+      },
+      "put": {
+        "tags": [
+          "ingest"
+        ],
+        "summary": "Returns information about one or more IP location database configurations",
+        "operationId": "ingest-put-ip-location-database",
+        "parameters": [
+          {
+            "in": "path",
+            "name": "id",
+            "description": "ID of the database configuration to create or update.",
+            "required": true,
+            "deprecated": false,
+            "schema": {
+              "$ref": "#/components/schemas/_types:Id"
+            },
+            "style": "simple"
+          },
+          {
+            "in": "query",
+            "name": "master_timeout",
+            "description": "Period to wait for a connection to the master node.\nIf no response is received before the timeout expires, the request fails and returns an error.",
+            "deprecated": false,
+            "schema": {
+              "$ref": "#/components/schemas/_types:Duration"
+            },
+            "style": "form"
+          },
+          {
+            "in": "query",
+            "name": "timeout",
+            "description": "Period to wait for a response. If no response is received before the timeout expires, the request fails and returns an error.",
+            "deprecated": false,
+            "schema": {
+              "$ref": "#/components/schemas/_types:Duration"
+            },
+            "style": "form"
+          }
+        ],
+        "requestBody": {
+          "content": {
+            "application/json": {
+              "schema": {
+                "$ref": "#/components/schemas/ingest._types:DatabaseConfiguration"
+              }
+            }
+          },
+          "required": true
+        },
+        "responses": {
+          "200": {
+            "description": "",
+            "content": {
+              "application/json": {
+                "schema": {
+                  "$ref": "#/components/schemas/_types:AcknowledgedResponseBase"
+                }
+              }
+            }
+          }
+        },
+        "x-state": "Added in 8.15.0"
+      },
+      "delete": {
+        "tags": [
+          "ingest"
+        ],
+        "summary": "Deletes an IP location database configuration",
+        "operationId": "ingest-delete-ip-location-database",
+        "parameters": [
+          {
+            "in": "path",
+            "name": "id",
+            "description": "A comma-separated list of IP location database configurations to delete",
+            "required": true,
+            "deprecated": false,
+            "schema": {
+              "$ref": "#/components/schemas/_types:Ids"
+            },
+            "style": "simple"
+          },
+          {
+            "in": "query",
+            "name": "master_timeout",
+            "description": "Period to wait for a connection to the master node.\nIf no response is received before the timeout expires, the request fails and returns an error.",
+            "deprecated": false,
+            "schema": {
+              "$ref": "#/components/schemas/_types:Duration"
+            },
+            "style": "form"
+          },
+          {
+            "in": "query",
+            "name": "timeout",
+            "description": "Period to wait for a response. If no response is received before the timeout expires, the request fails and returns an error.",
+            "deprecated": false,
+            "schema": {
+              "$ref": "#/components/schemas/_types:Duration"
+            },
+            "style": "form"
+          }
+        ],
+        "responses": {
+          "200": {
+            "description": "",
+            "content": {
+              "application/json": {
+                "schema": {
+                  "$ref": "#/components/schemas/_types:AcknowledgedResponseBase"
+                }
+              }
+            }
+          }
+        },
+        "x-state": "Added in 8.15.0"
       }
     },
     "/_ingest/pipeline/{id}": {
       "get": {
         "tags": [
-          "ingest.get_pipeline"
+          "ingest"
         ],
-        "summary": "Returns information about one or more ingest pipelines",
-        "description": "This API returns a local reference of the pipeline.",
+        "summary": "Get pipelines",
+        "description": "Get information about one or more ingest pipelines.\nThis API returns a local reference of the pipeline.",
         "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/master/get-pipeline-api.html"
+          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/ingest.html"
         },
         "operationId": "ingest-get-pipeline-1",
         "parameters": [
@@ -16038,13 +15416,13 @@
             "$ref": "#/components/responses/ingest.get_pipeline#200"
           }
         },
-        "x-available-since": "5.0.0"
+        "x-state": "Added in 5.0.0"
       },
       "put": {
         "tags": [
-          "ingest.put_pipeline"
+          "ingest"
         ],
-        "summary": "Creates or updates an ingest pipeline",
+        "summary": "Create or update a pipeline",
         "description": "Changes made using this API take effect immediately.",
         "externalDocs": {
           "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/ingest.html"
@@ -16145,15 +15523,16 @@
             }
           }
         },
-        "x-available-since": "5.0.0"
+        "x-state": "Added in 5.0.0"
       },
       "delete": {
         "tags": [
-          "ingest.delete_pipeline"
+          "ingest"
         ],
-        "summary": "Deletes one or more existing ingest pipeline",
+        "summary": "Delete pipelines",
+        "description": "Delete one or more ingest pipelines.",
         "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/master/delete-pipeline-api.html"
+          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/ingest.html"
         },
         "operationId": "ingest-delete-pipeline",
         "parameters": [
@@ -16201,15 +15580,16 @@
             }
           }
         },
-        "x-available-since": "5.0.0"
+        "x-state": "Added in 5.0.0"
       }
     },
     "/_ingest/geoip/stats": {
       "get": {
         "tags": [
-          "ingest.geo_ip_stats"
+          "ingest"
         ],
-        "summary": "Gets download statistics for GeoIP2 databases used with the geoip processor",
+        "summary": "Get GeoIP statistics",
+        "description": "Get download statistics for GeoIP2 databases that are used with the GeoIP processor.",
         "externalDocs": {
           "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/geoip-processor.html"
         },
@@ -16242,18 +15622,16 @@
             }
           }
         },
-        "x-available-since": "7.13.0"
+        "x-state": "Added in 7.13.0"
       }
     },
     "/_ingest/geoip/database": {
       "get": {
         "tags": [
-          "ingest.get_geoip_database"
+          "ingest"
         ],
-        "summary": "Returns information about one or more geoip database configurations",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/master/TODO.html"
-        },
+        "summary": "Get GeoIP database configurations",
+        "description": "Get information about one or more IP geolocation database configurations.",
         "operationId": "ingest-get-geoip-database",
         "parameters": [
           {
@@ -16265,18 +15643,38 @@
             "$ref": "#/components/responses/ingest.get_geoip_database#200"
           }
         },
-        "x-available-since": "8.15.0"
+        "x-state": "Added in 8.15.0"
+      }
+    },
+    "/_ingest/ip_location/database": {
+      "get": {
+        "tags": [
+          "ingest"
+        ],
+        "summary": "Returns information about one or more IP location database configurations",
+        "operationId": "ingest-get-ip-location-database",
+        "parameters": [
+          {
+            "$ref": "#/components/parameters/ingest.get_ip_location_database#master_timeout"
+          }
+        ],
+        "responses": {
+          "200": {
+            "$ref": "#/components/responses/ingest.get_ip_location_database#200"
+          }
+        },
+        "x-state": "Added in 8.15.0"
       }
     },
     "/_ingest/pipeline": {
       "get": {
         "tags": [
-          "ingest.get_pipeline"
+          "ingest"
         ],
-        "summary": "Returns information about one or more ingest pipelines",
-        "description": "This API returns a local reference of the pipeline.",
+        "summary": "Get pipelines",
+        "description": "Get information about one or more ingest pipelines.\nThis API returns a local reference of the pipeline.",
         "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/master/get-pipeline-api.html"
+          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/ingest.html"
         },
         "operationId": "ingest-get-pipeline",
         "parameters": [
@@ -16292,16 +15690,16 @@
             "$ref": "#/components/responses/ingest.get_pipeline#200"
           }
         },
-        "x-available-since": "5.0.0"
+        "x-state": "Added in 5.0.0"
       }
     },
     "/_ingest/processor/grok": {
       "get": {
         "tags": [
-          "ingest.processor_grok"
+          "ingest"
         ],
-        "summary": "Extracts structured fields out of a single text field within a document",
-        "description": "You choose which field to extract matched fields from, as well as the grok pattern you expect will match.\nA grok pattern is like a regular expression that supports aliased expressions that can be reused.",
+        "summary": "Run a grok processor",
+        "description": "Extract structured fields out of a single text field within a document.\nYou must choose which field to extract matched fields from, as well as the grok pattern you expect will match.\nA grok pattern is like a regular expression that supports aliased expressions that can be reused.",
         "externalDocs": {
           "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/grok-processor.html"
         },
@@ -16329,18 +15727,16 @@
             }
           }
         },
-        "x-available-since": "6.1.0"
+        "x-state": "Added in 6.1.0"
       }
     },
     "/_ingest/pipeline/_simulate": {
       "get": {
         "tags": [
-          "ingest.simulate"
+          "ingest"
         ],
-        "summary": "Executes an ingest pipeline against a set of provided documents",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/master/simulate-pipeline-api.html"
-        },
+        "summary": "Simulate a pipeline",
+        "description": "Run an ingest pipeline against a set of provided documents.\nYou can either specify an existing pipeline to use with the provided documents or supply a pipeline definition in the body of the request.",
         "operationId": "ingest-simulate",
         "parameters": [
           {
@@ -16355,16 +15751,14 @@
             "$ref": "#/components/responses/ingest.simulate#200"
           }
         },
-        "x-available-since": "5.0.0"
+        "x-state": "Added in 5.0.0"
       },
       "post": {
         "tags": [
-          "ingest.simulate"
+          "ingest"
         ],
-        "summary": "Executes an ingest pipeline against a set of provided documents",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/master/simulate-pipeline-api.html"
-        },
+        "summary": "Simulate a pipeline",
+        "description": "Run an ingest pipeline against a set of provided documents.\nYou can either specify an existing pipeline to use with the provided documents or supply a pipeline definition in the body of the request.",
         "operationId": "ingest-simulate-1",
         "parameters": [
           {
@@ -16379,18 +15773,16 @@
             "$ref": "#/components/responses/ingest.simulate#200"
           }
         },
-        "x-available-since": "5.0.0"
+        "x-state": "Added in 5.0.0"
       }
     },
     "/_ingest/pipeline/{id}/_simulate": {
       "get": {
         "tags": [
-          "ingest.simulate"
+          "ingest"
         ],
-        "summary": "Executes an ingest pipeline against a set of provided documents",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/master/simulate-pipeline-api.html"
-        },
+        "summary": "Simulate a pipeline",
+        "description": "Run an ingest pipeline against a set of provided documents.\nYou can either specify an existing pipeline to use with the provided documents or supply a pipeline definition in the body of the request.",
         "operationId": "ingest-simulate-2",
         "parameters": [
           {
@@ -16408,16 +15800,14 @@
             "$ref": "#/components/responses/ingest.simulate#200"
           }
         },
-        "x-available-since": "5.0.0"
+        "x-state": "Added in 5.0.0"
       },
       "post": {
         "tags": [
-          "ingest.simulate"
+          "ingest"
         ],
-        "summary": "Executes an ingest pipeline against a set of provided documents",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/master/simulate-pipeline-api.html"
-        },
+        "summary": "Simulate a pipeline",
+        "description": "Run an ingest pipeline against a set of provided documents.\nYou can either specify an existing pipeline to use with the provided documents or supply a pipeline definition in the body of the request.",
         "operationId": "ingest-simulate-3",
         "parameters": [
           {
@@ -16435,18 +15825,16 @@
             "$ref": "#/components/responses/ingest.simulate#200"
           }
         },
-        "x-available-since": "5.0.0"
+        "x-state": "Added in 5.0.0"
       }
     },
     "/{index}/_knn_search": {
       "get": {
         "tags": [
-          "knn_search"
+          "search"
         ],
-        "summary": "Performs a kNN search",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/master/search-search.html"
-        },
+        "summary": "Run a knn search",
+        "description": "NOTE: The kNN search API has been replaced by the `knn` option in the search API.\n\nPerform a k-nearest neighbor (kNN) search on a dense_vector field and return the matching documents.\nGiven a query vector, the API finds the k closest vectors and returns those documents as search hits.\n\nElasticsearch uses the HNSW algorithm to support efficient kNN search.\nLike most kNN algorithms, HNSW is an approximate method that sacrifices result accuracy for improved search speed.\nThis means the results returned are not always the true k closest neighbors.\n\nThe kNN search API supports restricting the search using a filter.\nThe search will return the top k documents that also match the filter query.",
         "operationId": "knn-search",
         "parameters": [
           {
@@ -16465,17 +15853,14 @@
           }
         },
         "deprecated": true,
-        "x-available-since": "8.0.0",
-        "x-technical-preview": true
+        "x-state": "Technical preview"
       },
       "post": {
         "tags": [
-          "knn_search"
+          "search"
         ],
-        "summary": "Performs a kNN search",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/master/search-search.html"
-        },
+        "summary": "Run a knn search",
+        "description": "NOTE: The kNN search API has been replaced by the `knn` option in the search API.\n\nPerform a k-nearest neighbor (kNN) search on a dense_vector field and return the matching documents.\nGiven a query vector, the API finds the k closest vectors and returns those documents as search hits.\n\nElasticsearch uses the HNSW algorithm to support efficient kNN search.\nLike most kNN algorithms, HNSW is an approximate method that sacrifices result accuracy for improved search speed.\nThis means the results returned are not always the true k closest neighbors.\n\nThe kNN search API supports restricting the search using a filter.\nThe search will return the top k documents that also match the filter query.",
         "operationId": "knn-search-1",
         "parameters": [
           {
@@ -16494,20 +15879,16 @@
           }
         },
         "deprecated": true,
-        "x-available-since": "8.0.0",
-        "x-technical-preview": true
+        "x-state": "Technical preview"
       }
     },
     "/_license": {
       "get": {
         "tags": [
-          "license.get"
+          "license"
         ],
         "summary": "Get license information",
         "description": "Returns information about your Elastic license, including its type, its status, when it was issued, and when it expires.\nFor more information about the different types of licenses, refer to [Elastic Stack subscriptions](https://www.elastic.co/subscriptions).",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/master/get-license.html"
-        },
         "operationId": "license-get",
         "parameters": [
           {
@@ -16554,12 +15935,9 @@
       },
       "put": {
         "tags": [
-          "license.post"
+          "license"
         ],
         "summary": "Updates the license for the cluster",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/master/update-license.html"
-        },
         "operationId": "license-post",
         "parameters": [
           {
@@ -16577,12 +15955,9 @@
       },
       "post": {
         "tags": [
-          "license.post"
+          "license"
         ],
         "summary": "Updates the license for the cluster",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/master/update-license.html"
-        },
         "operationId": "license-post-1",
         "parameters": [
           {
@@ -16600,12 +15975,9 @@
       },
       "delete": {
         "tags": [
-          "license.delete"
+          "license"
         ],
         "summary": "Deletes licensing information for the cluster",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/master/delete-license.html"
-        },
         "operationId": "license-delete",
         "responses": {
           "200": {
@@ -16624,12 +15996,9 @@
     "/_license/basic_status": {
       "get": {
         "tags": [
-          "license.get_basic_status"
+          "license"
         ],
         "summary": "Retrieves information about the status of the basic license",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/master/get-basic-status.html"
-        },
         "operationId": "license-get-basic-status",
         "responses": {
           "200": {
@@ -16651,18 +16020,15 @@
             }
           }
         },
-        "x-available-since": "6.3.0"
+        "x-state": "Added in 6.3.0"
       }
     },
     "/_license/trial_status": {
       "get": {
         "tags": [
-          "license.get_trial_status"
+          "license"
         ],
         "summary": "Retrieves information about the status of the trial license",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/master/get-trial-status.html"
-        },
         "operationId": "license-get-trial-status",
         "responses": {
           "200": {
@@ -16684,19 +16050,16 @@
             }
           }
         },
-        "x-available-since": "6.1.0"
+        "x-state": "Added in 6.1.0"
       }
     },
     "/_license/start_basic": {
       "post": {
         "tags": [
-          "license.post_start_basic"
+          "license"
         ],
         "summary": "The start basic API enables you to initiate an indefinite basic license, which gives access to all the basic features",
         "description": "If the basic license does not support all of the features that are available with your current license, however, you are notified in the response. You must then re-submit the API request with the acknowledge parameter set to true.\nTo check the status of your basic license, use the following API: [Get basic status](https://www.elastic.co/guide/en/elasticsearch/reference/current/get-basic-status.html).",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/master/start-basic.html"
-        },
         "operationId": "license-post-start-basic",
         "parameters": [
           {
@@ -16756,18 +16119,15 @@
             }
           }
         },
-        "x-available-since": "6.3.0"
+        "x-state": "Added in 6.3.0"
       }
     },
     "/_license/start_trial": {
       "post": {
         "tags": [
-          "license.post_start_trial"
+          "license"
         ],
         "summary": "The start trial API enables you to start a 30-day trial, which gives access to all subscription features",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/master/start-trial.html"
-        },
         "operationId": "license-post-start-trial",
         "parameters": [
           {
@@ -16820,18 +16180,15 @@
             }
           }
         },
-        "x-available-since": "6.1.0"
+        "x-state": "Added in 6.1.0"
       }
     },
     "/_logstash/pipeline/{id}": {
       "get": {
         "tags": [
-          "logstash.get_pipeline"
+          "logstash"
         ],
         "summary": "Retrieves pipelines used for Logstash Central Management",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/logstash-api-get-pipeline.html"
-        },
         "operationId": "logstash-get-pipeline-1",
         "parameters": [
           {
@@ -16843,16 +16200,13 @@
             "$ref": "#/components/responses/logstash.get_pipeline#200"
           }
         },
-        "x-available-since": "7.12.0"
+        "x-state": "Added in 7.12.0"
       },
       "put": {
         "tags": [
-          "logstash.put_pipeline"
+          "logstash"
         ],
         "summary": "Creates or updates a pipeline used for Logstash Central Management",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/logstash-api-put-pipeline.html"
-        },
         "operationId": "logstash-put-pipeline",
         "parameters": [
           {
@@ -16885,16 +16239,13 @@
             }
           }
         },
-        "x-available-since": "7.12.0"
+        "x-state": "Added in 7.12.0"
       },
       "delete": {
         "tags": [
-          "logstash.delete_pipeline"
+          "logstash"
         ],
         "summary": "Deletes a pipeline used for Logstash Central Management",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/logstash-api-delete-pipeline.html"
-        },
         "operationId": "logstash-delete-pipeline",
         "parameters": [
           {
@@ -16917,36 +16268,31 @@
             }
           }
         },
-        "x-available-since": "7.12.0"
+        "x-state": "Added in 7.12.0"
       }
     },
     "/_logstash/pipeline": {
       "get": {
         "tags": [
-          "logstash.get_pipeline"
+          "logstash"
         ],
         "summary": "Retrieves pipelines used for Logstash Central Management",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/logstash-api-get-pipeline.html"
-        },
         "operationId": "logstash-get-pipeline",
         "responses": {
           "200": {
             "$ref": "#/components/responses/logstash.get_pipeline#200"
           }
         },
-        "x-available-since": "7.12.0"
+        "x-state": "Added in 7.12.0"
       }
     },
     "/_mget": {
       "get": {
         "tags": [
-          "mget"
+          "document"
         ],
-        "summary": "Allows to get multiple documents in one request",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/master/docs-multi-get.html"
-        },
+        "summary": "Get multiple documents",
+        "description": "Get multiple JSON documents by ID from one or more indices.\nIf you specify an index in the request URI, you only need to specify the document IDs in the request body.\nTo ensure fast responses, this multi get (mget) API responds with partial results if one or more shards fail.",
         "operationId": "mget",
         "parameters": [
           {
@@ -16985,16 +16331,14 @@
             "$ref": "#/components/responses/mget#200"
           }
         },
-        "x-available-since": "1.3.0"
+        "x-state": "Added in 1.3.0"
       },
       "post": {
         "tags": [
-          "mget"
+          "document"
         ],
-        "summary": "Allows to get multiple documents in one request",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/master/docs-multi-get.html"
-        },
+        "summary": "Get multiple documents",
+        "description": "Get multiple JSON documents by ID from one or more indices.\nIf you specify an index in the request URI, you only need to specify the document IDs in the request body.\nTo ensure fast responses, this multi get (mget) API responds with partial results if one or more shards fail.",
         "operationId": "mget-1",
         "parameters": [
           {
@@ -17033,18 +16377,16 @@
             "$ref": "#/components/responses/mget#200"
           }
         },
-        "x-available-since": "1.3.0"
+        "x-state": "Added in 1.3.0"
       }
     },
     "/{index}/_mget": {
       "get": {
         "tags": [
-          "mget"
+          "document"
         ],
-        "summary": "Allows to get multiple documents in one request",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/master/docs-multi-get.html"
-        },
+        "summary": "Get multiple documents",
+        "description": "Get multiple JSON documents by ID from one or more indices.\nIf you specify an index in the request URI, you only need to specify the document IDs in the request body.\nTo ensure fast responses, this multi get (mget) API responds with partial results if one or more shards fail.",
         "operationId": "mget-2",
         "parameters": [
           {
@@ -17086,16 +16428,14 @@
             "$ref": "#/components/responses/mget#200"
           }
         },
-        "x-available-since": "1.3.0"
+        "x-state": "Added in 1.3.0"
       },
       "post": {
         "tags": [
-          "mget"
+          "document"
         ],
-        "summary": "Allows to get multiple documents in one request",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/master/docs-multi-get.html"
-        },
+        "summary": "Get multiple documents",
+        "description": "Get multiple JSON documents by ID from one or more indices.\nIf you specify an index in the request URI, you only need to specify the document IDs in the request body.\nTo ensure fast responses, this multi get (mget) API responds with partial results if one or more shards fail.",
         "operationId": "mget-3",
         "parameters": [
           {
@@ -17137,36 +16477,30 @@
             "$ref": "#/components/responses/mget#200"
           }
         },
-        "x-available-since": "1.3.0"
+        "x-state": "Added in 1.3.0"
       }
     },
     "/_migration/deprecations": {
       "get": {
         "tags": [
-          "migration.deprecations"
+          "migration"
         ],
         "summary": "Retrieves information about different cluster, node, and index level settings that use deprecated features that will be removed or changed in the next major version",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/migration-api-deprecation.html"
-        },
         "operationId": "migration-deprecations",
         "responses": {
           "200": {
             "$ref": "#/components/responses/migration.deprecations#200"
           }
         },
-        "x-available-since": "6.1.0"
+        "x-state": "Added in 6.1.0"
       }
     },
     "/{index}/_migration/deprecations": {
       "get": {
         "tags": [
-          "migration.deprecations"
+          "migration"
         ],
         "summary": "Retrieves information about different cluster, node, and index level settings that use deprecated features that will be removed or changed in the next major version",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/migration-api-deprecation.html"
-        },
         "operationId": "migration-deprecations-1",
         "parameters": [
           {
@@ -17178,18 +16512,15 @@
             "$ref": "#/components/responses/migration.deprecations#200"
           }
         },
-        "x-available-since": "6.1.0"
+        "x-state": "Added in 6.1.0"
       }
     },
     "/_migration/system_features": {
       "get": {
         "tags": [
-          "migration.get_feature_upgrade_status"
+          "migration"
         ],
         "summary": "Find out whether system features need to be upgraded or not",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/migration-api-feature-upgrade.html"
-        },
         "operationId": "migration-get-feature-upgrade-status",
         "responses": {
           "200": {
@@ -17218,16 +16549,13 @@
             }
           }
         },
-        "x-available-since": "7.16.0"
+        "x-state": "Added in 7.16.0"
       },
       "post": {
         "tags": [
-          "migration.post_feature_upgrade"
+          "migration"
         ],
         "summary": "Begin upgrades for system features",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/migration-api-feature-upgrade.html"
-        },
         "operationId": "migration-post-feature-upgrade",
         "responses": {
           "200": {
@@ -17256,19 +16584,16 @@
             }
           }
         },
-        "x-available-since": "7.16.0"
+        "x-state": "Added in 7.16.0"
       }
     },
     "/_ml/trained_models/{model_id}/deployment/cache/_clear": {
       "post": {
         "tags": [
-          "ml.clear_trained_model_deployment_cache"
+          "ml trained model"
         ],
         "summary": "Clear trained model deployment cache",
         "description": "Cache will be cleared on all nodes where the trained model is assigned.\nA trained model deployment may have an inference cache enabled.\nAs requests are handled by each allocated node, their responses may be cached on that individual node.\nCalling this API clears the caches without restarting the deployment.",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/master/clear-trained-model-deployment-cache.html"
-        },
         "operationId": "ml-clear-trained-model-deployment-cache",
         "parameters": [
           {
@@ -17303,19 +16628,16 @@
             }
           }
         },
-        "x-available-since": "8.5.0"
+        "x-state": "Added in 8.5.0"
       }
     },
     "/_ml/anomaly_detectors/{job_id}/_close": {
       "post": {
         "tags": [
-          "ml.close_job"
+          "ml anomaly"
         ],
         "summary": "Close anomaly detection jobs",
         "description": "A job can be opened and closed multiple times throughout its lifecycle. A closed job cannot receive data or perform analysis operations, but you can still explore and navigate results.\nWhen you close a job, it runs housekeeping tasks such as pruning the model history, flushing buffers, calculating final results and persisting the model snapshots. Depending upon the size of the job, it could take several minutes to close and the equivalent time to re-open. After it is closed, the job has a minimal overhead on the cluster except for maintaining its meta data. Therefore it is a best practice to close jobs that are no longer required to process data.\nIf you close an anomaly detection job whose datafeed is running, the request first tries to stop the datafeed. This behavior is equivalent to calling stop datafeed API with the same timeout and force parameters as the close job request.\nWhen a datafeed that has a specified end date stops, it automatically closes its associated job.",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/ml-close-job.html"
-        },
         "operationId": "ml-close-job",
         "parameters": [
           {
@@ -17402,18 +16724,15 @@
             }
           }
         },
-        "x-available-since": "5.4.0"
+        "x-state": "Added in 5.4.0"
       }
     },
     "/_ml/calendars/{calendar_id}": {
       "get": {
         "tags": [
-          "ml.get_calendars"
+          "ml anomaly"
         ],
         "summary": "Get calendar configuration info",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/ml-get-calendar.html"
-        },
         "operationId": "ml-get-calendars-2",
         "parameters": [
           {
@@ -17434,16 +16753,13 @@
             "$ref": "#/components/responses/ml.get_calendars#200"
           }
         },
-        "x-available-since": "6.2.0"
+        "x-state": "Added in 6.2.0"
       },
       "put": {
         "tags": [
-          "ml.put_calendar"
+          "ml anomaly"
         ],
         "summary": "Create a calendar",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/ml-put-calendar.html"
-        },
         "operationId": "ml-put-calendar",
         "parameters": [
           {
@@ -17508,16 +16824,13 @@
             }
           }
         },
-        "x-available-since": "6.2.0"
+        "x-state": "Added in 6.2.0"
       },
       "post": {
         "tags": [
-          "ml.get_calendars"
+          "ml anomaly"
         ],
         "summary": "Get calendar configuration info",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/ml-get-calendar.html"
-        },
         "operationId": "ml-get-calendars-3",
         "parameters": [
           {
@@ -17538,17 +16851,14 @@
             "$ref": "#/components/responses/ml.get_calendars#200"
           }
         },
-        "x-available-since": "6.2.0"
+        "x-state": "Added in 6.2.0"
       },
       "delete": {
         "tags": [
-          "ml.delete_calendar"
+          "ml anomaly"
         ],
         "summary": "Delete a calendar",
         "description": "Removes all scheduled events from a calendar, then deletes it.",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/ml-delete-calendar.html"
-        },
         "operationId": "ml-delete-calendar",
         "parameters": [
           {
@@ -17575,18 +16885,15 @@
             }
           }
         },
-        "x-available-since": "6.2.0"
+        "x-state": "Added in 6.2.0"
       }
     },
     "/_ml/calendars/{calendar_id}/events/{event_id}": {
       "delete": {
         "tags": [
-          "ml.delete_calendar_event"
+          "ml anomaly"
         ],
         "summary": "Delete events from a calendar",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/ml-delete-calendar-event.html"
-        },
         "operationId": "ml-delete-calendar-event",
         "parameters": [
           {
@@ -17624,18 +16931,15 @@
             }
           }
         },
-        "x-available-since": "6.2.0"
+        "x-state": "Added in 6.2.0"
       }
     },
     "/_ml/calendars/{calendar_id}/jobs/{job_id}": {
       "put": {
         "tags": [
-          "ml.put_calendar_job"
+          "ml anomaly"
         ],
         "summary": "Add anomaly detection job to calendar",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/ml-put-calendar-job.html"
-        },
         "operationId": "ml-put-calendar-job",
         "parameters": [
           {
@@ -17689,16 +16993,13 @@
             }
           }
         },
-        "x-available-since": "6.2.0"
+        "x-state": "Added in 6.2.0"
       },
       "delete": {
         "tags": [
-          "ml.delete_calendar_job"
+          "ml anomaly"
         ],
         "summary": "Delete anomaly jobs from a calendar",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/ml-delete-calendar-job.html"
-        },
         "operationId": "ml-delete-calendar-job",
         "parameters": [
           {
@@ -17752,19 +17053,16 @@
             }
           }
         },
-        "x-available-since": "6.2.0"
+        "x-state": "Added in 6.2.0"
       }
     },
     "/_ml/data_frame/analytics/{id}": {
       "get": {
         "tags": [
-          "ml.get_data_frame_analytics"
+          "ml data frame"
         ],
         "summary": "Get data frame analytics job configuration info",
         "description": "You can get information for multiple data frame analytics jobs in a single\nAPI request by using a comma-separated list of data frame analytics jobs or a\nwildcard expression.",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/get-dfanalytics.html"
-        },
         "operationId": "ml-get-data-frame-analytics",
         "parameters": [
           {
@@ -17788,17 +17086,14 @@
             "$ref": "#/components/responses/ml.get_data_frame_analytics#200"
           }
         },
-        "x-available-since": "7.3.0"
+        "x-state": "Added in 7.3.0"
       },
       "put": {
         "tags": [
-          "ml.put_data_frame_analytics"
+          "ml data frame"
         ],
         "summary": "Create a data frame analytics job",
         "description": "This API creates a data frame analytics job that performs an analysis on the\nsource indices and stores the outcome in a destination index.",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/put-dfanalytics.html"
-        },
         "operationId": "ml-put-data-frame-analytics",
         "parameters": [
           {
@@ -17820,9 +17115,6 @@
                 "type": "object",
                 "properties": {
                   "allow_lazy_start": {
-                    "externalDocs": {
-                      "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/ml-settings.html"
-                    },
                     "description": "Specifies whether this job can start when there is insufficient machine\nlearning node capacity for it to be immediately assigned to a node. If\nset to `false` and a machine learning node with capacity to run the job\ncannot be immediately found, the API returns an error. If set to `true`,\nthe API does not return an error; the job waits in the `starting` state\nuntil sufficient machine learning node capacity is available. This\nbehavior is also affected by the cluster-wide\n`xpack.ml.max_lazy_ml_nodes` setting.",
                     "type": "boolean"
                   },
@@ -17843,6 +17135,9 @@
                     "description": "The maximum number of threads to be used by the analysis. Using more\nthreads may decrease the time necessary to complete the analysis at the\ncost of using more CPU. Note that the process may use additional threads\nfor operational functionality other than the analysis itself.",
                     "type": "number"
                   },
+                  "_meta": {
+                    "$ref": "#/components/schemas/_types:Metadata"
+                  },
                   "model_memory_limit": {
                     "description": "The approximate maximum amount of memory resources that are permitted for\nanalytical processing. If your `elasticsearch.yml` file contains an\n`xpack.ml.max_model_memory_limit` setting, an error occurs when you try\nto create data frame analytics jobs that have `model_memory_limit` values\ngreater than that setting.",
                     "type": "string"
@@ -17902,6 +17197,9 @@
                     "max_num_threads": {
                       "type": "number"
                     },
+                    "_meta": {
+                      "$ref": "#/components/schemas/_types:Metadata"
+                    },
                     "model_memory_limit": {
                       "type": "string"
                     },
@@ -17928,16 +17226,13 @@
             }
           }
         },
-        "x-available-since": "7.3.0"
+        "x-state": "Added in 7.3.0"
       },
       "delete": {
         "tags": [
-          "ml.delete_data_frame_analytics"
+          "ml data frame"
         ],
         "summary": "Delete a data frame analytics job",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/delete-dfanalytics.html"
-        },
         "operationId": "ml-delete-data-frame-analytics",
         "parameters": [
           {
@@ -17984,19 +17279,16 @@
             }
           }
         },
-        "x-available-since": "7.3.0"
+        "x-state": "Added in 7.3.0"
       }
     },
     "/_ml/datafeeds/{datafeed_id}": {
       "get": {
         "tags": [
-          "ml.get_datafeeds"
+          "ml anomaly"
         ],
         "summary": "Get datafeeds configuration info",
         "description": "You can get information for multiple datafeeds in a single API request by\nusing a comma-separated list of datafeeds or a wildcard expression. You can\nget information for all datafeeds by using `_all`, by specifying `*` as the\n`<feed_id>`, or by omitting the `<feed_id>`.\nThis API returns a maximum of 10,000 datafeeds.",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/ml-get-datafeed.html"
-        },
         "operationId": "ml-get-datafeeds",
         "parameters": [
           {
@@ -18014,17 +17306,14 @@
             "$ref": "#/components/responses/ml.get_datafeeds#200"
           }
         },
-        "x-available-since": "5.5.0"
+        "x-state": "Added in 5.5.0"
       },
       "put": {
         "tags": [
-          "ml.put_datafeed"
+          "ml anomaly"
         ],
         "summary": "Create a datafeed",
         "description": "Datafeeds retrieve data from Elasticsearch for analysis by an anomaly detection job.\nYou can associate only one datafeed with each anomaly detection job.\nThe datafeed contains a query that runs at a defined interval (`frequency`).\nIf you are concerned about delayed data, you can add a delay (`query_delay') at each interval.\nWhen Elasticsearch security features are enabled, your datafeed remembers which roles the user who created it had\nat the time of creation and runs the query using those same roles. If you provide secondary authorization headers,\nthose credentials are used instead.\nYou must use Kibana, this API, or the create anomaly detection jobs API to create a datafeed. Do not add a datafeed\ndirectly to the `.ml-config` index. Do not give users `write` privileges on the `.ml-config` index.",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/ml-put-datafeed.html"
-        },
         "operationId": "ml-put-datafeed",
         "parameters": [
           {
@@ -18220,16 +17509,13 @@
             }
           }
         },
-        "x-available-since": "5.4.0"
+        "x-state": "Added in 5.4.0"
       },
       "delete": {
         "tags": [
-          "ml.delete_datafeed"
+          "ml anomaly"
         ],
         "summary": "Delete a datafeed",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/ml-delete-datafeed.html"
-        },
         "operationId": "ml-delete-datafeed",
         "parameters": [
           {
@@ -18266,19 +17552,16 @@
             }
           }
         },
-        "x-available-since": "5.4.0"
+        "x-state": "Added in 5.4.0"
       }
     },
     "/_ml/_delete_expired_data/{job_id}": {
       "delete": {
         "tags": [
-          "ml.delete_expired_data"
+          "ml anomaly"
         ],
         "summary": "Delete expired ML data",
         "description": "Deletes all job results, model snapshots and forecast data that have exceeded\ntheir retention days period. Machine learning state documents that are not\nassociated with any job are also deleted.\nYou can limit the request to a single or set of anomaly detection jobs by\nusing a job identifier, a group name, a comma-separated list of jobs, or a\nwildcard expression. You can delete expired data for all anomaly detection\njobs by using _all, by specifying * as the <job_id>, or by omitting the\n<job_id>.",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/ml-delete-expired-data.html"
-        },
         "operationId": "ml-delete-expired-data",
         "parameters": [
           {
@@ -18299,19 +17582,16 @@
             "$ref": "#/components/responses/ml.delete_expired_data#200"
           }
         },
-        "x-available-since": "5.4.0"
+        "x-state": "Added in 5.4.0"
       }
     },
     "/_ml/_delete_expired_data": {
       "delete": {
         "tags": [
-          "ml.delete_expired_data"
+          "ml anomaly"
         ],
         "summary": "Delete expired ML data",
         "description": "Deletes all job results, model snapshots and forecast data that have exceeded\ntheir retention days period. Machine learning state documents that are not\nassociated with any job are also deleted.\nYou can limit the request to a single or set of anomaly detection jobs by\nusing a job identifier, a group name, a comma-separated list of jobs, or a\nwildcard expression. You can delete expired data for all anomaly detection\njobs by using _all, by specifying * as the <job_id>, or by omitting the\n<job_id>.",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/ml-delete-expired-data.html"
-        },
         "operationId": "ml-delete-expired-data-1",
         "parameters": [
           {
@@ -18329,19 +17609,16 @@
             "$ref": "#/components/responses/ml.delete_expired_data#200"
           }
         },
-        "x-available-since": "5.4.0"
+        "x-state": "Added in 5.4.0"
       }
     },
     "/_ml/filters/{filter_id}": {
       "get": {
         "tags": [
-          "ml.get_filters"
+          "ml anomaly"
         ],
         "summary": "Get filters",
         "description": "You can get a single filter or all filters.",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/ml-get-filter.html"
-        },
         "operationId": "ml-get-filters-1",
         "parameters": [
           {
@@ -18359,17 +17636,14 @@
             "$ref": "#/components/responses/ml.get_filters#200"
           }
         },
-        "x-available-since": "5.5.0"
+        "x-state": "Added in 5.5.0"
       },
       "put": {
         "tags": [
-          "ml.put_filter"
+          "ml anomaly"
         ],
         "summary": "Create a filter",
         "description": "A filter contains a list of strings. It can be used by one or more anomaly detection jobs.\nSpecifically, filters are referenced in the `custom_rules` property of detector configuration objects.",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/ml-put-filter.html"
-        },
         "operationId": "ml-put-filter",
         "parameters": [
           {
@@ -18438,17 +17712,14 @@
             }
           }
         },
-        "x-available-since": "5.4.0"
+        "x-state": "Added in 5.4.0"
       },
       "delete": {
         "tags": [
-          "ml.delete_filter"
+          "ml anomaly"
         ],
         "summary": "Delete a filter",
         "description": "If an anomaly detection job references the filter, you cannot delete the\nfilter. You must update or delete the job before you can delete the filter.",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/ml-delete-filter.html"
-        },
         "operationId": "ml-delete-filter",
         "parameters": [
           {
@@ -18475,19 +17746,16 @@
             }
           }
         },
-        "x-available-since": "5.4.0"
+        "x-state": "Added in 5.4.0"
       }
     },
     "/_ml/anomaly_detectors/{job_id}/_forecast": {
       "post": {
         "tags": [
-          "ml.forecast"
+          "ml anomaly"
         ],
         "summary": "Predict future behavior of a time series",
         "description": "Forecasts are not supported for jobs that perform population analysis; an\nerror occurs if you try to create a forecast for a job that has an\n`over_field_name` in its configuration. Forcasts predict future behavior\nbased on historical data.",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/ml-forecast.html"
-        },
         "operationId": "ml-forecast",
         "parameters": [
           {
@@ -18577,17 +17845,14 @@
             }
           }
         },
-        "x-available-since": "6.1.0"
+        "x-state": "Added in 6.1.0"
       },
       "delete": {
         "tags": [
-          "ml.delete_forecast"
+          "ml anomaly"
         ],
         "summary": "Delete forecasts from a job",
         "description": "By default, forecasts are retained for 14 days. You can specify a\ndifferent retention period with the `expires_in` parameter in the forecast\njobs API. The delete forecast API enables you to delete one or more\nforecasts before they expire.",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/ml-delete-forecast.html"
-        },
         "operationId": "ml-delete-forecast",
         "parameters": [
           {
@@ -18605,19 +17870,16 @@
             "$ref": "#/components/responses/ml.delete_forecast#200"
           }
         },
-        "x-available-since": "6.5.0"
+        "x-state": "Added in 6.5.0"
       }
     },
     "/_ml/anomaly_detectors/{job_id}/_forecast/{forecast_id}": {
       "delete": {
         "tags": [
-          "ml.delete_forecast"
+          "ml anomaly"
         ],
         "summary": "Delete forecasts from a job",
         "description": "By default, forecasts are retained for 14 days. You can specify a\ndifferent retention period with the `expires_in` parameter in the forecast\njobs API. The delete forecast API enables you to delete one or more\nforecasts before they expire.",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/ml-delete-forecast.html"
-        },
         "operationId": "ml-delete-forecast-1",
         "parameters": [
           {
@@ -18638,19 +17900,16 @@
             "$ref": "#/components/responses/ml.delete_forecast#200"
           }
         },
-        "x-available-since": "6.5.0"
+        "x-state": "Added in 6.5.0"
       }
     },
     "/_ml/anomaly_detectors/{job_id}": {
       "get": {
         "tags": [
-          "ml.get_jobs"
+          "ml anomaly"
         ],
         "summary": "Get anomaly detection jobs configuration info",
         "description": "You can get information for multiple anomaly detection jobs in a single API\nrequest by using a group name, a comma-separated list of jobs, or a wildcard\nexpression. You can get information for all anomaly detection jobs by using\n`_all`, by specifying `*` as the `<job_id>`, or by omitting the `<job_id>`.",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/ml-get-job.html"
-        },
         "operationId": "ml-get-jobs",
         "parameters": [
           {
@@ -18668,17 +17927,14 @@
             "$ref": "#/components/responses/ml.get_jobs#200"
           }
         },
-        "x-available-since": "5.5.0"
+        "x-state": "Added in 5.5.0"
       },
       "put": {
         "tags": [
-          "ml.put_job"
+          "ml anomaly"
         ],
         "summary": "Create an anomaly detection job",
         "description": "If you include a `datafeed_config`, you must have read index privileges on the source index.",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/ml-put-job.html"
-        },
         "operationId": "ml-put-job",
         "parameters": [
           {
@@ -18691,6 +17947,46 @@
               "$ref": "#/components/schemas/_types:Id"
             },
             "style": "simple"
+          },
+          {
+            "in": "query",
+            "name": "allow_no_indices",
+            "description": "If `true`, wildcard indices expressions that resolve into no concrete indices are ignored. This includes the\n`_all` string or when no indices are specified.",
+            "deprecated": false,
+            "schema": {
+              "type": "boolean"
+            },
+            "style": "form"
+          },
+          {
+            "in": "query",
+            "name": "expand_wildcards",
+            "description": "Type of index that wildcard patterns can match. If the request can target data streams, this argument determines\nwhether wildcard expressions match hidden data streams. Supports comma-separated values. Valid values are:\n\n* `all`: Match any data stream or index, including hidden ones.\n* `closed`: Match closed, non-hidden indices. Also matches any non-hidden data stream. Data streams cannot be closed.\n* `hidden`: Match hidden data streams and hidden indices. Must be combined with `open`, `closed`, or both.\n* `none`: Wildcard patterns are not accepted.\n* `open`: Match open, non-hidden indices. Also matches any non-hidden data stream.",
+            "deprecated": false,
+            "schema": {
+              "$ref": "#/components/schemas/_types:ExpandWildcards"
+            },
+            "style": "form"
+          },
+          {
+            "in": "query",
+            "name": "ignore_throttled",
+            "description": "If `true`, concrete, expanded or aliased indices are ignored when frozen.",
+            "deprecated": true,
+            "schema": {
+              "type": "boolean"
+            },
+            "style": "form"
+          },
+          {
+            "in": "query",
+            "name": "ignore_unavailable",
+            "description": "If `true`, unavailable indices (missing or closed) are ignored.",
+            "deprecated": false,
+            "schema": {
+              "type": "boolean"
+            },
+            "style": "form"
           }
         ],
         "requestBody": {
@@ -18729,6 +18025,9 @@
                     "description": "A description of the job.",
                     "type": "string"
                   },
+                  "job_id": {
+                    "$ref": "#/components/schemas/_types:Id"
+                  },
                   "groups": {
                     "description": "A list of job groups. A job can belong to no groups or many.",
                     "type": "array",
@@ -18854,17 +18153,14 @@
             }
           }
         },
-        "x-available-since": "5.4.0"
+        "x-state": "Added in 5.4.0"
       },
       "delete": {
         "tags": [
-          "ml.delete_job"
+          "ml anomaly"
         ],
         "summary": "Delete an anomaly detection job",
         "description": "All job configuration, model state and results are deleted.\nIt is not currently possible to delete multiple jobs using wildcards or a\ncomma separated list. If you delete a job that has a datafeed, the request\nfirst tries to delete the datafeed. This behavior is equivalent to calling\nthe delete datafeed API with the same timeout and force parameters as the\ndelete job request.",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/ml-delete-job.html"
-        },
         "operationId": "ml-delete-job",
         "parameters": [
           {
@@ -18921,18 +18217,15 @@
             }
           }
         },
-        "x-available-since": "5.4.0"
+        "x-state": "Added in 5.4.0"
       }
     },
     "/_ml/anomaly_detectors/{job_id}/model_snapshots/{snapshot_id}": {
       "get": {
         "tags": [
-          "ml.get_model_snapshots"
+          "ml anomaly"
         ],
         "summary": "Get model snapshots info",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/ml-get-snapshot.html"
-        },
         "operationId": "ml-get-model-snapshots",
         "parameters": [
           {
@@ -18968,16 +18261,13 @@
             "$ref": "#/components/responses/ml.get_model_snapshots#200"
           }
         },
-        "x-available-since": "5.4.0"
+        "x-state": "Added in 5.4.0"
       },
       "post": {
         "tags": [
-          "ml.get_model_snapshots"
+          "ml anomaly"
         ],
         "summary": "Get model snapshots info",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/ml-get-snapshot.html"
-        },
         "operationId": "ml-get-model-snapshots-1",
         "parameters": [
           {
@@ -19013,17 +18303,14 @@
             "$ref": "#/components/responses/ml.get_model_snapshots#200"
           }
         },
-        "x-available-since": "5.4.0"
+        "x-state": "Added in 5.4.0"
       },
       "delete": {
         "tags": [
-          "ml.delete_model_snapshot"
+          "ml anomaly"
         ],
         "summary": "Delete a model snapshot",
         "description": "You cannot delete the active model snapshot. To delete that snapshot, first\nrevert to a different one. To identify the active model snapshot, refer to\nthe `model_snapshot_id` in the results from the get jobs API.",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/ml-delete-snapshot.html"
-        },
         "operationId": "ml-delete-model-snapshot",
         "parameters": [
           {
@@ -19061,18 +18348,15 @@
             }
           }
         },
-        "x-available-since": "5.4.0"
+        "x-state": "Added in 5.4.0"
       }
     },
     "/_ml/trained_models/{model_id}": {
       "get": {
         "tags": [
-          "ml.get_trained_models"
+          "ml trained model"
         ],
         "summary": "Get trained model configuration info",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/get-trained-models.html"
-        },
         "operationId": "ml-get-trained-models",
         "parameters": [
           {
@@ -19093,6 +18377,9 @@
           {
             "$ref": "#/components/parameters/ml.get_trained_models#include"
           },
+          {
+            "$ref": "#/components/parameters/ml.get_trained_models#include_model_definition"
+          },
           {
             "$ref": "#/components/parameters/ml.get_trained_models#size"
           },
@@ -19105,17 +18392,14 @@
             "$ref": "#/components/responses/ml.get_trained_models#200"
           }
         },
-        "x-available-since": "7.10.0"
+        "x-state": "Added in 7.10.0"
       },
       "put": {
         "tags": [
-          "ml.put_trained_model"
+          "ml trained model"
         ],
         "summary": "Create a trained model",
         "description": "Enable you to supply a trained model that is not created by data frame analytics.",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/put-trained-models.html"
-        },
         "operationId": "ml-put-trained-model",
         "parameters": [
           {
@@ -19216,17 +18500,14 @@
             }
           }
         },
-        "x-available-since": "7.10.0"
+        "x-state": "Added in 7.10.0"
       },
       "delete": {
         "tags": [
-          "ml.delete_trained_model"
+          "ml trained model"
         ],
         "summary": "Delete an unreferenced trained model",
         "description": "The request deletes a trained inference model that is not referenced by an ingest pipeline.",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/delete-trained-models.html"
-        },
         "operationId": "ml-delete-trained-model",
         "parameters": [
           {
@@ -19263,19 +18544,16 @@
             }
           }
         },
-        "x-available-since": "7.10.0"
+        "x-state": "Added in 7.10.0"
       }
     },
     "/_ml/trained_models/{model_id}/model_aliases/{model_alias}": {
       "put": {
         "tags": [
-          "ml.put_trained_model_alias"
+          "ml trained model"
         ],
         "summary": "Create or update a trained model alias",
         "description": "A trained model alias is a logical name used to reference a single trained\nmodel.\nYou can use aliases instead of trained model identifiers to make it easier to\nreference your models. For example, you can use aliases in inference\naggregations and processors.\nAn alias must be unique and refer to only a single trained model. However,\nyou can have multiple aliases for each trained model.\nIf you use this API to update an alias such that it references a different\ntrained model ID and the model uses a different type of data frame analytics,\nan error occurs. For example, this situation occurs if you have a trained\nmodel for regression analysis and a trained model for classification\nanalysis; you cannot reassign an alias from one type of trained model to\nanother.\nIf you use this API to update an alias and there are very few input fields in\ncommon between the old and new trained models for the model alias, the API\nreturns a warning.",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/put-trained-models-aliases.html"
-        },
         "operationId": "ml-put-trained-model-alias",
         "parameters": [
           {
@@ -19323,17 +18601,14 @@
             }
           }
         },
-        "x-available-since": "7.13.0"
+        "x-state": "Added in 7.13.0"
       },
       "delete": {
         "tags": [
-          "ml.delete_trained_model_alias"
+          "ml trained model"
         ],
         "summary": "Delete a trained model alias",
         "description": "This API deletes an existing model alias that refers to a trained model. If\nthe model alias is missing or refers to a model other than the one identified\nby the `model_id`, this API returns an error.",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/delete-trained-models-aliases.html"
-        },
         "operationId": "ml-delete-trained-model-alias",
         "parameters": [
           {
@@ -19371,19 +18646,16 @@
             }
           }
         },
-        "x-available-since": "7.13.0"
+        "x-state": "Added in 7.13.0"
       }
     },
     "/_ml/anomaly_detectors/_estimate_model_memory": {
       "post": {
         "tags": [
-          "ml.estimate_model_memory"
+          "ml anomaly"
         ],
         "summary": "Estimate job model memory usage",
         "description": "Makes an estimation of the memory usage for an anomaly detection job model.\nIt is based on analysis configuration details for the job and cardinality\nestimates for the fields it references.",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/ml-apis.html"
-        },
         "operationId": "ml-estimate-model-memory",
         "requestBody": {
           "content": {
@@ -19434,19 +18706,16 @@
             }
           }
         },
-        "x-available-since": "7.7.0"
+        "x-state": "Added in 7.7.0"
       }
     },
     "/_ml/data_frame/_evaluate": {
       "post": {
         "tags": [
-          "ml.evaluate_data_frame"
+          "ml data frame"
         ],
         "summary": "Evaluate data frame analytics",
         "description": "The API packages together commonly used evaluation metrics for various types\nof machine learning features. This has been designed for use on indexes\ncreated by data frame analytics. Evaluation requires both a ground truth\nfield and an analytics result field to be present.",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/evaluate-dfanalytics.html"
-        },
         "operationId": "ml-evaluate-data-frame",
         "requestBody": {
           "content": {
@@ -19496,19 +18765,16 @@
             }
           }
         },
-        "x-available-since": "7.3.0"
+        "x-state": "Added in 7.3.0"
       }
     },
     "/_ml/data_frame/analytics/_explain": {
       "get": {
         "tags": [
-          "ml.explain_data_frame_analytics"
+          "ml data frame"
         ],
         "summary": "Explain data frame analytics config",
         "description": "This API provides explanations for a data frame analytics config that either\nexists already or one that has not been created yet. The following\nexplanations are provided:\n* which fields are included or not in the analysis and why,\n* how much memory is estimated to be required. The estimate can be used when deciding the appropriate value for model_memory_limit setting later on.\nIf you have object fields or fields that are excluded via source filtering, they are not included in the explanation.",
-        "externalDocs": {
-          "url": "http://www.elastic.co/guide/en/elasticsearch/reference/current/explain-dfanalytics.html"
-        },
         "operationId": "ml-explain-data-frame-analytics",
         "requestBody": {
           "$ref": "#/components/requestBodies/ml.explain_data_frame_analytics"
@@ -19518,17 +18784,14 @@
             "$ref": "#/components/responses/ml.explain_data_frame_analytics#200"
           }
         },
-        "x-available-since": "7.3.0"
+        "x-state": "Added in 7.3.0"
       },
       "post": {
         "tags": [
-          "ml.explain_data_frame_analytics"
+          "ml data frame"
         ],
         "summary": "Explain data frame analytics config",
         "description": "This API provides explanations for a data frame analytics config that either\nexists already or one that has not been created yet. The following\nexplanations are provided:\n* which fields are included or not in the analysis and why,\n* how much memory is estimated to be required. The estimate can be used when deciding the appropriate value for model_memory_limit setting later on.\nIf you have object fields or fields that are excluded via source filtering, they are not included in the explanation.",
-        "externalDocs": {
-          "url": "http://www.elastic.co/guide/en/elasticsearch/reference/current/explain-dfanalytics.html"
-        },
         "operationId": "ml-explain-data-frame-analytics-1",
         "requestBody": {
           "$ref": "#/components/requestBodies/ml.explain_data_frame_analytics"
@@ -19538,19 +18801,16 @@
             "$ref": "#/components/responses/ml.explain_data_frame_analytics#200"
           }
         },
-        "x-available-since": "7.3.0"
+        "x-state": "Added in 7.3.0"
       }
     },
     "/_ml/data_frame/analytics/{id}/_explain": {
       "get": {
         "tags": [
-          "ml.explain_data_frame_analytics"
+          "ml data frame"
         ],
         "summary": "Explain data frame analytics config",
         "description": "This API provides explanations for a data frame analytics config that either\nexists already or one that has not been created yet. The following\nexplanations are provided:\n* which fields are included or not in the analysis and why,\n* how much memory is estimated to be required. The estimate can be used when deciding the appropriate value for model_memory_limit setting later on.\nIf you have object fields or fields that are excluded via source filtering, they are not included in the explanation.",
-        "externalDocs": {
-          "url": "http://www.elastic.co/guide/en/elasticsearch/reference/current/explain-dfanalytics.html"
-        },
         "operationId": "ml-explain-data-frame-analytics-2",
         "parameters": [
           {
@@ -19565,17 +18825,14 @@
             "$ref": "#/components/responses/ml.explain_data_frame_analytics#200"
           }
         },
-        "x-available-since": "7.3.0"
+        "x-state": "Added in 7.3.0"
       },
       "post": {
         "tags": [
-          "ml.explain_data_frame_analytics"
+          "ml data frame"
         ],
         "summary": "Explain data frame analytics config",
         "description": "This API provides explanations for a data frame analytics config that either\nexists already or one that has not been created yet. The following\nexplanations are provided:\n* which fields are included or not in the analysis and why,\n* how much memory is estimated to be required. The estimate can be used when deciding the appropriate value for model_memory_limit setting later on.\nIf you have object fields or fields that are excluded via source filtering, they are not included in the explanation.",
-        "externalDocs": {
-          "url": "http://www.elastic.co/guide/en/elasticsearch/reference/current/explain-dfanalytics.html"
-        },
         "operationId": "ml-explain-data-frame-analytics-3",
         "parameters": [
           {
@@ -19590,19 +18847,16 @@
             "$ref": "#/components/responses/ml.explain_data_frame_analytics#200"
           }
         },
-        "x-available-since": "7.3.0"
+        "x-state": "Added in 7.3.0"
       }
     },
     "/_ml/anomaly_detectors/{job_id}/_flush": {
       "post": {
         "tags": [
-          "ml.flush_job"
+          "ml anomaly"
         ],
         "summary": "Force buffered data to be processed",
         "description": "The flush jobs API is only applicable when sending data for analysis using\nthe post data API. Depending on the content of the buffer, then it might\nadditionally calculate new results. Both flush and close operations are\nsimilar, however the flush is more efficient if you are expecting to send\nmore data for analysis. When flushing, the job remains open and is available\nto continue analyzing data. A close operation additionally prunes and\npersists the model state to disk and the job must be opened again before\nanalyzing further data.",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/ml-flush-job.html"
-        },
         "operationId": "ml-flush-job",
         "parameters": [
           {
@@ -19718,19 +18972,16 @@
             }
           }
         },
-        "x-available-since": "5.4.0"
+        "x-state": "Added in 5.4.0"
       }
     },
     "/_ml/anomaly_detectors/{job_id}/results/buckets/{timestamp}": {
       "get": {
         "tags": [
-          "ml.get_buckets"
+          "ml anomaly"
         ],
         "summary": "Get anomaly detection job results for buckets",
         "description": "The API presents a chronological view of the records, grouped by bucket.",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/ml-get-bucket.html"
-        },
         "operationId": "ml-get-buckets",
         "parameters": [
           {
@@ -19775,17 +19026,14 @@
             "$ref": "#/components/responses/ml.get_buckets#200"
           }
         },
-        "x-available-since": "5.4.0"
+        "x-state": "Added in 5.4.0"
       },
       "post": {
         "tags": [
-          "ml.get_buckets"
+          "ml anomaly"
         ],
         "summary": "Get anomaly detection job results for buckets",
         "description": "The API presents a chronological view of the records, grouped by bucket.",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/ml-get-bucket.html"
-        },
         "operationId": "ml-get-buckets-1",
         "parameters": [
           {
@@ -19830,19 +19078,16 @@
             "$ref": "#/components/responses/ml.get_buckets#200"
           }
         },
-        "x-available-since": "5.4.0"
+        "x-state": "Added in 5.4.0"
       }
     },
     "/_ml/anomaly_detectors/{job_id}/results/buckets": {
       "get": {
         "tags": [
-          "ml.get_buckets"
+          "ml anomaly"
         ],
         "summary": "Get anomaly detection job results for buckets",
         "description": "The API presents a chronological view of the records, grouped by bucket.",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/ml-get-bucket.html"
-        },
         "operationId": "ml-get-buckets-2",
         "parameters": [
           {
@@ -19884,17 +19129,14 @@
             "$ref": "#/components/responses/ml.get_buckets#200"
           }
         },
-        "x-available-since": "5.4.0"
+        "x-state": "Added in 5.4.0"
       },
       "post": {
         "tags": [
-          "ml.get_buckets"
+          "ml anomaly"
         ],
         "summary": "Get anomaly detection job results for buckets",
         "description": "The API presents a chronological view of the records, grouped by bucket.",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/ml-get-bucket.html"
-        },
         "operationId": "ml-get-buckets-3",
         "parameters": [
           {
@@ -19936,18 +19178,15 @@
             "$ref": "#/components/responses/ml.get_buckets#200"
           }
         },
-        "x-available-since": "5.4.0"
+        "x-state": "Added in 5.4.0"
       }
     },
     "/_ml/calendars/{calendar_id}/events": {
       "get": {
         "tags": [
-          "ml.get_calendar_events"
+          "ml anomaly"
         ],
         "summary": "Get info about events in calendars",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/ml-get-calendar-event.html"
-        },
         "operationId": "ml-get-calendar-events",
         "parameters": [
           {
@@ -20039,16 +19278,13 @@
             }
           }
         },
-        "x-available-since": "6.2.0"
+        "x-state": "Added in 6.2.0"
       },
       "post": {
         "tags": [
-          "ml.post_calendar_events"
+          "ml anomaly"
         ],
         "summary": "Add scheduled events to the calendar",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/ml-post-calendar-event.html"
-        },
         "operationId": "ml-post-calendar-events",
         "parameters": [
           {
@@ -20108,18 +19344,15 @@
             }
           }
         },
-        "x-available-since": "6.2.0"
+        "x-state": "Added in 6.2.0"
       }
     },
     "/_ml/calendars": {
       "get": {
         "tags": [
-          "ml.get_calendars"
+          "ml anomaly"
         ],
         "summary": "Get calendar configuration info",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/ml-get-calendar.html"
-        },
         "operationId": "ml-get-calendars",
         "parameters": [
           {
@@ -20137,16 +19370,13 @@
             "$ref": "#/components/responses/ml.get_calendars#200"
           }
         },
-        "x-available-since": "6.2.0"
+        "x-state": "Added in 6.2.0"
       },
       "post": {
         "tags": [
-          "ml.get_calendars"
+          "ml anomaly"
         ],
         "summary": "Get calendar configuration info",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/ml-get-calendar.html"
-        },
         "operationId": "ml-get-calendars-1",
         "parameters": [
           {
@@ -20164,18 +19394,15 @@
             "$ref": "#/components/responses/ml.get_calendars#200"
           }
         },
-        "x-available-since": "6.2.0"
+        "x-state": "Added in 6.2.0"
       }
     },
     "/_ml/anomaly_detectors/{job_id}/results/categories/{category_id}": {
       "get": {
         "tags": [
-          "ml.get_categories"
+          "ml anomaly"
         ],
         "summary": "Get anomaly detection job results for categories",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/ml-get-category.html"
-        },
         "operationId": "ml-get-categories",
         "parameters": [
           {
@@ -20202,16 +19429,13 @@
             "$ref": "#/components/responses/ml.get_categories#200"
           }
         },
-        "x-available-since": "5.4.0"
+        "x-state": "Added in 5.4.0"
       },
       "post": {
         "tags": [
-          "ml.get_categories"
+          "ml anomaly"
         ],
         "summary": "Get anomaly detection job results for categories",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/ml-get-category.html"
-        },
         "operationId": "ml-get-categories-1",
         "parameters": [
           {
@@ -20238,18 +19462,15 @@
             "$ref": "#/components/responses/ml.get_categories#200"
           }
         },
-        "x-available-since": "5.4.0"
+        "x-state": "Added in 5.4.0"
       }
     },
     "/_ml/anomaly_detectors/{job_id}/results/categories": {
       "get": {
         "tags": [
-          "ml.get_categories"
+          "ml anomaly"
         ],
         "summary": "Get anomaly detection job results for categories",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/ml-get-category.html"
-        },
         "operationId": "ml-get-categories-2",
         "parameters": [
           {
@@ -20273,16 +19494,13 @@
             "$ref": "#/components/responses/ml.get_categories#200"
           }
         },
-        "x-available-since": "5.4.0"
+        "x-state": "Added in 5.4.0"
       },
       "post": {
         "tags": [
-          "ml.get_categories"
+          "ml anomaly"
         ],
         "summary": "Get anomaly detection job results for categories",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/ml-get-category.html"
-        },
         "operationId": "ml-get-categories-3",
         "parameters": [
           {
@@ -20306,19 +19524,16 @@
             "$ref": "#/components/responses/ml.get_categories#200"
           }
         },
-        "x-available-since": "5.4.0"
+        "x-state": "Added in 5.4.0"
       }
     },
     "/_ml/data_frame/analytics": {
       "get": {
         "tags": [
-          "ml.get_data_frame_analytics"
+          "ml data frame"
         ],
         "summary": "Get data frame analytics job configuration info",
         "description": "You can get information for multiple data frame analytics jobs in a single\nAPI request by using a comma-separated list of data frame analytics jobs or a\nwildcard expression.",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/get-dfanalytics.html"
-        },
         "operationId": "ml-get-data-frame-analytics-1",
         "parameters": [
           {
@@ -20339,18 +19554,15 @@
             "$ref": "#/components/responses/ml.get_data_frame_analytics#200"
           }
         },
-        "x-available-since": "7.3.0"
+        "x-state": "Added in 7.3.0"
       }
     },
     "/_ml/data_frame/analytics/_stats": {
       "get": {
         "tags": [
-          "ml.get_data_frame_analytics_stats"
+          "ml data frame"
         ],
-        "summary": "Get data frame analytics jobs usage info",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/get-dfanalytics-stats.html"
-        },
+        "summary": "Get data frame analytics job stats",
         "operationId": "ml-get-data-frame-analytics-stats",
         "parameters": [
           {
@@ -20371,18 +19583,15 @@
             "$ref": "#/components/responses/ml.get_data_frame_analytics_stats#200"
           }
         },
-        "x-available-since": "7.3.0"
+        "x-state": "Added in 7.3.0"
       }
     },
     "/_ml/data_frame/analytics/{id}/_stats": {
       "get": {
         "tags": [
-          "ml.get_data_frame_analytics_stats"
+          "ml data frame"
         ],
-        "summary": "Get data frame analytics jobs usage info",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/get-dfanalytics-stats.html"
-        },
+        "summary": "Get data frame analytics job stats",
         "operationId": "ml-get-data-frame-analytics-stats-1",
         "parameters": [
           {
@@ -20406,19 +19615,16 @@
             "$ref": "#/components/responses/ml.get_data_frame_analytics_stats#200"
           }
         },
-        "x-available-since": "7.3.0"
+        "x-state": "Added in 7.3.0"
       }
     },
     "/_ml/datafeeds/{datafeed_id}/_stats": {
       "get": {
         "tags": [
-          "ml.get_datafeed_stats"
+          "ml anomaly"
         ],
-        "summary": "Get datafeeds usage info",
+        "summary": "Get datafeeds stats",
         "description": "You can get statistics for multiple datafeeds in a single API request by\nusing a comma-separated list of datafeeds or a wildcard expression. You can\nget statistics for all datafeeds by using `_all`, by specifying `*` as the\n`<feed_id>`, or by omitting the `<feed_id>`. If the datafeed is stopped, the\nonly information you receive is the `datafeed_id` and the `state`.\nThis API returns a maximum of 10,000 datafeeds.",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/ml-get-datafeed-stats.html"
-        },
         "operationId": "ml-get-datafeed-stats",
         "parameters": [
           {
@@ -20433,19 +19639,16 @@
             "$ref": "#/components/responses/ml.get_datafeed_stats#200"
           }
         },
-        "x-available-since": "5.5.0"
+        "x-state": "Added in 5.5.0"
       }
     },
     "/_ml/datafeeds/_stats": {
       "get": {
         "tags": [
-          "ml.get_datafeed_stats"
+          "ml anomaly"
         ],
-        "summary": "Get datafeeds usage info",
+        "summary": "Get datafeeds stats",
         "description": "You can get statistics for multiple datafeeds in a single API request by\nusing a comma-separated list of datafeeds or a wildcard expression. You can\nget statistics for all datafeeds by using `_all`, by specifying `*` as the\n`<feed_id>`, or by omitting the `<feed_id>`. If the datafeed is stopped, the\nonly information you receive is the `datafeed_id` and the `state`.\nThis API returns a maximum of 10,000 datafeeds.",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/ml-get-datafeed-stats.html"
-        },
         "operationId": "ml-get-datafeed-stats-1",
         "parameters": [
           {
@@ -20457,19 +19660,16 @@
             "$ref": "#/components/responses/ml.get_datafeed_stats#200"
           }
         },
-        "x-available-since": "5.5.0"
+        "x-state": "Added in 5.5.0"
       }
     },
     "/_ml/datafeeds": {
       "get": {
         "tags": [
-          "ml.get_datafeeds"
+          "ml anomaly"
         ],
         "summary": "Get datafeeds configuration info",
         "description": "You can get information for multiple datafeeds in a single API request by\nusing a comma-separated list of datafeeds or a wildcard expression. You can\nget information for all datafeeds by using `_all`, by specifying `*` as the\n`<feed_id>`, or by omitting the `<feed_id>`.\nThis API returns a maximum of 10,000 datafeeds.",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/ml-get-datafeed.html"
-        },
         "operationId": "ml-get-datafeeds-1",
         "parameters": [
           {
@@ -20484,19 +19684,16 @@
             "$ref": "#/components/responses/ml.get_datafeeds#200"
           }
         },
-        "x-available-since": "5.5.0"
+        "x-state": "Added in 5.5.0"
       }
     },
     "/_ml/filters": {
       "get": {
         "tags": [
-          "ml.get_filters"
+          "ml anomaly"
         ],
         "summary": "Get filters",
         "description": "You can get a single filter or all filters.",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/ml-get-filter.html"
-        },
         "operationId": "ml-get-filters",
         "parameters": [
           {
@@ -20511,19 +19708,16 @@
             "$ref": "#/components/responses/ml.get_filters#200"
           }
         },
-        "x-available-since": "5.5.0"
+        "x-state": "Added in 5.5.0"
       }
     },
     "/_ml/anomaly_detectors/{job_id}/results/influencers": {
       "get": {
         "tags": [
-          "ml.get_influencers"
+          "ml anomaly"
         ],
         "summary": "Get anomaly detection job results for influencers",
         "description": "Influencers are the entities that have contributed to, or are to blame for,\nthe anomalies. Influencer results are available only if an\n`influencer_field_name` is specified in the job configuration.",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/ml-get-influencer.html"
-        },
         "operationId": "ml-get-influencers",
         "parameters": [
           {
@@ -20562,17 +19756,14 @@
             "$ref": "#/components/responses/ml.get_influencers#200"
           }
         },
-        "x-available-since": "5.4.0"
+        "x-state": "Added in 5.4.0"
       },
       "post": {
         "tags": [
-          "ml.get_influencers"
+          "ml anomaly"
         ],
         "summary": "Get anomaly detection job results for influencers",
         "description": "Influencers are the entities that have contributed to, or are to blame for,\nthe anomalies. Influencer results are available only if an\n`influencer_field_name` is specified in the job configuration.",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/ml-get-influencer.html"
-        },
         "operationId": "ml-get-influencers-1",
         "parameters": [
           {
@@ -20611,18 +19802,15 @@
             "$ref": "#/components/responses/ml.get_influencers#200"
           }
         },
-        "x-available-since": "5.4.0"
+        "x-state": "Added in 5.4.0"
       }
     },
     "/_ml/anomaly_detectors/_stats": {
       "get": {
         "tags": [
-          "ml.get_job_stats"
+          "ml anomaly"
         ],
-        "summary": "Get anomaly detection jobs usage info",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/ml-get-job-stats.html"
-        },
+        "summary": "Get anomaly detection job stats",
         "operationId": "ml-get-job-stats",
         "parameters": [
           {
@@ -20634,18 +19822,15 @@
             "$ref": "#/components/responses/ml.get_job_stats#200"
           }
         },
-        "x-available-since": "5.5.0"
+        "x-state": "Added in 5.5.0"
       }
     },
     "/_ml/anomaly_detectors/{job_id}/_stats": {
       "get": {
         "tags": [
-          "ml.get_job_stats"
+          "ml anomaly"
         ],
-        "summary": "Get anomaly detection jobs usage info",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/ml-get-job-stats.html"
-        },
+        "summary": "Get anomaly detection job stats",
         "operationId": "ml-get-job-stats-1",
         "parameters": [
           {
@@ -20660,19 +19845,16 @@
             "$ref": "#/components/responses/ml.get_job_stats#200"
           }
         },
-        "x-available-since": "5.5.0"
+        "x-state": "Added in 5.5.0"
       }
     },
     "/_ml/anomaly_detectors": {
       "get": {
         "tags": [
-          "ml.get_jobs"
+          "ml anomaly"
         ],
         "summary": "Get anomaly detection jobs configuration info",
         "description": "You can get information for multiple anomaly detection jobs in a single API\nrequest by using a group name, a comma-separated list of jobs, or a wildcard\nexpression. You can get information for all anomaly detection jobs by using\n`_all`, by specifying `*` as the `<job_id>`, or by omitting the `<job_id>`.",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/ml-get-job.html"
-        },
         "operationId": "ml-get-jobs-1",
         "parameters": [
           {
@@ -20687,19 +19869,16 @@
             "$ref": "#/components/responses/ml.get_jobs#200"
           }
         },
-        "x-available-since": "5.5.0"
+        "x-state": "Added in 5.5.0"
       }
     },
     "/_ml/memory/_stats": {
       "get": {
         "tags": [
-          "ml.get_memory_stats"
+          "ml"
         ],
         "summary": "Get machine learning memory usage info",
         "description": "Get information about how machine learning jobs and trained models are using memory,\non each node, both within the JVM heap, and natively, outside of the JVM.",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/get-ml-memory.html"
-        },
         "operationId": "ml-get-memory-stats",
         "parameters": [
           {
@@ -20717,19 +19896,16 @@
             "$ref": "#/components/responses/ml.get_memory_stats#200"
           }
         },
-        "x-available-since": "8.2.0"
+        "x-state": "Added in 8.2.0"
       }
     },
     "/_ml/memory/{node_id}/_stats": {
       "get": {
         "tags": [
-          "ml.get_memory_stats"
+          "ml"
         ],
         "summary": "Get machine learning memory usage info",
         "description": "Get information about how machine learning jobs and trained models are using memory,\non each node, both within the JVM heap, and natively, outside of the JVM.",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/get-ml-memory.html"
-        },
         "operationId": "ml-get-memory-stats-1",
         "parameters": [
           {
@@ -20750,18 +19926,15 @@
             "$ref": "#/components/responses/ml.get_memory_stats#200"
           }
         },
-        "x-available-since": "8.2.0"
+        "x-state": "Added in 8.2.0"
       }
     },
     "/_ml/anomaly_detectors/{job_id}/model_snapshots/{snapshot_id}/_upgrade/_stats": {
       "get": {
         "tags": [
-          "ml.get_model_snapshot_upgrade_stats"
+          "ml anomaly"
         ],
         "summary": "Get anomaly detection job model snapshot upgrade usage info",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/ml-get-job-model-snapshot-upgrade-stats.html"
-        },
         "operationId": "ml-get-model-snapshot-upgrade-stats",
         "parameters": [
           {
@@ -20824,18 +19997,15 @@
             }
           }
         },
-        "x-available-since": "7.16.0"
+        "x-state": "Added in 7.16.0"
       }
     },
     "/_ml/anomaly_detectors/{job_id}/model_snapshots": {
       "get": {
         "tags": [
-          "ml.get_model_snapshots"
+          "ml anomaly"
         ],
         "summary": "Get model snapshots info",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/ml-get-snapshot.html"
-        },
         "operationId": "ml-get-model-snapshots-2",
         "parameters": [
           {
@@ -20868,16 +20038,13 @@
             "$ref": "#/components/responses/ml.get_model_snapshots#200"
           }
         },
-        "x-available-since": "5.4.0"
+        "x-state": "Added in 5.4.0"
       },
       "post": {
         "tags": [
-          "ml.get_model_snapshots"
+          "ml anomaly"
         ],
         "summary": "Get model snapshots info",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/ml-get-snapshot.html"
-        },
         "operationId": "ml-get-model-snapshots-3",
         "parameters": [
           {
@@ -20910,19 +20077,16 @@
             "$ref": "#/components/responses/ml.get_model_snapshots#200"
           }
         },
-        "x-available-since": "5.4.0"
+        "x-state": "Added in 5.4.0"
       }
     },
     "/_ml/anomaly_detectors/{job_id}/results/overall_buckets": {
       "get": {
         "tags": [
-          "ml.get_overall_buckets"
+          "ml anomaly"
         ],
         "summary": "Get overall bucket results",
         "description": "Retrievs overall bucket results that summarize the bucket results of\nmultiple anomaly detection jobs.\n\nThe `overall_score` is calculated by combining the scores of all the\nbuckets within the overall bucket span. First, the maximum\n`anomaly_score` per anomaly detection job in the overall bucket is\ncalculated. Then the `top_n` of those scores are averaged to result in\nthe `overall_score`. This means that you can fine-tune the\n`overall_score` so that it is more or less sensitive to the number of\njobs that detect an anomaly at the same time. For example, if you set\n`top_n` to `1`, the `overall_score` is the maximum bucket score in the\noverall bucket. Alternatively, if you set `top_n` to the number of jobs,\nthe `overall_score` is high only when all jobs detect anomalies in that\noverall bucket. If you set the `bucket_span` parameter (to a value\ngreater than its default), the `overall_score` is the maximum\n`overall_score` of the overall buckets that have a span equal to the\njobs' largest bucket span.",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/ml-get-overall-buckets.html"
-        },
         "operationId": "ml-get-overall-buckets",
         "parameters": [
           {
@@ -20958,17 +20122,14 @@
             "$ref": "#/components/responses/ml.get_overall_buckets#200"
           }
         },
-        "x-available-since": "6.1.0"
+        "x-state": "Added in 6.1.0"
       },
       "post": {
         "tags": [
-          "ml.get_overall_buckets"
+          "ml anomaly"
         ],
         "summary": "Get overall bucket results",
         "description": "Retrievs overall bucket results that summarize the bucket results of\nmultiple anomaly detection jobs.\n\nThe `overall_score` is calculated by combining the scores of all the\nbuckets within the overall bucket span. First, the maximum\n`anomaly_score` per anomaly detection job in the overall bucket is\ncalculated. Then the `top_n` of those scores are averaged to result in\nthe `overall_score`. This means that you can fine-tune the\n`overall_score` so that it is more or less sensitive to the number of\njobs that detect an anomaly at the same time. For example, if you set\n`top_n` to `1`, the `overall_score` is the maximum bucket score in the\noverall bucket. Alternatively, if you set `top_n` to the number of jobs,\nthe `overall_score` is high only when all jobs detect anomalies in that\noverall bucket. If you set the `bucket_span` parameter (to a value\ngreater than its default), the `overall_score` is the maximum\n`overall_score` of the overall buckets that have a span equal to the\njobs' largest bucket span.",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/ml-get-overall-buckets.html"
-        },
         "operationId": "ml-get-overall-buckets-1",
         "parameters": [
           {
@@ -21004,19 +20165,16 @@
             "$ref": "#/components/responses/ml.get_overall_buckets#200"
           }
         },
-        "x-available-since": "6.1.0"
+        "x-state": "Added in 6.1.0"
       }
     },
     "/_ml/anomaly_detectors/{job_id}/results/records": {
       "get": {
         "tags": [
-          "ml.get_records"
+          "ml anomaly"
         ],
         "summary": "Get anomaly records for an anomaly detection job",
         "description": "Records contain the detailed analytical results. They describe the anomalous\nactivity that has been identified in the input data based on the detector\nconfiguration.\nThere can be many anomaly records depending on the characteristics and size\nof the input data. In practice, there are often too many to be able to\nmanually process them. The machine learning features therefore perform a\nsophisticated aggregation of the anomaly records into buckets.\nThe number of record results depends on the number of anomalies found in each\nbucket, which relates to the number of time series being modeled and the\nnumber of detectors.",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/ml-get-record.html"
-        },
         "operationId": "ml-get-records",
         "parameters": [
           {
@@ -21055,17 +20213,14 @@
             "$ref": "#/components/responses/ml.get_records#200"
           }
         },
-        "x-available-since": "5.4.0"
+        "x-state": "Added in 5.4.0"
       },
       "post": {
         "tags": [
-          "ml.get_records"
+          "ml anomaly"
         ],
         "summary": "Get anomaly records for an anomaly detection job",
         "description": "Records contain the detailed analytical results. They describe the anomalous\nactivity that has been identified in the input data based on the detector\nconfiguration.\nThere can be many anomaly records depending on the characteristics and size\nof the input data. In practice, there are often too many to be able to\nmanually process them. The machine learning features therefore perform a\nsophisticated aggregation of the anomaly records into buckets.\nThe number of record results depends on the number of anomalies found in each\nbucket, which relates to the number of time series being modeled and the\nnumber of detectors.",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/ml-get-record.html"
-        },
         "operationId": "ml-get-records-1",
         "parameters": [
           {
@@ -21104,18 +20259,15 @@
             "$ref": "#/components/responses/ml.get_records#200"
           }
         },
-        "x-available-since": "5.4.0"
+        "x-state": "Added in 5.4.0"
       }
     },
     "/_ml/trained_models": {
       "get": {
         "tags": [
-          "ml.get_trained_models"
+          "ml trained model"
         ],
         "summary": "Get trained model configuration info",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/get-trained-models.html"
-        },
         "operationId": "ml-get-trained-models-1",
         "parameters": [
           {
@@ -21133,6 +20285,9 @@
           {
             "$ref": "#/components/parameters/ml.get_trained_models#include"
           },
+          {
+            "$ref": "#/components/parameters/ml.get_trained_models#include_model_definition"
+          },
           {
             "$ref": "#/components/parameters/ml.get_trained_models#size"
           },
@@ -21145,19 +20300,16 @@
             "$ref": "#/components/responses/ml.get_trained_models#200"
           }
         },
-        "x-available-since": "7.10.0"
+        "x-state": "Added in 7.10.0"
       }
     },
     "/_ml/trained_models/{model_id}/_stats": {
       "get": {
         "tags": [
-          "ml.get_trained_models_stats"
+          "ml trained model"
         ],
         "summary": "Get trained models usage info",
         "description": "You can get usage information for multiple trained\nmodels in a single API request by using a comma-separated list of model IDs or a wildcard expression.",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/get-trained-models-stats.html"
-        },
         "operationId": "ml-get-trained-models-stats",
         "parameters": [
           {
@@ -21178,19 +20330,16 @@
             "$ref": "#/components/responses/ml.get_trained_models_stats#200"
           }
         },
-        "x-available-since": "7.10.0"
+        "x-state": "Added in 7.10.0"
       }
     },
     "/_ml/trained_models/_stats": {
       "get": {
         "tags": [
-          "ml.get_trained_models_stats"
+          "ml trained model"
         ],
         "summary": "Get trained models usage info",
         "description": "You can get usage information for multiple trained\nmodels in a single API request by using a comma-separated list of model IDs or a wildcard expression.",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/get-trained-models-stats.html"
-        },
         "operationId": "ml-get-trained-models-stats-1",
         "parameters": [
           {
@@ -21208,18 +20357,15 @@
             "$ref": "#/components/responses/ml.get_trained_models_stats#200"
           }
         },
-        "x-available-since": "7.10.0"
+        "x-state": "Added in 7.10.0"
       }
     },
     "/_ml/trained_models/{model_id}/_infer": {
       "post": {
         "tags": [
-          "ml.infer_trained_model"
+          "ml trained model"
         ],
         "summary": "Evaluate a trained model",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/master/infer-trained-model.html"
-        },
         "operationId": "ml-infer-trained-model",
         "parameters": [
           {
@@ -21237,18 +20383,15 @@
             "$ref": "#/components/responses/ml.infer_trained_model#200"
           }
         },
-        "x-available-since": "8.3.0"
+        "x-state": "Added in 8.3.0"
       }
     },
     "/_ml/trained_models/{model_id}/deployment/_infer": {
       "post": {
         "tags": [
-          "ml.infer_trained_model"
+          "ml trained model"
         ],
         "summary": "Evaluate a trained model",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/master/infer-trained-model.html"
-        },
         "operationId": "ml-infer-trained-model-1",
         "parameters": [
           {
@@ -21266,19 +20409,16 @@
             "$ref": "#/components/responses/ml.infer_trained_model#200"
           }
         },
-        "x-available-since": "8.3.0"
+        "x-state": "Added in 8.3.0"
       }
     },
     "/_ml/info": {
       "get": {
         "tags": [
-          "ml.info"
+          "ml"
         ],
         "summary": "Return ML defaults and limits",
         "description": "Returns defaults and limits used by machine learning.\nThis endpoint is designed to be used by a user interface that needs to fully\nunderstand machine learning configurations where some options are not\nspecified, meaning that the defaults should be used. This endpoint may be\nused to find out what those defaults are. It also provides information about\nthe maximum size of machine learning jobs that could run in the current\ncluster configuration.",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/get-ml-info.html"
-        },
         "operationId": "ml-info",
         "responses": {
           "200": {
@@ -21312,19 +20452,16 @@
             }
           }
         },
-        "x-available-since": "6.3.0"
+        "x-state": "Added in 6.3.0"
       }
     },
     "/_ml/anomaly_detectors/{job_id}/_open": {
       "post": {
         "tags": [
-          "ml.open_job"
+          "ml anomaly"
         ],
         "summary": "Open anomaly detection jobs",
         "description": "An anomaly detection job must be opened to be ready to receive and analyze\ndata. It can be opened and closed multiple times throughout its lifecycle.\nWhen you open a new job, it starts with an empty model.\nWhen you open an existing job, the most recent model state is automatically\nloaded. The job is ready to resume its analysis from where it left off, once\nnew data is received.",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/ml-open-job.html"
-        },
         "operationId": "ml-open-job",
         "parameters": [
           {
@@ -21387,19 +20524,16 @@
             }
           }
         },
-        "x-available-since": "5.4.0"
+        "x-state": "Added in 5.4.0"
       }
     },
     "/_ml/anomaly_detectors/{job_id}/_data": {
       "post": {
         "tags": [
-          "ml.post_data"
+          "ml anomaly"
         ],
         "summary": "Send data to an anomaly detection job for analysis",
         "description": "IMPORTANT: For each job, data can be accepted from only a single connection at a time.\nIt is not currently possible to post data to multiple jobs using wildcards or a comma-separated list.",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/ml-post-data.html"
-        },
         "operationId": "ml-post-data",
         "parameters": [
           {
@@ -21455,13 +20589,13 @@
                 "schema": {
                   "type": "object",
                   "properties": {
-                    "bucket_count": {
-                      "type": "number"
+                    "job_id": {
+                      "$ref": "#/components/schemas/_types:Id"
                     },
-                    "earliest_record_timestamp": {
+                    "processed_record_count": {
                       "type": "number"
                     },
-                    "empty_bucket_count": {
+                    "processed_field_count": {
                       "type": "number"
                     },
                     "input_bytes": {
@@ -21470,53 +20604,59 @@
                     "input_field_count": {
                       "type": "number"
                     },
-                    "input_record_count": {
-                      "type": "number"
-                    },
                     "invalid_date_count": {
                       "type": "number"
                     },
-                    "job_id": {
-                      "$ref": "#/components/schemas/_types:Id"
-                    },
-                    "last_data_time": {
+                    "missing_field_count": {
                       "type": "number"
                     },
-                    "latest_record_timestamp": {
+                    "out_of_order_timestamp_count": {
                       "type": "number"
                     },
-                    "missing_field_count": {
+                    "empty_bucket_count": {
                       "type": "number"
                     },
-                    "out_of_order_timestamp_count": {
+                    "sparse_bucket_count": {
                       "type": "number"
                     },
-                    "processed_field_count": {
+                    "bucket_count": {
                       "type": "number"
                     },
-                    "processed_record_count": {
-                      "type": "number"
+                    "earliest_record_timestamp": {
+                      "$ref": "#/components/schemas/_types:EpochTimeUnitMillis"
                     },
-                    "sparse_bucket_count": {
+                    "latest_record_timestamp": {
+                      "$ref": "#/components/schemas/_types:EpochTimeUnitMillis"
+                    },
+                    "last_data_time": {
+                      "$ref": "#/components/schemas/_types:EpochTimeUnitMillis"
+                    },
+                    "latest_empty_bucket_timestamp": {
+                      "$ref": "#/components/schemas/_types:EpochTimeUnitMillis"
+                    },
+                    "latest_sparse_bucket_timestamp": {
+                      "$ref": "#/components/schemas/_types:EpochTimeUnitMillis"
+                    },
+                    "input_record_count": {
                       "type": "number"
+                    },
+                    "log_time": {
+                      "$ref": "#/components/schemas/_types:EpochTimeUnitMillis"
                     }
                   },
                   "required": [
-                    "bucket_count",
-                    "earliest_record_timestamp",
-                    "empty_bucket_count",
+                    "job_id",
+                    "processed_record_count",
+                    "processed_field_count",
                     "input_bytes",
                     "input_field_count",
-                    "input_record_count",
                     "invalid_date_count",
-                    "job_id",
-                    "last_data_time",
-                    "latest_record_timestamp",
                     "missing_field_count",
                     "out_of_order_timestamp_count",
-                    "processed_field_count",
-                    "processed_record_count",
-                    "sparse_bucket_count"
+                    "empty_bucket_count",
+                    "sparse_bucket_count",
+                    "bucket_count",
+                    "input_record_count"
                   ]
                 }
               }
@@ -21524,19 +20664,16 @@
           }
         },
         "deprecated": true,
-        "x-available-since": "5.4.0"
+        "x-state": "Added in 5.4.0"
       }
     },
     "/_ml/data_frame/analytics/_preview": {
       "get": {
         "tags": [
-          "ml.preview_data_frame_analytics"
+          "ml data frame"
         ],
         "summary": "Preview features used by data frame analytics",
         "description": "Previews the extracted features used by a data frame analytics config.",
-        "externalDocs": {
-          "url": "http://www.elastic.co/guide/en/elasticsearch/reference/current/preview-dfanalytics.html"
-        },
         "operationId": "ml-preview-data-frame-analytics",
         "requestBody": {
           "$ref": "#/components/requestBodies/ml.preview_data_frame_analytics"
@@ -21546,17 +20683,14 @@
             "$ref": "#/components/responses/ml.preview_data_frame_analytics#200"
           }
         },
-        "x-available-since": "7.13.0"
+        "x-state": "Added in 7.13.0"
       },
       "post": {
         "tags": [
-          "ml.preview_data_frame_analytics"
+          "ml data frame"
         ],
         "summary": "Preview features used by data frame analytics",
         "description": "Previews the extracted features used by a data frame analytics config.",
-        "externalDocs": {
-          "url": "http://www.elastic.co/guide/en/elasticsearch/reference/current/preview-dfanalytics.html"
-        },
         "operationId": "ml-preview-data-frame-analytics-1",
         "requestBody": {
           "$ref": "#/components/requestBodies/ml.preview_data_frame_analytics"
@@ -21566,19 +20700,16 @@
             "$ref": "#/components/responses/ml.preview_data_frame_analytics#200"
           }
         },
-        "x-available-since": "7.13.0"
+        "x-state": "Added in 7.13.0"
       }
     },
     "/_ml/data_frame/analytics/{id}/_preview": {
       "get": {
         "tags": [
-          "ml.preview_data_frame_analytics"
+          "ml data frame"
         ],
         "summary": "Preview features used by data frame analytics",
         "description": "Previews the extracted features used by a data frame analytics config.",
-        "externalDocs": {
-          "url": "http://www.elastic.co/guide/en/elasticsearch/reference/current/preview-dfanalytics.html"
-        },
         "operationId": "ml-preview-data-frame-analytics-2",
         "parameters": [
           {
@@ -21593,17 +20724,14 @@
             "$ref": "#/components/responses/ml.preview_data_frame_analytics#200"
           }
         },
-        "x-available-since": "7.13.0"
+        "x-state": "Added in 7.13.0"
       },
       "post": {
         "tags": [
-          "ml.preview_data_frame_analytics"
+          "ml data frame"
         ],
         "summary": "Preview features used by data frame analytics",
         "description": "Previews the extracted features used by a data frame analytics config.",
-        "externalDocs": {
-          "url": "http://www.elastic.co/guide/en/elasticsearch/reference/current/preview-dfanalytics.html"
-        },
         "operationId": "ml-preview-data-frame-analytics-3",
         "parameters": [
           {
@@ -21618,19 +20746,16 @@
             "$ref": "#/components/responses/ml.preview_data_frame_analytics#200"
           }
         },
-        "x-available-since": "7.13.0"
+        "x-state": "Added in 7.13.0"
       }
     },
     "/_ml/datafeeds/{datafeed_id}/_preview": {
       "get": {
         "tags": [
-          "ml.preview_datafeed"
+          "ml anomaly"
         ],
         "summary": "Preview a datafeed",
         "description": "This API returns the first \"page\" of search results from a datafeed.\nYou can preview an existing datafeed or provide configuration details for a datafeed\nand anomaly detection job in the API. The preview shows the structure of the data\nthat will be passed to the anomaly detection engine.\nIMPORTANT: When Elasticsearch security features are enabled, the preview uses the credentials of the user that\ncalled the API. However, when the datafeed starts it uses the roles of the last user that created or updated the\ndatafeed. To get a preview that accurately reflects the behavior of the datafeed, use the appropriate credentials.\nYou can also use secondary authorization headers to supply the credentials.",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/ml-preview-datafeed.html"
-        },
         "operationId": "ml-preview-datafeed",
         "parameters": [
           {
@@ -21651,17 +20776,14 @@
             "$ref": "#/components/responses/ml.preview_datafeed#200"
           }
         },
-        "x-available-since": "5.4.0"
+        "x-state": "Added in 5.4.0"
       },
       "post": {
         "tags": [
-          "ml.preview_datafeed"
+          "ml anomaly"
         ],
         "summary": "Preview a datafeed",
         "description": "This API returns the first \"page\" of search results from a datafeed.\nYou can preview an existing datafeed or provide configuration details for a datafeed\nand anomaly detection job in the API. The preview shows the structure of the data\nthat will be passed to the anomaly detection engine.\nIMPORTANT: When Elasticsearch security features are enabled, the preview uses the credentials of the user that\ncalled the API. However, when the datafeed starts it uses the roles of the last user that created or updated the\ndatafeed. To get a preview that accurately reflects the behavior of the datafeed, use the appropriate credentials.\nYou can also use secondary authorization headers to supply the credentials.",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/ml-preview-datafeed.html"
-        },
         "operationId": "ml-preview-datafeed-1",
         "parameters": [
           {
@@ -21682,19 +20804,16 @@
             "$ref": "#/components/responses/ml.preview_datafeed#200"
           }
         },
-        "x-available-since": "5.4.0"
+        "x-state": "Added in 5.4.0"
       }
     },
     "/_ml/datafeeds/_preview": {
       "get": {
         "tags": [
-          "ml.preview_datafeed"
+          "ml anomaly"
         ],
         "summary": "Preview a datafeed",
         "description": "This API returns the first \"page\" of search results from a datafeed.\nYou can preview an existing datafeed or provide configuration details for a datafeed\nand anomaly detection job in the API. The preview shows the structure of the data\nthat will be passed to the anomaly detection engine.\nIMPORTANT: When Elasticsearch security features are enabled, the preview uses the credentials of the user that\ncalled the API. However, when the datafeed starts it uses the roles of the last user that created or updated the\ndatafeed. To get a preview that accurately reflects the behavior of the datafeed, use the appropriate credentials.\nYou can also use secondary authorization headers to supply the credentials.",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/ml-preview-datafeed.html"
-        },
         "operationId": "ml-preview-datafeed-2",
         "parameters": [
           {
@@ -21712,17 +20831,14 @@
             "$ref": "#/components/responses/ml.preview_datafeed#200"
           }
         },
-        "x-available-since": "5.4.0"
+        "x-state": "Added in 5.4.0"
       },
       "post": {
         "tags": [
-          "ml.preview_datafeed"
+          "ml anomaly"
         ],
         "summary": "Preview a datafeed",
         "description": "This API returns the first \"page\" of search results from a datafeed.\nYou can preview an existing datafeed or provide configuration details for a datafeed\nand anomaly detection job in the API. The preview shows the structure of the data\nthat will be passed to the anomaly detection engine.\nIMPORTANT: When Elasticsearch security features are enabled, the preview uses the credentials of the user that\ncalled the API. However, when the datafeed starts it uses the roles of the last user that created or updated the\ndatafeed. To get a preview that accurately reflects the behavior of the datafeed, use the appropriate credentials.\nYou can also use secondary authorization headers to supply the credentials.",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/ml-preview-datafeed.html"
-        },
         "operationId": "ml-preview-datafeed-3",
         "parameters": [
           {
@@ -21740,18 +20856,15 @@
             "$ref": "#/components/responses/ml.preview_datafeed#200"
           }
         },
-        "x-available-since": "5.4.0"
+        "x-state": "Added in 5.4.0"
       }
     },
     "/_ml/trained_models/{model_id}/definition/{part}": {
       "put": {
         "tags": [
-          "ml.put_trained_model_definition_part"
+          "ml trained model"
         ],
         "summary": "Create part of a trained model definition",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/put-trained-model-definition-part.html"
-        },
         "operationId": "ml-put-trained-model-definition-part",
         "parameters": [
           {
@@ -21818,19 +20931,16 @@
             }
           }
         },
-        "x-available-since": "8.0.0"
+        "x-state": "Added in 8.0.0"
       }
     },
     "/_ml/trained_models/{model_id}/vocabulary": {
       "put": {
         "tags": [
-          "ml.put_trained_model_vocabulary"
+          "ml trained model"
         ],
         "summary": "Create a trained model vocabulary",
         "description": "This API is supported only for natural language processing (NLP) models.\nThe vocabulary is stored in the index as described in `inference_config.*.vocabulary` of the trained model definition.",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/put-trained-model-vocabulary.html"
-        },
         "operationId": "ml-put-trained-model-vocabulary",
         "parameters": [
           {
@@ -21860,7 +20970,6 @@
                   },
                   "merges": {
                     "description": "The optional model merges if required by the tokenizer.",
-                    "x-available-since": "8.2.0",
                     "type": "array",
                     "items": {
                       "type": "string"
@@ -21868,7 +20977,6 @@
                   },
                   "scores": {
                     "description": "The optional vocabulary value scores if required by the tokenizer.",
-                    "x-available-since": "8.9.0",
                     "type": "array",
                     "items": {
                       "type": "number"
@@ -21895,19 +21003,16 @@
             }
           }
         },
-        "x-available-since": "8.0.0"
+        "x-state": "Added in 8.0.0"
       }
     },
     "/_ml/anomaly_detectors/{job_id}/_reset": {
       "post": {
         "tags": [
-          "ml.reset_job"
+          "ml anomaly"
         ],
         "summary": "Reset an anomaly detection job",
         "description": "All model state and results are deleted. The job is ready to start over as if\nit had just been created.\nIt is not currently possible to reset multiple jobs using wildcards or a\ncomma separated list.",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/ml-reset-job.html"
-        },
         "operationId": "ml-reset-job",
         "parameters": [
           {
@@ -21954,19 +21059,16 @@
             }
           }
         },
-        "x-available-since": "7.14.0"
+        "x-state": "Added in 7.14.0"
       }
     },
     "/_ml/anomaly_detectors/{job_id}/model_snapshots/{snapshot_id}/_revert": {
       "post": {
         "tags": [
-          "ml.revert_model_snapshot"
+          "ml anomaly"
         ],
         "summary": "Revert to a snapshot",
         "description": "The machine learning features react quickly to anomalous input, learning new\nbehaviors in data. Highly anomalous input increases the variance in the\nmodels whilst the system learns whether this is a new step-change in behavior\nor a one-off event. In the case where this anomalous input is known to be a\none-off, then it might be appropriate to reset the model state to a time\nbefore this event. For example, you might consider reverting to a saved\nsnapshot after Black Friday or a critical system failure.",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/ml-revert-snapshot.html"
-        },
         "operationId": "ml-revert-model-snapshot",
         "parameters": [
           {
@@ -22037,19 +21139,16 @@
             }
           }
         },
-        "x-available-since": "5.4.0"
+        "x-state": "Added in 5.4.0"
       }
     },
     "/_ml/set_upgrade_mode": {
       "post": {
         "tags": [
-          "ml.set_upgrade_mode"
+          "ml"
         ],
         "summary": "Set upgrade_mode for ML indices",
         "description": "Sets a cluster wide upgrade_mode setting that prepares machine learning\nindices for an upgrade.\nWhen upgrading your cluster, in some circumstances you must restart your\nnodes and reindex your machine learning indices. In those circumstances,\nthere must be no machine learning jobs running. You can close the machine\nlearning jobs, do the upgrade, then open all the jobs again. Alternatively,\nyou can use this API to temporarily halt tasks associated with the jobs and\ndatafeeds and prevent new jobs from opening. You can also use this API\nduring upgrades that do not require you to reindex your machine learning\nindices, though stopping jobs is not a requirement in that case.\nYou can see the current value for the upgrade_mode setting by using the get\nmachine learning info API.",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/ml-set-upgrade-mode.html"
-        },
         "operationId": "ml-set-upgrade-mode",
         "parameters": [
           {
@@ -22085,19 +21184,16 @@
             }
           }
         },
-        "x-available-since": "6.7.0"
+        "x-state": "Added in 6.7.0"
       }
     },
     "/_ml/data_frame/analytics/{id}/_start": {
       "post": {
         "tags": [
-          "ml.start_data_frame_analytics"
+          "ml data frame"
         ],
         "summary": "Start a data frame analytics job",
         "description": "A data frame analytics job can be started and stopped multiple times\nthroughout its lifecycle.\nIf the destination index does not exist, it is created automatically the\nfirst time you start the data frame analytics job. The\n`index.number_of_shards` and `index.number_of_replicas` settings for the\ndestination index are copied from the source index. If there are multiple\nsource indices, the destination index copies the highest setting values. The\nmappings for the destination index are also copied from the source indices.\nIf there are any mapping conflicts, the job fails to start.\nIf the destination index exists, it is used as is. You can therefore set up\nthe destination index in advance with custom settings and mappings.",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/start-dfanalytics.html"
-        },
         "operationId": "ml-start-data-frame-analytics",
         "parameters": [
           {
@@ -22146,19 +21242,16 @@
             }
           }
         },
-        "x-available-since": "7.3.0"
+        "x-state": "Added in 7.3.0"
       }
     },
     "/_ml/datafeeds/{datafeed_id}/_start": {
       "post": {
         "tags": [
-          "ml.start_datafeed"
+          "ml anomaly"
         ],
         "summary": "Start datafeeds",
         "description": "A datafeed must be started in order to retrieve data from Elasticsearch. A datafeed can be started and stopped\nmultiple times throughout its lifecycle.\n\nBefore you can start a datafeed, the anomaly detection job must be open. Otherwise, an error occurs.\n\nIf you restart a stopped datafeed, it continues processing input data from the next millisecond after it was stopped.\nIf new data was indexed for that exact millisecond between stopping and starting, it will be ignored.\n\nWhen Elasticsearch security features are enabled, your datafeed remembers which roles the last user to create or\nupdate it had at the time of creation or update and runs the query using those same roles. If you provided secondary\nauthorization headers when you created or updated the datafeed, those credentials are used instead.",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/ml-start-datafeed.html"
-        },
         "operationId": "ml-start-datafeed",
         "parameters": [
           {
@@ -22248,19 +21341,16 @@
             }
           }
         },
-        "x-available-since": "5.5.0"
+        "x-state": "Added in 5.5.0"
       }
     },
     "/_ml/trained_models/{model_id}/deployment/_start": {
       "post": {
         "tags": [
-          "ml.start_trained_model_deployment"
+          "ml trained model"
         ],
         "summary": "Start a trained model deployment",
         "description": "It allocates the model to every machine learning node.",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/master/start-trained-model-deployment.html"
-        },
         "operationId": "ml-start-trained-model-deployment",
         "parameters": [
           {
@@ -22375,19 +21465,16 @@
             }
           }
         },
-        "x-available-since": "8.0.0"
+        "x-state": "Added in 8.0.0"
       }
     },
     "/_ml/data_frame/analytics/{id}/_stop": {
       "post": {
         "tags": [
-          "ml.stop_data_frame_analytics"
+          "ml data frame"
         ],
         "summary": "Stop data frame analytics jobs",
         "description": "A data frame analytics job can be started and stopped multiple times\nthroughout its lifecycle.",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/stop-dfanalytics.html"
-        },
         "operationId": "ml-stop-data-frame-analytics",
         "parameters": [
           {
@@ -22452,19 +21539,16 @@
             }
           }
         },
-        "x-available-since": "7.3.0"
+        "x-state": "Added in 7.3.0"
       }
     },
     "/_ml/datafeeds/{datafeed_id}/_stop": {
       "post": {
         "tags": [
-          "ml.stop_datafeed"
+          "ml anomaly"
         ],
         "summary": "Stop datafeeds",
         "description": "A datafeed that is stopped ceases to retrieve data from Elasticsearch. A datafeed can be started and stopped\nmultiple times throughout its lifecycle.",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/ml-stop-datafeed.html"
-        },
         "operationId": "ml-stop-datafeed",
         "parameters": [
           {
@@ -22551,18 +21635,15 @@
             }
           }
         },
-        "x-available-since": "5.4.0"
+        "x-state": "Added in 5.4.0"
       }
     },
     "/_ml/trained_models/{model_id}/deployment/_stop": {
       "post": {
         "tags": [
-          "ml.stop_trained_model_deployment"
+          "ml trained model"
         ],
         "summary": "Stop a trained model deployment",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/master/stop-trained-model-deployment.html"
-        },
         "operationId": "ml-stop-trained-model-deployment",
         "parameters": [
           {
@@ -22617,18 +21698,15 @@
             }
           }
         },
-        "x-available-since": "8.0.0"
+        "x-state": "Added in 8.0.0"
       }
     },
     "/_ml/data_frame/analytics/{id}/_update": {
       "post": {
         "tags": [
-          "ml.update_data_frame_analytics"
+          "ml data frame"
         ],
         "summary": "Update a data frame analytics job",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/update-dfanalytics.html"
-        },
         "operationId": "ml-update-data-frame-analytics",
         "parameters": [
           {
@@ -22654,9 +21732,6 @@
                     "type": "string"
                   },
                   "model_memory_limit": {
-                    "externalDocs": {
-                      "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/ml-settings.html"
-                    },
                     "description": "The approximate maximum amount of memory resources that are permitted for\nanalytical processing. If your `elasticsearch.yml` file contains an\n`xpack.ml.max_model_memory_limit` setting, an error occurs when you try\nto create data frame analytics jobs that have `model_memory_limit` values\ngreater than that setting.",
                     "type": "string"
                   },
@@ -22665,9 +21740,6 @@
                     "type": "number"
                   },
                   "allow_lazy_start": {
-                    "externalDocs": {
-                      "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/ml-settings.html"
-                    },
                     "description": "Specifies whether this job can start when there is insufficient machine\nlearning node capacity for it to be immediately assigned to a node.",
                     "type": "boolean"
                   }
@@ -22738,19 +21810,16 @@
             }
           }
         },
-        "x-available-since": "7.3.0"
+        "x-state": "Added in 7.3.0"
       }
     },
     "/_ml/datafeeds/{datafeed_id}/_update": {
       "post": {
         "tags": [
-          "ml.update_datafeed"
+          "ml anomaly"
         ],
         "summary": "Update a datafeed",
         "description": "You must stop and start the datafeed for the changes to be applied.\nWhen Elasticsearch security features are enabled, your datafeed remembers which roles the user who updated it had at\nthe time of the update and runs the query using those same roles. If you provide secondary authorization headers,\nthose credentials are used instead.",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/ml-update-datafeed.html"
-        },
         "operationId": "ml-update-datafeed",
         "parameters": [
           {
@@ -22947,19 +22016,16 @@
             }
           }
         },
-        "x-available-since": "6.4.0"
+        "x-state": "Added in 6.4.0"
       }
     },
     "/_ml/filters/{filter_id}/_update": {
       "post": {
         "tags": [
-          "ml.update_filter"
+          "ml anomaly"
         ],
         "summary": "Update a filter",
         "description": "Updates the description of a filter, adds items, or removes items from the list.",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/ml-update-filter.html"
-        },
         "operationId": "ml-update-filter",
         "parameters": [
           {
@@ -23035,19 +22101,16 @@
             }
           }
         },
-        "x-available-since": "6.4.0"
+        "x-state": "Added in 6.4.0"
       }
     },
     "/_ml/anomaly_detectors/{job_id}/_update": {
       "post": {
         "tags": [
-          "ml.update_job"
+          "ml anomaly"
         ],
         "summary": "Update an anomaly detection job",
         "description": "Updates certain properties of an anomaly detection job.",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/ml-update-job.html"
-        },
         "operationId": "ml-update-job",
         "parameters": [
           {
@@ -23069,9 +22132,6 @@
                 "type": "object",
                 "properties": {
                   "allow_lazy_open": {
-                    "externalDocs": {
-                      "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/ml-settings.html"
-                    },
                     "description": "Advanced configuration option. Specifies whether this job can open when\nthere is insufficient machine learning node capacity for it to be\nimmediately assigned to a node. If `false` and a machine learning node\nwith capacity to run the job cannot immediately be found, the open\nanomaly detection jobs API returns an error. However, this is also\nsubject to the cluster-wide `xpack.ml.max_lazy_ml_nodes` setting. If this\noption is set to `true`, the open anomaly detection jobs API does not\nreturn an error and the job waits in the opening state until sufficient\nmachine learning node capacity is available.",
                     "type": "boolean"
                   },
@@ -23105,16 +22165,10 @@
                     "$ref": "#/components/schemas/_types:Duration"
                   },
                   "daily_model_snapshot_retention_after_days": {
-                    "externalDocs": {
-                      "url": "https://www.elastic.co/guide/en/machine-learning/current/ml-ad-run-jobs.html#ml-ad-model-snapshots"
-                    },
                     "description": "Advanced configuration option, which affects the automatic removal of old\nmodel snapshots for this job. It specifies a period of time (in days)\nafter which only the first snapshot per day is retained. This period is\nrelative to the timestamp of the most recent snapshot for this job. Valid\nvalues range from 0 to `model_snapshot_retention_days`. For jobs created\nbefore version 7.8.0, the default value matches\n`model_snapshot_retention_days`.",
                     "type": "number"
                   },
                   "model_snapshot_retention_days": {
-                    "externalDocs": {
-                      "url": "https://www.elastic.co/guide/en/machine-learning/current/ml-ad-run-jobs.html#ml-ad-model-snapshots"
-                    },
                     "description": "Advanced configuration option, which affects the automatic removal of old\nmodel snapshots for this job. It specifies the maximum period of time (in\ndays) that snapshots are retained. This period is relative to the\ntimestamp of the most recent snapshot for this job.",
                     "type": "number"
                   },
@@ -23137,7 +22191,7 @@
                     "description": "An array of detector update objects.",
                     "type": "array",
                     "items": {
-                      "$ref": "#/components/schemas/ml._types:Detector"
+                      "$ref": "#/components/schemas/ml._types:DetectorUpdate"
                     }
                   },
                   "per_partition_categorization": {
@@ -23245,19 +22299,16 @@
             }
           }
         },
-        "x-available-since": "5.5.0"
+        "x-state": "Added in 5.5.0"
       }
     },
     "/_ml/anomaly_detectors/{job_id}/model_snapshots/{snapshot_id}/_update": {
       "post": {
         "tags": [
-          "ml.update_model_snapshot"
+          "ml anomaly"
         ],
         "summary": "Update a snapshot",
         "description": "Updates certain properties of a snapshot.",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/ml-update-snapshot.html"
-        },
         "operationId": "ml-update-model-snapshot",
         "parameters": [
           {
@@ -23327,18 +22378,15 @@
             }
           }
         },
-        "x-available-since": "5.4.0"
+        "x-state": "Added in 5.4.0"
       }
     },
     "/_ml/trained_models/{model_id}/deployment/_update": {
       "post": {
         "tags": [
-          "ml.update_trained_model_deployment"
+          "ml trained model"
         ],
         "summary": "Update a trained model deployment",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/update-trained-model-deployment.html"
-        },
         "operationId": "ml-update-trained-model-deployment",
         "parameters": [
           {
@@ -23399,19 +22447,16 @@
           }
         },
         "x-beta": true,
-        "x-available-since": "8.6.0"
+        "x-state": "Added in 8.6.0"
       }
     },
     "/_ml/anomaly_detectors/{job_id}/model_snapshots/{snapshot_id}/_upgrade": {
       "post": {
         "tags": [
-          "ml.upgrade_job_snapshot"
+          "ml anomaly"
         ],
         "summary": "Upgrade a snapshot",
         "description": "Upgrades an anomaly detection model snapshot to the latest major version.\nOver time, older snapshot formats are deprecated and removed. Anomaly\ndetection jobs support only snapshots that are from the current or previous\nmajor version.\nThis API provides a means to upgrade a snapshot to the current major version.\nThis aids in preparing the cluster for an upgrade to the next major version.\nOnly one snapshot per anomaly detection job can be upgraded at a time and the\nupgraded snapshot cannot be the current snapshot of the anomaly detection\njob.",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/ml-upgrade-job-model-snapshot.html"
-        },
         "operationId": "ml-upgrade-job-snapshot",
         "parameters": [
           {
@@ -23482,18 +22527,15 @@
             }
           }
         },
-        "x-available-since": "5.4.0"
+        "x-state": "Added in 5.4.0"
       }
     },
     "/_ml/anomaly_detectors/_validate": {
       "post": {
         "tags": [
-          "ml.validate"
+          "ml"
         ],
         "summary": "Validates an anomaly detection job",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/machine-learning/current/ml-jobs.html"
-        },
         "operationId": "ml-validate",
         "requestBody": {
           "content": {
@@ -23546,18 +22588,15 @@
             }
           }
         },
-        "x-available-since": "6.3.0"
+        "x-state": "Added in 6.3.0"
       }
     },
     "/_ml/anomaly_detectors/_validate/detector": {
       "post": {
         "tags": [
-          "ml.validate_detector"
+          "ml"
         ],
         "summary": "Validates an anomaly detection detector",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/machine-learning/current/ml-jobs.html"
-        },
         "operationId": "ml-validate-detector",
         "requestBody": {
           "content": {
@@ -23581,18 +22620,15 @@
             }
           }
         },
-        "x-available-since": "5.4.0"
+        "x-state": "Added in 5.4.0"
       }
     },
     "/_monitoring/bulk": {
       "put": {
         "tags": [
-          "monitoring.bulk"
+          "monitoring"
         ],
         "summary": "Used by the monitoring features to send monitoring data",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/master/monitor-elasticsearch-cluster.html"
-        },
         "operationId": "monitoring-bulk-1",
         "parameters": [
           {
@@ -23613,16 +22649,13 @@
             "$ref": "#/components/responses/monitoring.bulk#200"
           }
         },
-        "x-available-since": "6.3.0"
+        "x-state": "Added in 6.3.0"
       },
       "post": {
         "tags": [
-          "monitoring.bulk"
+          "monitoring"
         ],
         "summary": "Used by the monitoring features to send monitoring data",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/master/monitor-elasticsearch-cluster.html"
-        },
         "operationId": "monitoring-bulk",
         "parameters": [
           {
@@ -23643,18 +22676,15 @@
             "$ref": "#/components/responses/monitoring.bulk#200"
           }
         },
-        "x-available-since": "6.3.0"
+        "x-state": "Added in 6.3.0"
       }
     },
     "/_monitoring/{type}/bulk": {
       "put": {
         "tags": [
-          "monitoring.bulk"
+          "monitoring"
         ],
         "summary": "Used by the monitoring features to send monitoring data",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/master/monitor-elasticsearch-cluster.html"
-        },
         "operationId": "monitoring-bulk-3",
         "parameters": [
           {
@@ -23678,16 +22708,13 @@
             "$ref": "#/components/responses/monitoring.bulk#200"
           }
         },
-        "x-available-since": "6.3.0"
+        "x-state": "Added in 6.3.0"
       },
       "post": {
         "tags": [
-          "monitoring.bulk"
+          "monitoring"
         ],
         "summary": "Used by the monitoring features to send monitoring data",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/master/monitor-elasticsearch-cluster.html"
-        },
         "operationId": "monitoring-bulk-2",
         "parameters": [
           {
@@ -23711,18 +22738,16 @@
             "$ref": "#/components/responses/monitoring.bulk#200"
           }
         },
-        "x-available-since": "6.3.0"
+        "x-state": "Added in 6.3.0"
       }
     },
     "/_msearch": {
       "get": {
         "tags": [
-          "msearch"
+          "search"
         ],
-        "summary": "Allows to execute several search operations in one request",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/master/search-multi-search.html"
-        },
+        "summary": "Run multiple searches",
+        "description": "The format of the request is similar to the bulk API format and makes use of the newline delimited JSON (NDJSON) format.\nThe structure is as follows:\n\n```\nheader\\n\nbody\\n\nheader\\n\nbody\\n\n```\n\nThis structure is specifically optimized to reduce parsing if a specific search ends up redirected to another node.\n\nIMPORTANT: The final line of data must end with a newline character `\\n`.\nEach newline character may be preceded by a carriage return `\\r`.\nWhen sending requests to this endpoint the `Content-Type` header should be set to `application/x-ndjson`.",
         "operationId": "msearch",
         "parameters": [
           {
@@ -23773,16 +22798,14 @@
             "$ref": "#/components/responses/msearch#200"
           }
         },
-        "x-available-since": "1.3.0"
+        "x-state": "Added in 1.3.0"
       },
       "post": {
         "tags": [
-          "msearch"
+          "search"
         ],
-        "summary": "Allows to execute several search operations in one request",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/master/search-multi-search.html"
-        },
+        "summary": "Run multiple searches",
+        "description": "The format of the request is similar to the bulk API format and makes use of the newline delimited JSON (NDJSON) format.\nThe structure is as follows:\n\n```\nheader\\n\nbody\\n\nheader\\n\nbody\\n\n```\n\nThis structure is specifically optimized to reduce parsing if a specific search ends up redirected to another node.\n\nIMPORTANT: The final line of data must end with a newline character `\\n`.\nEach newline character may be preceded by a carriage return `\\r`.\nWhen sending requests to this endpoint the `Content-Type` header should be set to `application/x-ndjson`.",
         "operationId": "msearch-1",
         "parameters": [
           {
@@ -23833,18 +22856,16 @@
             "$ref": "#/components/responses/msearch#200"
           }
         },
-        "x-available-since": "1.3.0"
+        "x-state": "Added in 1.3.0"
       }
     },
     "/{index}/_msearch": {
       "get": {
         "tags": [
-          "msearch"
+          "search"
         ],
-        "summary": "Allows to execute several search operations in one request",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/master/search-multi-search.html"
-        },
+        "summary": "Run multiple searches",
+        "description": "The format of the request is similar to the bulk API format and makes use of the newline delimited JSON (NDJSON) format.\nThe structure is as follows:\n\n```\nheader\\n\nbody\\n\nheader\\n\nbody\\n\n```\n\nThis structure is specifically optimized to reduce parsing if a specific search ends up redirected to another node.\n\nIMPORTANT: The final line of data must end with a newline character `\\n`.\nEach newline character may be preceded by a carriage return `\\r`.\nWhen sending requests to this endpoint the `Content-Type` header should be set to `application/x-ndjson`.",
         "operationId": "msearch-2",
         "parameters": [
           {
@@ -23898,16 +22919,14 @@
             "$ref": "#/components/responses/msearch#200"
           }
         },
-        "x-available-since": "1.3.0"
+        "x-state": "Added in 1.3.0"
       },
       "post": {
         "tags": [
-          "msearch"
+          "search"
         ],
-        "summary": "Allows to execute several search operations in one request",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/master/search-multi-search.html"
-        },
+        "summary": "Run multiple searches",
+        "description": "The format of the request is similar to the bulk API format and makes use of the newline delimited JSON (NDJSON) format.\nThe structure is as follows:\n\n```\nheader\\n\nbody\\n\nheader\\n\nbody\\n\n```\n\nThis structure is specifically optimized to reduce parsing if a specific search ends up redirected to another node.\n\nIMPORTANT: The final line of data must end with a newline character `\\n`.\nEach newline character may be preceded by a carriage return `\\r`.\nWhen sending requests to this endpoint the `Content-Type` header should be set to `application/x-ndjson`.",
         "operationId": "msearch-3",
         "parameters": [
           {
@@ -23961,17 +22980,17 @@
             "$ref": "#/components/responses/msearch#200"
           }
         },
-        "x-available-since": "1.3.0"
+        "x-state": "Added in 1.3.0"
       }
     },
     "/_msearch/template": {
       "get": {
         "tags": [
-          "msearch_template"
+          "search"
         ],
-        "summary": "Runs multiple templated searches with a single request",
+        "summary": "Run multiple templated searches",
         "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/search-multi-search.html"
+          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/search-template.html"
         },
         "operationId": "msearch-template",
         "parameters": [
@@ -23999,15 +23018,15 @@
             "$ref": "#/components/responses/msearch_template#200"
           }
         },
-        "x-available-since": "5.0.0"
+        "x-state": "Added in 5.0.0"
       },
       "post": {
         "tags": [
-          "msearch_template"
+          "search"
         ],
-        "summary": "Runs multiple templated searches with a single request",
+        "summary": "Run multiple templated searches",
         "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/search-multi-search.html"
+          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/search-template.html"
         },
         "operationId": "msearch-template-1",
         "parameters": [
@@ -24035,17 +23054,17 @@
             "$ref": "#/components/responses/msearch_template#200"
           }
         },
-        "x-available-since": "5.0.0"
+        "x-state": "Added in 5.0.0"
       }
     },
     "/{index}/_msearch/template": {
       "get": {
         "tags": [
-          "msearch_template"
+          "search"
         ],
-        "summary": "Runs multiple templated searches with a single request",
+        "summary": "Run multiple templated searches",
         "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/search-multi-search.html"
+          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/search-template.html"
         },
         "operationId": "msearch-template-2",
         "parameters": [
@@ -24076,15 +23095,15 @@
             "$ref": "#/components/responses/msearch_template#200"
           }
         },
-        "x-available-since": "5.0.0"
+        "x-state": "Added in 5.0.0"
       },
       "post": {
         "tags": [
-          "msearch_template"
+          "search"
         ],
-        "summary": "Runs multiple templated searches with a single request",
+        "summary": "Run multiple templated searches",
         "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/search-multi-search.html"
+          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/search-template.html"
         },
         "operationId": "msearch-template-3",
         "parameters": [
@@ -24115,18 +23134,16 @@
             "$ref": "#/components/responses/msearch_template#200"
           }
         },
-        "x-available-since": "5.0.0"
+        "x-state": "Added in 5.0.0"
       }
     },
     "/_mtermvectors": {
       "get": {
         "tags": [
-          "mtermvectors"
+          "document"
         ],
-        "summary": "Returns multiple termvectors in one request",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/master/docs-multi-termvectors.html"
-        },
+        "summary": "Get multiple term vectors",
+        "description": "You can specify existing documents by index and ID or provide artificial documents in the body of the request.\nYou can specify the index in the request body or request URI.\nThe response contains a `docs` array with all the fetched termvectors.\nEach element has the structure provided by the termvectors API.",
         "operationId": "mtermvectors",
         "parameters": [
           {
@@ -24177,12 +23194,10 @@
       },
       "post": {
         "tags": [
-          "mtermvectors"
+          "document"
         ],
-        "summary": "Returns multiple termvectors in one request",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/master/docs-multi-termvectors.html"
-        },
+        "summary": "Get multiple term vectors",
+        "description": "You can specify existing documents by index and ID or provide artificial documents in the body of the request.\nYou can specify the index in the request body or request URI.\nThe response contains a `docs` array with all the fetched termvectors.\nEach element has the structure provided by the termvectors API.",
         "operationId": "mtermvectors-1",
         "parameters": [
           {
@@ -24235,12 +23250,10 @@
     "/{index}/_mtermvectors": {
       "get": {
         "tags": [
-          "mtermvectors"
+          "document"
         ],
-        "summary": "Returns multiple termvectors in one request",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/master/docs-multi-termvectors.html"
-        },
+        "summary": "Get multiple term vectors",
+        "description": "You can specify existing documents by index and ID or provide artificial documents in the body of the request.\nYou can specify the index in the request body or request URI.\nThe response contains a `docs` array with all the fetched termvectors.\nEach element has the structure provided by the termvectors API.",
         "operationId": "mtermvectors-2",
         "parameters": [
           {
@@ -24294,12 +23307,10 @@
       },
       "post": {
         "tags": [
-          "mtermvectors"
+          "document"
         ],
-        "summary": "Returns multiple termvectors in one request",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/master/docs-multi-termvectors.html"
-        },
+        "summary": "Get multiple term vectors",
+        "description": "You can specify existing documents by index and ID or provide artificial documents in the body of the request.\nYou can specify the index in the request body or request URI.\nThe response contains a `docs` array with all the fetched termvectors.\nEach element has the structure provided by the termvectors API.",
         "operationId": "mtermvectors-3",
         "parameters": [
           {
@@ -24355,12 +23366,10 @@
     "/_nodes/{node_id}/_repositories_metering/{max_archive_version}": {
       "delete": {
         "tags": [
-          "nodes.clear_repositories_metering_archive"
+          "cluster"
         ],
-        "summary": "You can use this API to clear the archived repositories metering information in the cluster",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/clear-repositories-metering-archive-api.html"
-        },
+        "summary": "Clear the archived repositories metering",
+        "description": "Clear the archived repositories metering information in the cluster.",
         "operationId": "nodes-clear-repositories-metering-archive",
         "parameters": [
           {
@@ -24398,20 +23407,16 @@
             }
           }
         },
-        "x-technical-preview": true,
-        "x-available-since": "7.16.0"
+        "x-state": "Technical preview"
       }
     },
     "/_nodes/{node_id}/_repositories_metering": {
       "get": {
         "tags": [
-          "nodes.get_repositories_metering_info"
+          "cluster"
         ],
-        "summary": "You can use the cluster repositories metering API to retrieve repositories metering information in a cluster",
-        "description": "This API exposes monotonically non-decreasing counters and it’s expected that clients would durably store the\ninformation needed to compute aggregations over a period of time. Additionally, the information exposed by this\nAPI is volatile, meaning that it won’t be present after node restarts.",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/get-repositories-metering-api.html"
-        },
+        "summary": "Get cluster repositories metering",
+        "description": "Get repositories metering information for a cluster.\nThis API exposes monotonically non-decreasing counters and it is expected that clients would durably store the information needed to compute aggregations over a period of time.\nAdditionally, the information exposed by this API is volatile, meaning that it will not be present after node restarts.",
         "operationId": "nodes-get-repositories-metering-info",
         "parameters": [
           {
@@ -24438,20 +23443,16 @@
             }
           }
         },
-        "x-technical-preview": true,
-        "x-available-since": "7.16.0"
+        "x-state": "Technical preview"
       }
     },
     "/_nodes/hot_threads": {
       "get": {
         "tags": [
-          "nodes.hot_threads"
+          "cluster"
         ],
-        "summary": "This API yields a breakdown of the hot threads on each selected node in the cluster",
-        "description": "The output is plain text with a breakdown of each node’s top hot threads.",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/cluster-nodes-hot-threads.html"
-        },
+        "summary": "Get the hot threads for nodes",
+        "description": "Get a breakdown of the hot threads on each selected node in the cluster.\nThe output is plain text with a breakdown of the top hot threads for each node.",
         "operationId": "nodes-hot-threads",
         "parameters": [
           {
@@ -24489,13 +23490,10 @@
     "/_nodes/{node_id}/hot_threads": {
       "get": {
         "tags": [
-          "nodes.hot_threads"
+          "cluster"
         ],
-        "summary": "This API yields a breakdown of the hot threads on each selected node in the cluster",
-        "description": "The output is plain text with a breakdown of each node’s top hot threads.",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/cluster-nodes-hot-threads.html"
-        },
+        "summary": "Get the hot threads for nodes",
+        "description": "Get a breakdown of the hot threads on each selected node in the cluster.\nThe output is plain text with a breakdown of the top hot threads for each node.",
         "operationId": "nodes-hot-threads-1",
         "parameters": [
           {
@@ -24536,12 +23534,10 @@
     "/_nodes": {
       "get": {
         "tags": [
-          "nodes.info"
+          "cluster"
         ],
-        "summary": "Returns cluster nodes information",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/cluster-nodes-info.html"
-        },
+        "summary": "Get node information",
+        "description": "By default, the API returns all attributes and core settings for cluster nodes.",
         "operationId": "nodes-info",
         "parameters": [
           {
@@ -24559,18 +23555,16 @@
             "$ref": "#/components/responses/nodes.info#200"
           }
         },
-        "x-available-since": "1.3.0"
+        "x-state": "Added in 1.3.0"
       }
     },
     "/_nodes/{node_id}": {
       "get": {
         "tags": [
-          "nodes.info"
+          "cluster"
         ],
-        "summary": "Returns cluster nodes information",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/cluster-nodes-info.html"
-        },
+        "summary": "Get node information",
+        "description": "By default, the API returns all attributes and core settings for cluster nodes.",
         "operationId": "nodes-info-1",
         "parameters": [
           {
@@ -24591,18 +23585,16 @@
             "$ref": "#/components/responses/nodes.info#200"
           }
         },
-        "x-available-since": "1.3.0"
+        "x-state": "Added in 1.3.0"
       }
     },
     "/_nodes/{metric}": {
       "get": {
         "tags": [
-          "nodes.info"
+          "cluster"
         ],
-        "summary": "Returns cluster nodes information",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/cluster-nodes-info.html"
-        },
+        "summary": "Get node information",
+        "description": "By default, the API returns all attributes and core settings for cluster nodes.",
         "operationId": "nodes-info-2",
         "parameters": [
           {
@@ -24623,18 +23615,16 @@
             "$ref": "#/components/responses/nodes.info#200"
           }
         },
-        "x-available-since": "1.3.0"
+        "x-state": "Added in 1.3.0"
       }
     },
     "/_nodes/{node_id}/{metric}": {
       "get": {
         "tags": [
-          "nodes.info"
+          "cluster"
         ],
-        "summary": "Returns cluster nodes information",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/cluster-nodes-info.html"
-        },
+        "summary": "Get node information",
+        "description": "By default, the API returns all attributes and core settings for cluster nodes.",
         "operationId": "nodes-info-3",
         "parameters": [
           {
@@ -24658,18 +23648,16 @@
             "$ref": "#/components/responses/nodes.info#200"
           }
         },
-        "x-available-since": "1.3.0"
+        "x-state": "Added in 1.3.0"
       }
     },
     "/_nodes/reload_secure_settings": {
       "post": {
         "tags": [
-          "nodes.reload_secure_settings"
+          "cluster"
         ],
-        "summary": "Reloads the keystore on nodes in the cluster",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/master/secure-settings.html#reloadable-secure-settings"
-        },
+        "summary": "Reload the keystore on nodes in the cluster",
+        "description": "Secure settings are stored in an on-disk keystore. Certain of these settings are reloadable.\nThat is, you can change them on disk and reload them without restarting any nodes in the cluster.\nWhen you have updated reloadable secure settings in your keystore, you can use this API to reload those settings on each node.\n\nWhen the Elasticsearch keystore is password protected and not simply obfuscated, you must provide the password for the keystore when you reload the secure settings.\nReloading the settings for the whole cluster assumes that the keystores for all nodes are protected with the same password; this method is allowed only when inter-node communications are encrypted.\nAlternatively, you can reload the secure settings on each node by locally accessing the API and passing the node-specific Elasticsearch keystore password.",
         "operationId": "nodes-reload-secure-settings",
         "parameters": [
           {
@@ -24684,18 +23672,16 @@
             "$ref": "#/components/responses/nodes.reload_secure_settings#200"
           }
         },
-        "x-available-since": "6.5.0"
+        "x-state": "Added in 6.5.0"
       }
     },
     "/_nodes/{node_id}/reload_secure_settings": {
       "post": {
         "tags": [
-          "nodes.reload_secure_settings"
+          "cluster"
         ],
-        "summary": "Reloads the keystore on nodes in the cluster",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/master/secure-settings.html#reloadable-secure-settings"
-        },
+        "summary": "Reload the keystore on nodes in the cluster",
+        "description": "Secure settings are stored in an on-disk keystore. Certain of these settings are reloadable.\nThat is, you can change them on disk and reload them without restarting any nodes in the cluster.\nWhen you have updated reloadable secure settings in your keystore, you can use this API to reload those settings on each node.\n\nWhen the Elasticsearch keystore is password protected and not simply obfuscated, you must provide the password for the keystore when you reload the secure settings.\nReloading the settings for the whole cluster assumes that the keystores for all nodes are protected with the same password; this method is allowed only when inter-node communications are encrypted.\nAlternatively, you can reload the secure settings on each node by locally accessing the API and passing the node-specific Elasticsearch keystore password.",
         "operationId": "nodes-reload-secure-settings-1",
         "parameters": [
           {
@@ -24713,18 +23699,16 @@
             "$ref": "#/components/responses/nodes.reload_secure_settings#200"
           }
         },
-        "x-available-since": "6.5.0"
+        "x-state": "Added in 6.5.0"
       }
     },
     "/_nodes/stats": {
       "get": {
         "tags": [
-          "nodes.stats"
+          "cluster"
         ],
-        "summary": "Returns cluster nodes statistics",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/cluster-nodes-stats.html"
-        },
+        "summary": "Get node statistics",
+        "description": "Get statistics for nodes in a cluster.\nBy default, all stats are returned. You can limit the returned information by using metrics.",
         "operationId": "nodes-stats",
         "parameters": [
           {
@@ -24768,12 +23752,10 @@
     "/_nodes/{node_id}/stats": {
       "get": {
         "tags": [
-          "nodes.stats"
+          "cluster"
         ],
-        "summary": "Returns cluster nodes statistics",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/cluster-nodes-stats.html"
-        },
+        "summary": "Get node statistics",
+        "description": "Get statistics for nodes in a cluster.\nBy default, all stats are returned. You can limit the returned information by using metrics.",
         "operationId": "nodes-stats-1",
         "parameters": [
           {
@@ -24820,12 +23802,10 @@
     "/_nodes/stats/{metric}": {
       "get": {
         "tags": [
-          "nodes.stats"
+          "cluster"
         ],
-        "summary": "Returns cluster nodes statistics",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/cluster-nodes-stats.html"
-        },
+        "summary": "Get node statistics",
+        "description": "Get statistics for nodes in a cluster.\nBy default, all stats are returned. You can limit the returned information by using metrics.",
         "operationId": "nodes-stats-2",
         "parameters": [
           {
@@ -24872,12 +23852,10 @@
     "/_nodes/{node_id}/stats/{metric}": {
       "get": {
         "tags": [
-          "nodes.stats"
+          "cluster"
         ],
-        "summary": "Returns cluster nodes statistics",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/cluster-nodes-stats.html"
-        },
+        "summary": "Get node statistics",
+        "description": "Get statistics for nodes in a cluster.\nBy default, all stats are returned. You can limit the returned information by using metrics.",
         "operationId": "nodes-stats-3",
         "parameters": [
           {
@@ -24927,12 +23905,10 @@
     "/_nodes/stats/{metric}/{index_metric}": {
       "get": {
         "tags": [
-          "nodes.stats"
+          "cluster"
         ],
-        "summary": "Returns cluster nodes statistics",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/cluster-nodes-stats.html"
-        },
+        "summary": "Get node statistics",
+        "description": "Get statistics for nodes in a cluster.\nBy default, all stats are returned. You can limit the returned information by using metrics.",
         "operationId": "nodes-stats-4",
         "parameters": [
           {
@@ -24982,12 +23958,10 @@
     "/_nodes/{node_id}/stats/{metric}/{index_metric}": {
       "get": {
         "tags": [
-          "nodes.stats"
+          "cluster"
         ],
-        "summary": "Returns cluster nodes statistics",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/cluster-nodes-stats.html"
-        },
+        "summary": "Get node statistics",
+        "description": "Get statistics for nodes in a cluster.\nBy default, all stats are returned. You can limit the returned information by using metrics.",
         "operationId": "nodes-stats-5",
         "parameters": [
           {
@@ -25040,12 +24014,9 @@
     "/_nodes/usage": {
       "get": {
         "tags": [
-          "nodes.usage"
+          "cluster"
         ],
-        "summary": "Returns information on the usage of features",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/cluster-nodes-usage.html"
-        },
+        "summary": "Get feature usage information",
         "operationId": "nodes-usage",
         "parameters": [
           {
@@ -25057,18 +24028,15 @@
             "$ref": "#/components/responses/nodes.usage#200"
           }
         },
-        "x-available-since": "6.0.0"
+        "x-state": "Added in 6.0.0"
       }
     },
     "/_nodes/{node_id}/usage": {
       "get": {
         "tags": [
-          "nodes.usage"
+          "cluster"
         ],
-        "summary": "Returns information on the usage of features",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/cluster-nodes-usage.html"
-        },
+        "summary": "Get feature usage information",
         "operationId": "nodes-usage-1",
         "parameters": [
           {
@@ -25083,18 +24051,15 @@
             "$ref": "#/components/responses/nodes.usage#200"
           }
         },
-        "x-available-since": "6.0.0"
+        "x-state": "Added in 6.0.0"
       }
     },
     "/_nodes/usage/{metric}": {
       "get": {
         "tags": [
-          "nodes.usage"
+          "cluster"
         ],
-        "summary": "Returns information on the usage of features",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/cluster-nodes-usage.html"
-        },
+        "summary": "Get feature usage information",
         "operationId": "nodes-usage-2",
         "parameters": [
           {
@@ -25109,18 +24074,15 @@
             "$ref": "#/components/responses/nodes.usage#200"
           }
         },
-        "x-available-since": "6.0.0"
+        "x-state": "Added in 6.0.0"
       }
     },
     "/_nodes/{node_id}/usage/{metric}": {
       "get": {
         "tags": [
-          "nodes.usage"
+          "cluster"
         ],
-        "summary": "Returns information on the usage of features",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/cluster-nodes-usage.html"
-        },
+        "summary": "Get feature usage information",
         "operationId": "nodes-usage-3",
         "parameters": [
           {
@@ -25138,19 +24100,16 @@
             "$ref": "#/components/responses/nodes.usage#200"
           }
         },
-        "x-available-since": "6.0.0"
+        "x-state": "Added in 6.0.0"
       }
     },
     "/{index}/_pit": {
       "post": {
         "tags": [
-          "open_point_in_time"
+          "search"
         ],
-        "summary": "A search request by default executes against the most recent visible data of the target indices,\n",
-        "description": "which is called point in time. Elasticsearch pit (point in time) is a lightweight view into the\nstate of the data as it existed when initiated. In some cases, it’s preferred to perform multiple\nsearch requests using the same point in time. For example, if refreshes happen between\n`search_after` requests, then the results of those requests might not be consistent as changes happening\nbetween searches are only visible to the more recent point in time.",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/point-in-time-api.html"
-        },
+        "summary": "Open a point in time",
+        "description": "A search request by default runs against the most recent visible data of the target indices,\nwhich is called point in time. Elasticsearch pit (point in time) is a lightweight view into the\nstate of the data as it existed when initiated. In some cases, it’s preferred to perform multiple\nsearch requests using the same point in time. For example, if refreshes happen between\n`search_after` requests, then the results of those requests might not be consistent as changes happening\nbetween searches are only visible to the more recent point in time.\n\nA point in time must be opened explicitly before being used in search requests.\nThe `keep_alive` parameter tells Elasticsearch how long it should persist.",
         "operationId": "open-point-in-time",
         "parameters": [
           {
@@ -25214,6 +24173,16 @@
               "$ref": "#/components/schemas/_types:ExpandWildcards"
             },
             "style": "form"
+          },
+          {
+            "in": "query",
+            "name": "allow_partial_search_results",
+            "description": "If `false`, creating a point in time request when a shard is missing or unavailable will throw an exception.\nIf `true`, the point in time will contain all the shards that are available at the time of the request.",
+            "deprecated": false,
+            "schema": {
+              "type": "boolean"
+            },
+            "style": "form"
           }
         ],
         "requestBody": {
@@ -25254,19 +24223,16 @@
             }
           }
         },
-        "x-available-since": "7.10.0"
+        "x-state": "Added in 7.10.0"
       }
     },
     "/_scripts/{id}/{context}": {
       "put": {
         "tags": [
-          "put_script"
+          "script"
         ],
         "summary": "Create or update a script or search template",
         "description": "Creates or updates a stored script or search template.",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/master/modules-scripting.html"
-        },
         "operationId": "put-script-2",
         "parameters": [
           {
@@ -25293,13 +24259,10 @@
       },
       "post": {
         "tags": [
-          "put_script"
+          "script"
         ],
         "summary": "Create or update a script or search template",
         "description": "Creates or updates a stored script or search template.",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/master/modules-scripting.html"
-        },
         "operationId": "put-script-3",
         "parameters": [
           {
@@ -25328,11 +24291,12 @@
     "/_query_rules/{ruleset_id}/_rule/{rule_id}": {
       "get": {
         "tags": [
-          "query_rules.get_rule"
+          "query_rules"
         ],
-        "summary": "Returns the details about a query rule within a query ruleset",
+        "summary": "Get a query rule",
+        "description": "Get details about a query rule within a query ruleset.",
         "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/master/get-query-rule.html"
+          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/search-using-query-rules.html"
         },
         "operationId": "query-rules-get-rule",
         "parameters": [
@@ -25371,16 +24335,14 @@
             }
           }
         },
-        "x-available-since": "8.15.0"
+        "x-state": "Added in 8.15.0"
       },
       "put": {
         "tags": [
-          "query_rules.put_rule"
+          "query_rules"
         ],
-        "summary": "Creates or updates a query rule within a query ruleset",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/master/put-query-rule.html"
-        },
+        "summary": "Create or update a query rule",
+        "description": "Create or update a query rule within a query ruleset.",
         "operationId": "query-rules-put-rule",
         "parameters": [
           {
@@ -25465,16 +24427,14 @@
             }
           }
         },
-        "x-available-since": "8.15.0"
+        "x-state": "Added in 8.15.0"
       },
       "delete": {
         "tags": [
-          "query_rules.delete_rule"
+          "query_rules"
         ],
-        "summary": "Deletes a query rule within a query ruleset",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/master/delete-query-rule.html"
-        },
+        "summary": "Delete a query rule",
+        "description": "Delete a query rule within a query ruleset.",
         "operationId": "query-rules-delete-rule",
         "parameters": [
           {
@@ -25512,18 +24472,16 @@
             }
           }
         },
-        "x-available-since": "8.15.0"
+        "x-state": "Added in 8.15.0"
       }
     },
     "/_query_rules/{ruleset_id}": {
       "get": {
         "tags": [
-          "query_rules.get_ruleset"
+          "query_rules"
         ],
-        "summary": "Returns the details about a query ruleset",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/master/get-query-ruleset.html"
-        },
+        "summary": "Get a query ruleset",
+        "description": "Get details about a query ruleset.",
         "operationId": "query-rules-get-ruleset",
         "parameters": [
           {
@@ -25550,15 +24508,15 @@
             }
           }
         },
-        "x-available-since": "8.10.0"
+        "x-state": "Added in 8.10.0"
       },
       "put": {
         "tags": [
-          "query_rules.put_ruleset"
+          "query_rules"
         ],
-        "summary": "Creates or updates a query ruleset",
+        "summary": "Create or update a query ruleset",
         "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/master/put-query-ruleset.html"
+          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/search-using-query-rules.html"
         },
         "operationId": "query-rules-put-ruleset",
         "parameters": [
@@ -25622,16 +24580,13 @@
             }
           }
         },
-        "x-available-since": "8.10.0"
+        "x-state": "Added in 8.10.0"
       },
       "delete": {
         "tags": [
-          "query_rules.delete_ruleset"
+          "query_rules"
         ],
-        "summary": "Deletes a query ruleset",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/master/delete-query-ruleset.html"
-        },
+        "summary": "Delete a query ruleset",
         "operationId": "query-rules-delete-ruleset",
         "parameters": [
           {
@@ -25658,18 +24613,16 @@
             }
           }
         },
-        "x-available-since": "8.10.0"
+        "x-state": "Added in 8.10.0"
       }
     },
     "/_query_rules": {
       "get": {
         "tags": [
-          "query_rules.list_rulesets"
+          "query_rules"
         ],
-        "summary": "Returns summarized information about existing query rulesets",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/master/list-query-rulesets.html"
-        },
+        "summary": "Get all query rulesets",
+        "description": "Get summarized information about the query rulesets.",
         "operationId": "query-rules-list-rulesets",
         "parameters": [
           {
@@ -25720,52 +24673,89 @@
             }
           }
         },
-        "x-available-since": "8.10.0"
+        "x-state": "Added in 8.10.0"
       }
     },
-    "/_rank_eval": {
-      "get": {
+    "/_query_rules/{ruleset_id}/_test": {
+      "post": {
         "tags": [
-          "rank_eval"
+          "query_rules"
         ],
-        "summary": "Enables you to evaluate the quality of ranked search results over a set of typical search queries",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/master/search-rank-eval.html"
-        },
-        "operationId": "rank-eval",
+        "summary": "Test a query ruleset",
+        "description": "Evaluate match criteria against a query ruleset to identify the rules that would match that criteria.",
+        "operationId": "query-rules-test",
         "parameters": [
           {
-            "$ref": "#/components/parameters/rank_eval#allow_no_indices"
-          },
-          {
-            "$ref": "#/components/parameters/rank_eval#expand_wildcards"
-          },
-          {
-            "$ref": "#/components/parameters/rank_eval#ignore_unavailable"
-          },
-          {
-            "$ref": "#/components/parameters/rank_eval#search_type"
+            "in": "path",
+            "name": "ruleset_id",
+            "description": "The unique identifier of the query ruleset to be created or updated",
+            "required": true,
+            "deprecated": false,
+            "schema": {
+              "$ref": "#/components/schemas/_types:Id"
+            },
+            "style": "simple"
           }
         ],
         "requestBody": {
-          "$ref": "#/components/requestBodies/rank_eval"
+          "content": {
+            "application/json": {
+              "schema": {
+                "type": "object",
+                "properties": {
+                  "match_criteria": {
+                    "type": "object",
+                    "additionalProperties": {
+                      "type": "object"
+                    }
+                  }
+                },
+                "required": [
+                  "match_criteria"
+                ]
+              }
+            }
+          },
+          "required": true
         },
         "responses": {
           "200": {
-            "$ref": "#/components/responses/rank_eval#200"
+            "description": "",
+            "content": {
+              "application/json": {
+                "schema": {
+                  "type": "object",
+                  "properties": {
+                    "total_matched_rules": {
+                      "type": "number"
+                    },
+                    "matched_rules": {
+                      "type": "array",
+                      "items": {
+                        "$ref": "#/components/schemas/query_rules.test:QueryRulesetMatchedRule"
+                      }
+                    }
+                  },
+                  "required": [
+                    "total_matched_rules",
+                    "matched_rules"
+                  ]
+                }
+              }
+            }
           }
         },
-        "x-available-since": "6.2.0"
-      },
-      "post": {
+        "x-state": "Added in 8.10.0"
+      }
+    },
+    "/_rank_eval": {
+      "get": {
         "tags": [
-          "rank_eval"
+          "search"
         ],
-        "summary": "Enables you to evaluate the quality of ranked search results over a set of typical search queries",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/master/search-rank-eval.html"
-        },
-        "operationId": "rank-eval-1",
+        "summary": "Evaluate ranked search results",
+        "description": "Evaluate the quality of ranked search results over a set of typical search queries.",
+        "operationId": "rank-eval",
         "parameters": [
           {
             "$ref": "#/components/parameters/rank_eval#allow_no_indices"
@@ -25788,23 +24778,16 @@
             "$ref": "#/components/responses/rank_eval#200"
           }
         },
-        "x-available-since": "6.2.0"
-      }
-    },
-    "/{index}/_rank_eval": {
-      "get": {
+        "x-state": "Added in 6.2.0"
+      },
+      "post": {
         "tags": [
-          "rank_eval"
+          "search"
         ],
-        "summary": "Enables you to evaluate the quality of ranked search results over a set of typical search queries",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/master/search-rank-eval.html"
-        },
-        "operationId": "rank-eval-2",
+        "summary": "Evaluate ranked search results",
+        "description": "Evaluate the quality of ranked search results over a set of typical search queries.",
+        "operationId": "rank-eval-1",
         "parameters": [
-          {
-            "$ref": "#/components/parameters/rank_eval#index"
-          },
           {
             "$ref": "#/components/parameters/rank_eval#allow_no_indices"
           },
@@ -25826,17 +24809,17 @@
             "$ref": "#/components/responses/rank_eval#200"
           }
         },
-        "x-available-since": "6.2.0"
-      },
-      "post": {
+        "x-state": "Added in 6.2.0"
+      }
+    },
+    "/{index}/_rank_eval": {
+      "get": {
         "tags": [
-          "rank_eval"
+          "search"
         ],
-        "summary": "Enables you to evaluate the quality of ranked search results over a set of typical search queries",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/master/search-rank-eval.html"
-        },
-        "operationId": "rank-eval-3",
+        "summary": "Evaluate ranked search results",
+        "description": "Evaluate the quality of ranked search results over a set of typical search queries.",
+        "operationId": "rank-eval-2",
         "parameters": [
           {
             "$ref": "#/components/parameters/rank_eval#index"
@@ -25862,19 +24845,50 @@
             "$ref": "#/components/responses/rank_eval#200"
           }
         },
-        "x-available-since": "6.2.0"
+        "x-state": "Added in 6.2.0"
+      },
+      "post": {
+        "tags": [
+          "search"
+        ],
+        "summary": "Evaluate ranked search results",
+        "description": "Evaluate the quality of ranked search results over a set of typical search queries.",
+        "operationId": "rank-eval-3",
+        "parameters": [
+          {
+            "$ref": "#/components/parameters/rank_eval#index"
+          },
+          {
+            "$ref": "#/components/parameters/rank_eval#allow_no_indices"
+          },
+          {
+            "$ref": "#/components/parameters/rank_eval#expand_wildcards"
+          },
+          {
+            "$ref": "#/components/parameters/rank_eval#ignore_unavailable"
+          },
+          {
+            "$ref": "#/components/parameters/rank_eval#search_type"
+          }
+        ],
+        "requestBody": {
+          "$ref": "#/components/requestBodies/rank_eval"
+        },
+        "responses": {
+          "200": {
+            "$ref": "#/components/responses/rank_eval#200"
+          }
+        },
+        "x-state": "Added in 6.2.0"
       }
     },
     "/_reindex": {
       "post": {
         "tags": [
-          "reindex"
+          "document"
         ],
         "summary": "Reindex documents",
         "description": "Copies documents from a source to a destination. The source can be any existing index, alias, or data stream. The destination must differ from the source. For example, you cannot reindex a data stream into itself.",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/master/docs-reindex.html"
-        },
         "operationId": "reindex",
         "parameters": [
           {
@@ -26058,18 +25072,16 @@
             }
           }
         },
-        "x-available-since": "2.3.0"
+        "x-state": "Added in 2.3.0"
       }
     },
     "/_reindex/{task_id}/_rethrottle": {
       "post": {
         "tags": [
-          "reindex_rethrottle"
+          "document"
         ],
-        "summary": "Copies documents from a source to a destination",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/master/docs-reindex.html"
-        },
+        "summary": "Throttle a reindex operation",
+        "description": "Change the number of requests per second for a particular reindex operation.",
         "operationId": "reindex-rethrottle",
         "parameters": [
           {
@@ -26117,18 +25129,16 @@
             }
           }
         },
-        "x-available-since": "2.4.0"
+        "x-state": "Added in 2.4.0"
       }
     },
     "/_render/template": {
       "get": {
         "tags": [
-          "render_search_template"
+          "search"
         ],
-        "summary": "Renders a search template as a search request body",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/render-search-template-api.html"
-        },
+        "summary": "Render a search template",
+        "description": "Render a search template as a search request body.",
         "operationId": "render-search-template",
         "requestBody": {
           "$ref": "#/components/requestBodies/render_search_template"
@@ -26141,12 +25151,10 @@
       },
       "post": {
         "tags": [
-          "render_search_template"
+          "search"
         ],
-        "summary": "Renders a search template as a search request body",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/render-search-template-api.html"
-        },
+        "summary": "Render a search template",
+        "description": "Render a search template as a search request body.",
         "operationId": "render-search-template-1",
         "requestBody": {
           "$ref": "#/components/requestBodies/render_search_template"
@@ -26161,12 +25169,10 @@
     "/_render/template/{id}": {
       "get": {
         "tags": [
-          "render_search_template"
+          "search"
         ],
-        "summary": "Renders a search template as a search request body",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/render-search-template-api.html"
-        },
+        "summary": "Render a search template",
+        "description": "Render a search template as a search request body.",
         "operationId": "render-search-template-2",
         "parameters": [
           {
@@ -26184,12 +25190,10 @@
       },
       "post": {
         "tags": [
-          "render_search_template"
+          "search"
         ],
-        "summary": "Renders a search template as a search request body",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/render-search-template-api.html"
-        },
+        "summary": "Render a search template",
+        "description": "Render a search template as a search request body.",
         "operationId": "render-search-template-3",
         "parameters": [
           {
@@ -26209,12 +25213,9 @@
     "/_rollup/job/{id}": {
       "get": {
         "tags": [
-          "rollup.get_jobs"
+          "rollup"
         ],
         "summary": "Retrieves the configuration, stats, and status of rollup jobs",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/master/rollup-get-job.html"
-        },
         "operationId": "rollup-get-jobs",
         "parameters": [
           {
@@ -26226,17 +25227,13 @@
             "$ref": "#/components/responses/rollup.get_jobs#200"
           }
         },
-        "x-available-since": "6.3.0",
-        "x-technical-preview": true
+        "x-state": "Technical preview"
       },
       "put": {
         "tags": [
-          "rollup.put_job"
+          "rollup"
         ],
         "summary": "Creates a rollup job",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/master/rollup-put-job.html"
-        },
         "operationId": "rollup-put-job",
         "parameters": [
           {
@@ -26313,17 +25310,13 @@
             }
           }
         },
-        "x-available-since": "6.3.0",
-        "x-technical-preview": true
+        "x-state": "Technical preview"
       },
       "delete": {
         "tags": [
-          "rollup.delete_job"
+          "rollup"
         ],
         "summary": "Deletes an existing rollup job",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/master/rollup-delete-job.html"
-        },
         "operationId": "rollup-delete-job",
         "parameters": [
           {
@@ -26364,38 +25357,30 @@
             }
           }
         },
-        "x-available-since": "6.3.0",
-        "x-technical-preview": true
+        "x-state": "Technical preview"
       }
     },
     "/_rollup/job": {
       "get": {
         "tags": [
-          "rollup.get_jobs"
+          "rollup"
         ],
         "summary": "Retrieves the configuration, stats, and status of rollup jobs",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/master/rollup-get-job.html"
-        },
         "operationId": "rollup-get-jobs-1",
         "responses": {
           "200": {
             "$ref": "#/components/responses/rollup.get_jobs#200"
           }
         },
-        "x-available-since": "6.3.0",
-        "x-technical-preview": true
+        "x-state": "Technical preview"
       }
     },
     "/_rollup/data/{id}": {
       "get": {
         "tags": [
-          "rollup.get_rollup_caps"
+          "rollup"
         ],
         "summary": "Returns the capabilities of any rollup jobs that have been configured for a specific index or index pattern",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/master/rollup-get-rollup-caps.html"
-        },
         "operationId": "rollup-get-rollup-caps",
         "parameters": [
           {
@@ -26407,38 +25392,30 @@
             "$ref": "#/components/responses/rollup.get_rollup_caps#200"
           }
         },
-        "x-available-since": "6.3.0",
-        "x-technical-preview": true
+        "x-state": "Technical preview"
       }
     },
     "/_rollup/data": {
       "get": {
         "tags": [
-          "rollup.get_rollup_caps"
+          "rollup"
         ],
         "summary": "Returns the capabilities of any rollup jobs that have been configured for a specific index or index pattern",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/master/rollup-get-rollup-caps.html"
-        },
         "operationId": "rollup-get-rollup-caps-1",
         "responses": {
           "200": {
             "$ref": "#/components/responses/rollup.get_rollup_caps#200"
           }
         },
-        "x-available-since": "6.3.0",
-        "x-technical-preview": true
+        "x-state": "Technical preview"
       }
     },
     "/{index}/_rollup/data": {
       "get": {
         "tags": [
-          "rollup.get_rollup_index_caps"
+          "rollup"
         ],
         "summary": "Returns the rollup capabilities of all jobs inside of a rollup index (for example, the index where rollup data is stored)",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/master/rollup-get-rollup-index-caps.html"
-        },
         "operationId": "rollup-get-rollup-index-caps",
         "parameters": [
           {
@@ -26468,19 +25445,15 @@
             }
           }
         },
-        "x-available-since": "6.4.0",
-        "x-technical-preview": true
+        "x-state": "Technical preview"
       }
     },
     "/{index}/_rollup_search": {
       "get": {
         "tags": [
-          "rollup.rollup_search"
+          "rollup"
         ],
         "summary": "Enables searching rolled-up data using the standard Query DSL",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/master/rollup-search.html"
-        },
         "operationId": "rollup-rollup-search",
         "parameters": [
           {
@@ -26501,17 +25474,13 @@
             "$ref": "#/components/responses/rollup.rollup_search#200"
           }
         },
-        "x-available-since": "6.3.0",
-        "x-technical-preview": true
+        "x-state": "Technical preview"
       },
       "post": {
         "tags": [
-          "rollup.rollup_search"
+          "rollup"
         ],
         "summary": "Enables searching rolled-up data using the standard Query DSL",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/master/rollup-search.html"
-        },
         "operationId": "rollup-rollup-search-1",
         "parameters": [
           {
@@ -26532,19 +25501,15 @@
             "$ref": "#/components/responses/rollup.rollup_search#200"
           }
         },
-        "x-available-since": "6.3.0",
-        "x-technical-preview": true
+        "x-state": "Technical preview"
       }
     },
     "/_rollup/job/{id}/_start": {
       "post": {
         "tags": [
-          "rollup.start_job"
+          "rollup"
         ],
         "summary": "Starts an existing, stopped rollup job",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/master/rollup-start-job.html"
-        },
         "operationId": "rollup-start-job",
         "parameters": [
           {
@@ -26579,19 +25544,15 @@
             }
           }
         },
-        "x-available-since": "6.3.0",
-        "x-technical-preview": true
+        "x-state": "Technical preview"
       }
     },
     "/_rollup/job/{id}/_stop": {
       "post": {
         "tags": [
-          "rollup.stop_job"
+          "rollup"
         ],
         "summary": "Stops an existing, started rollup job",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/master/rollup-stop-job.html"
-        },
         "operationId": "rollup-stop-job",
         "parameters": [
           {
@@ -26646,20 +25607,16 @@
             }
           }
         },
-        "x-available-since": "6.3.0",
-        "x-technical-preview": true
+        "x-state": "Technical preview"
       }
     },
     "/_scripts/painless/_execute": {
       "get": {
         "tags": [
-          "scripts_painless_execute"
+          "script"
         ],
         "summary": "Run a script",
         "description": "Runs a script and returns a result.",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/painless/master/painless-execute-api.html"
-        },
         "operationId": "scripts-painless-execute",
         "requestBody": {
           "$ref": "#/components/requestBodies/scripts_painless_execute"
@@ -26669,18 +25626,14 @@
             "$ref": "#/components/responses/scripts_painless_execute#200"
           }
         },
-        "x-technical-preview": true,
-        "x-available-since": "6.3.0"
+        "x-state": "Technical preview"
       },
       "post": {
         "tags": [
-          "scripts_painless_execute"
+          "script"
         ],
         "summary": "Run a script",
         "description": "Runs a script and returns a result.",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/painless/master/painless-execute-api.html"
-        },
         "operationId": "scripts-painless-execute-1",
         "requestBody": {
           "$ref": "#/components/requestBodies/scripts_painless_execute"
@@ -26690,8 +25643,7 @@
             "$ref": "#/components/responses/scripts_painless_execute#200"
           }
         },
-        "x-technical-preview": true,
-        "x-available-since": "6.3.0"
+        "x-state": "Technical preview"
       }
     },
     "/_search": {
@@ -26699,11 +25651,8 @@
         "tags": [
           "search"
         ],
-        "summary": "Returns search hits that match the query defined in the request",
-        "description": "You can provide search queries using the `q` query string parameter or the request body.\nIf both are specified, only the query parameter is used.",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/master/search-search.html"
-        },
+        "summary": "Run a search",
+        "description": "Get search hits that match the query defined in the request.\nYou can provide search queries using the `q` query string parameter or the request body.\nIf both are specified, only the query parameter is used.",
         "operationId": "search",
         "parameters": [
           {
@@ -26855,11 +25804,8 @@
         "tags": [
           "search"
         ],
-        "summary": "Returns search hits that match the query defined in the request",
-        "description": "You can provide search queries using the `q` query string parameter or the request body.\nIf both are specified, only the query parameter is used.",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/master/search-search.html"
-        },
+        "summary": "Run a search",
+        "description": "Get search hits that match the query defined in the request.\nYou can provide search queries using the `q` query string parameter or the request body.\nIf both are specified, only the query parameter is used.",
         "operationId": "search-1",
         "parameters": [
           {
@@ -27013,11 +25959,8 @@
         "tags": [
           "search"
         ],
-        "summary": "Returns search hits that match the query defined in the request",
-        "description": "You can provide search queries using the `q` query string parameter or the request body.\nIf both are specified, only the query parameter is used.",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/master/search-search.html"
-        },
+        "summary": "Run a search",
+        "description": "Get search hits that match the query defined in the request.\nYou can provide search queries using the `q` query string parameter or the request body.\nIf both are specified, only the query parameter is used.",
         "operationId": "search-2",
         "parameters": [
           {
@@ -27172,11 +26115,8 @@
         "tags": [
           "search"
         ],
-        "summary": "Returns search hits that match the query defined in the request",
-        "description": "You can provide search queries using the `q` query string parameter or the request body.\nIf both are specified, only the query parameter is used.",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/master/search-search.html"
-        },
+        "summary": "Run a search",
+        "description": "Get search hits that match the query defined in the request.\nYou can provide search queries using the `q` query string parameter or the request body.\nIf both are specified, only the query parameter is used.",
         "operationId": "search-3",
         "parameters": [
           {
@@ -27331,12 +26271,9 @@
     "/_application/search_application/{name}": {
       "get": {
         "tags": [
-          "search_application.get"
+          "search_application"
         ],
-        "summary": "Returns the details about a search application",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/master/get-search-application.html"
-        },
+        "summary": "Get search application details",
         "operationId": "search-application-get",
         "parameters": [
           {
@@ -27363,17 +26300,13 @@
             }
           }
         },
-        "x-beta": true,
-        "x-available-since": "8.8.0"
+        "x-beta": true
       },
       "put": {
         "tags": [
-          "search_application.put"
+          "search_application"
         ],
-        "summary": "Creates or updates a search application",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/master/put-search-application.html"
-        },
+        "summary": "Create or update a search application",
         "operationId": "search-application-put",
         "parameters": [
           {
@@ -27428,17 +26361,14 @@
             }
           }
         },
-        "x-beta": true,
-        "x-available-since": "8.8.0"
+        "x-beta": true
       },
       "delete": {
         "tags": [
-          "search_application.delete"
+          "search_application"
         ],
-        "summary": "Deletes a search application",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/master/delete-search-application.html"
-        },
+        "summary": "Delete a search application",
+        "description": "Remove a search application and its associated alias. Indices attached to the search application are not removed.",
         "operationId": "search-application-delete",
         "parameters": [
           {
@@ -27465,19 +26395,15 @@
             }
           }
         },
-        "x-beta": true,
-        "x-available-since": "8.8.0"
+        "x-beta": true
       }
     },
     "/_application/analytics/{name}": {
       "get": {
         "tags": [
-          "search_application.get_behavioral_analytics"
+          "analytics"
         ],
-        "summary": "Returns the existing behavioral analytics collections",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/master/list-analytics-collection.html"
-        },
+        "summary": "Get behavioral analytics collections",
         "operationId": "search-application-get-behavioral-analytics-1",
         "parameters": [
           {
@@ -27489,17 +26415,13 @@
             "$ref": "#/components/responses/search_application.get_behavioral_analytics#200"
           }
         },
-        "x-technical-preview": true,
-        "x-available-since": "8.8.0"
+        "x-state": "Technical preview"
       },
       "put": {
         "tags": [
-          "search_application.put_behavioral_analytics"
+          "analytics"
         ],
-        "summary": "Creates a behavioral analytics collection",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/master/put-analytics-collection.html"
-        },
+        "summary": "Create a behavioral analytics collection",
         "operationId": "search-application-put-behavioral-analytics",
         "parameters": [
           {
@@ -27526,17 +26448,14 @@
             }
           }
         },
-        "x-technical-preview": true,
-        "x-available-since": "8.8.0"
+        "x-state": "Technical preview"
       },
       "delete": {
         "tags": [
-          "search_application.delete_behavioral_analytics"
+          "analytics"
         ],
         "summary": "Delete a behavioral analytics collection",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/master/delete-analytics-collection.html"
-        },
+        "description": "The associated data stream is also deleted.",
         "operationId": "search-application-delete-behavioral-analytics",
         "parameters": [
           {
@@ -27563,38 +26482,30 @@
             }
           }
         },
-        "x-technical-preview": true,
-        "x-available-since": "8.8.0"
+        "x-state": "Technical preview"
       }
     },
     "/_application/analytics": {
       "get": {
         "tags": [
-          "search_application.get_behavioral_analytics"
+          "analytics"
         ],
-        "summary": "Returns the existing behavioral analytics collections",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/master/list-analytics-collection.html"
-        },
+        "summary": "Get behavioral analytics collections",
         "operationId": "search-application-get-behavioral-analytics",
         "responses": {
           "200": {
             "$ref": "#/components/responses/search_application.get_behavioral_analytics#200"
           }
         },
-        "x-technical-preview": true,
-        "x-available-since": "8.8.0"
+        "x-state": "Technical preview"
       }
     },
     "/_application/search_application": {
       "get": {
         "tags": [
-          "search_application.list"
+          "search_application"
         ],
         "summary": "Returns the existing search applications",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/master/list-search-applications.html"
-        },
         "operationId": "search-application-list",
         "parameters": [
           {
@@ -27655,19 +26566,16 @@
             }
           }
         },
-        "x-beta": true,
-        "x-available-since": "8.8.0"
+        "x-beta": true
       }
     },
     "/_application/search_application/{name}/_search": {
       "get": {
         "tags": [
-          "search_application.search"
+          "search_application"
         ],
-        "summary": "Perform a search against a search application",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/master/search-application-search.html"
-        },
+        "summary": "Run a search application search",
+        "description": "Generate and run an Elasticsearch query that uses the specified query parameteter and the search template associated with the search application or default template.\nUnspecified template parameters are assigned their default values if applicable.",
         "operationId": "search-application-search",
         "parameters": [
           {
@@ -27685,17 +26593,14 @@
             "$ref": "#/components/responses/search_application.search#200"
           }
         },
-        "x-beta": true,
-        "x-available-since": "8.8.0"
+        "x-beta": true
       },
       "post": {
         "tags": [
-          "search_application.search"
+          "search_application"
         ],
-        "summary": "Perform a search against a search application",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/master/search-application-search.html"
-        },
+        "summary": "Run a search application search",
+        "description": "Generate and run an Elasticsearch query that uses the specified query parameteter and the search template associated with the search application or default template.\nUnspecified template parameters are assigned their default values if applicable.",
         "operationId": "search-application-search-1",
         "parameters": [
           {
@@ -27713,20 +26618,16 @@
             "$ref": "#/components/responses/search_application.search#200"
           }
         },
-        "x-beta": true,
-        "x-available-since": "8.8.0"
+        "x-beta": true
       }
     },
     "/{index}/_mvt/{field}/{zoom}/{x}/{y}": {
       "get": {
         "tags": [
-          "search_mvt"
+          "search"
         ],
         "summary": "Search a vector tile",
-        "description": "Searches a vector tile for geospatial values.",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/master/search-vector-tile-api.html"
-        },
+        "description": "Search a vector tile for geospatial values.",
         "operationId": "search-mvt-1",
         "parameters": [
           {
@@ -27774,17 +26675,14 @@
             "$ref": "#/components/responses/search_mvt#200"
           }
         },
-        "x-available-since": "7.15.0"
+        "x-state": "Added in 7.15.0"
       },
       "post": {
         "tags": [
-          "search_mvt"
+          "search"
         ],
         "summary": "Search a vector tile",
-        "description": "Searches a vector tile for geospatial values.",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/master/search-vector-tile-api.html"
-        },
+        "description": "Search a vector tile for geospatial values.",
         "operationId": "search-mvt",
         "parameters": [
           {
@@ -27832,18 +26730,16 @@
             "$ref": "#/components/responses/search_mvt#200"
           }
         },
-        "x-available-since": "7.15.0"
+        "x-state": "Added in 7.15.0"
       }
     },
     "/_search_shards": {
       "get": {
         "tags": [
-          "search_shards"
+          "search"
         ],
-        "summary": "Returns information about the indices and shards that a search request would be executed against",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/master/search-shards.html"
-        },
+        "summary": "Get the search shards",
+        "description": "Get the indices and shards that a search request would be run against.\nThis information can be useful for working out issues or planning optimizations with routing and shard preferences.\nWhen filtered aliases are used, the filter is returned as part of the indices section.",
         "operationId": "search-shards",
         "parameters": [
           {
@@ -27873,12 +26769,10 @@
       },
       "post": {
         "tags": [
-          "search_shards"
+          "search"
         ],
-        "summary": "Returns information about the indices and shards that a search request would be executed against",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/master/search-shards.html"
-        },
+        "summary": "Get the search shards",
+        "description": "Get the indices and shards that a search request would be run against.\nThis information can be useful for working out issues or planning optimizations with routing and shard preferences.\nWhen filtered aliases are used, the filter is returned as part of the indices section.",
         "operationId": "search-shards-1",
         "parameters": [
           {
@@ -27910,12 +26804,10 @@
     "/{index}/_search_shards": {
       "get": {
         "tags": [
-          "search_shards"
+          "search"
         ],
-        "summary": "Returns information about the indices and shards that a search request would be executed against",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/master/search-shards.html"
-        },
+        "summary": "Get the search shards",
+        "description": "Get the indices and shards that a search request would be run against.\nThis information can be useful for working out issues or planning optimizations with routing and shard preferences.\nWhen filtered aliases are used, the filter is returned as part of the indices section.",
         "operationId": "search-shards-2",
         "parameters": [
           {
@@ -27948,12 +26840,10 @@
       },
       "post": {
         "tags": [
-          "search_shards"
+          "search"
         ],
-        "summary": "Returns information about the indices and shards that a search request would be executed against",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/master/search-shards.html"
-        },
+        "summary": "Get the search shards",
+        "description": "Get the indices and shards that a search request would be run against.\nThis information can be useful for working out issues or planning optimizations with routing and shard preferences.\nWhen filtered aliases are used, the filter is returned as part of the indices section.",
         "operationId": "search-shards-3",
         "parameters": [
           {
@@ -27988,9 +26878,9 @@
     "/_search/template": {
       "get": {
         "tags": [
-          "search_template"
+          "search"
         ],
-        "summary": "Runs a search with a search template",
+        "summary": "Run a search with a search template",
         "externalDocs": {
           "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/search-template.html"
         },
@@ -28044,13 +26934,13 @@
             "$ref": "#/components/responses/search_template#200"
           }
         },
-        "x-available-since": "2.0.0"
+        "x-state": "Added in 2.0.0"
       },
       "post": {
         "tags": [
-          "search_template"
+          "search"
         ],
-        "summary": "Runs a search with a search template",
+        "summary": "Run a search with a search template",
         "externalDocs": {
           "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/search-template.html"
         },
@@ -28104,15 +26994,15 @@
             "$ref": "#/components/responses/search_template#200"
           }
         },
-        "x-available-since": "2.0.0"
+        "x-state": "Added in 2.0.0"
       }
     },
     "/{index}/_search/template": {
       "get": {
         "tags": [
-          "search_template"
+          "search"
         ],
-        "summary": "Runs a search with a search template",
+        "summary": "Run a search with a search template",
         "externalDocs": {
           "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/search-template.html"
         },
@@ -28169,13 +27059,13 @@
             "$ref": "#/components/responses/search_template#200"
           }
         },
-        "x-available-since": "2.0.0"
+        "x-state": "Added in 2.0.0"
       },
       "post": {
         "tags": [
-          "search_template"
+          "search"
         ],
-        "summary": "Runs a search with a search template",
+        "summary": "Run a search with a search template",
         "externalDocs": {
           "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/search-template.html"
         },
@@ -28232,18 +27122,15 @@
             "$ref": "#/components/responses/search_template#200"
           }
         },
-        "x-available-since": "2.0.0"
+        "x-state": "Added in 2.0.0"
       }
     },
     "/_searchable_snapshots/cache/stats": {
       "get": {
         "tags": [
-          "searchable_snapshots.cache_stats"
+          "searchable_snapshots"
         ],
         "summary": "Retrieve node-level cache statistics about searchable snapshots",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/master/searchable-snapshots-apis.html"
-        },
         "operationId": "searchable-snapshots-cache-stats",
         "parameters": [
           {
@@ -28255,19 +27142,15 @@
             "$ref": "#/components/responses/searchable_snapshots.cache_stats#200"
           }
         },
-        "x-available-since": "7.13.0",
-        "x-technical-preview": true
+        "x-state": "Technical preview"
       }
     },
     "/_searchable_snapshots/{node_id}/cache/stats": {
       "get": {
         "tags": [
-          "searchable_snapshots.cache_stats"
+          "searchable_snapshots"
         ],
         "summary": "Retrieve node-level cache statistics about searchable snapshots",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/master/searchable-snapshots-apis.html"
-        },
         "operationId": "searchable-snapshots-cache-stats-1",
         "parameters": [
           {
@@ -28282,19 +27165,15 @@
             "$ref": "#/components/responses/searchable_snapshots.cache_stats#200"
           }
         },
-        "x-available-since": "7.13.0",
-        "x-technical-preview": true
+        "x-state": "Technical preview"
       }
     },
     "/_searchable_snapshots/cache/clear": {
       "post": {
         "tags": [
-          "searchable_snapshots.clear_cache"
+          "searchable_snapshots"
         ],
         "summary": "Clear the cache of searchable snapshots",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/master/searchable-snapshots-apis.html"
-        },
         "operationId": "searchable-snapshots-clear-cache",
         "parameters": [
           {
@@ -28318,19 +27197,15 @@
             "$ref": "#/components/responses/searchable_snapshots.clear_cache#200"
           }
         },
-        "x-available-since": "7.10.0",
-        "x-technical-preview": true
+        "x-state": "Technical preview"
       }
     },
     "/{index}/_searchable_snapshots/cache/clear": {
       "post": {
         "tags": [
-          "searchable_snapshots.clear_cache"
+          "searchable_snapshots"
         ],
         "summary": "Clear the cache of searchable snapshots",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/master/searchable-snapshots-apis.html"
-        },
         "operationId": "searchable-snapshots-clear-cache-1",
         "parameters": [
           {
@@ -28357,19 +27232,15 @@
             "$ref": "#/components/responses/searchable_snapshots.clear_cache#200"
           }
         },
-        "x-available-since": "7.10.0",
-        "x-technical-preview": true
+        "x-state": "Technical preview"
       }
     },
     "/_snapshot/{repository}/{snapshot}/_mount": {
       "post": {
         "tags": [
-          "searchable_snapshots.mount"
+          "searchable_snapshots"
         ],
         "summary": "Mount a snapshot as a searchable index",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/master/searchable-snapshots-api-mount-snapshot.html"
-        },
         "operationId": "searchable-snapshots-mount",
         "parameters": [
           {
@@ -28478,18 +27349,15 @@
             }
           }
         },
-        "x-available-since": "7.10.0"
+        "x-state": "Added in 7.10.0"
       }
     },
     "/_searchable_snapshots/stats": {
       "get": {
         "tags": [
-          "searchable_snapshots.stats"
+          "searchable_snapshots"
         ],
         "summary": "Retrieve shard-level statistics about searchable snapshots",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/master/searchable-snapshots-apis.html"
-        },
         "operationId": "searchable-snapshots-stats",
         "parameters": [
           {
@@ -28501,18 +27369,15 @@
             "$ref": "#/components/responses/searchable_snapshots.stats#200"
           }
         },
-        "x-available-since": "7.10.0"
+        "x-state": "Added in 7.10.0"
       }
     },
     "/{index}/_searchable_snapshots/stats": {
       "get": {
         "tags": [
-          "searchable_snapshots.stats"
+          "searchable_snapshots"
         ],
         "summary": "Retrieve shard-level statistics about searchable snapshots",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/master/searchable-snapshots-apis.html"
-        },
         "operationId": "searchable-snapshots-stats-1",
         "parameters": [
           {
@@ -28527,18 +27392,16 @@
             "$ref": "#/components/responses/searchable_snapshots.stats#200"
           }
         },
-        "x-available-since": "7.10.0"
+        "x-state": "Added in 7.10.0"
       }
     },
     "/_security/profile/_activate": {
       "post": {
         "tags": [
-          "security.activate_user_profile"
+          "security"
         ],
-        "summary": "Creates or updates a user profile on behalf of another user",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/security-api-activate-user-profile.html"
-        },
+        "summary": "Activate a user profile",
+        "description": "Create or update a user profile on behalf of another user.",
         "operationId": "security-activate-user-profile",
         "requestBody": {
           "content": {
@@ -28579,19 +27442,16 @@
             }
           }
         },
-        "x-available-since": "8.2.0"
+        "x-state": "Added in 8.2.0"
       }
     },
     "/_security/_authenticate": {
       "get": {
         "tags": [
-          "security.authenticate"
+          "security"
         ],
         "summary": "Authenticate a user",
         "description": "Authenticates a user and returns information about the authenticated user.\nInclude the user information in a [basic auth header](https://en.wikipedia.org/wiki/Basic_access_authentication).\nA successful call returns a JSON structure that shows user information such as their username, the roles that are assigned to the user, any assigned metadata, and information about the realms that authenticated and authorized the user.\nIf the user cannot be authenticated, this API returns a 401 status code.",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/security-api-authenticate.html"
-        },
         "operationId": "security-authenticate",
         "responses": {
           "200": {
@@ -28602,7 +27462,7 @@
                   "type": "object",
                   "properties": {
                     "api_key": {
-                      "$ref": "#/components/schemas/security._types:ApiKey"
+                      "$ref": "#/components/schemas/security.authenticate:AuthenticateApiKey"
                     },
                     "authentication_realm": {
                       "$ref": "#/components/schemas/security._types:RealmInfo"
@@ -28668,19 +27528,16 @@
             }
           }
         },
-        "x-available-since": "5.5.0"
+        "x-state": "Added in 5.5.0"
       }
     },
     "/_security/role": {
       "get": {
         "tags": [
-          "security.get_role"
+          "security"
         ],
-        "summary": "The role management APIs are generally the preferred way to manage roles, rather than using file-based role management",
-        "description": "The get roles API cannot retrieve roles that are defined in roles files.",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/security-api-get-role.html"
-        },
+        "summary": "Get roles",
+        "description": "Get roles in the native realm.\nThe role management APIs are generally the preferred way to manage roles, rather than using file-based role management.\nThe get roles API cannot retrieve roles that are defined in roles files.",
         "operationId": "security-get-role-1",
         "responses": {
           "200": {
@@ -28690,13 +27547,10 @@
       },
       "post": {
         "tags": [
-          "security.bulk_put_role"
+          "security"
         ],
-        "summary": "The role management APIs are generally the preferred way to manage roles, rather than using file-based role management",
-        "description": "The bulk create or update roles API cannot update roles that are defined in roles files.",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/security-api-bulk-put-role.html"
-        },
+        "summary": "Bulk create or update roles",
+        "description": "The role management APIs are generally the preferred way to manage roles, rather than using file-based role management.\nThe bulk create or update roles API cannot update roles that are defined in roles files.",
         "operationId": "security-bulk-put-role",
         "parameters": [
           {
@@ -28770,17 +27624,14 @@
             }
           }
         },
-        "x-available-since": "8.15.0"
+        "x-state": "Added in 8.15.0"
       },
       "delete": {
         "tags": [
-          "security.bulk_delete_role"
+          "security"
         ],
-        "summary": "The role management APIs are generally the preferred way to manage roles, rather than using file-based role management",
-        "description": "The bulk delete roles API cannot delete roles that are defined in roles files.",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/security-api-bulk-delete-role.html"
-        },
+        "summary": "Bulk delete roles",
+        "description": "The role management APIs are generally the preferred way to manage roles, rather than using file-based role management.\nThe bulk delete roles API cannot delete roles that are defined in roles files.",
         "operationId": "security-bulk-delete-role",
         "parameters": [
           {
@@ -28847,18 +27698,16 @@
             }
           }
         },
-        "x-available-since": "8.15.0"
+        "x-state": "Added in 8.15.0"
       }
     },
     "/_security/user/{username}/_password": {
       "put": {
         "tags": [
-          "security.change_password"
+          "security"
         ],
-        "summary": "Changes the passwords of users in the native realm and built-in users",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/security-api-change-password.html"
-        },
+        "summary": "Change passwords",
+        "description": "Change the passwords of users in the native realm and built-in users.",
         "operationId": "security-change-password",
         "parameters": [
           {
@@ -28879,12 +27728,10 @@
       },
       "post": {
         "tags": [
-          "security.change_password"
+          "security"
         ],
-        "summary": "Changes the passwords of users in the native realm and built-in users",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/security-api-change-password.html"
-        },
+        "summary": "Change passwords",
+        "description": "Change the passwords of users in the native realm and built-in users.",
         "operationId": "security-change-password-1",
         "parameters": [
           {
@@ -28907,12 +27754,10 @@
     "/_security/user/_password": {
       "put": {
         "tags": [
-          "security.change_password"
+          "security"
         ],
-        "summary": "Changes the passwords of users in the native realm and built-in users",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/security-api-change-password.html"
-        },
+        "summary": "Change passwords",
+        "description": "Change the passwords of users in the native realm and built-in users.",
         "operationId": "security-change-password-2",
         "parameters": [
           {
@@ -28930,12 +27775,10 @@
       },
       "post": {
         "tags": [
-          "security.change_password"
+          "security"
         ],
-        "summary": "Changes the passwords of users in the native realm and built-in users",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/security-api-change-password.html"
-        },
+        "summary": "Change passwords",
+        "description": "Change the passwords of users in the native realm and built-in users.",
         "operationId": "security-change-password-3",
         "parameters": [
           {
@@ -28955,13 +27798,10 @@
     "/_security/api_key/{ids}/_clear_cache": {
       "post": {
         "tags": [
-          "security.clear_api_key_cache"
+          "security"
         ],
-        "summary": "Evicts a subset of all entries from the API key cache",
-        "description": "The cache is also automatically cleared on state changes of the security index.",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/security-api-clear-api-key-cache.html"
-        },
+        "summary": "Clear the API key cache",
+        "description": "Evict a subset of all entries from the API key cache.\nThe cache is also automatically cleared on state changes of the security index.",
         "operationId": "security-clear-api-key-cache",
         "parameters": [
           {
@@ -29007,18 +27847,16 @@
             }
           }
         },
-        "x-available-since": "7.10.0"
+        "x-state": "Added in 7.10.0"
       }
     },
     "/_security/privilege/{application}/_clear_cache": {
       "post": {
         "tags": [
-          "security.clear_cached_privileges"
+          "security"
         ],
-        "summary": "Evicts application privileges from the native application privileges cache",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/security-api-clear-privilege-cache.html"
-        },
+        "summary": "Clear the privileges cache",
+        "description": "Evict privileges from the native application privilege cache.\nThe cache is also automatically cleared for applications that have their privileges updated.",
         "operationId": "security-clear-cached-privileges",
         "parameters": [
           {
@@ -29064,19 +27902,16 @@
             }
           }
         },
-        "x-available-since": "7.9.0"
+        "x-state": "Added in 7.9.0"
       }
     },
     "/_security/realm/{realms}/_clear_cache": {
       "post": {
         "tags": [
-          "security.clear_cached_realms"
+          "security"
         ],
-        "summary": "Evicts users from the user cache",
-        "description": "Can completely clear the cache or evict specific users.",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/security-api-clear-cache.html"
-        },
+        "summary": "Clear the user cache",
+        "description": "Evict users from the user cache. You can completely clear the cache or evict specific users.",
         "operationId": "security-clear-cached-realms",
         "parameters": [
           {
@@ -29140,12 +27975,10 @@
     "/_security/role/{name}/_clear_cache": {
       "post": {
         "tags": [
-          "security.clear_cached_roles"
+          "security"
         ],
-        "summary": "Evicts roles from the native role cache",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/security-api-clear-role-cache.html"
-        },
+        "summary": "Clear the roles cache",
+        "description": "Evict roles from the native role cache.",
         "operationId": "security-clear-cached-roles",
         "parameters": [
           {
@@ -29196,11 +28029,12 @@
     "/_security/service/{namespace}/{service}/credential/token/{name}/_clear_cache": {
       "post": {
         "tags": [
-          "security.clear_cached_service_tokens"
+          "security"
         ],
-        "summary": "Evicts tokens from the service account token caches",
+        "summary": "Clear service account token caches",
+        "description": "Evict a subset of all entries from the service account token caches.",
         "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/security-api-clear-service-token-caches.html"
+          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/service-accounts.html"
         },
         "operationId": "security-clear-cached-service-tokens",
         "parameters": [
@@ -29274,13 +28108,10 @@
     "/_security/api_key": {
       "get": {
         "tags": [
-          "security.get_api_key"
+          "security"
         ],
         "summary": "Get API key information",
         "description": "Retrieves information for one or more API keys.\nNOTE: If you have only the `manage_own_api_key` privilege, this API returns only the API keys that you own.\nIf you have `read_security`, `manage_api_key` or greater privileges (including `manage_security`), this API returns all API keys regardless of ownership.",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/security-api-get-api-key.html"
-        },
         "operationId": "security-get-api-key",
         "parameters": [
           {
@@ -29387,17 +28218,14 @@
             }
           }
         },
-        "x-available-since": "6.7.0"
+        "x-state": "Added in 6.7.0"
       },
       "put": {
         "tags": [
-          "security.create_api_key"
+          "security"
         ],
         "summary": "Create an API key",
-        "description": "Creates an API key for access without requiring basic authentication.\nA successful request returns a JSON structure that contains the API key, its unique id, and its name.\nIf applicable, it also returns expiration information for the API key in milliseconds.\nNOTE: By default, API keys never expire. You can specify expiration information when you create the API keys.",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/security-api-create-api-key.html"
-        },
+        "description": "Create an API key for access without requiring basic authentication.\nA successful request returns a JSON structure that contains the API key, its unique id, and its name.\nIf applicable, it also returns expiration information for the API key in milliseconds.\nNOTE: By default, API keys never expire. You can specify expiration information when you create the API keys.",
         "operationId": "security-create-api-key",
         "parameters": [
           {
@@ -29412,17 +28240,14 @@
             "$ref": "#/components/responses/security.create_api_key#200"
           }
         },
-        "x-available-since": "6.7.0"
+        "x-state": "Added in 6.7.0"
       },
       "post": {
         "tags": [
-          "security.create_api_key"
+          "security"
         ],
         "summary": "Create an API key",
-        "description": "Creates an API key for access without requiring basic authentication.\nA successful request returns a JSON structure that contains the API key, its unique id, and its name.\nIf applicable, it also returns expiration information for the API key in milliseconds.\nNOTE: By default, API keys never expire. You can specify expiration information when you create the API keys.",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/security-api-create-api-key.html"
-        },
+        "description": "Create an API key for access without requiring basic authentication.\nA successful request returns a JSON structure that contains the API key, its unique id, and its name.\nIf applicable, it also returns expiration information for the API key in milliseconds.\nNOTE: By default, API keys never expire. You can specify expiration information when you create the API keys.",
         "operationId": "security-create-api-key-1",
         "parameters": [
           {
@@ -29437,17 +28262,14 @@
             "$ref": "#/components/responses/security.create_api_key#200"
           }
         },
-        "x-available-since": "6.7.0"
+        "x-state": "Added in 6.7.0"
       },
       "delete": {
         "tags": [
-          "security.invalidate_api_key"
+          "security"
         ],
         "summary": "Invalidate API keys",
-        "description": "Invalidates one or more API keys.\nThe `manage_api_key` privilege allows deleting any API keys.\nThe `manage_own_api_key` only allows deleting API keys that are owned by the user.\nIn addition, with the `manage_own_api_key` privilege, an invalidation request must be issued in one of the three formats:\n- Set the parameter `owner=true`.\n- Or, set both `username` and `realm_name` to match the user’s identity.\n- Or, if the request is issued by an API key, i.e. an API key invalidates itself, specify its ID in the `ids` field.",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/security-api-invalidate-api-key.html"
-        },
+        "description": "This API invalidates API keys created by the create API key or grant API key APIs.\nInvalidated API keys fail authentication, but they can still be viewed using the get API key information and query API key information APIs, for at least the configured retention period, until they are automatically deleted.\nThe `manage_api_key` privilege allows deleting any API keys.\nThe `manage_own_api_key` only allows deleting API keys that are owned by the user.\nIn addition, with the `manage_own_api_key` privilege, an invalidation request must be issued in one of the three formats:\n- Set the parameter `owner=true`.\n- Or, set both `username` and `realm_name` to match the user’s identity.\n- Or, if the request is issued by an API key, that is to say an API key invalidates itself, specify its ID in the `ids` field.",
         "operationId": "security-invalidate-api-key",
         "requestBody": {
           "content": {
@@ -29525,17 +28347,96 @@
             }
           }
         },
-        "x-available-since": "6.7.0"
+        "x-state": "Added in 6.7.0"
+      }
+    },
+    "/_security/cross_cluster/api_key": {
+      "post": {
+        "tags": [
+          "security"
+        ],
+        "summary": "Create a cross-cluster API key",
+        "description": "Create an API key of the `cross_cluster` type for the API key based remote cluster access.\nA `cross_cluster` API key cannot be used to authenticate through the REST interface.\n\nIMPORTANT: To authenticate this request you must use a credential that is not an API key. Even if you use an API key that has the required privilege, the API returns an error.\n\nCross-cluster API keys are created by the Elasticsearch API key service, which is automatically enabled.\n\nNOTE: Unlike REST API keys, a cross-cluster API key does not capture permissions of the authenticated user. The API key’s effective permission is exactly as specified with the `access` property.\n\nA successful request returns a JSON structure that contains the API key, its unique ID, and its name. If applicable, it also returns expiration information for the API key in milliseconds.\n\nBy default, API keys never expire. You can specify expiration information when you create the API keys.\n\nCross-cluster API keys can only be updated with the update cross-cluster API key API.\nAttempting to update them with the update REST API key API or the bulk update REST API keys API will result in an error.",
+        "externalDocs": {
+          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/remote-clusters-api-key.html"
+        },
+        "operationId": "security-create-cross-cluster-api-key",
+        "requestBody": {
+          "content": {
+            "application/json": {
+              "schema": {
+                "type": "object",
+                "properties": {
+                  "access": {
+                    "$ref": "#/components/schemas/security._types:Access"
+                  },
+                  "expiration": {
+                    "$ref": "#/components/schemas/_types:Duration"
+                  },
+                  "metadata": {
+                    "$ref": "#/components/schemas/_types:Metadata"
+                  },
+                  "name": {
+                    "$ref": "#/components/schemas/_types:Name"
+                  }
+                },
+                "required": [
+                  "access",
+                  "name"
+                ]
+              }
+            }
+          },
+          "required": true
+        },
+        "responses": {
+          "200": {
+            "description": "",
+            "content": {
+              "application/json": {
+                "schema": {
+                  "type": "object",
+                  "properties": {
+                    "api_key": {
+                      "description": "Generated API key.",
+                      "type": "string"
+                    },
+                    "expiration": {
+                      "$ref": "#/components/schemas/_types:DurationValueUnitMillis"
+                    },
+                    "id": {
+                      "$ref": "#/components/schemas/_types:Id"
+                    },
+                    "name": {
+                      "$ref": "#/components/schemas/_types:Name"
+                    },
+                    "encoded": {
+                      "description": "API key credentials which is the base64-encoding of\nthe UTF-8 representation of `id` and `api_key` joined\nby a colon (`:`).",
+                      "type": "string"
+                    }
+                  },
+                  "required": [
+                    "api_key",
+                    "id",
+                    "name",
+                    "encoded"
+                  ]
+                }
+              }
+            }
+          }
+        }
       }
     },
     "/_security/service/{namespace}/{service}/credential/token/{name}": {
       "put": {
         "tags": [
-          "security.create_service_token"
+          "security"
         ],
-        "summary": "Creates a service accounts token for access without requiring basic authentication",
+        "summary": "Create a service account token",
+        "description": "Create a service accounts token for access without requiring basic authentication.",
         "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/security-api-create-service-token.html"
+          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/service-accounts.html"
         },
         "operationId": "security-create-service-token",
         "parameters": [
@@ -29560,11 +28461,12 @@
       },
       "post": {
         "tags": [
-          "security.create_service_token"
+          "security"
         ],
-        "summary": "Creates a service accounts token for access without requiring basic authentication",
+        "summary": "Create a service account token",
+        "description": "Create a service accounts token for access without requiring basic authentication.",
         "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/security-api-create-service-token.html"
+          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/service-accounts.html"
         },
         "operationId": "security-create-service-token-1",
         "parameters": [
@@ -29589,11 +28491,12 @@
       },
       "delete": {
         "tags": [
-          "security.delete_service_token"
+          "security"
         ],
-        "summary": "Deletes a service account token",
+        "summary": "Delete service account tokens",
+        "description": "Delete service account tokens for a service in a specified namespace.",
         "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/security-api-delete-service-token.html"
+          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/service-accounts.html"
         },
         "operationId": "security-delete-service-token",
         "parameters": [
@@ -29661,17 +28564,18 @@
             }
           }
         },
-        "x-available-since": "5.5.0"
+        "x-state": "Added in 5.5.0"
       }
     },
     "/_security/service/{namespace}/{service}/credential/token": {
       "post": {
         "tags": [
-          "security.create_service_token"
+          "security"
         ],
-        "summary": "Creates a service accounts token for access without requiring basic authentication",
+        "summary": "Create a service account token",
+        "description": "Create a service accounts token for access without requiring basic authentication.",
         "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/security-api-create-service-token.html"
+          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/service-accounts.html"
         },
         "operationId": "security-create-service-token-2",
         "parameters": [
@@ -29695,11 +28599,11 @@
     "/_security/privilege/{application}/{name}": {
       "get": {
         "tags": [
-          "security.get_privileges"
+          "security"
         ],
-        "summary": "Retrieves application privileges",
+        "summary": "Get application privileges",
         "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/security-api-get-privileges.html"
+          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/security-privileges.html"
         },
         "operationId": "security-get-privileges-2",
         "parameters": [
@@ -29715,15 +28619,15 @@
             "$ref": "#/components/responses/security.get_privileges#200"
           }
         },
-        "x-available-since": "6.4.0"
+        "x-state": "Added in 6.4.0"
       },
       "delete": {
         "tags": [
-          "security.delete_privileges"
+          "security"
         ],
-        "summary": "Removes application privileges",
+        "summary": "Delete application privileges",
         "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/security-api-delete-privilege.html"
+          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/security-privileges.html"
         },
         "operationId": "security-delete-privileges",
         "parameters": [
@@ -29778,19 +28682,16 @@
             }
           }
         },
-        "x-available-since": "6.4.0"
+        "x-state": "Added in 6.4.0"
       }
     },
     "/_security/role/{name}": {
       "get": {
         "tags": [
-          "security.get_role"
+          "security"
         ],
-        "summary": "The role management APIs are generally the preferred way to manage roles, rather than using file-based role management",
-        "description": "The get roles API cannot retrieve roles that are defined in roles files.",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/security-api-get-role.html"
-        },
+        "summary": "Get roles",
+        "description": "Get roles in the native realm.\nThe role management APIs are generally the preferred way to manage roles, rather than using file-based role management.\nThe get roles API cannot retrieve roles that are defined in roles files.",
         "operationId": "security-get-role",
         "parameters": [
           {
@@ -29805,12 +28706,12 @@
       },
       "put": {
         "tags": [
-          "security.put_role"
+          "security"
         ],
-        "summary": "The role management APIs are generally the preferred way to manage roles, rather than using file-based role management",
-        "description": "The create or update roles API cannot update roles that are defined in roles files.",
+        "summary": "Create or update roles",
+        "description": "The role management APIs are generally the preferred way to manage roles in the native realm, rather than using file-based role management.\nThe create or update roles API cannot update roles that are defined in roles files.\nFile-based role management is not available in Elastic Serverless.",
         "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/security-api-put-role.html"
+          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/defining-roles.html"
         },
         "operationId": "security-put-role",
         "parameters": [
@@ -29832,12 +28733,12 @@
       },
       "post": {
         "tags": [
-          "security.put_role"
+          "security"
         ],
-        "summary": "The role management APIs are generally the preferred way to manage roles, rather than using file-based role management",
-        "description": "The create or update roles API cannot update roles that are defined in roles files.",
+        "summary": "Create or update roles",
+        "description": "The role management APIs are generally the preferred way to manage roles in the native realm, rather than using file-based role management.\nThe create or update roles API cannot update roles that are defined in roles files.\nFile-based role management is not available in Elastic Serverless.",
         "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/security-api-put-role.html"
+          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/defining-roles.html"
         },
         "operationId": "security-put-role-1",
         "parameters": [
@@ -29859,12 +28760,10 @@
       },
       "delete": {
         "tags": [
-          "security.delete_role"
+          "security"
         ],
-        "summary": "Removes roles in the native realm",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/security-api-delete-role.html"
-        },
+        "summary": "Delete roles",
+        "description": "Delete roles in the native realm.",
         "operationId": "security-delete-role",
         "parameters": [
           {
@@ -29914,11 +28813,12 @@
     "/_security/role_mapping/{name}": {
       "get": {
         "tags": [
-          "security.get_role_mapping"
+          "security"
         ],
-        "summary": "Retrieves role mappings",
+        "summary": "Get role mappings",
+        "description": "Role mappings define which roles are assigned to each user.\nThe role mapping APIs are generally the preferred way to manage role mappings rather than using role mapping files.\nThe get role mappings API cannot retrieve role mappings that are defined in role mapping files.",
         "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/security-api-get-role-mapping.html"
+          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/mapping-roles.html"
         },
         "operationId": "security-get-role-mapping",
         "parameters": [
@@ -29931,15 +28831,16 @@
             "$ref": "#/components/responses/security.get_role_mapping#200"
           }
         },
-        "x-available-since": "5.5.0"
+        "x-state": "Added in 5.5.0"
       },
       "put": {
         "tags": [
-          "security.put_role_mapping"
+          "security"
         ],
-        "summary": "Creates and updates role mappings",
+        "summary": "Create or update role mappings",
+        "description": "Role mappings define which roles are assigned to each user.\nEach mapping has rules that identify users and a list of roles that are granted to those users.\nThe role mapping APIs are generally the preferred way to manage role mappings rather than using role mapping files. The create or update role mappings API cannot update role mappings that are defined in role mapping files.\n\nThis API does not create roles. Rather, it maps users to existing roles.\nRoles can be created by using the create or update roles API or roles files.",
         "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/security-api-put-role-mapping.html"
+          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/mapping-roles.html"
         },
         "operationId": "security-put-role-mapping",
         "parameters": [
@@ -29958,15 +28859,16 @@
             "$ref": "#/components/responses/security.put_role_mapping#200"
           }
         },
-        "x-available-since": "5.5.0"
+        "x-state": "Added in 5.5.0"
       },
       "post": {
         "tags": [
-          "security.put_role_mapping"
+          "security"
         ],
-        "summary": "Creates and updates role mappings",
+        "summary": "Create or update role mappings",
+        "description": "Role mappings define which roles are assigned to each user.\nEach mapping has rules that identify users and a list of roles that are granted to those users.\nThe role mapping APIs are generally the preferred way to manage role mappings rather than using role mapping files. The create or update role mappings API cannot update role mappings that are defined in role mapping files.\n\nThis API does not create roles. Rather, it maps users to existing roles.\nRoles can be created by using the create or update roles API or roles files.",
         "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/security-api-put-role-mapping.html"
+          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/mapping-roles.html"
         },
         "operationId": "security-put-role-mapping-1",
         "parameters": [
@@ -29985,16 +28887,13 @@
             "$ref": "#/components/responses/security.put_role_mapping#200"
           }
         },
-        "x-available-since": "5.5.0"
+        "x-state": "Added in 5.5.0"
       },
       "delete": {
         "tags": [
-          "security.delete_role_mapping"
+          "security"
         ],
-        "summary": "Removes role mappings",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/security-api-delete-role-mapping.html"
-        },
+        "summary": "Delete role mappings",
         "operationId": "security-delete-role-mapping",
         "parameters": [
           {
@@ -30039,18 +28938,16 @@
             }
           }
         },
-        "x-available-since": "5.5.0"
+        "x-state": "Added in 5.5.0"
       }
     },
     "/_security/user/{username}": {
       "get": {
         "tags": [
-          "security.get_user"
+          "security"
         ],
-        "summary": "Retrieves information about users in the native realm and built-in users",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/security-api-get-user.html"
-        },
+        "summary": "Get users",
+        "description": "Get information about users in the native realm and built-in users.",
         "operationId": "security-get-user",
         "parameters": [
           {
@@ -30068,13 +28965,10 @@
       },
       "put": {
         "tags": [
-          "security.put_user"
+          "security"
         ],
-        "summary": "Adds and updates users in the native realm",
-        "description": "These users are commonly referred to as native users.",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/security-api-put-user.html"
-        },
+        "summary": "Create or update users",
+        "description": "A password is required for adding a new user but is optional when updating an existing user.\nTo change a user’s password without updating any other fields, use the change password API.",
         "operationId": "security-put-user",
         "parameters": [
           {
@@ -30095,13 +28989,10 @@
       },
       "post": {
         "tags": [
-          "security.put_user"
+          "security"
         ],
-        "summary": "Adds and updates users in the native realm",
-        "description": "These users are commonly referred to as native users.",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/security-api-put-user.html"
-        },
+        "summary": "Create or update users",
+        "description": "A password is required for adding a new user but is optional when updating an existing user.\nTo change a user’s password without updating any other fields, use the change password API.",
         "operationId": "security-put-user-1",
         "parameters": [
           {
@@ -30122,12 +29013,10 @@
       },
       "delete": {
         "tags": [
-          "security.delete_user"
+          "security"
         ],
-        "summary": "Deletes users from the native realm",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/security-api-delete-user.html"
-        },
+        "summary": "Delete users",
+        "description": "Delete users from the native realm.",
         "operationId": "security-delete-user",
         "parameters": [
           {
@@ -30177,12 +29066,10 @@
     "/_security/user/{username}/_disable": {
       "put": {
         "tags": [
-          "security.disable_user"
+          "security"
         ],
-        "summary": "Disables users in the native realm",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/security-api-disable-user.html"
-        },
+        "summary": "Disable users",
+        "description": "Disable users in the native realm.",
         "operationId": "security-disable-user",
         "parameters": [
           {
@@ -30200,12 +29087,10 @@
       },
       "post": {
         "tags": [
-          "security.disable_user"
+          "security"
         ],
-        "summary": "Disables users in the native realm",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/security-api-disable-user.html"
-        },
+        "summary": "Disable users",
+        "description": "Disable users in the native realm.",
         "operationId": "security-disable-user-1",
         "parameters": [
           {
@@ -30225,12 +29110,10 @@
     "/_security/profile/{uid}/_disable": {
       "put": {
         "tags": [
-          "security.disable_user_profile"
+          "security"
         ],
-        "summary": "Disables a user profile so it's not visible in user profile searches",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/master/security-api-disable-user-profile.html"
-        },
+        "summary": "Disable a user profile",
+        "description": "Disable user profiles so that they are not visible in user profile searches.",
         "operationId": "security-disable-user-profile",
         "parameters": [
           {
@@ -30245,16 +29128,14 @@
             "$ref": "#/components/responses/security.disable_user_profile#200"
           }
         },
-        "x-available-since": "8.2.0"
+        "x-state": "Added in 8.2.0"
       },
       "post": {
         "tags": [
-          "security.disable_user_profile"
+          "security"
         ],
-        "summary": "Disables a user profile so it's not visible in user profile searches",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/master/security-api-disable-user-profile.html"
-        },
+        "summary": "Disable a user profile",
+        "description": "Disable user profiles so that they are not visible in user profile searches.",
         "operationId": "security-disable-user-profile-1",
         "parameters": [
           {
@@ -30269,18 +29150,16 @@
             "$ref": "#/components/responses/security.disable_user_profile#200"
           }
         },
-        "x-available-since": "8.2.0"
+        "x-state": "Added in 8.2.0"
       }
     },
     "/_security/user/{username}/_enable": {
       "put": {
         "tags": [
-          "security.enable_user"
+          "security"
         ],
-        "summary": "Enables users in the native realm",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/security-api-enable-user.html"
-        },
+        "summary": "Enable users",
+        "description": "Enable users in the native realm.",
         "operationId": "security-enable-user",
         "parameters": [
           {
@@ -30298,12 +29177,10 @@
       },
       "post": {
         "tags": [
-          "security.enable_user"
+          "security"
         ],
-        "summary": "Enables users in the native realm",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/security-api-enable-user.html"
-        },
+        "summary": "Enable users",
+        "description": "Enable users in the native realm.",
         "operationId": "security-enable-user-1",
         "parameters": [
           {
@@ -30323,12 +29200,10 @@
     "/_security/profile/{uid}/_enable": {
       "put": {
         "tags": [
-          "security.enable_user_profile"
+          "security"
         ],
-        "summary": "Enables a user profile so it's visible in user profile searches",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/master/security-api-enable-user-profile.html"
-        },
+        "summary": "Enable a user profile",
+        "description": "Enable user profiles to make them visible in user profile searches.",
         "operationId": "security-enable-user-profile",
         "parameters": [
           {
@@ -30343,16 +29218,14 @@
             "$ref": "#/components/responses/security.enable_user_profile#200"
           }
         },
-        "x-available-since": "8.2.0"
+        "x-state": "Added in 8.2.0"
       },
       "post": {
         "tags": [
-          "security.enable_user_profile"
+          "security"
         ],
-        "summary": "Enables a user profile so it's visible in user profile searches",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/master/security-api-enable-user-profile.html"
-        },
+        "summary": "Enable a user profile",
+        "description": "Enable user profiles to make them visible in user profile searches.",
         "operationId": "security-enable-user-profile-1",
         "parameters": [
           {
@@ -30367,18 +29240,16 @@
             "$ref": "#/components/responses/security.enable_user_profile#200"
           }
         },
-        "x-available-since": "8.2.0"
+        "x-state": "Added in 8.2.0"
       }
     },
     "/_security/enroll/kibana": {
       "get": {
         "tags": [
-          "security.enroll_kibana"
+          "security"
         ],
-        "summary": "Enables a Kibana instance to configure itself for communication with a secured Elasticsearch cluster",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/master/security-api-kibana-enrollment.html"
-        },
+        "summary": "Enroll Kibana",
+        "description": "Enable a Kibana instance to configure itself for communication with a secured Elasticsearch cluster.",
         "operationId": "security-enroll-kibana",
         "responses": {
           "200": {
@@ -30404,18 +29275,16 @@
             }
           }
         },
-        "x-available-since": "8.0.0"
+        "x-state": "Added in 8.0.0"
       }
     },
     "/_security/enroll/node": {
       "get": {
         "tags": [
-          "security.enroll_node"
+          "security"
         ],
-        "summary": "Allows a new node to join an existing cluster with security features enabled",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/master/security-api-node-enrollment.html"
-        },
+        "summary": "Enroll a node",
+        "description": "Enroll a new node to allow it to join an existing cluster with security features enabled.",
         "operationId": "security-enroll-node",
         "responses": {
           "200": {
@@ -30460,17 +29329,18 @@
             }
           }
         },
-        "x-available-since": "8.0.0"
+        "x-state": "Added in 8.0.0"
       }
     },
     "/_security/privilege/_builtin": {
       "get": {
         "tags": [
-          "security.get_builtin_privileges"
+          "security"
         ],
-        "summary": "Retrieves the list of cluster privileges and index privileges that are available in this version of Elasticsearch",
+        "summary": "Get builtin privileges",
+        "description": "Get the list of cluster privileges and index privileges that are available in this version of Elasticsearch.",
         "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/security-api-get-builtin-privileges.html"
+          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/security-privileges.html"
         },
         "operationId": "security-get-builtin-privileges",
         "responses": {
@@ -30500,17 +29370,17 @@
             }
           }
         },
-        "x-available-since": "7.3.0"
+        "x-state": "Added in 7.3.0"
       }
     },
     "/_security/privilege": {
       "get": {
         "tags": [
-          "security.get_privileges"
+          "security"
         ],
-        "summary": "Retrieves application privileges",
+        "summary": "Get application privileges",
         "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/security-api-get-privileges.html"
+          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/security-privileges.html"
         },
         "operationId": "security-get-privileges",
         "responses": {
@@ -30518,15 +29388,15 @@
             "$ref": "#/components/responses/security.get_privileges#200"
           }
         },
-        "x-available-since": "6.4.0"
+        "x-state": "Added in 6.4.0"
       },
       "put": {
         "tags": [
-          "security.put_privileges"
+          "security"
         ],
-        "summary": "Adds or updates application privileges",
+        "summary": "Create or update application privileges",
         "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/security-api-put-privileges.html"
+          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/security-privileges.html"
         },
         "operationId": "security-put-privileges",
         "parameters": [
@@ -30542,15 +29412,15 @@
             "$ref": "#/components/responses/security.put_privileges#200"
           }
         },
-        "x-available-since": "6.4.0"
+        "x-state": "Added in 6.4.0"
       },
       "post": {
         "tags": [
-          "security.put_privileges"
+          "security"
         ],
-        "summary": "Adds or updates application privileges",
+        "summary": "Create or update application privileges",
         "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/security-api-put-privileges.html"
+          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/security-privileges.html"
         },
         "operationId": "security-put-privileges-1",
         "parameters": [
@@ -30566,17 +29436,17 @@
             "$ref": "#/components/responses/security.put_privileges#200"
           }
         },
-        "x-available-since": "6.4.0"
+        "x-state": "Added in 6.4.0"
       }
     },
     "/_security/privilege/{application}": {
       "get": {
         "tags": [
-          "security.get_privileges"
+          "security"
         ],
-        "summary": "Retrieves application privileges",
+        "summary": "Get application privileges",
         "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/security-api-get-privileges.html"
+          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/security-privileges.html"
         },
         "operationId": "security-get-privileges-1",
         "parameters": [
@@ -30589,17 +29459,18 @@
             "$ref": "#/components/responses/security.get_privileges#200"
           }
         },
-        "x-available-since": "6.4.0"
+        "x-state": "Added in 6.4.0"
       }
     },
     "/_security/role_mapping": {
       "get": {
         "tags": [
-          "security.get_role_mapping"
+          "security"
         ],
-        "summary": "Retrieves role mappings",
+        "summary": "Get role mappings",
+        "description": "Role mappings define which roles are assigned to each user.\nThe role mapping APIs are generally the preferred way to manage role mappings rather than using role mapping files.\nThe get role mappings API cannot retrieve role mappings that are defined in role mapping files.",
         "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/security-api-get-role-mapping.html"
+          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/mapping-roles.html"
         },
         "operationId": "security-get-role-mapping-1",
         "responses": {
@@ -30607,17 +29478,18 @@
             "$ref": "#/components/responses/security.get_role_mapping#200"
           }
         },
-        "x-available-since": "5.5.0"
+        "x-state": "Added in 5.5.0"
       }
     },
     "/_security/service/{namespace}/{service}": {
       "get": {
         "tags": [
-          "security.get_service_accounts"
+          "security"
         ],
-        "summary": "This API returns a list of service accounts that match the provided path parameter(s)",
+        "summary": "Get service accounts",
+        "description": "Get a list of service accounts that match the provided path parameters.",
         "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/security-api-get-service-accounts.html"
+          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/service-accounts.html"
         },
         "operationId": "security-get-service-accounts",
         "parameters": [
@@ -30633,17 +29505,18 @@
             "$ref": "#/components/responses/security.get_service_accounts#200"
           }
         },
-        "x-available-since": "7.13.0"
+        "x-state": "Added in 7.13.0"
       }
     },
     "/_security/service/{namespace}": {
       "get": {
         "tags": [
-          "security.get_service_accounts"
+          "security"
         ],
-        "summary": "This API returns a list of service accounts that match the provided path parameter(s)",
+        "summary": "Get service accounts",
+        "description": "Get a list of service accounts that match the provided path parameters.",
         "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/security-api-get-service-accounts.html"
+          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/service-accounts.html"
         },
         "operationId": "security-get-service-accounts-1",
         "parameters": [
@@ -30656,17 +29529,18 @@
             "$ref": "#/components/responses/security.get_service_accounts#200"
           }
         },
-        "x-available-since": "7.13.0"
+        "x-state": "Added in 7.13.0"
       }
     },
     "/_security/service": {
       "get": {
         "tags": [
-          "security.get_service_accounts"
+          "security"
         ],
-        "summary": "This API returns a list of service accounts that match the provided path parameter(s)",
+        "summary": "Get service accounts",
+        "description": "Get a list of service accounts that match the provided path parameters.",
         "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/security-api-get-service-accounts.html"
+          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/service-accounts.html"
         },
         "operationId": "security-get-service-accounts-2",
         "responses": {
@@ -30674,17 +29548,17 @@
             "$ref": "#/components/responses/security.get_service_accounts#200"
           }
         },
-        "x-available-since": "7.13.0"
+        "x-state": "Added in 7.13.0"
       }
     },
     "/_security/service/{namespace}/{service}/credential": {
       "get": {
         "tags": [
-          "security.get_service_credentials"
+          "security"
         ],
-        "summary": "Retrieves information of all service credentials for a service account",
+        "summary": "Get service account credentials",
         "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/security-api-get-service-credentials.html"
+          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/service-accounts.html"
         },
         "operationId": "security-get-service-credentials",
         "parameters": [
@@ -30746,18 +29620,16 @@
             }
           }
         },
-        "x-available-since": "7.13.0"
+        "x-state": "Added in 7.13.0"
       }
     },
     "/_security/oauth2/token": {
       "post": {
         "tags": [
-          "security.get_token"
+          "security"
         ],
-        "summary": "Creates a bearer token for access without requiring basic authentication",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/security-api-get-token.html"
-        },
+        "summary": "Get a token",
+        "description": "Create a bearer token for access without requiring basic authentication.",
         "operationId": "security-get-token",
         "requestBody": {
           "content": {
@@ -30830,16 +29702,14 @@
             }
           }
         },
-        "x-available-since": "5.5.0"
+        "x-state": "Added in 5.5.0"
       },
       "delete": {
         "tags": [
-          "security.invalidate_token"
+          "security"
         ],
-        "summary": "Invalidates one or more access tokens or refresh tokens",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/security-api-invalidate-token.html"
-        },
+        "summary": "Invalidate a token",
+        "description": "The access tokens returned by the get token API have a finite period of time for which they are valid.\nAfter that time period, they can no longer be used.\nThe time period is defined by the `xpack.security.authc.token.timeout` setting.\n\nThe refresh tokens returned by the get token API are only valid for 24 hours. They can also be used exactly once.\nIf you want to invalidate one or more access or refresh tokens immediately, use this invalidate token API.",
         "operationId": "security-invalidate-token",
         "requestBody": {
           "content": {
@@ -30899,18 +29769,16 @@
             }
           }
         },
-        "x-available-since": "5.5.0"
+        "x-state": "Added in 5.5.0"
       }
     },
     "/_security/user": {
       "get": {
         "tags": [
-          "security.get_user"
+          "security"
         ],
-        "summary": "Retrieves information about users in the native realm and built-in users",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/security-api-get-user.html"
-        },
+        "summary": "Get users",
+        "description": "Get information about users in the native realm and built-in users.",
         "operationId": "security-get-user-1",
         "parameters": [
           {
@@ -30927,12 +29795,9 @@
     "/_security/user/_privileges": {
       "get": {
         "tags": [
-          "security.get_user_privileges"
+          "security"
         ],
-        "summary": "Retrieves security privileges for the logged in user",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/security-api-get-user-privileges.html"
-        },
+        "summary": "Get user privileges",
         "operationId": "security-get-user-privileges",
         "parameters": [
           {
@@ -31024,18 +29889,16 @@
             }
           }
         },
-        "x-available-since": "6.5.0"
+        "x-state": "Added in 6.5.0"
       }
     },
     "/_security/profile/{uid}": {
       "get": {
         "tags": [
-          "security.get_user_profile"
+          "security"
         ],
-        "summary": "Retrieves a user's profile using the unique profile ID",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/security-api-get-user-profile.html"
-        },
+        "summary": "Get a user profile",
+        "description": "Get a user's profile using the unique profile ID.",
         "operationId": "security-get-user-profile",
         "parameters": [
           {
@@ -31106,19 +29969,16 @@
             }
           }
         },
-        "x-available-since": "8.2.0"
+        "x-state": "Added in 8.2.0"
       }
     },
     "/_security/api_key/grant": {
       "post": {
         "tags": [
-          "security.grant_api_key"
+          "security"
         ],
-        "summary": "Creates an API key on behalf of another user",
-        "description": "This API is similar to Create API keys, however it creates the API key for a user that is different than the user that runs the API.\nThe caller must have authentication credentials (either an access token, or a username and password) for the user on whose behalf the API key will be created.\nIt is not possible to use this API to create an API key without that user’s credentials.\nThe user, for whom the authentication credentials is provided, can optionally \"run as\" (impersonate) another user.\nIn this case, the API key will be created on behalf of the impersonated user.\n\nThis API is intended be used by applications that need to create and manage API keys for end users, but cannot guarantee that those users have permission to create API keys on their own behalf.\n\nA successful grant API key API call returns a JSON structure that contains the API key, its unique id, and its name.\nIf applicable, it also returns expiration information for the API key in milliseconds.\n\nBy default, API keys never expire. You can specify expiration information when you create the API keys.",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/security-api-grant-api-key.html"
-        },
+        "summary": "Grant an API key",
+        "description": "Create an API key on behalf of another user.\nThis API is similar to the create API keys API, however it creates the API key for a user that is different than the user that runs the API.\nThe caller must have authentication credentials (either an access token, or a username and password) for the user on whose behalf the API key will be created.\nIt is not possible to use this API to create an API key without that user’s credentials.\nThe user, for whom the authentication credentials is provided, can optionally \"run as\" (impersonate) another user.\nIn this case, the API key will be created on behalf of the impersonated user.\n\nThis API is intended be used by applications that need to create and manage API keys for end users, but cannot guarantee that those users have permission to create API keys on their own behalf.\n\nA successful grant API key API call returns a JSON structure that contains the API key, its unique id, and its name.\nIf applicable, it also returns expiration information for the API key in milliseconds.\n\nBy default, API keys never expire. You can specify expiration information when you create the API keys.",
         "operationId": "security-grant-api-key",
         "requestBody": {
           "content": {
@@ -31190,18 +30050,18 @@
             }
           }
         },
-        "x-available-since": "7.9.0"
+        "x-state": "Added in 7.9.0"
       }
     },
     "/_security/user/_has_privileges": {
       "get": {
         "tags": [
-          "security.has_privileges"
+          "security"
         ],
         "summary": "Check user privileges",
-        "description": "Determines whether the specified user has a specified list of privileges.",
+        "description": "Determine whether the specified user has a specified list of privileges.",
         "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/security-api-has-privileges.html"
+          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/security-privileges.html"
         },
         "operationId": "security-has-privileges",
         "requestBody": {
@@ -31212,16 +30072,16 @@
             "$ref": "#/components/responses/security.has_privileges#200"
           }
         },
-        "x-available-since": "6.4.0"
+        "x-state": "Added in 6.4.0"
       },
       "post": {
         "tags": [
-          "security.has_privileges"
+          "security"
         ],
         "summary": "Check user privileges",
-        "description": "Determines whether the specified user has a specified list of privileges.",
+        "description": "Determine whether the specified user has a specified list of privileges.",
         "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/security-api-has-privileges.html"
+          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/security-privileges.html"
         },
         "operationId": "security-has-privileges-1",
         "requestBody": {
@@ -31232,18 +30092,18 @@
             "$ref": "#/components/responses/security.has_privileges#200"
           }
         },
-        "x-available-since": "6.4.0"
+        "x-state": "Added in 6.4.0"
       }
     },
     "/_security/user/{user}/_has_privileges": {
       "get": {
         "tags": [
-          "security.has_privileges"
+          "security"
         ],
         "summary": "Check user privileges",
-        "description": "Determines whether the specified user has a specified list of privileges.",
+        "description": "Determine whether the specified user has a specified list of privileges.",
         "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/security-api-has-privileges.html"
+          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/security-privileges.html"
         },
         "operationId": "security-has-privileges-2",
         "parameters": [
@@ -31259,16 +30119,16 @@
             "$ref": "#/components/responses/security.has_privileges#200"
           }
         },
-        "x-available-since": "6.4.0"
+        "x-state": "Added in 6.4.0"
       },
       "post": {
         "tags": [
-          "security.has_privileges"
+          "security"
         ],
         "summary": "Check user privileges",
-        "description": "Determines whether the specified user has a specified list of privileges.",
+        "description": "Determine whether the specified user has a specified list of privileges.",
         "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/security-api-has-privileges.html"
+          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/security-privileges.html"
         },
         "operationId": "security-has-privileges-3",
         "parameters": [
@@ -31284,17 +30144,18 @@
             "$ref": "#/components/responses/security.has_privileges#200"
           }
         },
-        "x-available-since": "6.4.0"
+        "x-state": "Added in 6.4.0"
       }
     },
     "/_security/profile/_has_privileges": {
       "get": {
         "tags": [
-          "security.has_privileges_user_profile"
+          "security"
         ],
-        "summary": "Determines whether the users associated with the specified profile IDs have all the requested privileges",
+        "summary": "Check user profile privileges",
+        "description": "Determine whether the users associated with the specified user profile IDs have all the requested privileges.",
         "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/security-api-has-privileges-user-profile.html"
+          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/user-profile.html"
         },
         "operationId": "security-has-privileges-user-profile",
         "requestBody": {
@@ -31305,15 +30166,16 @@
             "$ref": "#/components/responses/security.has_privileges_user_profile#200"
           }
         },
-        "x-available-since": "8.3.0"
+        "x-state": "Added in 8.3.0"
       },
       "post": {
         "tags": [
-          "security.has_privileges_user_profile"
+          "security"
         ],
-        "summary": "Determines whether the users associated with the specified profile IDs have all the requested privileges",
+        "summary": "Check user profile privileges",
+        "description": "Determine whether the users associated with the specified user profile IDs have all the requested privileges.",
         "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/security-api-has-privileges-user-profile.html"
+          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/user-profile.html"
         },
         "operationId": "security-has-privileges-user-profile-1",
         "requestBody": {
@@ -31324,19 +30186,16 @@
             "$ref": "#/components/responses/security.has_privileges_user_profile#200"
           }
         },
-        "x-available-since": "8.3.0"
+        "x-state": "Added in 8.3.0"
       }
     },
     "/_security/_query/api_key": {
       "get": {
         "tags": [
-          "security.query_api_keys"
+          "security"
         ],
-        "summary": "Query API keys",
-        "description": "Retrieves a paginated list of API keys and their information. You can optionally filter the results with a query.",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/security-api-query-api-key.html"
-        },
+        "summary": "Find API keys with a query",
+        "description": "Get a paginated list of API keys and their information. You can optionally filter the results with a query.",
         "operationId": "security-query-api-keys",
         "parameters": [
           {
@@ -31357,17 +30216,14 @@
             "$ref": "#/components/responses/security.query_api_keys#200"
           }
         },
-        "x-available-since": "7.15.0"
+        "x-state": "Added in 7.15.0"
       },
       "post": {
         "tags": [
-          "security.query_api_keys"
+          "security"
         ],
-        "summary": "Query API keys",
-        "description": "Retrieves a paginated list of API keys and their information. You can optionally filter the results with a query.",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/security-api-query-api-key.html"
-        },
+        "summary": "Find API keys with a query",
+        "description": "Get a paginated list of API keys and their information. You can optionally filter the results with a query.",
         "operationId": "security-query-api-keys-1",
         "parameters": [
           {
@@ -31388,19 +30244,16 @@
             "$ref": "#/components/responses/security.query_api_keys#200"
           }
         },
-        "x-available-since": "7.15.0"
+        "x-state": "Added in 7.15.0"
       }
     },
     "/_security/_query/role": {
       "get": {
         "tags": [
-          "security.query_role"
+          "security"
         ],
-        "summary": "Retrieves roles in a paginated manner",
-        "description": "You can optionally filter the results with a query.",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/security-api-query-role.html"
-        },
+        "summary": "Find roles with a query",
+        "description": "Get roles in a paginated manner. You can optionally filter the results with a query.",
         "operationId": "security-query-role",
         "requestBody": {
           "$ref": "#/components/requestBodies/security.query_role"
@@ -31410,17 +30263,14 @@
             "$ref": "#/components/responses/security.query_role#200"
           }
         },
-        "x-available-since": "8.15.0"
+        "x-state": "Added in 8.15.0"
       },
       "post": {
         "tags": [
-          "security.query_role"
+          "security"
         ],
-        "summary": "Retrieves roles in a paginated manner",
-        "description": "You can optionally filter the results with a query.",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/security-api-query-role.html"
-        },
+        "summary": "Find roles with a query",
+        "description": "Get roles in a paginated manner. You can optionally filter the results with a query.",
         "operationId": "security-query-role-1",
         "requestBody": {
           "$ref": "#/components/requestBodies/security.query_role"
@@ -31430,19 +30280,16 @@
             "$ref": "#/components/responses/security.query_role#200"
           }
         },
-        "x-available-since": "8.15.0"
+        "x-state": "Added in 8.15.0"
       }
     },
     "/_security/_query/user": {
       "get": {
         "tags": [
-          "security.query_user"
+          "security"
         ],
-        "summary": "Retrieves information for Users in a paginated manner",
-        "description": "You can optionally filter the results with a query.",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/security-api-query-user.html"
-        },
+        "summary": "Find users with a query",
+        "description": "Get information for users in a paginated manner.\nYou can optionally filter the results with a query.",
         "operationId": "security-query-user",
         "parameters": [
           {
@@ -31457,17 +30304,14 @@
             "$ref": "#/components/responses/security.query_user#200"
           }
         },
-        "x-available-since": "8.14.0"
+        "x-state": "Added in 8.14.0"
       },
       "post": {
         "tags": [
-          "security.query_user"
+          "security"
         ],
-        "summary": "Retrieves information for Users in a paginated manner",
-        "description": "You can optionally filter the results with a query.",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/security-api-query-user.html"
-        },
+        "summary": "Find users with a query",
+        "description": "Get information for users in a paginated manner.\nYou can optionally filter the results with a query.",
         "operationId": "security-query-user-1",
         "parameters": [
           {
@@ -31482,18 +30326,16 @@
             "$ref": "#/components/responses/security.query_user#200"
           }
         },
-        "x-available-since": "8.14.0"
+        "x-state": "Added in 8.14.0"
       }
     },
     "/_security/saml/authenticate": {
       "post": {
         "tags": [
-          "security.saml_authenticate"
+          "security"
         ],
-        "summary": "Submits a SAML Response message to Elasticsearch for consumption",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/security-api-saml-authenticate.html"
-        },
+        "summary": "Authenticate SAML",
+        "description": "Submits a SAML response message to Elasticsearch for consumption.",
         "operationId": "security-saml-authenticate",
         "requestBody": {
           "content": {
@@ -31558,18 +30400,16 @@
             }
           }
         },
-        "x-available-since": "7.5.0"
+        "x-state": "Added in 7.5.0"
       }
     },
     "/_security/saml/complete_logout": {
       "post": {
         "tags": [
-          "security.saml_complete_logout"
+          "security"
         ],
-        "summary": "Verifies the logout response sent from the SAML IdP",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/security-api-saml-complete-logout.html"
-        },
+        "summary": "Logout of SAML completely",
+        "description": "Verifies the logout response sent from the SAML IdP.",
         "operationId": "security-saml-complete-logout",
         "requestBody": {
           "content": {
@@ -31610,18 +30450,16 @@
             }
           }
         },
-        "x-available-since": "7.14.0"
+        "x-state": "Added in 7.14.0"
       }
     },
     "/_security/saml/invalidate": {
       "post": {
         "tags": [
-          "security.saml_invalidate"
+          "security"
         ],
-        "summary": "Submits a SAML LogoutRequest message to Elasticsearch for consumption",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/security-api-saml-invalidate.html"
-        },
+        "summary": "Invalidate SAML",
+        "description": "Submits a SAML LogoutRequest message to Elasticsearch for consumption.",
         "operationId": "security-saml-invalidate",
         "requestBody": {
           "content": {
@@ -31678,18 +30516,16 @@
             }
           }
         },
-        "x-available-since": "7.5.0"
+        "x-state": "Added in 7.5.0"
       }
     },
     "/_security/saml/logout": {
       "post": {
         "tags": [
-          "security.saml_logout"
+          "security"
         ],
-        "summary": "Submits a request to invalidate an access token and refresh token",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/security-api-saml-logout.html"
-        },
+        "summary": "Logout of SAML",
+        "description": "Submits a request to invalidate an access token and refresh token.",
         "operationId": "security-saml-logout",
         "requestBody": {
           "content": {
@@ -31734,18 +30570,16 @@
             }
           }
         },
-        "x-available-since": "7.5.0"
+        "x-state": "Added in 7.5.0"
       }
     },
     "/_security/saml/prepare": {
       "post": {
         "tags": [
-          "security.saml_prepare_authentication"
+          "security"
         ],
-        "summary": "Creates a SAML authentication request (<AuthnRequest>) as a URL string, based on the configuration of the respective SAML realm in Elasticsearch",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/security-api-saml-prepare-authentication.html"
-        },
+        "summary": "Prepare SAML authentication",
+        "description": "Creates a SAML authentication request (`<AuthnRequest>`) as a URL string, based on the configuration of the respective SAML realm in Elasticsearch.",
         "operationId": "security-saml-prepare-authentication",
         "requestBody": {
           "content": {
@@ -31799,18 +30633,16 @@
             }
           }
         },
-        "x-available-since": "7.5.0"
+        "x-state": "Added in 7.5.0"
       }
     },
     "/_security/saml/metadata/{realm_name}": {
       "get": {
         "tags": [
-          "security.saml_service_provider_metadata"
+          "security"
         ],
-        "summary": "Generate SAML metadata for a SAML 2.0 Service Provider",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/security-api-saml-sp-metadata.html"
-        },
+        "summary": "Create SAML service provider metadata",
+        "description": "Generate SAML metadata for a SAML 2.0 Service Provider.",
         "operationId": "security-saml-service-provider-metadata",
         "parameters": [
           {
@@ -31845,18 +30677,16 @@
             }
           }
         },
-        "x-available-since": "7.11.0"
+        "x-state": "Added in 7.11.0"
       }
     },
     "/_security/profile/_suggest": {
       "get": {
         "tags": [
-          "security.suggest_user_profiles"
+          "security"
         ],
-        "summary": "Get suggestions for user profiles that match specified search criteria",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/master/security-api-suggest-user-profile.html"
-        },
+        "summary": "Suggest a user profile",
+        "description": "Get suggestions for user profiles that match specified search criteria.",
         "operationId": "security-suggest-user-profiles",
         "parameters": [
           {
@@ -31871,16 +30701,14 @@
             "$ref": "#/components/responses/security.suggest_user_profiles#200"
           }
         },
-        "x-available-since": "8.2.0"
+        "x-state": "Added in 8.2.0"
       },
       "post": {
         "tags": [
-          "security.suggest_user_profiles"
+          "security"
         ],
-        "summary": "Get suggestions for user profiles that match specified search criteria",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/master/security-api-suggest-user-profile.html"
-        },
+        "summary": "Suggest a user profile",
+        "description": "Get suggestions for user profiles that match specified search criteria.",
         "operationId": "security-suggest-user-profiles-1",
         "parameters": [
           {
@@ -31895,19 +30723,16 @@
             "$ref": "#/components/responses/security.suggest_user_profiles#200"
           }
         },
-        "x-available-since": "8.2.0"
+        "x-state": "Added in 8.2.0"
       }
     },
     "/_security/api_key/{id}": {
       "put": {
         "tags": [
-          "security.update_api_key"
+          "security"
         ],
         "summary": "Update an API key",
         "description": "Updates attributes of an existing API key.\nUsers can only update API keys that they created or that were granted to them.\nUse this API to update API keys created by the create API Key or grant API Key APIs.\nIf you need to apply the same update to many API keys, you can use bulk update API Keys to reduce overhead.\nIt’s not possible to update expired API keys, or API keys that have been invalidated by invalidate API Key.\nThis API supports updates to an API key’s access scope and metadata.\nThe access scope of an API key is derived from the `role_descriptors` you specify in the request, and a snapshot of the owner user’s permissions at the time of the request.\nThe snapshot of the owner’s permissions is updated automatically on every call.\nIf you don’t specify `role_descriptors` in the request, a call to this API might still change the API key’s access scope.\nThis change can occur if the owner user’s permissions have changed since the API key was created or last modified.\nTo update another user’s API key, use the `run_as` feature to submit a request on behalf of another user.\nIMPORTANT: It’s not possible to use an API key as the authentication credential for this API.\nTo update an API key, the owner user’s credentials are required.",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/security-api-update-api-key.html"
-        },
         "operationId": "security-update-api-key",
         "parameters": [
           {
@@ -31929,9 +30754,6 @@
                 "type": "object",
                 "properties": {
                   "role_descriptors": {
-                    "externalDocs": {
-                      "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/security-api-put-role.html"
-                    },
                     "description": "An array of role descriptors for this API key. This parameter is optional. When it is not specified or is an empty array, then the API key will have a point in time snapshot of permissions of the authenticated user. If you supply role descriptors then the resultant permissions would be an intersection of API keys permissions and authenticated user’s permissions thereby limiting the access scope for API keys. The structure of role descriptor is the same as the request for create role API. For more details, see create or update roles API.",
                     "type": "object",
                     "additionalProperties": {
@@ -31970,18 +30792,87 @@
             }
           }
         },
-        "x-available-since": "8.4.0"
+        "x-state": "Added in 8.4.0"
       }
     },
-    "/_security/profile/{uid}/_data": {
+    "/_security/cross_cluster/api_key/{id}": {
       "put": {
         "tags": [
-          "security.update_user_profile_data"
+          "security"
         ],
-        "summary": "Updates specific data for the user profile that's associated with the specified unique ID",
+        "summary": "Update a cross-cluster API key",
+        "description": "Update the attributes of an existing cross-cluster API key, which is used for API key based remote cluster access.",
         "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/security-api-update-user-profile-data.html"
+          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/remote-clusters-api-key.html"
+        },
+        "operationId": "security-update-cross-cluster-api-key",
+        "parameters": [
+          {
+            "in": "path",
+            "name": "id",
+            "description": "The ID of the cross-cluster API key to update.",
+            "required": true,
+            "deprecated": false,
+            "schema": {
+              "$ref": "#/components/schemas/_types:Id"
+            },
+            "style": "simple"
+          }
+        ],
+        "requestBody": {
+          "content": {
+            "application/json": {
+              "schema": {
+                "type": "object",
+                "properties": {
+                  "access": {
+                    "$ref": "#/components/schemas/security._types:Access"
+                  },
+                  "expiration": {
+                    "$ref": "#/components/schemas/_types:Duration"
+                  },
+                  "metadata": {
+                    "$ref": "#/components/schemas/_types:Metadata"
+                  }
+                },
+                "required": [
+                  "access"
+                ]
+              }
+            }
+          },
+          "required": true
         },
+        "responses": {
+          "200": {
+            "description": "",
+            "content": {
+              "application/json": {
+                "schema": {
+                  "type": "object",
+                  "properties": {
+                    "updated": {
+                      "description": "If `true`, the API key was updated.\nIf `false`, the API key didn’t change because no change was detected.",
+                      "type": "boolean"
+                    }
+                  },
+                  "required": [
+                    "updated"
+                  ]
+                }
+              }
+            }
+          }
+        }
+      }
+    },
+    "/_security/profile/{uid}/_data": {
+      "put": {
+        "tags": [
+          "security"
+        ],
+        "summary": "Update user profile data",
+        "description": "Update specific data for the user profile that is associated with a unique ID.",
         "operationId": "security-update-user-profile-data",
         "parameters": [
           {
@@ -32005,16 +30896,14 @@
             "$ref": "#/components/responses/security.update_user_profile_data#200"
           }
         },
-        "x-available-since": "8.2.0"
+        "x-state": "Added in 8.2.0"
       },
       "post": {
         "tags": [
-          "security.update_user_profile_data"
+          "security"
         ],
-        "summary": "Updates specific data for the user profile that's associated with the specified unique ID",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/security-api-update-user-profile-data.html"
-        },
+        "summary": "Update user profile data",
+        "description": "Update specific data for the user profile that is associated with a unique ID.",
         "operationId": "security-update-user-profile-data-1",
         "parameters": [
           {
@@ -32038,19 +30927,16 @@
             "$ref": "#/components/responses/security.update_user_profile_data#200"
           }
         },
-        "x-available-since": "8.2.0"
+        "x-state": "Added in 8.2.0"
       }
     },
     "/_nodes/{node_id}/shutdown": {
       "get": {
         "tags": [
-          "shutdown.get_node"
+          "shutdown"
         ],
         "summary": "Retrieve status of a node or nodes that are currently marked as shutting down",
         "description": "Designed for indirect use by ECE/ESS and ECK. Direct use is not supported.",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current"
-        },
         "operationId": "shutdown-get-node-1",
         "parameters": [
           {
@@ -32068,17 +30954,14 @@
             "$ref": "#/components/responses/shutdown.get_node#200"
           }
         },
-        "x-available-since": "7.13.0"
+        "x-state": "Added in 7.13.0"
       },
       "put": {
         "tags": [
-          "shutdown.put_node"
+          "shutdown"
         ],
         "summary": "Adds a node to be shut down",
         "description": "Designed for indirect use by ECE/ESS and ECK. Direct use is not supported.",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current"
-        },
         "operationId": "shutdown-put-node",
         "parameters": [
           {
@@ -32156,17 +31039,14 @@
             }
           }
         },
-        "x-available-since": "7.13.0"
+        "x-state": "Added in 7.13.0"
       },
       "delete": {
         "tags": [
-          "shutdown.delete_node"
+          "shutdown"
         ],
         "summary": "Removes a node from the shutdown list",
         "description": "Designed for indirect use by ECE/ESS and ECK. Direct use is not supported.",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current"
-        },
         "operationId": "shutdown-delete-node",
         "parameters": [
           {
@@ -32213,19 +31093,16 @@
             }
           }
         },
-        "x-available-since": "7.13.0"
+        "x-state": "Added in 7.13.0"
       }
     },
     "/_nodes/shutdown": {
       "get": {
         "tags": [
-          "shutdown.get_node"
+          "shutdown"
         ],
         "summary": "Retrieve status of a node or nodes that are currently marked as shutting down",
         "description": "Designed for indirect use by ECE/ESS and ECK. Direct use is not supported.",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current"
-        },
         "operationId": "shutdown-get-node",
         "parameters": [
           {
@@ -32240,18 +31117,15 @@
             "$ref": "#/components/responses/shutdown.get_node#200"
           }
         },
-        "x-available-since": "7.13.0"
+        "x-state": "Added in 7.13.0"
       }
     },
     "/_slm/policy/{policy_id}": {
       "get": {
         "tags": [
-          "slm.get_lifecycle"
+          "slm"
         ],
         "summary": "Retrieves one or more snapshot lifecycle policy definitions and information about the latest snapshot attempts",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/slm-api-get-policy.html"
-        },
         "operationId": "slm-get-lifecycle",
         "parameters": [
           {
@@ -32263,16 +31137,13 @@
             "$ref": "#/components/responses/slm.get_lifecycle#200"
           }
         },
-        "x-available-since": "7.4.0"
+        "x-state": "Added in 7.4.0"
       },
       "put": {
         "tags": [
-          "slm.put_lifecycle"
+          "slm"
         ],
         "summary": "Creates or updates a snapshot lifecycle policy",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/slm-api-put-policy.html"
-        },
         "operationId": "slm-put-lifecycle",
         "parameters": [
           {
@@ -32346,16 +31217,13 @@
             }
           }
         },
-        "x-available-since": "7.4.0"
+        "x-state": "Added in 7.4.0"
       },
       "delete": {
         "tags": [
-          "slm.delete_lifecycle"
+          "slm"
         ],
         "summary": "Deletes an existing snapshot lifecycle policy",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/slm-api-delete-policy.html"
-        },
         "operationId": "slm-delete-lifecycle",
         "parameters": [
           {
@@ -32382,18 +31250,15 @@
             }
           }
         },
-        "x-available-since": "7.4.0"
+        "x-state": "Added in 7.4.0"
       }
     },
     "/_slm/policy/{policy_id}/_execute": {
       "put": {
         "tags": [
-          "slm.execute_lifecycle"
+          "slm"
         ],
         "summary": "Immediately creates a snapshot according to the lifecycle policy, without waiting for the scheduled time",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/slm-api-execute-lifecycle.html"
-        },
         "operationId": "slm-execute-lifecycle",
         "parameters": [
           {
@@ -32428,18 +31293,15 @@
             }
           }
         },
-        "x-available-since": "7.4.0"
+        "x-state": "Added in 7.4.0"
       }
     },
     "/_slm/_execute_retention": {
       "post": {
         "tags": [
-          "slm.execute_retention"
+          "slm"
         ],
         "summary": "Deletes any snapshots that are expired according to the policy's retention rules",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/slm-api-execute-retention.html"
-        },
         "operationId": "slm-execute-retention",
         "responses": {
           "200": {
@@ -32453,36 +31315,30 @@
             }
           }
         },
-        "x-available-since": "7.5.0"
+        "x-state": "Added in 7.5.0"
       }
     },
     "/_slm/policy": {
       "get": {
         "tags": [
-          "slm.get_lifecycle"
+          "slm"
         ],
         "summary": "Retrieves one or more snapshot lifecycle policy definitions and information about the latest snapshot attempts",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/slm-api-get-policy.html"
-        },
         "operationId": "slm-get-lifecycle-1",
         "responses": {
           "200": {
             "$ref": "#/components/responses/slm.get_lifecycle#200"
           }
         },
-        "x-available-since": "7.4.0"
+        "x-state": "Added in 7.4.0"
       }
     },
     "/_slm/stats": {
       "get": {
         "tags": [
-          "slm.get_stats"
+          "slm"
         ],
         "summary": "Returns global and policy-level statistics about actions taken by snapshot lifecycle management",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/master/slm-api-get-stats.html"
-        },
         "operationId": "slm-get-stats",
         "responses": {
           "200": {
@@ -32543,18 +31399,15 @@
             }
           }
         },
-        "x-available-since": "7.5.0"
+        "x-state": "Added in 7.5.0"
       }
     },
     "/_slm/status": {
       "get": {
         "tags": [
-          "slm.get_status"
+          "slm"
         ],
         "summary": "Retrieves the status of snapshot lifecycle management (SLM)",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/slm-api-get-status.html"
-        },
         "operationId": "slm-get-status",
         "responses": {
           "200": {
@@ -32576,18 +31429,15 @@
             }
           }
         },
-        "x-available-since": "7.6.0"
+        "x-state": "Added in 7.6.0"
       }
     },
     "/_slm/start": {
       "post": {
         "tags": [
-          "slm.start"
+          "slm"
         ],
         "summary": "Turns on snapshot lifecycle management (SLM)",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/slm-api-start.html"
-        },
         "operationId": "slm-start",
         "responses": {
           "200": {
@@ -32601,18 +31451,15 @@
             }
           }
         },
-        "x-available-since": "7.6.0"
+        "x-state": "Added in 7.6.0"
       }
     },
     "/_slm/stop": {
       "post": {
         "tags": [
-          "slm.stop"
+          "slm"
         ],
         "summary": "Turns off snapshot lifecycle management (SLM)",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/slm-api-stop.html"
-        },
         "operationId": "slm-stop",
         "responses": {
           "200": {
@@ -32626,18 +31473,15 @@
             }
           }
         },
-        "x-available-since": "7.6.0"
+        "x-state": "Added in 7.6.0"
       }
     },
     "/_snapshot/{repository}/_cleanup": {
       "post": {
         "tags": [
-          "snapshot.cleanup_repository"
+          "snapshot"
         ],
         "summary": "Triggers the review of a snapshot repository’s contents and deletes any stale data not referenced by existing snapshots",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/master/clean-up-snapshot-repo-api.html"
-        },
         "operationId": "snapshot-cleanup-repository",
         "parameters": [
           {
@@ -32692,18 +31536,15 @@
             }
           }
         },
-        "x-available-since": "7.4.0"
+        "x-state": "Added in 7.4.0"
       }
     },
     "/_snapshot/{repository}/{snapshot}/_clone/{target_snapshot}": {
       "put": {
         "tags": [
-          "snapshot.clone"
+          "snapshot"
         ],
         "summary": "Clones indices from one snapshot into another snapshot in the same repository",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/master/modules-snapshots.html"
-        },
         "operationId": "snapshot-clone",
         "parameters": [
           {
@@ -32789,18 +31630,15 @@
             }
           }
         },
-        "x-available-since": "7.10.0"
+        "x-state": "Added in 7.10.0"
       }
     },
     "/_snapshot/{repository}/{snapshot}": {
       "get": {
         "tags": [
-          "snapshot.get"
+          "snapshot"
         ],
         "summary": "Returns information about a snapshot",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/master/modules-snapshots.html"
-        },
         "operationId": "snapshot-get",
         "parameters": [
           {
@@ -32978,12 +31816,10 @@
                     },
                     "total": {
                       "description": "The total number of snapshots that match the request when ignoring size limit or after query parameter.",
-                      "x-available-since": "7.15.0",
                       "type": "number"
                     },
                     "remaining": {
                       "description": "The number of remaining snapshots that were not returned due to size limits and that can be fetched by additional requests using the next field value.",
-                      "x-available-since": "7.15.0",
                       "type": "number"
                     }
                   },
@@ -32996,16 +31832,13 @@
             }
           }
         },
-        "x-available-since": "0.0.0"
+        "x-state": "Added in 0.0.0"
       },
       "put": {
         "tags": [
-          "snapshot.create"
+          "snapshot"
         ],
         "summary": "Creates a snapshot in a repository",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/master/modules-snapshots.html"
-        },
         "operationId": "snapshot-create",
         "parameters": [
           {
@@ -33029,16 +31862,13 @@
             "$ref": "#/components/responses/snapshot.create#200"
           }
         },
-        "x-available-since": "0.0.0"
+        "x-state": "Added in 0.0.0"
       },
       "post": {
         "tags": [
-          "snapshot.create"
+          "snapshot"
         ],
         "summary": "Creates a snapshot in a repository",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/master/modules-snapshots.html"
-        },
         "operationId": "snapshot-create-1",
         "parameters": [
           {
@@ -33062,16 +31892,13 @@
             "$ref": "#/components/responses/snapshot.create#200"
           }
         },
-        "x-available-since": "0.0.0"
+        "x-state": "Added in 0.0.0"
       },
       "delete": {
         "tags": [
-          "snapshot.delete"
+          "snapshot"
         ],
         "summary": "Deletes one or more snapshots",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/master/modules-snapshots.html"
-        },
         "operationId": "snapshot-delete",
         "parameters": [
           {
@@ -33124,12 +31951,9 @@
     "/_snapshot/{repository}": {
       "get": {
         "tags": [
-          "snapshot.get_repository"
+          "snapshot"
         ],
         "summary": "Returns information about a repository",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/master/modules-snapshots.html"
-        },
         "operationId": "snapshot-get-repository-1",
         "parameters": [
           {
@@ -33147,16 +31971,13 @@
             "$ref": "#/components/responses/snapshot.get_repository#200"
           }
         },
-        "x-available-since": "0.0.0"
+        "x-state": "Added in 0.0.0"
       },
       "put": {
         "tags": [
-          "snapshot.create_repository"
+          "snapshot"
         ],
         "summary": "Creates a repository",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/master/modules-snapshots.html"
-        },
         "operationId": "snapshot-create-repository",
         "parameters": [
           {
@@ -33180,16 +32001,13 @@
             "$ref": "#/components/responses/snapshot.create_repository#200"
           }
         },
-        "x-available-since": "0.0.0"
+        "x-state": "Added in 0.0.0"
       },
       "post": {
         "tags": [
-          "snapshot.create_repository"
+          "snapshot"
         ],
         "summary": "Creates a repository",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/master/modules-snapshots.html"
-        },
         "operationId": "snapshot-create-repository-1",
         "parameters": [
           {
@@ -33213,16 +32031,13 @@
             "$ref": "#/components/responses/snapshot.create_repository#200"
           }
         },
-        "x-available-since": "0.0.0"
+        "x-state": "Added in 0.0.0"
       },
       "delete": {
         "tags": [
-          "snapshot.delete_repository"
+          "snapshot"
         ],
         "summary": "Deletes a repository",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/master/modules-snapshots.html"
-        },
         "operationId": "snapshot-delete-repository",
         "parameters": [
           {
@@ -33269,18 +32084,15 @@
             }
           }
         },
-        "x-available-since": "0.0.0"
+        "x-state": "Added in 0.0.0"
       }
     },
     "/_snapshot": {
       "get": {
         "tags": [
-          "snapshot.get_repository"
+          "snapshot"
         ],
         "summary": "Returns information about a repository",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/master/modules-snapshots.html"
-        },
         "operationId": "snapshot-get-repository",
         "parameters": [
           {
@@ -33295,18 +32107,130 @@
             "$ref": "#/components/responses/snapshot.get_repository#200"
           }
         },
-        "x-available-since": "0.0.0"
+        "x-state": "Added in 0.0.0"
+      }
+    },
+    "/_snapshot/{repository}/_verify_integrity": {
+      "post": {
+        "tags": [
+          "snapshot"
+        ],
+        "summary": "Verifies the integrity of the contents of a snapshot repository",
+        "operationId": "snapshot-repository-verify-integrity",
+        "parameters": [
+          {
+            "in": "path",
+            "name": "repository",
+            "description": "A repository name",
+            "required": true,
+            "deprecated": false,
+            "schema": {
+              "$ref": "#/components/schemas/_types:Names"
+            },
+            "style": "simple"
+          },
+          {
+            "in": "query",
+            "name": "meta_thread_pool_concurrency",
+            "description": "Number of threads to use for reading metadata",
+            "deprecated": false,
+            "schema": {
+              "type": "number"
+            },
+            "style": "form"
+          },
+          {
+            "in": "query",
+            "name": "blob_thread_pool_concurrency",
+            "description": "Number of threads to use for reading blob contents",
+            "deprecated": false,
+            "schema": {
+              "type": "number"
+            },
+            "style": "form"
+          },
+          {
+            "in": "query",
+            "name": "snapshot_verification_concurrency",
+            "description": "Number of snapshots to verify concurrently",
+            "deprecated": false,
+            "schema": {
+              "type": "number"
+            },
+            "style": "form"
+          },
+          {
+            "in": "query",
+            "name": "index_verification_concurrency",
+            "description": "Number of indices to verify concurrently",
+            "deprecated": false,
+            "schema": {
+              "type": "number"
+            },
+            "style": "form"
+          },
+          {
+            "in": "query",
+            "name": "index_snapshot_verification_concurrency",
+            "description": "Number of snapshots to verify concurrently within each index",
+            "deprecated": false,
+            "schema": {
+              "type": "number"
+            },
+            "style": "form"
+          },
+          {
+            "in": "query",
+            "name": "max_failed_shard_snapshots",
+            "description": "Maximum permitted number of failed shard snapshots",
+            "deprecated": false,
+            "schema": {
+              "type": "number"
+            },
+            "style": "form"
+          },
+          {
+            "in": "query",
+            "name": "verify_blob_contents",
+            "description": "Whether to verify the contents of individual blobs",
+            "deprecated": false,
+            "schema": {
+              "type": "boolean"
+            },
+            "style": "form"
+          },
+          {
+            "in": "query",
+            "name": "max_bytes_per_sec",
+            "description": "Rate limit for individual blob verification",
+            "deprecated": false,
+            "schema": {
+              "type": "string"
+            },
+            "style": "form"
+          }
+        ],
+        "responses": {
+          "200": {
+            "description": "",
+            "content": {
+              "application/json": {
+                "schema": {
+                  "type": "object"
+                }
+              }
+            }
+          }
+        },
+        "x-state": "Technical preview"
       }
     },
     "/_snapshot/{repository}/{snapshot}/_restore": {
       "post": {
         "tags": [
-          "snapshot.restore"
+          "snapshot"
         ],
         "summary": "Restores a snapshot",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/master/modules-snapshots.html"
-        },
         "operationId": "snapshot-restore",
         "parameters": [
           {
@@ -33407,30 +32331,27 @@
                 "schema": {
                   "type": "object",
                   "properties": {
+                    "accepted": {
+                      "type": "boolean"
+                    },
                     "snapshot": {
                       "$ref": "#/components/schemas/snapshot.restore:SnapshotRestore"
                     }
-                  },
-                  "required": [
-                    "snapshot"
-                  ]
+                  }
                 }
               }
             }
           }
         },
-        "x-available-since": "0.0.0"
+        "x-state": "Added in 0.0.0"
       }
     },
     "/_snapshot/_status": {
       "get": {
         "tags": [
-          "snapshot.status"
+          "snapshot"
         ],
         "summary": "Returns information about the status of a snapshot",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/master/modules-snapshots.html"
-        },
         "operationId": "snapshot-status",
         "parameters": [
           {
@@ -33445,18 +32366,15 @@
             "$ref": "#/components/responses/snapshot.status#200"
           }
         },
-        "x-available-since": "7.8.0"
+        "x-state": "Added in 7.8.0"
       }
     },
     "/_snapshot/{repository}/_status": {
       "get": {
         "tags": [
-          "snapshot.status"
+          "snapshot"
         ],
         "summary": "Returns information about the status of a snapshot",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/master/modules-snapshots.html"
-        },
         "operationId": "snapshot-status-1",
         "parameters": [
           {
@@ -33474,18 +32392,15 @@
             "$ref": "#/components/responses/snapshot.status#200"
           }
         },
-        "x-available-since": "7.8.0"
+        "x-state": "Added in 7.8.0"
       }
     },
     "/_snapshot/{repository}/{snapshot}/_status": {
       "get": {
         "tags": [
-          "snapshot.status"
+          "snapshot"
         ],
         "summary": "Returns information about the status of a snapshot",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/master/modules-snapshots.html"
-        },
         "operationId": "snapshot-status-2",
         "parameters": [
           {
@@ -33506,18 +32421,15 @@
             "$ref": "#/components/responses/snapshot.status#200"
           }
         },
-        "x-available-since": "7.8.0"
+        "x-state": "Added in 7.8.0"
       }
     },
     "/_snapshot/{repository}/_verify": {
       "post": {
         "tags": [
-          "snapshot.verify_repository"
+          "snapshot"
         ],
         "summary": "Verifies a repository",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/master/modules-snapshots.html"
-        },
         "operationId": "snapshot-verify-repository",
         "parameters": [
           {
@@ -33575,18 +32487,15 @@
             }
           }
         },
-        "x-available-since": "0.0.0"
+        "x-state": "Added in 0.0.0"
       }
     },
     "/_sql/close": {
       "post": {
         "tags": [
-          "sql.clear_cursor"
+          "sql"
         ],
-        "summary": "Clears the SQL cursor",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/clear-sql-cursor-api.html"
-        },
+        "summary": "Clear an SQL search cursor",
         "operationId": "sql-clear-cursor",
         "requestBody": {
           "content": {
@@ -33627,19 +32536,16 @@
             }
           }
         },
-        "x-available-since": "6.3.0"
+        "x-state": "Added in 6.3.0"
       }
     },
     "/_sql/async/delete/{id}": {
       "delete": {
         "tags": [
-          "sql.delete_async"
+          "sql"
         ],
-        "summary": "Deletes an async SQL search or a stored synchronous SQL search",
-        "description": "If the search is still running, the API cancels it.",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/master/delete-async-sql-search-api.html"
-        },
+        "summary": "Delete an async SQL search",
+        "description": "Delete an async SQL search or a stored synchronous SQL search.\nIf the search is still running, the API cancels it.",
         "operationId": "sql-delete-async",
         "parameters": [
           {
@@ -33666,18 +32572,16 @@
             }
           }
         },
-        "x-available-since": "7.15.0"
+        "x-state": "Added in 7.15.0"
       }
     },
     "/_sql/async/{id}": {
       "get": {
         "tags": [
-          "sql.get_async"
+          "sql"
         ],
-        "summary": "Returns the current status and available results for an async SQL search or stored synchronous SQL search",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/master/get-async-sql-search-api.html"
-        },
+        "summary": "Get async SQL search results",
+        "description": "Get the current status and available results for an async SQL search or stored synchronous SQL search.",
         "operationId": "sql-get-async",
         "parameters": [
           {
@@ -33781,18 +32685,16 @@
             }
           }
         },
-        "x-available-since": "7.15.0"
+        "x-state": "Added in 7.15.0"
       }
     },
     "/_sql/async/status/{id}": {
       "get": {
         "tags": [
-          "sql.get_async_status"
+          "sql"
         ],
-        "summary": "Returns the current status of an async SQL search or a stored synchronous SQL search",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/master/get-async-sql-search-status-api.html"
-        },
+        "summary": "Get the async SQL search status",
+        "description": "Get the current status of an async SQL search or a stored synchronous SQL search.",
         "operationId": "sql-get-async-status",
         "parameters": [
           {
@@ -33849,18 +32751,16 @@
             }
           }
         },
-        "x-available-since": "7.15.0"
+        "x-state": "Added in 7.15.0"
       }
     },
     "/_sql": {
       "get": {
         "tags": [
-          "sql.query"
+          "sql"
         ],
-        "summary": "Executes a SQL request",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/sql-search-api.html"
-        },
+        "summary": "Get SQL search results",
+        "description": "Run an SQL request.",
         "operationId": "sql-query-1",
         "parameters": [
           {
@@ -33875,16 +32775,14 @@
             "$ref": "#/components/responses/sql.query#200"
           }
         },
-        "x-available-since": "6.3.0"
+        "x-state": "Added in 6.3.0"
       },
       "post": {
         "tags": [
-          "sql.query"
+          "sql"
         ],
-        "summary": "Executes a SQL request",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/sql-search-api.html"
-        },
+        "summary": "Get SQL search results",
+        "description": "Run an SQL request.",
         "operationId": "sql-query",
         "parameters": [
           {
@@ -33899,18 +32797,16 @@
             "$ref": "#/components/responses/sql.query#200"
           }
         },
-        "x-available-since": "6.3.0"
+        "x-state": "Added in 6.3.0"
       }
     },
     "/_sql/translate": {
       "get": {
         "tags": [
-          "sql.translate"
+          "sql"
         ],
-        "summary": "Translates SQL into Elasticsearch queries",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/sql-translate-api.html"
-        },
+        "summary": "Translate SQL into Elasticsearch queries",
+        "description": "Translate an SQL search into a search API request containing Query DSL.",
         "operationId": "sql-translate-1",
         "requestBody": {
           "$ref": "#/components/requestBodies/sql.translate"
@@ -33920,16 +32816,14 @@
             "$ref": "#/components/responses/sql.translate#200"
           }
         },
-        "x-available-since": "6.3.0"
+        "x-state": "Added in 6.3.0"
       },
       "post": {
         "tags": [
-          "sql.translate"
+          "sql"
         ],
-        "summary": "Translates SQL into Elasticsearch queries",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/sql-translate-api.html"
-        },
+        "summary": "Translate SQL into Elasticsearch queries",
+        "description": "Translate an SQL search into a search API request containing Query DSL.",
         "operationId": "sql-translate",
         "requestBody": {
           "$ref": "#/components/requestBodies/sql.translate"
@@ -33939,18 +32833,16 @@
             "$ref": "#/components/responses/sql.translate#200"
           }
         },
-        "x-available-since": "6.3.0"
+        "x-state": "Added in 6.3.0"
       }
     },
     "/_ssl/certificates": {
       "get": {
         "tags": [
-          "ssl.certificates"
+          "security"
         ],
-        "summary": "Retrieves information about the X.509 certificates used to encrypt communications in the cluster",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/security-api-ssl.html"
-        },
+        "summary": "Get SSL certificates",
+        "description": "Get information about the X.509 certificates that are used to encrypt communications in the cluster.\nThe API returns a list that includes certificates from all TLS contexts including:\n\n- Settings for transport and HTTP interfaces\n- TLS settings that are used within authentication realms\n- TLS settings for remote monitoring exporters\n\nThe list includes certificates that are used for configuring trust, such as those configured in the `xpack.security.transport.ssl.truststore` and `xpack.security.transport.ssl.certificate_authorities` settings.\nIt also includes certificates that are used for configuring server identity, such as `xpack.security.http.ssl.keystore` and `xpack.security.http.ssl.certificate settings`.\n\nThe list does not include certificates that are sourced from the default SSL context of the Java Runtime Environment (JRE), even if those certificates are in use within Elasticsearch.\n\nNOTE: When a PKCS#11 token is configured as the truststore of the JRE, the API returns all the certificates that are included in the PKCS#11 token irrespective of whether these are used in the Elasticsearch TLS configuration.\n\nIf Elasticsearch is configured to use a keystore or truststore, the API output includes all certificates in that store, even though some of the certificates might not be in active use within the cluster.",
         "operationId": "ssl-certificates",
         "responses": {
           "200": {
@@ -33967,18 +32859,15 @@
             }
           }
         },
-        "x-available-since": "6.2.0"
+        "x-state": "Added in 6.2.0"
       }
     },
     "/_synonyms/{id}": {
       "get": {
         "tags": [
-          "synonyms.get_synonym"
+          "synonyms"
         ],
-        "summary": "Retrieves a synonym set",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/master/get-synonyms-set.html"
-        },
+        "summary": "Get a synonym set",
         "operationId": "synonyms-get-synonym",
         "parameters": [
           {
@@ -34040,16 +32929,14 @@
             }
           }
         },
-        "x-available-since": "8.10.0"
+        "x-state": "Added in 8.10.0"
       },
       "put": {
         "tags": [
-          "synonyms.put_synonym"
+          "synonyms"
         ],
-        "summary": "Creates or updates a synonym set",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/master/put-synonyms-set.html"
-        },
+        "summary": "Create or update a synonym set",
+        "description": "Synonyms sets are limited to a maximum of 10,000 synonym rules per set.\nIf you need to manage more synonym rules, you can create multiple synonym sets.",
         "operationId": "synonyms-put-synonym",
         "parameters": [
           {
@@ -34117,16 +33004,13 @@
             }
           }
         },
-        "x-available-since": "8.10.0"
+        "x-state": "Added in 8.10.0"
       },
       "delete": {
         "tags": [
-          "synonyms.delete_synonym"
+          "synonyms"
         ],
-        "summary": "Deletes a synonym set",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/master/delete-synonyms-set.html"
-        },
+        "summary": "Delete a synonym set",
         "operationId": "synonyms-delete-synonym",
         "parameters": [
           {
@@ -34153,18 +33037,16 @@
             }
           }
         },
-        "x-available-since": "8.10.0"
+        "x-state": "Added in 8.10.0"
       }
     },
     "/_synonyms/{set_id}/{rule_id}": {
       "get": {
         "tags": [
-          "synonyms.get_synonym_rule"
+          "synonyms"
         ],
-        "summary": "Retrieves a synonym rule from a synonym set",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/master/get-synonym-rule.html"
-        },
+        "summary": "Get a synonym rule",
+        "description": "Get a synonym rule from a synonym set.",
         "operationId": "synonyms-get-synonym-rule",
         "parameters": [
           {
@@ -34202,16 +33084,14 @@
             }
           }
         },
-        "x-available-since": "8.10.0"
+        "x-state": "Added in 8.10.0"
       },
       "put": {
         "tags": [
-          "synonyms.put_synonym_rule"
+          "synonyms"
         ],
-        "summary": "Creates or updates a synonym rule in a synonym set",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/master/put-synonym-rule.html"
-        },
+        "summary": "Create or update a synonym rule",
+        "description": "Create or update a synonym rule in a synonym set.",
         "operationId": "synonyms-put-synonym-rule",
         "parameters": [
           {
@@ -34267,16 +33147,14 @@
             }
           }
         },
-        "x-available-since": "8.10.0"
+        "x-state": "Added in 8.10.0"
       },
       "delete": {
         "tags": [
-          "synonyms.delete_synonym_rule"
+          "synonyms"
         ],
-        "summary": "Deletes a synonym rule in a synonym set",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/master/delete-synonym-rule.html"
-        },
+        "summary": "Delete a synonym rule",
+        "description": "Delete a synonym rule from a synonym set.",
         "operationId": "synonyms-delete-synonym-rule",
         "parameters": [
           {
@@ -34314,18 +33192,16 @@
             }
           }
         },
-        "x-available-since": "8.10.0"
+        "x-state": "Added in 8.10.0"
       }
     },
     "/_synonyms": {
       "get": {
         "tags": [
-          "synonyms.get_synonyms_sets"
+          "synonyms"
         ],
-        "summary": "Retrieves a summary of all defined synonym sets",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/master/list-synonyms-sets.html"
-        },
+        "summary": "Get all synonym sets",
+        "description": "Get a summary of all defined synonym sets.",
         "operationId": "synonyms-get-synonyms-sets",
         "parameters": [
           {
@@ -34376,18 +33252,15 @@
             }
           }
         },
-        "x-available-since": "8.10.0"
+        "x-state": "Added in 8.10.0"
       }
     },
     "/_tasks/_cancel": {
       "post": {
         "tags": [
-          "tasks.cancel"
+          "tasks"
         ],
         "summary": "Cancels a task, if it can be cancelled through an API",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/tasks.html"
-        },
         "operationId": "tasks-cancel",
         "parameters": [
           {
@@ -34408,19 +33281,15 @@
             "$ref": "#/components/responses/tasks.cancel#200"
           }
         },
-        "x-technical-preview": true,
-        "x-available-since": "2.3.0"
+        "x-state": "Technical preview"
       }
     },
     "/_tasks/{task_id}/_cancel": {
       "post": {
         "tags": [
-          "tasks.cancel"
+          "tasks"
         ],
         "summary": "Cancels a task, if it can be cancelled through an API",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/tasks.html"
-        },
         "operationId": "tasks-cancel-1",
         "parameters": [
           {
@@ -34444,20 +33313,16 @@
             "$ref": "#/components/responses/tasks.cancel#200"
           }
         },
-        "x-technical-preview": true,
-        "x-available-since": "2.3.0"
+        "x-state": "Technical preview"
       }
     },
     "/_tasks/{task_id}": {
       "get": {
         "tags": [
-          "tasks.get"
+          "tasks"
         ],
         "summary": "Get task information",
         "description": "Returns information about the tasks currently executing in the cluster.",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/tasks.html"
-        },
         "operationId": "tasks-get",
         "parameters": [
           {
@@ -34522,19 +33387,15 @@
             }
           }
         },
-        "x-technical-preview": true,
-        "x-available-since": "5.0.0"
+        "x-state": "Technical preview"
       }
     },
     "/_tasks": {
       "get": {
         "tags": [
-          "tasks.list"
+          "tasks"
         ],
         "summary": "The task management API returns information about tasks currently executing on one or more nodes in the cluster",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/tasks.html"
-        },
         "operationId": "tasks-list",
         "parameters": [
           {
@@ -34579,14 +33440,11 @@
           },
           {
             "in": "query",
-            "name": "node_id",
+            "name": "nodes",
             "description": "Comma-separated list of node IDs or names used to limit returned information.",
             "deprecated": false,
             "schema": {
-              "type": "array",
-              "items": {
-                "type": "string"
-              }
+              "$ref": "#/components/schemas/_types:NodeIds"
             },
             "style": "form"
           },
@@ -34643,20 +33501,16 @@
             }
           }
         },
-        "x-technical-preview": true,
-        "x-available-since": "2.3.0"
+        "x-state": "Technical preview"
       }
     },
     "/{index}/_terms_enum": {
       "get": {
         "tags": [
-          "terms_enum"
+          "search"
         ],
-        "summary": "The terms enum API  can be used to discover terms in the index that begin with the provided string",
-        "description": "It is designed for low-latency look-ups used in auto-complete scenarios.",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/search-terms-enum.html"
-        },
+        "summary": "Get terms in an index",
+        "description": "Discover terms that match a partial string in an index.\nThis \"terms enum\" API is designed for low-latency look-ups used in auto-complete scenarios.\n\nIf the `complete` property in the response is false, the returned terms set may be incomplete and should be treated as approximate.\nThis can occur due to a few reasons, such as a request timeout or a node error.\n\nNOTE: The terms enum API may return terms from deleted documents. Deleted documents are initially only marked as deleted. It is not until their segments are merged that documents are actually deleted. Until that happens, the terms enum API will return terms from these documents.",
         "operationId": "terms-enum",
         "parameters": [
           {
@@ -34671,17 +33525,14 @@
             "$ref": "#/components/responses/terms_enum#200"
           }
         },
-        "x-available-since": "7.14.0"
+        "x-state": "Added in 7.14.0"
       },
       "post": {
         "tags": [
-          "terms_enum"
+          "search"
         ],
-        "summary": "The terms enum API  can be used to discover terms in the index that begin with the provided string",
-        "description": "It is designed for low-latency look-ups used in auto-complete scenarios.",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/search-terms-enum.html"
-        },
+        "summary": "Get terms in an index",
+        "description": "Discover terms that match a partial string in an index.\nThis \"terms enum\" API is designed for low-latency look-ups used in auto-complete scenarios.\n\nIf the `complete` property in the response is false, the returned terms set may be incomplete and should be treated as approximate.\nThis can occur due to a few reasons, such as a request timeout or a node error.\n\nNOTE: The terms enum API may return terms from deleted documents. Deleted documents are initially only marked as deleted. It is not until their segments are merged that documents are actually deleted. Until that happens, the terms enum API will return terms from these documents.",
         "operationId": "terms-enum-1",
         "parameters": [
           {
@@ -34696,19 +33547,16 @@
             "$ref": "#/components/responses/terms_enum#200"
           }
         },
-        "x-available-since": "7.14.0"
+        "x-state": "Added in 7.14.0"
       }
     },
     "/{index}/_termvectors/{id}": {
       "get": {
         "tags": [
-          "termvectors"
+          "document"
         ],
         "summary": "Get term vector information",
-        "description": "Returns information and statistics about terms in the fields of a particular document.",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/master/docs-termvectors.html"
-        },
+        "description": "Get information and statistics about terms in the fields of a particular document.",
         "operationId": "termvectors",
         "parameters": [
           {
@@ -34762,13 +33610,10 @@
       },
       "post": {
         "tags": [
-          "termvectors"
+          "document"
         ],
         "summary": "Get term vector information",
-        "description": "Returns information and statistics about terms in the fields of a particular document.",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/master/docs-termvectors.html"
-        },
+        "description": "Get information and statistics about terms in the fields of a particular document.",
         "operationId": "termvectors-1",
         "parameters": [
           {
@@ -34824,13 +33669,10 @@
     "/{index}/_termvectors": {
       "get": {
         "tags": [
-          "termvectors"
+          "document"
         ],
         "summary": "Get term vector information",
-        "description": "Returns information and statistics about terms in the fields of a particular document.",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/master/docs-termvectors.html"
-        },
+        "description": "Get information and statistics about terms in the fields of a particular document.",
         "operationId": "termvectors-2",
         "parameters": [
           {
@@ -34881,13 +33723,10 @@
       },
       "post": {
         "tags": [
-          "termvectors"
+          "document"
         ],
         "summary": "Get term vector information",
-        "description": "Returns information and statistics about terms in the fields of a particular document.",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/master/docs-termvectors.html"
-        },
+        "description": "Get information and statistics about terms in the fields of a particular document.",
         "operationId": "termvectors-3",
         "parameters": [
           {
@@ -34940,13 +33779,10 @@
     "/_text_structure/find_structure": {
       "post": {
         "tags": [
-          "text_structure.find_structure"
+          "text_structure"
         ],
         "summary": "Finds the structure of a text file",
         "description": "The text file must contain data that is suitable to be ingested into Elasticsearch.",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/find-structure.html"
-        },
         "operationId": "text-structure-find-structure",
         "parameters": [
           {
@@ -35220,18 +34056,15 @@
             }
           }
         },
-        "x-available-since": "7.13.0"
+        "x-state": "Added in 7.13.0"
       }
     },
     "/_text_structure/test_grok_pattern": {
       "get": {
         "tags": [
-          "text_structure.test_grok_pattern"
+          "text_structure"
         ],
         "summary": "Tests a Grok pattern on some text",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/master/test-grok-pattern.html"
-        },
         "operationId": "text-structure-test-grok-pattern",
         "parameters": [
           {
@@ -35246,16 +34079,13 @@
             "$ref": "#/components/responses/text_structure.test_grok_pattern#200"
           }
         },
-        "x-available-since": "8.13.0"
+        "x-state": "Added in 8.13.0"
       },
       "post": {
         "tags": [
-          "text_structure.test_grok_pattern"
+          "text_structure"
         ],
         "summary": "Tests a Grok pattern on some text",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/master/test-grok-pattern.html"
-        },
         "operationId": "text-structure-test-grok-pattern-1",
         "parameters": [
           {
@@ -35270,19 +34100,16 @@
             "$ref": "#/components/responses/text_structure.test_grok_pattern#200"
           }
         },
-        "x-available-since": "8.13.0"
+        "x-state": "Added in 8.13.0"
       }
     },
     "/_transform/{transform_id}": {
       "get": {
         "tags": [
-          "transform.get_transform"
+          "transform"
         ],
         "summary": "Get transforms",
         "description": "Retrieves configuration information for transforms.",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/get-transform.html"
-        },
         "operationId": "transform-get-transform",
         "parameters": [
           {
@@ -35306,17 +34133,14 @@
             "$ref": "#/components/responses/transform.get_transform#200"
           }
         },
-        "x-available-since": "7.5.0"
+        "x-state": "Added in 7.5.0"
       },
       "put": {
         "tags": [
-          "transform.put_transform"
+          "transform"
         ],
         "summary": "Create a transform",
         "description": "Creates a transform.\n\nA transform copies data from source indices, transforms it, and persists it into an entity-centric destination index. You can also think of the destination index as a two-dimensional tabular data structure (known as\na data frame). The ID for each document in the data frame is generated from a hash of the entity, so there is a\nunique row per entity.\n\nYou must choose either the latest or pivot method for your transform; you cannot use both in a single transform. If\nyou choose to use the pivot method for your transform, the entities are defined by the set of `group_by` fields in\nthe pivot object. If you choose to use the latest method, the entities are defined by the `unique_key` field values\nin the latest object.\n\nYou must have `create_index`, `index`, and `read` privileges on the destination index and `read` and\n`view_index_metadata` privileges on the source indices. When Elasticsearch security features are enabled, the\ntransform remembers which roles the user that created it had at the time of creation and uses those same roles. If\nthose roles do not have the required privileges on the source and destination indices, the transform fails when it\nattempts unauthorized operations.\n\nNOTE: You must use Kibana or this API to create a transform. Do not add a transform directly into any\n`.transform-internal*` indices using the Elasticsearch index API. If Elasticsearch security features are enabled, do\nnot give users any privileges on `.transform-internal*` indices. If you used transforms prior to 7.5, also do not\ngive users any privileges on `.data-frame-internal*` indices.",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/put-transform.html"
-        },
         "operationId": "transform-put-transform",
         "parameters": [
           {
@@ -35410,17 +34234,14 @@
             }
           }
         },
-        "x-available-since": "7.2.0"
+        "x-state": "Added in 7.2.0"
       },
       "delete": {
         "tags": [
-          "transform.delete_transform"
+          "transform"
         ],
         "summary": "Delete a transform",
         "description": "Deletes a transform.",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/delete-transform.html"
-        },
         "operationId": "transform-delete-transform",
         "parameters": [
           {
@@ -35477,19 +34298,16 @@
             }
           }
         },
-        "x-available-since": "7.5.0"
+        "x-state": "Added in 7.5.0"
       }
     },
     "/_transform": {
       "get": {
         "tags": [
-          "transform.get_transform"
+          "transform"
         ],
         "summary": "Get transforms",
         "description": "Retrieves configuration information for transforms.",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/get-transform.html"
-        },
         "operationId": "transform-get-transform-1",
         "parameters": [
           {
@@ -35510,19 +34328,16 @@
             "$ref": "#/components/responses/transform.get_transform#200"
           }
         },
-        "x-available-since": "7.5.0"
+        "x-state": "Added in 7.5.0"
       }
     },
     "/_transform/{transform_id}/_stats": {
       "get": {
         "tags": [
-          "transform.get_transform_stats"
+          "transform"
         ],
         "summary": "Get transform stats",
         "description": "Retrieves usage information for transforms.",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/get-transform-stats.html"
-        },
         "operationId": "transform-get-transform-stats",
         "parameters": [
           {
@@ -35604,19 +34419,16 @@
             }
           }
         },
-        "x-available-since": "7.5.0"
+        "x-state": "Added in 7.5.0"
       }
     },
     "/_transform/{transform_id}/_preview": {
       "get": {
         "tags": [
-          "transform.preview_transform"
+          "transform"
         ],
         "summary": "Preview a transform",
         "description": "Generates a preview of the results that you will get when you create a transform with the same configuration.\n\nIt returns a maximum of 100 results. The calculations are based on all the current data in the source index. It also\ngenerates a list of mappings and settings for the destination index. These values are determined based on the field\ntypes of the source index and the transform aggregations.",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/preview-transform.html"
-        },
         "operationId": "transform-preview-transform",
         "parameters": [
           {
@@ -35634,17 +34446,14 @@
             "$ref": "#/components/responses/transform.preview_transform#200"
           }
         },
-        "x-available-since": "7.2.0"
+        "x-state": "Added in 7.2.0"
       },
       "post": {
         "tags": [
-          "transform.preview_transform"
+          "transform"
         ],
         "summary": "Preview a transform",
         "description": "Generates a preview of the results that you will get when you create a transform with the same configuration.\n\nIt returns a maximum of 100 results. The calculations are based on all the current data in the source index. It also\ngenerates a list of mappings and settings for the destination index. These values are determined based on the field\ntypes of the source index and the transform aggregations.",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/preview-transform.html"
-        },
         "operationId": "transform-preview-transform-1",
         "parameters": [
           {
@@ -35662,19 +34471,16 @@
             "$ref": "#/components/responses/transform.preview_transform#200"
           }
         },
-        "x-available-since": "7.2.0"
+        "x-state": "Added in 7.2.0"
       }
     },
     "/_transform/_preview": {
       "get": {
         "tags": [
-          "transform.preview_transform"
+          "transform"
         ],
         "summary": "Preview a transform",
         "description": "Generates a preview of the results that you will get when you create a transform with the same configuration.\n\nIt returns a maximum of 100 results. The calculations are based on all the current data in the source index. It also\ngenerates a list of mappings and settings for the destination index. These values are determined based on the field\ntypes of the source index and the transform aggregations.",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/preview-transform.html"
-        },
         "operationId": "transform-preview-transform-2",
         "parameters": [
           {
@@ -35689,17 +34495,14 @@
             "$ref": "#/components/responses/transform.preview_transform#200"
           }
         },
-        "x-available-since": "7.2.0"
+        "x-state": "Added in 7.2.0"
       },
       "post": {
         "tags": [
-          "transform.preview_transform"
+          "transform"
         ],
         "summary": "Preview a transform",
         "description": "Generates a preview of the results that you will get when you create a transform with the same configuration.\n\nIt returns a maximum of 100 results. The calculations are based on all the current data in the source index. It also\ngenerates a list of mappings and settings for the destination index. These values are determined based on the field\ntypes of the source index and the transform aggregations.",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/preview-transform.html"
-        },
         "operationId": "transform-preview-transform-3",
         "parameters": [
           {
@@ -35714,19 +34517,16 @@
             "$ref": "#/components/responses/transform.preview_transform#200"
           }
         },
-        "x-available-since": "7.2.0"
+        "x-state": "Added in 7.2.0"
       }
     },
     "/_transform/{transform_id}/_reset": {
       "post": {
         "tags": [
-          "transform.reset_transform"
+          "transform"
         ],
         "summary": "Reset a transform",
         "description": "Resets a transform.\nBefore you can reset it, you must stop it; alternatively, use the `force` query parameter.\nIf the destination index was created by the transform, it is deleted.",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/reset-transform.html"
-        },
         "operationId": "transform-reset-transform",
         "parameters": [
           {
@@ -35763,19 +34563,16 @@
             }
           }
         },
-        "x-available-since": "8.1.0"
+        "x-state": "Added in 8.1.0"
       }
     },
     "/_transform/{transform_id}/_schedule_now": {
       "post": {
         "tags": [
-          "transform.schedule_now_transform"
+          "transform"
         ],
         "summary": "Schedule a transform to start now",
         "description": "Instantly runs a transform to process data.\n\nIf you _schedule_now a transform, it will process the new data instantly,\nwithout waiting for the configured frequency interval. After _schedule_now API is called,\nthe transform will be processed again at now + frequency unless _schedule_now API\nis called again in the meantime.",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/schedule-now-transform.html"
-        },
         "operationId": "transform-schedule-now-transform",
         "parameters": [
           {
@@ -35812,19 +34609,16 @@
             }
           }
         },
-        "x-available-since": "8.7.0"
+        "x-state": "Added in 8.7.0"
       }
     },
     "/_transform/{transform_id}/_start": {
       "post": {
         "tags": [
-          "transform.start_transform"
+          "transform"
         ],
         "summary": "Start a transform",
         "description": "Starts a transform.\n\nWhen you start a transform, it creates the destination index if it does not already exist. The `number_of_shards` is\nset to `1` and the `auto_expand_replicas` is set to `0-1`. If it is a pivot transform, it deduces the mapping\ndefinitions for the destination index from the source indices and the transform aggregations. If fields in the\ndestination index are derived from scripts (as in the case of `scripted_metric` or `bucket_script` aggregations),\nthe transform uses dynamic mappings unless an index template exists. If it is a latest transform, it does not deduce\nmapping definitions; it uses dynamic mappings. To use explicit mappings, create the destination index before you\nstart the transform. Alternatively, you can create an index template, though it does not affect the deduced mappings\nin a pivot transform.\n\nWhen the transform starts, a series of validations occur to ensure its success. If you deferred validation when you\ncreated the transform, they occur when you start the transform—​with the exception of privilege checks. When\nElasticsearch security features are enabled, the transform remembers which roles the user that created it had at the\ntime of creation and uses those same roles. If those roles do not have the required privileges on the source and\ndestination indices, the transform fails when it attempts unauthorized operations.",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/start-transform.html"
-        },
         "operationId": "transform-start-transform",
         "parameters": [
           {
@@ -35871,19 +34665,16 @@
             }
           }
         },
-        "x-available-since": "7.5.0"
+        "x-state": "Added in 7.5.0"
       }
     },
     "/_transform/{transform_id}/_stop": {
       "post": {
         "tags": [
-          "transform.stop_transform"
+          "transform"
         ],
         "summary": "Stop transforms",
         "description": "Stops one or more transforms.",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/stop-transform.html"
-        },
         "operationId": "transform-stop-transform",
         "parameters": [
           {
@@ -35960,19 +34751,16 @@
             }
           }
         },
-        "x-available-since": "7.5.0"
+        "x-state": "Added in 7.5.0"
       }
     },
     "/_transform/{transform_id}/_update": {
       "post": {
         "tags": [
-          "transform.update_transform"
+          "transform"
         ],
         "summary": "Update a transform",
         "description": "Updates certain properties of a transform.\n\nAll updated properties except `description` do not take effect until after the transform starts the next checkpoint,\nthus there is data consistency in each checkpoint. To use this API, you must have `read` and `view_index_metadata`\nprivileges for the source indices. You must also have `index` and `read` privileges for the destination index. When\nElasticsearch security features are enabled, the transform remembers which roles the user who updated it had at the\ntime of update and runs with those privileges.",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/update-transform.html"
-        },
         "operationId": "transform-update-transform",
         "parameters": [
           {
@@ -36118,19 +34906,16 @@
             }
           }
         },
-        "x-available-since": "7.2.0"
+        "x-state": "Added in 7.2.0"
       }
     },
     "/_transform/_upgrade": {
       "post": {
         "tags": [
-          "transform.upgrade_transforms"
+          "transform"
         ],
         "summary": "Upgrades all transforms",
         "description": "This API identifies transforms that have a legacy configuration format and upgrades them to the latest version. It\nalso cleans up the internal data structures that store the transform state and checkpoints. The upgrade does not\naffect the source and destination indices. The upgrade also does not affect the roles that transforms use when\nElasticsearch security features are enabled; the role used to read source data and write to the destination index\nremains unchanged.",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/upgrade-transforms.html"
-        },
         "operationId": "transform-upgrade-transforms",
         "parameters": [
           {
@@ -36185,19 +34970,16 @@
             }
           }
         },
-        "x-available-since": "7.16.0"
+        "x-state": "Added in 7.16.0"
       }
     },
     "/{index}/_update/{id}": {
       "post": {
         "tags": [
-          "update"
+          "document"
         ],
         "summary": "Update a document",
         "description": "Updates a document by running a script or passing a partial document.",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/master/docs-update.html"
-        },
         "operationId": "update",
         "parameters": [
           {
@@ -36398,13 +35180,10 @@
     "/{index}/_update_by_query": {
       "post": {
         "tags": [
-          "update_by_query"
+          "document"
         ],
         "summary": "Update documents",
         "description": "Updates documents that match the specified query.\nIf no query is specified, performs an update on every document in the data stream or index without modifying the source, which is useful for picking up mapping changes.",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/master/docs-update-by-query.html"
-        },
         "operationId": "update-by-query",
         "parameters": [
           {
@@ -36827,18 +35606,16 @@
             }
           }
         },
-        "x-available-since": "2.4.0"
+        "x-state": "Added in 2.4.0"
       }
     },
     "/_update_by_query/{task_id}/_rethrottle": {
       "post": {
         "tags": [
-          "update_by_query_rethrottle"
+          "document"
         ],
-        "summary": "Changes the number of requests per second for a particular Update By Query operation",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/docs-update-by-query.html"
-        },
+        "summary": "Throttle an update by query operation",
+        "description": "Change the number of requests per second for a particular update by query operation.\nRethrottling that speeds up the query takes effect immediately but rethrotting that slows down the query takes effect after completing the current batch to prevent scroll timeouts.",
         "operationId": "update-by-query-rethrottle",
         "parameters": [
           {
@@ -36886,18 +35663,15 @@
             }
           }
         },
-        "x-available-since": "6.5.0"
+        "x-state": "Added in 6.5.0"
       }
     },
     "/_watcher/watch/{watch_id}/_ack": {
       "put": {
         "tags": [
-          "watcher.ack_watch"
+          "watcher"
         ],
         "summary": "Acknowledges a watch, manually throttling the execution of the watch's actions",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/watcher-api-ack-watch.html"
-        },
         "operationId": "watcher-ack-watch",
         "parameters": [
           {
@@ -36912,12 +35686,9 @@
       },
       "post": {
         "tags": [
-          "watcher.ack_watch"
+          "watcher"
         ],
         "summary": "Acknowledges a watch, manually throttling the execution of the watch's actions",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/watcher-api-ack-watch.html"
-        },
         "operationId": "watcher-ack-watch-1",
         "parameters": [
           {
@@ -36934,12 +35705,9 @@
     "/_watcher/watch/{watch_id}/_ack/{action_id}": {
       "put": {
         "tags": [
-          "watcher.ack_watch"
+          "watcher"
         ],
         "summary": "Acknowledges a watch, manually throttling the execution of the watch's actions",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/watcher-api-ack-watch.html"
-        },
         "operationId": "watcher-ack-watch-2",
         "parameters": [
           {
@@ -36957,12 +35725,9 @@
       },
       "post": {
         "tags": [
-          "watcher.ack_watch"
+          "watcher"
         ],
         "summary": "Acknowledges a watch, manually throttling the execution of the watch's actions",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/watcher-api-ack-watch.html"
-        },
         "operationId": "watcher-ack-watch-3",
         "parameters": [
           {
@@ -36982,12 +35747,9 @@
     "/_watcher/watch/{watch_id}/_activate": {
       "put": {
         "tags": [
-          "watcher.activate_watch"
+          "watcher"
         ],
         "summary": "Activates a currently inactive watch",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/watcher-api-activate-watch.html"
-        },
         "operationId": "watcher-activate-watch",
         "parameters": [
           {
@@ -37002,12 +35764,9 @@
       },
       "post": {
         "tags": [
-          "watcher.activate_watch"
+          "watcher"
         ],
         "summary": "Activates a currently inactive watch",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/watcher-api-activate-watch.html"
-        },
         "operationId": "watcher-activate-watch-1",
         "parameters": [
           {
@@ -37024,12 +35783,9 @@
     "/_watcher/watch/{watch_id}/_deactivate": {
       "put": {
         "tags": [
-          "watcher.deactivate_watch"
+          "watcher"
         ],
         "summary": "Deactivates a currently active watch",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/watcher-api-deactivate-watch.html"
-        },
         "operationId": "watcher-deactivate-watch",
         "parameters": [
           {
@@ -37044,12 +35800,9 @@
       },
       "post": {
         "tags": [
-          "watcher.deactivate_watch"
+          "watcher"
         ],
         "summary": "Deactivates a currently active watch",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/watcher-api-deactivate-watch.html"
-        },
         "operationId": "watcher-deactivate-watch-1",
         "parameters": [
           {
@@ -37066,12 +35819,9 @@
     "/_watcher/watch/{id}": {
       "get": {
         "tags": [
-          "watcher.get_watch"
+          "watcher"
         ],
         "summary": "Retrieves a watch by its ID",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/watcher-api-get-watch.html"
-        },
         "operationId": "watcher-get-watch",
         "parameters": [
           {
@@ -37125,16 +35875,13 @@
             }
           }
         },
-        "x-available-since": "5.6.0"
+        "x-state": "Added in 5.6.0"
       },
       "put": {
         "tags": [
-          "watcher.put_watch"
+          "watcher"
         ],
         "summary": "Creates a new watch, or updates an existing one",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/watcher-api-put-watch.html"
-        },
         "operationId": "watcher-put-watch",
         "parameters": [
           {
@@ -37164,12 +35911,9 @@
       },
       "post": {
         "tags": [
-          "watcher.put_watch"
+          "watcher"
         ],
         "summary": "Creates a new watch, or updates an existing one",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/watcher-api-put-watch.html"
-        },
         "operationId": "watcher-put-watch-1",
         "parameters": [
           {
@@ -37199,12 +35943,9 @@
       },
       "delete": {
         "tags": [
-          "watcher.delete_watch"
+          "watcher"
         ],
         "summary": "Removes a watch from Watcher",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/watcher-api-delete-watch.html"
-        },
         "operationId": "watcher-delete-watch",
         "parameters": [
           {
@@ -37252,13 +35993,10 @@
     "/_watcher/watch/{id}/_execute": {
       "put": {
         "tags": [
-          "watcher.execute_watch"
+          "watcher"
         ],
         "summary": "This API can be used to force execution of the watch outside of its triggering logic or to simulate the watch execution for debugging purposes",
         "description": "For testing and debugging purposes, you also have fine-grained control on how the watch runs. You can execute the watch without executing all of its actions or alternatively by simulating them. You can also force execution by ignoring the watch condition and control whether a watch record would be written to the watch history after execution.",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/watcher-api-execute-watch.html"
-        },
         "operationId": "watcher-execute-watch",
         "parameters": [
           {
@@ -37279,13 +36017,10 @@
       },
       "post": {
         "tags": [
-          "watcher.execute_watch"
+          "watcher"
         ],
         "summary": "This API can be used to force execution of the watch outside of its triggering logic or to simulate the watch execution for debugging purposes",
         "description": "For testing and debugging purposes, you also have fine-grained control on how the watch runs. You can execute the watch without executing all of its actions or alternatively by simulating them. You can also force execution by ignoring the watch condition and control whether a watch record would be written to the watch history after execution.",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/watcher-api-execute-watch.html"
-        },
         "operationId": "watcher-execute-watch-1",
         "parameters": [
           {
@@ -37308,13 +36043,10 @@
     "/_watcher/watch/_execute": {
       "put": {
         "tags": [
-          "watcher.execute_watch"
+          "watcher"
         ],
         "summary": "This API can be used to force execution of the watch outside of its triggering logic or to simulate the watch execution for debugging purposes",
         "description": "For testing and debugging purposes, you also have fine-grained control on how the watch runs. You can execute the watch without executing all of its actions or alternatively by simulating them. You can also force execution by ignoring the watch condition and control whether a watch record would be written to the watch history after execution.",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/watcher-api-execute-watch.html"
-        },
         "operationId": "watcher-execute-watch-2",
         "parameters": [
           {
@@ -37332,13 +36064,10 @@
       },
       "post": {
         "tags": [
-          "watcher.execute_watch"
+          "watcher"
         ],
         "summary": "This API can be used to force execution of the watch outside of its triggering logic or to simulate the watch execution for debugging purposes",
         "description": "For testing and debugging purposes, you also have fine-grained control on how the watch runs. You can execute the watch without executing all of its actions or alternatively by simulating them. You can also force execution by ignoring the watch condition and control whether a watch record would be written to the watch history after execution.",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/watcher-api-execute-watch.html"
-        },
         "operationId": "watcher-execute-watch-3",
         "parameters": [
           {
@@ -37358,12 +36087,9 @@
     "/_watcher/_query/watches": {
       "get": {
         "tags": [
-          "watcher.query_watches"
+          "watcher"
         ],
         "summary": "Retrieves stored watches",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/watcher-api-query-watches.html"
-        },
         "operationId": "watcher-query-watches",
         "requestBody": {
           "$ref": "#/components/requestBodies/watcher.query_watches"
@@ -37373,16 +36099,13 @@
             "$ref": "#/components/responses/watcher.query_watches#200"
           }
         },
-        "x-available-since": "7.11.0"
+        "x-state": "Added in 7.11.0"
       },
       "post": {
         "tags": [
-          "watcher.query_watches"
+          "watcher"
         ],
         "summary": "Retrieves stored watches",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/watcher-api-query-watches.html"
-        },
         "operationId": "watcher-query-watches-1",
         "requestBody": {
           "$ref": "#/components/requestBodies/watcher.query_watches"
@@ -37392,18 +36115,15 @@
             "$ref": "#/components/responses/watcher.query_watches#200"
           }
         },
-        "x-available-since": "7.11.0"
+        "x-state": "Added in 7.11.0"
       }
     },
     "/_watcher/_start": {
       "post": {
         "tags": [
-          "watcher.start"
+          "watcher"
         ],
         "summary": "Starts Watcher if it is not already running",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/watcher-api-start.html"
-        },
         "operationId": "watcher-start",
         "responses": {
           "200": {
@@ -37422,12 +36142,9 @@
     "/_watcher/stats": {
       "get": {
         "tags": [
-          "watcher.stats"
+          "watcher"
         ],
         "summary": "Retrieves the current Watcher metrics",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/watcher-api-stats.html"
-        },
         "operationId": "watcher-stats",
         "parameters": [
           {
@@ -37442,18 +36159,15 @@
             "$ref": "#/components/responses/watcher.stats#200"
           }
         },
-        "x-available-since": "5.5.0"
+        "x-state": "Added in 5.5.0"
       }
     },
     "/_watcher/stats/{metric}": {
       "get": {
         "tags": [
-          "watcher.stats"
+          "watcher"
         ],
         "summary": "Retrieves the current Watcher metrics",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/watcher-api-stats.html"
-        },
         "operationId": "watcher-stats-1",
         "parameters": [
           {
@@ -37471,18 +36185,15 @@
             "$ref": "#/components/responses/watcher.stats#200"
           }
         },
-        "x-available-since": "5.5.0"
+        "x-state": "Added in 5.5.0"
       }
     },
     "/_watcher/_stop": {
       "post": {
         "tags": [
-          "watcher.stop"
+          "watcher"
         ],
         "summary": "Stops Watcher if it is running",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/watcher-api-stop.html"
-        },
         "operationId": "watcher-stop",
         "responses": {
           "200": {
@@ -37501,12 +36212,9 @@
     "/_xpack": {
       "get": {
         "tags": [
-          "xpack.info"
+          "xpack"
         ],
         "summary": "Provides general information about the installed X-Pack features",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/info-api.html"
-        },
         "operationId": "xpack-info",
         "parameters": [
           {
@@ -37517,7 +36225,7 @@
             "schema": {
               "type": "array",
               "items": {
-                "type": "string"
+                "$ref": "#/components/schemas/xpack.info:XPackCategory"
               }
             },
             "style": "form"
@@ -37580,12 +36288,9 @@
     "/_xpack/usage": {
       "get": {
         "tags": [
-          "xpack.usage"
+          "xpack"
         ],
         "summary": "This API provides information about which features are currently enabled and available under the current license and some usage statistics",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/usage-api.html"
-        },
         "operationId": "xpack-usage",
         "parameters": [
           {
@@ -37744,9 +36449,6 @@
         ]
       },
       "_types:Duration": {
-        "externalDocs": {
-          "url": "https://github.com/elastic/elasticsearch/blob/current/libs/core/src/main/java/org/elasticsearch/core/TimeValue.java"
-        },
         "description": "A duration. Units can be `nanos`, `micros`, `ms` (milliseconds), `s` (seconds), `m` (minutes), `h` (hours) and\n`d` (days). Also accepts \"0\" without a unit and \"-1\" to indicate an unspecified value.",
         "oneOf": [
           {
@@ -37852,6 +36554,9 @@
         ]
       },
       "_types.aggregations:Aggregate": {
+        "externalDocs": {
+          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/search-aggregations.html"
+        },
         "oneOf": [
           {
             "$ref": "#/components/schemas/_types.aggregations:CardinalityAggregate"
@@ -40930,10 +39635,7 @@
               {
                 "type": "object",
                 "additionalProperties": {
-                  "type": "array",
-                  "items": {
-                    "type": "number"
-                  }
+                  "type": "number"
                 }
               }
             ]
@@ -40952,7 +39654,7 @@
             "additionalProperties": {
               "type": "array",
               "items": {
-                "type": "string"
+                "$ref": "#/components/schemas/_types:FieldValue"
               }
             }
           },
@@ -41760,23 +40462,42 @@
               "$ref": "#/components/schemas/_global.search._types:AggregationProfile"
             }
           },
+          "cluster": {
+            "type": "string"
+          },
+          "dfs": {
+            "$ref": "#/components/schemas/_global.search._types:DfsProfile"
+          },
+          "fetch": {
+            "$ref": "#/components/schemas/_global.search._types:FetchProfile"
+          },
           "id": {
             "type": "string"
           },
+          "index": {
+            "$ref": "#/components/schemas/_types:IndexName"
+          },
+          "node_id": {
+            "$ref": "#/components/schemas/_types:NodeId"
+          },
           "searches": {
             "type": "array",
             "items": {
               "$ref": "#/components/schemas/_global.search._types:SearchProfile"
             }
           },
-          "fetch": {
-            "$ref": "#/components/schemas/_global.search._types:FetchProfile"
+          "shard_id": {
+            "type": "number"
           }
         },
         "required": [
           "aggregations",
+          "cluster",
           "id",
-          "searches"
+          "index",
+          "node_id",
+          "searches",
+          "shard_id"
         ]
       },
       "_global.search._types:AggregationProfile": {
@@ -41967,6 +40688,18 @@
           },
           "map_reducer": {
             "type": "string"
+          },
+          "brute_force_used": {
+            "type": "number"
+          },
+          "dynamic_pruning_attempted": {
+            "type": "number"
+          },
+          "dynamic_pruning_used": {
+            "type": "number"
+          },
+          "skipped_due_to_no_data": {
+            "type": "number"
           }
         }
       },
@@ -41987,6 +40720,356 @@
           }
         }
       },
+      "_global.search._types:DfsProfile": {
+        "type": "object",
+        "properties": {
+          "statistics": {
+            "$ref": "#/components/schemas/_global.search._types:DfsStatisticsProfile"
+          },
+          "knn": {
+            "type": "array",
+            "items": {
+              "$ref": "#/components/schemas/_global.search._types:DfsKnnProfile"
+            }
+          }
+        }
+      },
+      "_global.search._types:DfsStatisticsProfile": {
+        "type": "object",
+        "properties": {
+          "type": {
+            "type": "string"
+          },
+          "description": {
+            "type": "string"
+          },
+          "time": {
+            "$ref": "#/components/schemas/_types:Duration"
+          },
+          "time_in_nanos": {
+            "$ref": "#/components/schemas/_types:DurationValueUnitNanos"
+          },
+          "breakdown": {
+            "$ref": "#/components/schemas/_global.search._types:DfsStatisticsBreakdown"
+          },
+          "debug": {
+            "type": "object",
+            "additionalProperties": {
+              "type": "object"
+            }
+          },
+          "children": {
+            "type": "array",
+            "items": {
+              "$ref": "#/components/schemas/_global.search._types:DfsStatisticsProfile"
+            }
+          }
+        },
+        "required": [
+          "type",
+          "description",
+          "time_in_nanos",
+          "breakdown"
+        ]
+      },
+      "_global.search._types:DfsStatisticsBreakdown": {
+        "type": "object",
+        "properties": {
+          "collection_statistics": {
+            "type": "number"
+          },
+          "collection_statistics_count": {
+            "type": "number"
+          },
+          "create_weight": {
+            "type": "number"
+          },
+          "create_weight_count": {
+            "type": "number"
+          },
+          "rewrite": {
+            "type": "number"
+          },
+          "rewrite_count": {
+            "type": "number"
+          },
+          "term_statistics": {
+            "type": "number"
+          },
+          "term_statistics_count": {
+            "type": "number"
+          }
+        },
+        "required": [
+          "collection_statistics",
+          "collection_statistics_count",
+          "create_weight",
+          "create_weight_count",
+          "rewrite",
+          "rewrite_count",
+          "term_statistics",
+          "term_statistics_count"
+        ]
+      },
+      "_global.search._types:DfsKnnProfile": {
+        "type": "object",
+        "properties": {
+          "vector_operations_count": {
+            "type": "number"
+          },
+          "query": {
+            "type": "array",
+            "items": {
+              "$ref": "#/components/schemas/_global.search._types:KnnQueryProfileResult"
+            }
+          },
+          "rewrite_time": {
+            "type": "number"
+          },
+          "collector": {
+            "type": "array",
+            "items": {
+              "$ref": "#/components/schemas/_global.search._types:KnnCollectorResult"
+            }
+          }
+        },
+        "required": [
+          "query",
+          "rewrite_time",
+          "collector"
+        ]
+      },
+      "_global.search._types:KnnQueryProfileResult": {
+        "type": "object",
+        "properties": {
+          "type": {
+            "type": "string"
+          },
+          "description": {
+            "type": "string"
+          },
+          "time": {
+            "$ref": "#/components/schemas/_types:Duration"
+          },
+          "time_in_nanos": {
+            "$ref": "#/components/schemas/_types:DurationValueUnitNanos"
+          },
+          "breakdown": {
+            "$ref": "#/components/schemas/_global.search._types:KnnQueryProfileBreakdown"
+          },
+          "debug": {
+            "type": "object",
+            "additionalProperties": {
+              "type": "object"
+            }
+          },
+          "children": {
+            "type": "array",
+            "items": {
+              "$ref": "#/components/schemas/_global.search._types:KnnQueryProfileResult"
+            }
+          }
+        },
+        "required": [
+          "type",
+          "description",
+          "time_in_nanos",
+          "breakdown"
+        ]
+      },
+      "_global.search._types:KnnQueryProfileBreakdown": {
+        "type": "object",
+        "properties": {
+          "advance": {
+            "type": "number"
+          },
+          "advance_count": {
+            "type": "number"
+          },
+          "build_scorer": {
+            "type": "number"
+          },
+          "build_scorer_count": {
+            "type": "number"
+          },
+          "compute_max_score": {
+            "type": "number"
+          },
+          "compute_max_score_count": {
+            "type": "number"
+          },
+          "count_weight": {
+            "type": "number"
+          },
+          "count_weight_count": {
+            "type": "number"
+          },
+          "create_weight": {
+            "type": "number"
+          },
+          "create_weight_count": {
+            "type": "number"
+          },
+          "match": {
+            "type": "number"
+          },
+          "match_count": {
+            "type": "number"
+          },
+          "next_doc": {
+            "type": "number"
+          },
+          "next_doc_count": {
+            "type": "number"
+          },
+          "score": {
+            "type": "number"
+          },
+          "score_count": {
+            "type": "number"
+          },
+          "set_min_competitive_score": {
+            "type": "number"
+          },
+          "set_min_competitive_score_count": {
+            "type": "number"
+          },
+          "shallow_advance": {
+            "type": "number"
+          },
+          "shallow_advance_count": {
+            "type": "number"
+          }
+        },
+        "required": [
+          "advance",
+          "advance_count",
+          "build_scorer",
+          "build_scorer_count",
+          "compute_max_score",
+          "compute_max_score_count",
+          "count_weight",
+          "count_weight_count",
+          "create_weight",
+          "create_weight_count",
+          "match",
+          "match_count",
+          "next_doc",
+          "next_doc_count",
+          "score",
+          "score_count",
+          "set_min_competitive_score",
+          "set_min_competitive_score_count",
+          "shallow_advance",
+          "shallow_advance_count"
+        ]
+      },
+      "_global.search._types:KnnCollectorResult": {
+        "type": "object",
+        "properties": {
+          "name": {
+            "type": "string"
+          },
+          "reason": {
+            "type": "string"
+          },
+          "time": {
+            "$ref": "#/components/schemas/_types:Duration"
+          },
+          "time_in_nanos": {
+            "$ref": "#/components/schemas/_types:DurationValueUnitNanos"
+          },
+          "children": {
+            "type": "array",
+            "items": {
+              "$ref": "#/components/schemas/_global.search._types:KnnCollectorResult"
+            }
+          }
+        },
+        "required": [
+          "name",
+          "reason",
+          "time_in_nanos"
+        ]
+      },
+      "_global.search._types:FetchProfile": {
+        "type": "object",
+        "properties": {
+          "type": {
+            "type": "string"
+          },
+          "description": {
+            "type": "string"
+          },
+          "time_in_nanos": {
+            "$ref": "#/components/schemas/_types:DurationValueUnitNanos"
+          },
+          "breakdown": {
+            "$ref": "#/components/schemas/_global.search._types:FetchProfileBreakdown"
+          },
+          "debug": {
+            "$ref": "#/components/schemas/_global.search._types:FetchProfileDebug"
+          },
+          "children": {
+            "type": "array",
+            "items": {
+              "$ref": "#/components/schemas/_global.search._types:FetchProfile"
+            }
+          }
+        },
+        "required": [
+          "type",
+          "description",
+          "time_in_nanos",
+          "breakdown"
+        ]
+      },
+      "_global.search._types:FetchProfileBreakdown": {
+        "type": "object",
+        "properties": {
+          "load_source": {
+            "type": "number"
+          },
+          "load_source_count": {
+            "type": "number"
+          },
+          "load_stored_fields": {
+            "type": "number"
+          },
+          "load_stored_fields_count": {
+            "type": "number"
+          },
+          "next_reader": {
+            "type": "number"
+          },
+          "next_reader_count": {
+            "type": "number"
+          },
+          "process_count": {
+            "type": "number"
+          },
+          "process": {
+            "type": "number"
+          }
+        }
+      },
+      "_global.search._types:FetchProfileDebug": {
+        "type": "object",
+        "properties": {
+          "stored_fields": {
+            "type": "array",
+            "items": {
+              "type": "string"
+            }
+          },
+          "fast_path": {
+            "type": "number"
+          }
+        }
+      },
+      "_types:NodeId": {
+        "type": "string"
+      },
       "_global.search._types:SearchProfile": {
         "type": "object",
         "properties": {
@@ -42117,6 +41200,12 @@
           "compute_max_score_count": {
             "type": "number"
           },
+          "count_weight": {
+            "type": "number"
+          },
+          "count_weight_count": {
+            "type": "number"
+          },
           "set_min_competitive_score": {
             "type": "number"
           },
@@ -42141,85 +41230,12 @@
           "score_count",
           "compute_max_score",
           "compute_max_score_count",
+          "count_weight",
+          "count_weight_count",
           "set_min_competitive_score",
           "set_min_competitive_score_count"
         ]
       },
-      "_global.search._types:FetchProfile": {
-        "type": "object",
-        "properties": {
-          "type": {
-            "type": "string"
-          },
-          "description": {
-            "type": "string"
-          },
-          "time_in_nanos": {
-            "$ref": "#/components/schemas/_types:DurationValueUnitNanos"
-          },
-          "breakdown": {
-            "$ref": "#/components/schemas/_global.search._types:FetchProfileBreakdown"
-          },
-          "debug": {
-            "$ref": "#/components/schemas/_global.search._types:FetchProfileDebug"
-          },
-          "children": {
-            "type": "array",
-            "items": {
-              "$ref": "#/components/schemas/_global.search._types:FetchProfile"
-            }
-          }
-        },
-        "required": [
-          "type",
-          "description",
-          "time_in_nanos",
-          "breakdown"
-        ]
-      },
-      "_global.search._types:FetchProfileBreakdown": {
-        "type": "object",
-        "properties": {
-          "load_source": {
-            "type": "number"
-          },
-          "load_source_count": {
-            "type": "number"
-          },
-          "load_stored_fields": {
-            "type": "number"
-          },
-          "load_stored_fields_count": {
-            "type": "number"
-          },
-          "next_reader": {
-            "type": "number"
-          },
-          "next_reader_count": {
-            "type": "number"
-          },
-          "process_count": {
-            "type": "number"
-          },
-          "process": {
-            "type": "number"
-          }
-        }
-      },
-      "_global.search._types:FetchProfileDebug": {
-        "type": "object",
-        "properties": {
-          "stored_fields": {
-            "type": "array",
-            "items": {
-              "type": "string"
-            }
-          },
-          "fast_path": {
-            "type": "number"
-          }
-        }
-      },
       "_types:ScrollId": {
         "type": "string"
       },
@@ -42312,9 +41328,6 @@
         ]
       },
       "_global.search._types:Context": {
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-mlt-query.html#_document_input_parameters"
-        },
         "description": "Text or location that we want similar documents for or a lookup to a document's field for the text.",
         "oneOf": [
           {
@@ -42820,6 +41833,9 @@
               "reverse_nested": {
                 "$ref": "#/components/schemas/_types.aggregations:ReverseNestedAggregation"
               },
+              "random_sampler": {
+                "$ref": "#/components/schemas/_types.aggregations:RandomSamplerAggregation"
+              },
               "sampler": {
                 "$ref": "#/components/schemas/_types.aggregations:SamplerAggregation"
               },
@@ -42960,6 +41976,15 @@
           "geo_distance": {
             "$ref": "#/components/schemas/_types.query_dsl:GeoDistanceQuery"
           },
+          "geo_grid": {
+            "description": "Matches `geo_point` and `geo_shape` values that intersect a grid cell from a GeoGrid aggregation.",
+            "type": "object",
+            "additionalProperties": {
+              "$ref": "#/components/schemas/_types.query_dsl:GeoGridQuery"
+            },
+            "minProperties": 1,
+            "maxProperties": 1
+          },
           "geo_polygon": {
             "$ref": "#/components/schemas/_types.query_dsl:GeoPolygonQuery"
           },
@@ -43194,7 +42219,6 @@
               "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-text-expansion-query.html"
             },
             "description": "Uses a natural language processing model to convert the query text into a list of token-weight pairs which are then used in a query against a sparse vector or rank features field.",
-            "x-available-since": "8.8.0",
             "type": "object",
             "additionalProperties": {
               "$ref": "#/components/schemas/_types.query_dsl:TextExpansionQuery"
@@ -43204,8 +42228,10 @@
           },
           "weighted_tokens": {
             "deprecated": true,
+            "externalDocs": {
+              "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-weighted-tokens-query.html"
+            },
             "description": "Supports returning text_expansion query results by sending in precomputed tokens with the query.",
-            "x-available-since": "8.13.0",
             "type": "object",
             "additionalProperties": {
               "$ref": "#/components/schemas/_types.query_dsl:WeightedTokensQuery"
@@ -43307,9 +42333,6 @@
         ]
       },
       "_types:MinimumShouldMatch": {
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-minimum-should-match.html"
-        },
         "description": "The minimum number of terms that should match as integer, percentage or range",
         "oneOf": [
           {
@@ -43491,6 +42514,9 @@
         ]
       },
       "_types.query_dsl:DistanceFeatureQuery": {
+        "externalDocs": {
+          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-distance-feature-query.html"
+        },
         "oneOf": [
           {
             "$ref": "#/components/schemas/_types.query_dsl:UntypedDistanceFeatureQuery"
@@ -43990,15 +43016,9 @@
         ]
       },
       "_types:MultiTermQueryRewrite": {
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-multi-term-rewrite.html"
-        },
         "type": "string"
       },
       "_types:Fuzziness": {
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/common-options.html#fuzziness"
-        },
         "oneOf": [
           {
             "type": "string"
@@ -44080,6 +43100,29 @@
           "plane"
         ]
       },
+      "_types.query_dsl:GeoGridQuery": {
+        "allOf": [
+          {
+            "$ref": "#/components/schemas/_types.query_dsl:QueryBase"
+          },
+          {
+            "type": "object",
+            "properties": {
+              "geogrid": {
+                "$ref": "#/components/schemas/_types:GeoTile"
+              },
+              "geohash": {
+                "$ref": "#/components/schemas/_types:GeoHash"
+              },
+              "geohex": {
+                "$ref": "#/components/schemas/_types:GeoHexCell"
+              }
+            },
+            "minProperties": 1,
+            "maxProperties": 1
+          }
+        ]
+      },
       "_types.query_dsl:GeoPolygonQuery": {
         "allOf": [
           {
@@ -44486,9 +43529,6 @@
         ]
       },
       "_types:SortOptions": {
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/sort-search-results.html"
-        },
         "type": "object",
         "properties": {
           "_score": {
@@ -44722,6 +43762,9 @@
             "$ref": "#/components/schemas/_types.query_dsl:QueryBase"
           },
           {
+            "externalDocs": {
+              "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-intervals-query.html"
+            },
             "type": "object",
             "properties": {
               "all_of": {
@@ -44855,9 +43898,6 @@
         "type": "object",
         "properties": {
           "analyzer": {
-            "externalDocs": {
-              "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/analysis.html"
-            },
             "description": "Analyzer used to normalize the term.",
             "type": "string"
           },
@@ -44888,9 +43928,6 @@
         "type": "object",
         "properties": {
           "analyzer": {
-            "externalDocs": {
-              "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/analysis.html"
-            },
             "description": "Analyzer used to analyze terms in the query.",
             "type": "string"
           },
@@ -44921,9 +43958,6 @@
         "type": "object",
         "properties": {
           "analyzer": {
-            "externalDocs": {
-              "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/analysis.html"
-            },
             "description": "Analyzer used to analyze the `prefix`.",
             "type": "string"
           },
@@ -45048,9 +44082,6 @@
             "type": "object",
             "properties": {
               "analyzer": {
-                "externalDocs": {
-                  "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/analysis.html"
-                },
                 "description": "Analyzer used to convert the text in the query value into tokens.",
                 "type": "string"
               },
@@ -45140,9 +44171,6 @@
             "type": "object",
             "properties": {
               "analyzer": {
-                "externalDocs": {
-                  "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/analysis.html"
-                },
                 "description": "Analyzer used to convert the text in the query value into tokens.",
                 "type": "string"
               },
@@ -45200,9 +44228,6 @@
             "type": "object",
             "properties": {
               "analyzer": {
-                "externalDocs": {
-                  "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/analysis.html"
-                },
                 "description": "Analyzer used to convert the text in the query value into tokens.",
                 "type": "string"
               },
@@ -45233,9 +44258,6 @@
             "type": "object",
             "properties": {
               "analyzer": {
-                "externalDocs": {
-                  "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/analysis.html"
-                },
                 "description": "Analyzer used to convert text in the query value into tokens.",
                 "type": "string"
               },
@@ -45370,9 +44392,6 @@
         ]
       },
       "_types.query_dsl:Like": {
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-mlt-query.html#_document_input_parameters"
-        },
         "description": "Text that we want similar documents for or a lookup to a document's field for the text.",
         "oneOf": [
           {
@@ -45452,9 +44471,6 @@
             "type": "object",
             "properties": {
               "analyzer": {
-                "externalDocs": {
-                  "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/analysis.html"
-                },
                 "description": "Analyzer used to convert the text in the query value into tokens.",
                 "type": "string"
               },
@@ -45642,6 +44658,9 @@
             "$ref": "#/components/schemas/_types.query_dsl:QueryBase"
           },
           {
+            "externalDocs": {
+              "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-pinned-query.html"
+            },
             "allOf": [
               {
                 "type": "object",
@@ -45711,7 +44730,6 @@
               },
               "case_insensitive": {
                 "description": "Allows ASCII case insensitive matching of the value with the indexed field values when set to `true`.\nDefault is `false` which means the case sensitivity of matching depends on the underlying field’s mapping.",
-                "x-available-since": "7.10.0",
                 "type": "boolean"
               }
             },
@@ -45734,9 +44752,6 @@
                 "type": "boolean"
               },
               "analyzer": {
-                "externalDocs": {
-                  "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/analysis.html"
-                },
                 "description": "Analyzer used to convert text in the query string into tokens.",
                 "type": "string"
               },
@@ -45837,6 +44852,9 @@
         "type": "string"
       },
       "_types.query_dsl:RangeQuery": {
+        "externalDocs": {
+          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-range-query.html"
+        },
         "oneOf": [
           {
             "$ref": "#/components/schemas/_types.query_dsl:UntypedRangeQuery"
@@ -45871,9 +44889,6 @@
         ]
       },
       "_types:DateFormat": {
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/mapping-date-format.html"
-        },
         "type": "string"
       },
       "_types.query_dsl:RangeQueryBase": {
@@ -45904,6 +44919,7 @@
                 "type": "object"
               },
               "from": {
+                "deprecated": true,
                 "oneOf": [
                   {
                     "type": "object"
@@ -45915,6 +44931,7 @@
                 ]
               },
               "to": {
+                "deprecated": true,
                 "oneOf": [
                   {
                     "type": "object"
@@ -45979,6 +44996,7 @@
                 "$ref": "#/components/schemas/_types:DateMath"
               },
               "from": {
+                "deprecated": true,
                 "oneOf": [
                   {
                     "$ref": "#/components/schemas/_types:DateMath"
@@ -45990,6 +45008,7 @@
                 ]
               },
               "to": {
+                "deprecated": true,
                 "oneOf": [
                   {
                     "$ref": "#/components/schemas/_types:DateMath"
@@ -46042,6 +45061,7 @@
                 "type": "number"
               },
               "from": {
+                "deprecated": true,
                 "oneOf": [
                   {
                     "type": "number"
@@ -46053,6 +45073,7 @@
                 ]
               },
               "to": {
+                "deprecated": true,
                 "oneOf": [
                   {
                     "type": "number"
@@ -46105,6 +45126,7 @@
                 "type": "string"
               },
               "from": {
+                "deprecated": true,
                 "oneOf": [
                   {
                     "type": "string"
@@ -46116,6 +45138,7 @@
                 ]
               },
               "to": {
+                "deprecated": true,
                 "oneOf": [
                   {
                     "type": "string"
@@ -46242,13 +45265,9 @@
             "properties": {
               "case_insensitive": {
                 "description": "Allows case insensitive matching of the regular expression value with the indexed field values when set to `true`.\nWhen `false`, case sensitivity of matching depends on the underlying field’s mapping.",
-                "x-available-since": "7.10.0",
                 "type": "boolean"
               },
               "flags": {
-                "externalDocs": {
-                  "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/regexp-syntax.html"
-                },
                 "description": "Enables optional operators for the regular expression.",
                 "type": "string"
               },
@@ -46260,9 +45279,6 @@
                 "$ref": "#/components/schemas/_types:MultiTermQueryRewrite"
               },
               "value": {
-                "externalDocs": {
-                  "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/regexp-syntax.html"
-                },
                 "description": "Regular expression for terms you wish to find in the provided field.",
                 "type": "string"
               }
@@ -46395,9 +45411,6 @@
             "type": "object",
             "properties": {
               "analyzer": {
-                "externalDocs": {
-                  "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/analysis.html"
-                },
                 "description": "Analyzer used to convert text in the query string into tokens.",
                 "type": "string"
               },
@@ -46457,9 +45470,6 @@
         ]
       },
       "_types.query_dsl:SimpleQueryStringFlags": {
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-simple-query-string-query.html#supported-flags"
-        },
         "description": "Query flags can be either a single flag or a combination of flags, e.g. `OR|AND|PREFIX`",
         "allOf": [
           {
@@ -46765,6 +45775,9 @@
             "$ref": "#/components/schemas/_types.query_dsl:QueryBase"
           },
           {
+            "externalDocs": {
+              "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-sparse-vector-query.html"
+            },
             "allOf": [
               {
                 "type": "object",
@@ -46778,8 +45791,7 @@
                   },
                   "prune": {
                     "description": "Whether to perform pruning, omitting the non-significant tokens from the query to improve query performance.\nIf prune is true but the pruning_config is not specified, pruning will occur but default values will be used.\nDefault: false",
-                    "x-technical-preview": true,
-                    "x-available-since": "8.15.0",
+                    "x-state": "Technical preview",
                     "type": "boolean"
                   },
                   "pruning_config": {
@@ -46841,7 +45853,6 @@
               },
               "case_insensitive": {
                 "description": "Allows ASCII case insensitive matching of the value with the indexed field values when set to `true`.\nWhen `false`, the case sensitivity of matching depends on the underlying field’s mapping.",
-                "x-available-since": "7.10.0",
                 "type": "boolean"
               }
             },
@@ -46869,6 +45880,9 @@
           {
             "type": "object",
             "properties": {
+              "minimum_should_match": {
+                "$ref": "#/components/schemas/_types:MinimumShouldMatch"
+              },
               "minimum_should_match_field": {
                 "$ref": "#/components/schemas/_types:Field"
               },
@@ -46951,7 +45965,6 @@
             "properties": {
               "case_insensitive": {
                 "description": "Allows case insensitive matching of the pattern with the indexed field values when set to true. Default is false which means the case sensitivity of matching depends on the underlying field’s mapping.",
-                "x-available-since": "7.10.0",
                 "type": "boolean"
               },
               "rewrite": {
@@ -48544,9 +47557,6 @@
             "$ref": "#/components/schemas/_types:Field"
           },
           "num_top_feature_importance_values": {
-            "externalDocs": {
-              "url": "https://www.elastic.co/guide/en/machine-learning/current/ml-feature-importance.html"
-            },
             "description": "Specifies the maximum number of feature importance values per document.",
             "type": "number"
           }
@@ -48560,9 +47570,6 @@
             "type": "number"
           },
           "num_top_feature_importance_values": {
-            "externalDocs": {
-              "url": "https://www.elastic.co/guide/en/machine-learning/current/ml-feature-importance.html"
-            },
             "description": "Specifies the maximum number of feature importance values per document.",
             "type": "number"
           },
@@ -49297,6 +48304,33 @@
           }
         ]
       },
+      "_types.aggregations:RandomSamplerAggregation": {
+        "allOf": [
+          {
+            "$ref": "#/components/schemas/_types.aggregations:BucketAggregationBase"
+          },
+          {
+            "type": "object",
+            "properties": {
+              "probability": {
+                "description": "The probability that a document will be included in the aggregated data.\nMust be greater than 0, less than 0.5, or exactly 1.\nThe lower the probability, the fewer documents are matched.",
+                "type": "number"
+              },
+              "seed": {
+                "description": "The seed to generate the random sampling of documents.\nWhen a seed is provided, the random subset of documents is the same between calls.",
+                "type": "number"
+              },
+              "shard_seed": {
+                "description": "When combined with seed, setting shard_seed ensures 100% consistent sampling over shards where data is exactly the same.",
+                "type": "number"
+              }
+            },
+            "required": [
+              "probability"
+            ]
+          }
+        ]
+      },
       "_types.aggregations:SamplerAggregation": {
         "allOf": [
           {
@@ -50134,9 +49168,6 @@
             }
           },
           "format": {
-            "externalDocs": {
-              "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/mapping-date-format.html"
-            },
             "description": "A custom format for `date` type runtime fields.",
             "type": "string"
           },
@@ -50270,9 +49301,6 @@
         ]
       },
       "_types:NodeName": {
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/modules-node.html"
-        },
         "type": "string"
       },
       "autoscaling.get_autoscaling_capacity:AutoscalingDecider": {
@@ -50302,7 +49330,10 @@
             }
           },
           "deciders": {
-            "description": "Decider settings",
+            "externalDocs": {
+              "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/autoscaling-deciders.html"
+            },
+            "description": "Decider settings.",
             "type": "object",
             "additionalProperties": {
               "type": "object"
@@ -50632,9 +49663,6 @@
           }
         ]
       },
-      "_types:NodeId": {
-        "type": "string"
-      },
       "_types:Bytes": {
         "type": "string",
         "enum": [
@@ -50803,9 +49831,6 @@
         ]
       },
       "_types:ByteSize": {
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/api-conventions.html#byte-units"
-        },
         "oneOf": [
           {
             "type": "number"
@@ -50838,7 +49863,15 @@
             "type": "string"
           },
           "version": {
-            "type": "string"
+            "oneOf": [
+              {
+                "type": "string"
+              },
+              {
+                "nullable": true,
+                "type": "string"
+              }
+            ]
           },
           "alias_count": {
             "type": "string"
@@ -51118,7 +50151,7 @@
           },
           "dataset.size": {
             "description": "total size of dataset (including the cache for partially mounted indices)",
-            "x-available-since": "8.11.0",
+            "x-state": "Added in 8.11.0",
             "oneOf": [
               {
                 "type": "string"
@@ -52476,7 +51509,6 @@
             "type": "string"
           },
           "type": {
-            "x-available-since": "8.0.0",
             "type": "string"
           }
         }
@@ -53162,7 +52194,7 @@
           },
           "dataset": {
             "description": "total size of dataset (including the cache for partially mounted indices)",
-            "x-available-since": "8.11.0",
+            "x-state": "Added in 8.11.0",
             "oneOf": [
               {
                 "type": "string"
@@ -57033,6 +56065,9 @@
         ]
       },
       "_types.analysis:CharFilter": {
+        "externalDocs": {
+          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/analysis-charfilters.html"
+        },
         "oneOf": [
           {
             "type": "string"
@@ -57217,6 +56252,9 @@
         ]
       },
       "_types.analysis:TokenFilter": {
+        "externalDocs": {
+          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/analysis-tokenfilters.html"
+        },
         "oneOf": [
           {
             "type": "string"
@@ -57788,10 +56826,17 @@
                 "type": "boolean"
               },
               "keywords": {
-                "type": "array",
-                "items": {
-                  "type": "string"
-                }
+                "oneOf": [
+                  {
+                    "type": "string"
+                  },
+                  {
+                    "type": "array",
+                    "items": {
+                      "type": "string"
+                    }
+                  }
+                ]
               },
               "keywords_path": {
                 "type": "string"
@@ -59013,9 +58058,6 @@
         ]
       },
       "_types.analysis:Normalizer": {
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/analysis-normalizers.html"
-        },
         "discriminator": {
           "propertyName": "type"
         },
@@ -59069,6 +58111,9 @@
         ]
       },
       "_types.analysis:Tokenizer": {
+        "externalDocs": {
+          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/analysis-tokenizers.html"
+        },
         "oneOf": [
           {
             "type": "string"
@@ -59233,9 +58278,7 @@
               }
             },
             "required": [
-              "type",
-              "max_gram",
-              "min_gram"
+              "type"
             ]
           }
         ]
@@ -59270,8 +58313,7 @@
               }
             },
             "required": [
-              "type",
-              "buffer_size"
+              "type"
             ]
           }
         ]
@@ -59349,9 +58391,7 @@
               }
             },
             "required": [
-              "type",
-              "max_gram",
-              "min_gram"
+              "type"
             ]
           }
         ]
@@ -60539,9 +59579,6 @@
               "copy_to": {
                 "$ref": "#/components/schemas/_types:Fields"
               },
-              "similarity": {
-                "type": "string"
-              },
               "store": {
                 "type": "boolean"
               }
@@ -60553,9 +59590,6 @@
         "type": "object",
         "properties": {
           "meta": {
-            "externalDocs": {
-              "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/mapping-meta-field.html"
-            },
             "description": "Metadata about the field.",
             "type": "object",
             "additionalProperties": {
@@ -60602,6 +59636,20 @@
               "null_value": {
                 "type": "boolean"
               },
+              "ignore_malformed": {
+                "type": "boolean"
+              },
+              "script": {
+                "$ref": "#/components/schemas/_types:Script"
+              },
+              "on_script_error": {
+                "$ref": "#/components/schemas/_types.mapping:OnScriptError"
+              },
+              "time_series_dimension": {
+                "description": "For internal use by Elastic only. Marks the field as a time series dimension. Defaults to false.",
+                "x-state": "Technical preview",
+                "type": "boolean"
+              },
               "type": {
                 "type": "string",
                 "enum": [
@@ -60633,6 +59681,13 @@
           "disabled"
         ]
       },
+      "_types.mapping:OnScriptError": {
+        "type": "string",
+        "enum": [
+          "fail",
+          "continue"
+        ]
+      },
       "_types.mapping:DynamicProperty": {
         "allOf": [
           {
@@ -60687,7 +59742,15 @@
                 "type": "boolean"
               },
               "index_prefixes": {
-                "$ref": "#/components/schemas/_types.mapping:TextIndexPrefixes"
+                "oneOf": [
+                  {
+                    "$ref": "#/components/schemas/_types.mapping:TextIndexPrefixes"
+                  },
+                  {
+                    "nullable": true,
+                    "type": "string"
+                  }
+                ]
               },
               "norms": {
                 "type": "boolean"
@@ -60720,13 +59783,6 @@
           }
         ]
       },
-      "_types.mapping:OnScriptError": {
-        "type": "string",
-        "enum": [
-          "fail",
-          "continue"
-        ]
-      },
       "_types.mapping:TimeSeriesMetricType": {
         "type": "string",
         "enum": [
@@ -60848,12 +59904,23 @@
               "null_value": {
                 "type": "string"
               },
+              "similarity": {
+                "oneOf": [
+                  {
+                    "type": "string"
+                  },
+                  {
+                    "nullable": true,
+                    "type": "string"
+                  }
+                ]
+              },
               "split_queries_on_whitespace": {
                 "type": "boolean"
               },
               "time_series_dimension": {
                 "description": "For internal use by Elastic only. Marks the field as a time series dimension. Defaults to false.",
-                "x-technical-preview": true,
+                "x-state": "Technical preview",
                 "type": "boolean"
               },
               "type": {
@@ -60879,9 +59946,6 @@
             ]
           },
           "fields": {
-            "externalDocs": {
-              "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/multi-fields.html"
-            },
             "description": "Multi-fields allow the same string value to be indexed in multiple ways for different purposes, such as one\nfield for search and a multi-field for sorting and aggregations, or the same string value analyzed by different analyzers.",
             "type": "object",
             "additionalProperties": {
@@ -60889,9 +59953,6 @@
             }
           },
           "meta": {
-            "externalDocs": {
-              "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/mapping-meta-field.html"
-            },
             "description": "Metadata about the field.",
             "type": "object",
             "additionalProperties": {
@@ -61004,6 +60065,17 @@
               "search_quote_analyzer": {
                 "type": "string"
               },
+              "similarity": {
+                "oneOf": [
+                  {
+                    "type": "string"
+                  },
+                  {
+                    "nullable": true,
+                    "type": "string"
+                  }
+                ]
+              },
               "term_vector": {
                 "$ref": "#/components/schemas/_types.mapping:TermVectorOption"
               },
@@ -61053,7 +60125,15 @@
                 "type": "boolean"
               },
               "index_prefixes": {
-                "$ref": "#/components/schemas/_types.mapping:TextIndexPrefixes"
+                "oneOf": [
+                  {
+                    "$ref": "#/components/schemas/_types.mapping:TextIndexPrefixes"
+                  },
+                  {
+                    "nullable": true,
+                    "type": "string"
+                  }
+                ]
               },
               "norms": {
                 "type": "boolean"
@@ -61067,6 +60147,17 @@
               "search_quote_analyzer": {
                 "type": "string"
               },
+              "similarity": {
+                "oneOf": [
+                  {
+                    "type": "string"
+                  },
+                  {
+                    "nullable": true,
+                    "type": "string"
+                  }
+                ]
+              },
               "term_vector": {
                 "$ref": "#/components/schemas/_types.mapping:TermVectorOption"
               },
@@ -61138,7 +60229,6 @@
                 ]
               },
               "null_value": {
-                "x-available-since": "7.15.0",
                 "type": "string"
               }
             },
@@ -61640,7 +60730,7 @@
               },
               "time_series_dimension": {
                 "description": "For internal use by Elastic only. Marks the field as a time series dimension. Defaults to false.",
-                "x-technical-preview": true,
+                "x-state": "Technical preview",
                 "type": "boolean"
               },
               "type": {
@@ -61929,7 +61019,7 @@
               },
               "time_series_dimension": {
                 "description": "For internal use by Elastic only. Marks the field as a time series dimension. Defaults to false.",
-                "x-technical-preview": true,
+                "x-state": "Technical preview",
                 "type": "boolean"
               }
             }
@@ -62481,7 +61571,6 @@
           },
           "is_hidden": {
             "description": "If `true`, the alias is hidden.\nAll indices for the alias must have the same `is_hidden` value.",
-            "x-available-since": "7.16.0",
             "type": "boolean"
           }
         }
@@ -62814,7 +61903,7 @@
           },
           "routes": {
             "description": "Detailed HTTP stats broken down by route",
-            "x-available-since": "8.12.0",
+            "x-state": "Added in 8.12.0",
             "type": "object",
             "additionalProperties": {
               "$ref": "#/components/schemas/nodes._types:HttpRoute"
@@ -63019,12 +62108,12 @@
           },
           "ingested_as_first_pipeline_in_bytes": {
             "description": "Total number of bytes of all documents ingested by the pipeline.\nThis field is only present on pipelines which are the first to process a document.\nThus, it is not present on pipelines which only serve as a final pipeline after a default pipeline, a pipeline run after a reroute processor, or pipelines in pipeline processors.",
-            "x-available-since": "8.15.0",
+            "x-state": "Added in 8.15.0",
             "type": "number"
           },
           "produced_as_first_pipeline_in_bytes": {
             "description": "Total number of bytes of all documents produced by the pipeline.\nThis field is only present on pipelines which are the first to process a document.\nThus, it is not present on pipelines which only serve as a final pipeline after a default pipeline, a pipeline run after a reroute processor, or pipelines in pipeline processors.\nIn situations where there are subsequent pipelines, the value represents the size of the document after all pipelines have run.",
-            "x-available-since": "8.15.0",
+            "x-state": "Added in 8.15.0",
             "type": "number"
           }
         },
@@ -63257,9 +62346,6 @@
         }
       },
       "_types:DataStreamName": {
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/indices-create-data-stream.html#indices-create-data-stream-api-path-params"
-        },
         "type": "string"
       },
       "indices._types:DataStreamLifecycle": {
@@ -63636,9 +62722,6 @@
             "$ref": "#/components/schemas/cluster.stats:FieldTypesMappings"
           },
           "versions": {
-            "externalDocs": {
-              "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/analyzer-anatomy.html"
-            },
             "description": "Contains statistics about analyzers and analyzer components used in selected nodes.",
             "type": "array",
             "items": {
@@ -63758,7 +62841,6 @@
           },
           "script_count": {
             "description": "The number of fields that declare a script.",
-            "x-available-since": "7.13.0",
             "type": "number"
           }
         },
@@ -64273,9 +63355,6 @@
             "$ref": "#/components/schemas/cluster.stats:ClusterNodeCount"
           },
           "discovery_types": {
-            "externalDocs": {
-              "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/modules-discovery-hosts-providers.html"
-            },
             "description": "Contains statistics about the discovery types used by selected nodes.",
             "type": "object",
             "additionalProperties": {
@@ -64356,7 +63435,6 @@
             "type": "number"
           },
           "data_frozen": {
-            "x-available-since": "7.13.0",
             "type": "number"
           },
           "data_hot": {
@@ -64709,7 +63787,6 @@
         "properties": {
           "adjusted_total_in_bytes": {
             "description": "Total amount, in bytes, of memory across all selected nodes, but using the value specified using the `es.total_memory_bytes` system property instead of measured total memory for those nodes where that system property was set.",
-            "x-available-since": "7.16.0",
             "type": "number"
           },
           "free_in_bytes": {
@@ -65480,10 +64557,7 @@
             "$ref": "#/components/schemas/_types:DateTime"
           },
           "value": {
-            "type": "object",
-            "additionalProperties": {
-              "type": "object"
-            }
+            "type": "object"
           }
         },
         "required": [
@@ -65896,17 +64970,13 @@
           },
           "status": {
             "type": "number"
-          },
-          "type": {
-            "type": "string"
           }
         },
         "required": [
           "cause",
           "id",
           "index",
-          "status",
-          "type"
+          "status"
         ]
       },
       "_types:Retries": {
@@ -66119,6 +65189,9 @@
         "properties": {
           "phase": {
             "$ref": "#/components/schemas/enrich.execute_policy:EnrichPolicyPhase"
+          },
+          "step": {
+            "type": "string"
           }
         },
         "required": [
@@ -66131,7 +65204,8 @@
           "SCHEDULED",
           "RUNNING",
           "COMPLETE",
-          "FAILED"
+          "FAILED",
+          "CANCELLED"
         ]
       },
       "enrich._types:Summary": {
@@ -66302,9 +65376,6 @@
             }
           },
           "sequences": {
-            "externalDocs": {
-              "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/eql-syntax.html#eql-sequences"
-            },
             "description": "Contains event sequences matching the query. Each object represents a matching sequence. This parameter is only returned for EQL queries containing a sequence.",
             "type": "array",
             "items": {
@@ -66327,9 +65398,6 @@
             "type": "object"
           },
           "missing": {
-            "externalDocs": {
-              "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/eql-syntax.html#eql-missing-events"
-            },
             "description": "Set to `true` for events in a timespan-constrained sequence that do not meet a given condition.",
             "type": "boolean"
           },
@@ -66360,9 +65428,6 @@
             }
           },
           "join_keys": {
-            "externalDocs": {
-              "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/eql-syntax.html#eql-sequences"
-            },
             "description": "Shared field values used to constrain matches in the sequence. These are defined using the by keyword in the EQL query syntax.",
             "type": "array",
             "items": {
@@ -66551,16 +65616,12 @@
             "type": "string"
           },
           "metadata_field": {
-            "externalDocs": {
-              "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/mapping-fields.html"
-            },
             "description": "Whether this field is registered as a metadata field.",
             "type": "boolean"
           },
           "time_series_dimension": {
             "description": "Whether this field is used as a time series dimension.",
-            "x-technical-preview": true,
-            "x-available-since": "8.0.0",
+            "x-state": "Technical preview",
             "type": "boolean"
           },
           "time_series_metric": {
@@ -66568,8 +65629,7 @@
           },
           "non_dimension_indices": {
             "description": "If this list is present in response then some indices have the\nfield marked as a dimension and other indices, the ones in this list, do not.",
-            "x-technical-preview": true,
-            "x-available-since": "8.0.0",
+            "x-state": "Technical preview",
             "type": "array",
             "items": {
               "$ref": "#/components/schemas/_types:IndexName"
@@ -66577,8 +65637,7 @@
           },
           "metric_conflicts_indices": {
             "description": "The list of indices where this field is present if these indices\ndon’t have the same `time_series_metric` value for this field.",
-            "x-technical-preview": true,
-            "x-available-since": "8.0.0",
+            "x-state": "Technical preview",
             "type": "array",
             "items": {
               "$ref": "#/components/schemas/_types:IndexName"
@@ -66649,6 +65708,9 @@
         "type": "object",
         "properties": {
           "aggregations": {
+            "externalDocs": {
+              "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/search-aggregations.html"
+            },
             "type": "object",
             "additionalProperties": {
               "$ref": "#/components/schemas/_types.aggregations:AggregationContainer"
@@ -66683,7 +65745,6 @@
           },
           "knn": {
             "description": "Defines the approximate kNN search to run.",
-            "x-available-since": "8.4.0",
             "oneOf": [
               {
                 "$ref": "#/components/schemas/_types:KnnSearch"
@@ -67138,9 +66199,6 @@
             "$ref": "#/components/schemas/_types:Duration"
           },
           "use_significance": {
-            "externalDocs": {
-              "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/search-aggregations-bucket-significantterms-aggregation.html"
-            },
             "description": "Filters associated terms so only those that are significantly associated with your query are included.",
             "type": "boolean"
           }
@@ -68221,8 +67279,6 @@
           }
         },
         "required": [
-          "action",
-          "name",
           "phase"
         ]
       },
@@ -68431,10 +67487,7 @@
           "_shards": {
             "$ref": "#/components/schemas/_types:ShardStatistics"
           }
-        },
-        "required": [
-          "_shards"
-        ]
+        }
       },
       "indices.close:CloseIndexResult": {
         "type": "object",
@@ -68692,7 +67745,6 @@
           },
           "system": {
             "description": "If `true`, the data stream is created and managed by an Elastic stack component and cannot be modified through normal user interaction.",
-            "x-available-since": "7.10.0",
             "type": "boolean"
           },
           "template": {
@@ -68861,6 +67913,13 @@
           },
           "data_stream": {
             "$ref": "#/components/schemas/indices._types:IndexTemplateDataStreamConfiguration"
+          },
+          "deprecated": {
+            "description": "Marks this index template as deprecated.\nWhen creating or updating a non-deprecated index template that uses deprecated components,\nElasticsearch will emit a deprecation warning.",
+            "type": "boolean"
+          },
+          "ignore_missing_component_templates": {
+            "$ref": "#/components/schemas/_types:Names"
           }
         },
         "required": [
@@ -69009,6 +68068,9 @@
         "properties": {
           "hidden": {
             "type": "boolean"
+          },
+          "allow_custom_routing": {
+            "type": "boolean"
           }
         }
       },
@@ -70386,7 +69448,6 @@
             "$ref": "#/components/schemas/_types:BulkStats"
           },
           "shards": {
-            "x-available-since": "7.15.0",
             "type": "object",
             "additionalProperties": {
               "type": "object"
@@ -70800,6 +69861,9 @@
       "inference._types:InferenceEndpoint": {
         "type": "object",
         "properties": {
+          "chunking_settings": {
+            "$ref": "#/components/schemas/inference._types:InferenceChunkingSettings"
+          },
           "service": {
             "description": "The service type",
             "type": "string"
@@ -70813,10 +69877,30 @@
         },
         "required": [
           "service",
-          "service_settings",
-          "task_settings"
+          "service_settings"
         ]
       },
+      "inference._types:InferenceChunkingSettings": {
+        "type": "object",
+        "properties": {
+          "max_chunk_size": {
+            "description": "Specifies the maximum size of a chunk in words\nThis value cannot be higher than `300` or lower than `20` (for `sentence` strategy) or `10` (for `word` strategy)",
+            "type": "number"
+          },
+          "overlap": {
+            "description": "Specifies the number of overlapping words for chunks\nOnly for `word` chunking strategy\nThis value cannot be higher than the half of `max_chunk_size`",
+            "type": "number"
+          },
+          "sentence_overlap": {
+            "description": "Specifies the number of overlapping sentences for chunks\nOnly for `sentence` chunking strategy\nIt can be either `1` or `0`",
+            "type": "number"
+          },
+          "strategy": {
+            "description": "Specifies the chunking strategy\nIt could be either `sentence` or `word`",
+            "type": "string"
+          }
+        }
+      },
       "inference._types:ServiceSettings": {
         "type": "object"
       },
@@ -71081,18 +70165,32 @@
         ]
       },
       "ingest._types:DatabaseConfiguration": {
-        "type": "object",
-        "properties": {
-          "name": {
-            "$ref": "#/components/schemas/_types:Name"
+        "description": "The configuration necessary to identify which IP geolocation provider to use to download a database, as well as any provider-specific configuration necessary for such downloading.\nAt present, the only supported providers are maxmind and ipinfo, and the maxmind provider requires that an account_id (string) is configured.\nA provider (either maxmind or ipinfo) must be specified. The web and local providers can be returned as read only configurations.",
+        "allOf": [
+          {
+            "type": "object",
+            "properties": {
+              "name": {
+                "$ref": "#/components/schemas/_types:Name"
+              }
+            },
+            "required": [
+              "name"
+            ]
           },
-          "maxmind": {
-            "$ref": "#/components/schemas/ingest._types:Maxmind"
+          {
+            "type": "object",
+            "properties": {
+              "maxmind": {
+                "$ref": "#/components/schemas/ingest._types:Maxmind"
+              },
+              "ipinfo": {
+                "$ref": "#/components/schemas/ingest._types:Ipinfo"
+              }
+            },
+            "minProperties": 1,
+            "maxProperties": 1
           }
-        },
-        "required": [
-          "name",
-          "maxmind"
         ]
       },
       "ingest._types:Maxmind": {
@@ -71106,6 +70204,82 @@
           "account_id"
         ]
       },
+      "ingest._types:Ipinfo": {
+        "type": "object"
+      },
+      "ingest.get_ip_location_database:DatabaseConfigurationMetadata": {
+        "type": "object",
+        "properties": {
+          "id": {
+            "$ref": "#/components/schemas/_types:Id"
+          },
+          "version": {
+            "$ref": "#/components/schemas/_types:VersionNumber"
+          },
+          "modified_date_millis": {
+            "$ref": "#/components/schemas/_types:EpochTimeUnitMillis"
+          },
+          "modified_date": {
+            "$ref": "#/components/schemas/_types:EpochTimeUnitMillis"
+          },
+          "database": {
+            "$ref": "#/components/schemas/ingest._types:DatabaseConfigurationFull"
+          }
+        },
+        "required": [
+          "id",
+          "version",
+          "database"
+        ]
+      },
+      "ingest._types:DatabaseConfigurationFull": {
+        "allOf": [
+          {
+            "type": "object",
+            "properties": {
+              "name": {
+                "$ref": "#/components/schemas/_types:Name"
+              }
+            },
+            "required": [
+              "name"
+            ]
+          },
+          {
+            "type": "object",
+            "properties": {
+              "web": {
+                "$ref": "#/components/schemas/ingest._types:Web"
+              },
+              "local": {
+                "$ref": "#/components/schemas/ingest._types:Local"
+              },
+              "maxmind": {
+                "$ref": "#/components/schemas/ingest._types:Maxmind"
+              },
+              "ipinfo": {
+                "$ref": "#/components/schemas/ingest._types:Ipinfo"
+              }
+            },
+            "minProperties": 1,
+            "maxProperties": 1
+          }
+        ]
+      },
+      "ingest._types:Web": {
+        "type": "object"
+      },
+      "ingest._types:Local": {
+        "type": "object",
+        "properties": {
+          "type": {
+            "type": "string"
+          }
+        },
+        "required": [
+          "type"
+        ]
+      },
       "ingest._types:Pipeline": {
         "type": "object",
         "properties": {
@@ -71154,6 +70328,9 @@
           "circle": {
             "$ref": "#/components/schemas/ingest._types:CircleProcessor"
           },
+          "community_id": {
+            "$ref": "#/components/schemas/ingest._types:CommunityIDProcessor"
+          },
           "convert": {
             "$ref": "#/components/schemas/ingest._types:ConvertProcessor"
           },
@@ -71181,9 +70358,15 @@
           "fail": {
             "$ref": "#/components/schemas/ingest._types:FailProcessor"
           },
+          "fingerprint": {
+            "$ref": "#/components/schemas/ingest._types:FingerprintProcessor"
+          },
           "foreach": {
             "$ref": "#/components/schemas/ingest._types:ForeachProcessor"
           },
+          "ip_location": {
+            "$ref": "#/components/schemas/ingest._types:IpLocationProcessor"
+          },
           "geo_grid": {
             "$ref": "#/components/schemas/ingest._types:GeoGridProcessor"
           },
@@ -71214,12 +70397,18 @@
           "lowercase": {
             "$ref": "#/components/schemas/ingest._types:LowercaseProcessor"
           },
+          "network_direction": {
+            "$ref": "#/components/schemas/ingest._types:NetworkDirectionProcessor"
+          },
           "pipeline": {
             "$ref": "#/components/schemas/ingest._types:PipelineProcessor"
           },
           "redact": {
             "$ref": "#/components/schemas/ingest._types:RedactProcessor"
           },
+          "registered_domain": {
+            "$ref": "#/components/schemas/ingest._types:RegisteredDomainProcessor"
+          },
           "remove": {
             "$ref": "#/components/schemas/ingest._types:RemoveProcessor"
           },
@@ -71244,6 +70433,9 @@
           "split": {
             "$ref": "#/components/schemas/ingest._types:SplitProcessor"
           },
+          "terminate": {
+            "$ref": "#/components/schemas/ingest._types:TerminateProcessor"
+          },
           "trim": {
             "$ref": "#/components/schemas/ingest._types:TrimProcessor"
           },
@@ -71441,6 +70633,53 @@
           "shape"
         ]
       },
+      "ingest._types:CommunityIDProcessor": {
+        "allOf": [
+          {
+            "$ref": "#/components/schemas/ingest._types:ProcessorBase"
+          },
+          {
+            "type": "object",
+            "properties": {
+              "source_ip": {
+                "$ref": "#/components/schemas/_types:Field"
+              },
+              "source_port": {
+                "$ref": "#/components/schemas/_types:Field"
+              },
+              "destination_ip": {
+                "$ref": "#/components/schemas/_types:Field"
+              },
+              "destination_port": {
+                "$ref": "#/components/schemas/_types:Field"
+              },
+              "iana_number": {
+                "$ref": "#/components/schemas/_types:Field"
+              },
+              "icmp_type": {
+                "$ref": "#/components/schemas/_types:Field"
+              },
+              "icmp_code": {
+                "$ref": "#/components/schemas/_types:Field"
+              },
+              "transport": {
+                "$ref": "#/components/schemas/_types:Field"
+              },
+              "target_field": {
+                "$ref": "#/components/schemas/_types:Field"
+              },
+              "seed": {
+                "description": "Seed for the community ID hash. Must be between 0 and 65535 (inclusive). The\nseed can prevent hash collisions between network domains, such as a staging\nand production network that use the same addressing scheme.",
+                "type": "number"
+              },
+              "ignore_missing": {
+                "description": "If true and any required fields are missing, the processor quietly exits\nwithout modifying the document.",
+                "type": "boolean"
+              }
+            }
+          }
+        ]
+      },
       "ingest._types:ConvertProcessor": {
         "allOf": [
           {
@@ -71475,10 +70714,11 @@
         "enum": [
           "integer",
           "long",
-          "float",
           "double",
-          "string",
+          "float",
           "boolean",
+          "ip",
+          "string",
           "auto"
         ]
       },
@@ -71552,6 +70792,10 @@
               "timezone": {
                 "description": "The timezone to use when parsing the date.\nSupports template snippets.",
                 "type": "string"
+              },
+              "output_format": {
+                "description": "The format to use when writing the date to target_field. Must be a valid\njava time pattern.",
+                "type": "string"
               }
             },
             "required": [
@@ -71745,6 +70989,48 @@
           }
         ]
       },
+      "ingest._types:FingerprintProcessor": {
+        "allOf": [
+          {
+            "$ref": "#/components/schemas/ingest._types:ProcessorBase"
+          },
+          {
+            "type": "object",
+            "properties": {
+              "fields": {
+                "$ref": "#/components/schemas/_types:Fields"
+              },
+              "target_field": {
+                "$ref": "#/components/schemas/_types:Field"
+              },
+              "salt": {
+                "description": "Salt value for the hash function.",
+                "type": "string"
+              },
+              "method": {
+                "$ref": "#/components/schemas/ingest._types:FingerprintDigest"
+              },
+              "ignore_missing": {
+                "description": "If true, the processor ignores any missing fields. If all fields are\nmissing, the processor silently exits without modifying the document.",
+                "type": "boolean"
+              }
+            },
+            "required": [
+              "fields"
+            ]
+          }
+        ]
+      },
+      "ingest._types:FingerprintDigest": {
+        "type": "string",
+        "enum": [
+          "MD5",
+          "SHA-1",
+          "SHA-256",
+          "SHA-512",
+          "MurmurHash3"
+        ]
+      },
       "ingest._types:ForeachProcessor": {
         "allOf": [
           {
@@ -71771,6 +71057,50 @@
           }
         ]
       },
+      "ingest._types:IpLocationProcessor": {
+        "allOf": [
+          {
+            "$ref": "#/components/schemas/ingest._types:ProcessorBase"
+          },
+          {
+            "type": "object",
+            "properties": {
+              "database_file": {
+                "description": "The database filename referring to a database the module ships with (GeoLite2-City.mmdb, GeoLite2-Country.mmdb, or GeoLite2-ASN.mmdb) or a custom database in the ingest-geoip config directory.",
+                "type": "string"
+              },
+              "field": {
+                "$ref": "#/components/schemas/_types:Field"
+              },
+              "first_only": {
+                "description": "If `true`, only the first found IP location data will be returned, even if the field contains an array.",
+                "type": "boolean"
+              },
+              "ignore_missing": {
+                "description": "If `true` and `field` does not exist, the processor quietly exits without modifying the document.",
+                "type": "boolean"
+              },
+              "properties": {
+                "description": "Controls what properties are added to the `target_field` based on the IP location lookup.",
+                "type": "array",
+                "items": {
+                  "type": "string"
+                }
+              },
+              "target_field": {
+                "$ref": "#/components/schemas/_types:Field"
+              },
+              "download_database_on_pipeline_creation": {
+                "description": "If `true` (and if `ingest.geoip.downloader.eager.download` is `false`), the missing database is downloaded when the pipeline is created.\nElse, the download is triggered by when the pipeline is used as the `default_pipeline` or `final_pipeline` in an index.",
+                "type": "boolean"
+              }
+            },
+            "required": [
+              "field"
+            ]
+          }
+        ]
+      },
       "ingest._types:GeoGridProcessor": {
         "allOf": [
           {
@@ -71883,6 +71213,10 @@
           {
             "type": "object",
             "properties": {
+              "ecs_compatibility": {
+                "description": "Must be disabled or v1. If v1, the processor uses patterns with Elastic\nCommon Schema (ECS) field names.",
+                "type": "string"
+              },
               "field": {
                 "$ref": "#/components/schemas/_types:Field"
               },
@@ -72213,6 +71547,41 @@
           }
         ]
       },
+      "ingest._types:NetworkDirectionProcessor": {
+        "allOf": [
+          {
+            "$ref": "#/components/schemas/ingest._types:ProcessorBase"
+          },
+          {
+            "type": "object",
+            "properties": {
+              "source_ip": {
+                "$ref": "#/components/schemas/_types:Field"
+              },
+              "destination_ip": {
+                "$ref": "#/components/schemas/_types:Field"
+              },
+              "target_field": {
+                "$ref": "#/components/schemas/_types:Field"
+              },
+              "internal_networks": {
+                "description": "List of internal networks. Supports IPv4 and IPv6 addresses and ranges in\nCIDR notation. Also supports the named ranges listed below. These may be\nconstructed with template snippets. Must specify only one of\ninternal_networks or internal_networks_field.",
+                "type": "array",
+                "items": {
+                  "type": "string"
+                }
+              },
+              "internal_networks_field": {
+                "$ref": "#/components/schemas/_types:Field"
+              },
+              "ignore_missing": {
+                "description": "If true and any required fields are missing, the processor quietly exits\nwithout modifying the document.",
+                "type": "boolean"
+              }
+            }
+          }
+        ]
+      },
       "ingest._types:PipelineProcessor": {
         "allOf": [
           {
@@ -72274,6 +71643,10 @@
               "skip_if_unlicensed": {
                 "description": "If `true` and the current license does not support running redact processors, then the processor quietly exits without modifying the document",
                 "type": "boolean"
+              },
+              "trace_redact": {
+                "description": "If `true` then ingest metadata `_ingest._redact._is_redacted` is set to `true` if the document has been redacted",
+                "type": "boolean"
               }
             },
             "required": [
@@ -72283,6 +71656,31 @@
           }
         ]
       },
+      "ingest._types:RegisteredDomainProcessor": {
+        "allOf": [
+          {
+            "$ref": "#/components/schemas/ingest._types:ProcessorBase"
+          },
+          {
+            "type": "object",
+            "properties": {
+              "field": {
+                "$ref": "#/components/schemas/_types:Field"
+              },
+              "target_field": {
+                "$ref": "#/components/schemas/_types:Field"
+              },
+              "ignore_missing": {
+                "description": "If true and any required fields are missing, the processor quietly exits\nwithout modifying the document.",
+                "type": "boolean"
+              }
+            },
+            "required": [
+              "field"
+            ]
+          }
+        ]
+      },
       "ingest._types:RemoveProcessor": {
         "allOf": [
           {
@@ -72528,6 +71926,16 @@
           }
         ]
       },
+      "ingest._types:TerminateProcessor": {
+        "allOf": [
+          {
+            "$ref": "#/components/schemas/ingest._types:ProcessorBase"
+          },
+          {
+            "type": "object"
+          }
+        ]
+      },
       "ingest._types:TrimProcessor": {
         "allOf": [
           {
@@ -72667,7 +72075,6 @@
               },
               "extract_device_type": {
                 "description": "Extracts device type from the user agent string on a best-effort basis.",
-                "x-available-since": "8.9.0",
                 "x-beta": true,
                 "type": "boolean"
               }
@@ -72763,6 +72170,9 @@
       "ingest.simulate:Ingest": {
         "type": "object",
         "properties": {
+          "_redact": {
+            "$ref": "#/components/schemas/ingest.simulate:Redact"
+          },
           "timestamp": {
             "$ref": "#/components/schemas/_types:DateTime"
           },
@@ -72774,6 +72184,18 @@
           "timestamp"
         ]
       },
+      "ingest.simulate:Redact": {
+        "type": "object",
+        "properties": {
+          "_is_redacted": {
+            "description": "indicates if document has been redacted",
+            "type": "boolean"
+          }
+        },
+        "required": [
+          "_is_redacted"
+        ]
+      },
       "_spec_utils:StringifiedVersionNumber": {
         "description": "Some APIs will return values such as numbers also as a string (notably epoch timestamps). This behavior\nis used to capture this behavior while keeping the semantics of the field type.\n\nDepending on the target language, code generators can keep the union or remove it and leniently parse\nstrings to the target type.",
         "oneOf": [
@@ -73024,9 +72446,6 @@
             "type": "string"
           },
           "pipeline": {
-            "externalDocs": {
-              "url": "https://www.elastic.co/guide/en/logstash/current/configuration-file-structure.html"
-            },
             "description": "Configuration for the pipeline.",
             "type": "string"
           },
@@ -73062,9 +72481,6 @@
         "type": "object",
         "properties": {
           "pipeline.workers": {
-            "externalDocs": {
-              "url": "https://www.elastic.co/guide/en/logstash/current/logstash-settings-file.html"
-            },
             "description": "The number of workers that will, in parallel, execute the filter and output stages of the pipeline.",
             "type": "number"
           },
@@ -73077,9 +72493,6 @@
             "type": "number"
           },
           "queue.type": {
-            "externalDocs": {
-              "url": "https://www.elastic.co/guide/en/logstash/current/logstash-settings-file.html"
-            },
             "description": "The internal queuing model to use for event buffering.",
             "type": "string"
           },
@@ -73178,13 +72591,22 @@
           },
           "url": {
             "type": "string"
+          },
+          "resolve_during_rolling_upgrade": {
+            "type": "boolean"
+          },
+          "_meta": {
+            "type": "object",
+            "additionalProperties": {
+              "type": "object"
+            }
           }
         },
         "required": [
-          "details",
           "level",
           "message",
-          "url"
+          "url",
+          "resolve_during_rolling_upgrade"
         ]
       },
       "migration.deprecations:DeprecationLevel": {
@@ -73658,9 +73080,6 @@
         "type": "object",
         "properties": {
           "mse": {
-            "externalDocs": {
-              "url": "https://en.wikipedia.org/wiki/Mean_squared_error"
-            },
             "description": "Average squared difference between the predicted values and the actual (ground truth) value. For more information, read this wiki article.",
             "type": "object",
             "additionalProperties": {
@@ -73674,9 +73093,6 @@
             "$ref": "#/components/schemas/ml._types:DataframeEvaluationRegressionMetricsHuber"
           },
           "r_squared": {
-            "externalDocs": {
-              "url": "https://en.wikipedia.org/wiki/Coefficient_of_determination"
-            },
             "description": "Proportion of the variance in the dependent variable that is predictable from the independent variables.",
             "type": "object",
             "additionalProperties": {
@@ -74683,6 +74099,9 @@
           },
           "version": {
             "$ref": "#/components/schemas/_types:VersionString"
+          },
+          "_meta": {
+            "$ref": "#/components/schemas/_types:Metadata"
           }
         },
         "required": [
@@ -75070,7 +74489,7 @@
             "$ref": "#/components/schemas/_types:Id"
           },
           "node": {
-            "$ref": "#/components/schemas/ml._types:DiscoveryNode"
+            "$ref": "#/components/schemas/ml._types:DiscoveryNodeCompact"
           },
           "state": {
             "$ref": "#/components/schemas/ml._types:DatafeedState"
@@ -75084,18 +74503,14 @@
         },
         "required": [
           "datafeed_id",
-          "state",
-          "timing_stats"
+          "state"
         ]
       },
-      "ml._types:DiscoveryNode": {
+      "ml._types:DiscoveryNodeCompact": {
         "type": "object",
         "properties": {
-          "attributes": {
-            "type": "object",
-            "additionalProperties": {
-              "type": "string"
-            }
+          "name": {
+            "$ref": "#/components/schemas/_types:Name"
           },
           "ephemeral_id": {
             "$ref": "#/components/schemas/_types:Id"
@@ -75103,19 +74518,22 @@
           "id": {
             "$ref": "#/components/schemas/_types:Id"
           },
-          "name": {
-            "$ref": "#/components/schemas/_types:Name"
-          },
           "transport_address": {
             "$ref": "#/components/schemas/_types:TransportAddress"
+          },
+          "attributes": {
+            "type": "object",
+            "additionalProperties": {
+              "type": "string"
+            }
           }
         },
         "required": [
-          "attributes",
+          "name",
           "ephemeral_id",
           "id",
-          "name",
-          "transport_address"
+          "transport_address",
+          "attributes"
         ]
       },
       "ml._types:DatafeedTimingStats": {
@@ -75128,6 +74546,9 @@
           "exponential_average_search_time_per_hour_ms": {
             "$ref": "#/components/schemas/_types:DurationValueUnitFloatMillis"
           },
+          "exponential_average_calculation_context": {
+            "$ref": "#/components/schemas/ml._types:ExponentialAverageCalculationContext"
+          },
           "job_id": {
             "$ref": "#/components/schemas/_types:Id"
           },
@@ -75161,6 +74582,23 @@
         "description": "Time unit for fractional milliseconds",
         "type": "number"
       },
+      "ml._types:ExponentialAverageCalculationContext": {
+        "type": "object",
+        "properties": {
+          "incremental_metric_value_ms": {
+            "$ref": "#/components/schemas/_types:DurationValueUnitFloatMillis"
+          },
+          "latest_timestamp": {
+            "$ref": "#/components/schemas/_types:EpochTimeUnitMillis"
+          },
+          "previous_exponential_average_ms": {
+            "$ref": "#/components/schemas/_types:DurationValueUnitFloatMillis"
+          }
+        },
+        "required": [
+          "incremental_metric_value_ms"
+        ]
+      },
       "ml._types:DatafeedRunningState": {
         "type": "object",
         "properties": {
@@ -75451,7 +74889,7 @@
             "$ref": "#/components/schemas/ml._types:ModelSizeStats"
           },
           "node": {
-            "$ref": "#/components/schemas/ml._types:DiscoveryNode"
+            "$ref": "#/components/schemas/ml._types:DiscoveryNodeCompact"
           },
           "open_time": {
             "$ref": "#/components/schemas/_types:DateTime"
@@ -75629,6 +75067,9 @@
           "model_bytes_memory_limit": {
             "$ref": "#/components/schemas/_types:ByteSize"
           },
+          "output_memory_allocator_bytes": {
+            "$ref": "#/components/schemas/_types:ByteSize"
+          },
           "peak_model_bytes": {
             "$ref": "#/components/schemas/_types:ByteSize"
           },
@@ -75828,8 +75269,7 @@
             "type": "number"
           },
           "model_memory_limit": {
-            "description": "The approximate maximum amount of memory resources that are required for analytical processing. Once this limit is approached, data pruning becomes more aggressive. Upon exceeding this limit, new entities are not modeled. If the `xpack.ml.max_model_memory_limit` setting has a value greater than 0 and less than 1024mb, that value is used instead of the default. The default value is relatively small to ensure that high resource usage is a conscious decision. If you have jobs that are expected to analyze high cardinality fields, you will likely need to use a higher value. If you specify a number instead of a string, the units are assumed to be MiB. Specifying a string is recommended for clarity. If you specify a byte size unit of `b` or `kb` and the number does not equate to a discrete number of megabytes, it is rounded down to the closest MiB. The minimum valid value is 1 MiB. If you specify a value less than 1 MiB, an error occurs. If you specify a value for the `xpack.ml.max_model_memory_limit` setting, an error occurs when you try to create jobs that have `model_memory_limit` values greater than that setting value.",
-            "type": "string"
+            "$ref": "#/components/schemas/_types:ByteSize"
           }
         }
       },
@@ -75883,7 +75323,6 @@
         "properties": {
           "annotations_enabled": {
             "description": "If true, enables calculation and storage of the model change annotations for each entity that is being analyzed.",
-            "x-available-since": "7.9.0",
             "type": "boolean"
           },
           "enabled": {
@@ -76078,6 +75517,62 @@
           "failed"
         ]
       },
+      "ml._types:DiscoveryNode": {
+        "type": "object",
+        "additionalProperties": {
+          "$ref": "#/components/schemas/ml._types:DiscoveryNodeContent"
+        },
+        "minProperties": 1,
+        "maxProperties": 1
+      },
+      "ml._types:DiscoveryNodeContent": {
+        "type": "object",
+        "properties": {
+          "name": {
+            "$ref": "#/components/schemas/_types:Name"
+          },
+          "ephemeral_id": {
+            "$ref": "#/components/schemas/_types:Id"
+          },
+          "transport_address": {
+            "$ref": "#/components/schemas/_types:TransportAddress"
+          },
+          "external_id": {
+            "type": "string"
+          },
+          "attributes": {
+            "type": "object",
+            "additionalProperties": {
+              "type": "string"
+            }
+          },
+          "roles": {
+            "type": "array",
+            "items": {
+              "type": "string"
+            }
+          },
+          "version": {
+            "$ref": "#/components/schemas/_types:VersionString"
+          },
+          "min_index_version": {
+            "type": "number"
+          },
+          "max_index_version": {
+            "type": "number"
+          }
+        },
+        "required": [
+          "ephemeral_id",
+          "transport_address",
+          "external_id",
+          "attributes",
+          "roles",
+          "version",
+          "min_index_version",
+          "max_index_version"
+        ]
+      },
       "ml._types:ModelSnapshot": {
         "type": "object",
         "properties": {
@@ -76165,8 +75660,7 @@
           "jobs",
           "overall_score",
           "result_type",
-          "timestamp",
-          "timestamp_string"
+          "timestamp"
         ]
       },
       "ml._types:OverallBucketJob": {
@@ -76376,6 +75870,9 @@
           "function_description": {
             "type": "string"
           },
+          "geo_results": {
+            "$ref": "#/components/schemas/ml._types:GeoResults"
+          },
           "influencers": {
             "type": "array",
             "items": {
@@ -76405,22 +75902,22 @@
           }
         },
         "required": [
-          "actual",
-          "by_field_name",
-          "by_field_value",
-          "correlated_by_field_value",
-          "field_name",
-          "function",
-          "function_description",
-          "influencers",
-          "over_field_name",
-          "over_field_value",
-          "partition_field_name",
-          "partition_field_value",
-          "probability",
-          "typical"
+          "probability"
         ]
       },
+      "ml._types:GeoResults": {
+        "type": "object",
+        "properties": {
+          "actual_point": {
+            "description": "The actual value for the bucket formatted as a `geo_point`.",
+            "type": "string"
+          },
+          "typical_point": {
+            "description": "The typical value for the bucket formatted as a `geo_point`.",
+            "type": "string"
+          }
+        }
+      },
       "ml._types:Influence": {
         "type": "object",
         "properties": {
@@ -76439,23 +75936,6 @@
           "influencer_field_values"
         ]
       },
-      "ml._types:GeoResults": {
-        "type": "object",
-        "properties": {
-          "actual_point": {
-            "description": "The actual value for the bucket formatted as a `geo_point`.",
-            "type": "string"
-          },
-          "typical_point": {
-            "description": "The typical value for the bucket formatted as a `geo_point`.",
-            "type": "string"
-          }
-        },
-        "required": [
-          "actual_point",
-          "typical_point"
-        ]
-      },
       "ml._types:Include": {
         "type": "string",
         "enum": [
@@ -76534,9 +76014,15 @@
           "model_size_bytes": {
             "$ref": "#/components/schemas/_types:ByteSize"
           },
+          "model_package": {
+            "$ref": "#/components/schemas/ml._types:ModelPackageConfig"
+          },
           "location": {
             "$ref": "#/components/schemas/ml._types:TrainedModelLocation"
           },
+          "platform_architecture": {
+            "type": "string"
+          },
           "prefix_strings": {
             "$ref": "#/components/schemas/ml._types:TrainedModelPrefixStrings"
           }
@@ -76574,6 +76060,9 @@
           "fill_mask": {
             "$ref": "#/components/schemas/ml._types:FillMaskInferenceOptions"
           },
+          "learning_to_rank": {
+            "$ref": "#/components/schemas/ml._types:LearningToRankConfig"
+          },
           "ner": {
             "$ref": "#/components/schemas/ml._types:NerInferenceOptions"
           },
@@ -76613,6 +76102,9 @@
             "items": {
               "type": "string"
             }
+          },
+          "vocabulary": {
+            "$ref": "#/components/schemas/ml._types:Vocabulary"
           }
         }
       },
@@ -76623,37 +76115,53 @@
           "bert": {
             "$ref": "#/components/schemas/ml._types:NlpBertTokenizationConfig"
           },
+          "bert_ja": {
+            "$ref": "#/components/schemas/ml._types:NlpBertTokenizationConfig"
+          },
           "mpnet": {
             "$ref": "#/components/schemas/ml._types:NlpBertTokenizationConfig"
           },
           "roberta": {
             "$ref": "#/components/schemas/ml._types:NlpRobertaTokenizationConfig"
+          },
+          "xlm_roberta": {
+            "$ref": "#/components/schemas/ml._types:XlmRobertaTokenizationConfig"
           }
         },
         "minProperties": 1,
         "maxProperties": 1
       },
       "ml._types:NlpBertTokenizationConfig": {
+        "allOf": [
+          {
+            "$ref": "#/components/schemas/ml._types:CommonTokenizationConfig"
+          },
+          {
+            "type": "object"
+          }
+        ]
+      },
+      "ml._types:CommonTokenizationConfig": {
         "type": "object",
         "properties": {
           "do_lower_case": {
             "description": "Should the tokenizer lower case the text",
             "type": "boolean"
           },
-          "with_special_tokens": {
-            "description": "Is tokenization completed with special tokens",
-            "type": "boolean"
-          },
           "max_sequence_length": {
             "description": "Maximum input sequence length for the model",
             "type": "number"
           },
-          "truncate": {
-            "$ref": "#/components/schemas/ml._types:TokenizationTruncate"
-          },
           "span": {
             "description": "Tokenization spanning options. Special value of -1 indicates no spanning takes place",
             "type": "number"
+          },
+          "truncate": {
+            "$ref": "#/components/schemas/ml._types:TokenizationTruncate"
+          },
+          "with_special_tokens": {
+            "description": "Is tokenization completed with special tokens",
+            "type": "boolean"
           }
         }
       },
@@ -76666,28 +76174,41 @@
         ]
       },
       "ml._types:NlpRobertaTokenizationConfig": {
-        "type": "object",
-        "properties": {
-          "add_prefix_space": {
-            "description": "Should the tokenizer prefix input with a space character",
-            "type": "boolean"
-          },
-          "with_special_tokens": {
-            "description": "Is tokenization completed with special tokens",
-            "type": "boolean"
-          },
-          "max_sequence_length": {
-            "description": "Maximum input sequence length for the model",
-            "type": "number"
+        "allOf": [
+          {
+            "$ref": "#/components/schemas/ml._types:CommonTokenizationConfig"
           },
-          "truncate": {
-            "$ref": "#/components/schemas/ml._types:TokenizationTruncate"
+          {
+            "type": "object",
+            "properties": {
+              "add_prefix_space": {
+                "description": "Should the tokenizer prefix input with a space character",
+                "type": "boolean"
+              }
+            }
+          }
+        ]
+      },
+      "ml._types:XlmRobertaTokenizationConfig": {
+        "allOf": [
+          {
+            "$ref": "#/components/schemas/ml._types:CommonTokenizationConfig"
           },
-          "span": {
-            "description": "Tokenization spanning options. Special value of -1 indicates no spanning takes place",
-            "type": "number"
+          {
+            "type": "object"
           }
-        }
+        ]
+      },
+      "ml._types:Vocabulary": {
+        "type": "object",
+        "properties": {
+          "index": {
+            "$ref": "#/components/schemas/_types:IndexName"
+          }
+        },
+        "required": [
+          "index"
+        ]
       },
       "ml._types:ZeroShotClassificationInferenceOptions": {
         "type": "object",
@@ -76743,8 +76264,65 @@
           "results_field": {
             "description": "The field that is added to incoming documents to contain the inference prediction. Defaults to predicted_value.",
             "type": "string"
+          },
+          "vocabulary": {
+            "$ref": "#/components/schemas/ml._types:Vocabulary"
+          }
+        },
+        "required": [
+          "vocabulary"
+        ]
+      },
+      "ml._types:LearningToRankConfig": {
+        "type": "object",
+        "properties": {
+          "default_params": {
+            "type": "object",
+            "additionalProperties": {
+              "type": "object"
+            }
+          },
+          "feature_extractors": {
+            "type": "array",
+            "items": {
+              "type": "object",
+              "additionalProperties": {
+                "$ref": "#/components/schemas/ml._types:FeatureExtractor"
+              }
+            }
+          },
+          "num_top_feature_importance_values": {
+            "type": "number"
+          }
+        },
+        "required": [
+          "num_top_feature_importance_values"
+        ]
+      },
+      "ml._types:FeatureExtractor": {
+        "allOf": [
+          {
+            "$ref": "#/components/schemas/ml._types:QueryFeatureExtractor"
+          }
+        ]
+      },
+      "ml._types:QueryFeatureExtractor": {
+        "type": "object",
+        "properties": {
+          "default_score": {
+            "type": "number"
+          },
+          "feature_name": {
+            "type": "string"
+          },
+          "query": {
+            "$ref": "#/components/schemas/_types.query_dsl:QueryContainer"
           }
-        }
+        },
+        "required": [
+          "feature_name",
+          "query"
+        ]
       },
       "ml._types:NerInferenceOptions": {
         "type": "object",
@@ -76768,17 +76346,6 @@
           }
         }
       },
-      "ml._types:Vocabulary": {
-        "type": "object",
-        "properties": {
-          "index": {
-            "$ref": "#/components/schemas/_types:IndexName"
-          }
-        },
-        "required": [
-          "index"
-        ]
-      },
       "ml._types:PassThroughInferenceOptions": {
         "type": "object",
         "properties": {
@@ -76807,8 +76374,14 @@
           "results_field": {
             "description": "The field that is added to incoming documents to contain the inference prediction. Defaults to predicted_value.",
             "type": "string"
+          },
+          "vocabulary": {
+            "$ref": "#/components/schemas/ml._types:Vocabulary"
           }
-        }
+        },
+        "required": [
+          "vocabulary"
+        ]
       },
       "ml._types:TextExpansionInferenceOptions": {
         "type": "object",
@@ -76819,8 +76392,14 @@
           "results_field": {
             "description": "The field that is added to incoming documents to contain the inference prediction. Defaults to predicted_value.",
             "type": "string"
+          },
+          "vocabulary": {
+            "$ref": "#/components/schemas/ml._types:Vocabulary"
           }
-        }
+        },
+        "required": [
+          "vocabulary"
+        ]
       },
       "ml._types:QuestionAnsweringInferenceOptions": {
         "type": "object",
@@ -76893,9 +76472,6 @@
         "type": "object",
         "properties": {
           "absolute_importance": {
-            "externalDocs": {
-              "url": "https://www.elastic.co/guide/en/machine-learning/current/dfa-regression-lossfunction.html"
-            },
             "description": "A positive number showing how much the parameter influences the variation of the loss function. For hyperparameters with values that are not specified by the user but tuned during hyperparameter optimization.",
             "type": "number"
           },
@@ -76989,6 +76565,75 @@
           "importance"
         ]
       },
+      "ml._types:ModelPackageConfig": {
+        "type": "object",
+        "properties": {
+          "create_time": {
+            "$ref": "#/components/schemas/_types:EpochTimeUnitMillis"
+          },
+          "description": {
+            "type": "string"
+          },
+          "inference_config": {
+            "type": "object",
+            "additionalProperties": {
+              "type": "object"
+            }
+          },
+          "metadata": {
+            "$ref": "#/components/schemas/_types:Metadata"
+          },
+          "minimum_version": {
+            "type": "string"
+          },
+          "model_repository": {
+            "type": "string"
+          },
+          "model_type": {
+            "type": "string"
+          },
+          "packaged_model_id": {
+            "$ref": "#/components/schemas/_types:Id"
+          },
+          "platform_architecture": {
+            "type": "string"
+          },
+          "prefix_strings": {
+            "$ref": "#/components/schemas/ml._types:TrainedModelPrefixStrings"
+          },
+          "size": {
+            "$ref": "#/components/schemas/_types:ByteSize"
+          },
+          "sha256": {
+            "type": "string"
+          },
+          "tags": {
+            "type": "array",
+            "items": {
+              "type": "string"
+            }
+          },
+          "vocabulary_file": {
+            "type": "string"
+          }
+        },
+        "required": [
+          "packaged_model_id"
+        ]
+      },
+      "ml._types:TrainedModelPrefixStrings": {
+        "type": "object",
+        "properties": {
+          "ingest": {
+            "description": "String prepended to input at ingest",
+            "type": "string"
+          },
+          "search": {
+            "description": "String prepended to input at search",
+            "type": "string"
+          }
+        }
+      },
       "ml._types:TrainedModelLocation": {
         "type": "object",
         "properties": {
@@ -77011,19 +76656,6 @@
           "name"
         ]
       },
-      "ml._types:TrainedModelPrefixStrings": {
-        "type": "object",
-        "properties": {
-          "ingest": {
-            "description": "String prepended to input at ingest",
-            "type": "string"
-          },
-          "search": {
-            "description": "String prepended to input at search",
-            "type": "string"
-          }
-        }
-      },
       "ml._types:TrainedModelStats": {
         "type": "object",
         "properties": {
@@ -77034,9 +76666,6 @@
             "$ref": "#/components/schemas/ml._types:TrainedModelInferenceStats"
           },
           "ingest": {
-            "externalDocs": {
-              "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/cluster-nodes-stats.html"
-            },
             "description": "A collection of ingest stats for the model across all nodes.\nThe values are summations of the individual node statistics.\nThe format matches the ingest section in the nodes stats API.",
             "type": "object",
             "additionalProperties": {
@@ -77063,6 +76692,9 @@
       "ml._types:TrainedModelDeploymentStats": {
         "type": "object",
         "properties": {
+          "adaptive_allocations": {
+            "$ref": "#/components/schemas/ml._types:AdaptiveAllocationsSettings"
+          },
           "allocation_status": {
             "$ref": "#/components/schemas/ml._types:TrainedModelDeploymentAllocationStatus"
           },
@@ -77094,6 +76726,12 @@
             "description": "The number of allocations requested.",
             "type": "number"
           },
+          "peak_throughput_per_minute": {
+            "type": "number"
+          },
+          "priority": {
+            "$ref": "#/components/schemas/ml._types:TrainingPriority"
+          },
           "queue_capacity": {
             "description": "The number of inference requests that can be queued before new requests are rejected.",
             "type": "number"
@@ -77110,7 +76748,7 @@
             "$ref": "#/components/schemas/_types:EpochTimeUnitMillis"
           },
           "state": {
-            "$ref": "#/components/schemas/ml._types:DeploymentState"
+            "$ref": "#/components/schemas/ml._types:DeploymentAssignmentState"
           },
           "threads_per_allocation": {
             "description": "The number of threads used be each allocation during inference.",
@@ -77122,20 +76760,29 @@
           }
         },
         "required": [
-          "allocation_status",
           "deployment_id",
-          "error_count",
-          "inference_count",
           "model_id",
           "nodes",
-          "number_of_allocations",
-          "queue_capacity",
-          "rejected_execution_count",
-          "reason",
-          "start_time",
-          "state",
-          "threads_per_allocation",
-          "timeout_count"
+          "peak_throughput_per_minute",
+          "priority",
+          "start_time"
+        ]
+      },
+      "ml._types:AdaptiveAllocationsSettings": {
+        "type": "object",
+        "properties": {
+          "enabled": {
+            "type": "boolean"
+          },
+          "min_number_of_allocations": {
+            "type": "number"
+          },
+          "max_number_of_allocations": {
+            "type": "number"
+          }
+        },
+        "required": [
+          "enabled"
         ]
       },
       "ml._types:TrainedModelDeploymentAllocationStatus": {
@@ -77173,6 +76820,12 @@
           "average_inference_time_ms": {
             "$ref": "#/components/schemas/_types:DurationValueUnitFloatMillis"
           },
+          "average_inference_time_ms_last_minute": {
+            "$ref": "#/components/schemas/_types:DurationValueUnitFloatMillis"
+          },
+          "average_inference_time_ms_excluding_cache_hits": {
+            "$ref": "#/components/schemas/_types:DurationValueUnitFloatMillis"
+          },
           "error_count": {
             "description": "The number of errors when evaluating the trained model.",
             "type": "number"
@@ -77181,10 +76834,15 @@
             "description": "The total number of inference calls made against this node for this model.",
             "type": "number"
           },
-          "last_access": {
-            "description": "The epoch time stamp of the last inference call for the model on this node.",
+          "inference_cache_hit_count": {
             "type": "number"
           },
+          "inference_cache_hit_count_last_minute": {
+            "type": "number"
+          },
+          "last_access": {
+            "$ref": "#/components/schemas/_types:EpochTimeUnitMillis"
+          },
           "node": {
             "$ref": "#/components/schemas/ml._types:DiscoveryNode"
           },
@@ -77196,6 +76854,9 @@
             "description": "The number of inference requests queued to be processed.",
             "type": "number"
           },
+          "peak_throughput_per_minute": {
+            "type": "number"
+          },
           "rejection_execution_count": {
             "description": "The number of inference requests that were not processed because the queue was full.",
             "type": "number"
@@ -77210,24 +76871,18 @@
             "description": "The number of threads used by each allocation during inference.",
             "type": "number"
           },
+          "throughput_last_minute": {
+            "type": "number"
+          },
           "timeout_count": {
             "description": "The number of inference requests that timed out before being processed.",
             "type": "number"
           }
         },
         "required": [
-          "average_inference_time_ms",
-          "error_count",
-          "inference_count",
-          "last_access",
-          "node",
-          "number_of_allocations",
-          "number_of_pending_requests",
-          "rejection_execution_count",
+          "peak_throughput_per_minute",
           "routing_state",
-          "start_time",
-          "threads_per_allocation",
-          "timeout_count"
+          "throughput_last_minute"
         ]
       },
       "ml._types:TrainedModelAssignmentRoutingTable": {
@@ -77250,7 +76905,6 @@
           }
         },
         "required": [
-          "reason",
           "routing_state",
           "current_allocations",
           "target_allocations"
@@ -77266,21 +76920,26 @@
           "stopping"
         ]
       },
-      "ml._types:DeploymentState": {
+      "ml._types:TrainingPriority": {
+        "type": "string",
+        "enum": [
+          "normal",
+          "low"
+        ]
+      },
+      "ml._types:DeploymentAssignmentState": {
         "type": "string",
         "enum": [
           "started",
           "starting",
-          "stopping"
+          "stopping",
+          "failed"
         ]
       },
       "ml._types:TrainedModelInferenceStats": {
         "type": "object",
         "properties": {
           "cache_miss_count": {
-            "externalDocs": {
-              "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/ml-settings.html"
-            },
             "description": "The number of times the model was loaded for inference and was not retrieved from the cache.\nIf this number is close to the `inference_count`, the cache is not being appropriately used.\nThis can be solved by increasing the cache size or its time-to-live (TTL).\nRefer to general machine learning settings for the appropriate settings.",
             "type": "number"
           },
@@ -77722,18 +77381,23 @@
       "ml.info:Limits": {
         "type": "object",
         "properties": {
+          "max_single_ml_node_processors": {
+            "type": "number"
+          },
+          "total_ml_processors": {
+            "type": "number"
+          },
           "max_model_memory_limit": {
-            "type": "string"
+            "$ref": "#/components/schemas/_types:ByteSize"
           },
           "effective_max_model_memory_limit": {
-            "type": "string"
+            "$ref": "#/components/schemas/_types:ByteSize"
           },
           "total_ml_memory": {
-            "type": "string"
+            "$ref": "#/components/schemas/_types:ByteSize"
           }
         },
         "required": [
-          "effective_max_model_memory_limit",
           "total_ml_memory"
         ]
       },
@@ -77837,9 +77501,6 @@
         "type": "object",
         "properties": {
           "allow_lazy_open": {
-            "externalDocs": {
-              "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/ml-put-job.html"
-            },
             "description": "Advanced configuration option. Specifies whether this job can open when there is insufficient machine learning node capacity for it to be immediately assigned to a node.",
             "type": "boolean"
           },
@@ -78007,9 +77668,6 @@
             "$ref": "#/components/schemas/_types:Field"
           },
           "function": {
-            "externalDocs": {
-              "url": "https://www.elastic.co/guide/en/machine-learning/current/ml-functions.html"
-            },
             "description": "The analysis function that is used.\nFor example, `count`, `rare`, `mean`, `min`, `max`, and `sum`.",
             "type": "string"
           },
@@ -78278,22 +77936,29 @@
           "field_names"
         ]
       },
-      "ml._types:TrainingPriority": {
-        "type": "string",
-        "enum": [
-          "normal",
-          "low"
-        ]
-      },
       "ml._types:TrainedModelAssignment": {
         "type": "object",
         "properties": {
+          "adaptive_allocations": {
+            "oneOf": [
+              {
+                "$ref": "#/components/schemas/ml._types:AdaptiveAllocationsSettings"
+              },
+              {
+                "nullable": true,
+                "type": "string"
+              }
+            ]
+          },
           "assignment_state": {
             "$ref": "#/components/schemas/ml._types:DeploymentAssignmentState"
           },
           "max_assigned_allocations": {
             "type": "number"
           },
+          "reason": {
+            "type": "string"
+          },
           "routing_table": {
             "description": "The allocation state for each node.",
             "type": "object",
@@ -78315,21 +77980,11 @@
           "task_parameters"
         ]
       },
-      "ml._types:DeploymentAssignmentState": {
-        "type": "string",
-        "enum": [
-          "starting",
-          "started",
-          "stopping",
-          "failed"
-        ]
-      },
       "ml._types:TrainedModelAssignmentTaskParameters": {
         "type": "object",
         "properties": {
           "model_bytes": {
-            "description": "The size of the trained model in bytes.",
-            "type": "number"
+            "$ref": "#/components/schemas/_types:ByteSize"
           },
           "model_id": {
             "$ref": "#/components/schemas/_types:Id"
@@ -78347,6 +78002,12 @@
           "priority": {
             "$ref": "#/components/schemas/ml._types:TrainingPriority"
           },
+          "per_deployment_memory_bytes": {
+            "$ref": "#/components/schemas/_types:ByteSize"
+          },
+          "per_allocation_memory_bytes": {
+            "$ref": "#/components/schemas/_types:ByteSize"
+          },
           "queue_capacity": {
             "description": "Number of inference requests are allowed in the queue at a time.",
             "type": "number"
@@ -78360,9 +78021,10 @@
           "model_bytes",
           "model_id",
           "deployment_id",
-          "cache_size",
           "number_of_allocations",
           "priority",
+          "per_deployment_memory_bytes",
+          "per_allocation_memory_bytes",
           "queue_capacity",
           "threads_per_allocation"
         ]
@@ -78379,6 +78041,29 @@
           "model_memory_limit"
         ]
       },
+      "ml._types:DetectorUpdate": {
+        "type": "object",
+        "properties": {
+          "detector_index": {
+            "description": "A unique identifier for the detector.\nThis identifier is based on the order of the detectors in the `analysis_config`, starting at zero.",
+            "type": "number"
+          },
+          "description": {
+            "description": "A description of the detector.",
+            "type": "string"
+          },
+          "custom_rules": {
+            "description": "An array of custom rule objects, which enable you to customize the way detectors operate.\nFor example, a rule may dictate to the detector conditions under which results should be skipped.\nKibana refers to custom rules as job rules.",
+            "type": "array",
+            "items": {
+              "$ref": "#/components/schemas/ml._types:DetectionRule"
+            }
+          }
+        },
+        "required": [
+          "detector_index"
+        ]
+      },
       "_global.msearch:MultiSearchResult": {
         "type": "object",
         "properties": {
@@ -78891,9 +78576,6 @@
             }
           },
           "total_indexing_buffer": {
-            "externalDocs": {
-              "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/indexing-buffer.html"
-            },
             "description": "Total heap allowed to be used to hold recently indexed documents before they must be written to disk. This size is a shared pool across all shards on this node, and is controlled by Indexing Buffer settings.",
             "type": "number"
           },
@@ -79379,10 +79061,17 @@
             }
           },
           "data": {
-            "type": "array",
-            "items": {
-              "type": "string"
-            }
+            "oneOf": [
+              {
+                "type": "string"
+              },
+              {
+                "type": "array",
+                "items": {
+                  "type": "string"
+                }
+              }
+            ]
           }
         }
       },
@@ -79549,7 +79238,17 @@
         "type": "object",
         "properties": {
           "host": {
-            "$ref": "#/components/schemas/_types:Host"
+            "oneOf": [
+              {
+                "$ref": "#/components/schemas/_types:Host"
+              },
+              {
+                "type": "array",
+                "items": {
+                  "$ref": "#/components/schemas/_types:Host"
+                }
+              }
+            ]
           }
         }
       },
@@ -79567,6 +79266,9 @@
             "additionalProperties": {
               "type": "object"
             }
+          },
+          "ml": {
+            "$ref": "#/components/schemas/nodes.info:NodeInfoXpackMl"
           }
         },
         "required": [
@@ -79612,7 +79314,6 @@
           }
         },
         "required": [
-          "http",
           "enabled"
         ]
       },
@@ -79639,11 +79340,7 @@
           "token": {
             "$ref": "#/components/schemas/nodes.info:NodeInfoXpackSecurityAuthcToken"
           }
-        },
-        "required": [
-          "realms",
-          "token"
-        ]
+        }
       },
       "nodes.info:NodeInfoXpackSecurityAuthcRealms": {
         "type": "object",
@@ -79693,6 +79390,14 @@
           "enabled"
         ]
       },
+      "nodes.info:NodeInfoXpackMl": {
+        "type": "object",
+        "properties": {
+          "use_auto_machine_memory_percent": {
+            "type": "boolean"
+          }
+        }
+      },
       "nodes.info:NodeInfoScript": {
         "type": "object",
         "properties": {
@@ -81261,7 +80966,14 @@
             "type": "number"
           },
           "rule_criteria_types_counts": {
-            "description": "A map of criteria type to the number of rules of that type",
+            "description": "A map of criteria type (e.g. exact) to the number of rules of that type",
+            "type": "object",
+            "additionalProperties": {
+              "type": "number"
+            }
+          },
+          "rule_type_counts": {
+            "description": "A map of rule type (e.g. pinned) to the number of rules of that type",
             "type": "object",
             "additionalProperties": {
               "type": "number"
@@ -81271,7 +80983,23 @@
         "required": [
           "ruleset_id",
           "rule_total_count",
-          "rule_criteria_types_counts"
+          "rule_criteria_types_counts",
+          "rule_type_counts"
+        ]
+      },
+      "query_rules.test:QueryRulesetMatchedRule": {
+        "type": "object",
+        "properties": {
+          "ruleset_id": {
+            "$ref": "#/components/schemas/_types:Id"
+          },
+          "rule_id": {
+            "$ref": "#/components/schemas/_types:Id"
+          }
+        },
+        "required": [
+          "ruleset_id",
+          "rule_id"
         ]
       },
       "_global.rank_eval:RankEvalRequestItem": {
@@ -81430,9 +81158,6 @@
             "type": "object",
             "properties": {
               "normalize": {
-                "externalDocs": {
-                  "url": "https://en.wikipedia.org/wiki/Discounted_cumulative_gain#Normalized_DCG"
-                },
                 "description": "If set to true, this metric will calculate the Normalized DCG.",
                 "type": "boolean"
               }
@@ -82238,6 +81963,9 @@
           },
           "rrf": {
             "$ref": "#/components/schemas/_types:RRFRetriever"
+          },
+          "text_similarity_reranker": {
+            "$ref": "#/components/schemas/_types:TextSimilarityReranker"
           }
         },
         "minProperties": 1,
@@ -82264,10 +81992,6 @@
               "sort": {
                 "$ref": "#/components/schemas/_types:Sort"
               },
-              "min_score": {
-                "description": "Minimum _score for matching documents. Documents with a lower _score are not included in the top documents.",
-                "type": "number"
-              },
               "collapse": {
                 "$ref": "#/components/schemas/_global.search._types:FieldCollapse"
               }
@@ -82291,6 +82015,10 @@
                 }
               }
             ]
+          },
+          "min_score": {
+            "description": "Minimum _score for matching documents. Documents with a lower _score are not included in the top documents.",
+            "type": "number"
           }
         }
       },
@@ -82363,6 +82091,40 @@
           }
         ]
       },
+      "_types:TextSimilarityReranker": {
+        "allOf": [
+          {
+            "$ref": "#/components/schemas/_types:RetrieverBase"
+          },
+          {
+            "type": "object",
+            "properties": {
+              "retriever": {
+                "$ref": "#/components/schemas/_types:RetrieverContainer"
+              },
+              "rank_window_size": {
+                "description": "This value determines how many documents we will consider from the nested retriever.",
+                "type": "number"
+              },
+              "inference_id": {
+                "description": "Unique identifier of the inference endpoint created using the inference API.",
+                "type": "string"
+              },
+              "inference_text": {
+                "description": "The text snippet used as the basis for similarity comparison",
+                "type": "string"
+              },
+              "field": {
+                "description": "The document field to be used for text similarity comparisons. This field should contain the text that will be evaluated against the inference_text",
+                "type": "string"
+              }
+            },
+            "required": [
+              "retriever"
+            ]
+          }
+        ]
+      },
       "search_application._types:SearchApplication": {
         "type": "object",
         "properties": {
@@ -82506,7 +82268,6 @@
             "$ref": "#/components/schemas/_types:TransportAddress"
           },
           "external_id": {
-            "x-available-since": "8.3.0",
             "type": "string"
           },
           "attributes": {
@@ -82824,72 +82585,67 @@
           "username"
         ]
       },
-      "security._types:ApiKey": {
+      "security.authenticate:AuthenticateApiKey": {
         "type": "object",
         "properties": {
-          "creation": {
-            "description": "Creation time for the API key in milliseconds.",
-            "type": "number"
-          },
-          "expiration": {
-            "description": "Expiration time for the API key in milliseconds.",
-            "type": "number"
-          },
           "id": {
             "$ref": "#/components/schemas/_types:Id"
           },
-          "invalidated": {
-            "description": "Invalidation status for the API key.\nIf the key has been invalidated, it has a value of `true`. Otherwise, it is `false`.",
-            "type": "boolean"
-          },
+          "name": {
+            "$ref": "#/components/schemas/_types:Name"
+          }
+        },
+        "required": [
+          "id"
+        ]
+      },
+      "security._types:RealmInfo": {
+        "type": "object",
+        "properties": {
           "name": {
             "$ref": "#/components/schemas/_types:Name"
           },
-          "realm": {
-            "description": "Realm name of the principal for which this API key was created.",
-            "type": "string"
-          },
-          "realm_type": {
-            "description": "Realm type of the principal for which this API key was created",
-            "x-available-since": "8.14.0",
+          "type": {
             "type": "string"
+          }
+        },
+        "required": [
+          "name",
+          "type"
+        ]
+      },
+      "security.authenticate:Token": {
+        "type": "object",
+        "properties": {
+          "name": {
+            "$ref": "#/components/schemas/_types:Name"
           },
-          "username": {
-            "$ref": "#/components/schemas/_types:Username"
-          },
-          "profile_uid": {
-            "description": "The profile uid for the API key owner principal, if requested and if it exists",
-            "x-available-since": "8.14.0",
+          "type": {
             "type": "string"
+          }
+        },
+        "required": [
+          "name"
+        ]
+      },
+      "security._types:BulkError": {
+        "type": "object",
+        "properties": {
+          "count": {
+            "description": "The number of errors",
+            "type": "number"
           },
-          "metadata": {
-            "$ref": "#/components/schemas/_types:Metadata"
-          },
-          "role_descriptors": {
-            "description": "The role descriptors assigned to this API key when it was created or last updated.\nAn empty role descriptor means the API key inherits the owner user’s permissions.",
+          "details": {
+            "description": "Details about the errors, keyed by role name",
             "type": "object",
             "additionalProperties": {
-              "$ref": "#/components/schemas/security._types:RoleDescriptor"
-            }
-          },
-          "limited_by": {
-            "description": "The owner user’s permissions associated with the API key.\nIt is a point-in-time snapshot captured at creation and subsequent updates.\nAn API key’s effective permissions are an intersection of its assigned privileges and the owner user’s permissions.",
-            "x-available-since": "8.5.0",
-            "type": "array",
-            "items": {
-              "type": "object",
-              "additionalProperties": {
-                "$ref": "#/components/schemas/security._types:RoleDescriptor"
-              }
+              "$ref": "#/components/schemas/_types:ErrorCause"
             }
-          },
-          "_sort": {
-            "$ref": "#/components/schemas/_types:SortResults"
           }
         },
         "required": [
-          "id",
-          "name"
+          "count",
+          "details"
         ]
       },
       "security._types:RoleDescriptor": {
@@ -82934,9 +82690,6 @@
             "$ref": "#/components/schemas/_types:Metadata"
           },
           "run_as": {
-            "externalDocs": {
-              "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/run-as-privilege.html"
-            },
             "description": "A list of users that the API keys can impersonate. *Note*: in Serverless, the run-as feature is disabled. For API compatibility, you can still specify an empty `run_as` field, but a non-empty list will be rejected.",
             "type": "array",
             "items": {
@@ -83222,73 +82975,86 @@
           "resources"
         ]
       },
-      "security._types:RealmInfo": {
+      "security._types:ClusterNode": {
         "type": "object",
         "properties": {
           "name": {
             "$ref": "#/components/schemas/_types:Name"
-          },
-          "type": {
-            "type": "string"
           }
         },
         "required": [
-          "name",
-          "type"
+          "name"
         ]
       },
-      "security.authenticate:Token": {
+      "_types:Namespace": {
+        "type": "string"
+      },
+      "_types:Service": {
+        "type": "string"
+      },
+      "security._types:Access": {
         "type": "object",
         "properties": {
-          "name": {
-            "$ref": "#/components/schemas/_types:Name"
+          "replication": {
+            "description": "A list of indices permission entries for cross-cluster replication.",
+            "type": "array",
+            "items": {
+              "$ref": "#/components/schemas/security._types:ReplicationAccess"
+            }
           },
-          "type": {
-            "x-available-since": "7.14.0",
-            "type": "string"
+          "search": {
+            "description": "A list of indices permission entries for cross-cluster search.",
+            "type": "array",
+            "items": {
+              "$ref": "#/components/schemas/security._types:SearchAccess"
+            }
           }
-        },
-        "required": [
-          "name"
-        ]
+        }
       },
-      "security._types:BulkError": {
+      "security._types:ReplicationAccess": {
         "type": "object",
         "properties": {
-          "count": {
-            "description": "The number of errors",
-            "type": "number"
-          },
-          "details": {
-            "description": "Details about the errors, keyed by role name",
-            "type": "object",
-            "additionalProperties": {
-              "$ref": "#/components/schemas/_types:ErrorCause"
+          "names": {
+            "description": "A list of indices (or index name patterns) to which the permissions in this entry apply.",
+            "type": "array",
+            "items": {
+              "$ref": "#/components/schemas/_types:IndexName"
             }
+          },
+          "allow_restricted_indices": {
+            "description": "This needs to be set to true if the patterns in the names field should cover system indices.",
+            "type": "boolean"
           }
         },
         "required": [
-          "count",
-          "details"
+          "names"
         ]
       },
-      "security._types:ClusterNode": {
+      "security._types:SearchAccess": {
         "type": "object",
         "properties": {
-          "name": {
-            "$ref": "#/components/schemas/_types:Name"
+          "field_security": {
+            "$ref": "#/components/schemas/security._types:FieldSecurity"
+          },
+          "names": {
+            "description": "A list of indices (or index name patterns) to which the permissions in this entry apply.",
+            "type": "array",
+            "items": {
+              "$ref": "#/components/schemas/_types:IndexName"
+            }
+          },
+          "query": {
+            "$ref": "#/components/schemas/security._types:IndicesPrivilegesQuery"
+          },
+          "allow_restricted_indices": {
+            "description": "Set to `true` if using wildcard or regular expressions for patterns that cover restricted indices. Implicitly, restricted indices have limited privileges that can cause pattern tests to fail. If restricted indices are explicitly included in the `names` list, Elasticsearch checks privileges against these indices regardless of the value set for `allow_restricted_indices`.",
+            "type": "boolean"
           }
         },
         "required": [
-          "name"
+          "names"
         ]
       },
-      "_types:Namespace": {
-        "type": "string"
-      },
-      "_types:Service": {
-        "type": "string"
-      },
       "security.create_service_token:Token": {
         "type": "object",
         "properties": {
@@ -83330,6 +83096,91 @@
           "value"
         ]
       },
+      "security._types:ApiKey": {
+        "type": "object",
+        "properties": {
+          "id": {
+            "$ref": "#/components/schemas/_types:Id"
+          },
+          "name": {
+            "$ref": "#/components/schemas/_types:Name"
+          },
+          "type": {
+            "$ref": "#/components/schemas/security._types:ApiKeyType"
+          },
+          "creation": {
+            "$ref": "#/components/schemas/_types:EpochTimeUnitMillis"
+          },
+          "expiration": {
+            "$ref": "#/components/schemas/_types:EpochTimeUnitMillis"
+          },
+          "invalidated": {
+            "description": "Invalidation status for the API key.\nIf the key has been invalidated, it has a value of `true`. Otherwise, it is `false`.",
+            "type": "boolean"
+          },
+          "invalidation": {
+            "$ref": "#/components/schemas/_types:EpochTimeUnitMillis"
+          },
+          "username": {
+            "$ref": "#/components/schemas/_types:Username"
+          },
+          "realm": {
+            "description": "Realm name of the principal for which this API key was created.",
+            "type": "string"
+          },
+          "realm_type": {
+            "description": "Realm type of the principal for which this API key was created",
+            "type": "string"
+          },
+          "metadata": {
+            "$ref": "#/components/schemas/_types:Metadata"
+          },
+          "role_descriptors": {
+            "description": "The role descriptors assigned to this API key when it was created or last updated.\nAn empty role descriptor means the API key inherits the owner user’s permissions.",
+            "type": "object",
+            "additionalProperties": {
+              "$ref": "#/components/schemas/security._types:RoleDescriptor"
+            }
+          },
+          "limited_by": {
+            "description": "The owner user’s permissions associated with the API key.\nIt is a point-in-time snapshot captured at creation and subsequent updates.\nAn API key’s effective permissions are an intersection of its assigned privileges and the owner user’s permissions.",
+            "type": "array",
+            "items": {
+              "type": "object",
+              "additionalProperties": {
+                "$ref": "#/components/schemas/security._types:RoleDescriptor"
+              }
+            }
+          },
+          "access": {
+            "$ref": "#/components/schemas/security._types:Access"
+          },
+          "profile_uid": {
+            "description": "The profile uid for the API key owner principal, if requested and if it exists",
+            "type": "string"
+          },
+          "_sort": {
+            "$ref": "#/components/schemas/_types:SortResults"
+          }
+        },
+        "required": [
+          "id",
+          "name",
+          "type",
+          "creation",
+          "invalidated",
+          "username",
+          "realm",
+          "metadata"
+        ]
+      },
+      "security._types:ApiKeyType": {
+        "type": "string",
+        "enum": [
+          "rest",
+          "cross_cluster"
+        ]
+      },
       "security.put_privileges:Actions": {
         "type": "object",
         "properties": {
@@ -83396,7 +83247,6 @@
             }
           },
           "global": {
-            "x-available-since": "8.0.0",
             "type": "object",
             "additionalProperties": {
               "type": "object",
@@ -83566,9 +83416,6 @@
             "$ref": "#/components/schemas/_types:Metadata"
           },
           "run_as": {
-            "externalDocs": {
-              "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/run-as-privilege.html"
-            },
             "description": "A list of users that the API keys can impersonate.",
             "type": "array",
             "items": {
@@ -83747,9 +83594,6 @@
         "type": "object",
         "properties": {
           "field_security": {
-            "externalDocs": {
-              "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/field-and-document-access-control.html"
-            },
             "description": "The document fields that the owners of the role have read access to.",
             "type": "array",
             "items": {
@@ -83968,6 +83812,39 @@
           "created"
         ]
       },
+      "security._types:RemoteIndicesPrivileges": {
+        "type": "object",
+        "properties": {
+          "clusters": {
+            "$ref": "#/components/schemas/_types:Names"
+          },
+          "field_security": {
+            "$ref": "#/components/schemas/security._types:FieldSecurity"
+          },
+          "names": {
+            "$ref": "#/components/schemas/_types:Indices"
+          },
+          "privileges": {
+            "description": "The index level privileges that owners of the role have on the specified indices.",
+            "type": "array",
+            "items": {
+              "$ref": "#/components/schemas/security._types:IndexPrivilege"
+            }
+          },
+          "query": {
+            "$ref": "#/components/schemas/security._types:IndicesPrivilegesQuery"
+          },
+          "allow_restricted_indices": {
+            "description": "Set to `true` if using wildcard or regular expressions for patterns that cover restricted indices. Implicitly, restricted indices have limited privileges that can cause pattern tests to fail. If restricted indices are explicitly included in the `names` list, Elasticsearch checks privileges against these indices regardless of the value set for `allow_restricted_indices`.",
+            "type": "boolean"
+          }
+        },
+        "required": [
+          "clusters",
+          "names",
+          "privileges"
+        ]
+      },
       "security.query_api_keys:ApiKeyAggregationContainer": {
         "allOf": [
           {
@@ -84034,9 +83911,6 @@
             "$ref": "#/components/schemas/_types.query_dsl:IdsQuery"
           },
           "match": {
-            "externalDocs": {
-              "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-match-query.html"
-            },
             "description": "Returns documents that match a provided text, number, date or boolean value.\nThe provided text is analyzed before matching.",
             "type": "object",
             "additionalProperties": {
@@ -84049,9 +83923,6 @@
             "$ref": "#/components/schemas/_types.query_dsl:MatchAllQuery"
           },
           "prefix": {
-            "externalDocs": {
-              "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-prefix-query.html"
-            },
             "description": "Returns documents that contain a specific prefix in a provided field.",
             "type": "object",
             "additionalProperties": {
@@ -84061,9 +83932,6 @@
             "maxProperties": 1
           },
           "range": {
-            "externalDocs": {
-              "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-range-query.html"
-            },
             "description": "Returns documents that contain terms within a provided range.",
             "type": "object",
             "additionalProperties": {
@@ -84076,9 +83944,6 @@
             "$ref": "#/components/schemas/_types.query_dsl:SimpleQueryStringQuery"
           },
           "term": {
-            "externalDocs": {
-              "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-term-query.html"
-            },
             "description": "Returns documents that contain an exact term in a provided field.\nTo return a document, the query term must exactly match the queried field's value, including whitespace and capitalization.",
             "type": "object",
             "additionalProperties": {
@@ -84091,9 +83956,6 @@
             "$ref": "#/components/schemas/_types.query_dsl:TermsQuery"
           },
           "wildcard": {
-            "externalDocs": {
-              "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-wildcard-query.html"
-            },
             "description": "Returns documents that contain terms matching a wildcard pattern.",
             "type": "object",
             "additionalProperties": {
@@ -84206,9 +84068,6 @@
             "$ref": "#/components/schemas/_types.query_dsl:IdsQuery"
           },
           "match": {
-            "externalDocs": {
-              "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-match-query.html"
-            },
             "description": "Returns roles that match a provided text, number, date or boolean value.\nThe provided text is analyzed before matching.",
             "type": "object",
             "additionalProperties": {
@@ -84221,9 +84080,6 @@
             "$ref": "#/components/schemas/_types.query_dsl:MatchAllQuery"
           },
           "prefix": {
-            "externalDocs": {
-              "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-prefix-query.html"
-            },
             "description": "Returns roles that contain a specific prefix in a provided field.",
             "type": "object",
             "additionalProperties": {
@@ -84233,9 +84089,6 @@
             "maxProperties": 1
           },
           "range": {
-            "externalDocs": {
-              "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-range-query.html"
-            },
             "description": "Returns roles that contain terms within a provided range.",
             "type": "object",
             "additionalProperties": {
@@ -84248,9 +84101,6 @@
             "$ref": "#/components/schemas/_types.query_dsl:SimpleQueryStringQuery"
           },
           "term": {
-            "externalDocs": {
-              "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-term-query.html"
-            },
             "description": "Returns roles that contain an exact term in a provided field.\nTo return a document, the query term must exactly match the queried field's value, including whitespace and capitalization.",
             "type": "object",
             "additionalProperties": {
@@ -84263,9 +84113,6 @@
             "$ref": "#/components/schemas/_types.query_dsl:TermsQuery"
           },
           "wildcard": {
-            "externalDocs": {
-              "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-wildcard-query.html"
-            },
             "description": "Returns roles that contain terms matching a wildcard pattern.",
             "type": "object",
             "additionalProperties": {
@@ -84313,9 +84160,6 @@
             "$ref": "#/components/schemas/_types.query_dsl:ExistsQuery"
           },
           "match": {
-            "externalDocs": {
-              "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-match-query.html"
-            },
             "description": "Returns users that match a provided text, number, date or boolean value.\nThe provided text is analyzed before matching.",
             "type": "object",
             "additionalProperties": {
@@ -84328,9 +84172,6 @@
             "$ref": "#/components/schemas/_types.query_dsl:MatchAllQuery"
           },
           "prefix": {
-            "externalDocs": {
-              "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-prefix-query.html"
-            },
             "description": "Returns users that contain a specific prefix in a provided field.",
             "type": "object",
             "additionalProperties": {
@@ -84340,9 +84181,6 @@
             "maxProperties": 1
           },
           "range": {
-            "externalDocs": {
-              "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-range-query.html"
-            },
             "description": "Returns users that contain terms within a provided range.",
             "type": "object",
             "additionalProperties": {
@@ -84355,9 +84193,6 @@
             "$ref": "#/components/schemas/_types.query_dsl:SimpleQueryStringQuery"
           },
           "term": {
-            "externalDocs": {
-              "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-term-query.html"
-            },
             "description": "Returns users that contain an exact term in a provided field.\nTo return a document, the query term must exactly match the queried field's value, including whitespace and capitalization.",
             "type": "object",
             "additionalProperties": {
@@ -84370,9 +84205,6 @@
             "$ref": "#/components/schemas/_types.query_dsl:TermsQuery"
           },
           "wildcard": {
-            "externalDocs": {
-              "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-wildcard-query.html"
-            },
             "description": "Returns users that contain terms matching a wildcard pattern.",
             "type": "object",
             "additionalProperties": {
@@ -84697,9 +84529,6 @@
         ]
       },
       "watcher._types:CronExpression": {
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/api-conventions.html#api-cron-expressions"
-        },
         "type": "string"
       },
       "slm._types:Statistics": {
@@ -84791,7 +84620,6 @@
             }
           },
           "index_details": {
-            "x-available-since": "7.13.0",
             "type": "object",
             "additionalProperties": {
               "$ref": "#/components/schemas/snapshot._types:IndexDetails"
@@ -84858,6 +84686,9 @@
           "shard_id": {
             "$ref": "#/components/schemas/_types:Id"
           },
+          "index_uuid": {
+            "$ref": "#/components/schemas/_types:Id"
+          },
           "status": {
             "type": "string"
           }
@@ -84866,6 +84697,7 @@
           "index",
           "reason",
           "shard_id",
+          "index_uuid",
           "status"
         ]
       },
@@ -85562,6 +85394,18 @@
           "type": "object"
         }
       },
+      "sql.query:SqlFormat": {
+        "type": "string",
+        "enum": [
+          "csv",
+          "json",
+          "tsv",
+          "txt",
+          "yaml",
+          "cbor",
+          "smile"
+        ]
+      },
       "ssl.certificates:CertificateInformation": {
         "type": "object",
         "properties": {
@@ -85974,7 +85818,6 @@
           },
           "unattended": {
             "description": "If `true`, the transform runs in unattended mode. In unattended mode, the transform retries indefinitely in case\nof an error which means the transform never fails. Setting the number of retries other than infinite fails in\nvalidation.",
-            "x-available-since": "8.5.0",
             "type": "boolean"
           }
         }
@@ -88090,6 +87933,14 @@
           "stopping"
         ]
       },
+      "xpack.info:XPackCategory": {
+        "type": "string",
+        "enum": [
+          "build",
+          "features",
+          "license"
+        ]
+      },
       "xpack.info:BuildInformation": {
         "type": "object",
         "properties": {
@@ -88117,12 +87968,6 @@
           "ccr": {
             "$ref": "#/components/schemas/xpack.info:Feature"
           },
-          "data_frame": {
-            "$ref": "#/components/schemas/xpack.info:Feature"
-          },
-          "data_science": {
-            "$ref": "#/components/schemas/xpack.info:Feature"
-          },
           "data_streams": {
             "$ref": "#/components/schemas/xpack.info:Feature"
           },
@@ -88132,10 +87977,13 @@
           "enrich": {
             "$ref": "#/components/schemas/xpack.info:Feature"
           },
+          "enterprise_search": {
+            "$ref": "#/components/schemas/xpack.info:Feature"
+          },
           "eql": {
             "$ref": "#/components/schemas/xpack.info:Feature"
           },
-          "flattened": {
+          "esql": {
             "$ref": "#/components/schemas/xpack.info:Feature"
           },
           "frozen_indices": {
@@ -88150,6 +87998,9 @@
           "logstash": {
             "$ref": "#/components/schemas/xpack.info:Feature"
           },
+          "logsdb": {
+            "$ref": "#/components/schemas/xpack.info:Feature"
+          },
           "ml": {
             "$ref": "#/components/schemas/xpack.info:Feature"
           },
@@ -88180,7 +88031,7 @@
           "transform": {
             "$ref": "#/components/schemas/xpack.info:Feature"
           },
-          "vectors": {
+          "universal_profiling": {
             "$ref": "#/components/schemas/xpack.info:Feature"
           },
           "voting_only": {
@@ -88200,11 +88051,14 @@
           "data_streams",
           "data_tiers",
           "enrich",
+          "enterprise_search",
           "eql",
+          "esql",
           "frozen_indices",
           "graph",
           "ilm",
           "logstash",
+          "logsdb",
           "ml",
           "monitoring",
           "rollup",
@@ -88214,6 +88068,7 @@
           "spatial",
           "sql",
           "transform",
+          "universal_profiling",
           "voting_only",
           "watcher",
           "archive"
@@ -90135,7 +89990,6 @@
                   "$ref": "#/components/schemas/cluster.allocation_explain:UnassignedInformation"
                 },
                 "note": {
-                  "x-available-since": "7.14.0",
                   "type": "string"
                 }
               },
@@ -91163,6 +91017,27 @@
           }
         }
       },
+      "ingest.get_ip_location_database#200": {
+        "description": "",
+        "content": {
+          "application/json": {
+            "schema": {
+              "type": "object",
+              "properties": {
+                "databases": {
+                  "type": "array",
+                  "items": {
+                    "$ref": "#/components/schemas/ingest.get_ip_location_database:DatabaseConfigurationMetadata"
+                  }
+                }
+              },
+              "required": [
+                "databases"
+              ]
+            }
+          }
+        }
+      },
       "ingest.get_pipeline#200": {
         "description": "",
         "content": {
@@ -92420,7 +92295,6 @@
                 },
                 "encoded": {
                   "description": "API key credentials which is the base64-encoding of\nthe UTF-8 representation of `id` and `api_key` joined\nby a colon (`:`).",
-                  "x-available-since": "7.16.0",
                   "type": "string"
                 }
               },
@@ -92887,7 +92761,6 @@
               "properties": {
                 "accepted": {
                   "description": "Equals `true` if the snapshot was accepted. Present when the request had `wait_for_completion` set to `false`",
-                  "x-available-since": "7.15.0",
                   "type": "boolean"
                 },
                 "snapshot": {
@@ -93581,15 +93454,6 @@
         },
         "style": "form"
       },
-      "async_search.submit#scroll": {
-        "in": "query",
-        "name": "scroll",
-        "deprecated": false,
-        "schema": {
-          "$ref": "#/components/schemas/_types:Duration"
-        },
-        "style": "form"
-      },
       "async_search.submit#search_type": {
         "in": "query",
         "name": "search_type",
@@ -93833,6 +93697,16 @@
         },
         "style": "simple"
       },
+      "bulk#list_executed_pipelines": {
+        "in": "query",
+        "name": "list_executed_pipelines",
+        "description": "If `true`, the response will include the ingest pipelines that were executed for each index or create.",
+        "deprecated": false,
+        "schema": {
+          "type": "boolean"
+        },
+        "style": "form"
+      },
       "bulk#pipeline": {
         "in": "query",
         "name": "pipeline",
@@ -93923,6 +93797,16 @@
         },
         "style": "form"
       },
+      "bulk#require_data_stream": {
+        "in": "query",
+        "name": "require_data_stream",
+        "description": "If `true`, the request's actions must target a data stream (existing or to-be-created).",
+        "deprecated": false,
+        "schema": {
+          "type": "boolean"
+        },
+        "style": "form"
+      },
       "cat.aliases#name": {
         "in": "path",
         "name": "name",
@@ -94905,10 +94789,10 @@
         },
         "style": "simple"
       },
-      "cluster.stats#flat_settings": {
+      "cluster.stats#include_remotes": {
         "in": "query",
-        "name": "flat_settings",
-        "description": "If `true`, returns settings in flat format.",
+        "name": "include_remotes",
+        "description": "Include remote cluster data into the response",
         "deprecated": false,
         "schema": {
           "type": "boolean"
@@ -96588,7 +96472,7 @@
         "in": "query",
         "name": "local",
         "description": "If `true`, the request retrieves information from the local node only.",
-        "deprecated": false,
+        "deprecated": true,
         "schema": {
           "type": "boolean"
         },
@@ -96792,7 +96676,7 @@
         "in": "query",
         "name": "local",
         "description": "If `true`, the request retrieves information from the local node only.",
-        "deprecated": false,
+        "deprecated": true,
         "schema": {
           "type": "boolean"
         },
@@ -98275,6 +98159,27 @@
         },
         "style": "form"
       },
+      "ingest.get_ip_location_database#id": {
+        "in": "path",
+        "name": "id",
+        "description": "Comma-separated list of database configuration IDs to retrieve.\nWildcard (`*`) expressions are supported.\nTo get all database configurations, omit this parameter or use `*`.",
+        "required": true,
+        "deprecated": false,
+        "schema": {
+          "$ref": "#/components/schemas/_types:Ids"
+        },
+        "style": "simple"
+      },
+      "ingest.get_ip_location_database#master_timeout": {
+        "in": "query",
+        "name": "master_timeout",
+        "description": "Period to wait for a connection to the master node.\nIf no response is received before the timeout expires, the request fails and returns an error.",
+        "deprecated": false,
+        "schema": {
+          "$ref": "#/components/schemas/_types:Duration"
+        },
+        "style": "form"
+      },
       "ingest.get_pipeline#id": {
         "in": "path",
         "name": "id",
@@ -99451,6 +99356,16 @@
         },
         "style": "form"
       },
+      "ml.get_trained_models#include_model_definition": {
+        "in": "query",
+        "name": "include_model_definition",
+        "description": "parameter is deprecated! Use [include=definition] instead",
+        "deprecated": true,
+        "schema": {
+          "type": "boolean"
+        },
+        "style": "form"
+      },
       "ml.get_trained_models#size": {
         "in": "query",
         "name": "size",
@@ -102085,7 +102000,7 @@
         "description": "Format for the response.",
         "deprecated": false,
         "schema": {
-          "type": "string"
+          "$ref": "#/components/schemas/sql.query:SqlFormat"
         },
         "style": "form"
       },
@@ -102602,7 +102517,6 @@
                 },
                 "knn": {
                   "description": "Defines the approximate kNN search to run.",
-                  "x-available-since": "8.4.0",
                   "oneOf": [
                     {
                       "$ref": "#/components/schemas/_types:KnnSearch"
@@ -102866,9 +102780,6 @@
               "type": "object",
               "properties": {
                 "query": {
-                  "externalDocs": {
-                    "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/eql-syntax.html"
-                  },
                   "description": "EQL query you wish to run.",
                   "type": "string"
                 },
@@ -103186,9 +103097,6 @@
               "type": "object",
               "properties": {
                 "analyzer": {
-                  "externalDocs": {
-                    "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/analysis-analyzers.html"
-                  },
                   "description": "The name of the analyzer that should be applied to the provided `text`.\nThis could be a built-in analyzer, or an analyzer that’s been configured in the index.",
                   "type": "string"
                 },
@@ -103200,9 +103108,6 @@
                   }
                 },
                 "char_filter": {
-                  "externalDocs": {
-                    "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/analysis-charfilters.html"
-                  },
                   "description": "Array of character filters used to preprocess characters before the tokenizer.",
                   "type": "array",
                   "items": {
@@ -103217,9 +103122,6 @@
                   "$ref": "#/components/schemas/_types:Field"
                 },
                 "filter": {
-                  "externalDocs": {
-                    "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/analysis-tokenfilters.html"
-                  },
                   "description": "Array of token filters used to apply after the tokenizer.",
                   "type": "array",
                   "items": {
@@ -103227,9 +103129,6 @@
                   }
                 },
                 "normalizer": {
-                  "externalDocs": {
-                    "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/analysis-normalizers.html"
-                  },
                   "description": "Normalizer to use to convert text into a single token.",
                   "type": "string"
                 },
@@ -103258,9 +103157,6 @@
                   }
                 },
                 "settings": {
-                  "externalDocs": {
-                    "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/index-modules.html#index-modules-settings"
-                  },
                   "description": "Configuration options for the target index.",
                   "type": "object",
                   "additionalProperties": {
@@ -103721,7 +103617,6 @@
                 },
                 "filter": {
                   "description": "Query to filter the documents that can match. The kNN search will return the top\n`k` documents that also match this filter. The value can be a single query or a\nlist of queries. If `filter` isn't provided, all documents are allowed to match.",
-                  "x-available-since": "8.2.0",
                   "oneOf": [
                     {
                       "$ref": "#/components/schemas/_types.query_dsl:QueryContainer"
@@ -103826,9 +103721,6 @@
                   "type": "string"
                 },
                 "model_memory_limit": {
-                  "externalDocs": {
-                    "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/ml-settings.html"
-                  },
                   "description": "The approximate maximum amount of memory resources that are permitted for\nanalytical processing. If your `elasticsearch.yml` file contains an\n`xpack.ml.max_model_memory_limit` setting, an error occurs when you try to\ncreate data frame analytics jobs that have `model_memory_limit` values\ngreater than that setting.",
                   "type": "string"
                 },
@@ -103840,9 +103732,6 @@
                   "$ref": "#/components/schemas/ml._types:DataframeAnalysisAnalyzedFields"
                 },
                 "allow_lazy_start": {
-                  "externalDocs": {
-                    "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/ml-settings.html"
-                  },
                   "description": "Specifies whether this job can start when there is insufficient machine\nlearning node capacity for it to be immediately assigned to a node.",
                   "type": "boolean"
                 }
@@ -104375,7 +104264,6 @@
                 },
                 "knn": {
                   "description": "Defines the approximate kNN search to run.",
-                  "x-available-since": "8.4.0",
                   "oneOf": [
                     {
                       "$ref": "#/components/schemas/_types:KnnSearch"
@@ -104643,9 +104531,6 @@
                   "$ref": "#/components/schemas/_types:Name"
                 },
                 "role_descriptors": {
-                  "externalDocs": {
-                    "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/security-api-put-role.html"
-                  },
                   "description": "An array of role descriptors for this API key. This parameter is optional. When it is not specified or is an empty array, then the API key will have a point in time snapshot of permissions of the authenticated user. If you supply role descriptors then the resultant permissions would be an intersection of API keys permissions and authenticated user’s permissions thereby limiting the access scope for API keys. The structure of role descriptor is the same as the request for create role API. For more details, see create or update roles API.",
                   "type": "object",
                   "additionalProperties": {
@@ -104768,13 +104653,17 @@
                     "$ref": "#/components/schemas/security._types:IndicesPrivileges"
                   }
                 },
+                "remote_indices": {
+                  "description": "A list of remote indices permissions entries.",
+                  "type": "array",
+                  "items": {
+                    "$ref": "#/components/schemas/security._types:RemoteIndicesPrivileges"
+                  }
+                },
                 "metadata": {
                   "$ref": "#/components/schemas/_types:Metadata"
                 },
                 "run_as": {
-                  "externalDocs": {
-                    "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/run-as-privilege.html"
-                  },
                   "description": "A list of users that the owners of this role can impersonate. *Note*: in Serverless, the run-as feature is disabled. For API compatibility, you can still specify an empty `run_as` field, but a non-empty list will be rejected.",
                   "type": "array",
                   "items": {
diff --git a/output/openapi/elasticsearch-serverless-openapi.json b/output/openapi/elasticsearch-serverless-openapi.json
index 83842d7d7e..0b1c3ab97e 100644
--- a/output/openapi/elasticsearch-serverless-openapi.json
+++ b/output/openapi/elasticsearch-serverless-openapi.json
@@ -12,13 +12,10 @@
     "/_async_search/{id}": {
       "get": {
         "tags": [
-          "async_search.get"
+          "search"
         ],
-        "summary": "Retrieves the results of a previously submitted async search request given its identifier",
-        "description": "If the Elasticsearch security features are enabled, access to the results of a specific async search is restricted to the user or API key that submitted it.",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/async-search.html"
-        },
+        "summary": "Get async search results",
+        "description": "Retrieve the results of a previously submitted asynchronous search request.\nIf the Elasticsearch security features are enabled, access to the results of a specific async search is restricted to the user or API key that submitted it.",
         "operationId": "async-search-get",
         "parameters": [
           {
@@ -75,17 +72,14 @@
             }
           }
         },
-        "x-available-since": "7.7.0"
+        "x-state": "Added in 7.7.0"
       },
       "delete": {
         "tags": [
-          "async_search.delete"
+          "search"
         ],
-        "summary": "Deletes an async search by identifier",
-        "description": "If the search is still running, the search request will be cancelled.\nOtherwise, the saved search results are deleted.\nIf the Elasticsearch security features are enabled, the deletion of a specific async search is restricted to: the authenticated user that submitted the original search request; users that have the `cancel_task` cluster privilege.",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/async-search.html"
-        },
+        "summary": "Delete an async search",
+        "description": "If the asynchronous search is still running, it is cancelled.\nOtherwise, the saved search results are deleted.\nIf the Elasticsearch security features are enabled, the deletion of a specific async search is restricted to: the authenticated user that submitted the original search request; users that have the `cancel_task` cluster privilege.",
         "operationId": "async-search-delete",
         "parameters": [
           {
@@ -112,19 +106,16 @@
             }
           }
         },
-        "x-available-since": "7.7.0"
+        "x-state": "Added in 7.7.0"
       }
     },
     "/_async_search/status/{id}": {
       "get": {
         "tags": [
-          "async_search.status"
+          "search"
         ],
-        "summary": "Get async search status\n",
-        "description": "Retrieves the status of a previously submitted async search request given its identifier, without retrieving search results.\nIf the Elasticsearch security features are enabled, use of this API is restricted to the `monitoring_user` role.",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/async-search.html"
-        },
+        "summary": "Get the async search status",
+        "description": "Get the status of a previously submitted async search request given its identifier, without retrieving search results.\nIf the Elasticsearch security features are enabled, use of this API is restricted to the `monitoring_user` role.",
         "operationId": "async-search-status",
         "parameters": [
           {
@@ -137,6 +128,16 @@
               "$ref": "#/components/schemas/_types:Id"
             },
             "style": "simple"
+          },
+          {
+            "in": "query",
+            "name": "keep_alive",
+            "description": "Specifies how long the async search needs to be available.\nOngoing async searches and any saved search results are deleted after this period.",
+            "deprecated": false,
+            "schema": {
+              "$ref": "#/components/schemas/_types:Duration"
+            },
+            "style": "form"
           }
         ],
         "responses": {
@@ -151,19 +152,16 @@
             }
           }
         },
-        "x-available-since": "7.11.0"
+        "x-state": "Added in 7.11.0"
       }
     },
     "/_async_search": {
       "post": {
         "tags": [
-          "async_search.submit"
+          "search"
         ],
-        "summary": "Runs a search request asynchronously",
-        "description": "When the primary sort of the results is an indexed field, shards get sorted based on minimum and maximum value that they hold for that field, hence partial results become available following the sort criteria that was requested.\nWarning: Async search does not support scroll nor search requests that only include the suggest section.\nBy default, Elasticsearch doesn’t allow you to store an async search response larger than 10Mb and an attempt to do this results in an error.\nThe maximum allowed size for a stored async search response can be set by changing the `search.max_async_search_response_size` cluster level setting.",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/async-search.html"
-        },
+        "summary": "Run an async search",
+        "description": "When the primary sort of the results is an indexed field, shards get sorted based on minimum and maximum value that they hold for that field. Partial results become available following the sort criteria that was requested.\n\nWarning: Asynchronous search does not support scroll or search requests that include only the suggest section.\n\nBy default, Elasticsearch does not allow you to store an async search response larger than 10Mb and an attempt to do this results in an error.\nThe maximum allowed size for a stored async search response can be set by changing the `search.max_async_search_response_size` cluster level setting.",
         "operationId": "async-search-submit",
         "parameters": [
           {
@@ -235,9 +233,6 @@
           {
             "$ref": "#/components/parameters/async_search.submit#routing"
           },
-          {
-            "$ref": "#/components/parameters/async_search.submit#scroll"
-          },
           {
             "$ref": "#/components/parameters/async_search.submit#search_type"
           },
@@ -313,19 +308,16 @@
             "$ref": "#/components/responses/async_search.submit#200"
           }
         },
-        "x-available-since": "7.7.0"
+        "x-state": "Added in 7.7.0"
       }
     },
     "/{index}/_async_search": {
       "post": {
         "tags": [
-          "async_search.submit"
+          "search"
         ],
-        "summary": "Runs a search request asynchronously",
-        "description": "When the primary sort of the results is an indexed field, shards get sorted based on minimum and maximum value that they hold for that field, hence partial results become available following the sort criteria that was requested.\nWarning: Async search does not support scroll nor search requests that only include the suggest section.\nBy default, Elasticsearch doesn’t allow you to store an async search response larger than 10Mb and an attempt to do this results in an error.\nThe maximum allowed size for a stored async search response can be set by changing the `search.max_async_search_response_size` cluster level setting.",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/async-search.html"
-        },
+        "summary": "Run an async search",
+        "description": "When the primary sort of the results is an indexed field, shards get sorted based on minimum and maximum value that they hold for that field. Partial results become available following the sort criteria that was requested.\n\nWarning: Asynchronous search does not support scroll or search requests that include only the suggest section.\n\nBy default, Elasticsearch does not allow you to store an async search response larger than 10Mb and an attempt to do this results in an error.\nThe maximum allowed size for a stored async search response can be set by changing the `search.max_async_search_response_size` cluster level setting.",
         "operationId": "async-search-submit-1",
         "parameters": [
           {
@@ -400,9 +392,6 @@
           {
             "$ref": "#/components/parameters/async_search.submit#routing"
           },
-          {
-            "$ref": "#/components/parameters/async_search.submit#scroll"
-          },
           {
             "$ref": "#/components/parameters/async_search.submit#search_type"
           },
@@ -478,21 +467,21 @@
             "$ref": "#/components/responses/async_search.submit#200"
           }
         },
-        "x-available-since": "7.7.0"
+        "x-state": "Added in 7.7.0"
       }
     },
     "/_bulk": {
       "put": {
         "tags": [
-          "bulk"
+          "document"
         ],
         "summary": "Bulk index or delete documents",
         "description": "Performs multiple indexing or delete operations in a single API call.\nThis reduces overhead and can greatly increase indexing speed.",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/docs-bulk.html"
-        },
         "operationId": "bulk-1",
         "parameters": [
+          {
+            "$ref": "#/components/parameters/bulk#list_executed_pipelines"
+          },
           {
             "$ref": "#/components/parameters/bulk#pipeline"
           },
@@ -519,6 +508,9 @@
           },
           {
             "$ref": "#/components/parameters/bulk#require_alias"
+          },
+          {
+            "$ref": "#/components/parameters/bulk#require_data_stream"
           }
         ],
         "requestBody": {
@@ -532,15 +524,15 @@
       },
       "post": {
         "tags": [
-          "bulk"
+          "document"
         ],
         "summary": "Bulk index or delete documents",
         "description": "Performs multiple indexing or delete operations in a single API call.\nThis reduces overhead and can greatly increase indexing speed.",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/docs-bulk.html"
-        },
         "operationId": "bulk",
         "parameters": [
+          {
+            "$ref": "#/components/parameters/bulk#list_executed_pipelines"
+          },
           {
             "$ref": "#/components/parameters/bulk#pipeline"
           },
@@ -567,6 +559,9 @@
           },
           {
             "$ref": "#/components/parameters/bulk#require_alias"
+          },
+          {
+            "$ref": "#/components/parameters/bulk#require_data_stream"
           }
         ],
         "requestBody": {
@@ -582,18 +577,18 @@
     "/{index}/_bulk": {
       "put": {
         "tags": [
-          "bulk"
+          "document"
         ],
         "summary": "Bulk index or delete documents",
         "description": "Performs multiple indexing or delete operations in a single API call.\nThis reduces overhead and can greatly increase indexing speed.",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/docs-bulk.html"
-        },
         "operationId": "bulk-3",
         "parameters": [
           {
             "$ref": "#/components/parameters/bulk#index"
           },
+          {
+            "$ref": "#/components/parameters/bulk#list_executed_pipelines"
+          },
           {
             "$ref": "#/components/parameters/bulk#pipeline"
           },
@@ -620,6 +615,9 @@
           },
           {
             "$ref": "#/components/parameters/bulk#require_alias"
+          },
+          {
+            "$ref": "#/components/parameters/bulk#require_data_stream"
           }
         ],
         "requestBody": {
@@ -633,18 +631,18 @@
       },
       "post": {
         "tags": [
-          "bulk"
+          "document"
         ],
         "summary": "Bulk index or delete documents",
         "description": "Performs multiple indexing or delete operations in a single API call.\nThis reduces overhead and can greatly increase indexing speed.",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/docs-bulk.html"
-        },
         "operationId": "bulk-2",
         "parameters": [
           {
             "$ref": "#/components/parameters/bulk#index"
           },
+          {
+            "$ref": "#/components/parameters/bulk#list_executed_pipelines"
+          },
           {
             "$ref": "#/components/parameters/bulk#pipeline"
           },
@@ -671,6 +669,9 @@
           },
           {
             "$ref": "#/components/parameters/bulk#require_alias"
+          },
+          {
+            "$ref": "#/components/parameters/bulk#require_data_stream"
           }
         ],
         "requestBody": {
@@ -686,13 +687,10 @@
     "/_cat/aliases": {
       "get": {
         "tags": [
-          "cat.aliases"
+          "cat"
         ],
         "summary": "Get aliases",
         "description": "Retrieves the cluster’s index aliases, including filter and routing information.\nThe API does not return data stream aliases.\n\nCAT APIs are only intended for human consumption using the command line or the Kibana console. They are not intended for use by applications. For application consumption, use the aliases API.",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/cat-alias.html"
-        },
         "operationId": "cat-aliases",
         "parameters": [
           {
@@ -709,13 +707,10 @@
     "/_cat/aliases/{name}": {
       "get": {
         "tags": [
-          "cat.aliases"
+          "cat"
         ],
         "summary": "Get aliases",
         "description": "Retrieves the cluster’s index aliases, including filter and routing information.\nThe API does not return data stream aliases.\n\nCAT APIs are only intended for human consumption using the command line or the Kibana console. They are not intended for use by applications. For application consumption, use the aliases API.",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/cat-alias.html"
-        },
         "operationId": "cat-aliases-1",
         "parameters": [
           {
@@ -735,32 +730,26 @@
     "/_cat/component_templates": {
       "get": {
         "tags": [
-          "cat.component_templates"
+          "cat"
         ],
         "summary": "Get component templates",
         "description": "Returns information about component templates in a cluster.\nComponent templates are building blocks for constructing index templates that specify index mappings, settings, and aliases.\n\nCAT APIs are only intended for human consumption using the command line or Kibana console.\nThey are not intended for use by applications. For application consumption, use the get component template API.",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/master/cat-component-templates.html"
-        },
         "operationId": "cat-component-templates",
         "responses": {
           "200": {
             "$ref": "#/components/responses/cat.component_templates#200"
           }
         },
-        "x-available-since": "5.1.0"
+        "x-state": "Added in 5.1.0"
       }
     },
     "/_cat/component_templates/{name}": {
       "get": {
         "tags": [
-          "cat.component_templates"
+          "cat"
         ],
         "summary": "Get component templates",
         "description": "Returns information about component templates in a cluster.\nComponent templates are building blocks for constructing index templates that specify index mappings, settings, and aliases.\n\nCAT APIs are only intended for human consumption using the command line or Kibana console.\nThey are not intended for use by applications. For application consumption, use the get component template API.",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/master/cat-component-templates.html"
-        },
         "operationId": "cat-component-templates-1",
         "parameters": [
           {
@@ -772,19 +761,16 @@
             "$ref": "#/components/responses/cat.component_templates#200"
           }
         },
-        "x-available-since": "5.1.0"
+        "x-state": "Added in 5.1.0"
       }
     },
     "/_cat/count": {
       "get": {
         "tags": [
-          "cat.count"
+          "cat"
         ],
         "summary": "Get a document count",
         "description": "Provides quick access to a document count for a data stream, an index, or an entire cluster.\nThe document count only includes live documents, not deleted documents which have not yet been removed by the merge process.\n\nCAT APIs are only intended for human consumption using the command line or Kibana console.\nThey are not intended for use by applications. For application consumption, use the count API.",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/cat-count.html"
-        },
         "operationId": "cat-count",
         "responses": {
           "200": {
@@ -796,13 +782,10 @@
     "/_cat/count/{index}": {
       "get": {
         "tags": [
-          "cat.count"
+          "cat"
         ],
         "summary": "Get a document count",
         "description": "Provides quick access to a document count for a data stream, an index, or an entire cluster.\nThe document count only includes live documents, not deleted documents which have not yet been removed by the merge process.\n\nCAT APIs are only intended for human consumption using the command line or Kibana console.\nThey are not intended for use by applications. For application consumption, use the count API.",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/cat-count.html"
-        },
         "operationId": "cat-count-1",
         "parameters": [
           {
@@ -819,13 +802,10 @@
     "/_cat": {
       "get": {
         "tags": [
-          "cat.help"
+          "cat"
         ],
         "summary": "Get CAT help",
         "description": "Returns help for the CAT APIs.",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/cat.html"
-        },
         "operationId": "cat-help",
         "responses": {
           "200": {
@@ -847,13 +827,10 @@
     "/_cat/indices": {
       "get": {
         "tags": [
-          "cat.indices"
+          "cat"
         ],
         "summary": "Get index information",
         "description": "Returns high-level information about indices in a cluster, including backing indices for data streams.\n\nUse this request to get the following information for each index in a cluster:\n- shard count\n- document count\n- deleted document count\n- primary store size\n- total store size of all shards, including shard replicas\n\nThese metrics are retrieved directly from Lucene, which Elasticsearch uses internally to power indexing and search. As a result, all document counts include hidden nested documents.\nTo get an accurate count of Elasticsearch documents, use the cat count or count APIs.\n\nCAT APIs are only intended for human consumption using the command line or Kibana console.\nThey are not intended for use by applications. For application consumption, use an index endpoint.",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/cat-indices.html"
-        },
         "operationId": "cat-indices",
         "parameters": [
           {
@@ -885,13 +862,10 @@
     "/_cat/indices/{index}": {
       "get": {
         "tags": [
-          "cat.indices"
+          "cat"
         ],
         "summary": "Get index information",
         "description": "Returns high-level information about indices in a cluster, including backing indices for data streams.\n\nUse this request to get the following information for each index in a cluster:\n- shard count\n- document count\n- deleted document count\n- primary store size\n- total store size of all shards, including shard replicas\n\nThese metrics are retrieved directly from Lucene, which Elasticsearch uses internally to power indexing and search. As a result, all document counts include hidden nested documents.\nTo get an accurate count of Elasticsearch documents, use the cat count or count APIs.\n\nCAT APIs are only intended for human consumption using the command line or Kibana console.\nThey are not intended for use by applications. For application consumption, use an index endpoint.",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/cat-indices.html"
-        },
         "operationId": "cat-indices-1",
         "parameters": [
           {
@@ -926,13 +900,10 @@
     "/_cat/ml/data_frame/analytics": {
       "get": {
         "tags": [
-          "cat.ml_data_frame_analytics"
+          "cat"
         ],
         "summary": "Get data frame analytics jobs",
         "description": "Returns configuration and usage information about data frame analytics jobs.\n\nCAT APIs are only intended for human consumption using the Kibana\nconsole or command line. They are not intended for use by applications. For\napplication consumption, use the get data frame analytics jobs statistics API.",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/cat-dfanalytics.html"
-        },
         "operationId": "cat-ml-data-frame-analytics",
         "parameters": [
           {
@@ -956,19 +927,16 @@
             "$ref": "#/components/responses/cat.ml_data_frame_analytics#200"
           }
         },
-        "x-available-since": "7.7.0"
+        "x-state": "Added in 7.7.0"
       }
     },
     "/_cat/ml/data_frame/analytics/{id}": {
       "get": {
         "tags": [
-          "cat.ml_data_frame_analytics"
+          "cat"
         ],
         "summary": "Get data frame analytics jobs",
         "description": "Returns configuration and usage information about data frame analytics jobs.\n\nCAT APIs are only intended for human consumption using the Kibana\nconsole or command line. They are not intended for use by applications. For\napplication consumption, use the get data frame analytics jobs statistics API.",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/cat-dfanalytics.html"
-        },
         "operationId": "cat-ml-data-frame-analytics-1",
         "parameters": [
           {
@@ -995,19 +963,16 @@
             "$ref": "#/components/responses/cat.ml_data_frame_analytics#200"
           }
         },
-        "x-available-since": "7.7.0"
+        "x-state": "Added in 7.7.0"
       }
     },
     "/_cat/ml/datafeeds": {
       "get": {
         "tags": [
-          "cat.ml_datafeeds"
+          "cat"
         ],
         "summary": "Get datafeeds",
         "description": "Returns configuration and usage information about datafeeds.\nThis API returns a maximum of 10,000 datafeeds.\nIf the Elasticsearch security features are enabled, you must have `monitor_ml`, `monitor`, `manage_ml`, or `manage`\ncluster privileges to use this API.\n\nCAT APIs are only intended for human consumption using the Kibana\nconsole or command line. They are not intended for use by applications. For\napplication consumption, use the get datafeed statistics API.",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/cat-datafeeds.html"
-        },
         "operationId": "cat-ml-datafeeds",
         "parameters": [
           {
@@ -1028,19 +993,16 @@
             "$ref": "#/components/responses/cat.ml_datafeeds#200"
           }
         },
-        "x-available-since": "7.7.0"
+        "x-state": "Added in 7.7.0"
       }
     },
     "/_cat/ml/datafeeds/{datafeed_id}": {
       "get": {
         "tags": [
-          "cat.ml_datafeeds"
+          "cat"
         ],
         "summary": "Get datafeeds",
         "description": "Returns configuration and usage information about datafeeds.\nThis API returns a maximum of 10,000 datafeeds.\nIf the Elasticsearch security features are enabled, you must have `monitor_ml`, `monitor`, `manage_ml`, or `manage`\ncluster privileges to use this API.\n\nCAT APIs are only intended for human consumption using the Kibana\nconsole or command line. They are not intended for use by applications. For\napplication consumption, use the get datafeed statistics API.",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/cat-datafeeds.html"
-        },
         "operationId": "cat-ml-datafeeds-1",
         "parameters": [
           {
@@ -1064,19 +1026,16 @@
             "$ref": "#/components/responses/cat.ml_datafeeds#200"
           }
         },
-        "x-available-since": "7.7.0"
+        "x-state": "Added in 7.7.0"
       }
     },
     "/_cat/ml/anomaly_detectors": {
       "get": {
         "tags": [
-          "cat.ml_jobs"
+          "cat"
         ],
         "summary": "Get anomaly detection jobs",
         "description": "Returns configuration and usage information for anomaly detection jobs.\nThis API returns a maximum of 10,000 jobs.\nIf the Elasticsearch security features are enabled, you must have `monitor_ml`,\n`monitor`, `manage_ml`, or `manage` cluster privileges to use this API.\n\nCAT APIs are only intended for human consumption using the Kibana\nconsole or command line. They are not intended for use by applications. For\napplication consumption, use the get anomaly detection job statistics API.",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/cat-anomaly-detectors.html"
-        },
         "operationId": "cat-ml-jobs",
         "parameters": [
           {
@@ -1100,19 +1059,16 @@
             "$ref": "#/components/responses/cat.ml_jobs#200"
           }
         },
-        "x-available-since": "7.7.0"
+        "x-state": "Added in 7.7.0"
       }
     },
     "/_cat/ml/anomaly_detectors/{job_id}": {
       "get": {
         "tags": [
-          "cat.ml_jobs"
+          "cat"
         ],
         "summary": "Get anomaly detection jobs",
         "description": "Returns configuration and usage information for anomaly detection jobs.\nThis API returns a maximum of 10,000 jobs.\nIf the Elasticsearch security features are enabled, you must have `monitor_ml`,\n`monitor`, `manage_ml`, or `manage` cluster privileges to use this API.\n\nCAT APIs are only intended for human consumption using the Kibana\nconsole or command line. They are not intended for use by applications. For\napplication consumption, use the get anomaly detection job statistics API.",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/cat-anomaly-detectors.html"
-        },
         "operationId": "cat-ml-jobs-1",
         "parameters": [
           {
@@ -1139,19 +1095,16 @@
             "$ref": "#/components/responses/cat.ml_jobs#200"
           }
         },
-        "x-available-since": "7.7.0"
+        "x-state": "Added in 7.7.0"
       }
     },
     "/_cat/ml/trained_models": {
       "get": {
         "tags": [
-          "cat.ml_trained_models"
+          "cat"
         ],
         "summary": "Get trained models",
         "description": "Returns configuration and usage information about inference trained models.\n\nCAT APIs are only intended for human consumption using the Kibana\nconsole or command line. They are not intended for use by applications. For\napplication consumption, use the get trained models statistics API.",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/cat-trained-model.html"
-        },
         "operationId": "cat-ml-trained-models",
         "parameters": [
           {
@@ -1178,19 +1131,16 @@
             "$ref": "#/components/responses/cat.ml_trained_models#200"
           }
         },
-        "x-available-since": "7.7.0"
+        "x-state": "Added in 7.7.0"
       }
     },
     "/_cat/ml/trained_models/{model_id}": {
       "get": {
         "tags": [
-          "cat.ml_trained_models"
+          "cat"
         ],
         "summary": "Get trained models",
         "description": "Returns configuration and usage information about inference trained models.\n\nCAT APIs are only intended for human consumption using the Kibana\nconsole or command line. They are not intended for use by applications. For\napplication consumption, use the get trained models statistics API.",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/cat-trained-model.html"
-        },
         "operationId": "cat-ml-trained-models-1",
         "parameters": [
           {
@@ -1220,19 +1170,16 @@
             "$ref": "#/components/responses/cat.ml_trained_models#200"
           }
         },
-        "x-available-since": "7.7.0"
+        "x-state": "Added in 7.7.0"
       }
     },
     "/_cat/transforms": {
       "get": {
         "tags": [
-          "cat.transforms"
+          "cat"
         ],
         "summary": "Get transforms",
         "description": "Returns configuration and usage information about transforms.\n\nCAT APIs are only intended for human consumption using the Kibana\nconsole or command line. They are not intended for use by applications. For\napplication consumption, use the get transform statistics API.",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/cat-transforms.html"
-        },
         "operationId": "cat-transforms",
         "parameters": [
           {
@@ -1259,19 +1206,16 @@
             "$ref": "#/components/responses/cat.transforms#200"
           }
         },
-        "x-available-since": "7.7.0"
+        "x-state": "Added in 7.7.0"
       }
     },
     "/_cat/transforms/{transform_id}": {
       "get": {
         "tags": [
-          "cat.transforms"
+          "cat"
         ],
         "summary": "Get transforms",
         "description": "Returns configuration and usage information about transforms.\n\nCAT APIs are only intended for human consumption using the Kibana\nconsole or command line. They are not intended for use by applications. For\napplication consumption, use the get transform statistics API.",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/cat-transforms.html"
-        },
         "operationId": "cat-transforms-1",
         "parameters": [
           {
@@ -1301,17 +1245,18 @@
             "$ref": "#/components/responses/cat.transforms#200"
           }
         },
-        "x-available-since": "7.7.0"
+        "x-state": "Added in 7.7.0"
       }
     },
     "/_search/scroll": {
       "get": {
         "tags": [
-          "scroll"
+          "search"
         ],
-        "summary": "Allows to retrieve a large numbers of results from a single search request",
+        "summary": "Run a scrolling search",
+        "description": "IMPORTANT: The scroll API is no longer recommend for deep pagination. If you need to preserve the index state while paging through more than 10,000 hits, use the `search_after` parameter with a point in time (PIT).\n\nThe scroll API gets large sets of results from a single scrolling search request.\nTo get the necessary scroll ID, submit a search API request that includes an argument for the `scroll` query parameter.\nThe `scroll` parameter indicates how long Elasticsearch should retain the search context for the request.\nThe search response returns a scroll ID in the `_scroll_id` response body parameter.\nYou can then use the scroll ID with the scroll API to retrieve the next batch of results for the request.\nIf the Elasticsearch security features are enabled, the access to the results of a specific scroll ID is restricted to the user or API key that submitted the search.\n\nYou can also use the scroll API to specify a new scroll parameter that extends or shortens the retention period for the search context.\n\nIMPORTANT: Results from a scrolling search reflect the state of the index at the time of the initial search request. Subsequent indexing or document changes only affect later search and scroll requests.",
         "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/master/search-request-body.html#request-body-search-scroll"
+          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/paginate-search-results.html#scroll-search-results"
         },
         "operationId": "scroll",
         "parameters": [
@@ -1336,11 +1281,12 @@
       },
       "post": {
         "tags": [
-          "scroll"
+          "search"
         ],
-        "summary": "Allows to retrieve a large numbers of results from a single search request",
+        "summary": "Run a scrolling search",
+        "description": "IMPORTANT: The scroll API is no longer recommend for deep pagination. If you need to preserve the index state while paging through more than 10,000 hits, use the `search_after` parameter with a point in time (PIT).\n\nThe scroll API gets large sets of results from a single scrolling search request.\nTo get the necessary scroll ID, submit a search API request that includes an argument for the `scroll` query parameter.\nThe `scroll` parameter indicates how long Elasticsearch should retain the search context for the request.\nThe search response returns a scroll ID in the `_scroll_id` response body parameter.\nYou can then use the scroll ID with the scroll API to retrieve the next batch of results for the request.\nIf the Elasticsearch security features are enabled, the access to the results of a specific scroll ID is restricted to the user or API key that submitted the search.\n\nYou can also use the scroll API to specify a new scroll parameter that extends or shortens the retention period for the search context.\n\nIMPORTANT: Results from a scrolling search reflect the state of the index at the time of the initial search request. Subsequent indexing or document changes only affect later search and scroll requests.",
         "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/master/search-request-body.html#request-body-search-scroll"
+          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/paginate-search-results.html#scroll-search-results"
         },
         "operationId": "scroll-1",
         "parameters": [
@@ -1365,12 +1311,10 @@
       },
       "delete": {
         "tags": [
-          "clear_scroll"
+          "search"
         ],
-        "summary": "Clears the search context and results for a scrolling search",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/clear-scroll-api.html"
-        },
+        "summary": "Clear a scrolling search",
+        "description": "Clear the search context and results for a scrolling search.",
         "operationId": "clear-scroll",
         "requestBody": {
           "$ref": "#/components/requestBodies/clear_scroll"
@@ -1385,11 +1329,12 @@
     "/_search/scroll/{scroll_id}": {
       "get": {
         "tags": [
-          "scroll"
+          "search"
         ],
-        "summary": "Allows to retrieve a large numbers of results from a single search request",
+        "summary": "Run a scrolling search",
+        "description": "IMPORTANT: The scroll API is no longer recommend for deep pagination. If you need to preserve the index state while paging through more than 10,000 hits, use the `search_after` parameter with a point in time (PIT).\n\nThe scroll API gets large sets of results from a single scrolling search request.\nTo get the necessary scroll ID, submit a search API request that includes an argument for the `scroll` query parameter.\nThe `scroll` parameter indicates how long Elasticsearch should retain the search context for the request.\nThe search response returns a scroll ID in the `_scroll_id` response body parameter.\nYou can then use the scroll ID with the scroll API to retrieve the next batch of results for the request.\nIf the Elasticsearch security features are enabled, the access to the results of a specific scroll ID is restricted to the user or API key that submitted the search.\n\nYou can also use the scroll API to specify a new scroll parameter that extends or shortens the retention period for the search context.\n\nIMPORTANT: Results from a scrolling search reflect the state of the index at the time of the initial search request. Subsequent indexing or document changes only affect later search and scroll requests.",
         "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/master/search-request-body.html#request-body-search-scroll"
+          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/paginate-search-results.html#scroll-search-results"
         },
         "operationId": "scroll-2",
         "parameters": [
@@ -1417,11 +1362,12 @@
       },
       "post": {
         "tags": [
-          "scroll"
+          "search"
         ],
-        "summary": "Allows to retrieve a large numbers of results from a single search request",
+        "summary": "Run a scrolling search",
+        "description": "IMPORTANT: The scroll API is no longer recommend for deep pagination. If you need to preserve the index state while paging through more than 10,000 hits, use the `search_after` parameter with a point in time (PIT).\n\nThe scroll API gets large sets of results from a single scrolling search request.\nTo get the necessary scroll ID, submit a search API request that includes an argument for the `scroll` query parameter.\nThe `scroll` parameter indicates how long Elasticsearch should retain the search context for the request.\nThe search response returns a scroll ID in the `_scroll_id` response body parameter.\nYou can then use the scroll ID with the scroll API to retrieve the next batch of results for the request.\nIf the Elasticsearch security features are enabled, the access to the results of a specific scroll ID is restricted to the user or API key that submitted the search.\n\nYou can also use the scroll API to specify a new scroll parameter that extends or shortens the retention period for the search context.\n\nIMPORTANT: Results from a scrolling search reflect the state of the index at the time of the initial search request. Subsequent indexing or document changes only affect later search and scroll requests.",
         "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/master/search-request-body.html#request-body-search-scroll"
+          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/paginate-search-results.html#scroll-search-results"
         },
         "operationId": "scroll-3",
         "parameters": [
@@ -1449,12 +1395,10 @@
       },
       "delete": {
         "tags": [
-          "clear_scroll"
+          "search"
         ],
-        "summary": "Clears the search context and results for a scrolling search",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/clear-scroll-api.html"
-        },
+        "summary": "Clear a scrolling search",
+        "description": "Clear the search context and results for a scrolling search.",
         "operationId": "clear-scroll-1",
         "parameters": [
           {
@@ -1474,12 +1418,10 @@
     "/_pit": {
       "delete": {
         "tags": [
-          "close_point_in_time"
+          "search"
         ],
-        "summary": "Closes a point-in-time",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/point-in-time-api.html"
-        },
+        "summary": "Close a point in time",
+        "description": "A point in time must be opened explicitly before being used in search requests.\nThe `keep_alive` parameter tells Elasticsearch how long it should persist.\nA point in time is automatically closed when the `keep_alive` period has elapsed.\nHowever, keeping points in time has a cost; close them as soon as they are no longer required for search requests.",
         "operationId": "close-point-in-time",
         "requestBody": {
           "content": {
@@ -1522,19 +1464,16 @@
             }
           }
         },
-        "x-available-since": "7.10.0"
+        "x-state": "Added in 7.10.0"
       }
     },
     "/_component_template/{name}": {
       "get": {
         "tags": [
-          "cluster.get_component_template"
+          "indices"
         ],
         "summary": "Get component templates",
         "description": "Retrieves information about component templates.",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/indices-component-template.html"
-        },
         "operationId": "cluster-get-component-template-1",
         "parameters": [
           {
@@ -1558,17 +1497,14 @@
             "$ref": "#/components/responses/cluster.get_component_template#200"
           }
         },
-        "x-available-since": "7.8.0"
+        "x-state": "Added in 7.8.0"
       },
       "put": {
         "tags": [
-          "cluster.put_component_template"
+          "indices"
         ],
         "summary": "Create or update a component template",
         "description": "Creates or updates a component template.\nComponent templates are building blocks for constructing index templates that specify index mappings, settings, and aliases.\n\nAn index template can be composed of multiple component templates.\nTo use a component template, specify it in an index template’s `composed_of` list.\nComponent templates are only applied to new data streams and indices as part of a matching index template.\n\nSettings and mappings specified directly in the index template or the create index request override any settings or mappings specified in a component template.\n\nComponent templates are only used during index creation.\nFor data streams, this includes data stream creation and the creation of a stream’s backing indices.\nChanges to component templates do not affect existing indices, including a stream’s backing indices.\n\nYou can use C-style `/* *\\/` block comments in component templates.\nYou can include comments anywhere in the request body except before the opening curly bracket.",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/indices-component-template.html"
-        },
         "operationId": "cluster-put-component-template",
         "parameters": [
           {
@@ -1589,17 +1525,14 @@
             "$ref": "#/components/responses/cluster.put_component_template#200"
           }
         },
-        "x-available-since": "7.8.0"
+        "x-state": "Added in 7.8.0"
       },
       "post": {
         "tags": [
-          "cluster.put_component_template"
+          "indices"
         ],
         "summary": "Create or update a component template",
         "description": "Creates or updates a component template.\nComponent templates are building blocks for constructing index templates that specify index mappings, settings, and aliases.\n\nAn index template can be composed of multiple component templates.\nTo use a component template, specify it in an index template’s `composed_of` list.\nComponent templates are only applied to new data streams and indices as part of a matching index template.\n\nSettings and mappings specified directly in the index template or the create index request override any settings or mappings specified in a component template.\n\nComponent templates are only used during index creation.\nFor data streams, this includes data stream creation and the creation of a stream’s backing indices.\nChanges to component templates do not affect existing indices, including a stream’s backing indices.\n\nYou can use C-style `/* *\\/` block comments in component templates.\nYou can include comments anywhere in the request body except before the opening curly bracket.",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/indices-component-template.html"
-        },
         "operationId": "cluster-put-component-template-1",
         "parameters": [
           {
@@ -1620,17 +1553,14 @@
             "$ref": "#/components/responses/cluster.put_component_template#200"
           }
         },
-        "x-available-since": "7.8.0"
+        "x-state": "Added in 7.8.0"
       },
       "delete": {
         "tags": [
-          "cluster.delete_component_template"
+          "indices"
         ],
         "summary": "Delete component templates",
         "description": "Deletes component templates.\nComponent templates are building blocks for constructing index templates that specify index mappings, settings, and aliases.",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/indices-component-template.html"
-        },
         "operationId": "cluster-delete-component-template",
         "parameters": [
           {
@@ -1677,17 +1607,14 @@
             }
           }
         },
-        "x-available-since": "7.8.0"
+        "x-state": "Added in 7.8.0"
       },
       "head": {
         "tags": [
-          "cluster.exists_component_template"
+          "indices"
         ],
         "summary": "Check component templates",
         "description": "Returns information about whether a particular component template exists.",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/indices-component-template.html"
-        },
         "operationId": "cluster-exists-component-template",
         "parameters": [
           {
@@ -1730,19 +1657,16 @@
             }
           }
         },
-        "x-available-since": "7.8.0"
+        "x-state": "Added in 7.8.0"
       }
     },
     "/_component_template": {
       "get": {
         "tags": [
-          "cluster.get_component_template"
+          "indices"
         ],
         "summary": "Get component templates",
         "description": "Retrieves information about component templates.",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/indices-component-template.html"
-        },
         "operationId": "cluster-get-component-template",
         "parameters": [
           {
@@ -1763,19 +1687,16 @@
             "$ref": "#/components/responses/cluster.get_component_template#200"
           }
         },
-        "x-available-since": "7.8.0"
+        "x-state": "Added in 7.8.0"
       }
     },
     "/_info/{target}": {
       "get": {
         "tags": [
-          "cluster.info"
+          "cluster"
         ],
         "summary": "Get cluster info",
         "description": "Returns basic information about the cluster.",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/cluster-info.html"
-        },
         "operationId": "cluster-info",
         "parameters": [
           {
@@ -1825,18 +1746,16 @@
             }
           }
         },
-        "x-available-since": "8.9.0"
+        "x-state": "Added in 8.9.0"
       }
     },
     "/_connector/{connector_id}/_check_in": {
       "put": {
         "tags": [
-          "connector.check_in"
+          "connector"
         ],
-        "summary": "Updates the last_seen field in the connector, and sets it to current timestamp",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/check-in-connector-api.html"
-        },
+        "summary": "Check in a connector",
+        "description": "Update the `last_seen` field in the connector and set it to the current timestamp.",
         "operationId": "connector-check-in",
         "parameters": [
           {
@@ -1871,19 +1790,16 @@
             }
           }
         },
-        "x-technical-preview": true,
-        "x-available-since": "8.12.0"
+        "x-state": "Technical preview"
       }
     },
     "/_connector/{connector_id}": {
       "get": {
         "tags": [
-          "connector.get"
+          "connector"
         ],
-        "summary": "Retrieves a connector",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/get-connector-api.html"
-        },
+        "summary": "Get a connector",
+        "description": "Get the details about a connector.",
         "operationId": "connector-get",
         "parameters": [
           {
@@ -1910,17 +1826,13 @@
             }
           }
         },
-        "x-beta": true,
-        "x-available-since": "8.12.0"
+        "x-beta": true
       },
       "put": {
         "tags": [
-          "connector.put"
+          "connector"
         ],
-        "summary": "Creates or updates a connector",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/create-connector-api.html"
-        },
+        "summary": "Create or update a connector",
         "operationId": "connector-put",
         "parameters": [
           {
@@ -1935,17 +1847,14 @@
             "$ref": "#/components/responses/connector.put#200"
           }
         },
-        "x-beta": true,
-        "x-available-since": "8.12.0"
+        "x-beta": true
       },
       "delete": {
         "tags": [
-          "connector.delete"
+          "connector"
         ],
-        "summary": "Deletes a connector",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/delete-connector-api.html"
-        },
+        "summary": "Delete a connector",
+        "description": "Removes a connector and associated sync jobs.\nThis is a destructive action that is not recoverable.\nNOTE: This action doesn’t delete any API keys, ingest pipelines, or data indices associated with the connector.\nThese need to be removed manually.",
         "operationId": "connector-delete",
         "parameters": [
           {
@@ -1982,19 +1891,16 @@
             }
           }
         },
-        "x-beta": true,
-        "x-available-since": "8.12.0"
+        "x-beta": true
       }
     },
     "/_connector": {
       "get": {
         "tags": [
-          "connector.list"
+          "connector"
         ],
-        "summary": "Returns existing connectors",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/list-connector-api.html"
-        },
+        "summary": "Get all connectors",
+        "description": "Get information about all connectors.",
         "operationId": "connector-list",
         "parameters": [
           {
@@ -2085,17 +1991,13 @@
             }
           }
         },
-        "x-beta": true,
-        "x-available-since": "8.12.0"
+        "x-beta": true
       },
       "put": {
         "tags": [
-          "connector.put"
+          "connector"
         ],
-        "summary": "Creates or updates a connector",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/create-connector-api.html"
-        },
+        "summary": "Create or update a connector",
         "operationId": "connector-put-1",
         "requestBody": {
           "$ref": "#/components/requestBodies/connector.put"
@@ -2105,17 +2007,14 @@
             "$ref": "#/components/responses/connector.put#200"
           }
         },
-        "x-beta": true,
-        "x-available-since": "8.12.0"
+        "x-beta": true
       },
       "post": {
         "tags": [
-          "connector.post"
+          "connector"
         ],
-        "summary": "Creates a connector",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/create-connector-api.html"
-        },
+        "summary": "Create a connector",
+        "description": "Connectors are Elasticsearch integrations that bring content from third-party data sources, which can be deployed on Elastic Cloud or hosted on your own infrastructure.\nElastic managed connectors (Native connectors) are a managed service on Elastic Cloud.\nSelf-managed connectors (Connector clients) are self-managed on your infrastructure.",
         "operationId": "connector-post",
         "requestBody": {
           "content": {
@@ -2170,19 +2069,16 @@
             }
           }
         },
-        "x-beta": true,
-        "x-available-since": "8.12.0"
+        "x-beta": true
       }
     },
     "/_connector/_sync_job/{connector_sync_job_id}/_cancel": {
       "put": {
         "tags": [
-          "connector.sync_job_cancel"
+          "connector"
         ],
-        "summary": "Cancels a connector sync job",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/cancel-connector-sync-job-api.html"
-        },
+        "summary": "Cancel a connector sync job",
+        "description": "Cancel a connector sync job, which sets the status to cancelling and updates `cancellation_requested_at` to the current time.\nThe connector service is then responsible for setting the status of connector sync jobs to cancelled.",
         "operationId": "connector-sync-job-cancel",
         "parameters": [
           {
@@ -2217,19 +2113,15 @@
             }
           }
         },
-        "x-beta": true,
-        "x-available-since": "8.12.0"
+        "x-beta": true
       }
     },
     "/_connector/_sync_job/{connector_sync_job_id}": {
       "get": {
         "tags": [
-          "connector.sync_job_get"
+          "connector"
         ],
-        "summary": "Retrieves a connector sync job",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/get-connector-sync-job-api.html"
-        },
+        "summary": "Get a connector sync job",
         "operationId": "connector-sync-job-get",
         "parameters": [
           {
@@ -2256,17 +2148,14 @@
             }
           }
         },
-        "x-beta": true,
-        "x-available-since": "8.12.0"
+        "x-beta": true
       },
       "delete": {
         "tags": [
-          "connector.sync_job_delete"
+          "connector"
         ],
-        "summary": "Deletes a connector sync job",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/delete-connector-sync-job-api.html"
-        },
+        "summary": "Delete a connector sync job",
+        "description": "Remove a connector sync job and its associated data.\nThis is a destructive action that is not recoverable.",
         "operationId": "connector-sync-job-delete",
         "parameters": [
           {
@@ -2293,19 +2182,16 @@
             }
           }
         },
-        "x-beta": true,
-        "x-available-since": "8.12.0"
+        "x-beta": true
       }
     },
     "/_connector/_sync_job": {
       "get": {
         "tags": [
-          "connector.sync_job_list"
+          "connector"
         ],
-        "summary": "Lists connector sync jobs",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/list-connector-sync-jobs-api.html"
-        },
+        "summary": "Get all connector sync jobs",
+        "description": "Get information about all stored connector sync jobs listed by their creation date in ascending order.",
         "operationId": "connector-sync-job-list",
         "parameters": [
           {
@@ -2396,17 +2282,14 @@
             }
           }
         },
-        "x-beta": true,
-        "x-available-since": "8.12.0"
+        "x-beta": true
       },
       "post": {
         "tags": [
-          "connector.sync_job_post"
+          "connector"
         ],
-        "summary": "Creates a connector sync job",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/create-connector-sync-job-api.html"
-        },
+        "summary": "Create a connector sync job",
+        "description": "Create a connector sync job document in the internal index and initialize its counters and timestamps with default values.",
         "operationId": "connector-sync-job-post",
         "requestBody": {
           "content": {
@@ -2452,19 +2335,16 @@
             }
           }
         },
-        "x-beta": true,
-        "x-available-since": "8.12.0"
+        "x-beta": true
       }
     },
     "/_connector/{connector_id}/_filtering/_activate": {
       "put": {
         "tags": [
-          "connector.update_active_filtering"
+          "connector"
         ],
-        "summary": "Activates the valid draft filtering for a connector",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/update-connector-filtering-api.html"
-        },
+        "summary": "Activate the connector draft filter",
+        "description": "Activates the valid draft filtering for a connector.",
         "operationId": "connector-update-active-filtering",
         "parameters": [
           {
@@ -2499,19 +2379,16 @@
             }
           }
         },
-        "x-technical-preview": true,
-        "x-available-since": "8.12.0"
+        "x-state": "Technical preview"
       }
     },
     "/_connector/{connector_id}/_api_key_id": {
       "put": {
         "tags": [
-          "connector.update_api_key_id"
+          "connector"
         ],
-        "summary": "Updates the API key id in the connector document",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/update-connector-api-key-id-api.html"
-        },
+        "summary": "Update the connector API key ID",
+        "description": "Update the `api_key_id` and `api_key_secret_id` fields of a connector.\nYou can specify the ID of the API key used for authorization and the ID of the connector secret where the API key is stored.\nThe connector secret ID is required only for Elastic managed (native) connectors.\nSelf-managed connectors (connector clients) do not use this field.",
         "operationId": "connector-update-api-key-id",
         "parameters": [
           {
@@ -2564,19 +2441,16 @@
             }
           }
         },
-        "x-beta": true,
-        "x-available-since": "8.12.0"
+        "x-beta": true
       }
     },
     "/_connector/{connector_id}/_configuration": {
       "put": {
         "tags": [
-          "connector.update_configuration"
+          "connector"
         ],
-        "summary": "Updates the configuration field in the connector document",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/update-connector-configuration-api.html"
-        },
+        "summary": "Update the connector configuration",
+        "description": "Update the configuration field in the connector document.",
         "operationId": "connector-update-configuration",
         "parameters": [
           {
@@ -2632,19 +2506,16 @@
             }
           }
         },
-        "x-beta": true,
-        "x-available-since": "8.12.0"
+        "x-beta": true
       }
     },
     "/_connector/{connector_id}/_error": {
       "put": {
         "tags": [
-          "connector.update_error"
+          "connector"
         ],
-        "summary": "Updates the filtering field in the connector document",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/update-connector-error-api.html"
-        },
+        "summary": "Update the connector error field",
+        "description": "Set the error field for the connector.\nIf the error provided in the request body is non-null, the connector’s status is updated to error.\nOtherwise, if the error is reset to null, the connector status is updated to connected.",
         "operationId": "connector-update-error",
         "parameters": [
           {
@@ -2704,19 +2575,16 @@
             }
           }
         },
-        "x-technical-preview": true,
-        "x-available-since": "8.12.0"
+        "x-state": "Technical preview"
       }
     },
     "/_connector/{connector_id}/_filtering": {
       "put": {
         "tags": [
-          "connector.update_filtering"
+          "connector"
         ],
-        "summary": "Updates the filtering field in the connector document",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/update-connector-filtering-api.html"
-        },
+        "summary": "Update the connector filtering",
+        "description": "Update the draft filtering configuration of a connector and marks the draft validation state as edited.\nThe filtering draft is activated once validated by the running Elastic connector service.\nThe filtering property is used to configure sync rules (both basic and advanced) for a connector.",
         "operationId": "connector-update-filtering",
         "parameters": [
           {
@@ -2778,19 +2646,16 @@
             }
           }
         },
-        "x-beta": true,
-        "x-available-since": "8.12.0"
+        "x-beta": true
       }
     },
     "/_connector/{connector_id}/_filtering/_validation": {
       "put": {
         "tags": [
-          "connector.update_filtering_validation"
+          "connector"
         ],
-        "summary": "Updates the draft filtering validation info for a connector",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/update-connector-filtering-validation-api.html"
-        },
+        "summary": "Update the connector draft filtering validation",
+        "description": "Update the draft filtering validation info for a connector.",
         "operationId": "connector-update-filtering-validation",
         "parameters": [
           {
@@ -2843,19 +2708,16 @@
             }
           }
         },
-        "x-technical-preview": true,
-        "x-available-since": "8.12.0"
+        "x-state": "Technical preview"
       }
     },
     "/_connector/{connector_id}/_index_name": {
       "put": {
         "tags": [
-          "connector.update_index_name"
+          "connector"
         ],
-        "summary": "Updates the index_name in the connector document",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/update-connector-index-name-api.html"
-        },
+        "summary": "Update the connector index name",
+        "description": "Update the `index_name` field of a connector, specifying the index where the data ingested by the connector is stored.",
         "operationId": "connector-update-index-name",
         "parameters": [
           {
@@ -2915,19 +2777,15 @@
             }
           }
         },
-        "x-beta": true,
-        "x-available-since": "8.12.0"
+        "x-beta": true
       }
     },
     "/_connector/{connector_id}/_name": {
       "put": {
         "tags": [
-          "connector.update_name"
+          "connector"
         ],
-        "summary": "Updates the name and description fields in the connector document",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/update-connector-name-description-api.html"
-        },
+        "summary": "Update the connector name and description",
         "operationId": "connector-update-name",
         "parameters": [
           {
@@ -2980,19 +2838,15 @@
             }
           }
         },
-        "x-beta": true,
-        "x-available-since": "8.12.0"
+        "x-beta": true
       }
     },
     "/_connector/{connector_id}/_native": {
       "put": {
         "tags": [
-          "connector.update_native"
+          "connector"
         ],
-        "summary": "Updates the is_native flag in the connector document",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/update-connector-native-api.html"
-        },
+        "summary": "Update the connector is_native flag",
         "operationId": "connector-update-native",
         "parameters": [
           {
@@ -3045,19 +2899,16 @@
             }
           }
         },
-        "x-beta": true,
-        "x-available-since": "8.12.0"
+        "x-beta": true
       }
     },
     "/_connector/{connector_id}/_pipeline": {
       "put": {
         "tags": [
-          "connector.update_pipeline"
+          "connector"
         ],
-        "summary": "Updates the pipeline field in the connector document",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/update-connector-pipeline-api.html"
-        },
+        "summary": "Update the connector pipeline",
+        "description": "When you create a new connector, the configuration of an ingest pipeline is populated with default settings.",
         "operationId": "connector-update-pipeline",
         "parameters": [
           {
@@ -3110,19 +2961,15 @@
             }
           }
         },
-        "x-beta": true,
-        "x-available-since": "8.12.0"
+        "x-beta": true
       }
     },
     "/_connector/{connector_id}/_scheduling": {
       "put": {
         "tags": [
-          "connector.update_scheduling"
+          "connector"
         ],
-        "summary": "Updates the scheduling field in the connector document",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/update-connector-scheduling-api.html"
-        },
+        "summary": "Update the connector scheduling",
         "operationId": "connector-update-scheduling",
         "parameters": [
           {
@@ -3175,19 +3022,15 @@
             }
           }
         },
-        "x-beta": true,
-        "x-available-since": "8.12.0"
+        "x-beta": true
       }
     },
     "/_connector/{connector_id}/_service_type": {
       "put": {
         "tags": [
-          "connector.update_service_type"
+          "connector"
         ],
-        "summary": "Updates the service type of the connector",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/update-connector-service-type-api.html"
-        },
+        "summary": "Update the connector service type",
         "operationId": "connector-update-service-type",
         "parameters": [
           {
@@ -3240,19 +3083,15 @@
             }
           }
         },
-        "x-beta": true,
-        "x-available-since": "8.12.0"
+        "x-beta": true
       }
     },
     "/_connector/{connector_id}/_status": {
       "put": {
         "tags": [
-          "connector.update_status"
+          "connector"
         ],
-        "summary": "Updates the status of the connector",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/update-connector-status-api.html"
-        },
+        "summary": "Update the connector status",
         "operationId": "connector-update-status",
         "parameters": [
           {
@@ -3305,19 +3144,16 @@
             }
           }
         },
-        "x-technical-preview": true,
-        "x-available-since": "8.12.0"
+        "x-state": "Technical preview"
       }
     },
     "/_count": {
       "get": {
         "tags": [
-          "count"
+          "search"
         ],
-        "summary": "Returns number of documents matching a query",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/master/search-count.html"
-        },
+        "summary": "Count search results",
+        "description": "Get the number of documents matching a query.",
         "operationId": "count-1",
         "parameters": [
           {
@@ -3374,12 +3210,10 @@
       },
       "post": {
         "tags": [
-          "count"
+          "search"
         ],
-        "summary": "Returns number of documents matching a query",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/master/search-count.html"
-        },
+        "summary": "Count search results",
+        "description": "Get the number of documents matching a query.",
         "operationId": "count",
         "parameters": [
           {
@@ -3438,12 +3272,10 @@
     "/{index}/_count": {
       "get": {
         "tags": [
-          "count"
+          "search"
         ],
-        "summary": "Returns number of documents matching a query",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/master/search-count.html"
-        },
+        "summary": "Count search results",
+        "description": "Get the number of documents matching a query.",
         "operationId": "count-3",
         "parameters": [
           {
@@ -3503,12 +3335,10 @@
       },
       "post": {
         "tags": [
-          "count"
+          "search"
         ],
-        "summary": "Returns number of documents matching a query",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/master/search-count.html"
-        },
+        "summary": "Count search results",
+        "description": "Get the number of documents matching a query.",
         "operationId": "count-2",
         "parameters": [
           {
@@ -3570,13 +3400,10 @@
     "/{index}/_create/{id}": {
       "put": {
         "tags": [
-          "create"
+          "document"
         ],
         "summary": "Index a document",
         "description": "Adds a JSON document to the specified data stream or index and makes it searchable.\nIf the target is an index and the document already exists, the request updates the document and increments its version.",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/master/docs-index_.html"
-        },
         "operationId": "create",
         "parameters": [
           {
@@ -3615,17 +3442,14 @@
             "$ref": "#/components/responses/create#200"
           }
         },
-        "x-available-since": "5.0.0"
+        "x-state": "Added in 5.0.0"
       },
       "post": {
         "tags": [
-          "create"
+          "document"
         ],
         "summary": "Index a document",
         "description": "Adds a JSON document to the specified data stream or index and makes it searchable.\nIf the target is an index and the document already exists, the request updates the document and increments its version.",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/master/docs-index_.html"
-        },
         "operationId": "create-1",
         "parameters": [
           {
@@ -3664,19 +3488,16 @@
             "$ref": "#/components/responses/create#200"
           }
         },
-        "x-available-since": "5.0.0"
+        "x-state": "Added in 5.0.0"
       }
     },
     "/{index}/_doc/{id}": {
       "get": {
         "tags": [
-          "get"
+          "document"
         ],
         "summary": "Get a document by its ID",
         "description": "Retrieves the document with the specified ID from an index.",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/master/docs-get.html"
-        },
         "operationId": "get",
         "parameters": [
           {
@@ -3817,13 +3638,10 @@
       },
       "put": {
         "tags": [
-          "index"
+          "document"
         ],
         "summary": "Index a document",
         "description": "Adds a JSON document to the specified data stream or index and makes it searchable.\nIf the target is an index and the document already exists, the request updates the document and increments its version.",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/master/docs-index_.html"
-        },
         "operationId": "index",
         "parameters": [
           {
@@ -3877,13 +3695,10 @@
       },
       "post": {
         "tags": [
-          "index"
+          "document"
         ],
         "summary": "Index a document",
         "description": "Adds a JSON document to the specified data stream or index and makes it searchable.\nIf the target is an index and the document already exists, the request updates the document and increments its version.",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/master/docs-index_.html"
-        },
         "operationId": "index-1",
         "parameters": [
           {
@@ -3937,13 +3752,10 @@
       },
       "delete": {
         "tags": [
-          "delete"
+          "document"
         ],
         "summary": "Delete a document",
         "description": "Removes a JSON document from the specified index.",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/master/docs-delete.html"
-        },
         "operationId": "delete",
         "parameters": [
           {
@@ -4064,13 +3876,10 @@
       },
       "head": {
         "tags": [
-          "exists"
+          "document"
         ],
         "summary": "Check a document",
         "description": "Checks if a specified document exists.",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/master/docs-get.html"
-        },
         "operationId": "exists",
         "parameters": [
           {
@@ -4209,13 +4018,10 @@
     "/{index}/_delete_by_query": {
       "post": {
         "tags": [
-          "delete_by_query"
+          "document"
         ],
         "summary": "Delete documents",
         "description": "Deletes documents that match the specified query.",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/master/docs-delete-by-query.html"
-        },
         "operationId": "delete-by-query",
         "parameters": [
           {
@@ -4613,19 +4419,16 @@
             }
           }
         },
-        "x-available-since": "5.0.0"
+        "x-state": "Added in 5.0.0"
       }
     },
     "/_scripts/{id}": {
       "get": {
         "tags": [
-          "get_script"
+          "script"
         ],
         "summary": "Get a script or search template",
         "description": "Retrieves a stored script or search template.",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/master/modules-scripting.html"
-        },
         "operationId": "get-script",
         "parameters": [
           {
@@ -4680,13 +4483,10 @@
       },
       "put": {
         "tags": [
-          "put_script"
+          "script"
         ],
         "summary": "Create or update a script or search template",
         "description": "Creates or updates a stored script or search template.",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/master/modules-scripting.html"
-        },
         "operationId": "put-script",
         "parameters": [
           {
@@ -4710,13 +4510,10 @@
       },
       "post": {
         "tags": [
-          "put_script"
+          "script"
         ],
         "summary": "Create or update a script or search template",
         "description": "Creates or updates a stored script or search template.",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/master/modules-scripting.html"
-        },
         "operationId": "put-script-1",
         "parameters": [
           {
@@ -4740,13 +4537,10 @@
       },
       "delete": {
         "tags": [
-          "delete_script"
+          "script"
         ],
         "summary": "Delete a script or search template",
         "description": "Deletes a stored script or search template.",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/master/modules-scripting.html"
-        },
         "operationId": "delete-script",
         "parameters": [
           {
@@ -4798,13 +4592,10 @@
     "/_enrich/policy/{name}": {
       "get": {
         "tags": [
-          "enrich.get_policy"
+          "enrich"
         ],
         "summary": "Get an enrich policy",
         "description": "Returns information about an enrich policy.",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/get-enrich-policy-api.html"
-        },
         "operationId": "enrich-get-policy",
         "parameters": [
           {
@@ -4816,17 +4607,14 @@
             "$ref": "#/components/responses/enrich.get_policy#200"
           }
         },
-        "x-available-since": "7.5.0"
+        "x-state": "Added in 7.5.0"
       },
       "put": {
         "tags": [
-          "enrich.put_policy"
+          "enrich"
         ],
         "summary": "Create an enrich policy",
         "description": "Creates an enrich policy.",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/put-enrich-policy-api.html"
-        },
         "operationId": "enrich-put-policy",
         "parameters": [
           {
@@ -4874,17 +4662,14 @@
             }
           }
         },
-        "x-available-since": "7.5.0"
+        "x-state": "Added in 7.5.0"
       },
       "delete": {
         "tags": [
-          "enrich.delete_policy"
+          "enrich"
         ],
         "summary": "Delete an enrich policy",
         "description": "Deletes an existing enrich policy and its enrich index.",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/delete-enrich-policy-api.html"
-        },
         "operationId": "enrich-delete-policy",
         "parameters": [
           {
@@ -4911,18 +4696,16 @@
             }
           }
         },
-        "x-available-since": "7.5.0"
+        "x-state": "Added in 7.5.0"
       }
     },
     "/_enrich/policy/{name}/_execute": {
       "put": {
         "tags": [
-          "enrich.execute_policy"
+          "enrich"
         ],
-        "summary": "Creates the enrich index for an existing enrich policy",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/execute-enrich-policy-api.html"
-        },
+        "summary": "Run an enrich policy",
+        "description": "Create the enrich index for an existing enrich policy.",
         "operationId": "enrich-execute-policy",
         "parameters": [
           {
@@ -4958,7 +4741,7 @@
                     "status": {
                       "$ref": "#/components/schemas/enrich.execute_policy:ExecuteEnrichPolicyStatus"
                     },
-                    "task_id": {
+                    "task": {
                       "$ref": "#/components/schemas/_types:TaskId"
                     }
                   }
@@ -4967,38 +4750,32 @@
             }
           }
         },
-        "x-available-since": "7.5.0"
+        "x-state": "Added in 7.5.0"
       }
     },
     "/_enrich/policy": {
       "get": {
         "tags": [
-          "enrich.get_policy"
+          "enrich"
         ],
         "summary": "Get an enrich policy",
         "description": "Returns information about an enrich policy.",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/get-enrich-policy-api.html"
-        },
         "operationId": "enrich-get-policy-1",
         "responses": {
           "200": {
             "$ref": "#/components/responses/enrich.get_policy#200"
           }
         },
-        "x-available-since": "7.5.0"
+        "x-state": "Added in 7.5.0"
       }
     },
     "/_enrich/_stats": {
       "get": {
         "tags": [
-          "enrich.stats"
+          "enrich"
         ],
         "summary": "Get enrich stats",
         "description": "Returns enrich coordinator statistics and information about enrich policies that are currently executing.",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/enrich-stats-api.html"
-        },
         "operationId": "enrich-stats",
         "responses": {
           "200": {
@@ -5024,7 +4801,6 @@
                     },
                     "cache_stats": {
                       "description": "Objects containing information about the enrich cache stats on each ingest node.",
-                      "x-available-since": "7.16.0",
                       "type": "array",
                       "items": {
                         "$ref": "#/components/schemas/enrich.stats:CacheStats"
@@ -5040,18 +4816,16 @@
             }
           }
         },
-        "x-available-since": "7.5.0"
+        "x-state": "Added in 7.5.0"
       }
     },
     "/_eql/search/{id}": {
       "get": {
         "tags": [
-          "eql.get"
+          "eql"
         ],
-        "summary": "Returns the current status and available results for an async EQL search or a stored synchronous EQL search",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/get-async-eql-search-api.html"
-        },
+        "summary": "Get async EQL search results",
+        "description": "Get the current status and available results for an async EQL search or a stored synchronous EQL search.",
         "operationId": "eql-get",
         "parameters": [
           {
@@ -5098,17 +4872,14 @@
             }
           }
         },
-        "x-available-since": "7.9.0"
+        "x-state": "Added in 7.9.0"
       },
       "delete": {
         "tags": [
-          "eql.delete"
+          "eql"
         ],
-        "summary": "Deletes an async EQL search or a stored synchronous EQL search",
-        "description": "The API also deletes results for the search.",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/eql-search-api.html"
-        },
+        "summary": "Delete an async EQL search",
+        "description": "Delete an async EQL search or a stored synchronous EQL search.\nThe API also deletes results for the search.",
         "operationId": "eql-delete",
         "parameters": [
           {
@@ -5135,18 +4906,16 @@
             }
           }
         },
-        "x-available-since": "7.9.0"
+        "x-state": "Added in 7.9.0"
       }
     },
     "/_eql/search/status/{id}": {
       "get": {
         "tags": [
-          "eql.get_status"
+          "eql"
         ],
-        "summary": "Returns the current status for an async EQL search or a stored synchronous EQL search without returning results",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/get-async-eql-status-api.html"
-        },
+        "summary": "Get the async EQL status",
+        "description": "Get the current status for an async EQL search or a stored synchronous EQL search without returning results.",
         "operationId": "eql-get-status",
         "parameters": [
           {
@@ -5201,17 +4970,18 @@
             }
           }
         },
-        "x-available-since": "7.9.0"
+        "x-state": "Added in 7.9.0"
       }
     },
     "/{index}/_eql/search": {
       "get": {
         "tags": [
-          "eql.search"
+          "eql"
         ],
-        "summary": "Returns results matching a query expressed in Event Query Language (EQL)",
+        "summary": "Get EQL search results",
+        "description": "Returns search results for an Event Query Language (EQL) query.\nEQL assumes each document in a data stream or index corresponds to an event.",
         "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/eql-search-api.html"
+          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/eql.html"
         },
         "operationId": "eql-search",
         "parameters": [
@@ -5245,15 +5015,16 @@
             "$ref": "#/components/responses/eql.search#200"
           }
         },
-        "x-available-since": "7.9.0"
+        "x-state": "Added in 7.9.0"
       },
       "post": {
         "tags": [
-          "eql.search"
+          "eql"
         ],
-        "summary": "Returns results matching a query expressed in Event Query Language (EQL)",
+        "summary": "Get EQL search results",
+        "description": "Returns search results for an Event Query Language (EQL) query.\nEQL assumes each document in a data stream or index corresponds to an event.",
         "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/eql-search-api.html"
+          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/eql.html"
         },
         "operationId": "eql-search-1",
         "parameters": [
@@ -5287,17 +5058,18 @@
             "$ref": "#/components/responses/eql.search#200"
           }
         },
-        "x-available-since": "7.9.0"
+        "x-state": "Added in 7.9.0"
       }
     },
     "/_query": {
       "post": {
         "tags": [
-          "esql.query"
+          "esql"
         ],
-        "summary": "Executes an ES|QL request",
+        "summary": "Run an ES|QL query",
+        "description": "Get search results for an ES|QL (Elasticsearch query language) query.",
         "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/esql-rest.html"
+          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/esql.html"
         },
         "operationId": "esql-query",
         "parameters": [
@@ -5349,9 +5121,6 @@
                     "type": "string"
                   },
                   "params": {
-                    "externalDocs": {
-                      "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/esql-rest.html#esql-rest-params"
-                    },
                     "description": "To avoid any attempts of hacking or code injection, extract the values in a separate list of parameters. Use question mark placeholders (?) in the query string for each of the parameters.",
                     "type": "array",
                     "items": {
@@ -5396,20 +5165,16 @@
               }
             }
           }
-        },
-        "x-available-since": "8.11.0"
+        }
       }
     },
     "/{index}/_source/{id}": {
       "get": {
         "tags": [
-          "get_source"
+          "document"
         ],
         "summary": "Get a document's source",
         "description": "Returns the source of a document.",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/master/docs-get.html"
-        },
         "operationId": "get-source",
         "parameters": [
           {
@@ -5549,13 +5314,10 @@
       },
       "head": {
         "tags": [
-          "exists_source"
+          "document"
         ],
         "summary": "Check for a document source",
         "description": "Checks if a document's `_source` is stored.",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/master/docs-get.html"
-        },
         "operationId": "exists-source",
         "parameters": [
           {
@@ -5679,19 +5441,16 @@
             }
           }
         },
-        "x-available-since": "5.4.0"
+        "x-state": "Added in 5.4.0"
       }
     },
     "/{index}/_explain/{id}": {
       "get": {
         "tags": [
-          "explain"
+          "search"
         ],
         "summary": "Explain a document match result",
         "description": "Returns information about why a specific document matches, or doesn’t match, a query.",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/master/search-explain.html"
-        },
         "operationId": "explain",
         "parameters": [
           {
@@ -5748,13 +5507,10 @@
       },
       "post": {
         "tags": [
-          "explain"
+          "search"
         ],
         "summary": "Explain a document match result",
         "description": "Returns information about why a specific document matches, or doesn’t match, a query.",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/master/search-explain.html"
-        },
         "operationId": "explain-1",
         "parameters": [
           {
@@ -5813,13 +5569,10 @@
     "/_field_caps": {
       "get": {
         "tags": [
-          "field_caps"
+          "search"
         ],
-        "summary": "The field capabilities API returns the information about the capabilities of fields among multiple indices",
-        "description": "The field capabilities API returns runtime fields like any other field. For example, a runtime field with a type\nof keyword is returned as any other field that belongs to the `keyword` family.",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/master/search-field-caps.html"
-        },
+        "summary": "Get the field capabilities",
+        "description": "Get information about the capabilities of fields among multiple indices.\n\nFor data streams, the API returns field capabilities among the stream’s backing indices.\nIt returns runtime fields like any other field.\nFor example, a runtime field with a type of keyword is returned the same as any other field that belongs to the `keyword` family.",
         "operationId": "field-caps",
         "parameters": [
           {
@@ -5855,17 +5608,14 @@
             "$ref": "#/components/responses/field_caps#200"
           }
         },
-        "x-available-since": "5.4.0"
+        "x-state": "Added in 5.4.0"
       },
       "post": {
         "tags": [
-          "field_caps"
+          "search"
         ],
-        "summary": "The field capabilities API returns the information about the capabilities of fields among multiple indices",
-        "description": "The field capabilities API returns runtime fields like any other field. For example, a runtime field with a type\nof keyword is returned as any other field that belongs to the `keyword` family.",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/master/search-field-caps.html"
-        },
+        "summary": "Get the field capabilities",
+        "description": "Get information about the capabilities of fields among multiple indices.\n\nFor data streams, the API returns field capabilities among the stream’s backing indices.\nIt returns runtime fields like any other field.\nFor example, a runtime field with a type of keyword is returned the same as any other field that belongs to the `keyword` family.",
         "operationId": "field-caps-1",
         "parameters": [
           {
@@ -5901,19 +5651,16 @@
             "$ref": "#/components/responses/field_caps#200"
           }
         },
-        "x-available-since": "5.4.0"
+        "x-state": "Added in 5.4.0"
       }
     },
     "/{index}/_field_caps": {
       "get": {
         "tags": [
-          "field_caps"
+          "search"
         ],
-        "summary": "The field capabilities API returns the information about the capabilities of fields among multiple indices",
-        "description": "The field capabilities API returns runtime fields like any other field. For example, a runtime field with a type\nof keyword is returned as any other field that belongs to the `keyword` family.",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/master/search-field-caps.html"
-        },
+        "summary": "Get the field capabilities",
+        "description": "Get information about the capabilities of fields among multiple indices.\n\nFor data streams, the API returns field capabilities among the stream’s backing indices.\nIt returns runtime fields like any other field.\nFor example, a runtime field with a type of keyword is returned the same as any other field that belongs to the `keyword` family.",
         "operationId": "field-caps-2",
         "parameters": [
           {
@@ -5952,17 +5699,14 @@
             "$ref": "#/components/responses/field_caps#200"
           }
         },
-        "x-available-since": "5.4.0"
+        "x-state": "Added in 5.4.0"
       },
       "post": {
         "tags": [
-          "field_caps"
+          "search"
         ],
-        "summary": "The field capabilities API returns the information about the capabilities of fields among multiple indices",
-        "description": "The field capabilities API returns runtime fields like any other field. For example, a runtime field with a type\nof keyword is returned as any other field that belongs to the `keyword` family.",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/master/search-field-caps.html"
-        },
+        "summary": "Get the field capabilities",
+        "description": "Get information about the capabilities of fields among multiple indices.\n\nFor data streams, the API returns field capabilities among the stream’s backing indices.\nIt returns runtime fields like any other field.\nFor example, a runtime field with a type of keyword is returned the same as any other field that belongs to the `keyword` family.",
         "operationId": "field-caps-3",
         "parameters": [
           {
@@ -6001,17 +5745,18 @@
             "$ref": "#/components/responses/field_caps#200"
           }
         },
-        "x-available-since": "5.4.0"
+        "x-state": "Added in 5.4.0"
       }
     },
     "/{index}/_graph/explore": {
       "get": {
         "tags": [
-          "graph.explore"
+          "graph"
         ],
-        "summary": "Extracts and summarizes information about the documents and terms in an Elasticsearch data stream or index",
+        "summary": "Explore graph analytics",
+        "description": "Extract and summarize information about the documents and terms in an Elasticsearch data stream or index.\nThe easiest way to understand the behavior of this API is to use the Graph UI to explore connections.\nAn initial request to the `_explore` API contains a seed query that identifies the documents of interest and specifies the fields that define the vertices and connections you want to include in the graph.\nSubsequent requests enable you to spider out from one more vertices of interest.\nYou can exclude vertices that have already been returned.",
         "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/graph-explore-api.html"
+          "url": "https://www.elastic.co/guide/en/kibana/current/xpack-graph.html"
         },
         "operationId": "graph-explore",
         "parameters": [
@@ -6036,11 +5781,12 @@
       },
       "post": {
         "tags": [
-          "graph.explore"
+          "graph"
         ],
-        "summary": "Extracts and summarizes information about the documents and terms in an Elasticsearch data stream or index",
+        "summary": "Explore graph analytics",
+        "description": "Extract and summarize information about the documents and terms in an Elasticsearch data stream or index.\nThe easiest way to understand the behavior of this API is to use the Graph UI to explore connections.\nAn initial request to the `_explore` API contains a seed query that identifies the documents of interest and specifies the fields that define the vertices and connections you want to include in the graph.\nSubsequent requests enable you to spider out from one more vertices of interest.\nYou can exclude vertices that have already been returned.",
         "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/graph-explore-api.html"
+          "url": "https://www.elastic.co/guide/en/kibana/current/xpack-graph.html"
         },
         "operationId": "graph-explore-1",
         "parameters": [
@@ -6067,13 +5813,10 @@
     "/{index}/_doc": {
       "post": {
         "tags": [
-          "index"
+          "document"
         ],
         "summary": "Index a document",
         "description": "Adds a JSON document to the specified data stream or index and makes it searchable.\nIf the target is an index and the document already exists, the request updates the document and increments its version.",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/master/docs-index_.html"
-        },
         "operationId": "index-2",
         "parameters": [
           {
@@ -6126,13 +5869,10 @@
     "/{index}/_block/{block}": {
       "put": {
         "tags": [
-          "indices.add_block"
+          "indices"
         ],
         "summary": "Add an index block",
         "description": "Limits the operations allowed on an index by blocking specific operation types.",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/master/index-modules-blocks.html"
-        },
         "operationId": "indices-add-block",
         "parameters": [
           {
@@ -6239,18 +5979,16 @@
             }
           }
         },
-        "x-available-since": "7.9.0"
+        "x-state": "Added in 7.9.0"
       }
     },
     "/_analyze": {
       "get": {
         "tags": [
-          "indices.analyze"
+          "indices"
         ],
-        "summary": "Performs analysis on a text string and returns the resulting tokens",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/indices-analyze.html"
-        },
+        "summary": "Get tokens from text analysis",
+        "description": "The analyze API performs [analysis](https://www.elastic.co/guide/en/elasticsearch/reference/current/analysis.html) on a text string and returns the resulting tokens.",
         "operationId": "indices-analyze",
         "requestBody": {
           "$ref": "#/components/requestBodies/indices.analyze"
@@ -6263,12 +6001,10 @@
       },
       "post": {
         "tags": [
-          "indices.analyze"
+          "indices"
         ],
-        "summary": "Performs analysis on a text string and returns the resulting tokens",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/indices-analyze.html"
-        },
+        "summary": "Get tokens from text analysis",
+        "description": "The analyze API performs [analysis](https://www.elastic.co/guide/en/elasticsearch/reference/current/analysis.html) on a text string and returns the resulting tokens.",
         "operationId": "indices-analyze-1",
         "requestBody": {
           "$ref": "#/components/requestBodies/indices.analyze"
@@ -6283,12 +6019,10 @@
     "/{index}/_analyze": {
       "get": {
         "tags": [
-          "indices.analyze"
+          "indices"
         ],
-        "summary": "Performs analysis on a text string and returns the resulting tokens",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/indices-analyze.html"
-        },
+        "summary": "Get tokens from text analysis",
+        "description": "The analyze API performs [analysis](https://www.elastic.co/guide/en/elasticsearch/reference/current/analysis.html) on a text string and returns the resulting tokens.",
         "operationId": "indices-analyze-2",
         "parameters": [
           {
@@ -6306,12 +6040,10 @@
       },
       "post": {
         "tags": [
-          "indices.analyze"
+          "indices"
         ],
-        "summary": "Performs analysis on a text string and returns the resulting tokens",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/indices-analyze.html"
-        },
+        "summary": "Get tokens from text analysis",
+        "description": "The analyze API performs [analysis](https://www.elastic.co/guide/en/elasticsearch/reference/current/analysis.html) on a text string and returns the resulting tokens.",
         "operationId": "indices-analyze-3",
         "parameters": [
           {
@@ -6331,13 +6063,10 @@
     "/{index}": {
       "get": {
         "tags": [
-          "indices.get"
+          "indices"
         ],
         "summary": "Get index information",
         "description": "Returns information about one or more indices. For data streams, the API returns information about the\nstream’s backing indices.",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-get-index.html"
-        },
         "operationId": "indices-get",
         "parameters": [
           {
@@ -6450,13 +6179,10 @@
       },
       "put": {
         "tags": [
-          "indices.create"
+          "indices"
         ],
         "summary": "Create an index",
         "description": "Creates a new index.",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/indices-create-index.html"
-        },
         "operationId": "indices-create",
         "parameters": [
           {
@@ -6556,13 +6282,10 @@
       },
       "delete": {
         "tags": [
-          "indices.delete"
+          "indices"
         ],
         "summary": "Delete indices",
         "description": "Deletes one or more indices.",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-delete-index.html"
-        },
         "operationId": "indices-delete",
         "parameters": [
           {
@@ -6642,13 +6365,10 @@
       },
       "head": {
         "tags": [
-          "indices.exists"
+          "indices"
         ],
         "summary": "Check indices",
         "description": "Checks if one or more indices, index aliases, or data streams exist.",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-exists.html"
-        },
         "operationId": "indices-exists",
         "parameters": [
           {
@@ -6736,13 +6456,10 @@
     "/_data_stream/{name}": {
       "get": {
         "tags": [
-          "indices.get_data_stream"
+          "data stream"
         ],
         "summary": "Get data streams",
         "description": "Retrieves information about one or more data streams.",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/master/data-streams.html"
-        },
         "operationId": "indices-get-data-stream-1",
         "parameters": [
           {
@@ -6766,17 +6483,14 @@
             "$ref": "#/components/responses/indices.get_data_stream#200"
           }
         },
-        "x-available-since": "7.9.0"
+        "x-state": "Added in 7.9.0"
       },
       "put": {
         "tags": [
-          "indices.create_data_stream"
+          "data stream"
         ],
         "summary": "Create a data stream",
         "description": "Creates a data stream.\nYou must have a matching index template with data stream enabled.",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/master/data-streams.html"
-        },
         "operationId": "indices-create-data-stream",
         "parameters": [
           {
@@ -6823,17 +6537,14 @@
             }
           }
         },
-        "x-available-since": "7.9.0"
+        "x-state": "Added in 7.9.0"
       },
       "delete": {
         "tags": [
-          "indices.delete_data_stream"
+          "indices"
         ],
         "summary": "Delete data streams",
         "description": "Deletes one or more data streams and their backing indices.",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/master/data-streams.html"
-        },
         "operationId": "indices-delete-data-stream",
         "parameters": [
           {
@@ -6880,19 +6591,16 @@
             }
           }
         },
-        "x-available-since": "7.9.0"
+        "x-state": "Added in 7.9.0"
       }
     },
     "/_data_stream/_stats": {
       "get": {
         "tags": [
-          "indices.data_streams_stats"
+          "data stream"
         ],
         "summary": "Get data stream stats",
         "description": "Retrieves statistics for one or more data streams.",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/master/data-streams.html"
-        },
         "operationId": "indices-data-streams-stats",
         "parameters": [
           {
@@ -6904,19 +6612,16 @@
             "$ref": "#/components/responses/indices.data_streams_stats#200"
           }
         },
-        "x-available-since": "7.9.0"
+        "x-state": "Added in 7.9.0"
       }
     },
     "/_data_stream/{name}/_stats": {
       "get": {
         "tags": [
-          "indices.data_streams_stats"
+          "data stream"
         ],
         "summary": "Get data stream stats",
         "description": "Retrieves statistics for one or more data streams.",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/master/data-streams.html"
-        },
         "operationId": "indices-data-streams-stats-1",
         "parameters": [
           {
@@ -6931,19 +6636,16 @@
             "$ref": "#/components/responses/indices.data_streams_stats#200"
           }
         },
-        "x-available-since": "7.9.0"
+        "x-state": "Added in 7.9.0"
       }
     },
     "/{index}/_alias/{name}": {
       "get": {
         "tags": [
-          "indices.get_alias"
+          "indices"
         ],
         "summary": "Get aliases",
         "description": "Retrieves information for one or more data stream or index aliases.",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-aliases.html"
-        },
         "operationId": "indices-get-alias-2",
         "parameters": [
           {
@@ -6973,13 +6675,10 @@
       },
       "put": {
         "tags": [
-          "indices.put_alias"
+          "indices"
         ],
         "summary": "Create or update an alias",
         "description": "Adds a data stream or index to an alias.",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-aliases.html"
-        },
         "operationId": "indices-put-alias",
         "parameters": [
           {
@@ -7006,13 +6705,10 @@
       },
       "post": {
         "tags": [
-          "indices.put_alias"
+          "indices"
         ],
         "summary": "Create or update an alias",
         "description": "Adds a data stream or index to an alias.",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-aliases.html"
-        },
         "operationId": "indices-put-alias-1",
         "parameters": [
           {
@@ -7039,13 +6735,10 @@
       },
       "delete": {
         "tags": [
-          "indices.delete_alias"
+          "indices"
         ],
         "summary": "Delete an alias",
         "description": "Removes a data stream or index from an alias.",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-aliases.html"
-        },
         "operationId": "indices-delete-alias",
         "parameters": [
           {
@@ -7069,13 +6762,10 @@
       },
       "head": {
         "tags": [
-          "indices.exists_alias"
+          "indices"
         ],
         "summary": "Check aliases",
         "description": "Checks if one or more data stream or index aliases exist.",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-aliases.html"
-        },
         "operationId": "indices-exists-alias-1",
         "parameters": [
           {
@@ -7107,13 +6797,10 @@
     "/{index}/_aliases/{name}": {
       "put": {
         "tags": [
-          "indices.put_alias"
+          "indices"
         ],
         "summary": "Create or update an alias",
         "description": "Adds a data stream or index to an alias.",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-aliases.html"
-        },
         "operationId": "indices-put-alias-2",
         "parameters": [
           {
@@ -7140,13 +6827,10 @@
       },
       "post": {
         "tags": [
-          "indices.put_alias"
+          "indices"
         ],
         "summary": "Create or update an alias",
         "description": "Adds a data stream or index to an alias.",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-aliases.html"
-        },
         "operationId": "indices-put-alias-3",
         "parameters": [
           {
@@ -7173,13 +6857,10 @@
       },
       "delete": {
         "tags": [
-          "indices.delete_alias"
+          "indices"
         ],
         "summary": "Delete an alias",
         "description": "Removes a data stream or index from an alias.",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-aliases.html"
-        },
         "operationId": "indices-delete-alias-1",
         "parameters": [
           {
@@ -7205,13 +6886,10 @@
     "/_data_stream/{name}/_lifecycle": {
       "get": {
         "tags": [
-          "indices.get_data_lifecycle"
+          "data stream"
         ],
         "summary": "Get data stream lifecycles",
         "description": "Retrieves the data stream lifecycle configuration of one or more data streams.",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/master/data-streams-get-lifecycle.html"
-        },
         "operationId": "indices-get-data-lifecycle",
         "parameters": [
           {
@@ -7279,17 +6957,14 @@
             }
           }
         },
-        "x-available-since": "8.11.0"
+        "x-state": "Added in 8.11.0"
       },
       "put": {
         "tags": [
-          "indices.put_data_lifecycle"
+          "indices"
         ],
         "summary": "Update data stream lifecycles",
         "description": "Update the data stream lifecycle of the specified data streams.",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/master/data-streams-put-lifecycle.html"
-        },
         "operationId": "indices-put-data-lifecycle",
         "parameters": [
           {
@@ -7363,17 +7038,14 @@
             }
           }
         },
-        "x-available-since": "8.11.0"
+        "x-state": "Added in 8.11.0"
       },
       "delete": {
         "tags": [
-          "indices.delete_data_lifecycle"
+          "indices"
         ],
         "summary": "Delete data stream lifecycles",
         "description": "Removes the data stream lifecycle from a data stream, rendering it not managed by the data stream lifecycle.",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/master/data-streams-delete-lifecycle.html"
-        },
         "operationId": "indices-delete-data-lifecycle",
         "parameters": [
           {
@@ -7430,19 +7102,16 @@
             }
           }
         },
-        "x-available-since": "8.11.0"
+        "x-state": "Added in 8.11.0"
       }
     },
     "/_index_template/{name}": {
       "get": {
         "tags": [
-          "indices.get_index_template"
+          "indices"
         ],
         "summary": "Get index templates",
         "description": "Returns information about one or more index templates.",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-get-template.html"
-        },
         "operationId": "indices-get-index-template-1",
         "parameters": [
           {
@@ -7466,17 +7135,14 @@
             "$ref": "#/components/responses/indices.get_index_template#200"
           }
         },
-        "x-available-since": "7.9.0"
+        "x-state": "Added in 7.9.0"
       },
       "put": {
         "tags": [
-          "indices.put_index_template"
+          "indices"
         ],
         "summary": "Create or update an index template",
         "description": "Index templates define settings, mappings, and aliases that can be applied automatically to new indices.",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-put-template.html"
-        },
         "operationId": "indices-put-index-template",
         "parameters": [
           {
@@ -7500,17 +7166,14 @@
             "$ref": "#/components/responses/indices.put_index_template#200"
           }
         },
-        "x-available-since": "7.9.0"
+        "x-state": "Added in 7.9.0"
       },
       "post": {
         "tags": [
-          "indices.put_index_template"
+          "indices"
         ],
         "summary": "Create or update an index template",
         "description": "Index templates define settings, mappings, and aliases that can be applied automatically to new indices.",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-put-template.html"
-        },
         "operationId": "indices-put-index-template-1",
         "parameters": [
           {
@@ -7534,17 +7197,14 @@
             "$ref": "#/components/responses/indices.put_index_template#200"
           }
         },
-        "x-available-since": "7.9.0"
+        "x-state": "Added in 7.9.0"
       },
       "delete": {
         "tags": [
-          "indices.delete_index_template"
+          "indices"
         ],
         "summary": "Delete an index template",
         "description": "The provided <index-template> may contain multiple template names separated by a comma. If multiple template\nnames are specified then there is no wildcard support and the provided names should match completely with\nexisting templates.",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-delete-template.html"
-        },
         "operationId": "indices-delete-index-template",
         "parameters": [
           {
@@ -7591,16 +7251,14 @@
             }
           }
         },
-        "x-available-since": "7.8.0"
+        "x-state": "Added in 7.8.0"
       },
       "head": {
         "tags": [
-          "indices.exists_index_template"
+          "indices"
         ],
-        "summary": "Returns information about whether a particular index template exists",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/master/index-templates.html"
-        },
+        "summary": "Check index templates",
+        "description": "Check whether index templates exist.",
         "operationId": "indices-exists-index-template",
         "parameters": [
           {
@@ -7638,13 +7296,10 @@
     "/_alias/{name}": {
       "get": {
         "tags": [
-          "indices.get_alias"
+          "indices"
         ],
         "summary": "Get aliases",
         "description": "Retrieves information for one or more data stream or index aliases.",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-aliases.html"
-        },
         "operationId": "indices-get-alias-1",
         "parameters": [
           {
@@ -7671,13 +7326,10 @@
       },
       "head": {
         "tags": [
-          "indices.exists_alias"
+          "indices"
         ],
         "summary": "Check aliases",
         "description": "Checks if one or more data stream or index aliases exist.",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-aliases.html"
-        },
         "operationId": "indices-exists-alias",
         "parameters": [
           {
@@ -7706,13 +7358,10 @@
     "/{index}/_lifecycle/explain": {
       "get": {
         "tags": [
-          "indices.explain_data_lifecycle"
+          "indices"
         ],
         "summary": "Get the status for a data stream lifecycle",
-        "description": "Retrieves information about an index or data stream’s current data stream lifecycle status, such as time since index creation, time since rollover, the lifecycle configuration managing the index, or any errors encountered during lifecycle execution.",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/data-streams-explain-lifecycle.html"
-        },
+        "description": "Get information about an index or data stream's current data stream lifecycle status, such as time since index creation, time since rollover, the lifecycle configuration managing the index, or any errors encountered during lifecycle execution.",
         "operationId": "indices-explain-data-lifecycle",
         "parameters": [
           {
@@ -7770,19 +7419,16 @@
             }
           }
         },
-        "x-available-since": "8.11.0"
+        "x-state": "Added in 8.11.0"
       }
     },
     "/_alias": {
       "get": {
         "tags": [
-          "indices.get_alias"
+          "indices"
         ],
         "summary": "Get aliases",
         "description": "Retrieves information for one or more data stream or index aliases.",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-aliases.html"
-        },
         "operationId": "indices-get-alias",
         "parameters": [
           {
@@ -7808,13 +7454,10 @@
     "/{index}/_alias": {
       "get": {
         "tags": [
-          "indices.get_alias"
+          "indices"
         ],
         "summary": "Get aliases",
         "description": "Retrieves information for one or more data stream or index aliases.",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-aliases.html"
-        },
         "operationId": "indices-get-alias-3",
         "parameters": [
           {
@@ -7843,13 +7486,10 @@
     "/_data_stream": {
       "get": {
         "tags": [
-          "indices.get_data_stream"
+          "data stream"
         ],
         "summary": "Get data streams",
         "description": "Retrieves information about one or more data streams.",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/master/data-streams.html"
-        },
         "operationId": "indices-get-data-stream",
         "parameters": [
           {
@@ -7870,19 +7510,16 @@
             "$ref": "#/components/responses/indices.get_data_stream#200"
           }
         },
-        "x-available-since": "7.9.0"
+        "x-state": "Added in 7.9.0"
       }
     },
     "/_index_template": {
       "get": {
         "tags": [
-          "indices.get_index_template"
+          "indices"
         ],
         "summary": "Get index templates",
         "description": "Returns information about one or more index templates.",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-get-template.html"
-        },
         "operationId": "indices-get-index-template",
         "parameters": [
           {
@@ -7903,19 +7540,16 @@
             "$ref": "#/components/responses/indices.get_index_template#200"
           }
         },
-        "x-available-since": "7.9.0"
+        "x-state": "Added in 7.9.0"
       }
     },
     "/_mapping": {
       "get": {
         "tags": [
-          "indices.get_mapping"
+          "indices"
         ],
         "summary": "Get mapping definitions",
         "description": "Retrieves mapping definitions for one or more indices.\nFor data streams, the API retrieves mappings for the stream’s backing indices.",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-get-mapping.html"
-        },
         "operationId": "indices-get-mapping",
         "parameters": [
           {
@@ -7944,13 +7578,10 @@
     "/{index}/_mapping": {
       "get": {
         "tags": [
-          "indices.get_mapping"
+          "indices"
         ],
         "summary": "Get mapping definitions",
         "description": "Retrieves mapping definitions for one or more indices.\nFor data streams, the API retrieves mappings for the stream’s backing indices.",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-get-mapping.html"
-        },
         "operationId": "indices-get-mapping-1",
         "parameters": [
           {
@@ -7980,13 +7611,10 @@
       },
       "put": {
         "tags": [
-          "indices.put_mapping"
+          "indices"
         ],
         "summary": "Update field mappings",
         "description": "Adds new fields to an existing data stream or index.\nYou can also use this API to change the search settings of existing fields.\nFor data streams, these changes are applied to all backing indices by default.",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-put-mapping.html"
-        },
         "operationId": "indices-put-mapping",
         "parameters": [
           {
@@ -8022,13 +7650,10 @@
       },
       "post": {
         "tags": [
-          "indices.put_mapping"
+          "indices"
         ],
         "summary": "Update field mappings",
         "description": "Adds new fields to an existing data stream or index.\nYou can also use this API to change the search settings of existing fields.\nFor data streams, these changes are applied to all backing indices by default.",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-put-mapping.html"
-        },
         "operationId": "indices-put-mapping-1",
         "parameters": [
           {
@@ -8066,13 +7691,10 @@
     "/_settings": {
       "get": {
         "tags": [
-          "indices.get_settings"
+          "indices"
         ],
         "summary": "Get index settings",
         "description": "Returns setting information for one or more indices. For data streams,\nreturns setting information for the stream’s backing indices.",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-get-settings.html"
-        },
         "operationId": "indices-get-settings",
         "parameters": [
           {
@@ -8105,13 +7727,10 @@
       },
       "put": {
         "tags": [
-          "indices.put_settings"
+          "indices"
         ],
         "summary": "Update index settings",
         "description": "Changes dynamic index settings in real time. For data streams, index setting\nchanges are applied to all backing indices by default.",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-update-settings.html"
-        },
         "operationId": "indices-put-settings",
         "parameters": [
           {
@@ -8149,13 +7768,10 @@
     "/{index}/_settings": {
       "get": {
         "tags": [
-          "indices.get_settings"
+          "indices"
         ],
         "summary": "Get index settings",
         "description": "Returns setting information for one or more indices. For data streams,\nreturns setting information for the stream’s backing indices.",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-get-settings.html"
-        },
         "operationId": "indices-get-settings-1",
         "parameters": [
           {
@@ -8191,13 +7807,10 @@
       },
       "put": {
         "tags": [
-          "indices.put_settings"
+          "indices"
         ],
         "summary": "Update index settings",
         "description": "Changes dynamic index settings in real time. For data streams, index setting\nchanges are applied to all backing indices by default.",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-update-settings.html"
-        },
         "operationId": "indices-put-settings-1",
         "parameters": [
           {
@@ -8238,13 +7851,10 @@
     "/{index}/_settings/{name}": {
       "get": {
         "tags": [
-          "indices.get_settings"
+          "indices"
         ],
         "summary": "Get index settings",
         "description": "Returns setting information for one or more indices. For data streams,\nreturns setting information for the stream’s backing indices.",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-get-settings.html"
-        },
         "operationId": "indices-get-settings-2",
         "parameters": [
           {
@@ -8285,13 +7895,10 @@
     "/_settings/{name}": {
       "get": {
         "tags": [
-          "indices.get_settings"
+          "indices"
         ],
         "summary": "Get index settings",
         "description": "Returns setting information for one or more indices. For data streams,\nreturns setting information for the stream’s backing indices.",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-get-settings.html"
-        },
         "operationId": "indices-get-settings-3",
         "parameters": [
           {
@@ -8329,13 +7936,10 @@
     "/_data_stream/_migrate/{name}": {
       "post": {
         "tags": [
-          "indices.migrate_to_data_stream"
+          "data stream"
         ],
         "summary": "Convert an index alias to a data stream",
         "description": "Converts an index alias to a data stream.\nYou must have a matching index template that is data stream enabled.\nThe alias must meet the following criteria:\nThe alias must have a write index;\nAll indices for the alias must have a `@timestamp` field mapping of a `date` or `date_nanos` field type;\nThe alias must not have any filters;\nThe alias must not use custom routing.\nIf successful, the request removes the alias and creates a data stream with the same name.\nThe indices for the alias become hidden backing indices for the stream.\nThe write index for the alias becomes the write index for the stream.",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/master/data-streams.html"
-        },
         "operationId": "indices-migrate-to-data-stream",
         "parameters": [
           {
@@ -8382,19 +7986,16 @@
             }
           }
         },
-        "x-available-since": "7.9.0"
+        "x-state": "Added in 7.9.0"
       }
     },
     "/_data_stream/_modify": {
       "post": {
         "tags": [
-          "indices.modify_data_stream"
+          "data stream"
         ],
         "summary": "Update data streams",
         "description": "Performs one or more data stream modification actions in a single atomic operation.",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/master/data-streams.html"
-        },
         "operationId": "indices-modify-data-stream",
         "requestBody": {
           "content": {
@@ -8430,19 +8031,16 @@
             }
           }
         },
-        "x-available-since": "7.16.0"
+        "x-state": "Added in 7.16.0"
       }
     },
     "/_template/{name}": {
       "put": {
         "tags": [
-          "indices.put_template"
+          "indices"
         ],
         "summary": "Create or update an index template",
         "description": "Index templates define settings, mappings, and aliases that can be applied automatically to new indices.",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-templates-v1.html"
-        },
         "operationId": "indices-put-template",
         "parameters": [
           {
@@ -8472,13 +8070,10 @@
       },
       "post": {
         "tags": [
-          "indices.put_template"
+          "indices"
         ],
         "summary": "Create or update an index template",
         "description": "Index templates define settings, mappings, and aliases that can be applied automatically to new indices.",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-templates-v1.html"
-        },
         "operationId": "indices-put-template-1",
         "parameters": [
           {
@@ -8510,13 +8105,10 @@
     "/_refresh": {
       "get": {
         "tags": [
-          "indices.refresh"
+          "indices"
         ],
         "summary": "Refresh an index",
         "description": "A refresh makes recent operations performed on one or more indices available for search.\nFor data streams, the API runs the refresh operation on the stream’s backing indices.",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-refresh.html"
-        },
         "operationId": "indices-refresh-1",
         "parameters": [
           {
@@ -8537,13 +8129,10 @@
       },
       "post": {
         "tags": [
-          "indices.refresh"
+          "indices"
         ],
         "summary": "Refresh an index",
         "description": "A refresh makes recent operations performed on one or more indices available for search.\nFor data streams, the API runs the refresh operation on the stream’s backing indices.",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-refresh.html"
-        },
         "operationId": "indices-refresh",
         "parameters": [
           {
@@ -8566,13 +8155,10 @@
     "/{index}/_refresh": {
       "get": {
         "tags": [
-          "indices.refresh"
+          "indices"
         ],
         "summary": "Refresh an index",
         "description": "A refresh makes recent operations performed on one or more indices available for search.\nFor data streams, the API runs the refresh operation on the stream’s backing indices.",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-refresh.html"
-        },
         "operationId": "indices-refresh-3",
         "parameters": [
           {
@@ -8596,13 +8182,10 @@
       },
       "post": {
         "tags": [
-          "indices.refresh"
+          "indices"
         ],
         "summary": "Refresh an index",
         "description": "A refresh makes recent operations performed on one or more indices available for search.\nFor data streams, the API runs the refresh operation on the stream’s backing indices.",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-refresh.html"
-        },
         "operationId": "indices-refresh-2",
         "parameters": [
           {
@@ -8628,13 +8211,10 @@
     "/_resolve/index/{name}": {
       "get": {
         "tags": [
-          "indices.resolve_index"
+          "indices"
         ],
-        "summary": "Resolves the specified name(s) and/or index patterns for indices, aliases, and data streams",
-        "description": "Multiple patterns and remote clusters are supported.",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-resolve-index-api.html"
-        },
+        "summary": "Resolve indices",
+        "description": "Resolve the names and/or index patterns for indices, aliases, and data streams.\nMultiple patterns and remote clusters are supported.",
         "operationId": "indices-resolve-index",
         "parameters": [
           {
@@ -8716,19 +8296,16 @@
             }
           }
         },
-        "x-available-since": "7.9.0"
+        "x-state": "Added in 7.9.0"
       }
     },
     "/{alias}/_rollover": {
       "post": {
         "tags": [
-          "indices.rollover"
+          "indices"
         ],
         "summary": "Roll over to a new index",
         "description": "Creates a new index for a data stream or index alias.",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/indices-rollover-index.html"
-        },
         "operationId": "indices-rollover",
         "parameters": [
           {
@@ -8755,19 +8332,16 @@
             "$ref": "#/components/responses/indices.rollover#200"
           }
         },
-        "x-available-since": "5.0.0"
+        "x-state": "Added in 5.0.0"
       }
     },
     "/{alias}/_rollover/{new_index}": {
       "post": {
         "tags": [
-          "indices.rollover"
+          "indices"
         ],
         "summary": "Roll over to a new index",
         "description": "Creates a new index for a data stream or index alias.",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/indices-rollover-index.html"
-        },
         "operationId": "indices-rollover-1",
         "parameters": [
           {
@@ -8797,19 +8371,16 @@
             "$ref": "#/components/responses/indices.rollover#200"
           }
         },
-        "x-available-since": "5.0.0"
+        "x-state": "Added in 5.0.0"
       }
     },
     "/_index_template/_simulate_index/{name}": {
       "post": {
         "tags": [
-          "indices.simulate_index_template"
+          "indices"
         ],
         "summary": "Simulate an index",
         "description": "Returns the index configuration that would be applied to the specified index from an existing index template.",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-simulate-index.html"
-        },
         "operationId": "indices-simulate-index-template",
         "parameters": [
           {
@@ -8870,19 +8441,16 @@
             }
           }
         },
-        "x-available-since": "7.9.0"
+        "x-state": "Added in 7.9.0"
       }
     },
     "/_index_template/_simulate": {
       "post": {
         "tags": [
-          "indices.simulate_template"
+          "indices"
         ],
         "summary": "Simulate an index template",
         "description": "Returns the index configuration that would be applied by a particular index template.",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-simulate-template.html"
-        },
         "operationId": "indices-simulate-template",
         "parameters": [
           {
@@ -8908,13 +8476,10 @@
     "/_index_template/_simulate/{name}": {
       "post": {
         "tags": [
-          "indices.simulate_template"
+          "indices"
         ],
         "summary": "Simulate an index template",
         "description": "Returns the index configuration that would be applied by a particular index template.",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-simulate-template.html"
-        },
         "operationId": "indices-simulate-template-1",
         "parameters": [
           {
@@ -8943,13 +8508,10 @@
     "/_aliases": {
       "post": {
         "tags": [
-          "indices.update_aliases"
+          "indices"
         ],
         "summary": "Create or update an alias",
         "description": "Adds a data stream or index to an alias.",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-aliases.html"
-        },
         "operationId": "indices-update-aliases",
         "parameters": [
           {
@@ -9004,19 +8566,16 @@
             }
           }
         },
-        "x-available-since": "1.3.0"
+        "x-state": "Added in 1.3.0"
       }
     },
     "/_validate/query": {
       "get": {
         "tags": [
-          "indices.validate_query"
+          "indices"
         ],
         "summary": "Validate a query",
         "description": "Validates a query without running it.",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/master/search-validate.html"
-        },
         "operationId": "indices-validate-query",
         "parameters": [
           {
@@ -9064,17 +8623,14 @@
             "$ref": "#/components/responses/indices.validate_query#200"
           }
         },
-        "x-available-since": "1.3.0"
+        "x-state": "Added in 1.3.0"
       },
       "post": {
         "tags": [
-          "indices.validate_query"
+          "indices"
         ],
         "summary": "Validate a query",
         "description": "Validates a query without running it.",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/master/search-validate.html"
-        },
         "operationId": "indices-validate-query-1",
         "parameters": [
           {
@@ -9122,19 +8678,16 @@
             "$ref": "#/components/responses/indices.validate_query#200"
           }
         },
-        "x-available-since": "1.3.0"
+        "x-state": "Added in 1.3.0"
       }
     },
     "/{index}/_validate/query": {
       "get": {
         "tags": [
-          "indices.validate_query"
+          "indices"
         ],
         "summary": "Validate a query",
         "description": "Validates a query without running it.",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/master/search-validate.html"
-        },
         "operationId": "indices-validate-query-2",
         "parameters": [
           {
@@ -9185,17 +8738,14 @@
             "$ref": "#/components/responses/indices.validate_query#200"
           }
         },
-        "x-available-since": "1.3.0"
+        "x-state": "Added in 1.3.0"
       },
       "post": {
         "tags": [
-          "indices.validate_query"
+          "indices"
         ],
         "summary": "Validate a query",
         "description": "Validates a query without running it.",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/master/search-validate.html"
-        },
         "operationId": "indices-validate-query-3",
         "parameters": [
           {
@@ -9246,18 +8796,15 @@
             "$ref": "#/components/responses/indices.validate_query#200"
           }
         },
-        "x-available-since": "1.3.0"
+        "x-state": "Added in 1.3.0"
       }
     },
     "/_inference/{inference_id}": {
       "get": {
         "tags": [
-          "inference.get"
+          "inference"
         ],
         "summary": "Get an inference endpoint",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/master/get-inference-api.html"
-        },
         "operationId": "inference-get-1",
         "parameters": [
           {
@@ -9269,17 +8816,13 @@
             "$ref": "#/components/responses/inference.get#200"
           }
         },
-        "x-technical-preview": true,
-        "x-available-since": "8.11.0"
+        "x-state": "Added in 8.11.0"
       },
       "put": {
         "tags": [
-          "inference.put"
+          "inference"
         ],
         "summary": "Create an inference endpoint",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/master/put-inference-api.html"
-        },
         "operationId": "inference-put",
         "parameters": [
           {
@@ -9294,17 +8837,13 @@
             "$ref": "#/components/responses/inference.put#200"
           }
         },
-        "x-technical-preview": true,
-        "x-available-since": "8.11.0"
+        "x-state": "Added in 8.11.0"
       },
       "post": {
         "tags": [
-          "inference.inference"
+          "inference"
         ],
         "summary": "Perform inference on the service",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/master/post-inference-api.html"
-        },
         "operationId": "inference-inference",
         "parameters": [
           {
@@ -9322,17 +8861,13 @@
             "$ref": "#/components/responses/inference.inference#200"
           }
         },
-        "x-technical-preview": true,
-        "x-available-since": "8.11.0"
+        "x-state": "Added in 8.11.0"
       },
       "delete": {
         "tags": [
-          "inference.delete"
+          "inference"
         ],
         "summary": "Delete an inference endpoint",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/master/delete-inference-api.html"
-        },
         "operationId": "inference-delete",
         "parameters": [
           {
@@ -9350,19 +8885,15 @@
             "$ref": "#/components/responses/inference.delete#200"
           }
         },
-        "x-technical-preview": true,
-        "x-available-since": "8.11.0"
+        "x-state": "Added in 8.11.0"
       }
     },
     "/_inference/{task_type}/{inference_id}": {
       "get": {
         "tags": [
-          "inference.get"
+          "inference"
         ],
         "summary": "Get an inference endpoint",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/master/get-inference-api.html"
-        },
         "operationId": "inference-get-2",
         "parameters": [
           {
@@ -9377,17 +8908,13 @@
             "$ref": "#/components/responses/inference.get#200"
           }
         },
-        "x-technical-preview": true,
-        "x-available-since": "8.11.0"
+        "x-state": "Added in 8.11.0"
       },
       "put": {
         "tags": [
-          "inference.put"
+          "inference"
         ],
         "summary": "Create an inference endpoint",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/master/put-inference-api.html"
-        },
         "operationId": "inference-put-1",
         "parameters": [
           {
@@ -9405,17 +8932,13 @@
             "$ref": "#/components/responses/inference.put#200"
           }
         },
-        "x-technical-preview": true,
-        "x-available-since": "8.11.0"
+        "x-state": "Added in 8.11.0"
       },
       "post": {
         "tags": [
-          "inference.inference"
+          "inference"
         ],
         "summary": "Perform inference on the service",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/master/post-inference-api.html"
-        },
         "operationId": "inference-inference-1",
         "parameters": [
           {
@@ -9436,17 +8959,13 @@
             "$ref": "#/components/responses/inference.inference#200"
           }
         },
-        "x-technical-preview": true,
-        "x-available-since": "8.11.0"
+        "x-state": "Added in 8.11.0"
       },
       "delete": {
         "tags": [
-          "inference.delete"
+          "inference"
         ],
         "summary": "Delete an inference endpoint",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/master/delete-inference-api.html"
-        },
         "operationId": "inference-delete-1",
         "parameters": [
           {
@@ -9467,27 +8986,22 @@
             "$ref": "#/components/responses/inference.delete#200"
           }
         },
-        "x-technical-preview": true,
-        "x-available-since": "8.11.0"
+        "x-state": "Added in 8.11.0"
       }
     },
     "/_inference": {
       "get": {
         "tags": [
-          "inference.get"
+          "inference"
         ],
         "summary": "Get an inference endpoint",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/master/get-inference-api.html"
-        },
         "operationId": "inference-get",
         "responses": {
           "200": {
             "$ref": "#/components/responses/inference.get#200"
           }
         },
-        "x-technical-preview": true,
-        "x-available-since": "8.11.0"
+        "x-state": "Added in 8.11.0"
       }
     },
     "/": {
@@ -9497,9 +9011,6 @@
         ],
         "summary": "Get cluster info",
         "description": "Returns basic information about the cluster.",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/index.html"
-        },
         "operationId": "info",
         "responses": {
           "200": {
@@ -9540,13 +9051,10 @@
       },
       "head": {
         "tags": [
-          "ping"
+          "cluster"
         ],
         "summary": "Ping the cluster",
-        "description": "Returns whether the cluster is running.",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/index.html"
-        },
+        "description": "Get information about whether the cluster is running.",
         "operationId": "ping",
         "responses": {
           "200": {
@@ -9561,12 +9069,12 @@
     "/_ingest/pipeline/{id}": {
       "get": {
         "tags": [
-          "ingest.get_pipeline"
+          "ingest"
         ],
-        "summary": "Returns information about one or more ingest pipelines",
-        "description": "This API returns a local reference of the pipeline.",
+        "summary": "Get pipelines",
+        "description": "Get information about one or more ingest pipelines.\nThis API returns a local reference of the pipeline.",
         "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/master/get-pipeline-api.html"
+          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/ingest.html"
         },
         "operationId": "ingest-get-pipeline-1",
         "parameters": [
@@ -9585,13 +9093,13 @@
             "$ref": "#/components/responses/ingest.get_pipeline#200"
           }
         },
-        "x-available-since": "5.0.0"
+        "x-state": "Added in 5.0.0"
       },
       "put": {
         "tags": [
-          "ingest.put_pipeline"
+          "ingest"
         ],
-        "summary": "Creates or updates an ingest pipeline",
+        "summary": "Create or update a pipeline",
         "description": "Changes made using this API take effect immediately.",
         "externalDocs": {
           "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/ingest.html"
@@ -9692,15 +9200,16 @@
             }
           }
         },
-        "x-available-since": "5.0.0"
+        "x-state": "Added in 5.0.0"
       },
       "delete": {
         "tags": [
-          "ingest.delete_pipeline"
+          "ingest"
         ],
-        "summary": "Deletes one or more existing ingest pipeline",
+        "summary": "Delete pipelines",
+        "description": "Delete one or more ingest pipelines.",
         "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/master/delete-pipeline-api.html"
+          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/ingest.html"
         },
         "operationId": "ingest-delete-pipeline",
         "parameters": [
@@ -9748,18 +9257,18 @@
             }
           }
         },
-        "x-available-since": "5.0.0"
+        "x-state": "Added in 5.0.0"
       }
     },
     "/_ingest/pipeline": {
       "get": {
         "tags": [
-          "ingest.get_pipeline"
+          "ingest"
         ],
-        "summary": "Returns information about one or more ingest pipelines",
-        "description": "This API returns a local reference of the pipeline.",
+        "summary": "Get pipelines",
+        "description": "Get information about one or more ingest pipelines.\nThis API returns a local reference of the pipeline.",
         "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/master/get-pipeline-api.html"
+          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/ingest.html"
         },
         "operationId": "ingest-get-pipeline",
         "parameters": [
@@ -9775,16 +9284,16 @@
             "$ref": "#/components/responses/ingest.get_pipeline#200"
           }
         },
-        "x-available-since": "5.0.0"
+        "x-state": "Added in 5.0.0"
       }
     },
     "/_ingest/processor/grok": {
       "get": {
         "tags": [
-          "ingest.processor_grok"
+          "ingest"
         ],
-        "summary": "Extracts structured fields out of a single text field within a document",
-        "description": "You choose which field to extract matched fields from, as well as the grok pattern you expect will match.\nA grok pattern is like a regular expression that supports aliased expressions that can be reused.",
+        "summary": "Run a grok processor",
+        "description": "Extract structured fields out of a single text field within a document.\nYou must choose which field to extract matched fields from, as well as the grok pattern you expect will match.\nA grok pattern is like a regular expression that supports aliased expressions that can be reused.",
         "externalDocs": {
           "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/grok-processor.html"
         },
@@ -9812,18 +9321,16 @@
             }
           }
         },
-        "x-available-since": "6.1.0"
+        "x-state": "Added in 6.1.0"
       }
     },
     "/_ingest/pipeline/_simulate": {
       "get": {
         "tags": [
-          "ingest.simulate"
+          "ingest"
         ],
-        "summary": "Executes an ingest pipeline against a set of provided documents",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/master/simulate-pipeline-api.html"
-        },
+        "summary": "Simulate a pipeline",
+        "description": "Run an ingest pipeline against a set of provided documents.\nYou can either specify an existing pipeline to use with the provided documents or supply a pipeline definition in the body of the request.",
         "operationId": "ingest-simulate",
         "parameters": [
           {
@@ -9838,16 +9345,14 @@
             "$ref": "#/components/responses/ingest.simulate#200"
           }
         },
-        "x-available-since": "5.0.0"
+        "x-state": "Added in 5.0.0"
       },
       "post": {
         "tags": [
-          "ingest.simulate"
+          "ingest"
         ],
-        "summary": "Executes an ingest pipeline against a set of provided documents",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/master/simulate-pipeline-api.html"
-        },
+        "summary": "Simulate a pipeline",
+        "description": "Run an ingest pipeline against a set of provided documents.\nYou can either specify an existing pipeline to use with the provided documents or supply a pipeline definition in the body of the request.",
         "operationId": "ingest-simulate-1",
         "parameters": [
           {
@@ -9862,18 +9367,16 @@
             "$ref": "#/components/responses/ingest.simulate#200"
           }
         },
-        "x-available-since": "5.0.0"
+        "x-state": "Added in 5.0.0"
       }
     },
     "/_ingest/pipeline/{id}/_simulate": {
       "get": {
         "tags": [
-          "ingest.simulate"
+          "ingest"
         ],
-        "summary": "Executes an ingest pipeline against a set of provided documents",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/master/simulate-pipeline-api.html"
-        },
+        "summary": "Simulate a pipeline",
+        "description": "Run an ingest pipeline against a set of provided documents.\nYou can either specify an existing pipeline to use with the provided documents or supply a pipeline definition in the body of the request.",
         "operationId": "ingest-simulate-2",
         "parameters": [
           {
@@ -9891,16 +9394,14 @@
             "$ref": "#/components/responses/ingest.simulate#200"
           }
         },
-        "x-available-since": "5.0.0"
+        "x-state": "Added in 5.0.0"
       },
       "post": {
         "tags": [
-          "ingest.simulate"
+          "ingest"
         ],
-        "summary": "Executes an ingest pipeline against a set of provided documents",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/master/simulate-pipeline-api.html"
-        },
+        "summary": "Simulate a pipeline",
+        "description": "Run an ingest pipeline against a set of provided documents.\nYou can either specify an existing pipeline to use with the provided documents or supply a pipeline definition in the body of the request.",
         "operationId": "ingest-simulate-3",
         "parameters": [
           {
@@ -9918,19 +9419,16 @@
             "$ref": "#/components/responses/ingest.simulate#200"
           }
         },
-        "x-available-since": "5.0.0"
+        "x-state": "Added in 5.0.0"
       }
     },
     "/_license": {
       "get": {
         "tags": [
-          "license.get"
+          "license"
         ],
         "summary": "Get license information",
         "description": "Returns information about your Elastic license, including its type, its status, when it was issued, and when it expires.\nFor more information about the different types of licenses, refer to [Elastic Stack subscriptions](https://www.elastic.co/subscriptions).",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/master/get-license.html"
-        },
         "operationId": "license-get",
         "parameters": [
           {
@@ -9979,12 +9477,9 @@
     "/_logstash/pipeline/{id}": {
       "get": {
         "tags": [
-          "logstash.get_pipeline"
+          "logstash"
         ],
         "summary": "Retrieves pipelines used for Logstash Central Management",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/logstash-api-get-pipeline.html"
-        },
         "operationId": "logstash-get-pipeline-1",
         "parameters": [
           {
@@ -9996,16 +9491,13 @@
             "$ref": "#/components/responses/logstash.get_pipeline#200"
           }
         },
-        "x-available-since": "7.12.0"
+        "x-state": "Added in 7.12.0"
       },
       "put": {
         "tags": [
-          "logstash.put_pipeline"
+          "logstash"
         ],
         "summary": "Creates or updates a pipeline used for Logstash Central Management",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/logstash-api-put-pipeline.html"
-        },
         "operationId": "logstash-put-pipeline",
         "parameters": [
           {
@@ -10038,16 +9530,13 @@
             }
           }
         },
-        "x-available-since": "7.12.0"
+        "x-state": "Added in 7.12.0"
       },
       "delete": {
         "tags": [
-          "logstash.delete_pipeline"
+          "logstash"
         ],
         "summary": "Deletes a pipeline used for Logstash Central Management",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/logstash-api-delete-pipeline.html"
-        },
         "operationId": "logstash-delete-pipeline",
         "parameters": [
           {
@@ -10070,36 +9559,31 @@
             }
           }
         },
-        "x-available-since": "7.12.0"
+        "x-state": "Added in 7.12.0"
       }
     },
     "/_logstash/pipeline": {
       "get": {
         "tags": [
-          "logstash.get_pipeline"
+          "logstash"
         ],
         "summary": "Retrieves pipelines used for Logstash Central Management",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/logstash-api-get-pipeline.html"
-        },
         "operationId": "logstash-get-pipeline",
         "responses": {
           "200": {
             "$ref": "#/components/responses/logstash.get_pipeline#200"
           }
         },
-        "x-available-since": "7.12.0"
+        "x-state": "Added in 7.12.0"
       }
     },
     "/_mget": {
       "get": {
         "tags": [
-          "mget"
+          "document"
         ],
-        "summary": "Allows to get multiple documents in one request",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/master/docs-multi-get.html"
-        },
+        "summary": "Get multiple documents",
+        "description": "Get multiple JSON documents by ID from one or more indices.\nIf you specify an index in the request URI, you only need to specify the document IDs in the request body.\nTo ensure fast responses, this multi get (mget) API responds with partial results if one or more shards fail.",
         "operationId": "mget",
         "parameters": [
           {
@@ -10135,16 +9619,14 @@
             "$ref": "#/components/responses/mget#200"
           }
         },
-        "x-available-since": "1.3.0"
+        "x-state": "Added in 1.3.0"
       },
       "post": {
         "tags": [
-          "mget"
+          "document"
         ],
-        "summary": "Allows to get multiple documents in one request",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/master/docs-multi-get.html"
-        },
+        "summary": "Get multiple documents",
+        "description": "Get multiple JSON documents by ID from one or more indices.\nIf you specify an index in the request URI, you only need to specify the document IDs in the request body.\nTo ensure fast responses, this multi get (mget) API responds with partial results if one or more shards fail.",
         "operationId": "mget-1",
         "parameters": [
           {
@@ -10180,18 +9662,16 @@
             "$ref": "#/components/responses/mget#200"
           }
         },
-        "x-available-since": "1.3.0"
+        "x-state": "Added in 1.3.0"
       }
     },
     "/{index}/_mget": {
       "get": {
         "tags": [
-          "mget"
+          "document"
         ],
-        "summary": "Allows to get multiple documents in one request",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/master/docs-multi-get.html"
-        },
+        "summary": "Get multiple documents",
+        "description": "Get multiple JSON documents by ID from one or more indices.\nIf you specify an index in the request URI, you only need to specify the document IDs in the request body.\nTo ensure fast responses, this multi get (mget) API responds with partial results if one or more shards fail.",
         "operationId": "mget-2",
         "parameters": [
           {
@@ -10230,16 +9710,14 @@
             "$ref": "#/components/responses/mget#200"
           }
         },
-        "x-available-since": "1.3.0"
+        "x-state": "Added in 1.3.0"
       },
       "post": {
         "tags": [
-          "mget"
+          "document"
         ],
-        "summary": "Allows to get multiple documents in one request",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/master/docs-multi-get.html"
-        },
+        "summary": "Get multiple documents",
+        "description": "Get multiple JSON documents by ID from one or more indices.\nIf you specify an index in the request URI, you only need to specify the document IDs in the request body.\nTo ensure fast responses, this multi get (mget) API responds with partial results if one or more shards fail.",
         "operationId": "mget-3",
         "parameters": [
           {
@@ -10278,19 +9756,16 @@
             "$ref": "#/components/responses/mget#200"
           }
         },
-        "x-available-since": "1.3.0"
+        "x-state": "Added in 1.3.0"
       }
     },
     "/_ml/anomaly_detectors/{job_id}/_close": {
       "post": {
         "tags": [
-          "ml.close_job"
+          "ml anomaly"
         ],
         "summary": "Close anomaly detection jobs",
         "description": "A job can be opened and closed multiple times throughout its lifecycle. A closed job cannot receive data or perform analysis operations, but you can still explore and navigate results.\nWhen you close a job, it runs housekeeping tasks such as pruning the model history, flushing buffers, calculating final results and persisting the model snapshots. Depending upon the size of the job, it could take several minutes to close and the equivalent time to re-open. After it is closed, the job has a minimal overhead on the cluster except for maintaining its meta data. Therefore it is a best practice to close jobs that are no longer required to process data.\nIf you close an anomaly detection job whose datafeed is running, the request first tries to stop the datafeed. This behavior is equivalent to calling stop datafeed API with the same timeout and force parameters as the close job request.\nWhen a datafeed that has a specified end date stops, it automatically closes its associated job.",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/ml-close-job.html"
-        },
         "operationId": "ml-close-job",
         "parameters": [
           {
@@ -10377,18 +9852,15 @@
             }
           }
         },
-        "x-available-since": "5.4.0"
+        "x-state": "Added in 5.4.0"
       }
     },
     "/_ml/calendars/{calendar_id}": {
       "get": {
         "tags": [
-          "ml.get_calendars"
+          "ml anomaly"
         ],
         "summary": "Get calendar configuration info",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/ml-get-calendar.html"
-        },
         "operationId": "ml-get-calendars-2",
         "parameters": [
           {
@@ -10409,16 +9881,13 @@
             "$ref": "#/components/responses/ml.get_calendars#200"
           }
         },
-        "x-available-since": "6.2.0"
+        "x-state": "Added in 6.2.0"
       },
       "put": {
         "tags": [
-          "ml.put_calendar"
+          "ml anomaly"
         ],
         "summary": "Create a calendar",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/ml-put-calendar.html"
-        },
         "operationId": "ml-put-calendar",
         "parameters": [
           {
@@ -10483,16 +9952,13 @@
             }
           }
         },
-        "x-available-since": "6.2.0"
+        "x-state": "Added in 6.2.0"
       },
       "post": {
         "tags": [
-          "ml.get_calendars"
+          "ml anomaly"
         ],
         "summary": "Get calendar configuration info",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/ml-get-calendar.html"
-        },
         "operationId": "ml-get-calendars-3",
         "parameters": [
           {
@@ -10513,17 +9979,14 @@
             "$ref": "#/components/responses/ml.get_calendars#200"
           }
         },
-        "x-available-since": "6.2.0"
+        "x-state": "Added in 6.2.0"
       },
       "delete": {
         "tags": [
-          "ml.delete_calendar"
+          "ml anomaly"
         ],
         "summary": "Delete a calendar",
         "description": "Removes all scheduled events from a calendar, then deletes it.",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/ml-delete-calendar.html"
-        },
         "operationId": "ml-delete-calendar",
         "parameters": [
           {
@@ -10550,18 +10013,15 @@
             }
           }
         },
-        "x-available-since": "6.2.0"
+        "x-state": "Added in 6.2.0"
       }
     },
     "/_ml/calendars/{calendar_id}/events/{event_id}": {
       "delete": {
         "tags": [
-          "ml.delete_calendar_event"
+          "ml anomaly"
         ],
         "summary": "Delete events from a calendar",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/ml-delete-calendar-event.html"
-        },
         "operationId": "ml-delete-calendar-event",
         "parameters": [
           {
@@ -10599,18 +10059,15 @@
             }
           }
         },
-        "x-available-since": "6.2.0"
+        "x-state": "Added in 6.2.0"
       }
     },
     "/_ml/calendars/{calendar_id}/jobs/{job_id}": {
       "put": {
         "tags": [
-          "ml.put_calendar_job"
+          "ml anomaly"
         ],
         "summary": "Add anomaly detection job to calendar",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/ml-put-calendar-job.html"
-        },
         "operationId": "ml-put-calendar-job",
         "parameters": [
           {
@@ -10664,16 +10121,13 @@
             }
           }
         },
-        "x-available-since": "6.2.0"
+        "x-state": "Added in 6.2.0"
       },
       "delete": {
         "tags": [
-          "ml.delete_calendar_job"
+          "ml anomaly"
         ],
         "summary": "Delete anomaly jobs from a calendar",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/ml-delete-calendar-job.html"
-        },
         "operationId": "ml-delete-calendar-job",
         "parameters": [
           {
@@ -10727,19 +10181,16 @@
             }
           }
         },
-        "x-available-since": "6.2.0"
+        "x-state": "Added in 6.2.0"
       }
     },
     "/_ml/data_frame/analytics/{id}": {
       "get": {
         "tags": [
-          "ml.get_data_frame_analytics"
+          "ml data frame"
         ],
         "summary": "Get data frame analytics job configuration info",
         "description": "You can get information for multiple data frame analytics jobs in a single\nAPI request by using a comma-separated list of data frame analytics jobs or a\nwildcard expression.",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/get-dfanalytics.html"
-        },
         "operationId": "ml-get-data-frame-analytics",
         "parameters": [
           {
@@ -10763,17 +10214,14 @@
             "$ref": "#/components/responses/ml.get_data_frame_analytics#200"
           }
         },
-        "x-available-since": "7.3.0"
+        "x-state": "Added in 7.3.0"
       },
       "put": {
         "tags": [
-          "ml.put_data_frame_analytics"
+          "ml data frame"
         ],
         "summary": "Create a data frame analytics job",
         "description": "This API creates a data frame analytics job that performs an analysis on the\nsource indices and stores the outcome in a destination index.",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/put-dfanalytics.html"
-        },
         "operationId": "ml-put-data-frame-analytics",
         "parameters": [
           {
@@ -10795,9 +10243,6 @@
                 "type": "object",
                 "properties": {
                   "allow_lazy_start": {
-                    "externalDocs": {
-                      "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/ml-settings.html"
-                    },
                     "description": "Specifies whether this job can start when there is insufficient machine\nlearning node capacity for it to be immediately assigned to a node. If\nset to `false` and a machine learning node with capacity to run the job\ncannot be immediately found, the API returns an error. If set to `true`,\nthe API does not return an error; the job waits in the `starting` state\nuntil sufficient machine learning node capacity is available. This\nbehavior is also affected by the cluster-wide\n`xpack.ml.max_lazy_ml_nodes` setting.",
                     "type": "boolean"
                   },
@@ -10818,6 +10263,9 @@
                     "description": "The maximum number of threads to be used by the analysis. Using more\nthreads may decrease the time necessary to complete the analysis at the\ncost of using more CPU. Note that the process may use additional threads\nfor operational functionality other than the analysis itself.",
                     "type": "number"
                   },
+                  "_meta": {
+                    "$ref": "#/components/schemas/_types:Metadata"
+                  },
                   "model_memory_limit": {
                     "description": "The approximate maximum amount of memory resources that are permitted for\nanalytical processing. If your `elasticsearch.yml` file contains an\n`xpack.ml.max_model_memory_limit` setting, an error occurs when you try\nto create data frame analytics jobs that have `model_memory_limit` values\ngreater than that setting.",
                     "type": "string"
@@ -10877,6 +10325,9 @@
                     "max_num_threads": {
                       "type": "number"
                     },
+                    "_meta": {
+                      "$ref": "#/components/schemas/_types:Metadata"
+                    },
                     "model_memory_limit": {
                       "type": "string"
                     },
@@ -10903,16 +10354,13 @@
             }
           }
         },
-        "x-available-since": "7.3.0"
+        "x-state": "Added in 7.3.0"
       },
       "delete": {
         "tags": [
-          "ml.delete_data_frame_analytics"
+          "ml data frame"
         ],
         "summary": "Delete a data frame analytics job",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/delete-dfanalytics.html"
-        },
         "operationId": "ml-delete-data-frame-analytics",
         "parameters": [
           {
@@ -10959,19 +10407,16 @@
             }
           }
         },
-        "x-available-since": "7.3.0"
+        "x-state": "Added in 7.3.0"
       }
     },
     "/_ml/datafeeds/{datafeed_id}": {
       "get": {
         "tags": [
-          "ml.get_datafeeds"
+          "ml anomaly"
         ],
         "summary": "Get datafeeds configuration info",
         "description": "You can get information for multiple datafeeds in a single API request by\nusing a comma-separated list of datafeeds or a wildcard expression. You can\nget information for all datafeeds by using `_all`, by specifying `*` as the\n`<feed_id>`, or by omitting the `<feed_id>`.\nThis API returns a maximum of 10,000 datafeeds.",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/ml-get-datafeed.html"
-        },
         "operationId": "ml-get-datafeeds",
         "parameters": [
           {
@@ -10989,17 +10434,14 @@
             "$ref": "#/components/responses/ml.get_datafeeds#200"
           }
         },
-        "x-available-since": "5.5.0"
+        "x-state": "Added in 5.5.0"
       },
       "put": {
         "tags": [
-          "ml.put_datafeed"
+          "ml anomaly"
         ],
         "summary": "Create a datafeed",
         "description": "Datafeeds retrieve data from Elasticsearch for analysis by an anomaly detection job.\nYou can associate only one datafeed with each anomaly detection job.\nThe datafeed contains a query that runs at a defined interval (`frequency`).\nIf you are concerned about delayed data, you can add a delay (`query_delay') at each interval.\nWhen Elasticsearch security features are enabled, your datafeed remembers which roles the user who created it had\nat the time of creation and runs the query using those same roles. If you provide secondary authorization headers,\nthose credentials are used instead.\nYou must use Kibana, this API, or the create anomaly detection jobs API to create a datafeed. Do not add a datafeed\ndirectly to the `.ml-config` index. Do not give users `write` privileges on the `.ml-config` index.",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/ml-put-datafeed.html"
-        },
         "operationId": "ml-put-datafeed",
         "parameters": [
           {
@@ -11195,16 +10637,13 @@
             }
           }
         },
-        "x-available-since": "5.4.0"
+        "x-state": "Added in 5.4.0"
       },
       "delete": {
         "tags": [
-          "ml.delete_datafeed"
+          "ml anomaly"
         ],
         "summary": "Delete a datafeed",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/ml-delete-datafeed.html"
-        },
         "operationId": "ml-delete-datafeed",
         "parameters": [
           {
@@ -11241,19 +10680,16 @@
             }
           }
         },
-        "x-available-since": "5.4.0"
+        "x-state": "Added in 5.4.0"
       }
     },
     "/_ml/filters/{filter_id}": {
       "get": {
         "tags": [
-          "ml.get_filters"
+          "ml anomaly"
         ],
         "summary": "Get filters",
         "description": "You can get a single filter or all filters.",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/ml-get-filter.html"
-        },
         "operationId": "ml-get-filters-1",
         "parameters": [
           {
@@ -11271,17 +10707,14 @@
             "$ref": "#/components/responses/ml.get_filters#200"
           }
         },
-        "x-available-since": "5.5.0"
+        "x-state": "Added in 5.5.0"
       },
       "put": {
         "tags": [
-          "ml.put_filter"
+          "ml anomaly"
         ],
         "summary": "Create a filter",
         "description": "A filter contains a list of strings. It can be used by one or more anomaly detection jobs.\nSpecifically, filters are referenced in the `custom_rules` property of detector configuration objects.",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/ml-put-filter.html"
-        },
         "operationId": "ml-put-filter",
         "parameters": [
           {
@@ -11350,17 +10783,14 @@
             }
           }
         },
-        "x-available-since": "5.4.0"
+        "x-state": "Added in 5.4.0"
       },
       "delete": {
         "tags": [
-          "ml.delete_filter"
+          "ml anomaly"
         ],
         "summary": "Delete a filter",
         "description": "If an anomaly detection job references the filter, you cannot delete the\nfilter. You must update or delete the job before you can delete the filter.",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/ml-delete-filter.html"
-        },
         "operationId": "ml-delete-filter",
         "parameters": [
           {
@@ -11387,19 +10817,16 @@
             }
           }
         },
-        "x-available-since": "5.4.0"
+        "x-state": "Added in 5.4.0"
       }
     },
     "/_ml/anomaly_detectors/{job_id}": {
       "get": {
         "tags": [
-          "ml.get_jobs"
+          "ml anomaly"
         ],
         "summary": "Get anomaly detection jobs configuration info",
         "description": "You can get information for multiple anomaly detection jobs in a single API\nrequest by using a group name, a comma-separated list of jobs, or a wildcard\nexpression. You can get information for all anomaly detection jobs by using\n`_all`, by specifying `*` as the `<job_id>`, or by omitting the `<job_id>`.",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/ml-get-job.html"
-        },
         "operationId": "ml-get-jobs",
         "parameters": [
           {
@@ -11417,17 +10844,14 @@
             "$ref": "#/components/responses/ml.get_jobs#200"
           }
         },
-        "x-available-since": "5.5.0"
+        "x-state": "Added in 5.5.0"
       },
       "put": {
         "tags": [
-          "ml.put_job"
+          "ml anomaly"
         ],
         "summary": "Create an anomaly detection job",
         "description": "If you include a `datafeed_config`, you must have read index privileges on the source index.",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/ml-put-job.html"
-        },
         "operationId": "ml-put-job",
         "parameters": [
           {
@@ -11440,6 +10864,46 @@
               "$ref": "#/components/schemas/_types:Id"
             },
             "style": "simple"
+          },
+          {
+            "in": "query",
+            "name": "allow_no_indices",
+            "description": "If `true`, wildcard indices expressions that resolve into no concrete indices are ignored. This includes the\n`_all` string or when no indices are specified.",
+            "deprecated": false,
+            "schema": {
+              "type": "boolean"
+            },
+            "style": "form"
+          },
+          {
+            "in": "query",
+            "name": "expand_wildcards",
+            "description": "Type of index that wildcard patterns can match. If the request can target data streams, this argument determines\nwhether wildcard expressions match hidden data streams. Supports comma-separated values. Valid values are:\n\n* `all`: Match any data stream or index, including hidden ones.\n* `closed`: Match closed, non-hidden indices. Also matches any non-hidden data stream. Data streams cannot be closed.\n* `hidden`: Match hidden data streams and hidden indices. Must be combined with `open`, `closed`, or both.\n* `none`: Wildcard patterns are not accepted.\n* `open`: Match open, non-hidden indices. Also matches any non-hidden data stream.",
+            "deprecated": false,
+            "schema": {
+              "$ref": "#/components/schemas/_types:ExpandWildcards"
+            },
+            "style": "form"
+          },
+          {
+            "in": "query",
+            "name": "ignore_throttled",
+            "description": "If `true`, concrete, expanded or aliased indices are ignored when frozen.",
+            "deprecated": true,
+            "schema": {
+              "type": "boolean"
+            },
+            "style": "form"
+          },
+          {
+            "in": "query",
+            "name": "ignore_unavailable",
+            "description": "If `true`, unavailable indices (missing or closed) are ignored.",
+            "deprecated": false,
+            "schema": {
+              "type": "boolean"
+            },
+            "style": "form"
           }
         ],
         "requestBody": {
@@ -11478,6 +10942,9 @@
                     "description": "A description of the job.",
                     "type": "string"
                   },
+                  "job_id": {
+                    "$ref": "#/components/schemas/_types:Id"
+                  },
                   "groups": {
                     "description": "A list of job groups. A job can belong to no groups or many.",
                     "type": "array",
@@ -11603,17 +11070,14 @@
             }
           }
         },
-        "x-available-since": "5.4.0"
+        "x-state": "Added in 5.4.0"
       },
       "delete": {
         "tags": [
-          "ml.delete_job"
+          "ml anomaly"
         ],
         "summary": "Delete an anomaly detection job",
         "description": "All job configuration, model state and results are deleted.\nIt is not currently possible to delete multiple jobs using wildcards or a\ncomma separated list. If you delete a job that has a datafeed, the request\nfirst tries to delete the datafeed. This behavior is equivalent to calling\nthe delete datafeed API with the same timeout and force parameters as the\ndelete job request.",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/ml-delete-job.html"
-        },
         "operationId": "ml-delete-job",
         "parameters": [
           {
@@ -11670,18 +11134,15 @@
             }
           }
         },
-        "x-available-since": "5.4.0"
+        "x-state": "Added in 5.4.0"
       }
     },
     "/_ml/trained_models/{model_id}": {
       "get": {
         "tags": [
-          "ml.get_trained_models"
+          "ml trained model"
         ],
         "summary": "Get trained model configuration info",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/get-trained-models.html"
-        },
         "operationId": "ml-get-trained-models",
         "parameters": [
           {
@@ -11702,6 +11163,9 @@
           {
             "$ref": "#/components/parameters/ml.get_trained_models#include"
           },
+          {
+            "$ref": "#/components/parameters/ml.get_trained_models#include_model_definition"
+          },
           {
             "$ref": "#/components/parameters/ml.get_trained_models#size"
           },
@@ -11714,17 +11178,14 @@
             "$ref": "#/components/responses/ml.get_trained_models#200"
           }
         },
-        "x-available-since": "7.10.0"
+        "x-state": "Added in 7.10.0"
       },
       "put": {
         "tags": [
-          "ml.put_trained_model"
+          "ml trained model"
         ],
         "summary": "Create a trained model",
         "description": "Enable you to supply a trained model that is not created by data frame analytics.",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/put-trained-models.html"
-        },
         "operationId": "ml-put-trained-model",
         "parameters": [
           {
@@ -11825,17 +11286,14 @@
             }
           }
         },
-        "x-available-since": "7.10.0"
+        "x-state": "Added in 7.10.0"
       },
       "delete": {
         "tags": [
-          "ml.delete_trained_model"
+          "ml trained model"
         ],
         "summary": "Delete an unreferenced trained model",
         "description": "The request deletes a trained inference model that is not referenced by an ingest pipeline.",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/delete-trained-models.html"
-        },
         "operationId": "ml-delete-trained-model",
         "parameters": [
           {
@@ -11872,19 +11330,16 @@
             }
           }
         },
-        "x-available-since": "7.10.0"
+        "x-state": "Added in 7.10.0"
       }
     },
     "/_ml/trained_models/{model_id}/model_aliases/{model_alias}": {
       "put": {
         "tags": [
-          "ml.put_trained_model_alias"
+          "ml trained model"
         ],
         "summary": "Create or update a trained model alias",
         "description": "A trained model alias is a logical name used to reference a single trained\nmodel.\nYou can use aliases instead of trained model identifiers to make it easier to\nreference your models. For example, you can use aliases in inference\naggregations and processors.\nAn alias must be unique and refer to only a single trained model. However,\nyou can have multiple aliases for each trained model.\nIf you use this API to update an alias such that it references a different\ntrained model ID and the model uses a different type of data frame analytics,\nan error occurs. For example, this situation occurs if you have a trained\nmodel for regression analysis and a trained model for classification\nanalysis; you cannot reassign an alias from one type of trained model to\nanother.\nIf you use this API to update an alias and there are very few input fields in\ncommon between the old and new trained models for the model alias, the API\nreturns a warning.",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/put-trained-models-aliases.html"
-        },
         "operationId": "ml-put-trained-model-alias",
         "parameters": [
           {
@@ -11932,17 +11387,14 @@
             }
           }
         },
-        "x-available-since": "7.13.0"
+        "x-state": "Added in 7.13.0"
       },
       "delete": {
         "tags": [
-          "ml.delete_trained_model_alias"
+          "ml trained model"
         ],
         "summary": "Delete a trained model alias",
         "description": "This API deletes an existing model alias that refers to a trained model. If\nthe model alias is missing or refers to a model other than the one identified\nby the `model_id`, this API returns an error.",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/delete-trained-models-aliases.html"
-        },
         "operationId": "ml-delete-trained-model-alias",
         "parameters": [
           {
@@ -11980,19 +11432,16 @@
             }
           }
         },
-        "x-available-since": "7.13.0"
+        "x-state": "Added in 7.13.0"
       }
     },
     "/_ml/anomaly_detectors/_estimate_model_memory": {
       "post": {
         "tags": [
-          "ml.estimate_model_memory"
+          "ml anomaly"
         ],
         "summary": "Estimate job model memory usage",
         "description": "Makes an estimation of the memory usage for an anomaly detection job model.\nIt is based on analysis configuration details for the job and cardinality\nestimates for the fields it references.",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/ml-apis.html"
-        },
         "operationId": "ml-estimate-model-memory",
         "requestBody": {
           "content": {
@@ -12043,19 +11492,16 @@
             }
           }
         },
-        "x-available-since": "7.7.0"
+        "x-state": "Added in 7.7.0"
       }
     },
     "/_ml/data_frame/_evaluate": {
       "post": {
         "tags": [
-          "ml.evaluate_data_frame"
+          "ml data frame"
         ],
         "summary": "Evaluate data frame analytics",
         "description": "The API packages together commonly used evaluation metrics for various types\nof machine learning features. This has been designed for use on indexes\ncreated by data frame analytics. Evaluation requires both a ground truth\nfield and an analytics result field to be present.",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/evaluate-dfanalytics.html"
-        },
         "operationId": "ml-evaluate-data-frame",
         "requestBody": {
           "content": {
@@ -12105,19 +11551,16 @@
             }
           }
         },
-        "x-available-since": "7.3.0"
+        "x-state": "Added in 7.3.0"
       }
     },
     "/_ml/anomaly_detectors/{job_id}/_flush": {
       "post": {
         "tags": [
-          "ml.flush_job"
+          "ml anomaly"
         ],
         "summary": "Force buffered data to be processed",
         "description": "The flush jobs API is only applicable when sending data for analysis using\nthe post data API. Depending on the content of the buffer, then it might\nadditionally calculate new results. Both flush and close operations are\nsimilar, however the flush is more efficient if you are expecting to send\nmore data for analysis. When flushing, the job remains open and is available\nto continue analyzing data. A close operation additionally prunes and\npersists the model state to disk and the job must be opened again before\nanalyzing further data.",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/ml-flush-job.html"
-        },
         "operationId": "ml-flush-job",
         "parameters": [
           {
@@ -12233,18 +11676,15 @@
             }
           }
         },
-        "x-available-since": "5.4.0"
+        "x-state": "Added in 5.4.0"
       }
     },
     "/_ml/calendars/{calendar_id}/events": {
       "get": {
         "tags": [
-          "ml.get_calendar_events"
+          "ml anomaly"
         ],
         "summary": "Get info about events in calendars",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/ml-get-calendar-event.html"
-        },
         "operationId": "ml-get-calendar-events",
         "parameters": [
           {
@@ -12336,16 +11776,13 @@
             }
           }
         },
-        "x-available-since": "6.2.0"
+        "x-state": "Added in 6.2.0"
       },
       "post": {
         "tags": [
-          "ml.post_calendar_events"
+          "ml anomaly"
         ],
         "summary": "Add scheduled events to the calendar",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/ml-post-calendar-event.html"
-        },
         "operationId": "ml-post-calendar-events",
         "parameters": [
           {
@@ -12405,18 +11842,15 @@
             }
           }
         },
-        "x-available-since": "6.2.0"
+        "x-state": "Added in 6.2.0"
       }
     },
     "/_ml/calendars": {
       "get": {
         "tags": [
-          "ml.get_calendars"
+          "ml anomaly"
         ],
         "summary": "Get calendar configuration info",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/ml-get-calendar.html"
-        },
         "operationId": "ml-get-calendars",
         "parameters": [
           {
@@ -12434,16 +11868,13 @@
             "$ref": "#/components/responses/ml.get_calendars#200"
           }
         },
-        "x-available-since": "6.2.0"
+        "x-state": "Added in 6.2.0"
       },
       "post": {
         "tags": [
-          "ml.get_calendars"
+          "ml anomaly"
         ],
         "summary": "Get calendar configuration info",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/ml-get-calendar.html"
-        },
         "operationId": "ml-get-calendars-1",
         "parameters": [
           {
@@ -12461,19 +11892,16 @@
             "$ref": "#/components/responses/ml.get_calendars#200"
           }
         },
-        "x-available-since": "6.2.0"
+        "x-state": "Added in 6.2.0"
       }
     },
     "/_ml/data_frame/analytics": {
       "get": {
         "tags": [
-          "ml.get_data_frame_analytics"
+          "ml data frame"
         ],
         "summary": "Get data frame analytics job configuration info",
         "description": "You can get information for multiple data frame analytics jobs in a single\nAPI request by using a comma-separated list of data frame analytics jobs or a\nwildcard expression.",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/get-dfanalytics.html"
-        },
         "operationId": "ml-get-data-frame-analytics-1",
         "parameters": [
           {
@@ -12494,18 +11922,15 @@
             "$ref": "#/components/responses/ml.get_data_frame_analytics#200"
           }
         },
-        "x-available-since": "7.3.0"
+        "x-state": "Added in 7.3.0"
       }
     },
     "/_ml/data_frame/analytics/_stats": {
       "get": {
         "tags": [
-          "ml.get_data_frame_analytics_stats"
+          "ml data frame"
         ],
-        "summary": "Get data frame analytics jobs usage info",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/get-dfanalytics-stats.html"
-        },
+        "summary": "Get data frame analytics job stats",
         "operationId": "ml-get-data-frame-analytics-stats",
         "parameters": [
           {
@@ -12526,18 +11951,15 @@
             "$ref": "#/components/responses/ml.get_data_frame_analytics_stats#200"
           }
         },
-        "x-available-since": "7.3.0"
+        "x-state": "Added in 7.3.0"
       }
     },
     "/_ml/data_frame/analytics/{id}/_stats": {
       "get": {
         "tags": [
-          "ml.get_data_frame_analytics_stats"
+          "ml data frame"
         ],
-        "summary": "Get data frame analytics jobs usage info",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/get-dfanalytics-stats.html"
-        },
+        "summary": "Get data frame analytics job stats",
         "operationId": "ml-get-data-frame-analytics-stats-1",
         "parameters": [
           {
@@ -12561,19 +11983,16 @@
             "$ref": "#/components/responses/ml.get_data_frame_analytics_stats#200"
           }
         },
-        "x-available-since": "7.3.0"
+        "x-state": "Added in 7.3.0"
       }
     },
     "/_ml/datafeeds/{datafeed_id}/_stats": {
       "get": {
         "tags": [
-          "ml.get_datafeed_stats"
+          "ml anomaly"
         ],
-        "summary": "Get datafeeds usage info",
+        "summary": "Get datafeeds stats",
         "description": "You can get statistics for multiple datafeeds in a single API request by\nusing a comma-separated list of datafeeds or a wildcard expression. You can\nget statistics for all datafeeds by using `_all`, by specifying `*` as the\n`<feed_id>`, or by omitting the `<feed_id>`. If the datafeed is stopped, the\nonly information you receive is the `datafeed_id` and the `state`.\nThis API returns a maximum of 10,000 datafeeds.",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/ml-get-datafeed-stats.html"
-        },
         "operationId": "ml-get-datafeed-stats",
         "parameters": [
           {
@@ -12588,19 +12007,16 @@
             "$ref": "#/components/responses/ml.get_datafeed_stats#200"
           }
         },
-        "x-available-since": "5.5.0"
+        "x-state": "Added in 5.5.0"
       }
     },
     "/_ml/datafeeds/_stats": {
       "get": {
         "tags": [
-          "ml.get_datafeed_stats"
+          "ml anomaly"
         ],
-        "summary": "Get datafeeds usage info",
+        "summary": "Get datafeeds stats",
         "description": "You can get statistics for multiple datafeeds in a single API request by\nusing a comma-separated list of datafeeds or a wildcard expression. You can\nget statistics for all datafeeds by using `_all`, by specifying `*` as the\n`<feed_id>`, or by omitting the `<feed_id>`. If the datafeed is stopped, the\nonly information you receive is the `datafeed_id` and the `state`.\nThis API returns a maximum of 10,000 datafeeds.",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/ml-get-datafeed-stats.html"
-        },
         "operationId": "ml-get-datafeed-stats-1",
         "parameters": [
           {
@@ -12612,19 +12028,16 @@
             "$ref": "#/components/responses/ml.get_datafeed_stats#200"
           }
         },
-        "x-available-since": "5.5.0"
+        "x-state": "Added in 5.5.0"
       }
     },
     "/_ml/datafeeds": {
       "get": {
         "tags": [
-          "ml.get_datafeeds"
+          "ml anomaly"
         ],
         "summary": "Get datafeeds configuration info",
         "description": "You can get information for multiple datafeeds in a single API request by\nusing a comma-separated list of datafeeds or a wildcard expression. You can\nget information for all datafeeds by using `_all`, by specifying `*` as the\n`<feed_id>`, or by omitting the `<feed_id>`.\nThis API returns a maximum of 10,000 datafeeds.",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/ml-get-datafeed.html"
-        },
         "operationId": "ml-get-datafeeds-1",
         "parameters": [
           {
@@ -12639,19 +12052,16 @@
             "$ref": "#/components/responses/ml.get_datafeeds#200"
           }
         },
-        "x-available-since": "5.5.0"
+        "x-state": "Added in 5.5.0"
       }
     },
     "/_ml/filters": {
       "get": {
         "tags": [
-          "ml.get_filters"
+          "ml anomaly"
         ],
         "summary": "Get filters",
         "description": "You can get a single filter or all filters.",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/ml-get-filter.html"
-        },
         "operationId": "ml-get-filters",
         "parameters": [
           {
@@ -12666,18 +12076,15 @@
             "$ref": "#/components/responses/ml.get_filters#200"
           }
         },
-        "x-available-since": "5.5.0"
+        "x-state": "Added in 5.5.0"
       }
     },
     "/_ml/anomaly_detectors/_stats": {
       "get": {
         "tags": [
-          "ml.get_job_stats"
+          "ml anomaly"
         ],
-        "summary": "Get anomaly detection jobs usage info",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/ml-get-job-stats.html"
-        },
+        "summary": "Get anomaly detection job stats",
         "operationId": "ml-get-job-stats",
         "parameters": [
           {
@@ -12689,18 +12096,15 @@
             "$ref": "#/components/responses/ml.get_job_stats#200"
           }
         },
-        "x-available-since": "5.5.0"
+        "x-state": "Added in 5.5.0"
       }
     },
     "/_ml/anomaly_detectors/{job_id}/_stats": {
       "get": {
         "tags": [
-          "ml.get_job_stats"
+          "ml anomaly"
         ],
-        "summary": "Get anomaly detection jobs usage info",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/ml-get-job-stats.html"
-        },
+        "summary": "Get anomaly detection job stats",
         "operationId": "ml-get-job-stats-1",
         "parameters": [
           {
@@ -12715,19 +12119,16 @@
             "$ref": "#/components/responses/ml.get_job_stats#200"
           }
         },
-        "x-available-since": "5.5.0"
+        "x-state": "Added in 5.5.0"
       }
     },
     "/_ml/anomaly_detectors": {
       "get": {
         "tags": [
-          "ml.get_jobs"
+          "ml anomaly"
         ],
         "summary": "Get anomaly detection jobs configuration info",
         "description": "You can get information for multiple anomaly detection jobs in a single API\nrequest by using a group name, a comma-separated list of jobs, or a wildcard\nexpression. You can get information for all anomaly detection jobs by using\n`_all`, by specifying `*` as the `<job_id>`, or by omitting the `<job_id>`.",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/ml-get-job.html"
-        },
         "operationId": "ml-get-jobs-1",
         "parameters": [
           {
@@ -12742,19 +12143,16 @@
             "$ref": "#/components/responses/ml.get_jobs#200"
           }
         },
-        "x-available-since": "5.5.0"
+        "x-state": "Added in 5.5.0"
       }
     },
     "/_ml/anomaly_detectors/{job_id}/results/overall_buckets": {
       "get": {
         "tags": [
-          "ml.get_overall_buckets"
+          "ml anomaly"
         ],
         "summary": "Get overall bucket results",
         "description": "Retrievs overall bucket results that summarize the bucket results of\nmultiple anomaly detection jobs.\n\nThe `overall_score` is calculated by combining the scores of all the\nbuckets within the overall bucket span. First, the maximum\n`anomaly_score` per anomaly detection job in the overall bucket is\ncalculated. Then the `top_n` of those scores are averaged to result in\nthe `overall_score`. This means that you can fine-tune the\n`overall_score` so that it is more or less sensitive to the number of\njobs that detect an anomaly at the same time. For example, if you set\n`top_n` to `1`, the `overall_score` is the maximum bucket score in the\noverall bucket. Alternatively, if you set `top_n` to the number of jobs,\nthe `overall_score` is high only when all jobs detect anomalies in that\noverall bucket. If you set the `bucket_span` parameter (to a value\ngreater than its default), the `overall_score` is the maximum\n`overall_score` of the overall buckets that have a span equal to the\njobs' largest bucket span.",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/ml-get-overall-buckets.html"
-        },
         "operationId": "ml-get-overall-buckets",
         "parameters": [
           {
@@ -12790,17 +12188,14 @@
             "$ref": "#/components/responses/ml.get_overall_buckets#200"
           }
         },
-        "x-available-since": "6.1.0"
+        "x-state": "Added in 6.1.0"
       },
       "post": {
         "tags": [
-          "ml.get_overall_buckets"
+          "ml anomaly"
         ],
         "summary": "Get overall bucket results",
         "description": "Retrievs overall bucket results that summarize the bucket results of\nmultiple anomaly detection jobs.\n\nThe `overall_score` is calculated by combining the scores of all the\nbuckets within the overall bucket span. First, the maximum\n`anomaly_score` per anomaly detection job in the overall bucket is\ncalculated. Then the `top_n` of those scores are averaged to result in\nthe `overall_score`. This means that you can fine-tune the\n`overall_score` so that it is more or less sensitive to the number of\njobs that detect an anomaly at the same time. For example, if you set\n`top_n` to `1`, the `overall_score` is the maximum bucket score in the\noverall bucket. Alternatively, if you set `top_n` to the number of jobs,\nthe `overall_score` is high only when all jobs detect anomalies in that\noverall bucket. If you set the `bucket_span` parameter (to a value\ngreater than its default), the `overall_score` is the maximum\n`overall_score` of the overall buckets that have a span equal to the\njobs' largest bucket span.",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/ml-get-overall-buckets.html"
-        },
         "operationId": "ml-get-overall-buckets-1",
         "parameters": [
           {
@@ -12836,18 +12231,15 @@
             "$ref": "#/components/responses/ml.get_overall_buckets#200"
           }
         },
-        "x-available-since": "6.1.0"
+        "x-state": "Added in 6.1.0"
       }
     },
     "/_ml/trained_models": {
       "get": {
         "tags": [
-          "ml.get_trained_models"
+          "ml trained model"
         ],
         "summary": "Get trained model configuration info",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/get-trained-models.html"
-        },
         "operationId": "ml-get-trained-models-1",
         "parameters": [
           {
@@ -12865,6 +12257,9 @@
           {
             "$ref": "#/components/parameters/ml.get_trained_models#include"
           },
+          {
+            "$ref": "#/components/parameters/ml.get_trained_models#include_model_definition"
+          },
           {
             "$ref": "#/components/parameters/ml.get_trained_models#size"
           },
@@ -12877,19 +12272,16 @@
             "$ref": "#/components/responses/ml.get_trained_models#200"
           }
         },
-        "x-available-since": "7.10.0"
+        "x-state": "Added in 7.10.0"
       }
     },
     "/_ml/trained_models/{model_id}/_stats": {
       "get": {
         "tags": [
-          "ml.get_trained_models_stats"
+          "ml trained model"
         ],
         "summary": "Get trained models usage info",
         "description": "You can get usage information for multiple trained\nmodels in a single API request by using a comma-separated list of model IDs or a wildcard expression.",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/get-trained-models-stats.html"
-        },
         "operationId": "ml-get-trained-models-stats",
         "parameters": [
           {
@@ -12910,19 +12302,16 @@
             "$ref": "#/components/responses/ml.get_trained_models_stats#200"
           }
         },
-        "x-available-since": "7.10.0"
+        "x-state": "Added in 7.10.0"
       }
     },
     "/_ml/trained_models/_stats": {
       "get": {
         "tags": [
-          "ml.get_trained_models_stats"
+          "ml trained model"
         ],
         "summary": "Get trained models usage info",
         "description": "You can get usage information for multiple trained\nmodels in a single API request by using a comma-separated list of model IDs or a wildcard expression.",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/get-trained-models-stats.html"
-        },
         "operationId": "ml-get-trained-models-stats-1",
         "parameters": [
           {
@@ -12940,18 +12329,15 @@
             "$ref": "#/components/responses/ml.get_trained_models_stats#200"
           }
         },
-        "x-available-since": "7.10.0"
+        "x-state": "Added in 7.10.0"
       }
     },
     "/_ml/trained_models/{model_id}/_infer": {
       "post": {
         "tags": [
-          "ml.infer_trained_model"
+          "ml trained model"
         ],
         "summary": "Evaluate a trained model",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/master/infer-trained-model.html"
-        },
         "operationId": "ml-infer-trained-model",
         "parameters": [
           {
@@ -12969,18 +12355,15 @@
             "$ref": "#/components/responses/ml.infer_trained_model#200"
           }
         },
-        "x-available-since": "8.3.0"
+        "x-state": "Added in 8.3.0"
       }
     },
     "/_ml/trained_models/{model_id}/deployment/_infer": {
       "post": {
         "tags": [
-          "ml.infer_trained_model"
+          "ml trained model"
         ],
         "summary": "Evaluate a trained model",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/master/infer-trained-model.html"
-        },
         "operationId": "ml-infer-trained-model-1",
         "parameters": [
           {
@@ -12998,19 +12381,16 @@
             "$ref": "#/components/responses/ml.infer_trained_model#200"
           }
         },
-        "x-available-since": "8.3.0"
+        "x-state": "Added in 8.3.0"
       }
     },
     "/_ml/anomaly_detectors/{job_id}/_open": {
       "post": {
         "tags": [
-          "ml.open_job"
+          "ml anomaly"
         ],
         "summary": "Open anomaly detection jobs",
         "description": "An anomaly detection job must be opened to be ready to receive and analyze\ndata. It can be opened and closed multiple times throughout its lifecycle.\nWhen you open a new job, it starts with an empty model.\nWhen you open an existing job, the most recent model state is automatically\nloaded. The job is ready to resume its analysis from where it left off, once\nnew data is received.",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/ml-open-job.html"
-        },
         "operationId": "ml-open-job",
         "parameters": [
           {
@@ -13073,19 +12453,16 @@
             }
           }
         },
-        "x-available-since": "5.4.0"
+        "x-state": "Added in 5.4.0"
       }
     },
     "/_ml/data_frame/analytics/_preview": {
       "get": {
         "tags": [
-          "ml.preview_data_frame_analytics"
+          "ml data frame"
         ],
         "summary": "Preview features used by data frame analytics",
         "description": "Previews the extracted features used by a data frame analytics config.",
-        "externalDocs": {
-          "url": "http://www.elastic.co/guide/en/elasticsearch/reference/current/preview-dfanalytics.html"
-        },
         "operationId": "ml-preview-data-frame-analytics",
         "requestBody": {
           "$ref": "#/components/requestBodies/ml.preview_data_frame_analytics"
@@ -13095,17 +12472,14 @@
             "$ref": "#/components/responses/ml.preview_data_frame_analytics#200"
           }
         },
-        "x-available-since": "7.13.0"
+        "x-state": "Added in 7.13.0"
       },
       "post": {
         "tags": [
-          "ml.preview_data_frame_analytics"
+          "ml data frame"
         ],
         "summary": "Preview features used by data frame analytics",
         "description": "Previews the extracted features used by a data frame analytics config.",
-        "externalDocs": {
-          "url": "http://www.elastic.co/guide/en/elasticsearch/reference/current/preview-dfanalytics.html"
-        },
         "operationId": "ml-preview-data-frame-analytics-1",
         "requestBody": {
           "$ref": "#/components/requestBodies/ml.preview_data_frame_analytics"
@@ -13115,19 +12489,16 @@
             "$ref": "#/components/responses/ml.preview_data_frame_analytics#200"
           }
         },
-        "x-available-since": "7.13.0"
+        "x-state": "Added in 7.13.0"
       }
     },
     "/_ml/data_frame/analytics/{id}/_preview": {
       "get": {
         "tags": [
-          "ml.preview_data_frame_analytics"
+          "ml data frame"
         ],
         "summary": "Preview features used by data frame analytics",
         "description": "Previews the extracted features used by a data frame analytics config.",
-        "externalDocs": {
-          "url": "http://www.elastic.co/guide/en/elasticsearch/reference/current/preview-dfanalytics.html"
-        },
         "operationId": "ml-preview-data-frame-analytics-2",
         "parameters": [
           {
@@ -13142,17 +12513,14 @@
             "$ref": "#/components/responses/ml.preview_data_frame_analytics#200"
           }
         },
-        "x-available-since": "7.13.0"
+        "x-state": "Added in 7.13.0"
       },
       "post": {
         "tags": [
-          "ml.preview_data_frame_analytics"
+          "ml data frame"
         ],
         "summary": "Preview features used by data frame analytics",
         "description": "Previews the extracted features used by a data frame analytics config.",
-        "externalDocs": {
-          "url": "http://www.elastic.co/guide/en/elasticsearch/reference/current/preview-dfanalytics.html"
-        },
         "operationId": "ml-preview-data-frame-analytics-3",
         "parameters": [
           {
@@ -13167,19 +12535,16 @@
             "$ref": "#/components/responses/ml.preview_data_frame_analytics#200"
           }
         },
-        "x-available-since": "7.13.0"
+        "x-state": "Added in 7.13.0"
       }
     },
     "/_ml/datafeeds/{datafeed_id}/_preview": {
       "get": {
         "tags": [
-          "ml.preview_datafeed"
+          "ml anomaly"
         ],
         "summary": "Preview a datafeed",
         "description": "This API returns the first \"page\" of search results from a datafeed.\nYou can preview an existing datafeed or provide configuration details for a datafeed\nand anomaly detection job in the API. The preview shows the structure of the data\nthat will be passed to the anomaly detection engine.\nIMPORTANT: When Elasticsearch security features are enabled, the preview uses the credentials of the user that\ncalled the API. However, when the datafeed starts it uses the roles of the last user that created or updated the\ndatafeed. To get a preview that accurately reflects the behavior of the datafeed, use the appropriate credentials.\nYou can also use secondary authorization headers to supply the credentials.",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/ml-preview-datafeed.html"
-        },
         "operationId": "ml-preview-datafeed",
         "parameters": [
           {
@@ -13200,17 +12565,14 @@
             "$ref": "#/components/responses/ml.preview_datafeed#200"
           }
         },
-        "x-available-since": "5.4.0"
+        "x-state": "Added in 5.4.0"
       },
       "post": {
         "tags": [
-          "ml.preview_datafeed"
+          "ml anomaly"
         ],
         "summary": "Preview a datafeed",
         "description": "This API returns the first \"page\" of search results from a datafeed.\nYou can preview an existing datafeed or provide configuration details for a datafeed\nand anomaly detection job in the API. The preview shows the structure of the data\nthat will be passed to the anomaly detection engine.\nIMPORTANT: When Elasticsearch security features are enabled, the preview uses the credentials of the user that\ncalled the API. However, when the datafeed starts it uses the roles of the last user that created or updated the\ndatafeed. To get a preview that accurately reflects the behavior of the datafeed, use the appropriate credentials.\nYou can also use secondary authorization headers to supply the credentials.",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/ml-preview-datafeed.html"
-        },
         "operationId": "ml-preview-datafeed-1",
         "parameters": [
           {
@@ -13231,19 +12593,16 @@
             "$ref": "#/components/responses/ml.preview_datafeed#200"
           }
         },
-        "x-available-since": "5.4.0"
+        "x-state": "Added in 5.4.0"
       }
     },
     "/_ml/datafeeds/_preview": {
       "get": {
         "tags": [
-          "ml.preview_datafeed"
+          "ml anomaly"
         ],
         "summary": "Preview a datafeed",
         "description": "This API returns the first \"page\" of search results from a datafeed.\nYou can preview an existing datafeed or provide configuration details for a datafeed\nand anomaly detection job in the API. The preview shows the structure of the data\nthat will be passed to the anomaly detection engine.\nIMPORTANT: When Elasticsearch security features are enabled, the preview uses the credentials of the user that\ncalled the API. However, when the datafeed starts it uses the roles of the last user that created or updated the\ndatafeed. To get a preview that accurately reflects the behavior of the datafeed, use the appropriate credentials.\nYou can also use secondary authorization headers to supply the credentials.",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/ml-preview-datafeed.html"
-        },
         "operationId": "ml-preview-datafeed-2",
         "parameters": [
           {
@@ -13261,17 +12620,14 @@
             "$ref": "#/components/responses/ml.preview_datafeed#200"
           }
         },
-        "x-available-since": "5.4.0"
+        "x-state": "Added in 5.4.0"
       },
       "post": {
         "tags": [
-          "ml.preview_datafeed"
+          "ml anomaly"
         ],
         "summary": "Preview a datafeed",
         "description": "This API returns the first \"page\" of search results from a datafeed.\nYou can preview an existing datafeed or provide configuration details for a datafeed\nand anomaly detection job in the API. The preview shows the structure of the data\nthat will be passed to the anomaly detection engine.\nIMPORTANT: When Elasticsearch security features are enabled, the preview uses the credentials of the user that\ncalled the API. However, when the datafeed starts it uses the roles of the last user that created or updated the\ndatafeed. To get a preview that accurately reflects the behavior of the datafeed, use the appropriate credentials.\nYou can also use secondary authorization headers to supply the credentials.",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/ml-preview-datafeed.html"
-        },
         "operationId": "ml-preview-datafeed-3",
         "parameters": [
           {
@@ -13289,18 +12645,15 @@
             "$ref": "#/components/responses/ml.preview_datafeed#200"
           }
         },
-        "x-available-since": "5.4.0"
+        "x-state": "Added in 5.4.0"
       }
     },
     "/_ml/trained_models/{model_id}/definition/{part}": {
       "put": {
         "tags": [
-          "ml.put_trained_model_definition_part"
+          "ml trained model"
         ],
         "summary": "Create part of a trained model definition",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/put-trained-model-definition-part.html"
-        },
         "operationId": "ml-put-trained-model-definition-part",
         "parameters": [
           {
@@ -13367,19 +12720,16 @@
             }
           }
         },
-        "x-available-since": "8.0.0"
+        "x-state": "Added in 8.0.0"
       }
     },
     "/_ml/trained_models/{model_id}/vocabulary": {
       "put": {
         "tags": [
-          "ml.put_trained_model_vocabulary"
+          "ml trained model"
         ],
         "summary": "Create a trained model vocabulary",
         "description": "This API is supported only for natural language processing (NLP) models.\nThe vocabulary is stored in the index as described in `inference_config.*.vocabulary` of the trained model definition.",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/put-trained-model-vocabulary.html"
-        },
         "operationId": "ml-put-trained-model-vocabulary",
         "parameters": [
           {
@@ -13409,7 +12759,6 @@
                   },
                   "merges": {
                     "description": "The optional model merges if required by the tokenizer.",
-                    "x-available-since": "8.2.0",
                     "type": "array",
                     "items": {
                       "type": "string"
@@ -13417,7 +12766,6 @@
                   },
                   "scores": {
                     "description": "The optional vocabulary value scores if required by the tokenizer.",
-                    "x-available-since": "8.9.0",
                     "type": "array",
                     "items": {
                       "type": "number"
@@ -13444,19 +12792,16 @@
             }
           }
         },
-        "x-available-since": "8.0.0"
+        "x-state": "Added in 8.0.0"
       }
     },
     "/_ml/anomaly_detectors/{job_id}/_reset": {
       "post": {
         "tags": [
-          "ml.reset_job"
+          "ml anomaly"
         ],
         "summary": "Reset an anomaly detection job",
         "description": "All model state and results are deleted. The job is ready to start over as if\nit had just been created.\nIt is not currently possible to reset multiple jobs using wildcards or a\ncomma separated list.",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/ml-reset-job.html"
-        },
         "operationId": "ml-reset-job",
         "parameters": [
           {
@@ -13503,19 +12848,16 @@
             }
           }
         },
-        "x-available-since": "7.14.0"
+        "x-state": "Added in 7.14.0"
       }
     },
     "/_ml/data_frame/analytics/{id}/_start": {
       "post": {
         "tags": [
-          "ml.start_data_frame_analytics"
+          "ml data frame"
         ],
         "summary": "Start a data frame analytics job",
         "description": "A data frame analytics job can be started and stopped multiple times\nthroughout its lifecycle.\nIf the destination index does not exist, it is created automatically the\nfirst time you start the data frame analytics job. The\n`index.number_of_shards` and `index.number_of_replicas` settings for the\ndestination index are copied from the source index. If there are multiple\nsource indices, the destination index copies the highest setting values. The\nmappings for the destination index are also copied from the source indices.\nIf there are any mapping conflicts, the job fails to start.\nIf the destination index exists, it is used as is. You can therefore set up\nthe destination index in advance with custom settings and mappings.",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/start-dfanalytics.html"
-        },
         "operationId": "ml-start-data-frame-analytics",
         "parameters": [
           {
@@ -13564,19 +12906,16 @@
             }
           }
         },
-        "x-available-since": "7.3.0"
+        "x-state": "Added in 7.3.0"
       }
     },
     "/_ml/datafeeds/{datafeed_id}/_start": {
       "post": {
         "tags": [
-          "ml.start_datafeed"
+          "ml anomaly"
         ],
         "summary": "Start datafeeds",
         "description": "A datafeed must be started in order to retrieve data from Elasticsearch. A datafeed can be started and stopped\nmultiple times throughout its lifecycle.\n\nBefore you can start a datafeed, the anomaly detection job must be open. Otherwise, an error occurs.\n\nIf you restart a stopped datafeed, it continues processing input data from the next millisecond after it was stopped.\nIf new data was indexed for that exact millisecond between stopping and starting, it will be ignored.\n\nWhen Elasticsearch security features are enabled, your datafeed remembers which roles the last user to create or\nupdate it had at the time of creation or update and runs the query using those same roles. If you provided secondary\nauthorization headers when you created or updated the datafeed, those credentials are used instead.",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/ml-start-datafeed.html"
-        },
         "operationId": "ml-start-datafeed",
         "parameters": [
           {
@@ -13666,19 +13005,16 @@
             }
           }
         },
-        "x-available-since": "5.5.0"
+        "x-state": "Added in 5.5.0"
       }
     },
     "/_ml/trained_models/{model_id}/deployment/_start": {
       "post": {
         "tags": [
-          "ml.start_trained_model_deployment"
+          "ml trained model"
         ],
         "summary": "Start a trained model deployment",
         "description": "It allocates the model to every machine learning node.",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/master/start-trained-model-deployment.html"
-        },
         "operationId": "ml-start-trained-model-deployment",
         "parameters": [
           {
@@ -13783,19 +13119,16 @@
             }
           }
         },
-        "x-available-since": "8.0.0"
+        "x-state": "Added in 8.0.0"
       }
     },
     "/_ml/data_frame/analytics/{id}/_stop": {
       "post": {
         "tags": [
-          "ml.stop_data_frame_analytics"
+          "ml data frame"
         ],
         "summary": "Stop data frame analytics jobs",
         "description": "A data frame analytics job can be started and stopped multiple times\nthroughout its lifecycle.",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/stop-dfanalytics.html"
-        },
         "operationId": "ml-stop-data-frame-analytics",
         "parameters": [
           {
@@ -13860,19 +13193,16 @@
             }
           }
         },
-        "x-available-since": "7.3.0"
+        "x-state": "Added in 7.3.0"
       }
     },
     "/_ml/datafeeds/{datafeed_id}/_stop": {
       "post": {
         "tags": [
-          "ml.stop_datafeed"
+          "ml anomaly"
         ],
         "summary": "Stop datafeeds",
         "description": "A datafeed that is stopped ceases to retrieve data from Elasticsearch. A datafeed can be started and stopped\nmultiple times throughout its lifecycle.",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/ml-stop-datafeed.html"
-        },
         "operationId": "ml-stop-datafeed",
         "parameters": [
           {
@@ -13959,18 +13289,15 @@
             }
           }
         },
-        "x-available-since": "5.4.0"
+        "x-state": "Added in 5.4.0"
       }
     },
     "/_ml/trained_models/{model_id}/deployment/_stop": {
       "post": {
         "tags": [
-          "ml.stop_trained_model_deployment"
+          "ml trained model"
         ],
         "summary": "Stop a trained model deployment",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/master/stop-trained-model-deployment.html"
-        },
         "operationId": "ml-stop-trained-model-deployment",
         "parameters": [
           {
@@ -14025,18 +13352,15 @@
             }
           }
         },
-        "x-available-since": "8.0.0"
+        "x-state": "Added in 8.0.0"
       }
     },
     "/_ml/data_frame/analytics/{id}/_update": {
       "post": {
         "tags": [
-          "ml.update_data_frame_analytics"
+          "ml data frame"
         ],
         "summary": "Update a data frame analytics job",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/update-dfanalytics.html"
-        },
         "operationId": "ml-update-data-frame-analytics",
         "parameters": [
           {
@@ -14062,9 +13386,6 @@
                     "type": "string"
                   },
                   "model_memory_limit": {
-                    "externalDocs": {
-                      "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/ml-settings.html"
-                    },
                     "description": "The approximate maximum amount of memory resources that are permitted for\nanalytical processing. If your `elasticsearch.yml` file contains an\n`xpack.ml.max_model_memory_limit` setting, an error occurs when you try\nto create data frame analytics jobs that have `model_memory_limit` values\ngreater than that setting.",
                     "type": "string"
                   },
@@ -14073,9 +13394,6 @@
                     "type": "number"
                   },
                   "allow_lazy_start": {
-                    "externalDocs": {
-                      "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/ml-settings.html"
-                    },
                     "description": "Specifies whether this job can start when there is insufficient machine\nlearning node capacity for it to be immediately assigned to a node.",
                     "type": "boolean"
                   }
@@ -14146,19 +13464,16 @@
             }
           }
         },
-        "x-available-since": "7.3.0"
+        "x-state": "Added in 7.3.0"
       }
     },
     "/_ml/datafeeds/{datafeed_id}/_update": {
       "post": {
         "tags": [
-          "ml.update_datafeed"
+          "ml anomaly"
         ],
         "summary": "Update a datafeed",
         "description": "You must stop and start the datafeed for the changes to be applied.\nWhen Elasticsearch security features are enabled, your datafeed remembers which roles the user who updated it had at\nthe time of the update and runs the query using those same roles. If you provide secondary authorization headers,\nthose credentials are used instead.",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/ml-update-datafeed.html"
-        },
         "operationId": "ml-update-datafeed",
         "parameters": [
           {
@@ -14355,19 +13670,16 @@
             }
           }
         },
-        "x-available-since": "6.4.0"
+        "x-state": "Added in 6.4.0"
       }
     },
     "/_ml/filters/{filter_id}/_update": {
       "post": {
         "tags": [
-          "ml.update_filter"
+          "ml anomaly"
         ],
         "summary": "Update a filter",
         "description": "Updates the description of a filter, adds items, or removes items from the list.",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/ml-update-filter.html"
-        },
         "operationId": "ml-update-filter",
         "parameters": [
           {
@@ -14443,19 +13755,16 @@
             }
           }
         },
-        "x-available-since": "6.4.0"
+        "x-state": "Added in 6.4.0"
       }
     },
     "/_ml/anomaly_detectors/{job_id}/_update": {
       "post": {
         "tags": [
-          "ml.update_job"
+          "ml anomaly"
         ],
         "summary": "Update an anomaly detection job",
         "description": "Updates certain properties of an anomaly detection job.",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/ml-update-job.html"
-        },
         "operationId": "ml-update-job",
         "parameters": [
           {
@@ -14477,9 +13786,6 @@
                 "type": "object",
                 "properties": {
                   "allow_lazy_open": {
-                    "externalDocs": {
-                      "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/ml-settings.html"
-                    },
                     "description": "Advanced configuration option. Specifies whether this job can open when\nthere is insufficient machine learning node capacity for it to be\nimmediately assigned to a node. If `false` and a machine learning node\nwith capacity to run the job cannot immediately be found, the open\nanomaly detection jobs API returns an error. However, this is also\nsubject to the cluster-wide `xpack.ml.max_lazy_ml_nodes` setting. If this\noption is set to `true`, the open anomaly detection jobs API does not\nreturn an error and the job waits in the opening state until sufficient\nmachine learning node capacity is available.",
                     "type": "boolean"
                   },
@@ -14513,16 +13819,10 @@
                     "$ref": "#/components/schemas/_types:Duration"
                   },
                   "daily_model_snapshot_retention_after_days": {
-                    "externalDocs": {
-                      "url": "https://www.elastic.co/guide/en/machine-learning/current/ml-ad-run-jobs.html#ml-ad-model-snapshots"
-                    },
                     "description": "Advanced configuration option, which affects the automatic removal of old\nmodel snapshots for this job. It specifies a period of time (in days)\nafter which only the first snapshot per day is retained. This period is\nrelative to the timestamp of the most recent snapshot for this job. Valid\nvalues range from 0 to `model_snapshot_retention_days`. For jobs created\nbefore version 7.8.0, the default value matches\n`model_snapshot_retention_days`.",
                     "type": "number"
                   },
                   "model_snapshot_retention_days": {
-                    "externalDocs": {
-                      "url": "https://www.elastic.co/guide/en/machine-learning/current/ml-ad-run-jobs.html#ml-ad-model-snapshots"
-                    },
                     "description": "Advanced configuration option, which affects the automatic removal of old\nmodel snapshots for this job. It specifies the maximum period of time (in\ndays) that snapshots are retained. This period is relative to the\ntimestamp of the most recent snapshot for this job.",
                     "type": "number"
                   },
@@ -14545,7 +13845,7 @@
                     "description": "An array of detector update objects.",
                     "type": "array",
                     "items": {
-                      "$ref": "#/components/schemas/ml._types:Detector"
+                      "$ref": "#/components/schemas/ml._types:DetectorUpdate"
                     }
                   },
                   "per_partition_categorization": {
@@ -14653,18 +13953,15 @@
             }
           }
         },
-        "x-available-since": "5.5.0"
+        "x-state": "Added in 5.5.0"
       }
     },
     "/_ml/trained_models/{model_id}/deployment/_update": {
       "post": {
         "tags": [
-          "ml.update_trained_model_deployment"
+          "ml trained model"
         ],
         "summary": "Update a trained model deployment",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/update-trained-model-deployment.html"
-        },
         "operationId": "ml-update-trained-model-deployment",
         "parameters": [
           {
@@ -14725,18 +14022,16 @@
           }
         },
         "x-beta": true,
-        "x-available-since": "8.6.0"
+        "x-state": "Added in 8.6.0"
       }
     },
     "/_msearch": {
       "get": {
         "tags": [
-          "msearch"
+          "search"
         ],
-        "summary": "Allows to execute several search operations in one request",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/master/search-multi-search.html"
-        },
+        "summary": "Run multiple searches",
+        "description": "The format of the request is similar to the bulk API format and makes use of the newline delimited JSON (NDJSON) format.\nThe structure is as follows:\n\n```\nheader\\n\nbody\\n\nheader\\n\nbody\\n\n```\n\nThis structure is specifically optimized to reduce parsing if a specific search ends up redirected to another node.\n\nIMPORTANT: The final line of data must end with a newline character `\\n`.\nEach newline character may be preceded by a carriage return `\\r`.\nWhen sending requests to this endpoint the `Content-Type` header should be set to `application/x-ndjson`.",
         "operationId": "msearch",
         "parameters": [
           {
@@ -14787,16 +14082,14 @@
             "$ref": "#/components/responses/msearch#200"
           }
         },
-        "x-available-since": "1.3.0"
+        "x-state": "Added in 1.3.0"
       },
       "post": {
         "tags": [
-          "msearch"
+          "search"
         ],
-        "summary": "Allows to execute several search operations in one request",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/master/search-multi-search.html"
-        },
+        "summary": "Run multiple searches",
+        "description": "The format of the request is similar to the bulk API format and makes use of the newline delimited JSON (NDJSON) format.\nThe structure is as follows:\n\n```\nheader\\n\nbody\\n\nheader\\n\nbody\\n\n```\n\nThis structure is specifically optimized to reduce parsing if a specific search ends up redirected to another node.\n\nIMPORTANT: The final line of data must end with a newline character `\\n`.\nEach newline character may be preceded by a carriage return `\\r`.\nWhen sending requests to this endpoint the `Content-Type` header should be set to `application/x-ndjson`.",
         "operationId": "msearch-1",
         "parameters": [
           {
@@ -14847,18 +14140,16 @@
             "$ref": "#/components/responses/msearch#200"
           }
         },
-        "x-available-since": "1.3.0"
+        "x-state": "Added in 1.3.0"
       }
     },
     "/{index}/_msearch": {
       "get": {
         "tags": [
-          "msearch"
+          "search"
         ],
-        "summary": "Allows to execute several search operations in one request",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/master/search-multi-search.html"
-        },
+        "summary": "Run multiple searches",
+        "description": "The format of the request is similar to the bulk API format and makes use of the newline delimited JSON (NDJSON) format.\nThe structure is as follows:\n\n```\nheader\\n\nbody\\n\nheader\\n\nbody\\n\n```\n\nThis structure is specifically optimized to reduce parsing if a specific search ends up redirected to another node.\n\nIMPORTANT: The final line of data must end with a newline character `\\n`.\nEach newline character may be preceded by a carriage return `\\r`.\nWhen sending requests to this endpoint the `Content-Type` header should be set to `application/x-ndjson`.",
         "operationId": "msearch-2",
         "parameters": [
           {
@@ -14912,16 +14203,14 @@
             "$ref": "#/components/responses/msearch#200"
           }
         },
-        "x-available-since": "1.3.0"
+        "x-state": "Added in 1.3.0"
       },
       "post": {
         "tags": [
-          "msearch"
+          "search"
         ],
-        "summary": "Allows to execute several search operations in one request",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/master/search-multi-search.html"
-        },
+        "summary": "Run multiple searches",
+        "description": "The format of the request is similar to the bulk API format and makes use of the newline delimited JSON (NDJSON) format.\nThe structure is as follows:\n\n```\nheader\\n\nbody\\n\nheader\\n\nbody\\n\n```\n\nThis structure is specifically optimized to reduce parsing if a specific search ends up redirected to another node.\n\nIMPORTANT: The final line of data must end with a newline character `\\n`.\nEach newline character may be preceded by a carriage return `\\r`.\nWhen sending requests to this endpoint the `Content-Type` header should be set to `application/x-ndjson`.",
         "operationId": "msearch-3",
         "parameters": [
           {
@@ -14975,17 +14264,17 @@
             "$ref": "#/components/responses/msearch#200"
           }
         },
-        "x-available-since": "1.3.0"
+        "x-state": "Added in 1.3.0"
       }
     },
     "/_msearch/template": {
       "get": {
         "tags": [
-          "msearch_template"
+          "search"
         ],
-        "summary": "Runs multiple templated searches with a single request",
+        "summary": "Run multiple templated searches",
         "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/search-multi-search.html"
+          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/search-template.html"
         },
         "operationId": "msearch-template",
         "parameters": [
@@ -15013,15 +14302,15 @@
             "$ref": "#/components/responses/msearch_template#200"
           }
         },
-        "x-available-since": "5.0.0"
+        "x-state": "Added in 5.0.0"
       },
       "post": {
         "tags": [
-          "msearch_template"
+          "search"
         ],
-        "summary": "Runs multiple templated searches with a single request",
+        "summary": "Run multiple templated searches",
         "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/search-multi-search.html"
+          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/search-template.html"
         },
         "operationId": "msearch-template-1",
         "parameters": [
@@ -15049,17 +14338,17 @@
             "$ref": "#/components/responses/msearch_template#200"
           }
         },
-        "x-available-since": "5.0.0"
+        "x-state": "Added in 5.0.0"
       }
     },
     "/{index}/_msearch/template": {
       "get": {
         "tags": [
-          "msearch_template"
+          "search"
         ],
-        "summary": "Runs multiple templated searches with a single request",
+        "summary": "Run multiple templated searches",
         "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/search-multi-search.html"
+          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/search-template.html"
         },
         "operationId": "msearch-template-2",
         "parameters": [
@@ -15090,15 +14379,15 @@
             "$ref": "#/components/responses/msearch_template#200"
           }
         },
-        "x-available-since": "5.0.0"
+        "x-state": "Added in 5.0.0"
       },
       "post": {
         "tags": [
-          "msearch_template"
+          "search"
         ],
-        "summary": "Runs multiple templated searches with a single request",
+        "summary": "Run multiple templated searches",
         "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/search-multi-search.html"
+          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/search-template.html"
         },
         "operationId": "msearch-template-3",
         "parameters": [
@@ -15129,18 +14418,16 @@
             "$ref": "#/components/responses/msearch_template#200"
           }
         },
-        "x-available-since": "5.0.0"
+        "x-state": "Added in 5.0.0"
       }
     },
     "/_mtermvectors": {
       "get": {
         "tags": [
-          "mtermvectors"
+          "document"
         ],
-        "summary": "Returns multiple termvectors in one request",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/master/docs-multi-termvectors.html"
-        },
+        "summary": "Get multiple term vectors",
+        "description": "You can specify existing documents by index and ID or provide artificial documents in the body of the request.\nYou can specify the index in the request body or request URI.\nThe response contains a `docs` array with all the fetched termvectors.\nEach element has the structure provided by the termvectors API.",
         "operationId": "mtermvectors",
         "parameters": [
           {
@@ -15191,12 +14478,10 @@
       },
       "post": {
         "tags": [
-          "mtermvectors"
+          "document"
         ],
-        "summary": "Returns multiple termvectors in one request",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/master/docs-multi-termvectors.html"
-        },
+        "summary": "Get multiple term vectors",
+        "description": "You can specify existing documents by index and ID or provide artificial documents in the body of the request.\nYou can specify the index in the request body or request URI.\nThe response contains a `docs` array with all the fetched termvectors.\nEach element has the structure provided by the termvectors API.",
         "operationId": "mtermvectors-1",
         "parameters": [
           {
@@ -15249,12 +14534,10 @@
     "/{index}/_mtermvectors": {
       "get": {
         "tags": [
-          "mtermvectors"
+          "document"
         ],
-        "summary": "Returns multiple termvectors in one request",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/master/docs-multi-termvectors.html"
-        },
+        "summary": "Get multiple term vectors",
+        "description": "You can specify existing documents by index and ID or provide artificial documents in the body of the request.\nYou can specify the index in the request body or request URI.\nThe response contains a `docs` array with all the fetched termvectors.\nEach element has the structure provided by the termvectors API.",
         "operationId": "mtermvectors-2",
         "parameters": [
           {
@@ -15308,12 +14591,10 @@
       },
       "post": {
         "tags": [
-          "mtermvectors"
+          "document"
         ],
-        "summary": "Returns multiple termvectors in one request",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/master/docs-multi-termvectors.html"
-        },
+        "summary": "Get multiple term vectors",
+        "description": "You can specify existing documents by index and ID or provide artificial documents in the body of the request.\nYou can specify the index in the request body or request URI.\nThe response contains a `docs` array with all the fetched termvectors.\nEach element has the structure provided by the termvectors API.",
         "operationId": "mtermvectors-3",
         "parameters": [
           {
@@ -15369,13 +14650,10 @@
     "/{index}/_pit": {
       "post": {
         "tags": [
-          "open_point_in_time"
+          "search"
         ],
-        "summary": "A search request by default executes against the most recent visible data of the target indices,\n",
-        "description": "which is called point in time. Elasticsearch pit (point in time) is a lightweight view into the\nstate of the data as it existed when initiated. In some cases, it’s preferred to perform multiple\nsearch requests using the same point in time. For example, if refreshes happen between\n`search_after` requests, then the results of those requests might not be consistent as changes happening\nbetween searches are only visible to the more recent point in time.",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/point-in-time-api.html"
-        },
+        "summary": "Open a point in time",
+        "description": "A search request by default runs against the most recent visible data of the target indices,\nwhich is called point in time. Elasticsearch pit (point in time) is a lightweight view into the\nstate of the data as it existed when initiated. In some cases, it’s preferred to perform multiple\nsearch requests using the same point in time. For example, if refreshes happen between\n`search_after` requests, then the results of those requests might not be consistent as changes happening\nbetween searches are only visible to the more recent point in time.\n\nA point in time must be opened explicitly before being used in search requests.\nThe `keep_alive` parameter tells Elasticsearch how long it should persist.",
         "operationId": "open-point-in-time",
         "parameters": [
           {
@@ -15439,6 +14717,16 @@
               "$ref": "#/components/schemas/_types:ExpandWildcards"
             },
             "style": "form"
+          },
+          {
+            "in": "query",
+            "name": "allow_partial_search_results",
+            "description": "If `false`, creating a point in time request when a shard is missing or unavailable will throw an exception.\nIf `true`, the point in time will contain all the shards that are available at the time of the request.",
+            "deprecated": false,
+            "schema": {
+              "type": "boolean"
+            },
+            "style": "form"
           }
         ],
         "requestBody": {
@@ -15479,19 +14767,16 @@
             }
           }
         },
-        "x-available-since": "7.10.0"
+        "x-state": "Added in 7.10.0"
       }
     },
     "/_scripts/{id}/{context}": {
       "put": {
         "tags": [
-          "put_script"
+          "script"
         ],
         "summary": "Create or update a script or search template",
         "description": "Creates or updates a stored script or search template.",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/master/modules-scripting.html"
-        },
         "operationId": "put-script-2",
         "parameters": [
           {
@@ -15518,13 +14803,10 @@
       },
       "post": {
         "tags": [
-          "put_script"
+          "script"
         ],
         "summary": "Create or update a script or search template",
         "description": "Creates or updates a stored script or search template.",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/master/modules-scripting.html"
-        },
         "operationId": "put-script-3",
         "parameters": [
           {
@@ -15553,11 +14835,12 @@
     "/_query_rules/{ruleset_id}/_rule/{rule_id}": {
       "get": {
         "tags": [
-          "query_rules.get_rule"
+          "query_rules"
         ],
-        "summary": "Returns the details about a query rule within a query ruleset",
+        "summary": "Get a query rule",
+        "description": "Get details about a query rule within a query ruleset.",
         "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/master/get-query-rule.html"
+          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/search-using-query-rules.html"
         },
         "operationId": "query-rules-get-rule",
         "parameters": [
@@ -15596,16 +14879,14 @@
             }
           }
         },
-        "x-available-since": "8.15.0"
+        "x-state": "Added in 8.15.0"
       },
       "put": {
         "tags": [
-          "query_rules.put_rule"
+          "query_rules"
         ],
-        "summary": "Creates or updates a query rule within a query ruleset",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/master/put-query-rule.html"
-        },
+        "summary": "Create or update a query rule",
+        "description": "Create or update a query rule within a query ruleset.",
         "operationId": "query-rules-put-rule",
         "parameters": [
           {
@@ -15690,16 +14971,14 @@
             }
           }
         },
-        "x-available-since": "8.15.0"
+        "x-state": "Added in 8.15.0"
       },
       "delete": {
         "tags": [
-          "query_rules.delete_rule"
+          "query_rules"
         ],
-        "summary": "Deletes a query rule within a query ruleset",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/master/delete-query-rule.html"
-        },
+        "summary": "Delete a query rule",
+        "description": "Delete a query rule within a query ruleset.",
         "operationId": "query-rules-delete-rule",
         "parameters": [
           {
@@ -15737,18 +15016,16 @@
             }
           }
         },
-        "x-available-since": "8.15.0"
+        "x-state": "Added in 8.15.0"
       }
     },
     "/_query_rules/{ruleset_id}": {
       "get": {
         "tags": [
-          "query_rules.get_ruleset"
+          "query_rules"
         ],
-        "summary": "Returns the details about a query ruleset",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/master/get-query-ruleset.html"
-        },
+        "summary": "Get a query ruleset",
+        "description": "Get details about a query ruleset.",
         "operationId": "query-rules-get-ruleset",
         "parameters": [
           {
@@ -15775,15 +15052,15 @@
             }
           }
         },
-        "x-available-since": "8.10.0"
+        "x-state": "Added in 8.10.0"
       },
       "put": {
         "tags": [
-          "query_rules.put_ruleset"
+          "query_rules"
         ],
-        "summary": "Creates or updates a query ruleset",
+        "summary": "Create or update a query ruleset",
         "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/master/put-query-ruleset.html"
+          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/search-using-query-rules.html"
         },
         "operationId": "query-rules-put-ruleset",
         "parameters": [
@@ -15847,16 +15124,13 @@
             }
           }
         },
-        "x-available-since": "8.10.0"
+        "x-state": "Added in 8.10.0"
       },
       "delete": {
         "tags": [
-          "query_rules.delete_ruleset"
+          "query_rules"
         ],
-        "summary": "Deletes a query ruleset",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/master/delete-query-ruleset.html"
-        },
+        "summary": "Delete a query ruleset",
         "operationId": "query-rules-delete-ruleset",
         "parameters": [
           {
@@ -15883,18 +15157,16 @@
             }
           }
         },
-        "x-available-since": "8.10.0"
+        "x-state": "Added in 8.10.0"
       }
     },
     "/_query_rules": {
       "get": {
         "tags": [
-          "query_rules.list_rulesets"
+          "query_rules"
         ],
-        "summary": "Returns summarized information about existing query rulesets",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/master/list-query-rulesets.html"
-        },
+        "summary": "Get all query rulesets",
+        "description": "Get summarized information about the query rulesets.",
         "operationId": "query-rules-list-rulesets",
         "parameters": [
           {
@@ -15945,18 +15217,88 @@
             }
           }
         },
-        "x-available-since": "8.10.0"
+        "x-state": "Added in 8.10.0"
+      }
+    },
+    "/_query_rules/{ruleset_id}/_test": {
+      "post": {
+        "tags": [
+          "query_rules"
+        ],
+        "summary": "Test a query ruleset",
+        "description": "Evaluate match criteria against a query ruleset to identify the rules that would match that criteria.",
+        "operationId": "query-rules-test",
+        "parameters": [
+          {
+            "in": "path",
+            "name": "ruleset_id",
+            "description": "The unique identifier of the query ruleset to be created or updated",
+            "required": true,
+            "deprecated": false,
+            "schema": {
+              "$ref": "#/components/schemas/_types:Id"
+            },
+            "style": "simple"
+          }
+        ],
+        "requestBody": {
+          "content": {
+            "application/json": {
+              "schema": {
+                "type": "object",
+                "properties": {
+                  "match_criteria": {
+                    "type": "object",
+                    "additionalProperties": {
+                      "type": "object"
+                    }
+                  }
+                },
+                "required": [
+                  "match_criteria"
+                ]
+              }
+            }
+          },
+          "required": true
+        },
+        "responses": {
+          "200": {
+            "description": "",
+            "content": {
+              "application/json": {
+                "schema": {
+                  "type": "object",
+                  "properties": {
+                    "total_matched_rules": {
+                      "type": "number"
+                    },
+                    "matched_rules": {
+                      "type": "array",
+                      "items": {
+                        "$ref": "#/components/schemas/query_rules.test:QueryRulesetMatchedRule"
+                      }
+                    }
+                  },
+                  "required": [
+                    "total_matched_rules",
+                    "matched_rules"
+                  ]
+                }
+              }
+            }
+          }
+        },
+        "x-state": "Added in 8.10.0"
       }
     },
     "/_rank_eval": {
       "get": {
         "tags": [
-          "rank_eval"
+          "search"
         ],
-        "summary": "Enables you to evaluate the quality of ranked search results over a set of typical search queries",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/master/search-rank-eval.html"
-        },
+        "summary": "Evaluate ranked search results",
+        "description": "Evaluate the quality of ranked search results over a set of typical search queries.",
         "operationId": "rank-eval",
         "parameters": [
           {
@@ -15980,16 +15322,14 @@
             "$ref": "#/components/responses/rank_eval#200"
           }
         },
-        "x-available-since": "6.2.0"
+        "x-state": "Added in 6.2.0"
       },
       "post": {
         "tags": [
-          "rank_eval"
+          "search"
         ],
-        "summary": "Enables you to evaluate the quality of ranked search results over a set of typical search queries",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/master/search-rank-eval.html"
-        },
+        "summary": "Evaluate ranked search results",
+        "description": "Evaluate the quality of ranked search results over a set of typical search queries.",
         "operationId": "rank-eval-1",
         "parameters": [
           {
@@ -16013,18 +15353,16 @@
             "$ref": "#/components/responses/rank_eval#200"
           }
         },
-        "x-available-since": "6.2.0"
+        "x-state": "Added in 6.2.0"
       }
     },
     "/{index}/_rank_eval": {
       "get": {
         "tags": [
-          "rank_eval"
+          "search"
         ],
-        "summary": "Enables you to evaluate the quality of ranked search results over a set of typical search queries",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/master/search-rank-eval.html"
-        },
+        "summary": "Evaluate ranked search results",
+        "description": "Evaluate the quality of ranked search results over a set of typical search queries.",
         "operationId": "rank-eval-2",
         "parameters": [
           {
@@ -16051,16 +15389,14 @@
             "$ref": "#/components/responses/rank_eval#200"
           }
         },
-        "x-available-since": "6.2.0"
+        "x-state": "Added in 6.2.0"
       },
       "post": {
         "tags": [
-          "rank_eval"
+          "search"
         ],
-        "summary": "Enables you to evaluate the quality of ranked search results over a set of typical search queries",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/master/search-rank-eval.html"
-        },
+        "summary": "Evaluate ranked search results",
+        "description": "Evaluate the quality of ranked search results over a set of typical search queries.",
         "operationId": "rank-eval-3",
         "parameters": [
           {
@@ -16087,19 +15423,16 @@
             "$ref": "#/components/responses/rank_eval#200"
           }
         },
-        "x-available-since": "6.2.0"
+        "x-state": "Added in 6.2.0"
       }
     },
     "/_reindex": {
       "post": {
         "tags": [
-          "reindex"
+          "document"
         ],
         "summary": "Reindex documents",
         "description": "Copies documents from a source to a destination. The source can be any existing index, alias, or data stream. The destination must differ from the source. For example, you cannot reindex a data stream into itself.",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/master/docs-reindex.html"
-        },
         "operationId": "reindex",
         "parameters": [
           {
@@ -16283,18 +15616,16 @@
             }
           }
         },
-        "x-available-since": "2.3.0"
+        "x-state": "Added in 2.3.0"
       }
     },
     "/_render/template": {
       "get": {
         "tags": [
-          "render_search_template"
+          "search"
         ],
-        "summary": "Renders a search template as a search request body",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/render-search-template-api.html"
-        },
+        "summary": "Render a search template",
+        "description": "Render a search template as a search request body.",
         "operationId": "render-search-template",
         "requestBody": {
           "$ref": "#/components/requestBodies/render_search_template"
@@ -16307,12 +15638,10 @@
       },
       "post": {
         "tags": [
-          "render_search_template"
+          "search"
         ],
-        "summary": "Renders a search template as a search request body",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/render-search-template-api.html"
-        },
+        "summary": "Render a search template",
+        "description": "Render a search template as a search request body.",
         "operationId": "render-search-template-1",
         "requestBody": {
           "$ref": "#/components/requestBodies/render_search_template"
@@ -16327,12 +15656,10 @@
     "/_render/template/{id}": {
       "get": {
         "tags": [
-          "render_search_template"
+          "search"
         ],
-        "summary": "Renders a search template as a search request body",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/render-search-template-api.html"
-        },
+        "summary": "Render a search template",
+        "description": "Render a search template as a search request body.",
         "operationId": "render-search-template-2",
         "parameters": [
           {
@@ -16350,12 +15677,10 @@
       },
       "post": {
         "tags": [
-          "render_search_template"
+          "search"
         ],
-        "summary": "Renders a search template as a search request body",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/render-search-template-api.html"
-        },
+        "summary": "Render a search template",
+        "description": "Render a search template as a search request body.",
         "operationId": "render-search-template-3",
         "parameters": [
           {
@@ -16375,13 +15700,10 @@
     "/_scripts/painless/_execute": {
       "get": {
         "tags": [
-          "scripts_painless_execute"
+          "script"
         ],
         "summary": "Run a script",
         "description": "Runs a script and returns a result.",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/painless/master/painless-execute-api.html"
-        },
         "operationId": "scripts-painless-execute",
         "requestBody": {
           "$ref": "#/components/requestBodies/scripts_painless_execute"
@@ -16391,18 +15713,14 @@
             "$ref": "#/components/responses/scripts_painless_execute#200"
           }
         },
-        "x-technical-preview": true,
-        "x-available-since": "6.3.0"
+        "x-state": "Technical preview"
       },
       "post": {
         "tags": [
-          "scripts_painless_execute"
+          "script"
         ],
         "summary": "Run a script",
         "description": "Runs a script and returns a result.",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/painless/master/painless-execute-api.html"
-        },
         "operationId": "scripts-painless-execute-1",
         "requestBody": {
           "$ref": "#/components/requestBodies/scripts_painless_execute"
@@ -16412,8 +15730,7 @@
             "$ref": "#/components/responses/scripts_painless_execute#200"
           }
         },
-        "x-technical-preview": true,
-        "x-available-since": "6.3.0"
+        "x-state": "Technical preview"
       }
     },
     "/_search": {
@@ -16421,11 +15738,8 @@
         "tags": [
           "search"
         ],
-        "summary": "Returns search hits that match the query defined in the request",
-        "description": "You can provide search queries using the `q` query string parameter or the request body.\nIf both are specified, only the query parameter is used.",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/master/search-search.html"
-        },
+        "summary": "Run a search",
+        "description": "Get search hits that match the query defined in the request.\nYou can provide search queries using the `q` query string parameter or the request body.\nIf both are specified, only the query parameter is used.",
         "operationId": "search",
         "parameters": [
           {
@@ -16574,11 +15888,8 @@
         "tags": [
           "search"
         ],
-        "summary": "Returns search hits that match the query defined in the request",
-        "description": "You can provide search queries using the `q` query string parameter or the request body.\nIf both are specified, only the query parameter is used.",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/master/search-search.html"
-        },
+        "summary": "Run a search",
+        "description": "Get search hits that match the query defined in the request.\nYou can provide search queries using the `q` query string parameter or the request body.\nIf both are specified, only the query parameter is used.",
         "operationId": "search-1",
         "parameters": [
           {
@@ -16729,11 +16040,8 @@
         "tags": [
           "search"
         ],
-        "summary": "Returns search hits that match the query defined in the request",
-        "description": "You can provide search queries using the `q` query string parameter or the request body.\nIf both are specified, only the query parameter is used.",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/master/search-search.html"
-        },
+        "summary": "Run a search",
+        "description": "Get search hits that match the query defined in the request.\nYou can provide search queries using the `q` query string parameter or the request body.\nIf both are specified, only the query parameter is used.",
         "operationId": "search-2",
         "parameters": [
           {
@@ -16885,11 +16193,8 @@
         "tags": [
           "search"
         ],
-        "summary": "Returns search hits that match the query defined in the request",
-        "description": "You can provide search queries using the `q` query string parameter or the request body.\nIf both are specified, only the query parameter is used.",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/master/search-search.html"
-        },
+        "summary": "Run a search",
+        "description": "Get search hits that match the query defined in the request.\nYou can provide search queries using the `q` query string parameter or the request body.\nIf both are specified, only the query parameter is used.",
         "operationId": "search-3",
         "parameters": [
           {
@@ -17041,12 +16346,9 @@
     "/_application/search_application/{name}": {
       "get": {
         "tags": [
-          "search_application.get"
+          "search_application"
         ],
-        "summary": "Returns the details about a search application",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/master/get-search-application.html"
-        },
+        "summary": "Get search application details",
         "operationId": "search-application-get",
         "parameters": [
           {
@@ -17073,17 +16375,13 @@
             }
           }
         },
-        "x-beta": true,
-        "x-available-since": "8.8.0"
+        "x-beta": true
       },
       "put": {
         "tags": [
-          "search_application.put"
+          "search_application"
         ],
-        "summary": "Creates or updates a search application",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/master/put-search-application.html"
-        },
+        "summary": "Create or update a search application",
         "operationId": "search-application-put",
         "parameters": [
           {
@@ -17138,17 +16436,14 @@
             }
           }
         },
-        "x-beta": true,
-        "x-available-since": "8.8.0"
+        "x-beta": true
       },
       "delete": {
         "tags": [
-          "search_application.delete"
+          "search_application"
         ],
-        "summary": "Deletes a search application",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/master/delete-search-application.html"
-        },
+        "summary": "Delete a search application",
+        "description": "Remove a search application and its associated alias. Indices attached to the search application are not removed.",
         "operationId": "search-application-delete",
         "parameters": [
           {
@@ -17175,19 +16470,15 @@
             }
           }
         },
-        "x-beta": true,
-        "x-available-since": "8.8.0"
+        "x-beta": true
       }
     },
     "/_application/analytics/{name}": {
       "get": {
         "tags": [
-          "search_application.get_behavioral_analytics"
+          "analytics"
         ],
-        "summary": "Returns the existing behavioral analytics collections",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/master/list-analytics-collection.html"
-        },
+        "summary": "Get behavioral analytics collections",
         "operationId": "search-application-get-behavioral-analytics-1",
         "parameters": [
           {
@@ -17199,17 +16490,13 @@
             "$ref": "#/components/responses/search_application.get_behavioral_analytics#200"
           }
         },
-        "x-technical-preview": true,
-        "x-available-since": "8.8.0"
+        "x-state": "Technical preview"
       },
       "put": {
         "tags": [
-          "search_application.put_behavioral_analytics"
+          "analytics"
         ],
-        "summary": "Creates a behavioral analytics collection",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/master/put-analytics-collection.html"
-        },
+        "summary": "Create a behavioral analytics collection",
         "operationId": "search-application-put-behavioral-analytics",
         "parameters": [
           {
@@ -17236,17 +16523,14 @@
             }
           }
         },
-        "x-technical-preview": true,
-        "x-available-since": "8.8.0"
+        "x-state": "Technical preview"
       },
       "delete": {
         "tags": [
-          "search_application.delete_behavioral_analytics"
+          "analytics"
         ],
         "summary": "Delete a behavioral analytics collection",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/master/delete-analytics-collection.html"
-        },
+        "description": "The associated data stream is also deleted.",
         "operationId": "search-application-delete-behavioral-analytics",
         "parameters": [
           {
@@ -17273,38 +16557,30 @@
             }
           }
         },
-        "x-technical-preview": true,
-        "x-available-since": "8.8.0"
+        "x-state": "Technical preview"
       }
     },
     "/_application/analytics": {
       "get": {
         "tags": [
-          "search_application.get_behavioral_analytics"
+          "analytics"
         ],
-        "summary": "Returns the existing behavioral analytics collections",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/master/list-analytics-collection.html"
-        },
+        "summary": "Get behavioral analytics collections",
         "operationId": "search-application-get-behavioral-analytics",
         "responses": {
           "200": {
             "$ref": "#/components/responses/search_application.get_behavioral_analytics#200"
           }
         },
-        "x-technical-preview": true,
-        "x-available-since": "8.8.0"
+        "x-state": "Technical preview"
       }
     },
     "/_application/search_application": {
       "get": {
         "tags": [
-          "search_application.list"
+          "search_application"
         ],
         "summary": "Returns the existing search applications",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/master/list-search-applications.html"
-        },
         "operationId": "search-application-list",
         "parameters": [
           {
@@ -17365,19 +16641,16 @@
             }
           }
         },
-        "x-beta": true,
-        "x-available-since": "8.8.0"
+        "x-beta": true
       }
     },
     "/_application/search_application/{name}/_search": {
       "get": {
         "tags": [
-          "search_application.search"
+          "search_application"
         ],
-        "summary": "Perform a search against a search application",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/master/search-application-search.html"
-        },
+        "summary": "Run a search application search",
+        "description": "Generate and run an Elasticsearch query that uses the specified query parameteter and the search template associated with the search application or default template.\nUnspecified template parameters are assigned their default values if applicable.",
         "operationId": "search-application-search",
         "parameters": [
           {
@@ -17395,17 +16668,14 @@
             "$ref": "#/components/responses/search_application.search#200"
           }
         },
-        "x-beta": true,
-        "x-available-since": "8.8.0"
+        "x-beta": true
       },
       "post": {
         "tags": [
-          "search_application.search"
+          "search_application"
         ],
-        "summary": "Perform a search against a search application",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/master/search-application-search.html"
-        },
+        "summary": "Run a search application search",
+        "description": "Generate and run an Elasticsearch query that uses the specified query parameteter and the search template associated with the search application or default template.\nUnspecified template parameters are assigned their default values if applicable.",
         "operationId": "search-application-search-1",
         "parameters": [
           {
@@ -17423,20 +16693,16 @@
             "$ref": "#/components/responses/search_application.search#200"
           }
         },
-        "x-beta": true,
-        "x-available-since": "8.8.0"
+        "x-beta": true
       }
     },
     "/{index}/_mvt/{field}/{zoom}/{x}/{y}": {
       "get": {
         "tags": [
-          "search_mvt"
+          "search"
         ],
         "summary": "Search a vector tile",
-        "description": "Searches a vector tile for geospatial values.",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/master/search-vector-tile-api.html"
-        },
+        "description": "Search a vector tile for geospatial values.",
         "operationId": "search-mvt-1",
         "parameters": [
           {
@@ -17484,17 +16750,14 @@
             "$ref": "#/components/responses/search_mvt#200"
           }
         },
-        "x-available-since": "7.15.0"
+        "x-state": "Added in 7.15.0"
       },
       "post": {
         "tags": [
-          "search_mvt"
+          "search"
         ],
         "summary": "Search a vector tile",
-        "description": "Searches a vector tile for geospatial values.",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/master/search-vector-tile-api.html"
-        },
+        "description": "Search a vector tile for geospatial values.",
         "operationId": "search-mvt",
         "parameters": [
           {
@@ -17542,15 +16805,15 @@
             "$ref": "#/components/responses/search_mvt#200"
           }
         },
-        "x-available-since": "7.15.0"
+        "x-state": "Added in 7.15.0"
       }
     },
     "/_search/template": {
       "get": {
         "tags": [
-          "search_template"
+          "search"
         ],
-        "summary": "Runs a search with a search template",
+        "summary": "Run a search with a search template",
         "externalDocs": {
           "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/search-template.html"
         },
@@ -17604,13 +16867,13 @@
             "$ref": "#/components/responses/search_template#200"
           }
         },
-        "x-available-since": "2.0.0"
+        "x-state": "Added in 2.0.0"
       },
       "post": {
         "tags": [
-          "search_template"
+          "search"
         ],
-        "summary": "Runs a search with a search template",
+        "summary": "Run a search with a search template",
         "externalDocs": {
           "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/search-template.html"
         },
@@ -17664,15 +16927,15 @@
             "$ref": "#/components/responses/search_template#200"
           }
         },
-        "x-available-since": "2.0.0"
+        "x-state": "Added in 2.0.0"
       }
     },
     "/{index}/_search/template": {
       "get": {
         "tags": [
-          "search_template"
+          "search"
         ],
-        "summary": "Runs a search with a search template",
+        "summary": "Run a search with a search template",
         "externalDocs": {
           "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/search-template.html"
         },
@@ -17729,13 +16992,13 @@
             "$ref": "#/components/responses/search_template#200"
           }
         },
-        "x-available-since": "2.0.0"
+        "x-state": "Added in 2.0.0"
       },
       "post": {
         "tags": [
-          "search_template"
+          "search"
         ],
-        "summary": "Runs a search with a search template",
+        "summary": "Run a search with a search template",
         "externalDocs": {
           "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/search-template.html"
         },
@@ -17792,19 +17055,16 @@
             "$ref": "#/components/responses/search_template#200"
           }
         },
-        "x-available-since": "2.0.0"
+        "x-state": "Added in 2.0.0"
       }
     },
     "/_security/_authenticate": {
       "get": {
         "tags": [
-          "security.authenticate"
+          "security"
         ],
         "summary": "Authenticate a user",
         "description": "Authenticates a user and returns information about the authenticated user.\nInclude the user information in a [basic auth header](https://en.wikipedia.org/wiki/Basic_access_authentication).\nA successful call returns a JSON structure that shows user information such as their username, the roles that are assigned to the user, any assigned metadata, and information about the realms that authenticated and authorized the user.\nIf the user cannot be authenticated, this API returns a 401 status code.",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/security-api-authenticate.html"
-        },
         "operationId": "security-authenticate",
         "responses": {
           "200": {
@@ -17815,7 +17075,7 @@
                   "type": "object",
                   "properties": {
                     "api_key": {
-                      "$ref": "#/components/schemas/security._types:ApiKey"
+                      "$ref": "#/components/schemas/security.authenticate:AuthenticateApiKey"
                     },
                     "authentication_realm": {
                       "$ref": "#/components/schemas/security._types:RealmInfo"
@@ -17881,19 +17141,16 @@
             }
           }
         },
-        "x-available-since": "5.5.0"
+        "x-state": "Added in 5.5.0"
       }
     },
     "/_security/api_key": {
       "get": {
         "tags": [
-          "security.get_api_key"
+          "security"
         ],
         "summary": "Get API key information",
         "description": "Retrieves information for one or more API keys.\nNOTE: If you have only the `manage_own_api_key` privilege, this API returns only the API keys that you own.\nIf you have `read_security`, `manage_api_key` or greater privileges (including `manage_security`), this API returns all API keys regardless of ownership.",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/security-api-get-api-key.html"
-        },
         "operationId": "security-get-api-key",
         "parameters": [
           {
@@ -18000,17 +17257,14 @@
             }
           }
         },
-        "x-available-since": "6.7.0"
+        "x-state": "Added in 6.7.0"
       },
       "put": {
         "tags": [
-          "security.create_api_key"
+          "security"
         ],
         "summary": "Create an API key",
-        "description": "Creates an API key for access without requiring basic authentication.\nA successful request returns a JSON structure that contains the API key, its unique id, and its name.\nIf applicable, it also returns expiration information for the API key in milliseconds.\nNOTE: By default, API keys never expire. You can specify expiration information when you create the API keys.",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/security-api-create-api-key.html"
-        },
+        "description": "Create an API key for access without requiring basic authentication.\nA successful request returns a JSON structure that contains the API key, its unique id, and its name.\nIf applicable, it also returns expiration information for the API key in milliseconds.\nNOTE: By default, API keys never expire. You can specify expiration information when you create the API keys.",
         "operationId": "security-create-api-key",
         "parameters": [
           {
@@ -18025,17 +17279,14 @@
             "$ref": "#/components/responses/security.create_api_key#200"
           }
         },
-        "x-available-since": "6.7.0"
+        "x-state": "Added in 6.7.0"
       },
       "post": {
         "tags": [
-          "security.create_api_key"
+          "security"
         ],
         "summary": "Create an API key",
-        "description": "Creates an API key for access without requiring basic authentication.\nA successful request returns a JSON structure that contains the API key, its unique id, and its name.\nIf applicable, it also returns expiration information for the API key in milliseconds.\nNOTE: By default, API keys never expire. You can specify expiration information when you create the API keys.",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/security-api-create-api-key.html"
-        },
+        "description": "Create an API key for access without requiring basic authentication.\nA successful request returns a JSON structure that contains the API key, its unique id, and its name.\nIf applicable, it also returns expiration information for the API key in milliseconds.\nNOTE: By default, API keys never expire. You can specify expiration information when you create the API keys.",
         "operationId": "security-create-api-key-1",
         "parameters": [
           {
@@ -18050,17 +17301,14 @@
             "$ref": "#/components/responses/security.create_api_key#200"
           }
         },
-        "x-available-since": "6.7.0"
+        "x-state": "Added in 6.7.0"
       },
       "delete": {
         "tags": [
-          "security.invalidate_api_key"
+          "security"
         ],
         "summary": "Invalidate API keys",
-        "description": "Invalidates one or more API keys.\nThe `manage_api_key` privilege allows deleting any API keys.\nThe `manage_own_api_key` only allows deleting API keys that are owned by the user.\nIn addition, with the `manage_own_api_key` privilege, an invalidation request must be issued in one of the three formats:\n- Set the parameter `owner=true`.\n- Or, set both `username` and `realm_name` to match the user’s identity.\n- Or, if the request is issued by an API key, i.e. an API key invalidates itself, specify its ID in the `ids` field.",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/security-api-invalidate-api-key.html"
-        },
+        "description": "This API invalidates API keys created by the create API key or grant API key APIs.\nInvalidated API keys fail authentication, but they can still be viewed using the get API key information and query API key information APIs, for at least the configured retention period, until they are automatically deleted.\nThe `manage_api_key` privilege allows deleting any API keys.\nThe `manage_own_api_key` only allows deleting API keys that are owned by the user.\nIn addition, with the `manage_own_api_key` privilege, an invalidation request must be issued in one of the three formats:\n- Set the parameter `owner=true`.\n- Or, set both `username` and `realm_name` to match the user’s identity.\n- Or, if the request is issued by an API key, that is to say an API key invalidates itself, specify its ID in the `ids` field.",
         "operationId": "security-invalidate-api-key",
         "requestBody": {
           "content": {
@@ -18138,18 +17386,18 @@
             }
           }
         },
-        "x-available-since": "6.7.0"
+        "x-state": "Added in 6.7.0"
       }
     },
     "/_security/user/_has_privileges": {
       "get": {
         "tags": [
-          "security.has_privileges"
+          "security"
         ],
         "summary": "Check user privileges",
-        "description": "Determines whether the specified user has a specified list of privileges.",
+        "description": "Determine whether the specified user has a specified list of privileges.",
         "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/security-api-has-privileges.html"
+          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/security-privileges.html"
         },
         "operationId": "security-has-privileges",
         "requestBody": {
@@ -18160,16 +17408,16 @@
             "$ref": "#/components/responses/security.has_privileges#200"
           }
         },
-        "x-available-since": "6.4.0"
+        "x-state": "Added in 6.4.0"
       },
       "post": {
         "tags": [
-          "security.has_privileges"
+          "security"
         ],
         "summary": "Check user privileges",
-        "description": "Determines whether the specified user has a specified list of privileges.",
+        "description": "Determine whether the specified user has a specified list of privileges.",
         "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/security-api-has-privileges.html"
+          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/security-privileges.html"
         },
         "operationId": "security-has-privileges-1",
         "requestBody": {
@@ -18180,18 +17428,18 @@
             "$ref": "#/components/responses/security.has_privileges#200"
           }
         },
-        "x-available-since": "6.4.0"
+        "x-state": "Added in 6.4.0"
       }
     },
     "/_security/user/{user}/_has_privileges": {
       "get": {
         "tags": [
-          "security.has_privileges"
+          "security"
         ],
         "summary": "Check user privileges",
-        "description": "Determines whether the specified user has a specified list of privileges.",
+        "description": "Determine whether the specified user has a specified list of privileges.",
         "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/security-api-has-privileges.html"
+          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/security-privileges.html"
         },
         "operationId": "security-has-privileges-2",
         "parameters": [
@@ -18207,16 +17455,16 @@
             "$ref": "#/components/responses/security.has_privileges#200"
           }
         },
-        "x-available-since": "6.4.0"
+        "x-state": "Added in 6.4.0"
       },
       "post": {
         "tags": [
-          "security.has_privileges"
+          "security"
         ],
         "summary": "Check user privileges",
-        "description": "Determines whether the specified user has a specified list of privileges.",
+        "description": "Determine whether the specified user has a specified list of privileges.",
         "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/security-api-has-privileges.html"
+          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/security-privileges.html"
         },
         "operationId": "security-has-privileges-3",
         "parameters": [
@@ -18232,19 +17480,16 @@
             "$ref": "#/components/responses/security.has_privileges#200"
           }
         },
-        "x-available-since": "6.4.0"
+        "x-state": "Added in 6.4.0"
       }
     },
     "/_security/_query/api_key": {
       "get": {
         "tags": [
-          "security.query_api_keys"
+          "security"
         ],
-        "summary": "Query API keys",
-        "description": "Retrieves a paginated list of API keys and their information. You can optionally filter the results with a query.",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/security-api-query-api-key.html"
-        },
+        "summary": "Find API keys with a query",
+        "description": "Get a paginated list of API keys and their information. You can optionally filter the results with a query.",
         "operationId": "security-query-api-keys",
         "parameters": [
           {
@@ -18265,17 +17510,14 @@
             "$ref": "#/components/responses/security.query_api_keys#200"
           }
         },
-        "x-available-since": "7.15.0"
+        "x-state": "Added in 7.15.0"
       },
       "post": {
         "tags": [
-          "security.query_api_keys"
+          "security"
         ],
-        "summary": "Query API keys",
-        "description": "Retrieves a paginated list of API keys and their information. You can optionally filter the results with a query.",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/security-api-query-api-key.html"
-        },
+        "summary": "Find API keys with a query",
+        "description": "Get a paginated list of API keys and their information. You can optionally filter the results with a query.",
         "operationId": "security-query-api-keys-1",
         "parameters": [
           {
@@ -18296,19 +17538,16 @@
             "$ref": "#/components/responses/security.query_api_keys#200"
           }
         },
-        "x-available-since": "7.15.0"
+        "x-state": "Added in 7.15.0"
       }
     },
     "/_security/api_key/{id}": {
       "put": {
         "tags": [
-          "security.update_api_key"
+          "security"
         ],
         "summary": "Update an API key",
         "description": "Updates attributes of an existing API key.\nUsers can only update API keys that they created or that were granted to them.\nUse this API to update API keys created by the create API Key or grant API Key APIs.\nIf you need to apply the same update to many API keys, you can use bulk update API Keys to reduce overhead.\nIt’s not possible to update expired API keys, or API keys that have been invalidated by invalidate API Key.\nThis API supports updates to an API key’s access scope and metadata.\nThe access scope of an API key is derived from the `role_descriptors` you specify in the request, and a snapshot of the owner user’s permissions at the time of the request.\nThe snapshot of the owner’s permissions is updated automatically on every call.\nIf you don’t specify `role_descriptors` in the request, a call to this API might still change the API key’s access scope.\nThis change can occur if the owner user’s permissions have changed since the API key was created or last modified.\nTo update another user’s API key, use the `run_as` feature to submit a request on behalf of another user.\nIMPORTANT: It’s not possible to use an API key as the authentication credential for this API.\nTo update an API key, the owner user’s credentials are required.",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/security-api-update-api-key.html"
-        },
         "operationId": "security-update-api-key",
         "parameters": [
           {
@@ -18330,9 +17569,6 @@
                 "type": "object",
                 "properties": {
                   "role_descriptors": {
-                    "externalDocs": {
-                      "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/security-api-put-role.html"
-                    },
                     "description": "An array of role descriptors for this API key. This parameter is optional. When it is not specified or is an empty array, then the API key will have a point in time snapshot of permissions of the authenticated user. If you supply role descriptors then the resultant permissions would be an intersection of API keys permissions and authenticated user’s permissions thereby limiting the access scope for API keys. The structure of role descriptor is the same as the request for create role API. For more details, see create or update roles API.",
                     "type": "object",
                     "additionalProperties": {
@@ -18371,18 +17607,15 @@
             }
           }
         },
-        "x-available-since": "8.4.0"
+        "x-state": "Added in 8.4.0"
       }
     },
     "/_sql/close": {
       "post": {
         "tags": [
-          "sql.clear_cursor"
+          "sql"
         ],
-        "summary": "Clears the SQL cursor",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/clear-sql-cursor-api.html"
-        },
+        "summary": "Clear an SQL search cursor",
         "operationId": "sql-clear-cursor",
         "requestBody": {
           "content": {
@@ -18423,19 +17656,16 @@
             }
           }
         },
-        "x-available-since": "6.3.0"
+        "x-state": "Added in 6.3.0"
       }
     },
     "/_sql/async/delete/{id}": {
       "delete": {
         "tags": [
-          "sql.delete_async"
+          "sql"
         ],
-        "summary": "Deletes an async SQL search or a stored synchronous SQL search",
-        "description": "If the search is still running, the API cancels it.",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/master/delete-async-sql-search-api.html"
-        },
+        "summary": "Delete an async SQL search",
+        "description": "Delete an async SQL search or a stored synchronous SQL search.\nIf the search is still running, the API cancels it.",
         "operationId": "sql-delete-async",
         "parameters": [
           {
@@ -18462,18 +17692,16 @@
             }
           }
         },
-        "x-available-since": "7.15.0"
+        "x-state": "Added in 7.15.0"
       }
     },
     "/_sql/async/{id}": {
       "get": {
         "tags": [
-          "sql.get_async"
+          "sql"
         ],
-        "summary": "Returns the current status and available results for an async SQL search or stored synchronous SQL search",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/master/get-async-sql-search-api.html"
-        },
+        "summary": "Get async SQL search results",
+        "description": "Get the current status and available results for an async SQL search or stored synchronous SQL search.",
         "operationId": "sql-get-async",
         "parameters": [
           {
@@ -18577,18 +17805,16 @@
             }
           }
         },
-        "x-available-since": "7.15.0"
+        "x-state": "Added in 7.15.0"
       }
     },
     "/_sql/async/status/{id}": {
       "get": {
         "tags": [
-          "sql.get_async_status"
+          "sql"
         ],
-        "summary": "Returns the current status of an async SQL search or a stored synchronous SQL search",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/master/get-async-sql-search-status-api.html"
-        },
+        "summary": "Get the async SQL search status",
+        "description": "Get the current status of an async SQL search or a stored synchronous SQL search.",
         "operationId": "sql-get-async-status",
         "parameters": [
           {
@@ -18645,18 +17871,16 @@
             }
           }
         },
-        "x-available-since": "7.15.0"
+        "x-state": "Added in 7.15.0"
       }
     },
     "/_sql": {
       "get": {
         "tags": [
-          "sql.query"
+          "sql"
         ],
-        "summary": "Executes a SQL request",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/sql-search-api.html"
-        },
+        "summary": "Get SQL search results",
+        "description": "Run an SQL request.",
         "operationId": "sql-query-1",
         "parameters": [
           {
@@ -18671,16 +17895,14 @@
             "$ref": "#/components/responses/sql.query#200"
           }
         },
-        "x-available-since": "6.3.0"
+        "x-state": "Added in 6.3.0"
       },
       "post": {
         "tags": [
-          "sql.query"
+          "sql"
         ],
-        "summary": "Executes a SQL request",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/sql-search-api.html"
-        },
+        "summary": "Get SQL search results",
+        "description": "Run an SQL request.",
         "operationId": "sql-query",
         "parameters": [
           {
@@ -18695,18 +17917,16 @@
             "$ref": "#/components/responses/sql.query#200"
           }
         },
-        "x-available-since": "6.3.0"
+        "x-state": "Added in 6.3.0"
       }
     },
     "/_sql/translate": {
       "get": {
         "tags": [
-          "sql.translate"
+          "sql"
         ],
-        "summary": "Translates SQL into Elasticsearch queries",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/sql-translate-api.html"
-        },
+        "summary": "Translate SQL into Elasticsearch queries",
+        "description": "Translate an SQL search into a search API request containing Query DSL.",
         "operationId": "sql-translate-1",
         "requestBody": {
           "$ref": "#/components/requestBodies/sql.translate"
@@ -18716,16 +17936,14 @@
             "$ref": "#/components/responses/sql.translate#200"
           }
         },
-        "x-available-since": "6.3.0"
+        "x-state": "Added in 6.3.0"
       },
       "post": {
         "tags": [
-          "sql.translate"
+          "sql"
         ],
-        "summary": "Translates SQL into Elasticsearch queries",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/sql-translate-api.html"
-        },
+        "summary": "Translate SQL into Elasticsearch queries",
+        "description": "Translate an SQL search into a search API request containing Query DSL.",
         "operationId": "sql-translate",
         "requestBody": {
           "$ref": "#/components/requestBodies/sql.translate"
@@ -18735,18 +17953,15 @@
             "$ref": "#/components/responses/sql.translate#200"
           }
         },
-        "x-available-since": "6.3.0"
+        "x-state": "Added in 6.3.0"
       }
     },
     "/_synonyms/{id}": {
       "get": {
         "tags": [
-          "synonyms.get_synonym"
+          "synonyms"
         ],
-        "summary": "Retrieves a synonym set",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/master/get-synonyms-set.html"
-        },
+        "summary": "Get a synonym set",
         "operationId": "synonyms-get-synonym",
         "parameters": [
           {
@@ -18808,16 +18023,14 @@
             }
           }
         },
-        "x-available-since": "8.10.0"
+        "x-state": "Added in 8.10.0"
       },
       "put": {
         "tags": [
-          "synonyms.put_synonym"
+          "synonyms"
         ],
-        "summary": "Creates or updates a synonym set",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/master/put-synonyms-set.html"
-        },
+        "summary": "Create or update a synonym set",
+        "description": "Synonyms sets are limited to a maximum of 10,000 synonym rules per set.\nIf you need to manage more synonym rules, you can create multiple synonym sets.",
         "operationId": "synonyms-put-synonym",
         "parameters": [
           {
@@ -18885,16 +18098,13 @@
             }
           }
         },
-        "x-available-since": "8.10.0"
+        "x-state": "Added in 8.10.0"
       },
       "delete": {
         "tags": [
-          "synonyms.delete_synonym"
+          "synonyms"
         ],
-        "summary": "Deletes a synonym set",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/master/delete-synonyms-set.html"
-        },
+        "summary": "Delete a synonym set",
         "operationId": "synonyms-delete-synonym",
         "parameters": [
           {
@@ -18921,18 +18131,16 @@
             }
           }
         },
-        "x-available-since": "8.10.0"
+        "x-state": "Added in 8.10.0"
       }
     },
     "/_synonyms/{set_id}/{rule_id}": {
       "get": {
         "tags": [
-          "synonyms.get_synonym_rule"
+          "synonyms"
         ],
-        "summary": "Retrieves a synonym rule from a synonym set",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/master/get-synonym-rule.html"
-        },
+        "summary": "Get a synonym rule",
+        "description": "Get a synonym rule from a synonym set.",
         "operationId": "synonyms-get-synonym-rule",
         "parameters": [
           {
@@ -18970,16 +18178,14 @@
             }
           }
         },
-        "x-available-since": "8.10.0"
+        "x-state": "Added in 8.10.0"
       },
       "put": {
         "tags": [
-          "synonyms.put_synonym_rule"
+          "synonyms"
         ],
-        "summary": "Creates or updates a synonym rule in a synonym set",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/master/put-synonym-rule.html"
-        },
+        "summary": "Create or update a synonym rule",
+        "description": "Create or update a synonym rule in a synonym set.",
         "operationId": "synonyms-put-synonym-rule",
         "parameters": [
           {
@@ -19035,16 +18241,14 @@
             }
           }
         },
-        "x-available-since": "8.10.0"
+        "x-state": "Added in 8.10.0"
       },
       "delete": {
         "tags": [
-          "synonyms.delete_synonym_rule"
+          "synonyms"
         ],
-        "summary": "Deletes a synonym rule in a synonym set",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/master/delete-synonym-rule.html"
-        },
+        "summary": "Delete a synonym rule",
+        "description": "Delete a synonym rule from a synonym set.",
         "operationId": "synonyms-delete-synonym-rule",
         "parameters": [
           {
@@ -19082,18 +18286,16 @@
             }
           }
         },
-        "x-available-since": "8.10.0"
+        "x-state": "Added in 8.10.0"
       }
     },
     "/_synonyms": {
       "get": {
         "tags": [
-          "synonyms.get_synonyms_sets"
+          "synonyms"
         ],
-        "summary": "Retrieves a summary of all defined synonym sets",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/master/list-synonyms-sets.html"
-        },
+        "summary": "Get all synonym sets",
+        "description": "Get a summary of all defined synonym sets.",
         "operationId": "synonyms-get-synonyms-sets",
         "parameters": [
           {
@@ -19144,19 +18346,16 @@
             }
           }
         },
-        "x-available-since": "8.10.0"
+        "x-state": "Added in 8.10.0"
       }
     },
     "/_tasks/{task_id}": {
       "get": {
         "tags": [
-          "tasks.get"
+          "tasks"
         ],
         "summary": "Get task information",
         "description": "Returns information about the tasks currently executing in the cluster.",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/tasks.html"
-        },
         "operationId": "tasks-get",
         "parameters": [
           {
@@ -19221,20 +18420,16 @@
             }
           }
         },
-        "x-technical-preview": true,
-        "x-available-since": "5.0.0"
+        "x-state": "Technical preview"
       }
     },
     "/{index}/_terms_enum": {
       "get": {
         "tags": [
-          "terms_enum"
+          "search"
         ],
-        "summary": "The terms enum API  can be used to discover terms in the index that begin with the provided string",
-        "description": "It is designed for low-latency look-ups used in auto-complete scenarios.",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/search-terms-enum.html"
-        },
+        "summary": "Get terms in an index",
+        "description": "Discover terms that match a partial string in an index.\nThis \"terms enum\" API is designed for low-latency look-ups used in auto-complete scenarios.\n\nIf the `complete` property in the response is false, the returned terms set may be incomplete and should be treated as approximate.\nThis can occur due to a few reasons, such as a request timeout or a node error.\n\nNOTE: The terms enum API may return terms from deleted documents. Deleted documents are initially only marked as deleted. It is not until their segments are merged that documents are actually deleted. Until that happens, the terms enum API will return terms from these documents.",
         "operationId": "terms-enum",
         "parameters": [
           {
@@ -19249,17 +18444,14 @@
             "$ref": "#/components/responses/terms_enum#200"
           }
         },
-        "x-available-since": "7.14.0"
+        "x-state": "Added in 7.14.0"
       },
       "post": {
         "tags": [
-          "terms_enum"
+          "search"
         ],
-        "summary": "The terms enum API  can be used to discover terms in the index that begin with the provided string",
-        "description": "It is designed for low-latency look-ups used in auto-complete scenarios.",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/search-terms-enum.html"
-        },
+        "summary": "Get terms in an index",
+        "description": "Discover terms that match a partial string in an index.\nThis \"terms enum\" API is designed for low-latency look-ups used in auto-complete scenarios.\n\nIf the `complete` property in the response is false, the returned terms set may be incomplete and should be treated as approximate.\nThis can occur due to a few reasons, such as a request timeout or a node error.\n\nNOTE: The terms enum API may return terms from deleted documents. Deleted documents are initially only marked as deleted. It is not until their segments are merged that documents are actually deleted. Until that happens, the terms enum API will return terms from these documents.",
         "operationId": "terms-enum-1",
         "parameters": [
           {
@@ -19274,19 +18466,16 @@
             "$ref": "#/components/responses/terms_enum#200"
           }
         },
-        "x-available-since": "7.14.0"
+        "x-state": "Added in 7.14.0"
       }
     },
     "/{index}/_termvectors/{id}": {
       "get": {
         "tags": [
-          "termvectors"
+          "document"
         ],
         "summary": "Get term vector information",
-        "description": "Returns information and statistics about terms in the fields of a particular document.",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/master/docs-termvectors.html"
-        },
+        "description": "Get information and statistics about terms in the fields of a particular document.",
         "operationId": "termvectors",
         "parameters": [
           {
@@ -19340,13 +18529,10 @@
       },
       "post": {
         "tags": [
-          "termvectors"
+          "document"
         ],
         "summary": "Get term vector information",
-        "description": "Returns information and statistics about terms in the fields of a particular document.",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/master/docs-termvectors.html"
-        },
+        "description": "Get information and statistics about terms in the fields of a particular document.",
         "operationId": "termvectors-1",
         "parameters": [
           {
@@ -19402,13 +18588,10 @@
     "/{index}/_termvectors": {
       "get": {
         "tags": [
-          "termvectors"
+          "document"
         ],
         "summary": "Get term vector information",
-        "description": "Returns information and statistics about terms in the fields of a particular document.",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/master/docs-termvectors.html"
-        },
+        "description": "Get information and statistics about terms in the fields of a particular document.",
         "operationId": "termvectors-2",
         "parameters": [
           {
@@ -19459,13 +18642,10 @@
       },
       "post": {
         "tags": [
-          "termvectors"
+          "document"
         ],
         "summary": "Get term vector information",
-        "description": "Returns information and statistics about terms in the fields of a particular document.",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/master/docs-termvectors.html"
-        },
+        "description": "Get information and statistics about terms in the fields of a particular document.",
         "operationId": "termvectors-3",
         "parameters": [
           {
@@ -19518,13 +18698,10 @@
     "/_transform/{transform_id}": {
       "get": {
         "tags": [
-          "transform.get_transform"
+          "transform"
         ],
         "summary": "Get transforms",
         "description": "Retrieves configuration information for transforms.",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/get-transform.html"
-        },
         "operationId": "transform-get-transform",
         "parameters": [
           {
@@ -19548,17 +18725,14 @@
             "$ref": "#/components/responses/transform.get_transform#200"
           }
         },
-        "x-available-since": "7.5.0"
+        "x-state": "Added in 7.5.0"
       },
       "put": {
         "tags": [
-          "transform.put_transform"
+          "transform"
         ],
         "summary": "Create a transform",
         "description": "Creates a transform.\n\nA transform copies data from source indices, transforms it, and persists it into an entity-centric destination index. You can also think of the destination index as a two-dimensional tabular data structure (known as\na data frame). The ID for each document in the data frame is generated from a hash of the entity, so there is a\nunique row per entity.\n\nYou must choose either the latest or pivot method for your transform; you cannot use both in a single transform. If\nyou choose to use the pivot method for your transform, the entities are defined by the set of `group_by` fields in\nthe pivot object. If you choose to use the latest method, the entities are defined by the `unique_key` field values\nin the latest object.\n\nYou must have `create_index`, `index`, and `read` privileges on the destination index and `read` and\n`view_index_metadata` privileges on the source indices. When Elasticsearch security features are enabled, the\ntransform remembers which roles the user that created it had at the time of creation and uses those same roles. If\nthose roles do not have the required privileges on the source and destination indices, the transform fails when it\nattempts unauthorized operations.\n\nNOTE: You must use Kibana or this API to create a transform. Do not add a transform directly into any\n`.transform-internal*` indices using the Elasticsearch index API. If Elasticsearch security features are enabled, do\nnot give users any privileges on `.transform-internal*` indices. If you used transforms prior to 7.5, also do not\ngive users any privileges on `.data-frame-internal*` indices.",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/put-transform.html"
-        },
         "operationId": "transform-put-transform",
         "parameters": [
           {
@@ -19652,17 +18826,14 @@
             }
           }
         },
-        "x-available-since": "7.2.0"
+        "x-state": "Added in 7.2.0"
       },
       "delete": {
         "tags": [
-          "transform.delete_transform"
+          "transform"
         ],
         "summary": "Delete a transform",
         "description": "Deletes a transform.",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/delete-transform.html"
-        },
         "operationId": "transform-delete-transform",
         "parameters": [
           {
@@ -19719,19 +18890,16 @@
             }
           }
         },
-        "x-available-since": "7.5.0"
+        "x-state": "Added in 7.5.0"
       }
     },
     "/_transform": {
       "get": {
         "tags": [
-          "transform.get_transform"
+          "transform"
         ],
         "summary": "Get transforms",
         "description": "Retrieves configuration information for transforms.",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/get-transform.html"
-        },
         "operationId": "transform-get-transform-1",
         "parameters": [
           {
@@ -19752,19 +18920,16 @@
             "$ref": "#/components/responses/transform.get_transform#200"
           }
         },
-        "x-available-since": "7.5.0"
+        "x-state": "Added in 7.5.0"
       }
     },
     "/_transform/{transform_id}/_stats": {
       "get": {
         "tags": [
-          "transform.get_transform_stats"
+          "transform"
         ],
         "summary": "Get transform stats",
         "description": "Retrieves usage information for transforms.",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/get-transform-stats.html"
-        },
         "operationId": "transform-get-transform-stats",
         "parameters": [
           {
@@ -19846,19 +19011,16 @@
             }
           }
         },
-        "x-available-since": "7.5.0"
+        "x-state": "Added in 7.5.0"
       }
     },
     "/_transform/{transform_id}/_preview": {
       "get": {
         "tags": [
-          "transform.preview_transform"
+          "transform"
         ],
         "summary": "Preview a transform",
         "description": "Generates a preview of the results that you will get when you create a transform with the same configuration.\n\nIt returns a maximum of 100 results. The calculations are based on all the current data in the source index. It also\ngenerates a list of mappings and settings for the destination index. These values are determined based on the field\ntypes of the source index and the transform aggregations.",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/preview-transform.html"
-        },
         "operationId": "transform-preview-transform",
         "parameters": [
           {
@@ -19876,17 +19038,14 @@
             "$ref": "#/components/responses/transform.preview_transform#200"
           }
         },
-        "x-available-since": "7.2.0"
+        "x-state": "Added in 7.2.0"
       },
       "post": {
         "tags": [
-          "transform.preview_transform"
+          "transform"
         ],
         "summary": "Preview a transform",
         "description": "Generates a preview of the results that you will get when you create a transform with the same configuration.\n\nIt returns a maximum of 100 results. The calculations are based on all the current data in the source index. It also\ngenerates a list of mappings and settings for the destination index. These values are determined based on the field\ntypes of the source index and the transform aggregations.",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/preview-transform.html"
-        },
         "operationId": "transform-preview-transform-1",
         "parameters": [
           {
@@ -19904,19 +19063,16 @@
             "$ref": "#/components/responses/transform.preview_transform#200"
           }
         },
-        "x-available-since": "7.2.0"
+        "x-state": "Added in 7.2.0"
       }
     },
     "/_transform/_preview": {
       "get": {
         "tags": [
-          "transform.preview_transform"
+          "transform"
         ],
         "summary": "Preview a transform",
         "description": "Generates a preview of the results that you will get when you create a transform with the same configuration.\n\nIt returns a maximum of 100 results. The calculations are based on all the current data in the source index. It also\ngenerates a list of mappings and settings for the destination index. These values are determined based on the field\ntypes of the source index and the transform aggregations.",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/preview-transform.html"
-        },
         "operationId": "transform-preview-transform-2",
         "parameters": [
           {
@@ -19931,17 +19087,14 @@
             "$ref": "#/components/responses/transform.preview_transform#200"
           }
         },
-        "x-available-since": "7.2.0"
+        "x-state": "Added in 7.2.0"
       },
       "post": {
         "tags": [
-          "transform.preview_transform"
+          "transform"
         ],
         "summary": "Preview a transform",
         "description": "Generates a preview of the results that you will get when you create a transform with the same configuration.\n\nIt returns a maximum of 100 results. The calculations are based on all the current data in the source index. It also\ngenerates a list of mappings and settings for the destination index. These values are determined based on the field\ntypes of the source index and the transform aggregations.",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/preview-transform.html"
-        },
         "operationId": "transform-preview-transform-3",
         "parameters": [
           {
@@ -19956,19 +19109,16 @@
             "$ref": "#/components/responses/transform.preview_transform#200"
           }
         },
-        "x-available-since": "7.2.0"
+        "x-state": "Added in 7.2.0"
       }
     },
     "/_transform/{transform_id}/_reset": {
       "post": {
         "tags": [
-          "transform.reset_transform"
+          "transform"
         ],
         "summary": "Reset a transform",
         "description": "Resets a transform.\nBefore you can reset it, you must stop it; alternatively, use the `force` query parameter.\nIf the destination index was created by the transform, it is deleted.",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/reset-transform.html"
-        },
         "operationId": "transform-reset-transform",
         "parameters": [
           {
@@ -20005,19 +19155,16 @@
             }
           }
         },
-        "x-available-since": "8.1.0"
+        "x-state": "Added in 8.1.0"
       }
     },
     "/_transform/{transform_id}/_schedule_now": {
       "post": {
         "tags": [
-          "transform.schedule_now_transform"
+          "transform"
         ],
         "summary": "Schedule a transform to start now",
         "description": "Instantly runs a transform to process data.\n\nIf you _schedule_now a transform, it will process the new data instantly,\nwithout waiting for the configured frequency interval. After _schedule_now API is called,\nthe transform will be processed again at now + frequency unless _schedule_now API\nis called again in the meantime.",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/schedule-now-transform.html"
-        },
         "operationId": "transform-schedule-now-transform",
         "parameters": [
           {
@@ -20054,19 +19201,16 @@
             }
           }
         },
-        "x-available-since": "8.7.0"
+        "x-state": "Added in 8.7.0"
       }
     },
     "/_transform/{transform_id}/_start": {
       "post": {
         "tags": [
-          "transform.start_transform"
+          "transform"
         ],
         "summary": "Start a transform",
         "description": "Starts a transform.\n\nWhen you start a transform, it creates the destination index if it does not already exist. The `number_of_shards` is\nset to `1` and the `auto_expand_replicas` is set to `0-1`. If it is a pivot transform, it deduces the mapping\ndefinitions for the destination index from the source indices and the transform aggregations. If fields in the\ndestination index are derived from scripts (as in the case of `scripted_metric` or `bucket_script` aggregations),\nthe transform uses dynamic mappings unless an index template exists. If it is a latest transform, it does not deduce\nmapping definitions; it uses dynamic mappings. To use explicit mappings, create the destination index before you\nstart the transform. Alternatively, you can create an index template, though it does not affect the deduced mappings\nin a pivot transform.\n\nWhen the transform starts, a series of validations occur to ensure its success. If you deferred validation when you\ncreated the transform, they occur when you start the transform—​with the exception of privilege checks. When\nElasticsearch security features are enabled, the transform remembers which roles the user that created it had at the\ntime of creation and uses those same roles. If those roles do not have the required privileges on the source and\ndestination indices, the transform fails when it attempts unauthorized operations.",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/start-transform.html"
-        },
         "operationId": "transform-start-transform",
         "parameters": [
           {
@@ -20113,19 +19257,16 @@
             }
           }
         },
-        "x-available-since": "7.5.0"
+        "x-state": "Added in 7.5.0"
       }
     },
     "/_transform/{transform_id}/_stop": {
       "post": {
         "tags": [
-          "transform.stop_transform"
+          "transform"
         ],
         "summary": "Stop transforms",
         "description": "Stops one or more transforms.",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/stop-transform.html"
-        },
         "operationId": "transform-stop-transform",
         "parameters": [
           {
@@ -20202,19 +19343,16 @@
             }
           }
         },
-        "x-available-since": "7.5.0"
+        "x-state": "Added in 7.5.0"
       }
     },
     "/_transform/{transform_id}/_update": {
       "post": {
         "tags": [
-          "transform.update_transform"
+          "transform"
         ],
         "summary": "Update a transform",
         "description": "Updates certain properties of a transform.\n\nAll updated properties except `description` do not take effect until after the transform starts the next checkpoint,\nthus there is data consistency in each checkpoint. To use this API, you must have `read` and `view_index_metadata`\nprivileges for the source indices. You must also have `index` and `read` privileges for the destination index. When\nElasticsearch security features are enabled, the transform remembers which roles the user who updated it had at the\ntime of update and runs with those privileges.",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/update-transform.html"
-        },
         "operationId": "transform-update-transform",
         "parameters": [
           {
@@ -20360,19 +19498,16 @@
             }
           }
         },
-        "x-available-since": "7.2.0"
+        "x-state": "Added in 7.2.0"
       }
     },
     "/{index}/_update/{id}": {
       "post": {
         "tags": [
-          "update"
+          "document"
         ],
         "summary": "Update a document",
         "description": "Updates a document by running a script or passing a partial document.",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/master/docs-update.html"
-        },
         "operationId": "update",
         "parameters": [
           {
@@ -20573,13 +19708,10 @@
     "/{index}/_update_by_query": {
       "post": {
         "tags": [
-          "update_by_query"
+          "document"
         ],
         "summary": "Update documents",
         "description": "Updates documents that match the specified query.\nIf no query is specified, performs an update on every document in the data stream or index without modifying the source, which is useful for picking up mapping changes.",
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/master/docs-update-by-query.html"
-        },
         "operationId": "update-by-query",
         "parameters": [
           {
@@ -21002,7 +20134,7 @@
             }
           }
         },
-        "x-available-since": "2.4.0"
+        "x-state": "Added in 2.4.0"
       }
     }
   },
@@ -21024,9 +20156,6 @@
         ]
       },
       "_types:Duration": {
-        "externalDocs": {
-          "url": "https://github.com/elastic/elasticsearch/blob/current/libs/core/src/main/java/org/elasticsearch/core/TimeValue.java"
-        },
         "description": "A duration. Units can be `nanos`, `micros`, `ms` (milliseconds), `s` (seconds), `m` (minutes), `h` (hours) and\n`d` (days). Also accepts \"0\" without a unit and \"-1\" to indicate an unspecified value.",
         "oneOf": [
           {
@@ -21132,6 +20261,9 @@
         ]
       },
       "_types.aggregations:Aggregate": {
+        "externalDocs": {
+          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/search-aggregations.html"
+        },
         "oneOf": [
           {
             "$ref": "#/components/schemas/_types.aggregations:CardinalityAggregate"
@@ -24210,10 +23342,7 @@
               {
                 "type": "object",
                 "additionalProperties": {
-                  "type": "array",
-                  "items": {
-                    "type": "number"
-                  }
+                  "type": "number"
                 }
               }
             ]
@@ -24232,7 +23361,7 @@
             "additionalProperties": {
               "type": "array",
               "items": {
-                "type": "string"
+                "$ref": "#/components/schemas/_types:FieldValue"
               }
             }
           },
@@ -25040,23 +24169,42 @@
               "$ref": "#/components/schemas/_global.search._types:AggregationProfile"
             }
           },
+          "cluster": {
+            "type": "string"
+          },
+          "dfs": {
+            "$ref": "#/components/schemas/_global.search._types:DfsProfile"
+          },
+          "fetch": {
+            "$ref": "#/components/schemas/_global.search._types:FetchProfile"
+          },
           "id": {
             "type": "string"
           },
+          "index": {
+            "$ref": "#/components/schemas/_types:IndexName"
+          },
+          "node_id": {
+            "$ref": "#/components/schemas/_types:NodeId"
+          },
           "searches": {
             "type": "array",
             "items": {
               "$ref": "#/components/schemas/_global.search._types:SearchProfile"
             }
           },
-          "fetch": {
-            "$ref": "#/components/schemas/_global.search._types:FetchProfile"
+          "shard_id": {
+            "type": "number"
           }
         },
         "required": [
           "aggregations",
+          "cluster",
           "id",
-          "searches"
+          "index",
+          "node_id",
+          "searches",
+          "shard_id"
         ]
       },
       "_global.search._types:AggregationProfile": {
@@ -25247,6 +24395,18 @@
           },
           "map_reducer": {
             "type": "string"
+          },
+          "brute_force_used": {
+            "type": "number"
+          },
+          "dynamic_pruning_attempted": {
+            "type": "number"
+          },
+          "dynamic_pruning_used": {
+            "type": "number"
+          },
+          "skipped_due_to_no_data": {
+            "type": "number"
           }
         }
       },
@@ -25267,86 +24427,164 @@
           }
         }
       },
-      "_global.search._types:SearchProfile": {
+      "_global.search._types:DfsProfile": {
         "type": "object",
         "properties": {
-          "collector": {
+          "statistics": {
+            "$ref": "#/components/schemas/_global.search._types:DfsStatisticsProfile"
+          },
+          "knn": {
             "type": "array",
             "items": {
-              "$ref": "#/components/schemas/_global.search._types:Collector"
+              "$ref": "#/components/schemas/_global.search._types:DfsKnnProfile"
             }
+          }
+        }
+      },
+      "_global.search._types:DfsStatisticsProfile": {
+        "type": "object",
+        "properties": {
+          "type": {
+            "type": "string"
           },
-          "query": {
+          "description": {
+            "type": "string"
+          },
+          "time": {
+            "$ref": "#/components/schemas/_types:Duration"
+          },
+          "time_in_nanos": {
+            "$ref": "#/components/schemas/_types:DurationValueUnitNanos"
+          },
+          "breakdown": {
+            "$ref": "#/components/schemas/_global.search._types:DfsStatisticsBreakdown"
+          },
+          "debug": {
+            "type": "object",
+            "additionalProperties": {
+              "type": "object"
+            }
+          },
+          "children": {
             "type": "array",
             "items": {
-              "$ref": "#/components/schemas/_global.search._types:QueryProfile"
+              "$ref": "#/components/schemas/_global.search._types:DfsStatisticsProfile"
             }
+          }
+        },
+        "required": [
+          "type",
+          "description",
+          "time_in_nanos",
+          "breakdown"
+        ]
+      },
+      "_global.search._types:DfsStatisticsBreakdown": {
+        "type": "object",
+        "properties": {
+          "collection_statistics": {
+            "type": "number"
           },
-          "rewrite_time": {
+          "collection_statistics_count": {
+            "type": "number"
+          },
+          "create_weight": {
+            "type": "number"
+          },
+          "create_weight_count": {
+            "type": "number"
+          },
+          "rewrite": {
+            "type": "number"
+          },
+          "rewrite_count": {
+            "type": "number"
+          },
+          "term_statistics": {
+            "type": "number"
+          },
+          "term_statistics_count": {
             "type": "number"
           }
         },
         "required": [
-          "collector",
-          "query",
-          "rewrite_time"
+          "collection_statistics",
+          "collection_statistics_count",
+          "create_weight",
+          "create_weight_count",
+          "rewrite",
+          "rewrite_count",
+          "term_statistics",
+          "term_statistics_count"
         ]
       },
-      "_global.search._types:Collector": {
+      "_global.search._types:DfsKnnProfile": {
         "type": "object",
         "properties": {
-          "name": {
-            "type": "string"
+          "vector_operations_count": {
+            "type": "number"
           },
-          "reason": {
-            "type": "string"
+          "query": {
+            "type": "array",
+            "items": {
+              "$ref": "#/components/schemas/_global.search._types:KnnQueryProfileResult"
+            }
           },
-          "time_in_nanos": {
-            "$ref": "#/components/schemas/_types:DurationValueUnitNanos"
+          "rewrite_time": {
+            "type": "number"
           },
-          "children": {
+          "collector": {
             "type": "array",
             "items": {
-              "$ref": "#/components/schemas/_global.search._types:Collector"
+              "$ref": "#/components/schemas/_global.search._types:KnnCollectorResult"
             }
           }
         },
         "required": [
-          "name",
-          "reason",
-          "time_in_nanos"
+          "query",
+          "rewrite_time",
+          "collector"
         ]
       },
-      "_global.search._types:QueryProfile": {
+      "_global.search._types:KnnQueryProfileResult": {
         "type": "object",
         "properties": {
-          "breakdown": {
-            "$ref": "#/components/schemas/_global.search._types:QueryBreakdown"
+          "type": {
+            "type": "string"
           },
           "description": {
             "type": "string"
           },
+          "time": {
+            "$ref": "#/components/schemas/_types:Duration"
+          },
           "time_in_nanos": {
             "$ref": "#/components/schemas/_types:DurationValueUnitNanos"
           },
-          "type": {
-            "type": "string"
+          "breakdown": {
+            "$ref": "#/components/schemas/_global.search._types:KnnQueryProfileBreakdown"
+          },
+          "debug": {
+            "type": "object",
+            "additionalProperties": {
+              "type": "object"
+            }
           },
           "children": {
             "type": "array",
             "items": {
-              "$ref": "#/components/schemas/_global.search._types:QueryProfile"
+              "$ref": "#/components/schemas/_global.search._types:KnnQueryProfileResult"
             }
           }
         },
         "required": [
-          "breakdown",
+          "type",
           "description",
           "time_in_nanos",
-          "type"
+          "breakdown"
         ]
       },
-      "_global.search._types:QueryBreakdown": {
+      "_global.search._types:KnnQueryProfileBreakdown": {
         "type": "object",
         "properties": {
           "advance": {
@@ -25361,22 +24599,28 @@
           "build_scorer_count": {
             "type": "number"
           },
-          "create_weight": {
+          "compute_max_score": {
             "type": "number"
           },
-          "create_weight_count": {
+          "compute_max_score_count": {
             "type": "number"
           },
-          "match": {
+          "count_weight": {
             "type": "number"
           },
-          "match_count": {
+          "count_weight_count": {
             "type": "number"
           },
-          "shallow_advance": {
+          "create_weight": {
             "type": "number"
           },
-          "shallow_advance_count": {
+          "create_weight_count": {
+            "type": "number"
+          },
+          "match": {
+            "type": "number"
+          },
+          "match_count": {
             "type": "number"
           },
           "next_doc": {
@@ -25391,16 +24635,16 @@
           "score_count": {
             "type": "number"
           },
-          "compute_max_score": {
+          "set_min_competitive_score": {
             "type": "number"
           },
-          "compute_max_score_count": {
+          "set_min_competitive_score_count": {
             "type": "number"
           },
-          "set_min_competitive_score": {
+          "shallow_advance": {
             "type": "number"
           },
-          "set_min_competitive_score_count": {
+          "shallow_advance_count": {
             "type": "number"
           }
         },
@@ -25409,20 +24653,50 @@
           "advance_count",
           "build_scorer",
           "build_scorer_count",
+          "compute_max_score",
+          "compute_max_score_count",
+          "count_weight",
+          "count_weight_count",
           "create_weight",
           "create_weight_count",
           "match",
           "match_count",
-          "shallow_advance",
-          "shallow_advance_count",
           "next_doc",
           "next_doc_count",
           "score",
           "score_count",
-          "compute_max_score",
-          "compute_max_score_count",
           "set_min_competitive_score",
-          "set_min_competitive_score_count"
+          "set_min_competitive_score_count",
+          "shallow_advance",
+          "shallow_advance_count"
+        ]
+      },
+      "_global.search._types:KnnCollectorResult": {
+        "type": "object",
+        "properties": {
+          "name": {
+            "type": "string"
+          },
+          "reason": {
+            "type": "string"
+          },
+          "time": {
+            "$ref": "#/components/schemas/_types:Duration"
+          },
+          "time_in_nanos": {
+            "$ref": "#/components/schemas/_types:DurationValueUnitNanos"
+          },
+          "children": {
+            "type": "array",
+            "items": {
+              "$ref": "#/components/schemas/_global.search._types:KnnCollectorResult"
+            }
+          }
+        },
+        "required": [
+          "name",
+          "reason",
+          "time_in_nanos"
         ]
       },
       "_global.search._types:FetchProfile": {
@@ -25500,6 +24774,175 @@
           }
         }
       },
+      "_types:NodeId": {
+        "type": "string"
+      },
+      "_global.search._types:SearchProfile": {
+        "type": "object",
+        "properties": {
+          "collector": {
+            "type": "array",
+            "items": {
+              "$ref": "#/components/schemas/_global.search._types:Collector"
+            }
+          },
+          "query": {
+            "type": "array",
+            "items": {
+              "$ref": "#/components/schemas/_global.search._types:QueryProfile"
+            }
+          },
+          "rewrite_time": {
+            "type": "number"
+          }
+        },
+        "required": [
+          "collector",
+          "query",
+          "rewrite_time"
+        ]
+      },
+      "_global.search._types:Collector": {
+        "type": "object",
+        "properties": {
+          "name": {
+            "type": "string"
+          },
+          "reason": {
+            "type": "string"
+          },
+          "time_in_nanos": {
+            "$ref": "#/components/schemas/_types:DurationValueUnitNanos"
+          },
+          "children": {
+            "type": "array",
+            "items": {
+              "$ref": "#/components/schemas/_global.search._types:Collector"
+            }
+          }
+        },
+        "required": [
+          "name",
+          "reason",
+          "time_in_nanos"
+        ]
+      },
+      "_global.search._types:QueryProfile": {
+        "type": "object",
+        "properties": {
+          "breakdown": {
+            "$ref": "#/components/schemas/_global.search._types:QueryBreakdown"
+          },
+          "description": {
+            "type": "string"
+          },
+          "time_in_nanos": {
+            "$ref": "#/components/schemas/_types:DurationValueUnitNanos"
+          },
+          "type": {
+            "type": "string"
+          },
+          "children": {
+            "type": "array",
+            "items": {
+              "$ref": "#/components/schemas/_global.search._types:QueryProfile"
+            }
+          }
+        },
+        "required": [
+          "breakdown",
+          "description",
+          "time_in_nanos",
+          "type"
+        ]
+      },
+      "_global.search._types:QueryBreakdown": {
+        "type": "object",
+        "properties": {
+          "advance": {
+            "type": "number"
+          },
+          "advance_count": {
+            "type": "number"
+          },
+          "build_scorer": {
+            "type": "number"
+          },
+          "build_scorer_count": {
+            "type": "number"
+          },
+          "create_weight": {
+            "type": "number"
+          },
+          "create_weight_count": {
+            "type": "number"
+          },
+          "match": {
+            "type": "number"
+          },
+          "match_count": {
+            "type": "number"
+          },
+          "shallow_advance": {
+            "type": "number"
+          },
+          "shallow_advance_count": {
+            "type": "number"
+          },
+          "next_doc": {
+            "type": "number"
+          },
+          "next_doc_count": {
+            "type": "number"
+          },
+          "score": {
+            "type": "number"
+          },
+          "score_count": {
+            "type": "number"
+          },
+          "compute_max_score": {
+            "type": "number"
+          },
+          "compute_max_score_count": {
+            "type": "number"
+          },
+          "count_weight": {
+            "type": "number"
+          },
+          "count_weight_count": {
+            "type": "number"
+          },
+          "set_min_competitive_score": {
+            "type": "number"
+          },
+          "set_min_competitive_score_count": {
+            "type": "number"
+          }
+        },
+        "required": [
+          "advance",
+          "advance_count",
+          "build_scorer",
+          "build_scorer_count",
+          "create_weight",
+          "create_weight_count",
+          "match",
+          "match_count",
+          "shallow_advance",
+          "shallow_advance_count",
+          "next_doc",
+          "next_doc_count",
+          "score",
+          "score_count",
+          "compute_max_score",
+          "compute_max_score_count",
+          "count_weight",
+          "count_weight_count",
+          "set_min_competitive_score",
+          "set_min_competitive_score_count"
+        ]
+      },
       "_types:ScrollId": {
         "type": "string"
       },
@@ -25592,9 +25035,6 @@
         ]
       },
       "_global.search._types:Context": {
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-mlt-query.html#_document_input_parameters"
-        },
         "description": "Text or location that we want similar documents for or a lookup to a document's field for the text.",
         "oneOf": [
           {
@@ -26240,6 +25680,15 @@
           "geo_distance": {
             "$ref": "#/components/schemas/_types.query_dsl:GeoDistanceQuery"
           },
+          "geo_grid": {
+            "description": "Matches `geo_point` and `geo_shape` values that intersect a grid cell from a GeoGrid aggregation.",
+            "type": "object",
+            "additionalProperties": {
+              "$ref": "#/components/schemas/_types.query_dsl:GeoGridQuery"
+            },
+            "minProperties": 1,
+            "maxProperties": 1
+          },
           "geo_polygon": {
             "$ref": "#/components/schemas/_types.query_dsl:GeoPolygonQuery"
           },
@@ -26474,7 +25923,6 @@
               "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-text-expansion-query.html"
             },
             "description": "Uses a natural language processing model to convert the query text into a list of token-weight pairs which are then used in a query against a sparse vector or rank features field.",
-            "x-available-since": "8.8.0",
             "type": "object",
             "additionalProperties": {
               "$ref": "#/components/schemas/_types.query_dsl:TextExpansionQuery"
@@ -26484,8 +25932,10 @@
           },
           "weighted_tokens": {
             "deprecated": true,
+            "externalDocs": {
+              "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-weighted-tokens-query.html"
+            },
             "description": "Supports returning text_expansion query results by sending in precomputed tokens with the query.",
-            "x-available-since": "8.13.0",
             "type": "object",
             "additionalProperties": {
               "$ref": "#/components/schemas/_types.query_dsl:WeightedTokensQuery"
@@ -26587,9 +26037,6 @@
         ]
       },
       "_types:MinimumShouldMatch": {
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-minimum-should-match.html"
-        },
         "description": "The minimum number of terms that should match as integer, percentage or range",
         "oneOf": [
           {
@@ -26771,6 +26218,9 @@
         ]
       },
       "_types.query_dsl:DistanceFeatureQuery": {
+        "externalDocs": {
+          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-distance-feature-query.html"
+        },
         "oneOf": [
           {
             "$ref": "#/components/schemas/_types.query_dsl:UntypedDistanceFeatureQuery"
@@ -27270,15 +26720,9 @@
         ]
       },
       "_types:MultiTermQueryRewrite": {
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-multi-term-rewrite.html"
-        },
         "type": "string"
       },
       "_types:Fuzziness": {
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/common-options.html#fuzziness"
-        },
         "oneOf": [
           {
             "type": "string"
@@ -27360,6 +26804,29 @@
           "plane"
         ]
       },
+      "_types.query_dsl:GeoGridQuery": {
+        "allOf": [
+          {
+            "$ref": "#/components/schemas/_types.query_dsl:QueryBase"
+          },
+          {
+            "type": "object",
+            "properties": {
+              "geogrid": {
+                "$ref": "#/components/schemas/_types:GeoTile"
+              },
+              "geohash": {
+                "$ref": "#/components/schemas/_types:GeoHash"
+              },
+              "geohex": {
+                "$ref": "#/components/schemas/_types:GeoHexCell"
+              }
+            },
+            "minProperties": 1,
+            "maxProperties": 1
+          }
+        ]
+      },
       "_types.query_dsl:GeoPolygonQuery": {
         "allOf": [
           {
@@ -27766,9 +27233,6 @@
         ]
       },
       "_types:SortOptions": {
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/sort-search-results.html"
-        },
         "type": "object",
         "properties": {
           "_score": {
@@ -28002,6 +27466,9 @@
             "$ref": "#/components/schemas/_types.query_dsl:QueryBase"
           },
           {
+            "externalDocs": {
+              "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-intervals-query.html"
+            },
             "type": "object",
             "properties": {
               "all_of": {
@@ -28135,9 +27602,6 @@
         "type": "object",
         "properties": {
           "analyzer": {
-            "externalDocs": {
-              "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/analysis.html"
-            },
             "description": "Analyzer used to normalize the term.",
             "type": "string"
           },
@@ -28168,9 +27632,6 @@
         "type": "object",
         "properties": {
           "analyzer": {
-            "externalDocs": {
-              "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/analysis.html"
-            },
             "description": "Analyzer used to analyze terms in the query.",
             "type": "string"
           },
@@ -28201,9 +27662,6 @@
         "type": "object",
         "properties": {
           "analyzer": {
-            "externalDocs": {
-              "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/analysis.html"
-            },
             "description": "Analyzer used to analyze the `prefix`.",
             "type": "string"
           },
@@ -28328,9 +27786,6 @@
             "type": "object",
             "properties": {
               "analyzer": {
-                "externalDocs": {
-                  "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/analysis.html"
-                },
                 "description": "Analyzer used to convert the text in the query value into tokens.",
                 "type": "string"
               },
@@ -28420,9 +27875,6 @@
             "type": "object",
             "properties": {
               "analyzer": {
-                "externalDocs": {
-                  "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/analysis.html"
-                },
                 "description": "Analyzer used to convert the text in the query value into tokens.",
                 "type": "string"
               },
@@ -28480,9 +27932,6 @@
             "type": "object",
             "properties": {
               "analyzer": {
-                "externalDocs": {
-                  "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/analysis.html"
-                },
                 "description": "Analyzer used to convert the text in the query value into tokens.",
                 "type": "string"
               },
@@ -28513,9 +27962,6 @@
             "type": "object",
             "properties": {
               "analyzer": {
-                "externalDocs": {
-                  "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/analysis.html"
-                },
                 "description": "Analyzer used to convert text in the query value into tokens.",
                 "type": "string"
               },
@@ -28650,9 +28096,6 @@
         ]
       },
       "_types.query_dsl:Like": {
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-mlt-query.html#_document_input_parameters"
-        },
         "description": "Text that we want similar documents for or a lookup to a document's field for the text.",
         "oneOf": [
           {
@@ -28732,9 +28175,6 @@
             "type": "object",
             "properties": {
               "analyzer": {
-                "externalDocs": {
-                  "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/analysis.html"
-                },
                 "description": "Analyzer used to convert the text in the query value into tokens.",
                 "type": "string"
               },
@@ -28922,6 +28362,9 @@
             "$ref": "#/components/schemas/_types.query_dsl:QueryBase"
           },
           {
+            "externalDocs": {
+              "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-pinned-query.html"
+            },
             "allOf": [
               {
                 "type": "object",
@@ -28991,7 +28434,6 @@
               },
               "case_insensitive": {
                 "description": "Allows ASCII case insensitive matching of the value with the indexed field values when set to `true`.\nDefault is `false` which means the case sensitivity of matching depends on the underlying field’s mapping.",
-                "x-available-since": "7.10.0",
                 "type": "boolean"
               }
             },
@@ -29014,9 +28456,6 @@
                 "type": "boolean"
               },
               "analyzer": {
-                "externalDocs": {
-                  "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/analysis.html"
-                },
                 "description": "Analyzer used to convert text in the query string into tokens.",
                 "type": "string"
               },
@@ -29117,6 +28556,9 @@
         "type": "string"
       },
       "_types.query_dsl:RangeQuery": {
+        "externalDocs": {
+          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-range-query.html"
+        },
         "oneOf": [
           {
             "$ref": "#/components/schemas/_types.query_dsl:UntypedRangeQuery"
@@ -29151,9 +28593,6 @@
         ]
       },
       "_types:DateFormat": {
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/mapping-date-format.html"
-        },
         "type": "string"
       },
       "_types.query_dsl:RangeQueryBase": {
@@ -29184,6 +28623,7 @@
                 "type": "object"
               },
               "from": {
+                "deprecated": true,
                 "oneOf": [
                   {
                     "type": "object"
@@ -29195,6 +28635,7 @@
                 ]
               },
               "to": {
+                "deprecated": true,
                 "oneOf": [
                   {
                     "type": "object"
@@ -29259,6 +28700,7 @@
                 "$ref": "#/components/schemas/_types:DateMath"
               },
               "from": {
+                "deprecated": true,
                 "oneOf": [
                   {
                     "$ref": "#/components/schemas/_types:DateMath"
@@ -29270,6 +28712,7 @@
                 ]
               },
               "to": {
+                "deprecated": true,
                 "oneOf": [
                   {
                     "$ref": "#/components/schemas/_types:DateMath"
@@ -29322,6 +28765,7 @@
                 "type": "number"
               },
               "from": {
+                "deprecated": true,
                 "oneOf": [
                   {
                     "type": "number"
@@ -29333,6 +28777,7 @@
                 ]
               },
               "to": {
+                "deprecated": true,
                 "oneOf": [
                   {
                     "type": "number"
@@ -29385,6 +28830,7 @@
                 "type": "string"
               },
               "from": {
+                "deprecated": true,
                 "oneOf": [
                   {
                     "type": "string"
@@ -29396,6 +28842,7 @@
                 ]
               },
               "to": {
+                "deprecated": true,
                 "oneOf": [
                   {
                     "type": "string"
@@ -29522,13 +28969,9 @@
             "properties": {
               "case_insensitive": {
                 "description": "Allows case insensitive matching of the regular expression value with the indexed field values when set to `true`.\nWhen `false`, case sensitivity of matching depends on the underlying field’s mapping.",
-                "x-available-since": "7.10.0",
                 "type": "boolean"
               },
               "flags": {
-                "externalDocs": {
-                  "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/regexp-syntax.html"
-                },
                 "description": "Enables optional operators for the regular expression.",
                 "type": "string"
               },
@@ -29540,9 +28983,6 @@
                 "$ref": "#/components/schemas/_types:MultiTermQueryRewrite"
               },
               "value": {
-                "externalDocs": {
-                  "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/regexp-syntax.html"
-                },
                 "description": "Regular expression for terms you wish to find in the provided field.",
                 "type": "string"
               }
@@ -29675,9 +29115,6 @@
             "type": "object",
             "properties": {
               "analyzer": {
-                "externalDocs": {
-                  "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/analysis.html"
-                },
                 "description": "Analyzer used to convert text in the query string into tokens.",
                 "type": "string"
               },
@@ -29737,9 +29174,6 @@
         ]
       },
       "_types.query_dsl:SimpleQueryStringFlags": {
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-simple-query-string-query.html#supported-flags"
-        },
         "description": "Query flags can be either a single flag or a combination of flags, e.g. `OR|AND|PREFIX`",
         "allOf": [
           {
@@ -30045,6 +29479,9 @@
             "$ref": "#/components/schemas/_types.query_dsl:QueryBase"
           },
           {
+            "externalDocs": {
+              "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-sparse-vector-query.html"
+            },
             "allOf": [
               {
                 "type": "object",
@@ -30058,8 +29495,7 @@
                   },
                   "prune": {
                     "description": "Whether to perform pruning, omitting the non-significant tokens from the query to improve query performance.\nIf prune is true but the pruning_config is not specified, pruning will occur but default values will be used.\nDefault: false",
-                    "x-technical-preview": true,
-                    "x-available-since": "8.15.0",
+                    "x-state": "Technical preview",
                     "type": "boolean"
                   },
                   "pruning_config": {
@@ -30121,7 +29557,6 @@
               },
               "case_insensitive": {
                 "description": "Allows ASCII case insensitive matching of the value with the indexed field values when set to `true`.\nWhen `false`, the case sensitivity of matching depends on the underlying field’s mapping.",
-                "x-available-since": "7.10.0",
                 "type": "boolean"
               }
             },
@@ -30149,6 +29584,9 @@
           {
             "type": "object",
             "properties": {
+              "minimum_should_match": {
+                "$ref": "#/components/schemas/_types:MinimumShouldMatch"
+              },
               "minimum_should_match_field": {
                 "$ref": "#/components/schemas/_types:Field"
               },
@@ -30231,7 +29669,6 @@
             "properties": {
               "case_insensitive": {
                 "description": "Allows case insensitive matching of the pattern with the indexed field values when set to true. Default is false which means the case sensitivity of matching depends on the underlying field’s mapping.",
-                "x-available-since": "7.10.0",
                 "type": "boolean"
               },
               "rewrite": {
@@ -31824,9 +31261,6 @@
             "$ref": "#/components/schemas/_types:Field"
           },
           "num_top_feature_importance_values": {
-            "externalDocs": {
-              "url": "https://www.elastic.co/guide/en/machine-learning/current/ml-feature-importance.html"
-            },
             "description": "Specifies the maximum number of feature importance values per document.",
             "type": "number"
           }
@@ -31840,9 +31274,6 @@
             "type": "number"
           },
           "num_top_feature_importance_values": {
-            "externalDocs": {
-              "url": "https://www.elastic.co/guide/en/machine-learning/current/ml-feature-importance.html"
-            },
             "description": "Specifies the maximum number of feature importance values per document.",
             "type": "number"
           },
@@ -33414,9 +32845,6 @@
             }
           },
           "format": {
-            "externalDocs": {
-              "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/mapping-date-format.html"
-            },
             "description": "A custom format for `date` type runtime fields.",
             "type": "string"
           },
@@ -33791,7 +33219,15 @@
             "type": "string"
           },
           "version": {
-            "type": "string"
+            "oneOf": [
+              {
+                "type": "string"
+              },
+              {
+                "nullable": true,
+                "type": "string"
+              }
+            ]
           },
           "alias_count": {
             "type": "string"
@@ -33990,7 +33426,7 @@
           },
           "dataset.size": {
             "description": "total size of dataset (including the cache for partially mounted indices)",
-            "x-available-since": "8.11.0",
+            "x-state": "Added in 8.11.0",
             "oneOf": [
               {
                 "type": "string"
@@ -35190,9 +34626,6 @@
         ]
       },
       "_types:ByteSize": {
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/api-conventions.html#byte-units"
-        },
         "oneOf": [
           {
             "type": "number"
@@ -35217,9 +34650,6 @@
           "warn"
         ]
       },
-      "_types:NodeId": {
-        "type": "string"
-      },
       "cat._types:CatTrainedModelsColumns": {
         "oneOf": [
           {
@@ -35343,7 +34773,6 @@
             "type": "string"
           },
           "type": {
-            "x-available-since": "8.0.0",
             "type": "string"
           }
         }
@@ -37887,6 +37316,9 @@
         ]
       },
       "_types.analysis:CharFilter": {
+        "externalDocs": {
+          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/analysis-charfilters.html"
+        },
         "oneOf": [
           {
             "type": "string"
@@ -38071,6 +37503,9 @@
         ]
       },
       "_types.analysis:TokenFilter": {
+        "externalDocs": {
+          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/analysis-tokenfilters.html"
+        },
         "oneOf": [
           {
             "type": "string"
@@ -38642,10 +38077,17 @@
                 "type": "boolean"
               },
               "keywords": {
-                "type": "array",
-                "items": {
-                  "type": "string"
-                }
+                "oneOf": [
+                  {
+                    "type": "string"
+                  },
+                  {
+                    "type": "array",
+                    "items": {
+                      "type": "string"
+                    }
+                  }
+                ]
               },
               "keywords_path": {
                 "type": "string"
@@ -39867,9 +39309,6 @@
         ]
       },
       "_types.analysis:Normalizer": {
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/analysis-normalizers.html"
-        },
         "discriminator": {
           "propertyName": "type"
         },
@@ -39923,6 +39362,9 @@
         ]
       },
       "_types.analysis:Tokenizer": {
+        "externalDocs": {
+          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/analysis-tokenizers.html"
+        },
         "oneOf": [
           {
             "type": "string"
@@ -40087,9 +39529,7 @@
               }
             },
             "required": [
-              "type",
-              "max_gram",
-              "min_gram"
+              "type"
             ]
           }
         ]
@@ -40124,8 +39564,7 @@
               }
             },
             "required": [
-              "type",
-              "buffer_size"
+              "type"
             ]
           }
         ]
@@ -40203,9 +39642,7 @@
               }
             },
             "required": [
-              "type",
-              "max_gram",
-              "min_gram"
+              "type"
             ]
           }
         ]
@@ -41393,9 +40830,6 @@
               "copy_to": {
                 "$ref": "#/components/schemas/_types:Fields"
               },
-              "similarity": {
-                "type": "string"
-              },
               "store": {
                 "type": "boolean"
               }
@@ -41407,9 +40841,6 @@
         "type": "object",
         "properties": {
           "meta": {
-            "externalDocs": {
-              "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/mapping-meta-field.html"
-            },
             "description": "Metadata about the field.",
             "type": "object",
             "additionalProperties": {
@@ -41456,6 +40887,20 @@
               "null_value": {
                 "type": "boolean"
               },
+              "ignore_malformed": {
+                "type": "boolean"
+              },
+              "script": {
+                "$ref": "#/components/schemas/_types:Script"
+              },
+              "on_script_error": {
+                "$ref": "#/components/schemas/_types.mapping:OnScriptError"
+              },
+              "time_series_dimension": {
+                "description": "For internal use by Elastic only. Marks the field as a time series dimension. Defaults to false.",
+                "x-state": "Technical preview",
+                "type": "boolean"
+              },
               "type": {
                 "type": "string",
                 "enum": [
@@ -41487,6 +40932,13 @@
           "disabled"
         ]
       },
+      "_types.mapping:OnScriptError": {
+        "type": "string",
+        "enum": [
+          "fail",
+          "continue"
+        ]
+      },
       "_types.mapping:DynamicProperty": {
         "allOf": [
           {
@@ -41541,7 +40993,15 @@
                 "type": "boolean"
               },
               "index_prefixes": {
-                "$ref": "#/components/schemas/_types.mapping:TextIndexPrefixes"
+                "oneOf": [
+                  {
+                    "$ref": "#/components/schemas/_types.mapping:TextIndexPrefixes"
+                  },
+                  {
+                    "nullable": true,
+                    "type": "string"
+                  }
+                ]
               },
               "norms": {
                 "type": "boolean"
@@ -41574,13 +41034,6 @@
           }
         ]
       },
-      "_types.mapping:OnScriptError": {
-        "type": "string",
-        "enum": [
-          "fail",
-          "continue"
-        ]
-      },
       "_types.mapping:TimeSeriesMetricType": {
         "type": "string",
         "enum": [
@@ -41702,12 +41155,23 @@
               "null_value": {
                 "type": "string"
               },
+              "similarity": {
+                "oneOf": [
+                  {
+                    "type": "string"
+                  },
+                  {
+                    "nullable": true,
+                    "type": "string"
+                  }
+                ]
+              },
               "split_queries_on_whitespace": {
                 "type": "boolean"
               },
               "time_series_dimension": {
                 "description": "For internal use by Elastic only. Marks the field as a time series dimension. Defaults to false.",
-                "x-technical-preview": true,
+                "x-state": "Technical preview",
                 "type": "boolean"
               },
               "type": {
@@ -41733,9 +41197,6 @@
             ]
           },
           "fields": {
-            "externalDocs": {
-              "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/multi-fields.html"
-            },
             "description": "Multi-fields allow the same string value to be indexed in multiple ways for different purposes, such as one\nfield for search and a multi-field for sorting and aggregations, or the same string value analyzed by different analyzers.",
             "type": "object",
             "additionalProperties": {
@@ -41743,9 +41204,6 @@
             }
           },
           "meta": {
-            "externalDocs": {
-              "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/mapping-meta-field.html"
-            },
             "description": "Metadata about the field.",
             "type": "object",
             "additionalProperties": {
@@ -41858,6 +41316,17 @@
               "search_quote_analyzer": {
                 "type": "string"
               },
+              "similarity": {
+                "oneOf": [
+                  {
+                    "type": "string"
+                  },
+                  {
+                    "nullable": true,
+                    "type": "string"
+                  }
+                ]
+              },
               "term_vector": {
                 "$ref": "#/components/schemas/_types.mapping:TermVectorOption"
               },
@@ -41907,7 +41376,15 @@
                 "type": "boolean"
               },
               "index_prefixes": {
-                "$ref": "#/components/schemas/_types.mapping:TextIndexPrefixes"
+                "oneOf": [
+                  {
+                    "$ref": "#/components/schemas/_types.mapping:TextIndexPrefixes"
+                  },
+                  {
+                    "nullable": true,
+                    "type": "string"
+                  }
+                ]
               },
               "norms": {
                 "type": "boolean"
@@ -41921,6 +41398,17 @@
               "search_quote_analyzer": {
                 "type": "string"
               },
+              "similarity": {
+                "oneOf": [
+                  {
+                    "type": "string"
+                  },
+                  {
+                    "nullable": true,
+                    "type": "string"
+                  }
+                ]
+              },
               "term_vector": {
                 "$ref": "#/components/schemas/_types.mapping:TermVectorOption"
               },
@@ -41992,7 +41480,6 @@
                 ]
               },
               "null_value": {
-                "x-available-since": "7.15.0",
                 "type": "string"
               }
             },
@@ -42494,7 +41981,7 @@
               },
               "time_series_dimension": {
                 "description": "For internal use by Elastic only. Marks the field as a time series dimension. Defaults to false.",
-                "x-technical-preview": true,
+                "x-state": "Technical preview",
                 "type": "boolean"
               },
               "type": {
@@ -42783,7 +42270,7 @@
               },
               "time_series_dimension": {
                 "description": "For internal use by Elastic only. Marks the field as a time series dimension. Defaults to false.",
-                "x-technical-preview": true,
+                "x-state": "Technical preview",
                 "type": "boolean"
               }
             }
@@ -43335,7 +42822,6 @@
           },
           "is_hidden": {
             "description": "If `true`, the alias is hidden.\nAll indices for the alias must have the same `is_hidden` value.",
-            "x-available-since": "7.16.0",
             "type": "boolean"
           }
         }
@@ -43567,12 +43053,12 @@
           },
           "ingested_as_first_pipeline_in_bytes": {
             "description": "Total number of bytes of all documents ingested by the pipeline.\nThis field is only present on pipelines which are the first to process a document.\nThus, it is not present on pipelines which only serve as a final pipeline after a default pipeline, a pipeline run after a reroute processor, or pipelines in pipeline processors.",
-            "x-available-since": "8.15.0",
+            "x-state": "Added in 8.15.0",
             "type": "number"
           },
           "produced_as_first_pipeline_in_bytes": {
             "description": "Total number of bytes of all documents produced by the pipeline.\nThis field is only present on pipelines which are the first to process a document.\nThus, it is not present on pipelines which only serve as a final pipeline after a default pipeline, a pipeline run after a reroute processor, or pipelines in pipeline processors.\nIn situations where there are subsequent pipelines, the value represents the size of the document after all pipelines have run.",
-            "x-available-since": "8.15.0",
+            "x-state": "Added in 8.15.0",
             "type": "number"
           }
         },
@@ -43771,9 +43257,6 @@
         }
       },
       "_types:DataStreamName": {
-        "externalDocs": {
-          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/indices-create-data-stream.html#indices-create-data-stream-api-path-params"
-        },
         "type": "string"
       },
       "indices._types:DataStreamLifecycle": {
@@ -44341,10 +43824,7 @@
             "$ref": "#/components/schemas/_types:DateTime"
           },
           "value": {
-            "type": "object",
-            "additionalProperties": {
-              "type": "object"
-            }
+            "type": "object"
           }
         },
         "required": [
@@ -44734,17 +44214,13 @@
           },
           "status": {
             "type": "number"
-          },
-          "type": {
-            "type": "string"
           }
         },
         "required": [
           "cause",
           "id",
           "index",
-          "status",
-          "type"
+          "status"
         ]
       },
       "_types:Retries": {
@@ -44777,6 +44253,9 @@
         "properties": {
           "phase": {
             "$ref": "#/components/schemas/enrich.execute_policy:EnrichPolicyPhase"
+          },
+          "step": {
+            "type": "string"
           }
         },
         "required": [
@@ -44789,7 +44268,8 @@
           "SCHEDULED",
           "RUNNING",
           "COMPLETE",
-          "FAILED"
+          "FAILED",
+          "CANCELLED"
         ]
       },
       "enrich._types:Summary": {
@@ -45018,9 +44498,6 @@
             }
           },
           "sequences": {
-            "externalDocs": {
-              "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/eql-syntax.html#eql-sequences"
-            },
             "description": "Contains event sequences matching the query. Each object represents a matching sequence. This parameter is only returned for EQL queries containing a sequence.",
             "type": "array",
             "items": {
@@ -45043,9 +44520,6 @@
             "type": "object"
           },
           "missing": {
-            "externalDocs": {
-              "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/eql-syntax.html#eql-missing-events"
-            },
             "description": "Set to `true` for events in a timespan-constrained sequence that do not meet a given condition.",
             "type": "boolean"
           },
@@ -45076,9 +44550,6 @@
             }
           },
           "join_keys": {
-            "externalDocs": {
-              "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/eql-syntax.html#eql-sequences"
-            },
             "description": "Shared field values used to constrain matches in the sequence. These are defined using the by keyword in the EQL query syntax.",
             "type": "array",
             "items": {
@@ -45252,16 +44723,12 @@
             "type": "string"
           },
           "metadata_field": {
-            "externalDocs": {
-              "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/mapping-fields.html"
-            },
             "description": "Whether this field is registered as a metadata field.",
             "type": "boolean"
           },
           "time_series_dimension": {
             "description": "Whether this field is used as a time series dimension.",
-            "x-technical-preview": true,
-            "x-available-since": "8.0.0",
+            "x-state": "Technical preview",
             "type": "boolean"
           },
           "time_series_metric": {
@@ -45269,8 +44736,7 @@
           },
           "non_dimension_indices": {
             "description": "If this list is present in response then some indices have the\nfield marked as a dimension and other indices, the ones in this list, do not.",
-            "x-technical-preview": true,
-            "x-available-since": "8.0.0",
+            "x-state": "Technical preview",
             "type": "array",
             "items": {
               "$ref": "#/components/schemas/_types:IndexName"
@@ -45278,8 +44744,7 @@
           },
           "metric_conflicts_indices": {
             "description": "The list of indices where this field is present if these indices\ndon’t have the same `time_series_metric` value for this field.",
-            "x-technical-preview": true,
-            "x-available-since": "8.0.0",
+            "x-state": "Technical preview",
             "type": "array",
             "items": {
               "$ref": "#/components/schemas/_types:IndexName"
@@ -45448,9 +44913,6 @@
             "$ref": "#/components/schemas/_types:Duration"
           },
           "use_significance": {
-            "externalDocs": {
-              "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/search-aggregations-bucket-significantterms-aggregation.html"
-            },
             "description": "Filters associated terms so only those that are significantly associated with your query are included.",
             "type": "boolean"
           }
@@ -45917,7 +45379,6 @@
           },
           "system": {
             "description": "If `true`, the data stream is created and managed by an Elastic stack component and cannot be modified through normal user interaction.",
-            "x-available-since": "7.10.0",
             "type": "boolean"
           },
           "template": {
@@ -46052,6 +45513,13 @@
           },
           "data_stream": {
             "$ref": "#/components/schemas/indices._types:IndexTemplateDataStreamConfiguration"
+          },
+          "deprecated": {
+            "description": "Marks this index template as deprecated.\nWhen creating or updating a non-deprecated index template that uses deprecated components,\nElasticsearch will emit a deprecation warning.",
+            "type": "boolean"
+          },
+          "ignore_missing_component_templates": {
+            "$ref": "#/components/schemas/_types:Names"
           }
         },
         "required": [
@@ -46161,6 +45629,9 @@
         "properties": {
           "hidden": {
             "type": "boolean"
+          },
+          "allow_custom_routing": {
+            "type": "boolean"
           }
         }
       },
@@ -46170,10 +45641,7 @@
           "_shards": {
             "$ref": "#/components/schemas/_types:ShardStatistics"
           }
-        },
-        "required": [
-          "_shards"
-        ]
+        }
       },
       "indices.resolve_index:ResolveIndexItem": {
         "type": "object",
@@ -46521,6 +45989,9 @@
       "inference._types:InferenceEndpoint": {
         "type": "object",
         "properties": {
+          "chunking_settings": {
+            "$ref": "#/components/schemas/inference._types:InferenceChunkingSettings"
+          },
           "service": {
             "description": "The service type",
             "type": "string"
@@ -46534,10 +46005,30 @@
         },
         "required": [
           "service",
-          "service_settings",
-          "task_settings"
+          "service_settings"
         ]
       },
+      "inference._types:InferenceChunkingSettings": {
+        "type": "object",
+        "properties": {
+          "max_chunk_size": {
+            "description": "Specifies the maximum size of a chunk in words\nThis value cannot be higher than `300` or lower than `20` (for `sentence` strategy) or `10` (for `word` strategy)",
+            "type": "number"
+          },
+          "overlap": {
+            "description": "Specifies the number of overlapping words for chunks\nOnly for `word` chunking strategy\nThis value cannot be higher than the half of `max_chunk_size`",
+            "type": "number"
+          },
+          "sentence_overlap": {
+            "description": "Specifies the number of overlapping sentences for chunks\nOnly for `sentence` chunking strategy\nIt can be either `1` or `0`",
+            "type": "number"
+          },
+          "strategy": {
+            "description": "Specifies the chunking strategy\nIt could be either `sentence` or `word`",
+            "type": "string"
+          }
+        }
+      },
       "inference._types:ServiceSettings": {
         "type": "object"
       },
@@ -46756,6 +46247,9 @@
           "circle": {
             "$ref": "#/components/schemas/ingest._types:CircleProcessor"
           },
+          "community_id": {
+            "$ref": "#/components/schemas/ingest._types:CommunityIDProcessor"
+          },
           "convert": {
             "$ref": "#/components/schemas/ingest._types:ConvertProcessor"
           },
@@ -46783,9 +46277,15 @@
           "fail": {
             "$ref": "#/components/schemas/ingest._types:FailProcessor"
           },
+          "fingerprint": {
+            "$ref": "#/components/schemas/ingest._types:FingerprintProcessor"
+          },
           "foreach": {
             "$ref": "#/components/schemas/ingest._types:ForeachProcessor"
           },
+          "ip_location": {
+            "$ref": "#/components/schemas/ingest._types:IpLocationProcessor"
+          },
           "geo_grid": {
             "$ref": "#/components/schemas/ingest._types:GeoGridProcessor"
           },
@@ -46816,12 +46316,18 @@
           "lowercase": {
             "$ref": "#/components/schemas/ingest._types:LowercaseProcessor"
           },
+          "network_direction": {
+            "$ref": "#/components/schemas/ingest._types:NetworkDirectionProcessor"
+          },
           "pipeline": {
             "$ref": "#/components/schemas/ingest._types:PipelineProcessor"
           },
           "redact": {
             "$ref": "#/components/schemas/ingest._types:RedactProcessor"
           },
+          "registered_domain": {
+            "$ref": "#/components/schemas/ingest._types:RegisteredDomainProcessor"
+          },
           "remove": {
             "$ref": "#/components/schemas/ingest._types:RemoveProcessor"
           },
@@ -46846,6 +46352,9 @@
           "split": {
             "$ref": "#/components/schemas/ingest._types:SplitProcessor"
           },
+          "terminate": {
+            "$ref": "#/components/schemas/ingest._types:TerminateProcessor"
+          },
           "trim": {
             "$ref": "#/components/schemas/ingest._types:TrimProcessor"
           },
@@ -47043,6 +46552,53 @@
           "shape"
         ]
       },
+      "ingest._types:CommunityIDProcessor": {
+        "allOf": [
+          {
+            "$ref": "#/components/schemas/ingest._types:ProcessorBase"
+          },
+          {
+            "type": "object",
+            "properties": {
+              "source_ip": {
+                "$ref": "#/components/schemas/_types:Field"
+              },
+              "source_port": {
+                "$ref": "#/components/schemas/_types:Field"
+              },
+              "destination_ip": {
+                "$ref": "#/components/schemas/_types:Field"
+              },
+              "destination_port": {
+                "$ref": "#/components/schemas/_types:Field"
+              },
+              "iana_number": {
+                "$ref": "#/components/schemas/_types:Field"
+              },
+              "icmp_type": {
+                "$ref": "#/components/schemas/_types:Field"
+              },
+              "icmp_code": {
+                "$ref": "#/components/schemas/_types:Field"
+              },
+              "transport": {
+                "$ref": "#/components/schemas/_types:Field"
+              },
+              "target_field": {
+                "$ref": "#/components/schemas/_types:Field"
+              },
+              "seed": {
+                "description": "Seed for the community ID hash. Must be between 0 and 65535 (inclusive). The\nseed can prevent hash collisions between network domains, such as a staging\nand production network that use the same addressing scheme.",
+                "type": "number"
+              },
+              "ignore_missing": {
+                "description": "If true and any required fields are missing, the processor quietly exits\nwithout modifying the document.",
+                "type": "boolean"
+              }
+            }
+          }
+        ]
+      },
       "ingest._types:ConvertProcessor": {
         "allOf": [
           {
@@ -47077,10 +46633,11 @@
         "enum": [
           "integer",
           "long",
-          "float",
           "double",
-          "string",
+          "float",
           "boolean",
+          "ip",
+          "string",
           "auto"
         ]
       },
@@ -47154,6 +46711,10 @@
               "timezone": {
                 "description": "The timezone to use when parsing the date.\nSupports template snippets.",
                 "type": "string"
+              },
+              "output_format": {
+                "description": "The format to use when writing the date to target_field. Must be a valid\njava time pattern.",
+                "type": "string"
               }
             },
             "required": [
@@ -47347,6 +46908,48 @@
           }
         ]
       },
+      "ingest._types:FingerprintProcessor": {
+        "allOf": [
+          {
+            "$ref": "#/components/schemas/ingest._types:ProcessorBase"
+          },
+          {
+            "type": "object",
+            "properties": {
+              "fields": {
+                "$ref": "#/components/schemas/_types:Fields"
+              },
+              "target_field": {
+                "$ref": "#/components/schemas/_types:Field"
+              },
+              "salt": {
+                "description": "Salt value for the hash function.",
+                "type": "string"
+              },
+              "method": {
+                "$ref": "#/components/schemas/ingest._types:FingerprintDigest"
+              },
+              "ignore_missing": {
+                "description": "If true, the processor ignores any missing fields. If all fields are\nmissing, the processor silently exits without modifying the document.",
+                "type": "boolean"
+              }
+            },
+            "required": [
+              "fields"
+            ]
+          }
+        ]
+      },
+      "ingest._types:FingerprintDigest": {
+        "type": "string",
+        "enum": [
+          "MD5",
+          "SHA-1",
+          "SHA-256",
+          "SHA-512",
+          "MurmurHash3"
+        ]
+      },
       "ingest._types:ForeachProcessor": {
         "allOf": [
           {
@@ -47373,6 +46976,50 @@
           }
         ]
       },
+      "ingest._types:IpLocationProcessor": {
+        "allOf": [
+          {
+            "$ref": "#/components/schemas/ingest._types:ProcessorBase"
+          },
+          {
+            "type": "object",
+            "properties": {
+              "database_file": {
+                "description": "The database filename referring to a database the module ships with (GeoLite2-City.mmdb, GeoLite2-Country.mmdb, or GeoLite2-ASN.mmdb) or a custom database in the ingest-geoip config directory.",
+                "type": "string"
+              },
+              "field": {
+                "$ref": "#/components/schemas/_types:Field"
+              },
+              "first_only": {
+                "description": "If `true`, only the first found IP location data will be returned, even if the field contains an array.",
+                "type": "boolean"
+              },
+              "ignore_missing": {
+                "description": "If `true` and `field` does not exist, the processor quietly exits without modifying the document.",
+                "type": "boolean"
+              },
+              "properties": {
+                "description": "Controls what properties are added to the `target_field` based on the IP location lookup.",
+                "type": "array",
+                "items": {
+                  "type": "string"
+                }
+              },
+              "target_field": {
+                "$ref": "#/components/schemas/_types:Field"
+              },
+              "download_database_on_pipeline_creation": {
+                "description": "If `true` (and if `ingest.geoip.downloader.eager.download` is `false`), the missing database is downloaded when the pipeline is created.\nElse, the download is triggered by when the pipeline is used as the `default_pipeline` or `final_pipeline` in an index.",
+                "type": "boolean"
+              }
+            },
+            "required": [
+              "field"
+            ]
+          }
+        ]
+      },
       "ingest._types:GeoGridProcessor": {
         "allOf": [
           {
@@ -47485,6 +47132,10 @@
           {
             "type": "object",
             "properties": {
+              "ecs_compatibility": {
+                "description": "Must be disabled or v1. If v1, the processor uses patterns with Elastic\nCommon Schema (ECS) field names.",
+                "type": "string"
+              },
               "field": {
                 "$ref": "#/components/schemas/_types:Field"
               },
@@ -47815,6 +47466,41 @@
           }
         ]
       },
+      "ingest._types:NetworkDirectionProcessor": {
+        "allOf": [
+          {
+            "$ref": "#/components/schemas/ingest._types:ProcessorBase"
+          },
+          {
+            "type": "object",
+            "properties": {
+              "source_ip": {
+                "$ref": "#/components/schemas/_types:Field"
+              },
+              "destination_ip": {
+                "$ref": "#/components/schemas/_types:Field"
+              },
+              "target_field": {
+                "$ref": "#/components/schemas/_types:Field"
+              },
+              "internal_networks": {
+                "description": "List of internal networks. Supports IPv4 and IPv6 addresses and ranges in\nCIDR notation. Also supports the named ranges listed below. These may be\nconstructed with template snippets. Must specify only one of\ninternal_networks or internal_networks_field.",
+                "type": "array",
+                "items": {
+                  "type": "string"
+                }
+              },
+              "internal_networks_field": {
+                "$ref": "#/components/schemas/_types:Field"
+              },
+              "ignore_missing": {
+                "description": "If true and any required fields are missing, the processor quietly exits\nwithout modifying the document.",
+                "type": "boolean"
+              }
+            }
+          }
+        ]
+      },
       "ingest._types:PipelineProcessor": {
         "allOf": [
           {
@@ -47876,6 +47562,10 @@
               "skip_if_unlicensed": {
                 "description": "If `true` and the current license does not support running redact processors, then the processor quietly exits without modifying the document",
                 "type": "boolean"
+              },
+              "trace_redact": {
+                "description": "If `true` then ingest metadata `_ingest._redact._is_redacted` is set to `true` if the document has been redacted",
+                "type": "boolean"
               }
             },
             "required": [
@@ -47885,6 +47575,31 @@
           }
         ]
       },
+      "ingest._types:RegisteredDomainProcessor": {
+        "allOf": [
+          {
+            "$ref": "#/components/schemas/ingest._types:ProcessorBase"
+          },
+          {
+            "type": "object",
+            "properties": {
+              "field": {
+                "$ref": "#/components/schemas/_types:Field"
+              },
+              "target_field": {
+                "$ref": "#/components/schemas/_types:Field"
+              },
+              "ignore_missing": {
+                "description": "If true and any required fields are missing, the processor quietly exits\nwithout modifying the document.",
+                "type": "boolean"
+              }
+            },
+            "required": [
+              "field"
+            ]
+          }
+        ]
+      },
       "ingest._types:RemoveProcessor": {
         "allOf": [
           {
@@ -48130,6 +47845,16 @@
           }
         ]
       },
+      "ingest._types:TerminateProcessor": {
+        "allOf": [
+          {
+            "$ref": "#/components/schemas/ingest._types:ProcessorBase"
+          },
+          {
+            "type": "object"
+          }
+        ]
+      },
       "ingest._types:TrimProcessor": {
         "allOf": [
           {
@@ -48269,7 +47994,6 @@
               },
               "extract_device_type": {
                 "description": "Extracts device type from the user agent string on a best-effort basis.",
-                "x-available-since": "8.9.0",
                 "x-beta": true,
                 "type": "boolean"
               }
@@ -48365,6 +48089,9 @@
       "ingest.simulate:Ingest": {
         "type": "object",
         "properties": {
+          "_redact": {
+            "$ref": "#/components/schemas/ingest.simulate:Redact"
+          },
           "timestamp": {
             "$ref": "#/components/schemas/_types:DateTime"
           },
@@ -48376,6 +48103,18 @@
           "timestamp"
         ]
       },
+      "ingest.simulate:Redact": {
+        "type": "object",
+        "properties": {
+          "_is_redacted": {
+            "description": "indicates if document has been redacted",
+            "type": "boolean"
+          }
+        },
+        "required": [
+          "_is_redacted"
+        ]
+      },
       "_spec_utils:StringifiedVersionNumber": {
         "description": "Some APIs will return values such as numbers also as a string (notably epoch timestamps). This behavior\nis used to capture this behavior while keeping the semantics of the field type.\n\nDepending on the target language, code generators can keep the union or remove it and leniently parse\nstrings to the target type.",
         "oneOf": [
@@ -48531,9 +48270,6 @@
             "type": "string"
           },
           "pipeline": {
-            "externalDocs": {
-              "url": "https://www.elastic.co/guide/en/logstash/current/configuration-file-structure.html"
-            },
             "description": "Configuration for the pipeline.",
             "type": "string"
           },
@@ -48569,9 +48305,6 @@
         "type": "object",
         "properties": {
           "pipeline.workers": {
-            "externalDocs": {
-              "url": "https://www.elastic.co/guide/en/logstash/current/logstash-settings-file.html"
-            },
             "description": "The number of workers that will, in parallel, execute the filter and output stages of the pipeline.",
             "type": "number"
           },
@@ -48584,9 +48317,6 @@
             "type": "number"
           },
           "queue.type": {
-            "externalDocs": {
-              "url": "https://www.elastic.co/guide/en/logstash/current/logstash-settings-file.html"
-            },
             "description": "The internal queuing model to use for event buffering.",
             "type": "string"
           },
@@ -49069,9 +48799,6 @@
         "type": "object",
         "properties": {
           "mse": {
-            "externalDocs": {
-              "url": "https://en.wikipedia.org/wiki/Mean_squared_error"
-            },
             "description": "Average squared difference between the predicted values and the actual (ground truth) value. For more information, read this wiki article.",
             "type": "object",
             "additionalProperties": {
@@ -49085,9 +48812,6 @@
             "$ref": "#/components/schemas/ml._types:DataframeEvaluationRegressionMetricsHuber"
           },
           "r_squared": {
-            "externalDocs": {
-              "url": "https://en.wikipedia.org/wiki/Coefficient_of_determination"
-            },
             "description": "Proportion of the variance in the dependent variable that is predictable from the independent variables.",
             "type": "object",
             "additionalProperties": {
@@ -49486,6 +49210,9 @@
           },
           "version": {
             "$ref": "#/components/schemas/_types:VersionString"
+          },
+          "_meta": {
+            "$ref": "#/components/schemas/_types:Metadata"
           }
         },
         "required": [
@@ -50221,8 +49948,7 @@
         },
         "required": [
           "datafeed_id",
-          "state",
-          "timing_stats"
+          "state"
         ]
       },
       "ml._types:DatafeedTimingStats": {
@@ -50235,6 +49961,9 @@
           "exponential_average_search_time_per_hour_ms": {
             "$ref": "#/components/schemas/_types:DurationValueUnitFloatMillis"
           },
+          "exponential_average_calculation_context": {
+            "$ref": "#/components/schemas/ml._types:ExponentialAverageCalculationContext"
+          },
           "job_id": {
             "$ref": "#/components/schemas/_types:Id"
           },
@@ -50268,6 +49997,23 @@
         "description": "Time unit for fractional milliseconds",
         "type": "number"
       },
+      "ml._types:ExponentialAverageCalculationContext": {
+        "type": "object",
+        "properties": {
+          "incremental_metric_value_ms": {
+            "$ref": "#/components/schemas/_types:DurationValueUnitFloatMillis"
+          },
+          "latest_timestamp": {
+            "$ref": "#/components/schemas/_types:EpochTimeUnitMillis"
+          },
+          "previous_exponential_average_ms": {
+            "$ref": "#/components/schemas/_types:DurationValueUnitFloatMillis"
+          }
+        },
+        "required": [
+          "incremental_metric_value_ms"
+        ]
+      },
       "ml._types:DatafeedRunningState": {
         "type": "object",
         "properties": {
@@ -50676,6 +50422,9 @@
           "model_bytes_memory_limit": {
             "$ref": "#/components/schemas/_types:ByteSize"
           },
+          "output_memory_allocator_bytes": {
+            "$ref": "#/components/schemas/_types:ByteSize"
+          },
           "peak_model_bytes": {
             "$ref": "#/components/schemas/_types:ByteSize"
           },
@@ -50875,8 +50624,7 @@
             "type": "number"
           },
           "model_memory_limit": {
-            "description": "The approximate maximum amount of memory resources that are required for analytical processing. Once this limit is approached, data pruning becomes more aggressive. Upon exceeding this limit, new entities are not modeled. If the `xpack.ml.max_model_memory_limit` setting has a value greater than 0 and less than 1024mb, that value is used instead of the default. The default value is relatively small to ensure that high resource usage is a conscious decision. If you have jobs that are expected to analyze high cardinality fields, you will likely need to use a higher value. If you specify a number instead of a string, the units are assumed to be MiB. Specifying a string is recommended for clarity. If you specify a byte size unit of `b` or `kb` and the number does not equate to a discrete number of megabytes, it is rounded down to the closest MiB. The minimum valid value is 1 MiB. If you specify a value less than 1 MiB, an error occurs. If you specify a value for the `xpack.ml.max_model_memory_limit` setting, an error occurs when you try to create jobs that have `model_memory_limit` values greater than that setting value.",
-            "type": "string"
+            "$ref": "#/components/schemas/_types:ByteSize"
           }
         }
       },
@@ -50930,7 +50678,6 @@
         "properties": {
           "annotations_enabled": {
             "description": "If true, enables calculation and storage of the model change annotations for each entity that is being analyzed.",
-            "x-available-since": "7.9.0",
             "type": "boolean"
           },
           "enabled": {
@@ -50980,8 +50727,7 @@
           "jobs",
           "overall_score",
           "result_type",
-          "timestamp",
-          "timestamp_string"
+          "timestamp"
         ]
       },
       "_types:DurationValueUnitSeconds": {
@@ -51084,9 +50830,15 @@
           "model_size_bytes": {
             "$ref": "#/components/schemas/_types:ByteSize"
           },
+          "model_package": {
+            "$ref": "#/components/schemas/ml._types:ModelPackageConfig"
+          },
           "location": {
             "$ref": "#/components/schemas/ml._types:TrainedModelLocation"
           },
+          "platform_architecture": {
+            "type": "string"
+          },
           "prefix_strings": {
             "$ref": "#/components/schemas/ml._types:TrainedModelPrefixStrings"
           }
@@ -51124,6 +50876,9 @@
           "fill_mask": {
             "$ref": "#/components/schemas/ml._types:FillMaskInferenceOptions"
           },
+          "learning_to_rank": {
+            "$ref": "#/components/schemas/ml._types:LearningToRankConfig"
+          },
           "ner": {
             "$ref": "#/components/schemas/ml._types:NerInferenceOptions"
           },
@@ -51163,6 +50918,9 @@
             "items": {
               "type": "string"
             }
+          },
+          "vocabulary": {
+            "$ref": "#/components/schemas/ml._types:Vocabulary"
           }
         }
       },
@@ -51173,37 +50931,53 @@
           "bert": {
             "$ref": "#/components/schemas/ml._types:NlpBertTokenizationConfig"
           },
+          "bert_ja": {
+            "$ref": "#/components/schemas/ml._types:NlpBertTokenizationConfig"
+          },
           "mpnet": {
             "$ref": "#/components/schemas/ml._types:NlpBertTokenizationConfig"
           },
           "roberta": {
             "$ref": "#/components/schemas/ml._types:NlpRobertaTokenizationConfig"
+          },
+          "xlm_roberta": {
+            "$ref": "#/components/schemas/ml._types:XlmRobertaTokenizationConfig"
           }
         },
         "minProperties": 1,
         "maxProperties": 1
       },
       "ml._types:NlpBertTokenizationConfig": {
+        "allOf": [
+          {
+            "$ref": "#/components/schemas/ml._types:CommonTokenizationConfig"
+          },
+          {
+            "type": "object"
+          }
+        ]
+      },
+      "ml._types:CommonTokenizationConfig": {
         "type": "object",
         "properties": {
           "do_lower_case": {
             "description": "Should the tokenizer lower case the text",
             "type": "boolean"
           },
-          "with_special_tokens": {
-            "description": "Is tokenization completed with special tokens",
-            "type": "boolean"
-          },
           "max_sequence_length": {
             "description": "Maximum input sequence length for the model",
             "type": "number"
           },
-          "truncate": {
-            "$ref": "#/components/schemas/ml._types:TokenizationTruncate"
-          },
           "span": {
             "description": "Tokenization spanning options. Special value of -1 indicates no spanning takes place",
             "type": "number"
+          },
+          "truncate": {
+            "$ref": "#/components/schemas/ml._types:TokenizationTruncate"
+          },
+          "with_special_tokens": {
+            "description": "Is tokenization completed with special tokens",
+            "type": "boolean"
           }
         }
       },
@@ -51216,28 +50990,41 @@
         ]
       },
       "ml._types:NlpRobertaTokenizationConfig": {
-        "type": "object",
-        "properties": {
-          "add_prefix_space": {
-            "description": "Should the tokenizer prefix input with a space character",
-            "type": "boolean"
-          },
-          "with_special_tokens": {
-            "description": "Is tokenization completed with special tokens",
-            "type": "boolean"
-          },
-          "max_sequence_length": {
-            "description": "Maximum input sequence length for the model",
-            "type": "number"
+        "allOf": [
+          {
+            "$ref": "#/components/schemas/ml._types:CommonTokenizationConfig"
           },
-          "truncate": {
-            "$ref": "#/components/schemas/ml._types:TokenizationTruncate"
+          {
+            "type": "object",
+            "properties": {
+              "add_prefix_space": {
+                "description": "Should the tokenizer prefix input with a space character",
+                "type": "boolean"
+              }
+            }
+          }
+        ]
+      },
+      "ml._types:XlmRobertaTokenizationConfig": {
+        "allOf": [
+          {
+            "$ref": "#/components/schemas/ml._types:CommonTokenizationConfig"
           },
-          "span": {
-            "description": "Tokenization spanning options. Special value of -1 indicates no spanning takes place",
-            "type": "number"
+          {
+            "type": "object"
           }
-        }
+        ]
+      },
+      "ml._types:Vocabulary": {
+        "type": "object",
+        "properties": {
+          "index": {
+            "$ref": "#/components/schemas/_types:IndexName"
+          }
+        },
+        "required": [
+          "index"
+        ]
       },
       "ml._types:ZeroShotClassificationInferenceOptions": {
         "type": "object",
@@ -51293,8 +51080,65 @@
           "results_field": {
             "description": "The field that is added to incoming documents to contain the inference prediction. Defaults to predicted_value.",
             "type": "string"
+          },
+          "vocabulary": {
+            "$ref": "#/components/schemas/ml._types:Vocabulary"
           }
-        }
+        },
+        "required": [
+          "vocabulary"
+        ]
+      },
+      "ml._types:LearningToRankConfig": {
+        "type": "object",
+        "properties": {
+          "default_params": {
+            "type": "object",
+            "additionalProperties": {
+              "type": "object"
+            }
+          },
+          "feature_extractors": {
+            "type": "array",
+            "items": {
+              "type": "object",
+              "additionalProperties": {
+                "$ref": "#/components/schemas/ml._types:FeatureExtractor"
+              }
+            }
+          },
+          "num_top_feature_importance_values": {
+            "type": "number"
+          }
+        },
+        "required": [
+          "num_top_feature_importance_values"
+        ]
+      },
+      "ml._types:FeatureExtractor": {
+        "allOf": [
+          {
+            "$ref": "#/components/schemas/ml._types:QueryFeatureExtractor"
+          }
+        ]
+      },
+      "ml._types:QueryFeatureExtractor": {
+        "type": "object",
+        "properties": {
+          "default_score": {
+            "type": "number"
+          },
+          "feature_name": {
+            "type": "string"
+          },
+          "query": {
+            "$ref": "#/components/schemas/_types.query_dsl:QueryContainer"
+          }
+        },
+        "required": [
+          "feature_name",
+          "query"
+        ]
       },
       "ml._types:NerInferenceOptions": {
         "type": "object",
@@ -51318,17 +51162,6 @@
           }
         }
       },
-      "ml._types:Vocabulary": {
-        "type": "object",
-        "properties": {
-          "index": {
-            "$ref": "#/components/schemas/_types:IndexName"
-          }
-        },
-        "required": [
-          "index"
-        ]
-      },
       "ml._types:PassThroughInferenceOptions": {
         "type": "object",
         "properties": {
@@ -51357,8 +51190,14 @@
           "results_field": {
             "description": "The field that is added to incoming documents to contain the inference prediction. Defaults to predicted_value.",
             "type": "string"
+          },
+          "vocabulary": {
+            "$ref": "#/components/schemas/ml._types:Vocabulary"
           }
-        }
+        },
+        "required": [
+          "vocabulary"
+        ]
       },
       "ml._types:TextExpansionInferenceOptions": {
         "type": "object",
@@ -51369,8 +51208,14 @@
           "results_field": {
             "description": "The field that is added to incoming documents to contain the inference prediction. Defaults to predicted_value.",
             "type": "string"
+          },
+          "vocabulary": {
+            "$ref": "#/components/schemas/ml._types:Vocabulary"
           }
-        }
+        },
+        "required": [
+          "vocabulary"
+        ]
       },
       "ml._types:QuestionAnsweringInferenceOptions": {
         "type": "object",
@@ -51443,9 +51288,6 @@
         "type": "object",
         "properties": {
           "absolute_importance": {
-            "externalDocs": {
-              "url": "https://www.elastic.co/guide/en/machine-learning/current/dfa-regression-lossfunction.html"
-            },
             "description": "A positive number showing how much the parameter influences the variation of the loss function. For hyperparameters with values that are not specified by the user but tuned during hyperparameter optimization.",
             "type": "number"
           },
@@ -51539,6 +51381,75 @@
           "importance"
         ]
       },
+      "ml._types:ModelPackageConfig": {
+        "type": "object",
+        "properties": {
+          "create_time": {
+            "$ref": "#/components/schemas/_types:EpochTimeUnitMillis"
+          },
+          "description": {
+            "type": "string"
+          },
+          "inference_config": {
+            "type": "object",
+            "additionalProperties": {
+              "type": "object"
+            }
+          },
+          "metadata": {
+            "$ref": "#/components/schemas/_types:Metadata"
+          },
+          "minimum_version": {
+            "type": "string"
+          },
+          "model_repository": {
+            "type": "string"
+          },
+          "model_type": {
+            "type": "string"
+          },
+          "packaged_model_id": {
+            "$ref": "#/components/schemas/_types:Id"
+          },
+          "platform_architecture": {
+            "type": "string"
+          },
+          "prefix_strings": {
+            "$ref": "#/components/schemas/ml._types:TrainedModelPrefixStrings"
+          },
+          "size": {
+            "$ref": "#/components/schemas/_types:ByteSize"
+          },
+          "sha256": {
+            "type": "string"
+          },
+          "tags": {
+            "type": "array",
+            "items": {
+              "type": "string"
+            }
+          },
+          "vocabulary_file": {
+            "type": "string"
+          }
+        },
+        "required": [
+          "packaged_model_id"
+        ]
+      },
+      "ml._types:TrainedModelPrefixStrings": {
+        "type": "object",
+        "properties": {
+          "ingest": {
+            "description": "String prepended to input at ingest",
+            "type": "string"
+          },
+          "search": {
+            "description": "String prepended to input at search",
+            "type": "string"
+          }
+        }
+      },
       "ml._types:TrainedModelLocation": {
         "type": "object",
         "properties": {
@@ -51561,19 +51472,6 @@
           "name"
         ]
       },
-      "ml._types:TrainedModelPrefixStrings": {
-        "type": "object",
-        "properties": {
-          "ingest": {
-            "description": "String prepended to input at ingest",
-            "type": "string"
-          },
-          "search": {
-            "description": "String prepended to input at search",
-            "type": "string"
-          }
-        }
-      },
       "ml._types:TrainedModelStats": {
         "type": "object",
         "properties": {
@@ -51584,9 +51482,6 @@
             "$ref": "#/components/schemas/ml._types:TrainedModelInferenceStats"
           },
           "ingest": {
-            "externalDocs": {
-              "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/cluster-nodes-stats.html"
-            },
             "description": "A collection of ingest stats for the model across all nodes.\nThe values are summations of the individual node statistics.\nThe format matches the ingest section in the nodes stats API.",
             "type": "object",
             "additionalProperties": {
@@ -51613,6 +51508,9 @@
       "ml._types:TrainedModelDeploymentStats": {
         "type": "object",
         "properties": {
+          "adaptive_allocations": {
+            "$ref": "#/components/schemas/ml._types:AdaptiveAllocationsSettings"
+          },
           "allocation_status": {
             "$ref": "#/components/schemas/ml._types:TrainedModelDeploymentAllocationStatus"
           },
@@ -51644,6 +51542,12 @@
             "description": "The number of allocations requested.",
             "type": "number"
           },
+          "peak_throughput_per_minute": {
+            "type": "number"
+          },
+          "priority": {
+            "$ref": "#/components/schemas/ml._types:TrainingPriority"
+          },
           "queue_capacity": {
             "description": "The number of inference requests that can be queued before new requests are rejected.",
             "type": "number"
@@ -51660,7 +51564,7 @@
             "$ref": "#/components/schemas/_types:EpochTimeUnitMillis"
           },
           "state": {
-            "$ref": "#/components/schemas/ml._types:DeploymentState"
+            "$ref": "#/components/schemas/ml._types:DeploymentAssignmentState"
           },
           "threads_per_allocation": {
             "description": "The number of threads used be each allocation during inference.",
@@ -51672,20 +51576,29 @@
           }
         },
         "required": [
-          "allocation_status",
           "deployment_id",
-          "error_count",
-          "inference_count",
           "model_id",
           "nodes",
-          "number_of_allocations",
-          "queue_capacity",
-          "rejected_execution_count",
-          "reason",
-          "start_time",
-          "state",
-          "threads_per_allocation",
-          "timeout_count"
+          "peak_throughput_per_minute",
+          "priority",
+          "start_time"
+        ]
+      },
+      "ml._types:AdaptiveAllocationsSettings": {
+        "type": "object",
+        "properties": {
+          "enabled": {
+            "type": "boolean"
+          },
+          "min_number_of_allocations": {
+            "type": "number"
+          },
+          "max_number_of_allocations": {
+            "type": "number"
+          }
+        },
+        "required": [
+          "enabled"
         ]
       },
       "ml._types:TrainedModelDeploymentAllocationStatus": {
@@ -51723,6 +51636,12 @@
           "average_inference_time_ms": {
             "$ref": "#/components/schemas/_types:DurationValueUnitFloatMillis"
           },
+          "average_inference_time_ms_last_minute": {
+            "$ref": "#/components/schemas/_types:DurationValueUnitFloatMillis"
+          },
+          "average_inference_time_ms_excluding_cache_hits": {
+            "$ref": "#/components/schemas/_types:DurationValueUnitFloatMillis"
+          },
           "error_count": {
             "description": "The number of errors when evaluating the trained model.",
             "type": "number"
@@ -51731,10 +51650,15 @@
             "description": "The total number of inference calls made against this node for this model.",
             "type": "number"
           },
-          "last_access": {
-            "description": "The epoch time stamp of the last inference call for the model on this node.",
+          "inference_cache_hit_count": {
+            "type": "number"
+          },
+          "inference_cache_hit_count_last_minute": {
             "type": "number"
           },
+          "last_access": {
+            "$ref": "#/components/schemas/_types:EpochTimeUnitMillis"
+          },
           "number_of_allocations": {
             "description": "The number of allocations assigned to this node.",
             "type": "number"
@@ -51743,6 +51667,9 @@
             "description": "The number of inference requests queued to be processed.",
             "type": "number"
           },
+          "peak_throughput_per_minute": {
+            "type": "number"
+          },
           "rejection_execution_count": {
             "description": "The number of inference requests that were not processed because the queue was full.",
             "type": "number"
@@ -51757,23 +51684,18 @@
             "description": "The number of threads used by each allocation during inference.",
             "type": "number"
           },
+          "throughput_last_minute": {
+            "type": "number"
+          },
           "timeout_count": {
             "description": "The number of inference requests that timed out before being processed.",
             "type": "number"
           }
         },
         "required": [
-          "average_inference_time_ms",
-          "error_count",
-          "inference_count",
-          "last_access",
-          "number_of_allocations",
-          "number_of_pending_requests",
-          "rejection_execution_count",
+          "peak_throughput_per_minute",
           "routing_state",
-          "start_time",
-          "threads_per_allocation",
-          "timeout_count"
+          "throughput_last_minute"
         ]
       },
       "ml._types:TrainedModelAssignmentRoutingTable": {
@@ -51796,7 +51718,6 @@
           }
         },
         "required": [
-          "reason",
           "routing_state",
           "current_allocations",
           "target_allocations"
@@ -51812,21 +51733,26 @@
           "stopping"
         ]
       },
-      "ml._types:DeploymentState": {
+      "ml._types:TrainingPriority": {
+        "type": "string",
+        "enum": [
+          "normal",
+          "low"
+        ]
+      },
+      "ml._types:DeploymentAssignmentState": {
         "type": "string",
         "enum": [
           "started",
           "starting",
-          "stopping"
+          "stopping",
+          "failed"
         ]
       },
       "ml._types:TrainedModelInferenceStats": {
         "type": "object",
         "properties": {
           "cache_miss_count": {
-            "externalDocs": {
-              "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/ml-settings.html"
-            },
             "description": "The number of times the model was loaded for inference and was not retrieved from the cache.\nIf this number is close to the `inference_count`, the cache is not being appropriately used.\nThis can be solved by increasing the cache size or its time-to-live (TTL).\nRefer to general machine learning settings for the appropriate settings.",
             "type": "number"
           },
@@ -52297,9 +52223,6 @@
         "type": "object",
         "properties": {
           "allow_lazy_open": {
-            "externalDocs": {
-              "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/ml-put-job.html"
-            },
             "description": "Advanced configuration option. Specifies whether this job can open when there is insufficient machine learning node capacity for it to be immediately assigned to a node.",
             "type": "boolean"
           },
@@ -52467,9 +52390,6 @@
             "$ref": "#/components/schemas/_types:Field"
           },
           "function": {
-            "externalDocs": {
-              "url": "https://www.elastic.co/guide/en/machine-learning/current/ml-functions.html"
-            },
             "description": "The analysis function that is used.\nFor example, `count`, `rare`, `mean`, `min`, `max`, and `sum`.",
             "type": "string"
           },
@@ -52751,22 +52671,29 @@
           }
         ]
       },
-      "ml._types:TrainingPriority": {
-        "type": "string",
-        "enum": [
-          "normal",
-          "low"
-        ]
-      },
       "ml._types:TrainedModelAssignment": {
         "type": "object",
         "properties": {
+          "adaptive_allocations": {
+            "oneOf": [
+              {
+                "$ref": "#/components/schemas/ml._types:AdaptiveAllocationsSettings"
+              },
+              {
+                "nullable": true,
+                "type": "string"
+              }
+            ]
+          },
           "assignment_state": {
             "$ref": "#/components/schemas/ml._types:DeploymentAssignmentState"
           },
           "max_assigned_allocations": {
             "type": "number"
           },
+          "reason": {
+            "type": "string"
+          },
           "routing_table": {
             "description": "The allocation state for each node.",
             "type": "object",
@@ -52788,21 +52715,11 @@
           "task_parameters"
         ]
       },
-      "ml._types:DeploymentAssignmentState": {
-        "type": "string",
-        "enum": [
-          "starting",
-          "started",
-          "stopping",
-          "failed"
-        ]
-      },
       "ml._types:TrainedModelAssignmentTaskParameters": {
         "type": "object",
         "properties": {
           "model_bytes": {
-            "description": "The size of the trained model in bytes.",
-            "type": "number"
+            "$ref": "#/components/schemas/_types:ByteSize"
           },
           "model_id": {
             "$ref": "#/components/schemas/_types:Id"
@@ -52820,6 +52737,12 @@
           "priority": {
             "$ref": "#/components/schemas/ml._types:TrainingPriority"
           },
+          "per_deployment_memory_bytes": {
+            "$ref": "#/components/schemas/_types:ByteSize"
+          },
+          "per_allocation_memory_bytes": {
+            "$ref": "#/components/schemas/_types:ByteSize"
+          },
           "queue_capacity": {
             "description": "Number of inference requests are allowed in the queue at a time.",
             "type": "number"
@@ -52833,9 +52756,10 @@
           "model_bytes",
           "model_id",
           "deployment_id",
-          "cache_size",
           "number_of_allocations",
           "priority",
+          "per_deployment_memory_bytes",
+          "per_allocation_memory_bytes",
           "queue_capacity",
           "threads_per_allocation"
         ]
@@ -52852,6 +52776,29 @@
           "model_memory_limit"
         ]
       },
+      "ml._types:DetectorUpdate": {
+        "type": "object",
+        "properties": {
+          "detector_index": {
+            "description": "A unique identifier for the detector.\nThis identifier is based on the order of the detectors in the `analysis_config`, starting at zero.",
+            "type": "number"
+          },
+          "description": {
+            "description": "A description of the detector.",
+            "type": "string"
+          },
+          "custom_rules": {
+            "description": "An array of custom rule objects, which enable you to customize the way detectors operate.\nFor example, a rule may dictate to the detector conditions under which results should be skipped.\nKibana refers to custom rules as job rules.",
+            "type": "array",
+            "items": {
+              "$ref": "#/components/schemas/ml._types:DetectionRule"
+            }
+          }
+        },
+        "required": [
+          "detector_index"
+        ]
+      },
       "_global.msearch:RequestItem": {
         "oneOf": [
           {
@@ -52904,6 +52851,9 @@
         "type": "object",
         "properties": {
           "aggregations": {
+            "externalDocs": {
+              "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/search-aggregations.html"
+            },
             "type": "object",
             "additionalProperties": {
               "$ref": "#/components/schemas/_types.aggregations:AggregationContainer"
@@ -52938,7 +52888,6 @@
           },
           "knn": {
             "description": "Defines the approximate kNN search to run.",
-            "x-available-since": "8.4.0",
             "oneOf": [
               {
                 "$ref": "#/components/schemas/_types:KnnSearch"
@@ -53543,7 +53492,14 @@
             "type": "number"
           },
           "rule_criteria_types_counts": {
-            "description": "A map of criteria type to the number of rules of that type",
+            "description": "A map of criteria type (e.g. exact) to the number of rules of that type",
+            "type": "object",
+            "additionalProperties": {
+              "type": "number"
+            }
+          },
+          "rule_type_counts": {
+            "description": "A map of rule type (e.g. pinned) to the number of rules of that type",
             "type": "object",
             "additionalProperties": {
               "type": "number"
@@ -53553,7 +53509,23 @@
         "required": [
           "ruleset_id",
           "rule_total_count",
-          "rule_criteria_types_counts"
+          "rule_criteria_types_counts",
+          "rule_type_counts"
+        ]
+      },
+      "query_rules.test:QueryRulesetMatchedRule": {
+        "type": "object",
+        "properties": {
+          "ruleset_id": {
+            "$ref": "#/components/schemas/_types:Id"
+          },
+          "rule_id": {
+            "$ref": "#/components/schemas/_types:Id"
+          }
+        },
+        "required": [
+          "ruleset_id",
+          "rule_id"
         ]
       },
       "_global.rank_eval:RankEvalRequestItem": {
@@ -53712,9 +53684,6 @@
             "type": "object",
             "properties": {
               "normalize": {
-                "externalDocs": {
-                  "url": "https://en.wikipedia.org/wiki/Discounted_cumulative_gain#Normalized_DCG"
-                },
                 "description": "If set to true, this metric will calculate the Normalized DCG.",
                 "type": "boolean"
               }
@@ -53962,6 +53931,9 @@
           },
           "rrf": {
             "$ref": "#/components/schemas/_types:RRFRetriever"
+          },
+          "text_similarity_reranker": {
+            "$ref": "#/components/schemas/_types:TextSimilarityReranker"
           }
         },
         "minProperties": 1,
@@ -53988,10 +53960,6 @@
               "sort": {
                 "$ref": "#/components/schemas/_types:Sort"
               },
-              "min_score": {
-                "description": "Minimum _score for matching documents. Documents with a lower _score are not included in the top documents.",
-                "type": "number"
-              },
               "collapse": {
                 "$ref": "#/components/schemas/_global.search._types:FieldCollapse"
               }
@@ -54015,6 +53983,10 @@
                 }
               }
             ]
+          },
+          "min_score": {
+            "description": "Minimum _score for matching documents. Documents with a lower _score are not included in the top documents.",
+            "type": "number"
           }
         }
       },
@@ -54087,6 +54059,40 @@
           }
         ]
       },
+      "_types:TextSimilarityReranker": {
+        "allOf": [
+          {
+            "$ref": "#/components/schemas/_types:RetrieverBase"
+          },
+          {
+            "type": "object",
+            "properties": {
+              "retriever": {
+                "$ref": "#/components/schemas/_types:RetrieverContainer"
+              },
+              "rank_window_size": {
+                "description": "This value determines how many documents we will consider from the nested retriever.",
+                "type": "number"
+              },
+              "inference_id": {
+                "description": "Unique identifier of the inference endpoint created using the inference API.",
+                "type": "string"
+              },
+              "inference_text": {
+                "description": "The text snippet used as the basis for similarity comparison",
+                "type": "string"
+              },
+              "field": {
+                "description": "The document field to be used for text similarity comparisons. This field should contain the text that will be evaluated against the inference_text",
+                "type": "string"
+              }
+            },
+            "required": [
+              "retriever"
+            ]
+          }
+        ]
+      },
       "search_application._types:SearchApplication": {
         "type": "object",
         "properties": {
@@ -54217,71 +54223,46 @@
       "_types:MapboxVectorTiles": {
         "type": "object"
       },
-      "security._types:ApiKey": {
+      "security.authenticate:AuthenticateApiKey": {
         "type": "object",
         "properties": {
-          "creation": {
-            "description": "Creation time for the API key in milliseconds.",
-            "type": "number"
-          },
-          "expiration": {
-            "description": "Expiration time for the API key in milliseconds.",
-            "type": "number"
-          },
           "id": {
             "$ref": "#/components/schemas/_types:Id"
           },
-          "invalidated": {
-            "description": "Invalidation status for the API key.\nIf the key has been invalidated, it has a value of `true`. Otherwise, it is `false`.",
-            "type": "boolean"
-          },
+          "name": {
+            "$ref": "#/components/schemas/_types:Name"
+          }
+        },
+        "required": [
+          "id"
+        ]
+      },
+      "security._types:RealmInfo": {
+        "type": "object",
+        "properties": {
           "name": {
             "$ref": "#/components/schemas/_types:Name"
           },
-          "realm": {
-            "description": "Realm name of the principal for which this API key was created.",
-            "type": "string"
-          },
-          "realm_type": {
-            "description": "Realm type of the principal for which this API key was created",
-            "x-available-since": "8.14.0",
+          "type": {
             "type": "string"
+          }
+        },
+        "required": [
+          "name",
+          "type"
+        ]
+      },
+      "security.authenticate:Token": {
+        "type": "object",
+        "properties": {
+          "name": {
+            "$ref": "#/components/schemas/_types:Name"
           },
-          "username": {
-            "$ref": "#/components/schemas/_types:Username"
-          },
-          "profile_uid": {
-            "description": "The profile uid for the API key owner principal, if requested and if it exists",
-            "x-available-since": "8.14.0",
+          "type": {
             "type": "string"
-          },
-          "metadata": {
-            "$ref": "#/components/schemas/_types:Metadata"
-          },
-          "role_descriptors": {
-            "description": "The role descriptors assigned to this API key when it was created or last updated.\nAn empty role descriptor means the API key inherits the owner user’s permissions.",
-            "type": "object",
-            "additionalProperties": {
-              "$ref": "#/components/schemas/security._types:RoleDescriptor"
-            }
-          },
-          "limited_by": {
-            "description": "The owner user’s permissions associated with the API key.\nIt is a point-in-time snapshot captured at creation and subsequent updates.\nAn API key’s effective permissions are an intersection of its assigned privileges and the owner user’s permissions.",
-            "x-available-since": "8.5.0",
-            "type": "array",
-            "items": {
-              "type": "object",
-              "additionalProperties": {
-                "$ref": "#/components/schemas/security._types:RoleDescriptor"
-              }
-            }
-          },
-          "_sort": {
-            "$ref": "#/components/schemas/_types:SortResults"
           }
         },
         "required": [
-          "id",
           "name"
         ]
       },
@@ -54313,9 +54294,6 @@
             "$ref": "#/components/schemas/_types:Metadata"
           },
           "run_as": {
-            "externalDocs": {
-              "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/run-as-privilege.html"
-            },
             "description": "A list of users that the API keys can impersonate. *Note*: in Serverless, the run-as feature is disabled. For API compatibility, you can still specify an empty `run_as` field, but a non-empty list will be rejected.",
             "type": "array",
             "items": {
@@ -54524,34 +54502,148 @@
           "resources"
         ]
       },
-      "security._types:RealmInfo": {
+      "security._types:ApiKey": {
         "type": "object",
         "properties": {
+          "id": {
+            "$ref": "#/components/schemas/_types:Id"
+          },
           "name": {
             "$ref": "#/components/schemas/_types:Name"
           },
           "type": {
+            "$ref": "#/components/schemas/security._types:ApiKeyType"
+          },
+          "creation": {
+            "$ref": "#/components/schemas/_types:EpochTimeUnitMillis"
+          },
+          "expiration": {
+            "$ref": "#/components/schemas/_types:EpochTimeUnitMillis"
+          },
+          "invalidated": {
+            "description": "Invalidation status for the API key.\nIf the key has been invalidated, it has a value of `true`. Otherwise, it is `false`.",
+            "type": "boolean"
+          },
+          "invalidation": {
+            "$ref": "#/components/schemas/_types:EpochTimeUnitMillis"
+          },
+          "username": {
+            "$ref": "#/components/schemas/_types:Username"
+          },
+          "realm": {
+            "description": "Realm name of the principal for which this API key was created.",
+            "type": "string"
+          },
+          "realm_type": {
+            "description": "Realm type of the principal for which this API key was created",
+            "type": "string"
+          },
+          "metadata": {
+            "$ref": "#/components/schemas/_types:Metadata"
+          },
+          "role_descriptors": {
+            "description": "The role descriptors assigned to this API key when it was created or last updated.\nAn empty role descriptor means the API key inherits the owner user’s permissions.",
+            "type": "object",
+            "additionalProperties": {
+              "$ref": "#/components/schemas/security._types:RoleDescriptor"
+            }
+          },
+          "limited_by": {
+            "description": "The owner user’s permissions associated with the API key.\nIt is a point-in-time snapshot captured at creation and subsequent updates.\nAn API key’s effective permissions are an intersection of its assigned privileges and the owner user’s permissions.",
+            "type": "array",
+            "items": {
+              "type": "object",
+              "additionalProperties": {
+                "$ref": "#/components/schemas/security._types:RoleDescriptor"
+              }
+            }
+          },
+          "access": {
+            "$ref": "#/components/schemas/security._types:Access"
+          },
+          "profile_uid": {
+            "description": "The profile uid for the API key owner principal, if requested and if it exists",
             "type": "string"
+          },
+          "_sort": {
+            "$ref": "#/components/schemas/_types:SortResults"
           }
         },
         "required": [
+          "id",
           "name",
-          "type"
+          "type",
+          "creation",
+          "invalidated",
+          "username",
+          "realm",
+          "metadata"
         ]
       },
-      "security.authenticate:Token": {
+      "security._types:ApiKeyType": {
+        "type": "string",
+        "enum": [
+          "rest",
+          "cross_cluster"
+        ]
+      },
+      "security._types:Access": {
         "type": "object",
         "properties": {
-          "name": {
-            "$ref": "#/components/schemas/_types:Name"
+          "replication": {
+            "description": "A list of indices permission entries for cross-cluster replication.",
+            "type": "array",
+            "items": {
+              "$ref": "#/components/schemas/security._types:ReplicationAccess"
+            }
           },
-          "type": {
-            "x-available-since": "7.14.0",
-            "type": "string"
+          "search": {
+            "description": "A list of indices permission entries for cross-cluster search.",
+            "type": "array",
+            "items": {
+              "$ref": "#/components/schemas/security._types:SearchAccess"
+            }
+          }
+        }
+      },
+      "security._types:ReplicationAccess": {
+        "type": "object",
+        "properties": {
+          "names": {
+            "description": "A list of indices (or index name patterns) to which the permissions in this entry apply.",
+            "type": "array",
+            "items": {
+              "$ref": "#/components/schemas/_types:IndexName"
+            }
+          },
+          "allow_restricted_indices": {
+            "description": "This needs to be set to true if the patterns in the names field should cover system indices.",
+            "type": "boolean"
           }
         },
         "required": [
-          "name"
+          "names"
+        ]
+      },
+      "security._types:SearchAccess": {
+        "type": "object",
+        "properties": {
+          "field_security": {
+            "$ref": "#/components/schemas/security._types:FieldSecurity"
+          },
+          "names": {
+            "description": "A list of indices (or index name patterns) to which the permissions in this entry apply.",
+            "type": "array",
+            "items": {
+              "$ref": "#/components/schemas/_types:IndexName"
+            }
+          },
+          "query": {
+            "$ref": "#/components/schemas/security._types:IndicesPrivilegesQuery"
+          }
+        },
+        "required": [
+          "names"
         ]
       },
       "security.has_privileges:ApplicationPrivilegesCheck": {
@@ -54689,9 +54781,6 @@
             "$ref": "#/components/schemas/_types.query_dsl:IdsQuery"
           },
           "match": {
-            "externalDocs": {
-              "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-match-query.html"
-            },
             "description": "Returns documents that match a provided text, number, date or boolean value.\nThe provided text is analyzed before matching.",
             "type": "object",
             "additionalProperties": {
@@ -54704,9 +54793,6 @@
             "$ref": "#/components/schemas/_types.query_dsl:MatchAllQuery"
           },
           "prefix": {
-            "externalDocs": {
-              "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-prefix-query.html"
-            },
             "description": "Returns documents that contain a specific prefix in a provided field.",
             "type": "object",
             "additionalProperties": {
@@ -54716,9 +54802,6 @@
             "maxProperties": 1
           },
           "range": {
-            "externalDocs": {
-              "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-range-query.html"
-            },
             "description": "Returns documents that contain terms within a provided range.",
             "type": "object",
             "additionalProperties": {
@@ -54731,9 +54814,6 @@
             "$ref": "#/components/schemas/_types.query_dsl:SimpleQueryStringQuery"
           },
           "term": {
-            "externalDocs": {
-              "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-term-query.html"
-            },
             "description": "Returns documents that contain an exact term in a provided field.\nTo return a document, the query term must exactly match the queried field's value, including whitespace and capitalization.",
             "type": "object",
             "additionalProperties": {
@@ -54746,9 +54826,6 @@
             "$ref": "#/components/schemas/_types.query_dsl:TermsQuery"
           },
           "wildcard": {
-            "externalDocs": {
-              "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-wildcard-query.html"
-            },
             "description": "Returns documents that contain terms matching a wildcard pattern.",
             "type": "object",
             "additionalProperties": {
@@ -54869,6 +54946,18 @@
           "type": "object"
         }
       },
+      "sql.query:SqlFormat": {
+        "type": "string",
+        "enum": [
+          "csv",
+          "json",
+          "tsv",
+          "txt",
+          "yaml",
+          "cbor",
+          "smile"
+        ]
+      },
       "synonyms._types:SynonymsUpdateResult": {
         "type": "object",
         "properties": {
@@ -55154,7 +55243,6 @@
           },
           "unattended": {
             "description": "If `true`, the transform runs in unattended mode. In unattended mode, the transform retries indefinitely in case\nof an error which means the transform never fails. Setting the number of retries other than infinite fails in\nvalidation.",
-            "x-available-since": "8.5.0",
             "type": "boolean"
           }
         }
@@ -56885,7 +56973,6 @@
                 },
                 "encoded": {
                   "description": "API key credentials which is the base64-encoding of\nthe UTF-8 representation of `id` and `api_key` joined\nby a colon (`:`).",
-                  "x-available-since": "7.16.0",
                   "type": "string"
                 }
               },
@@ -57418,15 +57505,6 @@
         },
         "style": "form"
       },
-      "async_search.submit#scroll": {
-        "in": "query",
-        "name": "scroll",
-        "deprecated": false,
-        "schema": {
-          "$ref": "#/components/schemas/_types:Duration"
-        },
-        "style": "form"
-      },
       "async_search.submit#search_type": {
         "in": "query",
         "name": "search_type",
@@ -57670,6 +57748,16 @@
         },
         "style": "simple"
       },
+      "bulk#list_executed_pipelines": {
+        "in": "query",
+        "name": "list_executed_pipelines",
+        "description": "If `true`, the response will include the ingest pipelines that were executed for each index or create.",
+        "deprecated": false,
+        "schema": {
+          "type": "boolean"
+        },
+        "style": "form"
+      },
       "bulk#pipeline": {
         "in": "query",
         "name": "pipeline",
@@ -57760,6 +57848,16 @@
         },
         "style": "form"
       },
+      "bulk#require_data_stream": {
+        "in": "query",
+        "name": "require_data_stream",
+        "description": "If `true`, the request's actions must target a data stream (existing or to-be-created).",
+        "deprecated": false,
+        "schema": {
+          "type": "boolean"
+        },
+        "style": "form"
+      },
       "cat.aliases#name": {
         "in": "path",
         "name": "name",
@@ -59145,7 +59243,7 @@
         "in": "query",
         "name": "local",
         "description": "If `true`, the request retrieves information from the local node only.",
-        "deprecated": false,
+        "deprecated": true,
         "schema": {
           "type": "boolean"
         },
@@ -59207,7 +59305,7 @@
         "in": "query",
         "name": "local",
         "description": "If `true`, the request retrieves information from the local node only.",
-        "deprecated": false,
+        "deprecated": true,
         "schema": {
           "type": "boolean"
         },
@@ -60717,6 +60815,16 @@
         },
         "style": "form"
       },
+      "ml.get_trained_models#include_model_definition": {
+        "in": "query",
+        "name": "include_model_definition",
+        "description": "parameter is deprecated! Use [include=definition] instead",
+        "deprecated": true,
+        "schema": {
+          "type": "boolean"
+        },
+        "style": "form"
+      },
       "ml.get_trained_models#size": {
         "in": "query",
         "name": "size",
@@ -62154,7 +62262,7 @@
         "description": "Format for the response.",
         "deprecated": false,
         "schema": {
-          "type": "string"
+          "$ref": "#/components/schemas/sql.query:SqlFormat"
         },
         "style": "form"
       },
@@ -62430,7 +62538,6 @@
                 },
                 "knn": {
                   "description": "Defines the approximate kNN search to run.",
-                  "x-available-since": "8.4.0",
                   "oneOf": [
                     {
                       "$ref": "#/components/schemas/_types:KnnSearch"
@@ -62668,9 +62775,6 @@
               "type": "object",
               "properties": {
                 "query": {
-                  "externalDocs": {
-                    "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/eql-syntax.html"
-                  },
                   "description": "EQL query you wish to run.",
                   "type": "string"
                 },
@@ -62822,9 +62926,6 @@
               "type": "object",
               "properties": {
                 "analyzer": {
-                  "externalDocs": {
-                    "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/analysis-analyzers.html"
-                  },
                   "description": "The name of the analyzer that should be applied to the provided `text`.\nThis could be a built-in analyzer, or an analyzer that’s been configured in the index.",
                   "type": "string"
                 },
@@ -62836,9 +62937,6 @@
                   }
                 },
                 "char_filter": {
-                  "externalDocs": {
-                    "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/analysis-charfilters.html"
-                  },
                   "description": "Array of character filters used to preprocess characters before the tokenizer.",
                   "type": "array",
                   "items": {
@@ -62853,9 +62951,6 @@
                   "$ref": "#/components/schemas/_types:Field"
                 },
                 "filter": {
-                  "externalDocs": {
-                    "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/analysis-tokenfilters.html"
-                  },
                   "description": "Array of token filters used to apply after the tokenizer.",
                   "type": "array",
                   "items": {
@@ -62863,9 +62958,6 @@
                   }
                 },
                 "normalizer": {
-                  "externalDocs": {
-                    "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/analysis-normalizers.html"
-                  },
                   "description": "Normalizer to use to convert text into a single token.",
                   "type": "string"
                 },
@@ -63609,7 +63701,6 @@
                 },
                 "knn": {
                   "description": "Defines the approximate kNN search to run.",
-                  "x-available-since": "8.4.0",
                   "oneOf": [
                     {
                       "$ref": "#/components/schemas/_types:KnnSearch"
@@ -63855,9 +63946,6 @@
                   "$ref": "#/components/schemas/_types:Name"
                 },
                 "role_descriptors": {
-                  "externalDocs": {
-                    "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/security-api-put-role.html"
-                  },
                   "description": "An array of role descriptors for this API key. This parameter is optional. When it is not specified or is an empty array, then the API key will have a point in time snapshot of permissions of the authenticated user. If you supply role descriptors then the resultant permissions would be an intersection of API keys permissions and authenticated user’s permissions thereby limiting the access scope for API keys. The structure of role descriptor is the same as the request for create role API. For more details, see create or update roles API.",
                   "type": "object",
                   "additionalProperties": {
diff --git a/output/schema/schema-serverless.json b/output/schema/schema-serverless.json
index 180bb991ec..9f0b04c3b0 100644
--- a/output/schema/schema-serverless.json
+++ b/output/schema/schema-serverless.json
@@ -18,8 +18,9 @@
           "stability": "stable"
         }
       },
-      "description": "Deletes an async search by identifier.\nIf the search is still running, the search request will be cancelled.\nOtherwise, the saved search results are deleted.\nIf the Elasticsearch security features are enabled, the deletion of a specific async search is restricted to: the authenticated user that submitted the original search request; users that have the `cancel_task` cluster privilege.",
+      "description": "Delete an async search.\n\nIf the asynchronous search is still running, it is cancelled.\nOtherwise, the saved search results are deleted.\nIf the Elasticsearch security features are enabled, the deletion of a specific async search is restricted to: the authenticated user that submitted the original search request; users that have the `cancel_task` cluster privilege.",
       "docId": "async-search",
+      "docTag": "search",
       "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/async-search.html",
       "name": "async_search.delete",
       "request": {
@@ -54,8 +55,9 @@
           "stability": "stable"
         }
       },
-      "description": "Retrieves the results of a previously submitted async search request given its identifier.\nIf the Elasticsearch security features are enabled, access to the results of a specific async search is restricted to the user or API key that submitted it.",
+      "description": "Get async search results.\n\nRetrieve the results of a previously submitted asynchronous search request.\nIf the Elasticsearch security features are enabled, access to the results of a specific async search is restricted to the user or API key that submitted it.",
       "docId": "async-search",
+      "docTag": "search",
       "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/async-search.html",
       "name": "async_search.get",
       "request": {
@@ -90,8 +92,9 @@
           "stability": "stable"
         }
       },
-      "description": "Get async search status\nRetrieves the status of a previously submitted async search request given its identifier, without retrieving search results.\nIf the Elasticsearch security features are enabled, use of this API is restricted to the `monitoring_user` role.",
+      "description": "Get the async search status.\n\nGet the status of a previously submitted async search request given its identifier, without retrieving search results.\nIf the Elasticsearch security features are enabled, use of this API is restricted to the `monitoring_user` role.",
       "docId": "async-search",
+      "docTag": "search",
       "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/async-search.html",
       "name": "async_search.status",
       "request": {
@@ -126,8 +129,9 @@
           "stability": "stable"
         }
       },
-      "description": "Runs a search request asynchronously.\nWhen the primary sort of the results is an indexed field, shards get sorted based on minimum and maximum value that they hold for that field, hence partial results become available following the sort criteria that was requested.\nWarning: Async search does not support scroll nor search requests that only include the suggest section.\nBy default, Elasticsearch doesn’t allow you to store an async search response larger than 10Mb and an attempt to do this results in an error.\nThe maximum allowed size for a stored async search response can be set by changing the `search.max_async_search_response_size` cluster level setting.",
+      "description": "Run an async search.\n\nWhen the primary sort of the results is an indexed field, shards get sorted based on minimum and maximum value that they hold for that field. Partial results become available following the sort criteria that was requested.\n\nWarning: Asynchronous search does not support scroll or search requests that include only the suggest section.\n\nBy default, Elasticsearch does not allow you to store an async search response larger than 10Mb and an attempt to do this results in an error.\nThe maximum allowed size for a stored async search response can be set by changing the `search.max_async_search_response_size` cluster level setting.",
       "docId": "async-search",
+      "docTag": "search",
       "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/async-search.html",
       "name": "async_search.submit",
       "request": {
@@ -172,6 +176,7 @@
       },
       "description": "Bulk index or delete documents.\nPerforms multiple indexing or delete operations in a single API call.\nThis reduces overhead and can greatly increase indexing speed.",
       "docId": "docs-bulk",
+      "docTag": "document",
       "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/docs-bulk.html",
       "name": "bulk",
       "request": {
@@ -682,8 +687,9 @@
           "stability": "stable"
         }
       },
-      "description": "Clears the search context and results for a scrolling search.",
+      "description": "Clear a scrolling search.\n\nClear the search context and results for a scrolling search.",
       "docId": "clear-scroll-api",
+      "docTag": "search",
       "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/clear-scroll-api.html",
       "name": "clear_scroll",
       "request": {
@@ -732,8 +738,9 @@
           "stability": "stable"
         }
       },
-      "description": "Closes a point-in-time.",
+      "description": "Close a point in time.\n\nA point in time must be opened explicitly before being used in search requests.\nThe `keep_alive` parameter tells Elasticsearch how long it should persist.\nA point in time is automatically closed when the `keep_alive` period has elapsed.\nHowever, keeping points in time has a cost; close them as soon as they are no longer required for search requests.",
       "docId": "point-in-time-api",
+      "docTag": "search",
       "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/point-in-time-api.html",
       "name": "close_point_in_time",
       "request": {
@@ -773,6 +780,7 @@
       },
       "description": "Delete component templates.\nDeletes component templates.\nComponent templates are building blocks for constructing index templates that specify index mappings, settings, and aliases.",
       "docId": "indices-component-template",
+      "docTag": "indices",
       "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/indices-component-template.html",
       "name": "cluster.delete_component_template",
       "privileges": {
@@ -814,6 +822,7 @@
       },
       "description": "Check component templates.\nReturns information about whether a particular component template exists.",
       "docId": "indices-component-template",
+      "docTag": "indices",
       "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/indices-component-template.html",
       "name": "cluster.exists_component_template",
       "request": {
@@ -850,6 +859,7 @@
       },
       "description": "Get component templates.\nRetrieves information about component templates.",
       "docId": "indices-component-template",
+      "docTag": "indices",
       "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/indices-component-template.html",
       "name": "cluster.get_component_template",
       "privileges": {
@@ -933,6 +943,7 @@
       },
       "description": "Create or update a component template.\nCreates or updates a component template.\nComponent templates are building blocks for constructing index templates that specify index mappings, settings, and aliases.\n\nAn index template can be composed of multiple component templates.\nTo use a component template, specify it in an index template’s `composed_of` list.\nComponent templates are only applied to new data streams and indices as part of a matching index template.\n\nSettings and mappings specified directly in the index template or the create index request override any settings or mappings specified in a component template.\n\nComponent templates are only used during index creation.\nFor data streams, this includes data stream creation and the creation of a stream’s backing indices.\nChanges to component templates do not affect existing indices, including a stream’s backing indices.\n\nYou can use C-style `/* *\\/` block comments in component templates.\nYou can include comments anywhere in the request body except before the opening curly bracket.",
       "docId": "indices-component-template",
+      "docTag": "indices",
       "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/indices-component-template.html",
       "name": "cluster.put_component_template",
       "privileges": {
@@ -976,7 +987,7 @@
           "stability": "experimental"
         }
       },
-      "description": "Updates the last_seen field in the connector, and sets it to current timestamp",
+      "description": "Check in a connector.\n\nUpdate the `last_seen` field in the connector and set it to the current timestamp.",
       "docId": "connector-checkin",
       "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/check-in-connector-api.html",
       "name": "connector.check_in",
@@ -1012,7 +1023,7 @@
           "stability": "beta"
         }
       },
-      "description": "Deletes a connector.",
+      "description": "Delete a connector.\n\nRemoves a connector and associated sync jobs.\nThis is a destructive action that is not recoverable.\nNOTE: This action doesn’t delete any API keys, ingest pipelines, or data indices associated with the connector.\nThese need to be removed manually.",
       "docId": "connector-delete",
       "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/delete-connector-api.html",
       "name": "connector.delete",
@@ -1048,7 +1059,7 @@
           "stability": "beta"
         }
       },
-      "description": "Retrieves a connector.",
+      "description": "Get a connector.\n\nGet the details about a connector.",
       "docId": "connector-get",
       "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/get-connector-api.html",
       "name": "connector.get",
@@ -1084,7 +1095,7 @@
           "stability": "beta"
         }
       },
-      "description": "Returns existing connectors.",
+      "description": "Get all connectors.\n\nGet information about all connectors.",
       "docId": "connector-list",
       "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/list-connector-api.html",
       "name": "connector.list",
@@ -1120,7 +1131,7 @@
           "stability": "beta"
         }
       },
-      "description": "Creates a connector.",
+      "description": "Create a connector.\n\nConnectors are Elasticsearch integrations that bring content from third-party data sources, which can be deployed on Elastic Cloud or hosted on your own infrastructure.\nElastic managed connectors (Native connectors) are a managed service on Elastic Cloud.\nSelf-managed connectors (Connector clients) are self-managed on your infrastructure.",
       "docId": "connector-post",
       "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/create-connector-api.html",
       "name": "connector.post",
@@ -1159,7 +1170,7 @@
           "stability": "beta"
         }
       },
-      "description": "Creates or updates a connector.",
+      "description": "Create or update a connector.",
       "docId": "connector-put",
       "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/create-connector-api.html",
       "name": "connector.put",
@@ -1204,7 +1215,7 @@
           "stability": "beta"
         }
       },
-      "description": "Cancels a connector sync job.",
+      "description": "Cancel a connector sync job.\n\nCancel a connector sync job, which sets the status to cancelling and updates `cancellation_requested_at` to the current time.\nThe connector service is then responsible for setting the status of connector sync jobs to cancelled.",
       "docId": "connector-sync-job-cancel",
       "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/cancel-connector-sync-job-api.html",
       "name": "connector.sync_job_cancel",
@@ -1240,7 +1251,7 @@
           "stability": "beta"
         }
       },
-      "description": "Deletes a connector sync job.",
+      "description": "Delete a connector sync job.\n\nRemove a connector sync job and its associated data.\nThis is a destructive action that is not recoverable.",
       "docId": "connector-sync-job-delete",
       "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/delete-connector-sync-job-api.html",
       "name": "connector.sync_job_delete",
@@ -1276,7 +1287,7 @@
           "stability": "beta"
         }
       },
-      "description": "Retrieves a connector sync job.",
+      "description": "Get a connector sync job.",
       "docId": "connector-sync-job-get",
       "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/get-connector-sync-job-api.html",
       "name": "connector.sync_job_get",
@@ -1312,7 +1323,7 @@
           "stability": "beta"
         }
       },
-      "description": "Lists connector sync jobs.",
+      "description": "Get all connector sync jobs.\n\nGet information about all stored connector sync jobs listed by their creation date in ascending order.",
       "docId": "connector-sync-job-list",
       "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/list-connector-sync-jobs-api.html",
       "name": "connector.sync_job_list",
@@ -1348,7 +1359,7 @@
           "stability": "beta"
         }
       },
-      "description": "Creates a connector sync job.",
+      "description": "Create a connector sync job.\n\nCreate a connector sync job document in the internal index and initialize its counters and timestamps with default values.",
       "docId": "connector-sync-job-post",
       "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/create-connector-sync-job-api.html",
       "name": "connector.sync_job_post",
@@ -1387,7 +1398,7 @@
           "stability": "experimental"
         }
       },
-      "description": "Activates the valid draft filtering for a connector.",
+      "description": "Activate the connector draft filter.\n\nActivates the valid draft filtering for a connector.",
       "docId": "connector-update-filtering",
       "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/update-connector-filtering-api.html",
       "name": "connector.update_active_filtering",
@@ -1426,7 +1437,7 @@
           "stability": "beta"
         }
       },
-      "description": "Updates the API key id in the connector document",
+      "description": "Update the connector API key ID.\n\nUpdate the `api_key_id` and `api_key_secret_id` fields of a connector.\nYou can specify the ID of the API key used for authorization and the ID of the connector secret where the API key is stored.\nThe connector secret ID is required only for Elastic managed (native) connectors.\nSelf-managed connectors (connector clients) do not use this field.",
       "docId": "connector-update-api-key-id",
       "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/update-connector-api-key-id-api.html",
       "name": "connector.update_api_key_id",
@@ -1465,7 +1476,7 @@
           "stability": "beta"
         }
       },
-      "description": "Updates the configuration field in the connector document",
+      "description": "Update the connector configuration.\n\nUpdate the configuration field in the connector document.",
       "docId": "connector-configuration",
       "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/update-connector-configuration-api.html",
       "name": "connector.update_configuration",
@@ -1504,7 +1515,7 @@
           "stability": "experimental"
         }
       },
-      "description": "Updates the filtering field in the connector document",
+      "description": "Update the connector error field.\n\nSet the error field for the connector.\nIf the error provided in the request body is non-null, the connector’s status is updated to error.\nOtherwise, if the error is reset to null, the connector status is updated to connected.",
       "docId": "connector-update-error",
       "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/update-connector-error-api.html",
       "name": "connector.update_error",
@@ -1543,7 +1554,7 @@
           "stability": "beta"
         }
       },
-      "description": "Updates the filtering field in the connector document",
+      "description": "Update the connector filtering.\n\nUpdate the draft filtering configuration of a connector and marks the draft validation state as edited.\nThe filtering draft is activated once validated by the running Elastic connector service.\nThe filtering property is used to configure sync rules (both basic and advanced) for a connector.",
       "docId": "connector-update-filtering",
       "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/update-connector-filtering-api.html",
       "name": "connector.update_filtering",
@@ -1582,7 +1593,7 @@
           "stability": "experimental"
         }
       },
-      "description": "Updates the draft filtering validation info for a connector.",
+      "description": "Update the connector draft filtering validation.\n\nUpdate the draft filtering validation info for a connector.",
       "docId": "connector-update-filtering-validation",
       "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/update-connector-filtering-validation-api.html",
       "name": "connector.update_filtering_validation",
@@ -1621,7 +1632,7 @@
           "stability": "beta"
         }
       },
-      "description": "Updates the index_name in the connector document",
+      "description": "Update the connector index name.\n\nUpdate the `index_name` field of a connector, specifying the index where the data ingested by the connector is stored.",
       "docId": "connector-update-index-name",
       "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/update-connector-index-name-api.html",
       "name": "connector.update_index_name",
@@ -1660,7 +1671,7 @@
           "stability": "beta"
         }
       },
-      "description": "Updates the name and description fields in the connector document",
+      "description": "Update the connector name and description.",
       "docId": "connector-update-name",
       "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/update-connector-name-description-api.html",
       "name": "connector.update_name",
@@ -1699,7 +1710,7 @@
           "stability": "beta"
         }
       },
-      "description": "Updates the is_native flag in the connector document",
+      "description": "Update the connector is_native flag.",
       "docId": "connector-update-native",
       "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/update-connector-native-api.html",
       "name": "connector.update_native",
@@ -1738,7 +1749,7 @@
           "stability": "beta"
         }
       },
-      "description": "Updates the pipeline field in the connector document",
+      "description": "Update the connector pipeline.\n\nWhen you create a new connector, the configuration of an ingest pipeline is populated with default settings.",
       "docId": "connector-update-pipeline",
       "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/update-connector-pipeline-api.html",
       "name": "connector.update_pipeline",
@@ -1777,7 +1788,7 @@
           "stability": "beta"
         }
       },
-      "description": "Updates the scheduling field in the connector document",
+      "description": "Update the connector scheduling.",
       "docId": "connector-update-scheduling",
       "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/update-connector-scheduling-api.html",
       "name": "connector.update_scheduling",
@@ -1816,7 +1827,7 @@
           "stability": "beta"
         }
       },
-      "description": "Updates the service type of the connector",
+      "description": "Update the connector service type.",
       "docId": "connector-update-service-type",
       "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/update-connector-service-type-api.html",
       "name": "connector.update_service_type",
@@ -1855,7 +1866,7 @@
           "stability": "experimental"
         }
       },
-      "description": "Updates the status of the connector",
+      "description": "Update the connector status.",
       "docId": "connector-update-status",
       "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/update-connector-status-api.html",
       "name": "connector.update_status",
@@ -1893,7 +1904,8 @@
           "stability": "stable"
         }
       },
-      "description": "Returns number of documents matching a query.",
+      "description": "Count search results.\nGet the number of documents matching a query.",
+      "docTag": "search",
       "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/master/search-count.html",
       "name": "count",
       "request": {
@@ -1940,6 +1952,7 @@
         }
       },
       "description": "Index a document.\nAdds a JSON document to the specified data stream or index and makes it searchable.\nIf the target is an index and the document already exists, the request updates the document and increments its version.",
+      "docTag": "document",
       "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/master/docs-index_.html",
       "name": "create",
       "request": {
@@ -1978,6 +1991,7 @@
         }
       },
       "description": "Delete a document.\nRemoves a JSON document from the specified index.",
+      "docTag": "document",
       "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/master/docs-delete.html",
       "name": "delete",
       "request": {
@@ -2013,6 +2027,7 @@
         }
       },
       "description": "Delete documents.\nDeletes documents that match the specified query.",
+      "docTag": "document",
       "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/master/docs-delete-by-query.html",
       "name": "delete_by_query",
       "request": {
@@ -2050,6 +2065,7 @@
         }
       },
       "description": "Delete a script or search template.\nDeletes a stored script or search template.",
+      "docTag": "script",
       "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/master/modules-scripting.html",
       "name": "delete_script",
       "request": {
@@ -2119,7 +2135,7 @@
           "stability": "stable"
         }
       },
-      "description": "Creates the enrich index for an existing enrich policy.",
+      "description": "Run an enrich policy.\nCreate the enrich index for an existing enrich policy.",
       "docId": "execute-enrich-policy-api",
       "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/execute-enrich-policy-api.html",
       "name": "enrich.execute_policy",
@@ -2270,7 +2286,7 @@
           "stability": "stable"
         }
       },
-      "description": "Deletes an async EQL search or a stored synchronous EQL search.\nThe API also deletes results for the search.",
+      "description": "Delete an async EQL search.\nDelete an async EQL search or a stored synchronous EQL search.\nThe API also deletes results for the search.",
       "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/current/eql-search-api.html",
       "name": "eql.delete",
       "request": {
@@ -2305,7 +2321,7 @@
           "stability": "stable"
         }
       },
-      "description": "Returns the current status and available results for an async EQL search or a stored synchronous EQL search.",
+      "description": "Get async EQL search results.\nGet the current status and available results for an async EQL search or a stored synchronous EQL search.",
       "docId": "eql-async-search-api",
       "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/get-async-eql-search-api.html",
       "name": "eql.get",
@@ -2341,7 +2357,7 @@
           "stability": "stable"
         }
       },
-      "description": "Returns the current status for an async EQL search or a stored synchronous EQL search without returning results.",
+      "description": "Get the async EQL status.\nGet the current status for an async EQL search or a stored synchronous EQL search without returning results.",
       "docId": "eql-async-search-status-api",
       "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/get-async-eql-status-api.html",
       "name": "eql.get_status",
@@ -2377,8 +2393,10 @@
           "stability": "stable"
         }
       },
-      "description": "Returns results matching a query expressed in Event Query Language (EQL)",
+      "description": "Get EQL search results.\nReturns search results for an Event Query Language (EQL) query.\nEQL assumes each document in a data stream or index corresponds to an event.",
       "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/current/eql-search-api.html",
+      "extDocId": "eql",
+      "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/eql.html",
       "name": "eql.search",
       "request": {
         "name": "Request",
@@ -2412,9 +2430,11 @@
           "since": "8.11.0"
         }
       },
-      "description": "Executes an ES|QL request",
+      "description": "Run an ES|QL query.\nGet search results for an ES|QL (Elasticsearch query language) query.",
       "docId": "esql-query",
       "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/esql-rest.html",
+      "extDocId": "esql",
+      "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/esql.html",
       "name": "esql.query",
       "request": {
         "name": "Request",
@@ -2451,6 +2471,7 @@
         }
       },
       "description": "Check a document.\nChecks if a specified document exists.",
+      "docTag": "document",
       "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/master/docs-get.html",
       "name": "exists",
       "request": {
@@ -2486,6 +2507,7 @@
         }
       },
       "description": "Check for a document source.\nChecks if a document's `_source` is stored.",
+      "docTag": "document",
       "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/master/docs-get.html",
       "name": "exists_source",
       "request": {
@@ -2520,6 +2542,7 @@
         }
       },
       "description": "Explain a document match result.\nReturns information about why a specific document matches, or doesn’t match, a query.",
+      "docTag": "search",
       "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/master/search-explain.html",
       "name": "explain",
       "request": {
@@ -2558,7 +2581,8 @@
           "stability": "stable"
         }
       },
-      "description": "The field capabilities API returns the information about the capabilities of fields among multiple indices.\nThe field capabilities API returns runtime fields like any other field. For example, a runtime field with a type\nof keyword is returned as any other field that belongs to the `keyword` family.",
+      "description": "Get the field capabilities.\n\nGet information about the capabilities of fields among multiple indices.\n\nFor data streams, the API returns field capabilities among the stream’s backing indices.\nIt returns runtime fields like any other field.\nFor example, a runtime field with a type of keyword is returned the same as any other field that belongs to the `keyword` family.",
+      "docTag": "search",
       "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/master/search-field-caps.html",
       "name": "field_caps",
       "privileges": {
@@ -2611,6 +2635,7 @@
         }
       },
       "description": "Get a document by its ID.\nRetrieves the document with the specified ID from an index.",
+      "docTag": "document",
       "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/master/docs-get.html",
       "name": "get",
       "request": {
@@ -2645,6 +2670,7 @@
         }
       },
       "description": "Get a script or search template.\nRetrieves a stored script or search template.",
+      "docTag": "script",
       "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/master/modules-scripting.html",
       "name": "get_script",
       "request": {
@@ -2679,6 +2705,7 @@
         }
       },
       "description": "Get a document's source.\nReturns the source of a document.",
+      "docTag": "document",
       "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/master/docs-get.html",
       "name": "get_source",
       "request": {
@@ -2712,9 +2739,11 @@
           "stability": "stable"
         }
       },
-      "description": "Extracts and summarizes information about the documents and terms in an Elasticsearch data stream or index.",
+      "description": "Explore graph analytics.\nExtract and summarize information about the documents and terms in an Elasticsearch data stream or index.\nThe easiest way to understand the behavior of this API is to use the Graph UI to explore connections.\nAn initial request to the `_explore` API contains a seed query that identifies the documents of interest and specifies the fields that define the vertices and connections you want to include in the graph.\nSubsequent requests enable you to spider out from one more vertices of interest.\nYou can exclude vertices that have already been returned.",
       "docId": "graph-explore-api",
       "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/graph-explore-api.html",
+      "extDocId": "graph",
+      "extDocUrl": "https://www.elastic.co/guide/en/kibana/{branch}/xpack-graph.html",
       "name": "graph.explore",
       "request": {
         "name": "Request",
@@ -2752,6 +2781,7 @@
         }
       },
       "description": "Index a document.\nAdds a JSON document to the specified data stream or index and makes it searchable.\nIf the target is an index and the document already exists, the request updates the document and increments its version.",
+      "docTag": "document",
       "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/master/docs-index_.html",
       "name": "index",
       "request": {
@@ -2830,7 +2860,7 @@
           "stability": "stable"
         }
       },
-      "description": "Performs analysis on a text string and returns the resulting tokens.",
+      "description": "Get tokens from text analysis.\nThe analyze API performs [analysis](https://www.elastic.co/guide/en/elasticsearch/reference/current/analysis.html) on a text string and returns the resulting tokens.",
       "docId": "indices-analyze",
       "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/indices-analyze.html",
       "name": "indices.analyze",
@@ -2922,6 +2952,7 @@
         }
       },
       "description": "Create a data stream.\nCreates a data stream.\nYou must have a matching index template with data stream enabled.",
+      "docTag": "data stream",
       "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/master/data-streams.html",
       "name": "indices.create_data_stream",
       "privileges": {
@@ -2962,6 +2993,7 @@
         }
       },
       "description": "Get data stream stats.\nRetrieves statistics for one or more data streams.",
+      "docTag": "data stream",
       "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/master/data-streams.html",
       "name": "indices.data_streams_stats",
       "privileges": {
@@ -3270,7 +3302,7 @@
           "stability": "stable"
         }
       },
-      "description": "Returns information about whether a particular index template exists.",
+      "description": "Check index templates.\nCheck whether index templates exist.",
       "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/master/index-templates.html",
       "name": "indices.exists_index_template",
       "request": {
@@ -3305,7 +3337,7 @@
           "stability": "stable"
         }
       },
-      "description": "Get the status for a data stream lifecycle.\nRetrieves information about an index or data stream’s current data stream lifecycle status, such as time since index creation, time since rollover, the lifecycle configuration managing the index, or any errors encountered during lifecycle execution.",
+      "description": "Get the status for a data stream lifecycle.\nGet information about an index or data stream's current data stream lifecycle status, such as time since index creation, time since rollover, the lifecycle configuration managing the index, or any errors encountered during lifecycle execution.",
       "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/current/data-streams-explain-lifecycle.html",
       "name": "indices.explain_data_lifecycle",
       "request": {
@@ -3433,6 +3465,7 @@
         }
       },
       "description": "Get data stream lifecycles.\nRetrieves the data stream lifecycle configuration of one or more data streams.",
+      "docTag": "data stream",
       "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/master/data-streams-get-lifecycle.html",
       "name": "indices.get_data_lifecycle",
       "request": {
@@ -3468,6 +3501,7 @@
         }
       },
       "description": "Get data streams.\nRetrieves information about one or more data streams.",
+      "docTag": "data stream",
       "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/master/data-streams.html",
       "name": "indices.get_data_stream",
       "privileges": {
@@ -3660,6 +3694,7 @@
         }
       },
       "description": "Convert an index alias to a data stream.\nConverts an index alias to a data stream.\nYou must have a matching index template that is data stream enabled.\nThe alias must meet the following criteria:\nThe alias must have a write index;\nAll indices for the alias must have a `@timestamp` field mapping of a `date` or `date_nanos` field type;\nThe alias must not have any filters;\nThe alias must not use custom routing.\nIf successful, the request removes the alias and creates a data stream with the same name.\nThe indices for the alias become hidden backing indices for the stream.\nThe write index for the alias becomes the write index for the stream.",
+      "docTag": "data stream",
       "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/master/data-streams.html",
       "name": "indices.migrate_to_data_stream",
       "privileges": {
@@ -3700,6 +3735,7 @@
         }
       },
       "description": "Update data streams.\nPerforms one or more data stream modification actions in a single atomic operation.",
+      "docTag": "data stream",
       "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/master/data-streams.html",
       "name": "indices.modify_data_stream",
       "request": {
@@ -3790,6 +3826,9 @@
         "namespace": "indices.put_data_lifecycle"
       },
       "requestBodyRequired": false,
+      "requestMediaType": [
+        "application/json"
+      ],
       "response": {
         "name": "Response",
         "namespace": "indices.put_data_lifecycle"
@@ -4022,7 +4061,7 @@
           "stability": "stable"
         }
       },
-      "description": "Resolves the specified name(s) and/or index patterns for indices, aliases, and data streams.\nMultiple patterns and remote clusters are supported.",
+      "description": "Resolve indices.\nResolve the names and/or index patterns for indices, aliases, and data streams.\nMultiple patterns and remote clusters are supported.",
       "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-resolve-index-api.html",
       "name": "indices.resolve_index",
       "request": {
@@ -4265,12 +4304,12 @@
     {
       "availability": {
         "serverless": {
-          "stability": "experimental",
+          "stability": "stable",
           "visibility": "public"
         },
         "stack": {
           "since": "8.11.0",
-          "stability": "experimental",
+          "stability": "stable",
           "visibility": "public"
         }
       },
@@ -4307,12 +4346,12 @@
     {
       "availability": {
         "serverless": {
-          "stability": "experimental",
+          "stability": "stable",
           "visibility": "public"
         },
         "stack": {
           "since": "8.11.0",
-          "stability": "experimental",
+          "stability": "stable",
           "visibility": "public"
         }
       },
@@ -4355,12 +4394,12 @@
     {
       "availability": {
         "serverless": {
-          "stability": "experimental",
+          "stability": "stable",
           "visibility": "public"
         },
         "stack": {
           "since": "8.11.0",
-          "stability": "experimental",
+          "stability": "stable",
           "visibility": "public"
         }
       },
@@ -4400,12 +4439,12 @@
     {
       "availability": {
         "serverless": {
-          "stability": "experimental",
+          "stability": "stable",
           "visibility": "public"
         },
         "stack": {
           "since": "8.11.0",
-          "stability": "experimental",
+          "stability": "stable",
           "visibility": "public"
         }
       },
@@ -4487,8 +4526,10 @@
           "stability": "stable"
         }
       },
-      "description": "Deletes one or more existing ingest pipeline.",
+      "description": "Delete pipelines.\nDelete one or more ingest pipelines.",
       "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/master/delete-pipeline-api.html",
+      "extDocId": "ingest",
+      "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/ingest.html",
       "name": "ingest.delete_pipeline",
       "request": {
         "name": "Request",
@@ -4522,8 +4563,10 @@
           "stability": "stable"
         }
       },
-      "description": "Returns information about one or more ingest pipelines.\nThis API returns a local reference of the pipeline.",
+      "description": "Get pipelines.\nGet information about one or more ingest pipelines.\nThis API returns a local reference of the pipeline.",
       "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/master/get-pipeline-api.html",
+      "extDocId": "ingest",
+      "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/ingest.html",
       "name": "ingest.get_pipeline",
       "request": {
         "name": "Request",
@@ -4563,9 +4606,11 @@
           "stability": "stable"
         }
       },
-      "description": "Extracts structured fields out of a single text field within a document.\nYou choose which field to extract matched fields from, as well as the grok pattern you expect will match.\nA grok pattern is like a regular expression that supports aliased expressions that can be reused.",
+      "description": "Run a grok processor.\nExtract structured fields out of a single text field within a document.\nYou must choose which field to extract matched fields from, as well as the grok pattern you expect will match.\nA grok pattern is like a regular expression that supports aliased expressions that can be reused.",
       "docId": "grok-processor",
       "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/grok-processor.html",
+      "extDocId": "grok-processor",
+      "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/grok-processor.html",
       "name": "ingest.processor_grok",
       "request": {
         "name": "Request",
@@ -4599,9 +4644,11 @@
           "stability": "stable"
         }
       },
-      "description": "Creates or updates an ingest pipeline.\nChanges made using this API take effect immediately.",
+      "description": "Create or update a pipeline.\nChanges made using this API take effect immediately.",
       "docId": "ingest",
       "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/ingest.html",
+      "extDocId": "ingest",
+      "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/ingest.html",
       "name": "ingest.put_pipeline",
       "request": {
         "name": "Request",
@@ -4638,7 +4685,7 @@
           "stability": "stable"
         }
       },
-      "description": "Executes an ingest pipeline against a set of provided documents.",
+      "description": "Simulate a pipeline.\nRun an ingest pipeline against a set of provided documents.\nYou can either specify an existing pipeline to use with the provided documents or supply a pipeline definition in the body of the request.",
       "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/master/simulate-pipeline-api.html",
       "name": "ingest.simulate",
       "request": {
@@ -4847,7 +4894,8 @@
           "stability": "stable"
         }
       },
-      "description": "Allows to get multiple documents in one request.",
+      "description": "Get multiple documents.\n\nGet multiple JSON documents by ID from one or more indices.\nIf you specify an index in the request URI, you only need to specify the document IDs in the request body.\nTo ensure fast responses, this multi get (mget) API responds with partial results if one or more shards fail.",
+      "docTag": "document",
       "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/master/docs-multi-get.html",
       "name": "mget",
       "privileges": {
@@ -4900,6 +4948,7 @@
       },
       "description": "Close anomaly detection jobs.\nA job can be opened and closed multiple times throughout its lifecycle. A closed job cannot receive data or perform analysis operations, but you can still explore and navigate results.\nWhen you close a job, it runs housekeeping tasks such as pruning the model history, flushing buffers, calculating final results and persisting the model snapshots. Depending upon the size of the job, it could take several minutes to close and the equivalent time to re-open. After it is closed, the job has a minimal overhead on the cluster except for maintaining its meta data. Therefore it is a best practice to close jobs that are no longer required to process data.\nIf you close an anomaly detection job whose datafeed is running, the request first tries to stop the datafeed. This behavior is equivalent to calling stop datafeed API with the same timeout and force parameters as the close job request.\nWhen a datafeed that has a specified end date stops, it automatically closes its associated job.",
       "docId": "ml-close-job",
+      "docTag": "ml anomaly",
       "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/ml-close-job.html",
       "name": "ml.close_job",
       "privileges": {
@@ -4944,6 +4993,7 @@
       },
       "description": "Delete a calendar.\nRemoves all scheduled events from a calendar, then deletes it.",
       "docId": "ml-delete-calendar",
+      "docTag": "ml anomaly",
       "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/ml-delete-calendar.html",
       "name": "ml.delete_calendar",
       "privileges": {
@@ -4985,6 +5035,7 @@
       },
       "description": "Delete events from a calendar.",
       "docId": "ml-delete-calendar-event",
+      "docTag": "ml anomaly",
       "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/ml-delete-calendar-event.html",
       "name": "ml.delete_calendar_event",
       "request": {
@@ -5021,6 +5072,7 @@
       },
       "description": "Delete anomaly jobs from a calendar.",
       "docId": "ml-delete-calendar-job",
+      "docTag": "ml anomaly",
       "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/ml-delete-calendar-job.html",
       "name": "ml.delete_calendar_job",
       "privileges": {
@@ -5062,6 +5114,7 @@
       },
       "description": "Delete a data frame analytics job.",
       "docId": "ml-delete-dfanalytics",
+      "docTag": "ml data frame",
       "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/delete-dfanalytics.html",
       "name": "ml.delete_data_frame_analytics",
       "privileges": {
@@ -5103,6 +5156,7 @@
       },
       "description": "Delete a datafeed.",
       "docId": "ml-delete-datafeed",
+      "docTag": "ml anomaly",
       "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/ml-delete-datafeed.html",
       "name": "ml.delete_datafeed",
       "privileges": {
@@ -5143,6 +5197,7 @@
         }
       },
       "description": "Delete a filter.\nIf an anomaly detection job references the filter, you cannot delete the\nfilter. You must update or delete the job before you can delete the filter.",
+      "docTag": "ml anomaly",
       "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/current/ml-delete-filter.html",
       "name": "ml.delete_filter",
       "privileges": {
@@ -5183,6 +5238,7 @@
         }
       },
       "description": "Delete an anomaly detection job.\nAll job configuration, model state and results are deleted.\nIt is not currently possible to delete multiple jobs using wildcards or a\ncomma separated list. If you delete a job that has a datafeed, the request\nfirst tries to delete the datafeed. This behavior is equivalent to calling\nthe delete datafeed API with the same timeout and force parameters as the\ndelete job request.",
+      "docTag": "ml anomaly",
       "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/current/ml-delete-job.html",
       "name": "ml.delete_job",
       "privileges": {
@@ -5223,6 +5279,7 @@
         }
       },
       "description": "Delete an unreferenced trained model.\nThe request deletes a trained inference model that is not referenced by an ingest pipeline.",
+      "docTag": "ml trained model",
       "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/current/delete-trained-models.html",
       "name": "ml.delete_trained_model",
       "privileges": {
@@ -5263,6 +5320,7 @@
         }
       },
       "description": "Delete a trained model alias.\nThis API deletes an existing model alias that refers to a trained model. If\nthe model alias is missing or refers to a model other than the one identified\nby the `model_id`, this API returns an error.",
+      "docTag": "ml trained model",
       "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/current/delete-trained-models-aliases.html",
       "name": "ml.delete_trained_model_alias",
       "privileges": {
@@ -5306,6 +5364,7 @@
         }
       },
       "description": "Estimate job model memory usage.\nMakes an estimation of the memory usage for an anomaly detection job model.\nIt is based on analysis configuration details for the job and cardinality\nestimates for the fields it references.",
+      "docTag": "ml anomaly",
       "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/current/ml-apis.html",
       "name": "ml.estimate_model_memory",
       "privileges": {
@@ -5349,6 +5408,7 @@
         }
       },
       "description": "Evaluate data frame analytics.\nThe API packages together commonly used evaluation metrics for various types\nof machine learning features. This has been designed for use on indexes\ncreated by data frame analytics. Evaluation requires both a ground truth\nfield and an analytics result field to be present.",
+      "docTag": "ml data frame",
       "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/current/evaluate-dfanalytics.html",
       "name": "ml.evaluate_data_frame",
       "privileges": {
@@ -5392,6 +5452,7 @@
         }
       },
       "description": "Force buffered data to be processed.\nThe flush jobs API is only applicable when sending data for analysis using\nthe post data API. Depending on the content of the buffer, then it might\nadditionally calculate new results. Both flush and close operations are\nsimilar, however the flush is more efficient if you are expecting to send\nmore data for analysis. When flushing, the job remains open and is available\nto continue analyzing data. A close operation additionally prunes and\npersists the model state to disk and the job must be opened again before\nanalyzing further data.",
+      "docTag": "ml anomaly",
       "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/current/ml-flush-job.html",
       "name": "ml.flush_job",
       "privileges": {
@@ -5435,6 +5496,7 @@
         }
       },
       "description": "Get info about events in calendars.",
+      "docTag": "ml anomaly",
       "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/current/ml-get-calendar-event.html",
       "name": "ml.get_calendar_events",
       "privileges": {
@@ -5475,6 +5537,7 @@
         }
       },
       "description": "Get calendar configuration info.",
+      "docTag": "ml anomaly",
       "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/current/ml-get-calendar.html",
       "name": "ml.get_calendars",
       "privileges": {
@@ -5526,6 +5589,7 @@
         }
       },
       "description": "Get data frame analytics job configuration info.\nYou can get information for multiple data frame analytics jobs in a single\nAPI request by using a comma-separated list of data frame analytics jobs or a\nwildcard expression.",
+      "docTag": "ml data frame",
       "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/current/get-dfanalytics.html",
       "name": "ml.get_data_frame_analytics",
       "privileges": {
@@ -5571,7 +5635,8 @@
           "stability": "stable"
         }
       },
-      "description": "Get data frame analytics jobs usage info.",
+      "description": "Get data frame analytics job stats.",
+      "docTag": "ml data frame",
       "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/current/get-dfanalytics-stats.html",
       "name": "ml.get_data_frame_analytics_stats",
       "privileges": {
@@ -5617,7 +5682,8 @@
           "stability": "stable"
         }
       },
-      "description": "Get datafeeds usage info.\nYou can get statistics for multiple datafeeds in a single API request by\nusing a comma-separated list of datafeeds or a wildcard expression. You can\nget statistics for all datafeeds by using `_all`, by specifying `*` as the\n`<feed_id>`, or by omitting the `<feed_id>`. If the datafeed is stopped, the\nonly information you receive is the `datafeed_id` and the `state`.\nThis API returns a maximum of 10,000 datafeeds.",
+      "description": "Get datafeeds stats.\nYou can get statistics for multiple datafeeds in a single API request by\nusing a comma-separated list of datafeeds or a wildcard expression. You can\nget statistics for all datafeeds by using `_all`, by specifying `*` as the\n`<feed_id>`, or by omitting the `<feed_id>`. If the datafeed is stopped, the\nonly information you receive is the `datafeed_id` and the `state`.\nThis API returns a maximum of 10,000 datafeeds.",
+      "docTag": "ml anomaly",
       "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/current/ml-get-datafeed-stats.html",
       "name": "ml.get_datafeed_stats",
       "privileges": {
@@ -5664,6 +5730,7 @@
         }
       },
       "description": "Get datafeeds configuration info.\nYou can get information for multiple datafeeds in a single API request by\nusing a comma-separated list of datafeeds or a wildcard expression. You can\nget information for all datafeeds by using `_all`, by specifying `*` as the\n`<feed_id>`, or by omitting the `<feed_id>`.\nThis API returns a maximum of 10,000 datafeeds.",
+      "docTag": "ml anomaly",
       "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/current/ml-get-datafeed.html",
       "name": "ml.get_datafeeds",
       "privileges": {
@@ -5710,6 +5777,7 @@
         }
       },
       "description": "Get filters.\nYou can get a single filter or all filters.",
+      "docTag": "ml anomaly",
       "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/current/ml-get-filter.html",
       "name": "ml.get_filters",
       "privileges": {
@@ -5755,7 +5823,8 @@
           "stability": "stable"
         }
       },
-      "description": "Get anomaly detection jobs usage info.",
+      "description": "Get anomaly detection job stats.",
+      "docTag": "ml anomaly",
       "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/current/ml-get-job-stats.html",
       "name": "ml.get_job_stats",
       "privileges": {
@@ -5802,6 +5871,7 @@
         }
       },
       "description": "Get anomaly detection jobs configuration info.\nYou can get information for multiple anomaly detection jobs in a single API\nrequest by using a group name, a comma-separated list of jobs, or a wildcard\nexpression. You can get information for all anomaly detection jobs by using\n`_all`, by specifying `*` as the `<job_id>`, or by omitting the `<job_id>`.",
+      "docTag": "ml anomaly",
       "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/current/ml-get-job.html",
       "name": "ml.get_jobs",
       "privileges": {
@@ -5848,6 +5918,7 @@
         }
       },
       "description": "Get overall bucket results.\n\nRetrievs overall bucket results that summarize the bucket results of\nmultiple anomaly detection jobs.\n\nThe `overall_score` is calculated by combining the scores of all the\nbuckets within the overall bucket span. First, the maximum\n`anomaly_score` per anomaly detection job in the overall bucket is\ncalculated. Then the `top_n` of those scores are averaged to result in\nthe `overall_score`. This means that you can fine-tune the\n`overall_score` so that it is more or less sensitive to the number of\njobs that detect an anomaly at the same time. For example, if you set\n`top_n` to `1`, the `overall_score` is the maximum bucket score in the\noverall bucket. Alternatively, if you set `top_n` to the number of jobs,\nthe `overall_score` is high only when all jobs detect anomalies in that\noverall bucket. If you set the `bucket_span` parameter (to a value\ngreater than its default), the `overall_score` is the maximum\n`overall_score` of the overall buckets that have a span equal to the\njobs' largest bucket span.",
+      "docTag": "ml anomaly",
       "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/current/ml-get-overall-buckets.html",
       "name": "ml.get_overall_buckets",
       "privileges": {
@@ -5892,6 +5963,7 @@
         }
       },
       "description": "Get trained model configuration info.",
+      "docTag": "ml trained model",
       "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/current/get-trained-models.html",
       "name": "ml.get_trained_models",
       "privileges": {
@@ -5938,6 +6010,7 @@
         }
       },
       "description": "Get trained models usage info.\nYou can get usage information for multiple trained\nmodels in a single API request by using a comma-separated list of model IDs or a wildcard expression.",
+      "docTag": "ml trained model",
       "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/current/get-trained-models-stats.html",
       "name": "ml.get_trained_models_stats",
       "privileges": {
@@ -5984,6 +6057,7 @@
         }
       },
       "description": "Evaluate a trained model.",
+      "docTag": "ml trained model",
       "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/master/infer-trained-model.html",
       "name": "ml.infer_trained_model",
       "request": {
@@ -6032,6 +6106,7 @@
         }
       },
       "description": "Open anomaly detection jobs.\nAn anomaly detection job must be opened to be ready to receive and analyze\ndata. It can be opened and closed multiple times throughout its lifecycle.\nWhen you open a new job, it starts with an empty model.\nWhen you open an existing job, the most recent model state is automatically\nloaded. The job is ready to resume its analysis from where it left off, once\nnew data is received.",
+      "docTag": "ml anomaly",
       "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/current/ml-open-job.html",
       "name": "ml.open_job",
       "privileges": {
@@ -6075,6 +6150,7 @@
         }
       },
       "description": "Add scheduled events to the calendar.",
+      "docTag": "ml anomaly",
       "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/current/ml-post-calendar-event.html",
       "name": "ml.post_calendar_events",
       "privileges": {
@@ -6118,6 +6194,7 @@
         }
       },
       "description": "Preview features used by data frame analytics.\nPreviews the extracted features used by a data frame analytics config.",
+      "docTag": "ml data frame",
       "docUrl": "http://www.elastic.co/guide/en/elasticsearch/reference/current/preview-dfanalytics.html",
       "name": "ml.preview_data_frame_analytics",
       "privileges": {
@@ -6169,6 +6246,7 @@
         }
       },
       "description": "Preview a datafeed.\nThis API returns the first \"page\" of search results from a datafeed.\nYou can preview an existing datafeed or provide configuration details for a datafeed\nand anomaly detection job in the API. The preview shows the structure of the data\nthat will be passed to the anomaly detection engine.\nIMPORTANT: When Elasticsearch security features are enabled, the preview uses the credentials of the user that\ncalled the API. However, when the datafeed starts it uses the roles of the last user that created or updated the\ndatafeed. To get a preview that accurately reflects the behavior of the datafeed, use the appropriate credentials.\nYou can also use secondary authorization headers to supply the credentials.",
+      "docTag": "ml anomaly",
       "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/current/ml-preview-datafeed.html",
       "name": "ml.preview_datafeed",
       "privileges": {
@@ -6223,6 +6301,7 @@
         }
       },
       "description": "Create a calendar.",
+      "docTag": "ml anomaly",
       "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/current/ml-put-calendar.html",
       "name": "ml.put_calendar",
       "privileges": {
@@ -6266,6 +6345,7 @@
         }
       },
       "description": "Add anomaly detection job to calendar.",
+      "docTag": "ml anomaly",
       "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/current/ml-put-calendar-job.html",
       "name": "ml.put_calendar_job",
       "privileges": {
@@ -6307,6 +6387,7 @@
       },
       "description": "Create a data frame analytics job.\nThis API creates a data frame analytics job that performs an analysis on the\nsource indices and stores the outcome in a destination index.",
       "docId": "put-dfanalytics",
+      "docTag": "ml data frame",
       "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/put-dfanalytics.html",
       "name": "ml.put_data_frame_analytics",
       "privileges": {
@@ -6357,6 +6438,7 @@
         }
       },
       "description": "Create a datafeed.\nDatafeeds retrieve data from Elasticsearch for analysis by an anomaly detection job.\nYou can associate only one datafeed with each anomaly detection job.\nThe datafeed contains a query that runs at a defined interval (`frequency`).\nIf you are concerned about delayed data, you can add a delay (`query_delay') at each interval.\nWhen Elasticsearch security features are enabled, your datafeed remembers which roles the user who created it had\nat the time of creation and runs the query using those same roles. If you provide secondary authorization headers,\nthose credentials are used instead.\nYou must use Kibana, this API, or the create anomaly detection jobs API to create a datafeed. Do not add a datafeed\ndirectly to the `.ml-config` index. Do not give users `write` privileges on the `.ml-config` index.",
+      "docTag": "ml anomaly",
       "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/current/ml-put-datafeed.html",
       "name": "ml.put_datafeed",
       "privileges": {
@@ -6403,6 +6485,7 @@
         }
       },
       "description": "Create a filter.\nA filter contains a list of strings. It can be used by one or more anomaly detection jobs.\nSpecifically, filters are referenced in the `custom_rules` property of detector configuration objects.",
+      "docTag": "ml anomaly",
       "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/current/ml-put-filter.html",
       "name": "ml.put_filter",
       "privileges": {
@@ -6446,6 +6529,7 @@
         }
       },
       "description": "Create an anomaly detection job.\nIf you include a `datafeed_config`, you must have read index privileges on the source index.",
+      "docTag": "ml anomaly",
       "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/current/ml-put-job.html",
       "name": "ml.put_job",
       "privileges": {
@@ -6492,6 +6576,7 @@
         }
       },
       "description": "Create a trained model.\nEnable you to supply a trained model that is not created by data frame analytics.",
+      "docTag": "ml trained model",
       "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/current/put-trained-models.html",
       "name": "ml.put_trained_model",
       "privileges": {
@@ -6535,6 +6620,7 @@
         }
       },
       "description": "Create or update a trained model alias.\nA trained model alias is a logical name used to reference a single trained\nmodel.\nYou can use aliases instead of trained model identifiers to make it easier to\nreference your models. For example, you can use aliases in inference\naggregations and processors.\nAn alias must be unique and refer to only a single trained model. However,\nyou can have multiple aliases for each trained model.\nIf you use this API to update an alias such that it references a different\ntrained model ID and the model uses a different type of data frame analytics,\nan error occurs. For example, this situation occurs if you have a trained\nmodel for regression analysis and a trained model for classification\nanalysis; you cannot reassign an alias from one type of trained model to\nanother.\nIf you use this API to update an alias and there are very few input fields in\ncommon between the old and new trained models for the model alias, the API\nreturns a warning.",
+      "docTag": "ml trained model",
       "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/current/put-trained-models-aliases.html",
       "name": "ml.put_trained_model_alias",
       "privileges": {
@@ -6578,6 +6664,7 @@
         }
       },
       "description": "Create part of a trained model definition.",
+      "docTag": "ml trained model",
       "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/current/put-trained-model-definition-part.html",
       "name": "ml.put_trained_model_definition_part",
       "privileges": {
@@ -6621,6 +6708,7 @@
         }
       },
       "description": "Create a trained model vocabulary.\nThis API is supported only for natural language processing (NLP) models.\nThe vocabulary is stored in the index as described in `inference_config.*.vocabulary` of the trained model definition.",
+      "docTag": "ml trained model",
       "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/current/put-trained-model-vocabulary.html",
       "name": "ml.put_trained_model_vocabulary",
       "privileges": {
@@ -6664,6 +6752,7 @@
         }
       },
       "description": "Reset an anomaly detection job.\nAll model state and results are deleted. The job is ready to start over as if\nit had just been created.\nIt is not currently possible to reset multiple jobs using wildcards or a\ncomma separated list.",
+      "docTag": "ml anomaly",
       "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/current/ml-reset-job.html",
       "name": "ml.reset_job",
       "privileges": {
@@ -6704,6 +6793,7 @@
         }
       },
       "description": "Start a data frame analytics job.\nA data frame analytics job can be started and stopped multiple times\nthroughout its lifecycle.\nIf the destination index does not exist, it is created automatically the\nfirst time you start the data frame analytics job. The\n`index.number_of_shards` and `index.number_of_replicas` settings for the\ndestination index are copied from the source index. If there are multiple\nsource indices, the destination index copies the highest setting values. The\nmappings for the destination index are also copied from the source indices.\nIf there are any mapping conflicts, the job fails to start.\nIf the destination index exists, it is used as is. You can therefore set up\nthe destination index in advance with custom settings and mappings.",
+      "docTag": "ml data frame",
       "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/current/start-dfanalytics.html",
       "name": "ml.start_data_frame_analytics",
       "privileges": {
@@ -6754,6 +6844,7 @@
         }
       },
       "description": "Start datafeeds.\n\nA datafeed must be started in order to retrieve data from Elasticsearch. A datafeed can be started and stopped\nmultiple times throughout its lifecycle.\n\nBefore you can start a datafeed, the anomaly detection job must be open. Otherwise, an error occurs.\n\nIf you restart a stopped datafeed, it continues processing input data from the next millisecond after it was stopped.\nIf new data was indexed for that exact millisecond between stopping and starting, it will be ignored.\n\nWhen Elasticsearch security features are enabled, your datafeed remembers which roles the last user to create or\nupdate it had at the time of creation or update and runs the query using those same roles. If you provided secondary\nauthorization headers when you created or updated the datafeed, those credentials are used instead.",
+      "docTag": "ml anomaly",
       "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/current/ml-start-datafeed.html",
       "name": "ml.start_datafeed",
       "privileges": {
@@ -6797,6 +6888,7 @@
         }
       },
       "description": "Start a trained model deployment.\nIt allocates the model to every machine learning node.",
+      "docTag": "ml trained model",
       "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/master/start-trained-model-deployment.html",
       "name": "ml.start_trained_model_deployment",
       "privileges": {
@@ -6840,6 +6932,7 @@
         }
       },
       "description": "Stop data frame analytics jobs.\nA data frame analytics job can be started and stopped multiple times\nthroughout its lifecycle.",
+      "docTag": "ml data frame",
       "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/current/stop-dfanalytics.html",
       "name": "ml.stop_data_frame_analytics",
       "privileges": {
@@ -6883,6 +6976,7 @@
         }
       },
       "description": "Stop datafeeds.\nA datafeed that is stopped ceases to retrieve data from Elasticsearch. A datafeed can be started and stopped\nmultiple times throughout its lifecycle.",
+      "docTag": "ml anomaly",
       "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/current/ml-stop-datafeed.html",
       "name": "ml.stop_datafeed",
       "privileges": {
@@ -6926,6 +7020,7 @@
         }
       },
       "description": "Stop a trained model deployment.",
+      "docTag": "ml trained model",
       "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/master/stop-trained-model-deployment.html",
       "name": "ml.stop_trained_model_deployment",
       "privileges": {
@@ -6969,6 +7064,7 @@
         }
       },
       "description": "Update a data frame analytics job.",
+      "docTag": "ml data frame",
       "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/current/update-dfanalytics.html",
       "name": "ml.update_data_frame_analytics",
       "privileges": {
@@ -7019,6 +7115,7 @@
         }
       },
       "description": "Update a datafeed.\nYou must stop and start the datafeed for the changes to be applied.\nWhen Elasticsearch security features are enabled, your datafeed remembers which roles the user who updated it had at\nthe time of the update and runs the query using those same roles. If you provide secondary authorization headers,\nthose credentials are used instead.",
+      "docTag": "ml anomaly",
       "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/current/ml-update-datafeed.html",
       "name": "ml.update_datafeed",
       "privileges": {
@@ -7062,6 +7159,7 @@
         }
       },
       "description": "Update a filter.\nUpdates the description of a filter, adds items, or removes items from the list.",
+      "docTag": "ml anomaly",
       "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/current/ml-update-filter.html",
       "name": "ml.update_filter",
       "privileges": {
@@ -7105,6 +7203,7 @@
         }
       },
       "description": "Update an anomaly detection job.\nUpdates certain properties of an anomaly detection job.",
+      "docTag": "ml anomaly",
       "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/current/ml-update-job.html",
       "name": "ml.update_job",
       "privileges": {
@@ -7148,6 +7247,7 @@
         }
       },
       "description": "Update a trained model deployment.",
+      "docTag": "ml trained model",
       "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/current/update-trained-model-deployment.html",
       "name": "ml.update_trained_model_deployment",
       "privileges": {
@@ -7190,7 +7290,8 @@
           "stability": "stable"
         }
       },
-      "description": "Allows to execute several search operations in one request.",
+      "description": "Run multiple searches.\n\nThe format of the request is similar to the bulk API format and makes use of the newline delimited JSON (NDJSON) format.\nThe structure is as follows:\n\n```\nheader\\n\nbody\\n\nheader\\n\nbody\\n\n```\n\nThis structure is specifically optimized to reduce parsing if a specific search ends up redirected to another node.\n\nIMPORTANT: The final line of data must end with a newline character `\\n`.\nEach newline character may be preceded by a carriage return `\\r`.\nWhen sending requests to this endpoint the `Content-Type` header should be set to `application/x-ndjson`.",
+      "docTag": "search",
       "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/master/search-multi-search.html",
       "name": "msearch",
       "privileges": {
@@ -7241,8 +7342,11 @@
           "stability": "stable"
         }
       },
-      "description": "Runs multiple templated searches with a single request.",
+      "description": "Run multiple templated searches.",
+      "docTag": "search",
       "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/current/search-multi-search.html",
+      "extDocId": "search-templates",
+      "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/search-template.html",
       "name": "msearch_template",
       "privileges": {
         "index": [
@@ -7291,7 +7395,8 @@
           "stability": "stable"
         }
       },
-      "description": "Returns multiple termvectors in one request.",
+      "description": "Get multiple term vectors.\n\nYou can specify existing documents by index and ID or provide artificial documents in the body of the request.\nYou can specify the index in the request body or request URI.\nThe response contains a `docs` array with all the fetched termvectors.\nEach element has the structure provided by the termvectors API.",
+      "docTag": "document",
       "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/master/docs-multi-termvectors.html",
       "name": "mtermvectors",
       "request": {
@@ -7337,8 +7442,9 @@
           "stability": "stable"
         }
       },
-      "description": "A search request by default executes against the most recent visible data of the target indices,\nwhich is called point in time. Elasticsearch pit (point in time) is a lightweight view into the\nstate of the data as it existed when initiated. In some cases, it’s preferred to perform multiple\nsearch requests using the same point in time. For example, if refreshes happen between\n`search_after` requests, then the results of those requests might not be consistent as changes happening\nbetween searches are only visible to the more recent point in time.",
+      "description": "Open a point in time.\n\nA search request by default runs against the most recent visible data of the target indices,\nwhich is called point in time. Elasticsearch pit (point in time) is a lightweight view into the\nstate of the data as it existed when initiated. In some cases, it’s preferred to perform multiple\nsearch requests using the same point in time. For example, if refreshes happen between\n`search_after` requests, then the results of those requests might not be consistent as changes happening\nbetween searches are only visible to the more recent point in time.\n\nA point in time must be opened explicitly before being used in search requests.\nThe `keep_alive` parameter tells Elasticsearch how long it should persist.",
       "docId": "point-in-time-api",
+      "docTag": "search",
       "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/point-in-time-api.html",
       "name": "open_point_in_time",
       "privileges": {
@@ -7380,7 +7486,8 @@
           "stability": "stable"
         }
       },
-      "description": "Ping the cluster.\nReturns whether the cluster is running.",
+      "description": "Ping the cluster.\nGet information about whether the cluster is running.",
+      "docTag": "cluster",
       "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/current/index.html",
       "name": "ping",
       "request": {
@@ -7415,6 +7522,7 @@
         }
       },
       "description": "Create or update a script or search template.\nCreates or updates a stored script or search template.",
+      "docTag": "script",
       "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/master/modules-scripting.html",
       "name": "put_script",
       "request": {
@@ -7460,7 +7568,7 @@
           "stability": "stable"
         }
       },
-      "description": "Deletes a query rule within a query ruleset.",
+      "description": "Delete a query rule.\nDelete a query rule within a query ruleset.",
       "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/master/delete-query-rule.html",
       "name": "query_rules.delete_rule",
       "request": {
@@ -7495,7 +7603,7 @@
           "stability": "stable"
         }
       },
-      "description": "Deletes a query ruleset.",
+      "description": "Delete a query ruleset.",
       "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/master/delete-query-ruleset.html",
       "name": "query_rules.delete_ruleset",
       "request": {
@@ -7530,8 +7638,10 @@
           "stability": "stable"
         }
       },
-      "description": "Returns the details about a query rule within a query ruleset",
+      "description": "Get a query rule.\nGet details about a query rule within a query ruleset.",
       "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/master/get-query-rule.html",
+      "extDocId": "query-rule",
+      "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/search-using-query-rules.html",
       "name": "query_rules.get_rule",
       "request": {
         "name": "Request",
@@ -7565,7 +7675,7 @@
           "stability": "stable"
         }
       },
-      "description": "Returns the details about a query ruleset",
+      "description": "Get a query ruleset.\nGet details about a query ruleset.",
       "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/master/get-query-ruleset.html",
       "name": "query_rules.get_ruleset",
       "request": {
@@ -7600,7 +7710,7 @@
           "stability": "stable"
         }
       },
-      "description": "Returns summarized information about existing query rulesets.",
+      "description": "Get all query rulesets.\nGet summarized information about the query rulesets.",
       "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/master/list-query-rulesets.html",
       "name": "query_rules.list_rulesets",
       "request": {
@@ -7635,7 +7745,7 @@
           "stability": "stable"
         }
       },
-      "description": "Creates or updates a query rule within a query ruleset.",
+      "description": "Create or update a query rule.\nCreate or update a query rule within a query ruleset.",
       "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/master/put-query-rule.html",
       "name": "query_rules.put_rule",
       "request": {
@@ -7673,8 +7783,10 @@
           "stability": "stable"
         }
       },
-      "description": "Creates or updates a query ruleset.",
+      "description": "Create or update a query ruleset.",
       "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/master/put-query-ruleset.html",
+      "extDocId": "query-rule",
+      "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/search-using-query-rules.html",
       "name": "query_rules.put_ruleset",
       "request": {
         "name": "Request",
@@ -7700,6 +7812,44 @@
         }
       ]
     },
+    {
+      "availability": {
+        "serverless": {
+          "stability": "stable",
+          "visibility": "public"
+        },
+        "stack": {
+          "since": "8.10.0",
+          "stability": "stable"
+        }
+      },
+      "description": "Test a query ruleset.\nEvaluate match criteria against a query ruleset to identify the rules that would match that criteria.",
+      "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/master/test-query-ruleset.html",
+      "name": "query_rules.test",
+      "request": {
+        "name": "Request",
+        "namespace": "query_rules.test"
+      },
+      "requestBodyRequired": true,
+      "requestMediaType": [
+        "application/json"
+      ],
+      "response": {
+        "name": "Response",
+        "namespace": "query_rules.test"
+      },
+      "responseMediaType": [
+        "application/json"
+      ],
+      "urls": [
+        {
+          "methods": [
+            "POST"
+          ],
+          "path": "/_query_rules/{ruleset_id}/_test"
+        }
+      ]
+    },
     {
       "availability": {
         "serverless": {
@@ -7711,7 +7861,8 @@
           "stability": "stable"
         }
       },
-      "description": "Enables you to evaluate the quality of ranked search results over a set of typical search queries.",
+      "description": "Evaluate ranked search results.\n\nEvaluate the quality of ranked search results over a set of typical search queries.",
+      "docTag": "search",
       "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/master/search-rank-eval.html",
       "name": "rank_eval",
       "privileges": {
@@ -7763,6 +7914,7 @@
         }
       },
       "description": "Reindex documents.\nCopies documents from a source to a destination. The source can be any existing index, alias, or data stream. The destination must differ from the source. For example, you cannot reindex a data stream into itself.",
+      "docTag": "document",
       "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/master/docs-reindex.html",
       "name": "reindex",
       "request": {
@@ -7799,7 +7951,8 @@
           "stability": "stable"
         }
       },
-      "description": "Renders a search template as a search request body.",
+      "description": "Render a search template.\n\nRender a search template as a search request body.",
+      "docTag": "search",
       "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/current/render-search-template-api.html",
       "name": "render_search_template",
       "request": {
@@ -7846,6 +7999,7 @@
         }
       },
       "description": "Run a script.\nRuns a script and returns a result.",
+      "docTag": "script",
       "docUrl": "https://www.elastic.co/guide/en/elasticsearch/painless/master/painless-execute-api.html",
       "name": "scripts_painless_execute",
       "request": {
@@ -7883,8 +8037,11 @@
           "stability": "stable"
         }
       },
-      "description": "Allows to retrieve a large numbers of results from a single search request.",
+      "description": "Run a scrolling search.\n\nIMPORTANT: The scroll API is no longer recommend for deep pagination. If you need to preserve the index state while paging through more than 10,000 hits, use the `search_after` parameter with a point in time (PIT).\n\nThe scroll API gets large sets of results from a single scrolling search request.\nTo get the necessary scroll ID, submit a search API request that includes an argument for the `scroll` query parameter.\nThe `scroll` parameter indicates how long Elasticsearch should retain the search context for the request.\nThe search response returns a scroll ID in the `_scroll_id` response body parameter.\nYou can then use the scroll ID with the scroll API to retrieve the next batch of results for the request.\nIf the Elasticsearch security features are enabled, the access to the results of a specific scroll ID is restricted to the user or API key that submitted the search.\n\nYou can also use the scroll API to specify a new scroll parameter that extends or shortens the retention period for the search context.\n\nIMPORTANT: Results from a scrolling search reflect the state of the index at the time of the initial search request. Subsequent indexing or document changes only affect later search and scroll requests.",
+      "docTag": "search",
       "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/master/search-request-body.html#request-body-search-scroll",
+      "extDocId": "scroll-search-results",
+      "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/paginate-search-results.html#scroll-search-results",
       "name": "scroll",
       "request": {
         "name": "Request",
@@ -7932,7 +8089,7 @@
           "stability": "stable"
         }
       },
-      "description": "Returns search hits that match the query defined in the request.\nYou can provide search queries using the `q` query string parameter or the request body.\nIf both are specified, only the query parameter is used.",
+      "description": "Run a search.\n\nGet search hits that match the query defined in the request.\nYou can provide search queries using the `q` query string parameter or the request body.\nIf both are specified, only the query parameter is used.",
       "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/master/search-search.html",
       "name": "search",
       "privileges": {
@@ -7983,7 +8140,7 @@
           "stability": "beta"
         }
       },
-      "description": "Deletes a search application.",
+      "description": "Delete a search application.\nRemove a search application and its associated alias. Indices attached to the search application are not removed.",
       "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/master/delete-search-application.html",
       "name": "search_application.delete",
       "request": {
@@ -8018,7 +8175,8 @@
           "stability": "experimental"
         }
       },
-      "description": "Delete a behavioral analytics collection.",
+      "description": "Delete a behavioral analytics collection.\nThe associated data stream is also deleted.",
+      "docTag": "analytics",
       "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/master/delete-analytics-collection.html",
       "name": "search_application.delete_behavioral_analytics",
       "request": {
@@ -8053,7 +8211,7 @@
           "stability": "beta"
         }
       },
-      "description": "Returns the details about a search application",
+      "description": "Get search application details.",
       "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/master/get-search-application.html",
       "name": "search_application.get",
       "request": {
@@ -8088,7 +8246,8 @@
           "stability": "experimental"
         }
       },
-      "description": "Returns the existing behavioral analytics collections.",
+      "description": "Get behavioral analytics collections.",
+      "docTag": "analytics",
       "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/master/list-analytics-collection.html",
       "name": "search_application.get_behavioral_analytics",
       "request": {
@@ -8164,7 +8323,7 @@
           "stability": "beta"
         }
       },
-      "description": "Creates or updates a search application.",
+      "description": "Create or update a search application.",
       "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/master/put-search-application.html",
       "name": "search_application.put",
       "request": {
@@ -8202,7 +8361,8 @@
           "stability": "experimental"
         }
       },
-      "description": "Creates a behavioral analytics collection.",
+      "description": "Create a behavioral analytics collection.",
+      "docTag": "analytics",
       "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/master/put-analytics-collection.html",
       "name": "search_application.put_behavioral_analytics",
       "request": {
@@ -8237,7 +8397,7 @@
           "stability": "beta"
         }
       },
-      "description": "Perform a search against a search application.",
+      "description": "Run a search application search.\nGenerate and run an Elasticsearch query that uses the specified query parameteter and the search template associated with the search application or default template.\nUnspecified template parameters are assigned their default values if applicable.",
       "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/master/search-application-search.html",
       "name": "search_application.search",
       "request": {
@@ -8276,7 +8436,8 @@
           "stability": "stable"
         }
       },
-      "description": "Search a vector tile.\nSearches a vector tile for geospatial values.",
+      "description": "Search a vector tile.\n\nSearch a vector tile for geospatial values.",
+      "docTag": "search",
       "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/master/search-vector-tile-api.html",
       "name": "search_mvt",
       "request": {
@@ -8315,8 +8476,11 @@
           "stability": "stable"
         }
       },
-      "description": "Runs a search with a search template.",
+      "description": "Run a search with a search template.",
+      "docTag": "search",
       "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/current/search-template.html",
+      "extDocId": "search-template",
+      "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/search-template.html",
       "name": "search_template",
       "request": {
         "name": "Request",
@@ -8361,7 +8525,7 @@
           "stability": "stable"
         }
       },
-      "description": "Authenticate a user.\nAuthenticates a user and returns information about the authenticated user.\nInclude the user information in a [basic auth header](https://en.wikipedia.org/wiki/Basic_access_authentication).\nA successful call returns a JSON structure that shows user information such as their username, the roles that are assigned to the user, any assigned metadata, and information about the realms that authenticated and authorized the user.\nIf the user cannot be authenticated, this API returns a 401 status code.",
+      "description": "Authenticate a user.\n\nAuthenticates a user and returns information about the authenticated user.\nInclude the user information in a [basic auth header](https://en.wikipedia.org/wiki/Basic_access_authentication).\nA successful call returns a JSON structure that shows user information such as their username, the roles that are assigned to the user, any assigned metadata, and information about the realms that authenticated and authorized the user.\nIf the user cannot be authenticated, this API returns a 401 status code.",
       "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/current/security-api-authenticate.html",
       "name": "security.authenticate",
       "request": {
@@ -8396,7 +8560,7 @@
           "stability": "stable"
         }
       },
-      "description": "Create an API key.\nCreates an API key for access without requiring basic authentication.\nA successful request returns a JSON structure that contains the API key, its unique id, and its name.\nIf applicable, it also returns expiration information for the API key in milliseconds.\nNOTE: By default, API keys never expire. You can specify expiration information when you create the API keys.",
+      "description": "Create an API key.\n\nCreate an API key for access without requiring basic authentication.\nA successful request returns a JSON structure that contains the API key, its unique id, and its name.\nIf applicable, it also returns expiration information for the API key in milliseconds.\nNOTE: By default, API keys never expire. You can specify expiration information when you create the API keys.",
       "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/current/security-api-create-api-key.html",
       "name": "security.create_api_key",
       "privileges": {
@@ -8440,7 +8604,7 @@
           "stability": "stable"
         }
       },
-      "description": "Get API key information.\nRetrieves information for one or more API keys.\nNOTE: If you have only the `manage_own_api_key` privilege, this API returns only the API keys that you own.\nIf you have `read_security`, `manage_api_key` or greater privileges (including `manage_security`), this API returns all API keys regardless of ownership.",
+      "description": "Get API key information.\n\nRetrieves information for one or more API keys.\nNOTE: If you have only the `manage_own_api_key` privilege, this API returns only the API keys that you own.\nIf you have `read_security`, `manage_api_key` or greater privileges (including `manage_security`), this API returns all API keys regardless of ownership.",
       "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/current/security-api-get-api-key.html",
       "name": "security.get_api_key",
       "privileges": {
@@ -8481,8 +8645,10 @@
           "stability": "stable"
         }
       },
-      "description": "Check user privileges.\nDetermines whether the specified user has a specified list of privileges.",
+      "description": "Check user privileges.\n\nDetermine whether the specified user has a specified list of privileges.",
       "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/current/security-api-has-privileges.html",
+      "extDocId": "security-privileges",
+      "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/security-privileges.html",
       "name": "security.has_privileges",
       "request": {
         "name": "Request",
@@ -8527,7 +8693,7 @@
           "stability": "stable"
         }
       },
-      "description": "Invalidate API keys.\nInvalidates one or more API keys.\nThe `manage_api_key` privilege allows deleting any API keys.\nThe `manage_own_api_key` only allows deleting API keys that are owned by the user.\nIn addition, with the `manage_own_api_key` privilege, an invalidation request must be issued in one of the three formats:\n- Set the parameter `owner=true`.\n- Or, set both `username` and `realm_name` to match the user’s identity.\n- Or, if the request is issued by an API key, i.e. an API key invalidates itself, specify its ID in the `ids` field.",
+      "description": "Invalidate API keys.\n\nThis API invalidates API keys created by the create API key or grant API key APIs.\nInvalidated API keys fail authentication, but they can still be viewed using the get API key information and query API key information APIs, for at least the configured retention period, until they are automatically deleted.\nThe `manage_api_key` privilege allows deleting any API keys.\nThe `manage_own_api_key` only allows deleting API keys that are owned by the user.\nIn addition, with the `manage_own_api_key` privilege, an invalidation request must be issued in one of the three formats:\n- Set the parameter `owner=true`.\n- Or, set both `username` and `realm_name` to match the user’s identity.\n- Or, if the request is issued by an API key, that is to say an API key invalidates itself, specify its ID in the `ids` field.",
       "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/current/security-api-invalidate-api-key.html",
       "name": "security.invalidate_api_key",
       "privileges": {
@@ -8571,7 +8737,7 @@
           "stability": "stable"
         }
       },
-      "description": "Query API keys.\nRetrieves a paginated list of API keys and their information. You can optionally filter the results with a query.",
+      "description": "Find API keys with a query.\n\nGet a paginated list of API keys and their information. You can optionally filter the results with a query.",
       "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/current/security-api-query-api-key.html",
       "name": "security.query_api_keys",
       "privileges": {
@@ -8616,7 +8782,7 @@
           "stability": "stable"
         }
       },
-      "description": "Update an API key.\nUpdates attributes of an existing API key.\nUsers can only update API keys that they created or that were granted to them.\nUse this API to update API keys created by the create API Key or grant API Key APIs.\nIf you need to apply the same update to many API keys, you can use bulk update API Keys to reduce overhead.\nIt’s not possible to update expired API keys, or API keys that have been invalidated by invalidate API Key.\nThis API supports updates to an API key’s access scope and metadata.\nThe access scope of an API key is derived from the `role_descriptors` you specify in the request, and a snapshot of the owner user’s permissions at the time of the request.\nThe snapshot of the owner’s permissions is updated automatically on every call.\nIf you don’t specify `role_descriptors` in the request, a call to this API might still change the API key’s access scope.\nThis change can occur if the owner user’s permissions have changed since the API key was created or last modified.\nTo update another user’s API key, use the `run_as` feature to submit a request on behalf of another user.\nIMPORTANT: It’s not possible to use an API key as the authentication credential for this API.\nTo update an API key, the owner user’s credentials are required.",
+      "description": "Update an API key.\n\nUpdates attributes of an existing API key.\nUsers can only update API keys that they created or that were granted to them.\nUse this API to update API keys created by the create API Key or grant API Key APIs.\nIf you need to apply the same update to many API keys, you can use bulk update API Keys to reduce overhead.\nIt’s not possible to update expired API keys, or API keys that have been invalidated by invalidate API Key.\nThis API supports updates to an API key’s access scope and metadata.\nThe access scope of an API key is derived from the `role_descriptors` you specify in the request, and a snapshot of the owner user’s permissions at the time of the request.\nThe snapshot of the owner’s permissions is updated automatically on every call.\nIf you don’t specify `role_descriptors` in the request, a call to this API might still change the API key’s access scope.\nThis change can occur if the owner user’s permissions have changed since the API key was created or last modified.\nTo update another user’s API key, use the `run_as` feature to submit a request on behalf of another user.\nIMPORTANT: It’s not possible to use an API key as the authentication credential for this API.\nTo update an API key, the owner user’s credentials are required.",
       "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/current/security-api-update-api-key.html",
       "name": "security.update_api_key",
       "privileges": {
@@ -8659,7 +8825,7 @@
           "stability": "stable"
         }
       },
-      "description": "Clears the SQL cursor",
+      "description": "Clear an SQL search cursor.",
       "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/current/clear-sql-cursor-api.html",
       "name": "sql.clear_cursor",
       "request": {
@@ -8697,7 +8863,7 @@
           "stability": "stable"
         }
       },
-      "description": "Deletes an async SQL search or a stored synchronous SQL search. If the search is still running, the API cancels it.",
+      "description": "Delete an async SQL search.\nDelete an async SQL search or a stored synchronous SQL search.\nIf the search is still running, the API cancels it.",
       "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/master/delete-async-sql-search-api.html",
       "name": "sql.delete_async",
       "request": {
@@ -8732,7 +8898,7 @@
           "stability": "stable"
         }
       },
-      "description": "Returns the current status and available results for an async SQL search or stored synchronous SQL search",
+      "description": "Get async SQL search results.\nGet the current status and available results for an async SQL search or stored synchronous SQL search.",
       "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/master/get-async-sql-search-api.html",
       "name": "sql.get_async",
       "request": {
@@ -8767,7 +8933,7 @@
           "stability": "stable"
         }
       },
-      "description": "Returns the current status of an async SQL search or a stored synchronous SQL search",
+      "description": "Get the async SQL search status.\nGet the current status of an async SQL search or a stored synchronous SQL search.",
       "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/master/get-async-sql-search-status-api.html",
       "name": "sql.get_async_status",
       "request": {
@@ -8802,7 +8968,7 @@
           "stability": "stable"
         }
       },
-      "description": "Executes a SQL request",
+      "description": "Get SQL search results.\nRun an SQL request.",
       "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/current/sql-search-api.html",
       "name": "sql.query",
       "request": {
@@ -8841,7 +9007,7 @@
           "stability": "stable"
         }
       },
-      "description": "Translates SQL into Elasticsearch queries",
+      "description": "Translate SQL into Elasticsearch queries.\nTranslate an SQL search into a search API request containing Query DSL.",
       "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/current/sql-translate-api.html",
       "name": "sql.translate",
       "request": {
@@ -8880,7 +9046,7 @@
           "stability": "stable"
         }
       },
-      "description": "Deletes a synonym set",
+      "description": "Delete a synonym set.",
       "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/master/delete-synonyms-set.html",
       "name": "synonyms.delete_synonym",
       "request": {
@@ -8915,7 +9081,7 @@
           "stability": "stable"
         }
       },
-      "description": "Deletes a synonym rule in a synonym set",
+      "description": "Delete a synonym rule.\nDelete a synonym rule from a synonym set.",
       "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/master/delete-synonym-rule.html",
       "name": "synonyms.delete_synonym_rule",
       "request": {
@@ -8953,7 +9119,7 @@
           "stability": "stable"
         }
       },
-      "description": "Retrieves a synonym set",
+      "description": "Get a synonym set.",
       "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/master/get-synonyms-set.html",
       "name": "synonyms.get_synonym",
       "request": {
@@ -8988,7 +9154,7 @@
           "stability": "stable"
         }
       },
-      "description": "Retrieves a synonym rule from a synonym set",
+      "description": "Get a synonym rule.\nGet a synonym rule from a synonym set.",
       "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/master/get-synonym-rule.html",
       "name": "synonyms.get_synonym_rule",
       "request": {
@@ -9026,7 +9192,7 @@
           "stability": "stable"
         }
       },
-      "description": "Retrieves a summary of all defined synonym sets",
+      "description": "Get all synonym sets.\nGet a summary of all defined synonym sets.",
       "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/master/list-synonyms-sets.html",
       "name": "synonyms.get_synonyms_sets",
       "request": {
@@ -9061,7 +9227,7 @@
           "stability": "stable"
         }
       },
-      "description": "Creates or updates a synonym set.",
+      "description": "Create or update a synonym set.\nSynonyms sets are limited to a maximum of 10,000 synonym rules per set.\nIf you need to manage more synonym rules, you can create multiple synonym sets.",
       "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/master/put-synonyms-set.html",
       "name": "synonyms.put_synonym",
       "request": {
@@ -9099,7 +9265,7 @@
           "stability": "stable"
         }
       },
-      "description": "Creates or updates a synonym rule in a synonym set",
+      "description": "Create or update a synonym rule.\nCreate or update a synonym rule in a synonym set.",
       "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/master/put-synonym-rule.html",
       "name": "synonyms.put_synonym_rule",
       "request": {
@@ -9173,7 +9339,8 @@
           "stability": "stable"
         }
       },
-      "description": "The terms enum API  can be used to discover terms in the index that begin with the provided string. It is designed for low-latency look-ups used in auto-complete scenarios.",
+      "description": "Get terms in an index.\n\nDiscover terms that match a partial string in an index.\nThis \"terms enum\" API is designed for low-latency look-ups used in auto-complete scenarios.\n\nIf the `complete` property in the response is false, the returned terms set may be incomplete and should be treated as approximate.\nThis can occur due to a few reasons, such as a request timeout or a node error.\n\nNOTE: The terms enum API may return terms from deleted documents. Deleted documents are initially only marked as deleted. It is not until their segments are merged that documents are actually deleted. Until that happens, the terms enum API will return terms from these documents.",
+      "docTag": "search",
       "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/current/search-terms-enum.html",
       "name": "terms_enum",
       "request": {
@@ -9211,7 +9378,8 @@
           "stability": "stable"
         }
       },
-      "description": "Get term vector information.\nReturns information and statistics about terms in the fields of a particular document.",
+      "description": "Get term vector information.\n\nGet information and statistics about terms in the fields of a particular document.",
+      "docTag": "document",
       "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/master/docs-termvectors.html",
       "name": "termvectors",
       "request": {
@@ -9706,6 +9874,7 @@
         }
       },
       "description": "Update a document.\nUpdates a document by running a script or passing a partial document.",
+      "docTag": "document",
       "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/master/docs-update.html",
       "name": "update",
       "request": {
@@ -9744,6 +9913,7 @@
         }
       },
       "description": "Update documents.\nUpdates documents that match the specified query.\nIf no query is specified, performs an update on every document in the data stream or index without modifying the source, which is useful for picking up mapping changes.",
+      "docTag": "document",
       "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/master/docs-update-by-query.html",
       "name": "update_by_query",
       "request": {
@@ -9779,7 +9949,7 @@
       "body": {
         "kind": "no_body"
       },
-      "description": "Deletes an async search by identifier.\nIf the search is still running, the search request will be cancelled.\nOtherwise, the saved search results are deleted.\nIf the Elasticsearch security features are enabled, the deletion of a specific async search is restricted to: the authenticated user that submitted the original search request; users that have the `cancel_task` cluster privilege.",
+      "description": "Delete an async search.\n\nIf the asynchronous search is still running, it is cancelled.\nOtherwise, the saved search results are deleted.\nIf the Elasticsearch security features are enabled, the deletion of a specific async search is restricted to: the authenticated user that submitted the original search request; users that have the `cancel_task` cluster privilege.",
       "inherits": {
         "type": {
           "name": "RequestBase",
@@ -9806,7 +9976,7 @@
         }
       ],
       "query": [],
-      "specLocation": "async_search/delete/AsyncSearchDeleteRequest.ts#L23-L38"
+      "specLocation": "async_search/delete/AsyncSearchDeleteRequest.ts#L23-L40"
     },
     {
       "body": {
@@ -9833,7 +10003,7 @@
       "body": {
         "kind": "no_body"
       },
-      "description": "Retrieves the results of a previously submitted async search request given its identifier.\nIf the Elasticsearch security features are enabled, access to the results of a specific async search is restricted to the user or API key that submitted it.",
+      "description": "Get async search results.\n\nRetrieve the results of a previously submitted asynchronous search request.\nIf the Elasticsearch security features are enabled, access to the results of a specific async search is restricted to the user or API key that submitted it.",
       "inherits": {
         "type": {
           "name": "RequestBase",
@@ -9897,7 +10067,7 @@
           }
         }
       ],
-      "specLocation": "async_search/get/AsyncSearchGetRequest.ts#L24-L54"
+      "specLocation": "async_search/get/AsyncSearchGetRequest.ts#L24-L57"
     },
     {
       "body": {
@@ -9939,7 +10109,7 @@
       "body": {
         "kind": "no_body"
       },
-      "description": "Get async search status\nRetrieves the status of a previously submitted async search request given its identifier, without retrieving search results.\nIf the Elasticsearch security features are enabled, use of this API is restricted to the `monitoring_user` role.",
+      "description": "Get the async search status.\n\nGet the status of a previously submitted async search request given its identifier, without retrieving search results.\nIf the Elasticsearch security features are enabled, use of this API is restricted to the `monitoring_user` role.",
       "inherits": {
         "type": {
           "name": "RequestBase",
@@ -9965,8 +10135,22 @@
           }
         }
       ],
-      "query": [],
-      "specLocation": "async_search/status/AsyncSearchStatusRequest.ts#L23-L37"
+      "query": [
+        {
+          "description": "Specifies how long the async search needs to be available.\nOngoing async searches and any saved search results are deleted after this period.",
+          "name": "keep_alive",
+          "required": false,
+          "serverDefault": "5d",
+          "type": {
+            "kind": "instance_of",
+            "type": {
+              "name": "Duration",
+              "namespace": "_types"
+            }
+          }
+        }
+      ],
+      "specLocation": "async_search/status/AsyncSearchStatusRequest.ts#L24-L48"
     },
     {
       "body": {
@@ -10468,7 +10652,7 @@
           }
         ]
       },
-      "description": "Runs a search request asynchronously.\nWhen the primary sort of the results is an indexed field, shards get sorted based on minimum and maximum value that they hold for that field, hence partial results become available following the sort criteria that was requested.\nWarning: Async search does not support scroll nor search requests that only include the suggest section.\nBy default, Elasticsearch doesn’t allow you to store an async search response larger than 10Mb and an attempt to do this results in an error.\nThe maximum allowed size for a stored async search response can be set by changing the `search.max_async_search_response_size` cluster level setting.",
+      "description": "Run an async search.\n\nWhen the primary sort of the results is an indexed field, shards get sorted based on minimum and maximum value that they hold for that field. Partial results become available following the sort criteria that was requested.\n\nWarning: Asynchronous search does not support scroll or search requests that include only the suggest section.\n\nBy default, Elasticsearch does not allow you to store an async search response larger than 10Mb and an attempt to do this results in an error.\nThe maximum allowed size for a stored async search response can be set by changing the `search.max_async_search_response_size` cluster level setting.",
       "inherits": {
         "type": {
           "name": "RequestBase",
@@ -10777,17 +10961,6 @@
             }
           }
         },
-        {
-          "name": "scroll",
-          "required": false,
-          "type": {
-            "kind": "instance_of",
-            "type": {
-              "name": "Duration",
-              "namespace": "_types"
-            }
-          }
-        },
         {
           "description": "Search operation type",
           "name": "search_type",
@@ -11070,7 +11243,7 @@
           }
         }
       ],
-      "specLocation": "async_search/submit/AsyncSearchSubmitRequest.ts#L55-L286"
+      "specLocation": "async_search/submit/AsyncSearchSubmitRequest.ts#L55-L291"
     },
     {
       "body": {
@@ -11195,6 +11368,19 @@
         }
       ],
       "query": [
+        {
+          "description": "If `true`, the response will include the ingest pipelines that were executed for each index or create.",
+          "name": "list_executed_pipelines",
+          "required": false,
+          "serverDefault": false,
+          "type": {
+            "kind": "instance_of",
+            "type": {
+              "name": "boolean",
+              "namespace": "_builtins"
+            }
+          }
+        },
         {
           "description": "ID of the pipeline to use to preprocess incoming documents.\nIf the index has a default ingest pipeline specified, then setting the value to `_none` disables the default ingest pipeline for this request.\nIf a final pipeline is configured it will always run, regardless of the value of this parameter.",
           "name": "pipeline",
@@ -11306,9 +11492,22 @@
               "namespace": "_builtins"
             }
           }
+        },
+        {
+          "description": "If `true`, the request's actions must target a data stream (existing or to-be-created).",
+          "name": "require_data_stream",
+          "required": false,
+          "serverDefault": false,
+          "type": {
+            "kind": "instance_of",
+            "type": {
+              "name": "boolean",
+              "namespace": "_builtins"
+            }
+          }
         }
       ],
-      "specLocation": "_global/bulk/BulkRequest.ts#L32-L104"
+      "specLocation": "_global/bulk/BulkRequest.ts#L32-L115"
     },
     {
       "body": {
@@ -12384,7 +12583,7 @@
           }
         ]
       },
-      "description": "Clears the search context and results for a scrolling search.",
+      "description": "Clear a scrolling search.\n\nClear the search context and results for a scrolling search.",
       "inherits": {
         "type": {
           "name": "RequestBase",
@@ -12411,7 +12610,7 @@
         }
       ],
       "query": [],
-      "specLocation": "_global/clear_scroll/ClearScrollRequest.ts#L23-L45"
+      "specLocation": "_global/clear_scroll/ClearScrollRequest.ts#L23-L48"
     },
     {
       "body": {
@@ -12503,7 +12702,7 @@
           }
         ]
       },
-      "description": "Closes a point-in-time.",
+      "description": "Close a point in time.\n\nA point in time must be opened explicitly before being used in search requests.\nThe `keep_alive` parameter tells Elasticsearch how long it should persist.\nA point in time is automatically closed when the `keep_alive` period has elapsed.\nHowever, keeping points in time has a cost; close them as soon as they are no longer required for search requests.",
       "inherits": {
         "type": {
           "name": "RequestBase",
@@ -12517,7 +12716,7 @@
       },
       "path": [],
       "query": [],
-      "specLocation": "_global/close_point_in_time/ClosePointInTimeRequest.ts#L23-L37"
+      "specLocation": "_global/close_point_in_time/ClosePointInTimeRequest.ts#L23-L43"
     },
     {
       "body": {
@@ -12649,7 +12848,7 @@
           }
         }
       ],
-      "specLocation": "cluster/delete_component_template/ClusterDeleteComponentTemplateRequest.ts#L24-L55"
+      "specLocation": "cluster/delete_component_template/ClusterDeleteComponentTemplateRequest.ts#L24-L56"
     },
     {
       "body": {
@@ -12730,7 +12929,7 @@
           }
         }
       ],
-      "specLocation": "cluster/exists_component_template/ClusterComponentTemplateExistsRequest.ts#L24-L55"
+      "specLocation": "cluster/exists_component_template/ClusterComponentTemplateExistsRequest.ts#L24-L56"
     },
     {
       "body": {
@@ -12839,7 +13038,7 @@
           }
         }
       ],
-      "specLocation": "cluster/get_component_template/ClusterGetComponentTemplateRequest.ts#L24-L66"
+      "specLocation": "cluster/get_component_template/ClusterGetComponentTemplateRequest.ts#L24-L67"
     },
     {
       "body": {
@@ -13094,7 +13293,7 @@
           }
         }
       ],
-      "specLocation": "cluster/put_component_template/ClusterPutComponentTemplateRequest.ts#L25-L94"
+      "specLocation": "cluster/put_component_template/ClusterPutComponentTemplateRequest.ts#L25-L95"
     },
     {
       "body": {
@@ -13121,7 +13320,7 @@
       "body": {
         "kind": "no_body"
       },
-      "description": "Updates the last_seen field in the connector, and sets it to current timestamp",
+      "description": "Check in a connector.\n\nUpdate the `last_seen` field in the connector and set it to the current timestamp.",
       "inherits": {
         "type": {
           "name": "RequestBase",
@@ -13148,7 +13347,7 @@
         }
       ],
       "query": [],
-      "specLocation": "connector/check_in/ConnectorCheckInRequest.ts#L22-L36"
+      "specLocation": "connector/check_in/ConnectorCheckInRequest.ts#L22-L38"
     },
     {
       "body": {
@@ -13181,7 +13380,7 @@
       "body": {
         "kind": "no_body"
       },
-      "description": "Deletes a connector.",
+      "description": "Delete a connector.\n\nRemoves a connector and associated sync jobs.\nThis is a destructive action that is not recoverable.\nNOTE: This action doesn’t delete any API keys, ingest pipelines, or data indices associated with the connector.\nThese need to be removed manually.",
       "inherits": {
         "type": {
           "name": "RequestBase",
@@ -13221,7 +13420,7 @@
           }
         }
       ],
-      "specLocation": "connector/delete/ConnectorDeleteRequest.ts#L22-L42"
+      "specLocation": "connector/delete/ConnectorDeleteRequest.ts#L22-L47"
     },
     {
       "body": {
@@ -13248,7 +13447,7 @@
       "body": {
         "kind": "no_body"
       },
-      "description": "Retrieves a connector.",
+      "description": "Get a connector.\n\nGet the details about a connector.",
       "inherits": {
         "type": {
           "name": "RequestBase",
@@ -13275,7 +13474,7 @@
         }
       ],
       "query": [],
-      "specLocation": "connector/get/ConnectorGetRequest.ts#L22-L36"
+      "specLocation": "connector/get/ConnectorGetRequest.ts#L22-L38"
     },
     {
       "body": {
@@ -13302,7 +13501,7 @@
       "body": {
         "kind": "no_body"
       },
-      "description": "Returns existing connectors.",
+      "description": "Get all connectors.\n\nGet information about all connectors.",
       "inherits": {
         "type": {
           "name": "RequestBase",
@@ -13389,7 +13588,7 @@
           }
         }
       ],
-      "specLocation": "connector/list/ConnectorListRequest.ts#L23-L57"
+      "specLocation": "connector/list/ConnectorListRequest.ts#L23-L59"
     },
     {
       "body": {
@@ -13504,7 +13703,7 @@
           }
         ]
       },
-      "description": "Creates a connector.",
+      "description": "Create a connector.\n\nConnectors are Elasticsearch integrations that bring content from third-party data sources, which can be deployed on Elastic Cloud or hosted on your own infrastructure.\nElastic managed connectors (Native connectors) are a managed service on Elastic Cloud.\nSelf-managed connectors (Connector clients) are self-managed on your infrastructure.",
       "inherits": {
         "type": {
           "name": "RequestBase",
@@ -13518,7 +13717,7 @@
       },
       "path": [],
       "query": [],
-      "specLocation": "connector/post/ConnectorPostRequest.ts#L22-L42"
+      "specLocation": "connector/post/ConnectorPostRequest.ts#L22-L46"
     },
     {
       "body": {
@@ -13630,7 +13829,7 @@
           }
         ]
       },
-      "description": "Creates or updates a connector.",
+      "description": "Create or update a connector.",
       "inherits": {
         "type": {
           "name": "RequestBase",
@@ -13701,7 +13900,7 @@
       "body": {
         "kind": "no_body"
       },
-      "description": "Cancels a connector sync job.",
+      "description": "Cancel a connector sync job.\n\nCancel a connector sync job, which sets the status to cancelling and updates `cancellation_requested_at` to the current time.\nThe connector service is then responsible for setting the status of connector sync jobs to cancelled.",
       "inherits": {
         "type": {
           "name": "RequestBase",
@@ -13728,7 +13927,7 @@
         }
       ],
       "query": [],
-      "specLocation": "connector/sync_job_cancel/SyncJobCancelRequest.ts#L22-L36"
+      "specLocation": "connector/sync_job_cancel/SyncJobCancelRequest.ts#L22-L39"
     },
     {
       "body": {
@@ -13761,7 +13960,7 @@
       "body": {
         "kind": "no_body"
       },
-      "description": "Deletes a connector sync job.",
+      "description": "Delete a connector sync job.\n\nRemove a connector sync job and its associated data.\nThis is a destructive action that is not recoverable.",
       "inherits": {
         "type": {
           "name": "RequestBase",
@@ -13788,7 +13987,7 @@
         }
       ],
       "query": [],
-      "specLocation": "connector/sync_job_delete/SyncJobDeleteRequest.ts#L22-L36"
+      "specLocation": "connector/sync_job_delete/SyncJobDeleteRequest.ts#L22-L39"
     },
     {
       "body": {
@@ -13815,7 +14014,7 @@
       "body": {
         "kind": "no_body"
       },
-      "description": "Retrieves a connector sync job.",
+      "description": "Get a connector sync job.",
       "inherits": {
         "type": {
           "name": "RequestBase",
@@ -13869,7 +14068,7 @@
       "body": {
         "kind": "no_body"
       },
-      "description": "Lists connector sync jobs.",
+      "description": "Get all connector sync jobs.\n\nGet information about all stored connector sync jobs listed by their creation date in ascending order.",
       "inherits": {
         "type": {
           "name": "RequestBase",
@@ -13959,7 +14158,7 @@
           }
         }
       ],
-      "specLocation": "connector/sync_job_list/SyncJobListRequest.ts#L25-L55"
+      "specLocation": "connector/sync_job_list/SyncJobListRequest.ts#L25-L57"
     },
     {
       "body": {
@@ -14042,7 +14241,7 @@
           }
         ]
       },
-      "description": "Creates a connector sync job.",
+      "description": "Create a connector sync job.\n\nCreate a connector sync job document in the internal index and initialize its counters and timestamps with default values.",
       "inherits": {
         "type": {
           "name": "RequestBase",
@@ -14056,7 +14255,7 @@
       },
       "path": [],
       "query": [],
-      "specLocation": "connector/sync_job_post/SyncJobPostRequest.ts#L23-L43"
+      "specLocation": "connector/sync_job_post/SyncJobPostRequest.ts#L23-L45"
     },
     {
       "body": {
@@ -14089,7 +14288,7 @@
       "body": {
         "kind": "no_body"
       },
-      "description": "Activates the valid draft filtering for a connector.",
+      "description": "Activate the connector draft filter.\n\nActivates the valid draft filtering for a connector.",
       "inherits": {
         "type": {
           "name": "RequestBase",
@@ -14116,7 +14315,7 @@
         }
       ],
       "query": [],
-      "specLocation": "connector/update_active_filtering/ConnectorUpdateActiveFilteringRequest.ts#L22-L36"
+      "specLocation": "connector/update_active_filtering/ConnectorUpdateActiveFilteringRequest.ts#L22-L38"
     },
     {
       "body": {
@@ -14173,7 +14372,7 @@
           }
         ]
       },
-      "description": "Updates the API key id in the connector document",
+      "description": "Update the connector API key ID.\n\nUpdate the `api_key_id` and `api_key_secret_id` fields of a connector.\nYou can specify the ID of the API key used for authorization and the ID of the connector secret where the API key is stored.\nThe connector secret ID is required only for Elastic managed (native) connectors.\nSelf-managed connectors (connector clients) do not use this field.",
       "inherits": {
         "type": {
           "name": "RequestBase",
@@ -14200,7 +14399,7 @@
         }
       ],
       "query": [],
-      "specLocation": "connector/update_api_key_id/ConnectorUpdateAPIKeyIDRequest.ts#L21-L42"
+      "specLocation": "connector/update_api_key_id/ConnectorUpdateAPIKeyIDRequest.ts#L21-L47"
     },
     {
       "body": {
@@ -14264,7 +14463,7 @@
           }
         ]
       },
-      "description": "Updates the configuration field in the connector document",
+      "description": "Update the connector configuration.\n\nUpdate the configuration field in the connector document.",
       "inherits": {
         "type": {
           "name": "RequestBase",
@@ -14291,7 +14490,7 @@
         }
       ],
       "query": [],
-      "specLocation": "connector/update_configuration/ConnectorUpdateConfigurationRequest.ts#L25-L47"
+      "specLocation": "connector/update_configuration/ConnectorUpdateConfigurationRequest.ts#L25-L49"
     },
     {
       "body": {
@@ -14346,7 +14545,7 @@
           }
         ]
       },
-      "description": "Updates the filtering field in the connector document",
+      "description": "Update the connector error field.\n\nSet the error field for the connector.\nIf the error provided in the request body is non-null, the connector’s status is updated to error.\nOtherwise, if the error is reset to null, the connector status is updated to connected.",
       "inherits": {
         "type": {
           "name": "RequestBase",
@@ -14373,7 +14572,7 @@
         }
       ],
       "query": [],
-      "specLocation": "connector/update_error/ConnectorUpdateErrorRequest.ts#L23-L44"
+      "specLocation": "connector/update_error/ConnectorUpdateErrorRequest.ts#L23-L48"
     },
     {
       "body": {
@@ -14447,7 +14646,7 @@
           }
         ]
       },
-      "description": "Updates the filtering field in the connector document",
+      "description": "Update the connector filtering.\n\nUpdate the draft filtering configuration of a connector and marks the draft validation state as edited.\nThe filtering draft is activated once validated by the running Elastic connector service.\nThe filtering property is used to configure sync rules (both basic and advanced) for a connector.",
       "inherits": {
         "type": {
           "name": "RequestBase",
@@ -14474,7 +14673,7 @@
         }
       ],
       "query": [],
-      "specLocation": "connector/update_filtering/ConnectorUpdateFilteringRequest.ts#L27-L50"
+      "specLocation": "connector/update_filtering/ConnectorUpdateFilteringRequest.ts#L27-L54"
     },
     {
       "body": {
@@ -14520,7 +14719,7 @@
           }
         ]
       },
-      "description": "Updates the draft filtering validation info for a connector.",
+      "description": "Update the connector draft filtering validation.\n\nUpdate the draft filtering validation info for a connector.",
       "inherits": {
         "type": {
           "name": "RequestBase",
@@ -14547,7 +14746,7 @@
         }
       ],
       "query": [],
-      "specLocation": "connector/update_filtering_validation/ConnectorUpdateFilteringValidationRequest.ts#L23-L40"
+      "specLocation": "connector/update_filtering_validation/ConnectorUpdateFilteringValidationRequest.ts#L23-L42"
     },
     {
       "body": {
@@ -14602,7 +14801,7 @@
           }
         ]
       },
-      "description": "Updates the index_name in the connector document",
+      "description": "Update the connector index name.\n\nUpdate the `index_name` field of a connector, specifying the index where the data ingested by the connector is stored.",
       "inherits": {
         "type": {
           "name": "RequestBase",
@@ -14629,7 +14828,7 @@
         }
       ],
       "query": [],
-      "specLocation": "connector/update_index_name/ConnectorUpdateIndexNameRequest.ts#L23-L43"
+      "specLocation": "connector/update_index_name/ConnectorUpdateIndexNameRequest.ts#L23-L45"
     },
     {
       "body": {
@@ -14686,7 +14885,7 @@
           }
         ]
       },
-      "description": "Updates the name and description fields in the connector document",
+      "description": "Update the connector name and description.",
       "inherits": {
         "type": {
           "name": "RequestBase",
@@ -14759,7 +14958,7 @@
           }
         ]
       },
-      "description": "Updates the is_native flag in the connector document",
+      "description": "Update the connector is_native flag.",
       "inherits": {
         "type": {
           "name": "RequestBase",
@@ -14832,7 +15031,7 @@
           }
         ]
       },
-      "description": "Updates the pipeline field in the connector document",
+      "description": "Update the connector pipeline.\n\nWhen you create a new connector, the configuration of an ingest pipeline is populated with default settings.",
       "inherits": {
         "type": {
           "name": "RequestBase",
@@ -14859,7 +15058,7 @@
         }
       ],
       "query": [],
-      "specLocation": "connector/update_pipeline/ConnectorUpdatePipelineRequest.ts#L23-L44"
+      "specLocation": "connector/update_pipeline/ConnectorUpdatePipelineRequest.ts#L23-L46"
     },
     {
       "body": {
@@ -14905,7 +15104,7 @@
           }
         ]
       },
-      "description": "Updates the scheduling field in the connector document",
+      "description": "Update the connector scheduling.",
       "inherits": {
         "type": {
           "name": "RequestBase",
@@ -14978,7 +15177,7 @@
           }
         ]
       },
-      "description": "Updates the service type of the connector",
+      "description": "Update the connector service type.",
       "inherits": {
         "type": {
           "name": "RequestBase",
@@ -15051,7 +15250,7 @@
           }
         ]
       },
-      "description": "Updates the status of the connector",
+      "description": "Update the connector status.",
       "inherits": {
         "type": {
           "name": "RequestBase",
@@ -15125,7 +15324,7 @@
           }
         ]
       },
-      "description": "Returns number of documents matching a query.",
+      "description": "Count search results.\nGet the number of documents matching a query.",
       "inherits": {
         "type": {
           "name": "RequestBase",
@@ -15327,7 +15526,7 @@
           }
         }
       ],
-      "specLocation": "_global/count/CountRequest.ts#L26-L120"
+      "specLocation": "_global/count/CountRequest.ts#L26-L123"
     },
     {
       "body": {
@@ -15678,7 +15877,7 @@
           }
         }
       ],
-      "specLocation": "_global/delete/DeleteRequest.ts#L34-L92"
+      "specLocation": "_global/delete/DeleteRequest.ts#L34-L93"
     },
     {
       "body": {
@@ -16168,7 +16367,7 @@
           }
         }
       ],
-      "specLocation": "_global/delete_by_query/DeleteByQueryRequest.ts#L36-L210"
+      "specLocation": "_global/delete_by_query/DeleteByQueryRequest.ts#L36-L211"
     },
     {
       "body": {
@@ -16450,7 +16649,7 @@
           }
         }
       ],
-      "specLocation": "_global/delete_script/DeleteScriptRequest.ts#L24-L52"
+      "specLocation": "_global/delete_script/DeleteScriptRequest.ts#L24-L53"
     },
     {
       "body": {
@@ -16531,7 +16730,7 @@
       "body": {
         "kind": "no_body"
       },
-      "description": "Creates the enrich index for an existing enrich policy.",
+      "description": "Run an enrich policy.\nCreate the enrich index for an existing enrich policy.",
       "inherits": {
         "type": {
           "name": "RequestBase",
@@ -16572,7 +16771,7 @@
           }
         }
       ],
-      "specLocation": "enrich/execute_policy/ExecuteEnrichPolicyRequest.ts#L23-L44"
+      "specLocation": "enrich/execute_policy/ExecuteEnrichPolicyRequest.ts#L23-L45"
     },
     {
       "body": {
@@ -16590,7 +16789,7 @@
             }
           },
           {
-            "name": "task_id",
+            "name": "task",
             "required": false,
             "type": {
               "kind": "instance_of",
@@ -16858,7 +17057,7 @@
       "body": {
         "kind": "no_body"
       },
-      "description": "Deletes an async EQL search or a stored synchronous EQL search.\nThe API also deletes results for the search.",
+      "description": "Delete an async EQL search.\nDelete an async EQL search or a stored synchronous EQL search.\nThe API also deletes results for the search.",
       "inherits": {
         "type": {
           "name": "RequestBase",
@@ -16885,7 +17084,7 @@
         }
       ],
       "query": [],
-      "specLocation": "eql/delete/EqlDeleteRequest.ts#L23-L39"
+      "specLocation": "eql/delete/EqlDeleteRequest.ts#L23-L40"
     },
     {
       "body": {
@@ -16912,7 +17111,7 @@
       "body": {
         "kind": "no_body"
       },
-      "description": "Returns the current status and available results for an async EQL search or a stored synchronous EQL search.",
+      "description": "Get async EQL search results.\nGet the current status and available results for an async EQL search or a stored synchronous EQL search.",
       "inherits": {
         "type": {
           "name": "RequestBase",
@@ -16964,7 +17163,7 @@
           }
         }
       ],
-      "specLocation": "eql/get/EqlGetRequest.ts#L24-L50"
+      "specLocation": "eql/get/EqlGetRequest.ts#L24-L51"
     },
     {
       "body": {
@@ -17006,7 +17205,7 @@
       "body": {
         "kind": "no_body"
       },
-      "description": "Returns the current status for an async EQL search or a stored synchronous EQL search without returning results.",
+      "description": "Get the async EQL status.\nGet the current status for an async EQL search or a stored synchronous EQL search without returning results.",
       "inherits": {
         "type": {
           "name": "RequestBase",
@@ -17033,7 +17232,7 @@
         }
       ],
       "query": [],
-      "specLocation": "eql/get_status/EqlGetStatusRequest.ts#L23-L35"
+      "specLocation": "eql/get_status/EqlGetStatusRequest.ts#L23-L36"
     },
     {
       "body": {
@@ -17354,7 +17553,7 @@
           }
         ]
       },
-      "description": "Returns results matching a query expressed in Event Query Language (EQL)",
+      "description": "Get EQL search results.\nReturns search results for an Event Query Language (EQL) query.\nEQL assumes each document in a data stream or index corresponds to an event.",
       "inherits": {
         "type": {
           "name": "RequestBase",
@@ -17457,7 +17656,7 @@
           }
         }
       ],
-      "specLocation": "eql/search/EqlSearchRequest.ts#L28-L118"
+      "specLocation": "eql/search/EqlSearchRequest.ts#L28-L122"
     },
     {
       "body": {
@@ -17611,7 +17810,7 @@
           }
         ]
       },
-      "description": "Executes an ES|QL request",
+      "description": "Run an ES|QL query.\nGet search results for an ES|QL (Elasticsearch query language) query.",
       "inherits": {
         "type": {
           "name": "RequestBase",
@@ -17663,7 +17862,7 @@
           }
         }
       ],
-      "specLocation": "esql/query/QueryRequest.ts#L26-L89"
+      "specLocation": "esql/query/QueryRequest.ts#L26-L91"
     },
     {
       "body": {
@@ -17856,7 +18055,7 @@
           }
         }
       ],
-      "specLocation": "_global/exists/DocumentExistsRequest.ts#L31-L100"
+      "specLocation": "_global/exists/DocumentExistsRequest.ts#L31-L101"
     },
     {
       "body": {
@@ -18030,7 +18229,7 @@
           }
         }
       ],
-      "specLocation": "_global/exists_source/SourceExistsRequest.ts#L31-L94"
+      "specLocation": "_global/exists_source/SourceExistsRequest.ts#L31-L95"
     },
     {
       "body": {
@@ -18251,7 +18450,7 @@
           }
         }
       ],
-      "specLocation": "_global/explain/ExplainRequest.ts#L26-L106"
+      "specLocation": "_global/explain/ExplainRequest.ts#L26-L107"
     },
     {
       "body": {
@@ -18395,7 +18594,7 @@
           }
         ]
       },
-      "description": "The field capabilities API returns the information about the capabilities of fields among multiple indices.\nThe field capabilities API returns runtime fields like any other field. For example, a runtime field with a type\nof keyword is returned as any other field that belongs to the `keyword` family.",
+      "description": "Get the field capabilities.\n\nGet information about the capabilities of fields among multiple indices.\n\nFor data streams, the API returns field capabilities among the stream’s backing indices.\nIt returns runtime fields like any other field.\nFor example, a runtime field with a type of keyword is returned the same as any other field that belongs to the `keyword` family.",
       "inherits": {
         "type": {
           "name": "RequestBase",
@@ -18545,7 +18744,7 @@
           }
         }
       ],
-      "specLocation": "_global/field_caps/FieldCapabilitiesRequest.ts#L25-L106"
+      "specLocation": "_global/field_caps/FieldCapabilitiesRequest.ts#L25-L111"
     },
     {
       "body": {
@@ -18777,7 +18976,7 @@
           }
         }
       ],
-      "specLocation": "_global/get/GetRequest.ts#L31-L100"
+      "specLocation": "_global/get/GetRequest.ts#L31-L101"
     },
     {
       "body": {
@@ -18897,7 +19096,7 @@
           }
         }
       ],
-      "specLocation": "_global/get_script/GetScriptRequest.ts#L24-L42"
+      "specLocation": "_global/get_script/GetScriptRequest.ts#L24-L43"
     },
     {
       "body": {
@@ -19116,7 +19315,7 @@
           }
         }
       ],
-      "specLocation": "_global/get_source/SourceRequest.ts#L31-L88"
+      "specLocation": "_global/get_source/SourceRequest.ts#L31-L89"
     },
     {
       "body": {
@@ -19202,7 +19401,7 @@
           }
         ]
       },
-      "description": "Extracts and summarizes information about the documents and terms in an Elasticsearch data stream or index.",
+      "description": "Explore graph analytics.\nExtract and summarize information about the documents and terms in an Elasticsearch data stream or index.\nThe easiest way to understand the behavior of this API is to use the Graph UI to explore connections.\nAn initial request to the `_explore` API contains a seed query that identifies the documents of interest and specifies the fields that define the vertices and connections you want to include in the graph.\nSubsequent requests enable you to spider out from one more vertices of interest.\nYou can exclude vertices that have already been returned.",
       "inherits": {
         "type": {
           "name": "RequestBase",
@@ -19254,7 +19453,7 @@
           }
         }
       ],
-      "specLocation": "graph/explore/GraphExploreRequest.ts#L28-L72"
+      "specLocation": "graph/explore/GraphExploreRequest.ts#L28-L78"
     },
     {
       "body": {
@@ -19529,7 +19728,7 @@
           }
         }
       ],
-      "specLocation": "_global/index/IndexRequest.ts#L35-L118"
+      "specLocation": "_global/index/IndexRequest.ts#L35-L119"
     },
     {
       "body": {
@@ -19844,7 +20043,7 @@
           }
         ]
       },
-      "description": "Performs analysis on a text string and returns the resulting tokens.",
+      "description": "Get tokens from text analysis.\nThe analyze API performs [analysis](https://www.elastic.co/guide/en/elasticsearch/reference/current/analysis.html) on a text string and returns the resulting tokens.",
       "inherits": {
         "type": {
           "name": "RequestBase",
@@ -19873,7 +20072,7 @@
         }
       ],
       "query": [],
-      "specLocation": "indices/analyze/IndicesAnalyzeRequest.ts#L27-L92"
+      "specLocation": "indices/analyze/IndicesAnalyzeRequest.ts#L27-L93"
     },
     {
       "body": {
@@ -20147,7 +20346,7 @@
           }
         }
       ],
-      "specLocation": "indices/create_data_stream/IndicesCreateDataStreamRequest.ts#L24-L57"
+      "specLocation": "indices/create_data_stream/IndicesCreateDataStreamRequest.ts#L24-L58"
     },
     {
       "body": {
@@ -20215,7 +20414,7 @@
           }
         }
       ],
-      "specLocation": "indices/data_streams_stats/IndicesDataStreamsStatsRequest.ts#L23-L48"
+      "specLocation": "indices/data_streams_stats/IndicesDataStreamsStatsRequest.ts#L23-L49"
     },
     {
       "body": {
@@ -20983,6 +21182,10 @@
           }
         },
         {
+          "deprecation": {
+            "description": "",
+            "version": "8.12.0"
+          },
           "description": "If `true`, the request retrieves information from the local node only.",
           "name": "local",
           "required": false,
@@ -20996,7 +21199,7 @@
           }
         }
       ],
-      "specLocation": "indices/exists_alias/IndicesExistsAliasRequest.ts#L23-L68"
+      "specLocation": "indices/exists_alias/IndicesExistsAliasRequest.ts#L23-L69"
     },
     {
       "body": {
@@ -21016,7 +21219,7 @@
       "body": {
         "kind": "no_body"
       },
-      "description": "Returns information about whether a particular index template exists.",
+      "description": "Check index templates.\nCheck whether index templates exist.",
       "inherits": {
         "type": {
           "name": "RequestBase",
@@ -21057,7 +21260,7 @@
           }
         }
       ],
-      "specLocation": "indices/exists_index_template/IndicesExistsIndexTemplateRequest.ts#L24-L41"
+      "specLocation": "indices/exists_index_template/IndicesExistsIndexTemplateRequest.ts#L24-L43"
     },
     {
       "body": {
@@ -21077,7 +21280,7 @@
       "body": {
         "kind": "no_body"
       },
-      "description": "Get the status for a data stream lifecycle.\nRetrieves information about an index or data stream’s current data stream lifecycle status, such as time since index creation, time since rollover, the lifecycle configuration managing the index, or any errors encountered during lifecycle execution.",
+      "description": "Get the status for a data stream lifecycle.\nGet information about an index or data stream's current data stream lifecycle status, such as time since index creation, time since rollover, the lifecycle configuration managing the index, or any errors encountered during lifecycle execution.",
       "inherits": {
         "type": {
           "name": "RequestBase",
@@ -21428,6 +21631,10 @@
           }
         },
         {
+          "deprecation": {
+            "description": "",
+            "version": "8.12.0"
+          },
           "description": "If `true`, the request retrieves information from the local node only.",
           "name": "local",
           "required": false,
@@ -21441,7 +21648,7 @@
           }
         }
       ],
-      "specLocation": "indices/get_alias/IndicesGetAliasRequest.ts#L23-L71"
+      "specLocation": "indices/get_alias/IndicesGetAliasRequest.ts#L23-L72"
     },
     {
       "body": {
@@ -21575,7 +21782,7 @@
           }
         }
       ],
-      "specLocation": "indices/get_data_lifecycle/IndicesGetDataLifecycleRequest.ts#L24-L59"
+      "specLocation": "indices/get_data_lifecycle/IndicesGetDataLifecycleRequest.ts#L24-L60"
     },
     {
       "body": {
@@ -21700,7 +21907,7 @@
           }
         }
       ],
-      "specLocation": "indices/get_data_stream/IndicesGetDataStreamRequest.ts#L24-L65"
+      "specLocation": "indices/get_data_stream/IndicesGetDataStreamRequest.ts#L24-L66"
     },
     {
       "body": {
@@ -22215,7 +22422,7 @@
           }
         }
       ],
-      "specLocation": "indices/migrate_to_data_stream/IndicesMigrateToDataStreamRequest.ts#L24-L58"
+      "specLocation": "indices/migrate_to_data_stream/IndicesMigrateToDataStreamRequest.ts#L24-L59"
     },
     {
       "body": {
@@ -22273,7 +22480,7 @@
       },
       "path": [],
       "query": [],
-      "specLocation": "indices/modify_data_stream/IndicesModifyDataStreamRequest.ts#L23-L37"
+      "specLocation": "indices/modify_data_stream/IndicesModifyDataStreamRequest.ts#L23-L38"
     },
     {
       "body": {
@@ -23571,7 +23778,7 @@
       "body": {
         "kind": "no_body"
       },
-      "description": "Resolves the specified name(s) and/or index patterns for indices, aliases, and data streams.\nMultiple patterns and remote clusters are supported.",
+      "description": "Resolve indices.\nResolve the names and/or index patterns for indices, aliases, and data streams.\nMultiple patterns and remote clusters are supported.",
       "inherits": {
         "type": {
           "name": "RequestBase",
@@ -23638,7 +23845,7 @@
           }
         }
       ],
-      "specLocation": "indices/resolve_index/ResolveIndexRequest.ts#L23-L60"
+      "specLocation": "indices/resolve_index/ResolveIndexRequest.ts#L23-L61"
     },
     {
       "body": {
@@ -25152,7 +25359,7 @@
       "body": {
         "kind": "no_body"
       },
-      "description": "Deletes one or more existing ingest pipeline.",
+      "description": "Delete pipelines.\nDelete one or more ingest pipelines.",
       "inherits": {
         "type": {
           "name": "RequestBase",
@@ -25206,7 +25413,7 @@
           }
         }
       ],
-      "specLocation": "ingest/delete_pipeline/DeletePipelineRequest.ts#L24-L52"
+      "specLocation": "ingest/delete_pipeline/DeletePipelineRequest.ts#L24-L54"
     },
     {
       "body": {
@@ -25233,7 +25440,7 @@
       "body": {
         "kind": "no_body"
       },
-      "description": "Returns information about one or more ingest pipelines.\nThis API returns a local reference of the pipeline.",
+      "description": "Get pipelines.\nGet information about one or more ingest pipelines.\nThis API returns a local reference of the pipeline.",
       "inherits": {
         "type": {
           "name": "RequestBase",
@@ -25287,7 +25494,7 @@
           }
         }
       ],
-      "specLocation": "ingest/get_pipeline/GetPipelineRequest.ts#L24-L50"
+      "specLocation": "ingest/get_pipeline/GetPipelineRequest.ts#L24-L52"
     },
     {
       "body": {
@@ -25325,7 +25532,7 @@
       "body": {
         "kind": "no_body"
       },
-      "description": "Extracts structured fields out of a single text field within a document.\nYou choose which field to extract matched fields from, as well as the grok pattern you expect will match.\nA grok pattern is like a regular expression that supports aliased expressions that can be reused.",
+      "description": "Run a grok processor.\nExtract structured fields out of a single text field within a document.\nYou must choose which field to extract matched fields from, as well as the grok pattern you expect will match.\nA grok pattern is like a regular expression that supports aliased expressions that can be reused.",
       "inherits": {
         "type": {
           "name": "RequestBase",
@@ -25339,7 +25546,7 @@
       },
       "path": [],
       "query": [],
-      "specLocation": "ingest/processor_grok/GrokProcessorPatternsRequest.ts#L22-L31"
+      "specLocation": "ingest/processor_grok/GrokProcessorPatternsRequest.ts#L22-L33"
     },
     {
       "body": {
@@ -25464,7 +25671,7 @@
           }
         ]
       },
-      "description": "Creates or updates an ingest pipeline.\nChanges made using this API take effect immediately.",
+      "description": "Create or update a pipeline.\nChanges made using this API take effect immediately.",
       "inherits": {
         "type": {
           "name": "RequestBase",
@@ -25530,7 +25737,7 @@
           }
         }
       ],
-      "specLocation": "ingest/put_pipeline/PutPipelineRequest.ts#L25-L83"
+      "specLocation": "ingest/put_pipeline/PutPipelineRequest.ts#L25-L84"
     },
     {
       "body": {
@@ -25586,7 +25793,7 @@
           }
         ]
       },
-      "description": "Executes an ingest pipeline against a set of provided documents.",
+      "description": "Simulate a pipeline.\nRun an ingest pipeline against a set of provided documents.\nYou can either specify an existing pipeline to use with the provided documents or supply a pipeline definition in the body of the request.",
       "inherits": {
         "type": {
           "name": "RequestBase",
@@ -25626,7 +25833,7 @@
           }
         }
       ],
-      "specLocation": "ingest/simulate/SimulatePipelineRequest.ts#L25-L57"
+      "specLocation": "ingest/simulate/SimulatePipelineRequest.ts#L25-L59"
     },
     {
       "body": {
@@ -25936,7 +26143,7 @@
           }
         ]
       },
-      "description": "Allows to get multiple documents in one request.",
+      "description": "Get multiple documents.\n\nGet multiple JSON documents by ID from one or more indices.\nIf you specify an index in the request URI, you only need to specify the document IDs in the request body.\nTo ensure fast responses, this multi get (mget) API responds with partial results if one or more shards fail.",
       "inherits": {
         "type": {
           "name": "RequestBase",
@@ -26069,7 +26276,7 @@
           }
         }
       ],
-      "specLocation": "_global/mget/MultiGetRequest.ts#L25-L98"
+      "specLocation": "_global/mget/MultiGetRequest.ts#L25-L104"
     },
     {
       "body": {
@@ -26228,7 +26435,7 @@
           }
         }
       ],
-      "specLocation": "ml/close_job/MlCloseJobRequest.ts#L24-L77"
+      "specLocation": "ml/close_job/MlCloseJobRequest.ts#L24-L78"
     },
     {
       "body": {
@@ -26288,7 +26495,7 @@
         }
       ],
       "query": [],
-      "specLocation": "ml/delete_calendar/MlDeleteCalendarRequest.ts#L23-L37"
+      "specLocation": "ml/delete_calendar/MlDeleteCalendarRequest.ts#L23-L38"
     },
     {
       "body": {
@@ -26354,7 +26561,7 @@
         }
       ],
       "query": [],
-      "specLocation": "ml/delete_calendar_event/MlDeleteCalendarEventRequest.ts#L23-L42"
+      "specLocation": "ml/delete_calendar_event/MlDeleteCalendarEventRequest.ts#L23-L43"
     },
     {
       "body": {
@@ -26420,7 +26627,7 @@
         }
       ],
       "query": [],
-      "specLocation": "ml/delete_calendar_job/MlDeleteCalendarJobRequest.ts#L23-L43"
+      "specLocation": "ml/delete_calendar_job/MlDeleteCalendarJobRequest.ts#L23-L44"
     },
     {
       "body": {
@@ -26532,7 +26739,7 @@
           }
         }
       ],
-      "specLocation": "ml/delete_data_frame_analytics/MlDeleteDataFrameAnalyticsRequest.ts#L24-L51"
+      "specLocation": "ml/delete_data_frame_analytics/MlDeleteDataFrameAnalyticsRequest.ts#L24-L52"
     },
     {
       "body": {
@@ -26599,7 +26806,7 @@
           }
         }
       ],
-      "specLocation": "ml/delete_datafeed/MlDeleteDatafeedRequest.ts#L23-L48"
+      "specLocation": "ml/delete_datafeed/MlDeleteDatafeedRequest.ts#L23-L49"
     },
     {
       "body": {
@@ -26653,7 +26860,7 @@
         }
       ],
       "query": [],
-      "specLocation": "ml/delete_filter/MlDeleteFilterRequest.ts#L23-L39"
+      "specLocation": "ml/delete_filter/MlDeleteFilterRequest.ts#L23-L40"
     },
     {
       "body": {
@@ -26746,7 +26953,7 @@
           }
         }
       ],
-      "specLocation": "ml/delete_job/MlDeleteJobRequest.ts#L23-L63"
+      "specLocation": "ml/delete_job/MlDeleteJobRequest.ts#L23-L64"
     },
     {
       "body": {
@@ -26813,7 +27020,7 @@
           }
         }
       ],
-      "specLocation": "ml/delete_trained_model/MlDeleteTrainedModelRequest.ts#L23-L42"
+      "specLocation": "ml/delete_trained_model/MlDeleteTrainedModelRequest.ts#L23-L43"
     },
     {
       "body": {
@@ -26879,7 +27086,7 @@
         }
       ],
       "query": [],
-      "specLocation": "ml/delete_trained_model_alias/MlDeleteTrainedModelAliasRequest.ts#L23-L44"
+      "specLocation": "ml/delete_trained_model_alias/MlDeleteTrainedModelAliasRequest.ts#L23-L45"
     },
     {
       "body": {
@@ -26980,7 +27187,7 @@
       },
       "path": [],
       "query": [],
-      "specLocation": "ml/estimate_model_memory/MlEstimateModelMemoryRequest.ts#L26-L62"
+      "specLocation": "ml/estimate_model_memory/MlEstimateModelMemoryRequest.ts#L26-L63"
     },
     {
       "body": {
@@ -27067,7 +27274,7 @@
       },
       "path": [],
       "query": [],
-      "specLocation": "ml/evaluate_data_frame/MlEvaluateDataFrameRequest.ts#L25-L52"
+      "specLocation": "ml/evaluate_data_frame/MlEvaluateDataFrameRequest.ts#L25-L53"
     },
     {
       "body": {
@@ -27272,7 +27479,7 @@
           }
         }
       ],
-      "specLocation": "ml/flush_job/MlFlushJobRequest.ts#L24-L99"
+      "specLocation": "ml/flush_job/MlFlushJobRequest.ts#L24-L100"
     },
     {
       "body": {
@@ -27407,7 +27614,7 @@
           }
         }
       ],
-      "specLocation": "ml/get_calendar_events/MlGetCalendarEventsRequest.ts#L25-L53"
+      "specLocation": "ml/get_calendar_events/MlGetCalendarEventsRequest.ts#L25-L54"
     },
     {
       "body": {
@@ -27522,7 +27729,7 @@
           }
         }
       ],
-      "specLocation": "ml/get_calendars/MlGetCalendarsRequest.ts#L25-L51"
+      "specLocation": "ml/get_calendars/MlGetCalendarsRequest.ts#L25-L52"
     },
     {
       "body": {
@@ -27649,7 +27856,7 @@
           }
         }
       ],
-      "specLocation": "ml/get_data_frame_analytics/MlGetDataFrameAnalyticsRequest.ts#L24-L77"
+      "specLocation": "ml/get_data_frame_analytics/MlGetDataFrameAnalyticsRequest.ts#L24-L78"
     },
     {
       "body": {
@@ -27697,7 +27904,7 @@
       "body": {
         "kind": "no_body"
       },
-      "description": "Get data frame analytics jobs usage info.",
+      "description": "Get data frame analytics job stats.",
       "inherits": {
         "type": {
           "name": "RequestBase",
@@ -27777,7 +27984,7 @@
           }
         }
       ],
-      "specLocation": "ml/get_data_frame_analytics_stats/MlGetDataFrameAnalyticsStatsRequest.ts#L24-L72"
+      "specLocation": "ml/get_data_frame_analytics_stats/MlGetDataFrameAnalyticsStatsRequest.ts#L24-L73"
     },
     {
       "body": {
@@ -27825,7 +28032,7 @@
       "body": {
         "kind": "no_body"
       },
-      "description": "Get datafeeds usage info.\nYou can get statistics for multiple datafeeds in a single API request by\nusing a comma-separated list of datafeeds or a wildcard expression. You can\nget statistics for all datafeeds by using `_all`, by specifying `*` as the\n`<feed_id>`, or by omitting the `<feed_id>`. If the datafeed is stopped, the\nonly information you receive is the `datafeed_id` and the `state`.\nThis API returns a maximum of 10,000 datafeeds.",
+      "description": "Get datafeeds stats.\nYou can get statistics for multiple datafeeds in a single API request by\nusing a comma-separated list of datafeeds or a wildcard expression. You can\nget statistics for all datafeeds by using `_all`, by specifying `*` as the\n`<feed_id>`, or by omitting the `<feed_id>`. If the datafeed is stopped, the\nonly information you receive is the `datafeed_id` and the `state`.\nThis API returns a maximum of 10,000 datafeeds.",
       "inherits": {
         "type": {
           "name": "RequestBase",
@@ -27865,7 +28072,7 @@
           }
         }
       ],
-      "specLocation": "ml/get_datafeed_stats/MlGetDatafeedStatsRequest.ts#L23-L60"
+      "specLocation": "ml/get_datafeed_stats/MlGetDatafeedStatsRequest.ts#L23-L61"
     },
     {
       "body": {
@@ -27965,7 +28172,7 @@
           }
         }
       ],
-      "specLocation": "ml/get_datafeeds/MlGetDatafeedsRequest.ts#L23-L66"
+      "specLocation": "ml/get_datafeeds/MlGetDatafeedsRequest.ts#L23-L67"
     },
     {
       "body": {
@@ -28066,7 +28273,7 @@
           }
         }
       ],
-      "specLocation": "ml/get_filters/MlGetFiltersRequest.ts#L24-L51"
+      "specLocation": "ml/get_filters/MlGetFiltersRequest.ts#L24-L52"
     },
     {
       "body": {
@@ -28113,7 +28320,7 @@
       "body": {
         "kind": "no_body"
       },
-      "description": "Get anomaly detection jobs usage info.",
+      "description": "Get anomaly detection job stats.",
       "inherits": {
         "type": {
           "name": "RequestBase",
@@ -28154,7 +28361,7 @@
           }
         }
       ],
-      "specLocation": "ml/get_job_stats/MlGetJobStatsRequest.ts#L23-L56"
+      "specLocation": "ml/get_job_stats/MlGetJobStatsRequest.ts#L23-L57"
     },
     {
       "body": {
@@ -28255,7 +28462,7 @@
           }
         }
       ],
-      "specLocation": "ml/get_jobs/MlGetJobsRequest.ts#L23-L66"
+      "specLocation": "ml/get_jobs/MlGetJobsRequest.ts#L23-L67"
     },
     {
       "body": {
@@ -28530,7 +28737,7 @@
           }
         }
       ],
-      "specLocation": "ml/get_overall_buckets/MlGetOverallBucketsRequest.ts#L25-L145"
+      "specLocation": "ml/get_overall_buckets/MlGetOverallBucketsRequest.ts#L25-L146"
     },
     {
       "body": {
@@ -28669,6 +28876,22 @@
             }
           }
         },
+        {
+          "deprecation": {
+            "description": "",
+            "version": "7.10.0"
+          },
+          "description": "parameter is deprecated! Use [include=definition] instead",
+          "name": "include_model_definition",
+          "required": false,
+          "type": {
+            "kind": "instance_of",
+            "type": {
+              "name": "boolean",
+              "namespace": "_builtins"
+            }
+          }
+        },
         {
           "description": "Specifies the maximum number of models to obtain.",
           "name": "size",
@@ -28710,7 +28933,7 @@
           }
         }
       ],
-      "specLocation": "ml/get_trained_models/MlGetTrainedModelRequest.ts#L25-L91"
+      "specLocation": "ml/get_trained_models/MlGetTrainedModelRequest.ts#L25-L99"
     },
     {
       "body": {
@@ -28825,7 +29048,7 @@
           }
         }
       ],
-      "specLocation": "ml/get_trained_models_stats/MlGetTrainedModelStatsRequest.ts#L24-L65"
+      "specLocation": "ml/get_trained_models_stats/MlGetTrainedModelStatsRequest.ts#L24-L66"
     },
     {
       "body": {
@@ -28951,7 +29174,7 @@
           }
         }
       ],
-      "specLocation": "ml/infer_trained_model/MlInferTrainedModelRequest.ts#L27-L59"
+      "specLocation": "ml/infer_trained_model/MlInferTrainedModelRequest.ts#L27-L60"
     },
     {
       "body": {
@@ -29043,7 +29266,7 @@
           }
         }
       ],
-      "specLocation": "ml/open_job/MlOpenJobRequest.ts#L24-L58"
+      "specLocation": "ml/open_job/MlOpenJobRequest.ts#L24-L59"
     },
     {
       "body": {
@@ -29132,7 +29355,7 @@
         }
       ],
       "query": [],
-      "specLocation": "ml/post_calendar_events/MlPostCalendarEventsRequest.ts#L24-L40"
+      "specLocation": "ml/post_calendar_events/MlPostCalendarEventsRequest.ts#L24-L41"
     },
     {
       "body": {
@@ -29211,7 +29434,7 @@
         }
       ],
       "query": [],
-      "specLocation": "ml/preview_data_frame_analytics/MlPreviewDataFrameAnalyticsRequest.ts#L24-L48"
+      "specLocation": "ml/preview_data_frame_analytics/MlPreviewDataFrameAnalyticsRequest.ts#L24-L49"
     },
     {
       "body": {
@@ -29337,7 +29560,7 @@
           }
         }
       ],
-      "specLocation": "ml/preview_datafeed/MlPreviewDatafeedRequest.ts#L26-L69"
+      "specLocation": "ml/preview_datafeed/MlPreviewDatafeedRequest.ts#L26-L70"
     },
     {
       "body": {
@@ -29429,7 +29652,7 @@
         }
       ],
       "query": [],
-      "specLocation": "ml/put_calendar/MlPutCalendarRequest.ts#L23-L43"
+      "specLocation": "ml/put_calendar/MlPutCalendarRequest.ts#L23-L44"
     },
     {
       "body": {
@@ -29526,7 +29749,7 @@
         }
       ],
       "query": [],
-      "specLocation": "ml/put_calendar_job/MlPutCalendarJobRequest.ts#L23-L37"
+      "specLocation": "ml/put_calendar_job/MlPutCalendarJobRequest.ts#L23-L38"
     },
     {
       "body": {
@@ -29660,6 +29883,17 @@
               }
             }
           },
+          {
+            "name": "_meta",
+            "required": false,
+            "type": {
+              "kind": "instance_of",
+              "type": {
+                "name": "Metadata",
+                "namespace": "_types"
+              }
+            }
+          },
           {
             "description": "The approximate maximum amount of memory resources that are permitted for\nanalytical processing. If your `elasticsearch.yml` file contains an\n`xpack.ml.max_model_memory_limit` setting, an error occurs when you try\nto create data frame analytics jobs that have `model_memory_limit` values\ngreater than that setting.",
             "name": "model_memory_limit",
@@ -29748,7 +29982,7 @@
         }
       ],
       "query": [],
-      "specLocation": "ml/put_data_frame_analytics/MlPutDataFrameAnalyticsRequest.ts#L30-L141"
+      "specLocation": "ml/put_data_frame_analytics/MlPutDataFrameAnalyticsRequest.ts#L30-L144"
     },
     {
       "body": {
@@ -29862,6 +30096,17 @@
               }
             }
           },
+          {
+            "name": "_meta",
+            "required": false,
+            "type": {
+              "kind": "instance_of",
+              "type": {
+                "name": "Metadata",
+                "namespace": "_types"
+              }
+            }
+          },
           {
             "name": "model_memory_limit",
             "required": true,
@@ -29902,7 +30147,7 @@
         "name": "Response",
         "namespace": "ml.put_data_frame_analytics"
       },
-      "specLocation": "ml/put_data_frame_analytics/MlPutDataFrameAnalyticsResponse.ts#L31-L46"
+      "specLocation": "ml/put_data_frame_analytics/MlPutDataFrameAnalyticsResponse.ts#L31-L47"
     },
     {
       "attachedBehaviors": [
@@ -29912,6 +30157,9 @@
         "kind": "properties",
         "properties": [
           {
+            "aliases": [
+              "aggs"
+            ],
             "description": "If set, the datafeed performs aggregation searches.\nSupport for aggregations is limited and should be used only with low cardinality data.",
             "name": "aggregations",
             "required": false,
@@ -29974,7 +30222,7 @@
             "aliases": [
               "indexes"
             ],
-            "description": "An array of index names. Wildcards are supported. If any of the indices are in remote clusters, the machine\nlearning nodes must have the `remote_cluster_client` role.",
+            "description": "An array of index names. Wildcards are supported. If any of the indices are in remote clusters, the master\nnodes and the machine learning nodes must have the `remote_cluster_client` role.",
             "name": "indices",
             "required": false,
             "type": {
@@ -30197,7 +30445,7 @@
           }
         }
       ],
-      "specLocation": "ml/put_datafeed/MlPutDatafeedRequest.ts#L37-L172"
+      "specLocation": "ml/put_datafeed/MlPutDatafeedRequest.ts#L37-L175"
     },
     {
       "body": {
@@ -30465,7 +30713,7 @@
         }
       ],
       "query": [],
-      "specLocation": "ml/put_filter/MlPutFilterRequest.ts#L23-L50"
+      "specLocation": "ml/put_filter/MlPutFilterRequest.ts#L23-L51"
     },
     {
       "body": {
@@ -30633,6 +30881,18 @@
               }
             }
           },
+          {
+            "description": "The identifier for the anomaly detection job. This identifier can contain lowercase alphanumeric characters (a-z and 0-9), hyphens, and underscores. It must start and end with alphanumeric characters.",
+            "name": "job_id",
+            "required": false,
+            "type": {
+              "kind": "instance_of",
+              "type": {
+                "name": "Id",
+                "namespace": "_types"
+              }
+            }
+          },
           {
             "description": "A list of job groups. A job can belong to no groups or many.",
             "name": "groups",
@@ -30738,8 +30998,65 @@
           }
         }
       ],
-      "query": [],
-      "specLocation": "ml/put_job/MlPutJobRequest.ts#L30-L112"
+      "query": [
+        {
+          "description": "If `true`, wildcard indices expressions that resolve into no concrete indices are ignored. This includes the\n`_all` string or when no indices are specified.",
+          "name": "allow_no_indices",
+          "required": false,
+          "serverDefault": true,
+          "type": {
+            "kind": "instance_of",
+            "type": {
+              "name": "boolean",
+              "namespace": "_builtins"
+            }
+          }
+        },
+        {
+          "description": "Type of index that wildcard patterns can match. If the request can target data streams, this argument determines\nwhether wildcard expressions match hidden data streams. Supports comma-separated values. Valid values are:\n\n* `all`: Match any data stream or index, including hidden ones.\n* `closed`: Match closed, non-hidden indices. Also matches any non-hidden data stream. Data streams cannot be closed.\n* `hidden`: Match hidden data streams and hidden indices. Must be combined with `open`, `closed`, or both.\n* `none`: Wildcard patterns are not accepted.\n* `open`: Match open, non-hidden indices. Also matches any non-hidden data stream.",
+          "name": "expand_wildcards",
+          "required": false,
+          "serverDefault": "open",
+          "type": {
+            "kind": "instance_of",
+            "type": {
+              "name": "ExpandWildcards",
+              "namespace": "_types"
+            }
+          }
+        },
+        {
+          "deprecation": {
+            "description": "",
+            "version": "7.16.0"
+          },
+          "description": "If `true`, concrete, expanded or aliased indices are ignored when frozen.",
+          "name": "ignore_throttled",
+          "required": false,
+          "serverDefault": true,
+          "type": {
+            "kind": "instance_of",
+            "type": {
+              "name": "boolean",
+              "namespace": "_builtins"
+            }
+          }
+        },
+        {
+          "description": "If `true`, unavailable indices (missing or closed) are ignored.",
+          "name": "ignore_unavailable",
+          "required": false,
+          "serverDefault": false,
+          "type": {
+            "kind": "instance_of",
+            "type": {
+              "name": "boolean",
+              "namespace": "_builtins"
+            }
+          }
+        }
+      ],
+      "specLocation": "ml/put_job/MlPutJobRequest.ts#L30-L148"
     },
     {
       "body": {
@@ -31188,7 +31505,7 @@
           }
         }
       ],
-      "specLocation": "ml/put_trained_model/MlPutTrainedModelRequest.ts#L31-L127"
+      "specLocation": "ml/put_trained_model/MlPutTrainedModelRequest.ts#L31-L128"
     },
     {
       "body": {
@@ -31268,7 +31585,7 @@
           }
         }
       ],
-      "specLocation": "ml/put_trained_model_alias/MlPutTrainedModelAliasRequest.ts#L23-L66"
+      "specLocation": "ml/put_trained_model_alias/MlPutTrainedModelAliasRequest.ts#L23-L67"
     },
     {
       "body": {
@@ -31372,7 +31689,7 @@
         }
       ],
       "query": [],
-      "specLocation": "ml/put_trained_model_definition_part/MlPutTrainedModelDefinitionPartRequest.ts#L24-L57"
+      "specLocation": "ml/put_trained_model_definition_part/MlPutTrainedModelDefinitionPartRequest.ts#L24-L58"
     },
     {
       "body": {
@@ -31485,7 +31802,7 @@
         }
       ],
       "query": [],
-      "specLocation": "ml/put_trained_model_vocabulary/MlPutTrainedModelVocabularyRequest.ts#L24-L60"
+      "specLocation": "ml/put_trained_model_vocabulary/MlPutTrainedModelVocabularyRequest.ts#L24-L61"
     },
     {
       "body": {
@@ -31566,7 +31883,7 @@
           }
         }
       ],
-      "specLocation": "ml/reset_job/MlResetJobRequest.ts#L23-L57"
+      "specLocation": "ml/reset_job/MlResetJobRequest.ts#L23-L58"
     },
     {
       "body": {
@@ -31634,7 +31951,7 @@
           }
         }
       ],
-      "specLocation": "ml/start_data_frame_analytics/MlStartDataFrameAnalyticsRequest.ts#L24-L60"
+      "specLocation": "ml/start_data_frame_analytics/MlStartDataFrameAnalyticsRequest.ts#L24-L61"
     },
     {
       "body": {
@@ -31783,7 +32100,7 @@
           }
         }
       ],
-      "specLocation": "ml/start_datafeed/MlStartDatafeedRequest.ts#L24-L91"
+      "specLocation": "ml/start_datafeed/MlStartDatafeedRequest.ts#L24-L92"
     },
     {
       "body": {
@@ -31946,7 +32263,7 @@
           }
         }
       ],
-      "specLocation": "ml/start_trained_model_deployment/MlStartTrainedModelDeploymentRequest.ts#L29-L93"
+      "specLocation": "ml/start_trained_model_deployment/MlStartTrainedModelDeploymentRequest.ts#L29-L94"
     },
     {
       "body": {
@@ -32046,7 +32363,7 @@
           }
         }
       ],
-      "specLocation": "ml/stop_data_frame_analytics/MlStopDataFrameAnalyticsRequest.ts#L24-L70"
+      "specLocation": "ml/stop_data_frame_analytics/MlStopDataFrameAnalyticsRequest.ts#L24-L71"
     },
     {
       "body": {
@@ -32187,7 +32504,7 @@
           }
         }
       ],
-      "specLocation": "ml/stop_datafeed/MlStopDatafeedRequest.ts#L24-L78"
+      "specLocation": "ml/stop_datafeed/MlStopDatafeedRequest.ts#L24-L79"
     },
     {
       "body": {
@@ -32274,7 +32591,7 @@
           }
         }
       ],
-      "specLocation": "ml/stop_trained_model_deployment/MlStopTrainedModelDeploymentRequest.ts#L23-L53"
+      "specLocation": "ml/stop_trained_model_deployment/MlStopTrainedModelDeploymentRequest.ts#L23-L54"
     },
     {
       "body": {
@@ -32391,7 +32708,7 @@
         }
       ],
       "query": [],
-      "specLocation": "ml/update_data_frame_analytics/MlUpdateDataFrameAnalyticsRequest.ts#L24-L72"
+      "specLocation": "ml/update_data_frame_analytics/MlUpdateDataFrameAnalyticsRequest.ts#L24-L73"
     },
     {
       "body": {
@@ -32816,7 +33133,7 @@
           }
         }
       ],
-      "specLocation": "ml/update_datafeed/MlUpdateDatafeedRequest.ts#L31-L162"
+      "specLocation": "ml/update_datafeed/MlUpdateDatafeedRequest.ts#L31-L163"
     },
     {
       "body": {
@@ -33099,7 +33416,7 @@
         }
       ],
       "query": [],
-      "specLocation": "ml/update_filter/MlUpdateFilterRequest.ts#L23-L52"
+      "specLocation": "ml/update_filter/MlUpdateFilterRequest.ts#L23-L53"
     },
     {
       "body": {
@@ -33341,7 +33658,7 @@
               "value": {
                 "kind": "instance_of",
                 "type": {
-                  "name": "Detector",
+                  "name": "DetectorUpdate",
                   "namespace": "ml._types"
                 }
               }
@@ -33388,7 +33705,7 @@
         }
       ],
       "query": [],
-      "specLocation": "ml/update_job/MlUpdateJobRequest.ts#L33-L139"
+      "specLocation": "ml/update_job/MlUpdateJobRequest.ts#L33-L140"
     },
     {
       "body": {
@@ -33729,7 +34046,7 @@
           }
         }
       ],
-      "specLocation": "ml/update_trained_model_deployment/MlUpdateTrainedModelDeploymentRequest.ts#L24-L62"
+      "specLocation": "ml/update_trained_model_deployment/MlUpdateTrainedModelDeploymentRequest.ts#L24-L63"
     },
     {
       "body": {
@@ -33773,7 +34090,7 @@
           }
         }
       },
-      "description": "Allows to execute several search operations in one request.",
+      "description": "Run multiple searches.\n\nThe format of the request is similar to the bulk API format and makes use of the newline delimited JSON (NDJSON) format.\nThe structure is as follows:\n\n```\nheader\\n\nbody\\n\nheader\\n\nbody\\n\n```\n\nThis structure is specifically optimized to reduce parsing if a specific search ends up redirected to another node.\n\nIMPORTANT: The final line of data must end with a newline character `\\n`.\nEach newline character may be preceded by a carriage return `\\r`.\nWhen sending requests to this endpoint the `Content-Type` header should be set to `application/x-ndjson`.",
       "inherits": {
         "type": {
           "name": "RequestBase",
@@ -33965,7 +34282,7 @@
           }
         }
       ],
-      "specLocation": "_global/msearch/MultiSearchRequest.ts#L25-L106"
+      "specLocation": "_global/msearch/MultiSearchRequest.ts#L25-L124"
     },
     {
       "body": {
@@ -34018,7 +34335,7 @@
           }
         }
       },
-      "description": "Runs multiple templated searches with a single request.",
+      "description": "Run multiple templated searches.",
       "inherits": {
         "type": {
           "name": "RequestBase",
@@ -34109,7 +34426,7 @@
           }
         }
       ],
-      "specLocation": "_global/msearch_template/MultiSearchTemplateRequest.ts#L25-L70"
+      "specLocation": "_global/msearch_template/MultiSearchTemplateRequest.ts#L25-L72"
     },
     {
       "body": {
@@ -34183,7 +34500,7 @@
           }
         ]
       },
-      "description": "Returns multiple termvectors in one request.",
+      "description": "Get multiple term vectors.\n\nYou can specify existing documents by index and ID or provide artificial documents in the body of the request.\nYou can specify the index in the request body or request URI.\nThe response contains a `docs` array with all the fetched termvectors.\nEach element has the structure provided by the termvectors API.",
       "inherits": {
         "type": {
           "name": "RequestBase",
@@ -34366,7 +34683,7 @@
           }
         }
       ],
-      "specLocation": "_global/mtermvectors/MultiTermVectorsRequest.ts#L31-L109"
+      "specLocation": "_global/mtermvectors/MultiTermVectorsRequest.ts#L31-L116"
     },
     {
       "body": {
@@ -34416,7 +34733,7 @@
           }
         ]
       },
-      "description": "A search request by default executes against the most recent visible data of the target indices,\nwhich is called point in time. Elasticsearch pit (point in time) is a lightweight view into the\nstate of the data as it existed when initiated. In some cases, it’s preferred to perform multiple\nsearch requests using the same point in time. For example, if refreshes happen between\n`search_after` requests, then the results of those requests might not be consistent as changes happening\nbetween searches are only visible to the more recent point in time.",
+      "description": "Open a point in time.\n\nA search request by default runs against the most recent visible data of the target indices,\nwhich is called point in time. Elasticsearch pit (point in time) is a lightweight view into the\nstate of the data as it existed when initiated. In some cases, it’s preferred to perform multiple\nsearch requests using the same point in time. For example, if refreshes happen between\n`search_after` requests, then the results of those requests might not be consistent as changes happening\nbetween searches are only visible to the more recent point in time.\n\nA point in time must be opened explicitly before being used in search requests.\nThe `keep_alive` parameter tells Elasticsearch how long it should persist.",
       "inherits": {
         "type": {
           "name": "RequestBase",
@@ -34504,9 +34821,22 @@
               "namespace": "_types"
             }
           }
+        },
+        {
+          "description": "If `false`, creating a point in time request when a shard is missing or unavailable will throw an exception.\nIf `true`, the point in time will contain all the shards that are available at the time of the request.",
+          "name": "allow_partial_search_results",
+          "required": false,
+          "serverDefault": false,
+          "type": {
+            "kind": "instance_of",
+            "type": {
+              "name": "boolean",
+              "namespace": "_builtins"
+            }
+          }
         }
       ],
-      "specLocation": "_global/open_point_in_time/OpenPointInTimeRequest.ts#L25-L75"
+      "specLocation": "_global/open_point_in_time/OpenPointInTimeRequest.ts#L25-L87"
     },
     {
       "body": {
@@ -34551,7 +34881,7 @@
       "body": {
         "kind": "no_body"
       },
-      "description": "Ping the cluster.\nReturns whether the cluster is running.",
+      "description": "Ping the cluster.\nGet information about whether the cluster is running.",
       "inherits": {
         "type": {
           "name": "RequestBase",
@@ -34565,7 +34895,7 @@
       },
       "path": [],
       "query": [],
-      "specLocation": "_global/ping/PingRequest.ts#L22-L29"
+      "specLocation": "_global/ping/PingRequest.ts#L22-L30"
     },
     {
       "body": {
@@ -34665,7 +34995,7 @@
           }
         }
       ],
-      "specLocation": "_global/put_script/PutScriptRequest.ts#L25-L65"
+      "specLocation": "_global/put_script/PutScriptRequest.ts#L25-L66"
     },
     {
       "body": {
@@ -34692,7 +35022,7 @@
       "body": {
         "kind": "no_body"
       },
-      "description": "Deletes a query rule within a query ruleset.",
+      "description": "Delete a query rule.\nDelete a query rule within a query ruleset.",
       "inherits": {
         "type": {
           "name": "RequestBase",
@@ -34731,7 +35061,7 @@
         }
       ],
       "query": [],
-      "specLocation": "query_rules/delete_rule/QueryRuleDeleteRequest.ts#L22-L40"
+      "specLocation": "query_rules/delete_rule/QueryRuleDeleteRequest.ts#L22-L41"
     },
     {
       "body": {
@@ -34758,7 +35088,7 @@
       "body": {
         "kind": "no_body"
       },
-      "description": "Deletes a query ruleset.",
+      "description": "Delete a query ruleset.",
       "inherits": {
         "type": {
           "name": "RequestBase",
@@ -34812,7 +35142,7 @@
       "body": {
         "kind": "no_body"
       },
-      "description": "Returns the details about a query rule within a query ruleset",
+      "description": "Get a query rule.\nGet details about a query rule within a query ruleset.",
       "inherits": {
         "type": {
           "name": "RequestBase",
@@ -34851,7 +35181,7 @@
         }
       ],
       "query": [],
-      "specLocation": "query_rules/get_rule/QueryRuleGetRequest.ts#L22-L40"
+      "specLocation": "query_rules/get_rule/QueryRuleGetRequest.ts#L22-L42"
     },
     {
       "body": {
@@ -34878,7 +35208,7 @@
       "body": {
         "kind": "no_body"
       },
-      "description": "Returns the details about a query ruleset",
+      "description": "Get a query ruleset.\nGet details about a query ruleset.",
       "inherits": {
         "type": {
           "name": "RequestBase",
@@ -34905,7 +35235,7 @@
         }
       ],
       "query": [],
-      "specLocation": "query_rules/get_ruleset/QueryRulesetGetRequest.ts#L22-L35"
+      "specLocation": "query_rules/get_ruleset/QueryRulesetGetRequest.ts#L22-L36"
     },
     {
       "body": {
@@ -34932,7 +35262,7 @@
       "body": {
         "kind": "no_body"
       },
-      "description": "Returns summarized information about existing query rulesets.",
+      "description": "Get all query rulesets.\nGet summarized information about the query rulesets.",
       "inherits": {
         "type": {
           "name": "RequestBase",
@@ -34971,7 +35301,7 @@
           }
         }
       ],
-      "specLocation": "query_rules/list_rulesets/QueryRulesetListRequest.ts#L22-L39"
+      "specLocation": "query_rules/list_rulesets/QueryRulesetListRequest.ts#L22-L40"
     },
     {
       "body": {
@@ -35079,7 +35409,7 @@
           }
         ]
       },
-      "description": "Creates or updates a query rule within a query ruleset.",
+      "description": "Create or update a query rule.\nCreate or update a query rule within a query ruleset.",
       "inherits": {
         "type": {
           "name": "RequestBase",
@@ -35118,7 +35448,7 @@
         }
       ],
       "query": [],
-      "specLocation": "query_rules/put_rule/QueryRulePutRequest.ts#L28-L56"
+      "specLocation": "query_rules/put_rule/QueryRulePutRequest.ts#L28-L57"
     },
     {
       "body": {
@@ -35179,7 +35509,7 @@
           }
         ]
       },
-      "description": "Creates or updates a query ruleset.",
+      "description": "Create or update a query ruleset.",
       "inherits": {
         "type": {
           "name": "RequestBase",
@@ -35206,7 +35536,7 @@
         }
       ],
       "query": [],
-      "specLocation": "query_rules/put_ruleset/QueryRulesetPutRequest.ts#L23-L43"
+      "specLocation": "query_rules/put_ruleset/QueryRulesetPutRequest.ts#L23-L44"
     },
     {
       "body": {
@@ -35232,6 +35562,100 @@
       },
       "specLocation": "query_rules/put_ruleset/QueryRulesetPutResponse.ts#L22-L26"
     },
+    {
+      "attachedBehaviors": [
+        "CommonQueryParameters"
+      ],
+      "body": {
+        "kind": "properties",
+        "properties": [
+          {
+            "name": "match_criteria",
+            "required": true,
+            "type": {
+              "key": {
+                "kind": "instance_of",
+                "type": {
+                  "name": "string",
+                  "namespace": "_builtins"
+                }
+              },
+              "kind": "dictionary_of",
+              "singleKey": false,
+              "value": {
+                "kind": "user_defined_value"
+              }
+            }
+          }
+        ]
+      },
+      "description": "Test a query ruleset.\nEvaluate match criteria against a query ruleset to identify the rules that would match that criteria.",
+      "inherits": {
+        "type": {
+          "name": "RequestBase",
+          "namespace": "_types"
+        }
+      },
+      "kind": "request",
+      "name": {
+        "name": "Request",
+        "namespace": "query_rules.test"
+      },
+      "path": [
+        {
+          "description": "The unique identifier of the query ruleset to be created or updated",
+          "name": "ruleset_id",
+          "required": true,
+          "type": {
+            "kind": "instance_of",
+            "type": {
+              "name": "Id",
+              "namespace": "_types"
+            }
+          }
+        }
+      ],
+      "query": [],
+      "specLocation": "query_rules/test/QueryRulesetTestRequest.ts#L24-L45"
+    },
+    {
+      "body": {
+        "kind": "properties",
+        "properties": [
+          {
+            "name": "total_matched_rules",
+            "required": true,
+            "type": {
+              "kind": "instance_of",
+              "type": {
+                "name": "integer",
+                "namespace": "_types"
+              }
+            }
+          },
+          {
+            "name": "matched_rules",
+            "required": true,
+            "type": {
+              "kind": "array_of",
+              "value": {
+                "kind": "instance_of",
+                "type": {
+                  "name": "QueryRulesetMatchedRule",
+                  "namespace": "query_rules.test"
+                }
+              }
+            }
+          }
+        ]
+      },
+      "kind": "response",
+      "name": {
+        "name": "Response",
+        "namespace": "query_rules.test"
+      },
+      "specLocation": "query_rules/test/QueryRulesetTestResponse.ts#L23-L28"
+    },
     {
       "attachedBehaviors": [
         "CommonQueryParameters"
@@ -35268,7 +35692,7 @@
           }
         ]
       },
-      "description": "Enables you to evaluate the quality of ranked search results over a set of typical search queries.",
+      "description": "Evaluate ranked search results.\n\nEvaluate the quality of ranked search results over a set of typical search queries.",
       "inherits": {
         "type": {
           "name": "RequestBase",
@@ -35346,7 +35770,7 @@
           }
         }
       ],
-      "specLocation": "_global/rank_eval/RankEvalRequest.ts#L24-L61"
+      "specLocation": "_global/rank_eval/RankEvalRequest.ts#L24-L64"
     },
     {
       "body": {
@@ -35613,7 +36037,7 @@
           }
         }
       ],
-      "specLocation": "_global/reindex/ReindexRequest.ts#L27-L103"
+      "specLocation": "_global/reindex/ReindexRequest.ts#L27-L104"
     },
     {
       "body": {
@@ -35885,7 +36309,7 @@
           }
         ]
       },
-      "description": "Renders a search template as a search request body.",
+      "description": "Render a search template.\n\nRender a search template as a search request body.",
       "inherits": {
         "type": {
           "name": "RequestBase",
@@ -35912,7 +36336,7 @@
         }
       ],
       "query": [],
-      "specLocation": "_global/render_search_template/RenderSearchTemplateRequest.ts#L25-L55"
+      "specLocation": "_global/render_search_template/RenderSearchTemplateRequest.ts#L25-L58"
     },
     {
       "body": {
@@ -36005,7 +36429,7 @@
       },
       "path": [],
       "query": [],
-      "specLocation": "_global/scripts_painless_execute/ExecutePainlessScriptRequest.ts#L24-L47"
+      "specLocation": "_global/scripts_painless_execute/ExecutePainlessScriptRequest.ts#L24-L48"
     },
     {
       "body": {
@@ -36073,7 +36497,7 @@
           }
         ]
       },
-      "description": "Allows to retrieve a large numbers of results from a single search request.",
+      "description": "Run a scrolling search.\n\nIMPORTANT: The scroll API is no longer recommend for deep pagination. If you need to preserve the index state while paging through more than 10,000 hits, use the `search_after` parameter with a point in time (PIT).\n\nThe scroll API gets large sets of results from a single scrolling search request.\nTo get the necessary scroll ID, submit a search API request that includes an argument for the `scroll` query parameter.\nThe `scroll` parameter indicates how long Elasticsearch should retain the search context for the request.\nThe search response returns a scroll ID in the `_scroll_id` response body parameter.\nYou can then use the scroll ID with the scroll API to retrieve the next batch of results for the request.\nIf the Elasticsearch security features are enabled, the access to the results of a specific scroll ID is restricted to the user or API key that submitted the search.\n\nYou can also use the scroll API to specify a new scroll parameter that extends or shortens the retention period for the search context.\n\nIMPORTANT: Results from a scrolling search reflect the state of the index at the time of the initial search request. Subsequent indexing or document changes only affect later search and scroll requests.",
       "inherits": {
         "type": {
           "name": "RequestBase",
@@ -36149,7 +36573,7 @@
           }
         }
       ],
-      "specLocation": "_global/scroll/ScrollRequest.ts#L24-L59"
+      "specLocation": "_global/scroll/ScrollRequest.ts#L24-L75"
     },
     {
       "body": {
@@ -36451,9 +36875,12 @@
           },
           {
             "availability": {
-              "serverless": {},
+              "serverless": {
+                "stability": "stable"
+              },
               "stack": {
-                "since": "8.14.0"
+                "since": "8.14.0",
+                "stability": "stable"
               }
             },
             "description": "A retriever is a specification to describe top documents returned from a search. A retriever replaces other elements of the search API that also return top documents such as query and knn.",
@@ -36696,7 +37123,7 @@
           }
         ]
       },
-      "description": "Returns search hits that match the query defined in the request.\nYou can provide search queries using the `q` query string parameter or the request body.\nIf both are specified, only the query parameter is used.",
+      "description": "Run a search.\n\nGet search hits that match the query defined in the request.\nYou can provide search queries using the `q` query string parameter or the request body.\nIf both are specified, only the query parameter is used.",
       "inherits": {
         "type": {
           "name": "RequestBase",
@@ -37298,7 +37725,7 @@
           }
         }
       ],
-      "specLocation": "_global/search/SearchRequest.ts#L54-L529"
+      "specLocation": "_global/search/SearchRequest.ts#L54-L531"
     },
     {
       "body": {
@@ -37340,7 +37767,7 @@
       "body": {
         "kind": "no_body"
       },
-      "description": "Deletes a search application.",
+      "description": "Delete a search application.\nRemove a search application and its associated alias. Indices attached to the search application are not removed.",
       "inherits": {
         "type": {
           "name": "RequestBase",
@@ -37367,7 +37794,7 @@
         }
       ],
       "query": [],
-      "specLocation": "search_application/delete/SearchApplicationsDeleteRequest.ts#L22-L35"
+      "specLocation": "search_application/delete/SearchApplicationsDeleteRequest.ts#L22-L36"
     },
     {
       "body": {
@@ -37394,7 +37821,7 @@
       "body": {
         "kind": "no_body"
       },
-      "description": "Delete a behavioral analytics collection.",
+      "description": "Delete a behavioral analytics collection.\nThe associated data stream is also deleted.",
       "inherits": {
         "type": {
           "name": "RequestBase",
@@ -37421,7 +37848,7 @@
         }
       ],
       "query": [],
-      "specLocation": "search_application/delete_behavioral_analytics/BehavioralAnalyticsDeleteRequest.ts#L22-L35"
+      "specLocation": "search_application/delete_behavioral_analytics/BehavioralAnalyticsDeleteRequest.ts#L22-L37"
     },
     {
       "body": {
@@ -37448,7 +37875,7 @@
       "body": {
         "kind": "no_body"
       },
-      "description": "Returns the details about a search application",
+      "description": "Get search application details.",
       "inherits": {
         "type": {
           "name": "RequestBase",
@@ -37502,7 +37929,7 @@
       "body": {
         "kind": "no_body"
       },
-      "description": "Returns the existing behavioral analytics collections.",
+      "description": "Get behavioral analytics collections.",
       "inherits": {
         "type": {
           "name": "RequestBase",
@@ -37532,7 +37959,7 @@
         }
       ],
       "query": [],
-      "specLocation": "search_application/get_behavioral_analytics/BehavioralAnalyticsGetRequest.ts#L22-L35"
+      "specLocation": "search_application/get_behavioral_analytics/BehavioralAnalyticsGetRequest.ts#L22-L36"
     },
     {
       "body": {
@@ -37677,7 +38104,7 @@
           }
         }
       },
-      "description": "Creates or updates a search application.",
+      "description": "Create or update a search application.",
       "inherits": {
         "type": {
           "name": "RequestBase",
@@ -37751,7 +38178,7 @@
       "body": {
         "kind": "no_body"
       },
-      "description": "Creates a behavioral analytics collection.",
+      "description": "Create a behavioral analytics collection.",
       "inherits": {
         "type": {
           "name": "RequestBase",
@@ -37778,7 +38205,7 @@
         }
       ],
       "query": [],
-      "specLocation": "search_application/put_behavioral_analytics/BehavioralAnalyticsPutRequest.ts#L22-L35"
+      "specLocation": "search_application/put_behavioral_analytics/BehavioralAnalyticsPutRequest.ts#L22-L36"
     },
     {
       "body": {
@@ -37826,7 +38253,7 @@
           }
         ]
       },
-      "description": "Perform a search against a search application.",
+      "description": "Run a search application search.\nGenerate and run an Elasticsearch query that uses the specified query parameteter and the search template associated with the search application or default template.\nUnspecified template parameters are assigned their default values if applicable.",
       "inherits": {
         "type": {
           "name": "RequestBase",
@@ -37873,7 +38300,7 @@
           }
         }
       ],
-      "specLocation": "search_application/search/SearchApplicationsSearchRequest.ts#L24-L52"
+      "specLocation": "search_application/search/SearchApplicationsSearchRequest.ts#L24-L54"
     },
     {
       "body": {
@@ -38103,7 +38530,7 @@
           }
         ]
       },
-      "description": "Search a vector tile.\nSearches a vector tile for geospatial values.",
+      "description": "Search a vector tile.\n\nSearch a vector tile for geospatial values.",
       "inherits": {
         "type": {
           "name": "RequestBase",
@@ -38268,7 +38695,7 @@
           }
         }
       ],
-      "specLocation": "_global/search_mvt/SearchMvtRequest.ts#L33-L190"
+      "specLocation": "_global/search_mvt/SearchMvtRequest.ts#L33-L193"
     },
     {
       "body": {
@@ -38366,7 +38793,7 @@
           }
         ]
       },
-      "description": "Runs a search with a search template.",
+      "description": "Run a search with a search template.",
       "inherits": {
         "type": {
           "name": "RequestBase",
@@ -38564,7 +38991,7 @@
           }
         }
       ],
-      "specLocation": "_global/search_template/SearchTemplateRequest.ts#L32-L134"
+      "specLocation": "_global/search_template/SearchTemplateRequest.ts#L32-L136"
     },
     {
       "body": {
@@ -38796,7 +39223,7 @@
       "body": {
         "kind": "no_body"
       },
-      "description": "Authenticate a user.\nAuthenticates a user and returns information about the authenticated user.\nInclude the user information in a [basic auth header](https://en.wikipedia.org/wiki/Basic_access_authentication).\nA successful call returns a JSON structure that shows user information such as their username, the roles that are assigned to the user, any assigned metadata, and information about the realms that authenticated and authorized the user.\nIf the user cannot be authenticated, this API returns a 401 status code.",
+      "description": "Authenticate a user.\n\nAuthenticates a user and returns information about the authenticated user.\nInclude the user information in a [basic auth header](https://en.wikipedia.org/wiki/Basic_access_authentication).\nA successful call returns a JSON structure that shows user information such as their username, the roles that are assigned to the user, any assigned metadata, and information about the realms that authenticated and authorized the user.\nIf the user cannot be authenticated, this API returns a 401 status code.",
       "inherits": {
         "type": {
           "name": "RequestBase",
@@ -38810,7 +39237,7 @@
       },
       "path": [],
       "query": [],
-      "specLocation": "security/authenticate/SecurityAuthenticateRequest.ts#L22-L32"
+      "specLocation": "security/authenticate/SecurityAuthenticateRequest.ts#L22-L33"
     },
     {
       "body": {
@@ -38822,8 +39249,8 @@
             "type": {
               "kind": "instance_of",
               "type": {
-                "name": "ApiKey",
-                "namespace": "security._types"
+                "name": "AuthenticateApiKey",
+                "namespace": "security.authenticate"
               }
             }
           },
@@ -38977,7 +39404,7 @@
         "name": "Response",
         "namespace": "security.authenticate"
       },
-      "specLocation": "security/authenticate/SecurityAuthenticateResponse.ts#L25-L43"
+      "specLocation": "security/authenticate/SecurityAuthenticateResponse.ts#L24-L42"
     },
     {
       "attachedBehaviors": [
@@ -39055,7 +39482,7 @@
           }
         ]
       },
-      "description": "Create an API key.\nCreates an API key for access without requiring basic authentication.\nA successful request returns a JSON structure that contains the API key, its unique id, and its name.\nIf applicable, it also returns expiration information for the API key in milliseconds.\nNOTE: By default, API keys never expire. You can specify expiration information when you create the API keys.",
+      "description": "Create an API key.\n\nCreate an API key for access without requiring basic authentication.\nA successful request returns a JSON structure that contains the API key, its unique id, and its name.\nIf applicable, it also returns expiration information for the API key in milliseconds.\nNOTE: By default, API keys never expire. You can specify expiration information when you create the API keys.",
       "inherits": {
         "type": {
           "name": "RequestBase",
@@ -39082,7 +39509,7 @@
           }
         }
       ],
-      "specLocation": "security/create_api_key/SecurityCreateApiKeyRequest.ts#L26-L59"
+      "specLocation": "security/create_api_key/SecurityCreateApiKeyRequest.ts#L26-L60"
     },
     {
       "body": {
@@ -39170,7 +39597,7 @@
       "body": {
         "kind": "no_body"
       },
-      "description": "Get API key information.\nRetrieves information for one or more API keys.\nNOTE: If you have only the `manage_own_api_key` privilege, this API returns only the API keys that you own.\nIf you have `read_security`, `manage_api_key` or greater privileges (including `manage_security`), this API returns all API keys regardless of ownership.",
+      "description": "Get API key information.\n\nRetrieves information for one or more API keys.\nNOTE: If you have only the `manage_own_api_key` privilege, this API returns only the API keys that you own.\nIf you have `read_security`, `manage_api_key` or greater privileges (including `manage_security`), this API returns all API keys regardless of ownership.",
       "inherits": {
         "type": {
           "name": "RequestBase",
@@ -39303,7 +39730,7 @@
           }
         }
       ],
-      "specLocation": "security/get_api_key/SecurityGetApiKeyRequest.ts#L23-L87"
+      "specLocation": "security/get_api_key/SecurityGetApiKeyRequest.ts#L23-L88"
     },
     {
       "body": {
@@ -39384,7 +39811,7 @@
           }
         ]
       },
-      "description": "Check user privileges.\nDetermines whether the specified user has a specified list of privileges.",
+      "description": "Check user privileges.\n\nDetermine whether the specified user has a specified list of privileges.",
       "inherits": {
         "type": {
           "name": "RequestBase",
@@ -39411,7 +39838,7 @@
         }
       ],
       "query": [],
-      "specLocation": "security/has_privileges/SecurityHasPrivilegesRequest.ts#L25-L44"
+      "specLocation": "security/has_privileges/SecurityHasPrivilegesRequest.ts#L25-L46"
     },
     {
       "body": {
@@ -39587,7 +40014,7 @@
           }
         ]
       },
-      "description": "Invalidate API keys.\nInvalidates one or more API keys.\nThe `manage_api_key` privilege allows deleting any API keys.\nThe `manage_own_api_key` only allows deleting API keys that are owned by the user.\nIn addition, with the `manage_own_api_key` privilege, an invalidation request must be issued in one of the three formats:\n- Set the parameter `owner=true`.\n- Or, set both `username` and `realm_name` to match the user’s identity.\n- Or, if the request is issued by an API key, i.e. an API key invalidates itself, specify its ID in the `ids` field.",
+      "description": "Invalidate API keys.\n\nThis API invalidates API keys created by the create API key or grant API key APIs.\nInvalidated API keys fail authentication, but they can still be viewed using the get API key information and query API key information APIs, for at least the configured retention period, until they are automatically deleted.\nThe `manage_api_key` privilege allows deleting any API keys.\nThe `manage_own_api_key` only allows deleting API keys that are owned by the user.\nIn addition, with the `manage_own_api_key` privilege, an invalidation request must be issued in one of the three formats:\n- Set the parameter `owner=true`.\n- Or, set both `username` and `realm_name` to match the user’s identity.\n- Or, if the request is issued by an API key, that is to say an API key invalidates itself, specify its ID in the `ids` field.",
       "inherits": {
         "type": {
           "name": "RequestBase",
@@ -39601,7 +40028,7 @@
       },
       "path": [],
       "query": [],
-      "specLocation": "security/invalidate_api_key/SecurityInvalidateApiKeyRequest.ts#L23-L67"
+      "specLocation": "security/invalidate_api_key/SecurityInvalidateApiKeyRequest.ts#L23-L69"
     },
     {
       "body": {
@@ -39768,7 +40195,7 @@
           }
         ]
       },
-      "description": "Query API keys.\nRetrieves a paginated list of API keys and their information. You can optionally filter the results with a query.",
+      "description": "Find API keys with a query.\n\nGet a paginated list of API keys and their information. You can optionally filter the results with a query.",
       "inherits": {
         "type": {
           "name": "RequestBase",
@@ -39839,7 +40266,7 @@
           }
         }
       ],
-      "specLocation": "security/query_api_keys/QueryApiKeysRequest.ts#L26-L100"
+      "specLocation": "security/query_api_keys/QueryApiKeysRequest.ts#L26-L101"
     },
     {
       "body": {
@@ -39974,7 +40401,7 @@
           }
         ]
       },
-      "description": "Update an API key.\nUpdates attributes of an existing API key.\nUsers can only update API keys that they created or that were granted to them.\nUse this API to update API keys created by the create API Key or grant API Key APIs.\nIf you need to apply the same update to many API keys, you can use bulk update API Keys to reduce overhead.\nIt’s not possible to update expired API keys, or API keys that have been invalidated by invalidate API Key.\nThis API supports updates to an API key’s access scope and metadata.\nThe access scope of an API key is derived from the `role_descriptors` you specify in the request, and a snapshot of the owner user’s permissions at the time of the request.\nThe snapshot of the owner’s permissions is updated automatically on every call.\nIf you don’t specify `role_descriptors` in the request, a call to this API might still change the API key’s access scope.\nThis change can occur if the owner user’s permissions have changed since the API key was created or last modified.\nTo update another user’s API key, use the `run_as` feature to submit a request on behalf of another user.\nIMPORTANT: It’s not possible to use an API key as the authentication credential for this API.\nTo update an API key, the owner user’s credentials are required.",
+      "description": "Update an API key.\n\nUpdates attributes of an existing API key.\nUsers can only update API keys that they created or that were granted to them.\nUse this API to update API keys created by the create API Key or grant API Key APIs.\nIf you need to apply the same update to many API keys, you can use bulk update API Keys to reduce overhead.\nIt’s not possible to update expired API keys, or API keys that have been invalidated by invalidate API Key.\nThis API supports updates to an API key’s access scope and metadata.\nThe access scope of an API key is derived from the `role_descriptors` you specify in the request, and a snapshot of the owner user’s permissions at the time of the request.\nThe snapshot of the owner’s permissions is updated automatically on every call.\nIf you don’t specify `role_descriptors` in the request, a call to this API might still change the API key’s access scope.\nThis change can occur if the owner user’s permissions have changed since the API key was created or last modified.\nTo update another user’s API key, use the `run_as` feature to submit a request on behalf of another user.\nIMPORTANT: It’s not possible to use an API key as the authentication credential for this API.\nTo update an API key, the owner user’s credentials are required.",
       "inherits": {
         "type": {
           "name": "RequestBase",
@@ -40001,7 +40428,7 @@
         }
       ],
       "query": [],
-      "specLocation": "security/update_api_key/Request.ts#L26-L66"
+      "specLocation": "security/update_api_key/Request.ts#L26-L67"
     },
     {
       "body": {
@@ -40049,7 +40476,7 @@
           }
         ]
       },
-      "description": "Clears the SQL cursor",
+      "description": "Clear an SQL search cursor.",
       "inherits": {
         "type": {
           "name": "RequestBase",
@@ -40063,7 +40490,7 @@
       },
       "path": [],
       "query": [],
-      "specLocation": "sql/clear_cursor/ClearSqlCursorRequest.ts#L22-L34"
+      "specLocation": "sql/clear_cursor/ClearSqlCursorRequest.ts#L22-L35"
     },
     {
       "body": {
@@ -40096,7 +40523,7 @@
       "body": {
         "kind": "no_body"
       },
-      "description": "Deletes an async SQL search or a stored synchronous SQL search. If the search is still running, the API cancels it.",
+      "description": "Delete an async SQL search.\nDelete an async SQL search or a stored synchronous SQL search.\nIf the search is still running, the API cancels it.",
       "inherits": {
         "type": {
           "name": "RequestBase",
@@ -40123,7 +40550,7 @@
         }
       ],
       "query": [],
-      "specLocation": "sql/delete_async/SqlDeleteAsyncRequest.ts#L23-L35"
+      "specLocation": "sql/delete_async/SqlDeleteAsyncRequest.ts#L23-L38"
     },
     {
       "body": {
@@ -40150,7 +40577,7 @@
       "body": {
         "kind": "no_body"
       },
-      "description": "Returns the current status and available results for an async SQL search or stored synchronous SQL search",
+      "description": "Get async SQL search results.\nGet the current status and available results for an async SQL search or stored synchronous SQL search.",
       "inherits": {
         "type": {
           "name": "RequestBase",
@@ -40227,7 +40654,7 @@
           }
         }
       ],
-      "specLocation": "sql/get_async/SqlGetAsyncRequest.ts#L24-L58"
+      "specLocation": "sql/get_async/SqlGetAsyncRequest.ts#L24-L60"
     },
     {
       "body": {
@@ -40327,7 +40754,7 @@
       "body": {
         "kind": "no_body"
       },
-      "description": "Returns the current status of an async SQL search or a stored synchronous SQL search",
+      "description": "Get the async SQL search status.\nGet the current status of an async SQL search or a stored synchronous SQL search.",
       "inherits": {
         "type": {
           "name": "RequestBase",
@@ -40354,7 +40781,7 @@
         }
       ],
       "query": [],
-      "specLocation": "sql/get_async_status/SqlGetAsyncStatusRequest.ts#L23-L35"
+      "specLocation": "sql/get_async_status/SqlGetAsyncStatusRequest.ts#L23-L37"
     },
     {
       "body": {
@@ -40680,7 +41107,7 @@
           }
         ]
       },
-      "description": "Executes a SQL request",
+      "description": "Get SQL search results.\nRun an SQL request.",
       "inherits": {
         "type": {
           "name": "RequestBase",
@@ -40703,13 +41130,13 @@
           "type": {
             "kind": "instance_of",
             "type": {
-              "name": "string",
-              "namespace": "_builtins"
+              "name": "SqlFormat",
+              "namespace": "sql.query"
             }
           }
         }
       ],
-      "specLocation": "sql/query/QuerySqlRequest.ts#L28-L122"
+      "specLocation": "sql/query/QuerySqlRequest.ts#L28-L124"
     },
     {
       "body": {
@@ -40865,7 +41292,7 @@
           }
         ]
       },
-      "description": "Translates SQL into Elasticsearch queries",
+      "description": "Translate SQL into Elasticsearch queries.\nTranslate an SQL search into a search API request containing Query DSL.",
       "inherits": {
         "type": {
           "name": "RequestBase",
@@ -40879,7 +41306,7 @@
       },
       "path": [],
       "query": [],
-      "specLocation": "sql/translate/TranslateSqlRequest.ts#L25-L54"
+      "specLocation": "sql/translate/TranslateSqlRequest.ts#L25-L56"
     },
     {
       "body": {
@@ -40981,7 +41408,7 @@
       "body": {
         "kind": "no_body"
       },
-      "description": "Deletes a synonym set",
+      "description": "Delete a synonym set.",
       "inherits": {
         "type": {
           "name": "RequestBase",
@@ -41035,7 +41462,7 @@
       "body": {
         "kind": "no_body"
       },
-      "description": "Deletes a synonym rule in a synonym set",
+      "description": "Delete a synonym rule.\nDelete a synonym rule from a synonym set.",
       "inherits": {
         "type": {
           "name": "RequestBase",
@@ -41074,7 +41501,7 @@
         }
       ],
       "query": [],
-      "specLocation": "synonyms/delete_synonym_rule/SynonymRuleDeleteRequest.ts#L22-L40"
+      "specLocation": "synonyms/delete_synonym_rule/SynonymRuleDeleteRequest.ts#L22-L41"
     },
     {
       "body": {
@@ -41101,7 +41528,7 @@
       "body": {
         "kind": "no_body"
       },
-      "description": "Retrieves a synonym set",
+      "description": "Get a synonym set.",
       "inherits": {
         "type": {
           "name": "RequestBase",
@@ -41202,7 +41629,7 @@
       "body": {
         "kind": "no_body"
       },
-      "description": "Retrieves a synonym rule from a synonym set",
+      "description": "Get a synonym rule.\nGet a synonym rule from a synonym set.",
       "inherits": {
         "type": {
           "name": "RequestBase",
@@ -41241,7 +41668,7 @@
         }
       ],
       "query": [],
-      "specLocation": "synonyms/get_synonym_rule/SynonymRuleGetRequest.ts#L22-L40"
+      "specLocation": "synonyms/get_synonym_rule/SynonymRuleGetRequest.ts#L22-L41"
     },
     {
       "body": {
@@ -41268,7 +41695,7 @@
       "body": {
         "kind": "no_body"
       },
-      "description": "Retrieves a summary of all defined synonym sets",
+      "description": "Get all synonym sets.\nGet a summary of all defined synonym sets.",
       "inherits": {
         "type": {
           "name": "RequestBase",
@@ -41309,7 +41736,7 @@
           }
         }
       ],
-      "specLocation": "synonyms/get_synonyms_sets/SynonymsSetsGetRequest.ts#L22-L41"
+      "specLocation": "synonyms/get_synonyms_sets/SynonymsSetsGetRequest.ts#L22-L42"
     },
     {
       "body": {
@@ -41385,7 +41812,7 @@
           }
         ]
       },
-      "description": "Creates or updates a synonym set.",
+      "description": "Create or update a synonym set.\nSynonyms sets are limited to a maximum of 10,000 synonym rules per set.\nIf you need to manage more synonym rules, you can create multiple synonym sets.",
       "inherits": {
         "type": {
           "name": "RequestBase",
@@ -41412,7 +41839,7 @@
         }
       ],
       "query": [],
-      "specLocation": "synonyms/put_synonym/SynonymsPutRequest.ts#L23-L42"
+      "specLocation": "synonyms/put_synonym/SynonymsPutRequest.ts#L23-L44"
     },
     {
       "body": {
@@ -41469,7 +41896,7 @@
           }
         ]
       },
-      "description": "Creates or updates a synonym rule in a synonym set",
+      "description": "Create or update a synonym rule.\nCreate or update a synonym rule in a synonym set.",
       "inherits": {
         "type": {
           "name": "RequestBase",
@@ -41508,7 +41935,7 @@
         }
       ],
       "query": [],
-      "specLocation": "synonyms/put_synonym_rule/SynonymRulePutRequest.ts#L23-L47"
+      "specLocation": "synonyms/put_synonym_rule/SynonymRulePutRequest.ts#L23-L48"
     },
     {
       "body": {
@@ -41741,7 +42168,7 @@
           }
         ]
       },
-      "description": "The terms enum API  can be used to discover terms in the index that begin with the provided string. It is designed for low-latency look-ups used in auto-complete scenarios.",
+      "description": "Get terms in an index.\n\nDiscover terms that match a partial string in an index.\nThis \"terms enum\" API is designed for low-latency look-ups used in auto-complete scenarios.\n\nIf the `complete` property in the response is false, the returned terms set may be incomplete and should be treated as approximate.\nThis can occur due to a few reasons, such as a request timeout or a node error.\n\nNOTE: The terms enum API may return terms from deleted documents. Deleted documents are initially only marked as deleted. It is not until their segments are merged that documents are actually deleted. Until that happens, the terms enum API will return terms from these documents.",
       "inherits": {
         "type": {
           "name": "RequestBase",
@@ -41768,7 +42195,7 @@
         }
       ],
       "query": [],
-      "specLocation": "_global/terms_enum/TermsEnumRequest.ts#L26-L65"
+      "specLocation": "_global/terms_enum/TermsEnumRequest.ts#L26-L75"
     },
     {
       "body": {
@@ -41875,7 +42302,7 @@
           }
         ]
       },
-      "description": "Get term vector information.\nReturns information and statistics about terms in the fields of a particular document.",
+      "description": "Get term vector information.\n\nGet information and statistics about terms in the fields of a particular document.",
       "generics": [
         {
           "name": "TDocument",
@@ -42061,7 +42488,7 @@
           }
         }
       ],
-      "specLocation": "_global/termvectors/TermVectorsRequest.ts#L33-L120"
+      "specLocation": "_global/termvectors/TermVectorsRequest.ts#L33-L122"
     },
     {
       "body": {
@@ -43883,7 +44310,7 @@
           }
         }
       ],
-      "specLocation": "_global/update/UpdateRequest.ts#L38-L153"
+      "specLocation": "_global/update/UpdateRequest.ts#L38-L154"
     },
     {
       "body": {
@@ -44407,7 +44834,7 @@
           }
         }
       ],
-      "specLocation": "_global/update_by_query/UpdateByQueryRequest.ts#L37-L226"
+      "specLocation": "_global/update_by_query/UpdateByQueryRequest.ts#L37-L227"
     },
     {
       "body": {
@@ -45424,6 +45851,8 @@
           "aliases": [
             "aggs"
           ],
+          "extDocId": "search-aggregations",
+          "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/search-aggregations.html",
           "name": "aggregations",
           "required": false,
           "type": {
@@ -45883,7 +46312,7 @@
           }
         }
       ],
-      "specLocation": "_global/msearch/types.ts#L70-L201"
+      "specLocation": "_global/msearch/types.ts#L70-L204"
     },
     {
       "kind": "interface",
@@ -45933,8 +46362,8 @@
         },
         {
           "description": "A bucket aggregation returning a form of adjacency matrix.\nThe request provides a collection of named filter expressions, similar to the `filters` aggregation.\nEach bucket in the response represents a non-empty cell in the matrix of intersecting filters.",
-          "docId": "search-aggregations-bucket-adjacency-matrix-aggregation",
-          "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/search-aggregations-bucket-adjacency-matrix-aggregation.html",
+          "extDocId": "search-aggregations-bucket-adjacency-matrix-aggregation",
+          "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/search-aggregations-bucket-adjacency-matrix-aggregation.html",
           "name": "adjacency_matrix",
           "required": false,
           "type": {
@@ -45947,8 +46376,8 @@
         },
         {
           "description": "A multi-bucket aggregation similar to the date histogram, except instead of providing an interval to use as the width of each bucket, a target number of buckets is provided.",
-          "docId": "search-aggregations-bucket-autodatehistogram-aggregation",
-          "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/search-aggregations-bucket-autodatehistogram-aggregation.html",
+          "extDocId": "search-aggregations-bucket-autodatehistogram-aggregation",
+          "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/search-aggregations-bucket-autodatehistogram-aggregation.html",
           "name": "auto_date_histogram",
           "required": false,
           "type": {
@@ -45961,8 +46390,8 @@
         },
         {
           "description": "A single-value metrics aggregation that computes the average of numeric values that are extracted from the aggregated documents.",
-          "docId": "search-aggregations-metrics-avg-aggregation",
-          "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/search-aggregations-metrics-avg-aggregation.html",
+          "extDocId": "search-aggregations-metrics-avg-aggregation",
+          "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/search-aggregations-metrics-avg-aggregation.html",
           "name": "avg",
           "required": false,
           "type": {
@@ -45975,8 +46404,8 @@
         },
         {
           "description": "A sibling pipeline aggregation which calculates the mean value of a specified metric in a sibling aggregation.\nThe specified metric must be numeric and the sibling aggregation must be a multi-bucket aggregation.",
-          "docId": "search-aggregations-pipeline-avg-bucket-aggregation",
-          "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/search-aggregations-pipeline-avg-bucket-aggregation.html",
+          "extDocId": "search-aggregations-pipeline-avg-bucket-aggregation",
+          "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/search-aggregations-pipeline-avg-bucket-aggregation.html",
           "name": "avg_bucket",
           "required": false,
           "type": {
@@ -45989,8 +46418,8 @@
         },
         {
           "description": "A metrics aggregation that computes a box plot of numeric values extracted from the aggregated documents.",
-          "docId": "search-aggregations-metrics-boxplot-aggregation",
-          "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/search-aggregations-metrics-boxplot-aggregation.html",
+          "extDocId": "search-aggregations-metrics-boxplot-aggregation",
+          "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/search-aggregations-metrics-boxplot-aggregation.html",
           "name": "boxplot",
           "required": false,
           "type": {
@@ -46003,8 +46432,8 @@
         },
         {
           "description": "A parent pipeline aggregation which runs a script which can perform per bucket computations on metrics in the parent multi-bucket aggregation.",
-          "docId": "search-aggregations-pipeline-bucket-script-aggregation",
-          "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/search-aggregations-pipeline-bucket-script-aggregation.html",
+          "extDocId": "search-aggregations-pipeline-bucket-script-aggregation",
+          "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/search-aggregations-pipeline-bucket-script-aggregation.html",
           "name": "bucket_script",
           "required": false,
           "type": {
@@ -46017,8 +46446,8 @@
         },
         {
           "description": "A parent pipeline aggregation which runs a script to determine whether the current bucket will be retained in the parent multi-bucket aggregation.",
-          "docId": "search-aggregations-pipeline-bucket-selector-aggregation",
-          "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/search-aggregations-pipeline-bucket-selector-aggregation.html",
+          "extDocId": "search-aggregations-pipeline-bucket-selector-aggregation",
+          "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/search-aggregations-pipeline-bucket-selector-aggregation.html",
           "name": "bucket_selector",
           "required": false,
           "type": {
@@ -46031,8 +46460,8 @@
         },
         {
           "description": "A parent pipeline aggregation which sorts the buckets of its parent multi-bucket aggregation.",
-          "docId": "search-aggregations-pipeline-bucket-sort-aggregation",
-          "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/search-aggregations-pipeline-bucket-sort-aggregation.html",
+          "extDocId": "search-aggregations-pipeline-bucket-sort-aggregation",
+          "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/search-aggregations-pipeline-bucket-sort-aggregation.html",
           "name": "bucket_sort",
           "required": false,
           "type": {
@@ -46053,8 +46482,8 @@
             }
           },
           "description": "A sibling pipeline aggregation which runs a two sample Kolmogorov–Smirnov test (\"K-S test\") against a provided distribution and the distribution implied by the documents counts in the configured sibling aggregation.",
-          "docId": "search-aggregations-bucket-count-ks-test-aggregation",
-          "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/search-aggregations-bucket-count-ks-test-aggregation.html",
+          "extDocId": "search-aggregations-bucket-count-ks-test-aggregation",
+          "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/search-aggregations-bucket-count-ks-test-aggregation.html",
           "name": "bucket_count_ks_test",
           "required": false,
           "type": {
@@ -46075,8 +46504,8 @@
             }
           },
           "description": "A sibling pipeline aggregation which runs a correlation function on the configured sibling multi-bucket aggregation.",
-          "docId": "search-aggregations-bucket-correlation-aggregation",
-          "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/search-aggregations-bucket-correlation-aggregation.html",
+          "extDocId": "search-aggregations-bucket-correlation-aggregation",
+          "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/search-aggregations-bucket-correlation-aggregation.html",
           "name": "bucket_correlation",
           "required": false,
           "type": {
@@ -46089,8 +46518,8 @@
         },
         {
           "description": "A single-value metrics aggregation that calculates an approximate count of distinct values.",
-          "docId": "search-aggregations-metrics-cardinality-aggregation",
-          "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/search-aggregations-metrics-cardinality-aggregation.html",
+          "extDocId": "search-aggregations-metrics-cardinality-aggregation",
+          "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/search-aggregations-metrics-cardinality-aggregation.html",
           "name": "cardinality",
           "required": false,
           "type": {
@@ -46111,8 +46540,8 @@
             }
           },
           "description": "A multi-bucket aggregation that groups semi-structured text into buckets.",
-          "docId": "search-aggregations-bucket-categorize-text-aggregation",
-          "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/search-aggregations-bucket-categorize-text-aggregation.html",
+          "extDocId": "search-aggregations-bucket-categorize-text-aggregation",
+          "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/search-aggregations-bucket-categorize-text-aggregation.html",
           "name": "categorize_text",
           "required": false,
           "type": {
@@ -46125,8 +46554,8 @@
         },
         {
           "description": "A single bucket aggregation that selects child documents that have the specified type, as defined in a `join` field.",
-          "docId": "search-aggregations-bucket-children-aggregation",
-          "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/search-aggregations-bucket-children-aggregation.html",
+          "extDocId": "search-aggregations-bucket-children-aggregation",
+          "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/search-aggregations-bucket-children-aggregation.html",
           "name": "children",
           "required": false,
           "type": {
@@ -46151,8 +46580,8 @@
         },
         {
           "description": "A parent pipeline aggregation which calculates the cumulative cardinality in a parent `histogram` or `date_histogram` aggregation.",
-          "docId": "search-aggregations-pipeline-cumulative-cardinality-aggregation",
-          "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/search-aggregations-pipeline-cumulative-cardinality-aggregation.html",
+          "extDocId": "search-aggregations-pipeline-cumulative-cardinality-aggregation",
+          "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/search-aggregations-pipeline-cumulative-cardinality-aggregation.html",
           "name": "cumulative_cardinality",
           "required": false,
           "type": {
@@ -46165,8 +46594,8 @@
         },
         {
           "description": "A parent pipeline aggregation which calculates the cumulative sum of a specified metric in a parent `histogram` or `date_histogram` aggregation.",
-          "docId": "search-aggregations-pipeline-cumulative-sum-aggregation",
-          "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/search-aggregations-pipeline-cumulative-sum-aggregation.html",
+          "extDocId": "search-aggregations-pipeline-cumulative-sum-aggregation",
+          "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/search-aggregations-pipeline-cumulative-sum-aggregation.html",
           "name": "cumulative_sum",
           "required": false,
           "type": {
@@ -46179,8 +46608,8 @@
         },
         {
           "description": "A multi-bucket values source based aggregation that can be applied on date values or date range values extracted from the documents.\nIt dynamically builds fixed size (interval) buckets over the values.",
-          "docId": "search-aggregations-bucket-datehistogram-aggregation",
-          "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/search-aggregations-bucket-datehistogram-aggregation.html",
+          "extDocId": "search-aggregations-bucket-datehistogram-aggregation",
+          "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/search-aggregations-bucket-datehistogram-aggregation.html",
           "name": "date_histogram",
           "required": false,
           "type": {
@@ -46193,8 +46622,8 @@
         },
         {
           "description": "A multi-bucket value source based aggregation that enables the user to define a set of date ranges - each representing a bucket.",
-          "docId": "search-aggregations-bucket-daterange-aggregation",
-          "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/search-aggregations-bucket-daterange-aggregation.html",
+          "extDocId": "search-aggregations-bucket-daterange-aggregation",
+          "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/search-aggregations-bucket-daterange-aggregation.html",
           "name": "date_range",
           "required": false,
           "type": {
@@ -46207,8 +46636,8 @@
         },
         {
           "description": "A parent pipeline aggregation which calculates the derivative of a specified metric in a parent `histogram` or `date_histogram` aggregation.",
-          "docId": "search-aggregations-pipeline-derivative-aggregation",
-          "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/search-aggregations-pipeline-derivative-aggregation.html",
+          "extDocId": "search-aggregations-pipeline-derivative-aggregation",
+          "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/search-aggregations-pipeline-derivative-aggregation.html",
           "name": "derivative",
           "required": false,
           "type": {
@@ -46221,8 +46650,8 @@
         },
         {
           "description": "A filtering aggregation used to limit any sub aggregations' processing to a sample of the top-scoring documents.\nSimilar to the `sampler` aggregation, but adds the ability to limit the number of matches that share a common value.",
-          "docId": "search-aggregations-bucket-diversified-sampler-aggregation",
-          "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/search-aggregations-bucket-diversified-sampler-aggregation.html",
+          "extDocId": "search-aggregations-bucket-diversified-sampler-aggregation",
+          "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/search-aggregations-bucket-diversified-sampler-aggregation.html",
           "name": "diversified_sampler",
           "required": false,
           "type": {
@@ -46235,8 +46664,8 @@
         },
         {
           "description": "A multi-value metrics aggregation that computes stats over numeric values extracted from the aggregated documents.",
-          "docId": "search-aggregations-metrics-extendedstats-aggregation",
-          "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/search-aggregations-metrics-extendedstats-aggregation.html",
+          "extDocId": "search-aggregations-metrics-extendedstats-aggregation",
+          "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/search-aggregations-metrics-extendedstats-aggregation.html",
           "name": "extended_stats",
           "required": false,
           "type": {
@@ -46249,8 +46678,8 @@
         },
         {
           "description": "A sibling pipeline aggregation which calculates a variety of stats across all bucket of a specified metric in a sibling aggregation.",
-          "docId": "search-aggregations-pipeline-extended-stats-bucket-aggregation",
-          "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/search-aggregations-pipeline-extended-stats-bucket-aggregation.html",
+          "extDocId": "search-aggregations-pipeline-extended-stats-bucket-aggregation",
+          "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/search-aggregations-pipeline-extended-stats-bucket-aggregation.html",
           "name": "extended_stats_bucket",
           "required": false,
           "type": {
@@ -46263,8 +46692,8 @@
         },
         {
           "description": "A bucket aggregation which finds frequent item sets, a form of association rules mining that identifies items that often occur together.",
-          "docId": "search-aggregations-bucket-frequent-item-sets-aggregation",
-          "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/search-aggregations-bucket-frequent-item-sets-aggregation.html",
+          "extDocId": "search-aggregations-bucket-frequent-item-sets-aggregation",
+          "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/search-aggregations-bucket-frequent-item-sets-aggregation.html",
           "name": "frequent_item_sets",
           "required": false,
           "type": {
@@ -46277,8 +46706,8 @@
         },
         {
           "description": "A single bucket aggregation that narrows the set of documents to those that match a query.",
-          "docId": "search-aggregations-bucket-filter-aggregation",
-          "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/search-aggregations-bucket-filter-aggregation.html",
+          "extDocId": "search-aggregations-bucket-filter-aggregation",
+          "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/search-aggregations-bucket-filter-aggregation.html",
           "name": "filter",
           "required": false,
           "type": {
@@ -46291,8 +46720,8 @@
         },
         {
           "description": "A multi-bucket aggregation where each bucket contains the documents that match a query.",
-          "docId": "search-aggregations-bucket-filters-aggregation",
-          "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/search-aggregations-bucket-filters-aggregation.html",
+          "extDocId": "search-aggregations-bucket-filters-aggregation",
+          "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/search-aggregations-bucket-filters-aggregation.html",
           "name": "filters",
           "required": false,
           "type": {
@@ -46305,8 +46734,8 @@
         },
         {
           "description": "A metric aggregation that computes the geographic bounding box containing all values for a Geopoint or Geoshape field.",
-          "docId": "search-aggregations-metrics-geobounds-aggregation",
-          "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/search-aggregations-metrics-geobounds-aggregation.html",
+          "extDocId": "search-aggregations-metrics-geobounds-aggregation",
+          "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/search-aggregations-metrics-geobounds-aggregation.html",
           "name": "geo_bounds",
           "required": false,
           "type": {
@@ -46319,8 +46748,8 @@
         },
         {
           "description": "A metric aggregation that computes the weighted centroid from all coordinate values for geo fields.",
-          "docId": "search-aggregations-metrics-geocentroid-aggregation",
-          "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/search-aggregations-metrics-geocentroid-aggregation.html",
+          "extDocId": "search-aggregations-metrics-geocentroid-aggregation",
+          "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/search-aggregations-metrics-geocentroid-aggregation.html",
           "name": "geo_centroid",
           "required": false,
           "type": {
@@ -46333,8 +46762,8 @@
         },
         {
           "description": "A multi-bucket aggregation that works on `geo_point` fields.\nEvaluates the distance of each document value from an origin point and determines the buckets it belongs to, based on ranges defined in the request.",
-          "docId": "search-aggregations-bucket-geodistance-aggregation",
-          "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/search-aggregations-bucket-geodistance-aggregation.html",
+          "extDocId": "search-aggregations-bucket-geodistance-aggregation",
+          "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/search-aggregations-bucket-geodistance-aggregation.html",
           "name": "geo_distance",
           "required": false,
           "type": {
@@ -46347,8 +46776,8 @@
         },
         {
           "description": "A multi-bucket aggregation that groups `geo_point` and `geo_shape` values into buckets that represent a grid.\nEach cell is labeled using a geohash which is of user-definable precision.",
-          "docId": "search-aggregations-bucket-geohashgrid-aggregation",
-          "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/search-aggregations-bucket-geohashgrid-aggregation.html",
+          "extDocId": "search-aggregations-bucket-geohashgrid-aggregation",
+          "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/search-aggregations-bucket-geohashgrid-aggregation.html",
           "name": "geohash_grid",
           "required": false,
           "type": {
@@ -46361,8 +46790,8 @@
         },
         {
           "description": "Aggregates all `geo_point` values within a bucket into a `LineString` ordered by the chosen sort field.",
-          "docId": "search-aggregations-metrics-geo-line",
-          "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/search-aggregations-metrics-geo-line.html",
+          "extDocId": "search-aggregations-metrics-geo-line",
+          "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/search-aggregations-metrics-geo-line.html",
           "name": "geo_line",
           "required": false,
           "type": {
@@ -46375,8 +46804,8 @@
         },
         {
           "description": "A multi-bucket aggregation that groups `geo_point` and `geo_shape` values into buckets that represent a grid.\nEach cell corresponds to a map tile as used by many online map sites.",
-          "docId": "search-aggregations-bucket-geotilegrid-aggregation",
-          "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/search-aggregations-bucket-geotilegrid-aggregation.html",
+          "extDocId": "search-aggregations-bucket-geotilegrid-aggregation",
+          "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/search-aggregations-bucket-geotilegrid-aggregation.html",
           "name": "geotile_grid",
           "required": false,
           "type": {
@@ -46389,8 +46818,8 @@
         },
         {
           "description": "A multi-bucket aggregation that groups `geo_point` and `geo_shape` values into buckets that represent a grid.\nEach cell corresponds to a H3 cell index and is labeled using the H3Index representation.",
-          "docId": "search-aggregations-bucket-geohexgrid-aggregation",
-          "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/search-aggregations-bucket-geohexgrid-aggregation.html",
+          "extDocId": "search-aggregations-bucket-geohexgrid-aggregation",
+          "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/search-aggregations-bucket-geohexgrid-aggregation.html",
           "name": "geohex_grid",
           "required": false,
           "type": {
@@ -46403,8 +46832,8 @@
         },
         {
           "description": "Defines a single bucket of all the documents within the search execution context.\nThis context is defined by the indices and the document types you’re searching on, but is not influenced by the search query itself.",
-          "docId": "search-aggregations-bucket-global-aggregation",
-          "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/search-aggregations-bucket-global-aggregation.html",
+          "extDocId": "search-aggregations-bucket-global-aggregation",
+          "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/search-aggregations-bucket-global-aggregation.html",
           "name": "global",
           "required": false,
           "type": {
@@ -46417,8 +46846,8 @@
         },
         {
           "description": "A multi-bucket values source based aggregation that can be applied on numeric values or numeric range values extracted from the documents.\nIt dynamically builds fixed size (interval) buckets over the values.",
-          "docId": "search-aggregations-bucket-histogram-aggregation",
-          "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/search-aggregations-bucket-histogram-aggregation.html",
+          "extDocId": "search-aggregations-bucket-histogram-aggregation",
+          "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/search-aggregations-bucket-histogram-aggregation.html",
           "name": "histogram",
           "required": false,
           "type": {
@@ -46431,8 +46860,8 @@
         },
         {
           "description": "A multi-bucket value source based aggregation that enables the user to define a set of IP ranges - each representing a bucket.",
-          "docId": "search-aggregations-bucket-iprange-aggregation",
-          "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/search-aggregations-bucket-iprange-aggregation.html",
+          "extDocId": "search-aggregations-bucket-iprange-aggregation",
+          "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/search-aggregations-bucket-iprange-aggregation.html",
           "name": "ip_range",
           "required": false,
           "type": {
@@ -46445,8 +46874,8 @@
         },
         {
           "description": "A bucket aggregation that groups documents based on the network or sub-network of an IP address.",
-          "docId": "search-aggregations-bucket-ipprefix-aggregation",
-          "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/search-aggregations-bucket-ipprefix-aggregation.html",
+          "extDocId": "search-aggregations-bucket-ipprefix-aggregation",
+          "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/search-aggregations-bucket-ipprefix-aggregation.html",
           "name": "ip_prefix",
           "required": false,
           "type": {
@@ -46459,8 +46888,8 @@
         },
         {
           "description": "A parent pipeline aggregation which loads a pre-trained model and performs inference on the collated result fields from the parent bucket aggregation.",
-          "docId": "search-aggregations-pipeline-inference-bucket-aggregation",
-          "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/search-aggregations-pipeline-inference-bucket-aggregation.html",
+          "extDocId": "search-aggregations-pipeline-inference-bucket-aggregation",
+          "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/search-aggregations-pipeline-inference-bucket-aggregation.html",
           "name": "inference",
           "required": false,
           "type": {
@@ -46484,8 +46913,8 @@
         },
         {
           "description": "A numeric aggregation that computes the following statistics over a set of document fields: `count`, `mean`, `variance`, `skewness`, `kurtosis`, `covariance`, and `covariance`.",
-          "docId": "search-aggregations-matrix-stats-aggregation",
-          "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/search-aggregations-matrix-stats-aggregation.html",
+          "extDocId": "search-aggregations-matrix-stats-aggregation",
+          "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/search-aggregations-matrix-stats-aggregation.html",
           "name": "matrix_stats",
           "required": false,
           "type": {
@@ -46498,8 +46927,8 @@
         },
         {
           "description": "A single-value metrics aggregation that returns the maximum value among the numeric values extracted from the aggregated documents.",
-          "docId": "search-aggregations-metrics-max-aggregation",
-          "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/search-aggregations-metrics-max-aggregation.html",
+          "extDocId": "search-aggregations-metrics-max-aggregation",
+          "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/search-aggregations-metrics-max-aggregation.html",
           "name": "max",
           "required": false,
           "type": {
@@ -46512,8 +46941,8 @@
         },
         {
           "description": "A sibling pipeline aggregation which identifies the bucket(s) with the maximum value of a specified metric in a sibling aggregation and outputs both the value and the key(s) of the bucket(s).",
-          "docId": "search-aggregations-pipeline-max-bucket-aggregation",
-          "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/search-aggregations-pipeline-max-bucket-aggregation.html",
+          "extDocId": "search-aggregations-pipeline-max-bucket-aggregation",
+          "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/search-aggregations-pipeline-max-bucket-aggregation.html",
           "name": "max_bucket",
           "required": false,
           "type": {
@@ -46526,8 +46955,8 @@
         },
         {
           "description": "A single-value aggregation that approximates the median absolute deviation of its search results.",
-          "docId": "search-aggregations-metrics-median-absolute-deviation-aggregation",
-          "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/search-aggregations-metrics-median-absolute-deviation-aggregation.html",
+          "extDocId": "search-aggregations-metrics-median-absolute-deviation-aggregation",
+          "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/search-aggregations-metrics-median-absolute-deviation-aggregation.html",
           "name": "median_absolute_deviation",
           "required": false,
           "type": {
@@ -46540,8 +46969,8 @@
         },
         {
           "description": "A single-value metrics aggregation that returns the minimum value among numeric values extracted from the aggregated documents.",
-          "docId": "search-aggregations-metrics-min-aggregation",
-          "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/search-aggregations-metrics-min-aggregation.html",
+          "extDocId": "search-aggregations-metrics-min-aggregation",
+          "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/search-aggregations-metrics-min-aggregation.html",
           "name": "min",
           "required": false,
           "type": {
@@ -46554,8 +46983,8 @@
         },
         {
           "description": "A sibling pipeline aggregation which identifies the bucket(s) with the minimum value of a specified metric in a sibling aggregation and outputs both the value and the key(s) of the bucket(s).",
-          "docId": "search-aggregations-pipeline-min-bucket-aggregation",
-          "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/search-aggregations-pipeline-min-bucket-aggregation.html",
+          "extDocId": "search-aggregations-pipeline-min-bucket-aggregation",
+          "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/search-aggregations-pipeline-min-bucket-aggregation.html",
           "name": "min_bucket",
           "required": false,
           "type": {
@@ -46568,8 +46997,8 @@
         },
         {
           "description": "A field data based single bucket aggregation, that creates a bucket of all documents in the current document set context that are missing a field value (effectively, missing a field or having the configured NULL value set).",
-          "docId": "search-aggregations-bucket-missing-aggregation",
-          "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/search-aggregations-bucket-missing-aggregation.html",
+          "extDocId": "search-aggregations-bucket-missing-aggregation",
+          "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/search-aggregations-bucket-missing-aggregation.html",
           "name": "missing",
           "required": false,
           "type": {
@@ -46593,8 +47022,8 @@
         },
         {
           "description": "Given an ordered series of percentiles, \"slides\" a window across those percentiles and computes cumulative percentiles.",
-          "docId": "search-aggregations-pipeline-moving-percentiles-aggregation",
-          "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/search-aggregations-pipeline-moving-percentiles-aggregation.html",
+          "extDocId": "search-aggregations-pipeline-moving-percentiles-aggregation",
+          "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/search-aggregations-pipeline-moving-percentiles-aggregation.html",
           "name": "moving_percentiles",
           "required": false,
           "type": {
@@ -46607,8 +47036,8 @@
         },
         {
           "description": "Given an ordered series of data, \"slides\" a window across the data and runs a custom script on each window of data.\nFor convenience, a number of common functions are predefined such as `min`, `max`, and moving averages.",
-          "docId": "search-aggregations-pipeline-movfn-aggregation",
-          "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/search-aggregations-pipeline-movfn-aggregation.html",
+          "extDocId": "search-aggregations-pipeline-movfn-aggregation",
+          "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/search-aggregations-pipeline-movfn-aggregation.html",
           "name": "moving_fn",
           "required": false,
           "type": {
@@ -46621,8 +47050,8 @@
         },
         {
           "description": "A multi-bucket value source based aggregation where buckets are dynamically built - one per unique set of values.",
-          "docId": "search-aggregations-bucket-multi-terms-aggregation",
-          "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/search-aggregations-bucket-multi-terms-aggregation.html",
+          "extDocId": "search-aggregations-bucket-multi-terms-aggregation",
+          "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/search-aggregations-bucket-multi-terms-aggregation.html",
           "name": "multi_terms",
           "required": false,
           "type": {
@@ -46635,8 +47064,8 @@
         },
         {
           "description": "A special single bucket aggregation that enables aggregating nested documents.",
-          "docId": "search-aggregations-bucket-nested-aggregation",
-          "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/search-aggregations-bucket-nested-aggregation.html",
+          "extDocId": "search-aggregations-bucket-nested-aggregation",
+          "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/search-aggregations-bucket-nested-aggregation.html",
           "name": "nested",
           "required": false,
           "type": {
@@ -46649,8 +47078,8 @@
         },
         {
           "description": "A parent pipeline aggregation which calculates the specific normalized/rescaled value for a specific bucket value.",
-          "docId": "search-aggregations-pipeline-normalize-aggregation",
-          "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/search-aggregations-pipeline-normalize-aggregation.html",
+          "extDocId": "search-aggregations-pipeline-normalize-aggregation",
+          "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/search-aggregations-pipeline-normalize-aggregation.html",
           "name": "normalize",
           "required": false,
           "type": {
@@ -46663,8 +47092,8 @@
         },
         {
           "description": "A special single bucket aggregation that selects parent documents that have the specified type, as defined in a `join` field.",
-          "docId": "search-aggregations-bucket-parent-aggregation",
-          "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/search-aggregations-bucket-parent-aggregation.html",
+          "extDocId": "search-aggregations-bucket-parent-aggregation",
+          "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/search-aggregations-bucket-parent-aggregation.html",
           "name": "parent",
           "required": false,
           "type": {
@@ -46677,8 +47106,8 @@
         },
         {
           "description": "A multi-value metrics aggregation that calculates one or more percentile ranks over numeric values extracted from the aggregated documents.",
-          "docId": "search-aggregations-metrics-percentile-rank-aggregation",
-          "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/search-aggregations-metrics-percentile-rank-aggregation.html",
+          "extDocId": "search-aggregations-metrics-percentile-rank-aggregation",
+          "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/search-aggregations-metrics-percentile-rank-aggregation.html",
           "name": "percentile_ranks",
           "required": false,
           "type": {
@@ -46691,8 +47120,8 @@
         },
         {
           "description": "A multi-value metrics aggregation that calculates one or more percentiles over numeric values extracted from the aggregated documents.",
-          "docId": "search-aggregations-metrics-percentile-aggregation",
-          "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/search-aggregations-metrics-percentile-aggregation.html",
+          "extDocId": "search-aggregations-metrics-percentile-aggregation",
+          "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/search-aggregations-metrics-percentile-aggregation.html",
           "name": "percentiles",
           "required": false,
           "type": {
@@ -46705,8 +47134,8 @@
         },
         {
           "description": "A sibling pipeline aggregation which calculates percentiles across all bucket of a specified metric in a sibling aggregation.",
-          "docId": "search-aggregations-pipeline-percentiles-bucket-aggregation",
-          "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/search-aggregations-pipeline-percentiles-bucket-aggregation.html",
+          "extDocId": "search-aggregations-pipeline-percentiles-bucket-aggregation",
+          "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/search-aggregations-pipeline-percentiles-bucket-aggregation.html",
           "name": "percentiles_bucket",
           "required": false,
           "type": {
@@ -46719,8 +47148,8 @@
         },
         {
           "description": "A multi-bucket value source based aggregation that enables the user to define a set of ranges - each representing a bucket.",
-          "docId": "search-aggregations-bucket-range-aggregation",
-          "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/search-aggregations-bucket-range-aggregation.html",
+          "extDocId": "search-aggregations-bucket-range-aggregation",
+          "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/search-aggregations-bucket-range-aggregation.html",
           "name": "range",
           "required": false,
           "type": {
@@ -46733,8 +47162,8 @@
         },
         {
           "description": "A multi-bucket value source based aggregation which finds \"rare\" terms — terms that are at the long-tail of the distribution and are not frequent.",
-          "docId": "search-aggregations-bucket-rare-terms-aggregation",
-          "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/search-aggregations-bucket-rare-terms-aggregation.html",
+          "extDocId": "search-aggregations-bucket-rare-terms-aggregation",
+          "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/search-aggregations-bucket-rare-terms-aggregation.html",
           "name": "rare_terms",
           "required": false,
           "type": {
@@ -46747,8 +47176,8 @@
         },
         {
           "description": "Calculates a rate of documents or a field in each bucket.\nCan only be used inside a `date_histogram` or `composite` aggregation.",
-          "docId": "search-aggregations-metrics-rate-aggregation",
-          "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/search-aggregations-metrics-rate-aggregation.html",
+          "extDocId": "search-aggregations-metrics-rate-aggregation",
+          "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/search-aggregations-metrics-rate-aggregation.html",
           "name": "rate",
           "required": false,
           "type": {
@@ -46761,8 +47190,8 @@
         },
         {
           "description": "A special single bucket aggregation that enables aggregating on parent documents from nested documents.\nShould only be defined inside a `nested` aggregation.",
-          "docId": "search-aggregations-bucket-reverse-nested-aggregation",
-          "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/search-aggregations-bucket-reverse-nested-aggregation.html",
+          "extDocId": "search-aggregations-bucket-reverse-nested-aggregation",
+          "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/search-aggregations-bucket-reverse-nested-aggregation.html",
           "name": "reverse_nested",
           "required": false,
           "type": {
@@ -46775,8 +47204,8 @@
         },
         {
           "description": "A filtering aggregation used to limit any sub aggregations' processing to a sample of the top-scoring documents.",
-          "docId": "search-aggregations-bucket-sampler-aggregation",
-          "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/search-aggregations-bucket-sampler-aggregation.html",
+          "extDocId": "search-aggregations-bucket-sampler-aggregation",
+          "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/search-aggregations-bucket-sampler-aggregation.html",
           "name": "sampler",
           "required": false,
           "type": {
@@ -46789,8 +47218,8 @@
         },
         {
           "description": "A metric aggregation that uses scripts to provide a metric output.",
-          "docId": "search-aggregations-metrics-scripted-metric-aggregation",
-          "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/search-aggregations-metrics-scripted-metric-aggregation.html",
+          "extDocId": "search-aggregations-metrics-scripted-metric-aggregation",
+          "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/search-aggregations-metrics-scripted-metric-aggregation.html",
           "name": "scripted_metric",
           "required": false,
           "type": {
@@ -46803,8 +47232,8 @@
         },
         {
           "description": "An aggregation that subtracts values in a time series from themselves at different time lags or periods.",
-          "docId": "search-aggregations-pipeline-serialdiff-aggregation",
-          "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/search-aggregations-pipeline-serialdiff-aggregation.html",
+          "extDocId": "search-aggregations-pipeline-serialdiff-aggregation",
+          "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/search-aggregations-pipeline-serialdiff-aggregation.html",
           "name": "serial_diff",
           "required": false,
           "type": {
@@ -46817,8 +47246,8 @@
         },
         {
           "description": "Returns interesting or unusual occurrences of terms in a set.",
-          "docId": "search-aggregations-bucket-significantterms-aggregation",
-          "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/search-aggregations-bucket-significantterms-aggregation.html",
+          "extDocId": "search-aggregations-bucket-significantterms-aggregation",
+          "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/search-aggregations-bucket-significantterms-aggregation.html",
           "name": "significant_terms",
           "required": false,
           "type": {
@@ -46831,8 +47260,8 @@
         },
         {
           "description": "Returns interesting or unusual occurrences of free-text terms in a set.",
-          "docId": "search-aggregations-bucket-significanttext-aggregation",
-          "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/search-aggregations-bucket-significanttext-aggregation.html",
+          "extDocId": "search-aggregations-bucket-significanttext-aggregation",
+          "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/search-aggregations-bucket-significanttext-aggregation.html",
           "name": "significant_text",
           "required": false,
           "type": {
@@ -46845,8 +47274,8 @@
         },
         {
           "description": "A multi-value metrics aggregation that computes stats over numeric values extracted from the aggregated documents.",
-          "docId": "search-aggregations-metrics-stats-aggregation",
-          "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/search-aggregations-metrics-stats-aggregation.html",
+          "extDocId": "search-aggregations-metrics-stats-aggregation",
+          "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/search-aggregations-metrics-stats-aggregation.html",
           "name": "stats",
           "required": false,
           "type": {
@@ -46859,8 +47288,8 @@
         },
         {
           "description": "A sibling pipeline aggregation which calculates a variety of stats across all bucket of a specified metric in a sibling aggregation.",
-          "docId": "search-aggregations-pipeline-stats-bucket-aggregation",
-          "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/search-aggregations-pipeline-stats-bucket-aggregation.html",
+          "extDocId": "search-aggregations-pipeline-stats-bucket-aggregation",
+          "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/search-aggregations-pipeline-stats-bucket-aggregation.html",
           "name": "stats_bucket",
           "required": false,
           "type": {
@@ -46873,8 +47302,8 @@
         },
         {
           "description": "A multi-value metrics aggregation that computes statistics over string values extracted from the aggregated documents.",
-          "docId": "search-aggregations-metrics-string-stats-aggregation",
-          "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/search-aggregations-metrics-string-stats-aggregation.html",
+          "extDocId": "search-aggregations-metrics-string-stats-aggregation",
+          "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/search-aggregations-metrics-string-stats-aggregation.html",
           "name": "string_stats",
           "required": false,
           "type": {
@@ -46887,8 +47316,8 @@
         },
         {
           "description": "A single-value metrics aggregation that sums numeric values that are extracted from the aggregated documents.",
-          "docId": "search-aggregations-metrics-sum-aggregation",
-          "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/search-aggregations-metrics-sum-aggregation.html",
+          "extDocId": "search-aggregations-metrics-sum-aggregation",
+          "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/search-aggregations-metrics-sum-aggregation.html",
           "name": "sum",
           "required": false,
           "type": {
@@ -46901,8 +47330,8 @@
         },
         {
           "description": "A sibling pipeline aggregation which calculates the sum of a specified metric across all buckets in a sibling aggregation.",
-          "docId": "search-aggregations-pipeline-sum-bucket-aggregation",
-          "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/search-aggregations-pipeline-sum-bucket-aggregation.html",
+          "extDocId": "search-aggregations-pipeline-sum-bucket-aggregation",
+          "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/search-aggregations-pipeline-sum-bucket-aggregation.html",
           "name": "sum_bucket",
           "required": false,
           "type": {
@@ -46915,8 +47344,8 @@
         },
         {
           "description": "A multi-bucket value source based aggregation where buckets are dynamically built - one per unique value.",
-          "docId": "search-aggregations-bucket-terms-aggregation",
-          "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/search-aggregations-bucket-terms-aggregation.html",
+          "extDocId": "search-aggregations-bucket-terms-aggregation",
+          "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/search-aggregations-bucket-terms-aggregation.html",
           "name": "terms",
           "required": false,
           "type": {
@@ -46937,8 +47366,8 @@
             }
           },
           "description": "The time series aggregation queries data created using a time series index.\nThis is typically data such as metrics or other data streams with a time component, and requires creating an index using the time series mode.",
-          "docId": "search-aggregations-bucket-time-series-aggregation",
-          "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/search-aggregations-bucket-time-series-aggregation.html",
+          "extDocId": "search-aggregations-bucket-time-series-aggregation",
+          "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/search-aggregations-bucket-time-series-aggregation.html",
           "name": "time_series",
           "required": false,
           "type": {
@@ -46951,8 +47380,8 @@
         },
         {
           "description": "A metric aggregation that returns the top matching documents per bucket.",
-          "docId": "search-aggregations-metrics-top-hits-aggregation",
-          "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/search-aggregations-metrics-top-hits-aggregation.html",
+          "extDocId": "search-aggregations-metrics-top-hits-aggregation",
+          "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/search-aggregations-metrics-top-hits-aggregation.html",
           "name": "top_hits",
           "required": false,
           "type": {
@@ -46965,8 +47394,8 @@
         },
         {
           "description": "A metrics aggregation that performs a statistical hypothesis test in which the test statistic follows a Student’s t-distribution under the null hypothesis on numeric values extracted from the aggregated documents.",
-          "docId": "search-aggregations-metrics-ttest-aggregation",
-          "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/search-aggregations-metrics-ttest-aggregation.html",
+          "extDocId": "search-aggregations-metrics-ttest-aggregation",
+          "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/search-aggregations-metrics-ttest-aggregation.html",
           "name": "t_test",
           "required": false,
           "type": {
@@ -46979,8 +47408,8 @@
         },
         {
           "description": "A metric aggregation that selects metrics from the document with the largest or smallest sort value.",
-          "docId": "search-aggregations-metrics-top-metrics",
-          "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/search-aggregations-metrics-top-metrics.html",
+          "extDocId": "search-aggregations-metrics-top-metrics",
+          "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/search-aggregations-metrics-top-metrics.html",
           "name": "top_metrics",
           "required": false,
           "type": {
@@ -46993,8 +47422,8 @@
         },
         {
           "description": "A single-value metrics aggregation that counts the number of values that are extracted from the aggregated documents.",
-          "docId": "search-aggregations-metrics-valuecount-aggregation",
-          "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/search-aggregations-metrics-valuecount-aggregation.html",
+          "extDocId": "search-aggregations-metrics-valuecount-aggregation",
+          "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/search-aggregations-metrics-valuecount-aggregation.html",
           "name": "value_count",
           "required": false,
           "type": {
@@ -47007,8 +47436,8 @@
         },
         {
           "description": "A single-value metrics aggregation that computes the weighted average of numeric values that are extracted from the aggregated documents.",
-          "docId": "search-aggregations-metrics-weight-avg-aggregation",
-          "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/search-aggregations-metrics-weight-avg-aggregation.html",
+          "extDocId": "search-aggregations-metrics-weight-avg-aggregation",
+          "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/search-aggregations-metrics-weight-avg-aggregation.html",
           "name": "weighted_avg",
           "required": false,
           "type": {
@@ -47021,8 +47450,8 @@
         },
         {
           "description": "A multi-bucket aggregation similar to the histogram, except instead of providing an interval to use as the width of each bucket, a target number of buckets is provided.",
-          "docId": "search-aggregations-bucket-variablewidthhistogram-aggregation",
-          "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/search-aggregations-bucket-variablewidthhistogram-aggregation.html",
+          "extDocId": "search-aggregations-bucket-variablewidthhistogram-aggregation",
+          "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/search-aggregations-bucket-variablewidthhistogram-aggregation.html",
           "name": "variable_width_histogram",
           "required": false,
           "type": {
@@ -47034,7 +47463,7 @@
           }
         }
       ],
-      "specLocation": "_types/aggregations/AggregationContainer.ts#L106-L523",
+      "specLocation": "_types/aggregations/AggregationContainer.ts#L107-L533",
       "variants": {
         "kind": "container",
         "nonExhaustive": true
@@ -47139,8 +47568,8 @@
       "specLocation": "_types/aggregations/Aggregation.ts#L20-L20"
     },
     {
-      "docId": "query-dsl",
-      "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/query-dsl.html",
+      "extDocId": "query-dsl",
+      "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/query-dsl.html",
       "kind": "interface",
       "name": {
         "name": "QueryContainer",
@@ -47149,8 +47578,8 @@
       "properties": [
         {
           "description": "matches documents matching boolean combinations of other queries.",
-          "docId": "query-dsl-bool-query",
-          "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/query-dsl-bool-query.html",
+          "extDocId": "query-dsl-bool-query",
+          "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/query-dsl-bool-query.html",
           "name": "bool",
           "required": false,
           "type": {
@@ -47163,8 +47592,8 @@
         },
         {
           "description": "Returns documents matching a `positive` query while reducing the relevance score of documents that also match a `negative` query.",
-          "docId": "query-dsl-boosting-query",
-          "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/query-dsl-boosting-query.html",
+          "extDocId": "query-dsl-boosting-query",
+          "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/query-dsl-boosting-query.html",
           "name": "boosting",
           "required": false,
           "type": {
@@ -47209,8 +47638,8 @@
             }
           },
           "description": "The `combined_fields` query supports searching multiple text fields as if their contents had been indexed into one combined field.",
-          "docId": "query-dsl-combined-fields-query",
-          "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/query-dsl-combined-fields-query.html",
+          "extDocId": "query-dsl-combined-fields-query",
+          "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/query-dsl-combined-fields-query.html",
           "name": "combined_fields",
           "required": false,
           "type": {
@@ -47223,8 +47652,8 @@
         },
         {
           "description": "Wraps a filter query and returns every matching document with a relevance score equal to the `boost` parameter value.",
-          "docId": "query-dsl-constant-score-query",
-          "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/query-dsl-constant-score-query.html",
+          "extDocId": "query-dsl-constant-score-query",
+          "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/query-dsl-constant-score-query.html",
           "name": "constant_score",
           "required": false,
           "type": {
@@ -47237,8 +47666,8 @@
         },
         {
           "description": "Returns documents matching one or more wrapped queries, called query clauses or clauses.\nIf a returned document matches multiple query clauses, the `dis_max` query assigns the document the highest relevance score from any matching clause, plus a tie breaking increment for any additional matching subqueries.",
-          "docId": "query-dsl-dis-max-query",
-          "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/query-dsl-dis-max-query.html",
+          "extDocId": "query-dsl-dis-max-query",
+          "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/query-dsl-dis-max-query.html",
           "name": "dis_max",
           "required": false,
           "type": {
@@ -47251,8 +47680,8 @@
         },
         {
           "description": "Boosts the relevance score of documents closer to a provided origin date or point.\nFor example, you can use this query to give more weight to documents closer to a certain date or location.",
-          "docId": "query-dsl-distance-feature-query",
-          "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/query-dsl-distance-feature-query.html",
+          "extDocId": "query-dsl-distance-feature-query",
+          "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/query-dsl-distance-feature-query.html",
           "name": "distance_feature",
           "required": false,
           "type": {
@@ -47265,8 +47694,8 @@
         },
         {
           "description": "Returns documents that contain an indexed value for a field.",
-          "docId": "query-dsl-exists-query",
-          "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/query-dsl-exists-query.html",
+          "extDocId": "query-dsl-exists-query",
+          "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/query-dsl-exists-query.html",
           "name": "exists",
           "required": false,
           "type": {
@@ -47279,8 +47708,8 @@
         },
         {
           "description": "The `function_score` enables you to modify the score of documents that are retrieved by a query.",
-          "docId": "query-dsl-function-score-query",
-          "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/query-dsl-function-score-query.html",
+          "extDocId": "query-dsl-function-score-query",
+          "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/query-dsl-function-score-query.html",
           "name": "function_score",
           "required": false,
           "type": {
@@ -47293,8 +47722,8 @@
         },
         {
           "description": "Returns documents that contain terms similar to the search term, as measured by a Levenshtein edit distance.",
-          "docId": "query-dsl-fuzzy-query",
-          "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/query-dsl-fuzzy-query.html",
+          "extDocId": "query-dsl-fuzzy-query",
+          "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/query-dsl-fuzzy-query.html",
           "name": "fuzzy",
           "required": false,
           "type": {
@@ -47318,8 +47747,8 @@
         },
         {
           "description": "Matches geo_point and geo_shape values that intersect a bounding box.",
-          "docId": "query-dsl-geo-bounding-box-query",
-          "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/query-dsl-geo-bounding-box-query.html",
+          "extDocId": "query-dsl-geo-bounding-box-query",
+          "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/query-dsl-geo-bounding-box-query.html",
           "name": "geo_bounding_box",
           "required": false,
           "type": {
@@ -47332,8 +47761,8 @@
         },
         {
           "description": "Matches `geo_point` and `geo_shape` values within a given distance of a geopoint.",
-          "docId": "query-dsl-geo-distance-query",
-          "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/query-dsl-geo-distance-query.html",
+          "extDocId": "query-dsl-geo-distance-query",
+          "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/query-dsl-geo-distance-query.html",
           "name": "geo_distance",
           "required": false,
           "type": {
@@ -47344,6 +47773,29 @@
             }
           }
         },
+        {
+          "description": "Matches `geo_point` and `geo_shape` values that intersect a grid cell from a GeoGrid aggregation.",
+          "name": "geo_grid",
+          "required": false,
+          "type": {
+            "key": {
+              "kind": "instance_of",
+              "type": {
+                "name": "Field",
+                "namespace": "_types"
+              }
+            },
+            "kind": "dictionary_of",
+            "singleKey": true,
+            "value": {
+              "kind": "instance_of",
+              "type": {
+                "name": "GeoGridQuery",
+                "namespace": "_types.query_dsl"
+              }
+            }
+          }
+        },
         {
           "deprecation": {
             "description": "Use geo-shape instead.",
@@ -47361,8 +47813,8 @@
         },
         {
           "description": "Filter documents indexed using either the `geo_shape` or the `geo_point` type.",
-          "docId": "query-dsl-geo-shape-query",
-          "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/query-dsl-geo-shape-query.html",
+          "extDocId": "query-dsl-geo-shape-query",
+          "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/query-dsl-geo-shape-query.html",
           "name": "geo_shape",
           "required": false,
           "type": {
@@ -47375,8 +47827,8 @@
         },
         {
           "description": "Returns parent documents whose joined child documents match a provided query.",
-          "docId": "query-dsl-has-child-query",
-          "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/query-dsl-has-child-query.html",
+          "extDocId": "query-dsl-has-child-query",
+          "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/query-dsl-has-child-query.html",
           "name": "has_child",
           "required": false,
           "type": {
@@ -47389,8 +47841,8 @@
         },
         {
           "description": "Returns child documents whose joined parent document matches a provided query.",
-          "docId": "query-dsl-has-parent-query",
-          "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/query-dsl-has-parent-query.html",
+          "extDocId": "query-dsl-has-parent-query",
+          "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/query-dsl-has-parent-query.html",
           "name": "has_parent",
           "required": false,
           "type": {
@@ -47403,8 +47855,8 @@
         },
         {
           "description": "Returns documents based on their IDs.\nThis query uses document IDs stored in the `_id` field.",
-          "docId": "query-dsl-ids-query",
-          "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/query-dsl-ids-query.html",
+          "extDocId": "query-dsl-ids-query",
+          "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/query-dsl-ids-query.html",
           "name": "ids",
           "required": false,
           "type": {
@@ -47417,8 +47869,8 @@
         },
         {
           "description": "Returns documents based on the order and proximity of matching terms.",
-          "docId": "query-dsl-intervals-query",
-          "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/query-dsl-intervals-query.html",
+          "extDocId": "query-dsl-intervals-query",
+          "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/query-dsl-intervals-query.html",
           "name": "intervals",
           "required": false,
           "type": {
@@ -47442,8 +47894,8 @@
         },
         {
           "description": "Finds the k nearest vectors to a query vector, as measured by a similarity\nmetric. knn query finds nearest vectors through approximate search on indexed\ndense_vectors.",
-          "docId": "query-dsl-knn-query",
-          "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/query-dsl-knn-query.html",
+          "extDocId": "query-dsl-knn-query",
+          "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/query-dsl-knn-query.html",
           "name": "knn",
           "required": false,
           "type": {
@@ -47456,8 +47908,8 @@
         },
         {
           "description": "Returns documents that match a provided text, number, date or boolean value.\nThe provided text is analyzed before matching.",
-          "docId": "query-dsl-match-query",
-          "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/query-dsl-match-query.html",
+          "extDocId": "query-dsl-match-query",
+          "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/query-dsl-match-query.html",
           "name": "match",
           "required": false,
           "type": {
@@ -47481,8 +47933,8 @@
         },
         {
           "description": "Matches all documents, giving them all a `_score` of 1.0.",
-          "docId": "query-dsl-match-all-query",
-          "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/query-dsl-match-all-query.html",
+          "extDocId": "query-dsl-match-all-query",
+          "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/query-dsl-match-all-query.html",
           "name": "match_all",
           "required": false,
           "type": {
@@ -47495,8 +47947,8 @@
         },
         {
           "description": "Analyzes its input and constructs a `bool` query from the terms.\nEach term except the last is used in a `term` query.\nThe last term is used in a prefix query.",
-          "docId": "query-dsl-match-bool-prefix-query",
-          "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/query-dsl-match-bool-prefix-query.html",
+          "extDocId": "query-dsl-match-bool-prefix-query",
+          "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/query-dsl-match-bool-prefix-query.html",
           "name": "match_bool_prefix",
           "required": false,
           "type": {
@@ -47520,8 +47972,8 @@
         },
         {
           "description": "Matches no documents.",
-          "docId": "query-dsl-match-none-query",
-          "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/query-dsl-match-all-query.html#query-dsl-match-none-query",
+          "extDocId": "query-dsl-match-none-query",
+          "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/query-dsl-match-all-query.html#query-dsl-match-none-query",
           "name": "match_none",
           "required": false,
           "type": {
@@ -47534,8 +47986,8 @@
         },
         {
           "description": "Analyzes the text and creates a phrase query out of the analyzed text.",
-          "docId": "query-dsl-match-query-phrase",
-          "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/query-dsl-match-query-phrase.html",
+          "extDocId": "query-dsl-match-query-phrase",
+          "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/query-dsl-match-query-phrase.html",
           "name": "match_phrase",
           "required": false,
           "type": {
@@ -47559,8 +48011,8 @@
         },
         {
           "description": "Returns documents that contain the words of a provided text, in the same order as provided.\nThe last term of the provided text is treated as a prefix, matching any words that begin with that term.",
-          "docId": "query-dsl-match-query-phrase-prefix",
-          "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/query-dsl-match-query-phrase-prefix.html",
+          "extDocId": "query-dsl-match-query-phrase-prefix",
+          "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/query-dsl-match-query-phrase-prefix.html",
           "name": "match_phrase_prefix",
           "required": false,
           "type": {
@@ -47584,8 +48036,8 @@
         },
         {
           "description": "Returns documents that are \"like\" a given set of documents.",
-          "docId": "query-dsl-mlt-query",
-          "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/query-dsl-mlt-query.html",
+          "extDocId": "query-dsl-mlt-query",
+          "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/query-dsl-mlt-query.html",
           "name": "more_like_this",
           "required": false,
           "type": {
@@ -47598,8 +48050,8 @@
         },
         {
           "description": "Enables you to search for a provided text, number, date or boolean value across multiple fields.\nThe provided text is analyzed before matching.",
-          "docId": "query-dsl-multi-match-query",
-          "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/query-dsl-multi-match-query.html",
+          "extDocId": "query-dsl-multi-match-query",
+          "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/query-dsl-multi-match-query.html",
           "name": "multi_match",
           "required": false,
           "type": {
@@ -47612,8 +48064,8 @@
         },
         {
           "description": "Wraps another query to search nested fields.\nIf an object matches the search, the nested query returns the root parent document.",
-          "docId": "query-dsl-nested-query",
-          "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/query-dsl-nested-query.html",
+          "extDocId": "query-dsl-nested-query",
+          "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/query-dsl-nested-query.html",
           "name": "nested",
           "required": false,
           "type": {
@@ -47626,8 +48078,8 @@
         },
         {
           "description": "Returns child documents joined to a specific parent document.",
-          "docId": "query-dsl-parent-id-query",
-          "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/query-dsl-parent-id-query.html",
+          "extDocId": "query-dsl-parent-id-query",
+          "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/query-dsl-parent-id-query.html",
           "name": "parent_id",
           "required": false,
           "type": {
@@ -47640,8 +48092,8 @@
         },
         {
           "description": "Matches queries stored in an index.",
-          "docId": "query-dsl-percolate-query",
-          "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/query-dsl-percolate-query.html",
+          "extDocId": "query-dsl-percolate-query",
+          "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/query-dsl-percolate-query.html",
           "name": "percolate",
           "required": false,
           "type": {
@@ -47654,8 +48106,8 @@
         },
         {
           "description": "Promotes selected documents to rank higher than those matching a given query.",
-          "docId": "query-dsl-pinned-query",
-          "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/query-dsl-pinned-query.html",
+          "extDocId": "query-dsl-pinned-query",
+          "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/query-dsl-pinned-query.html",
           "name": "pinned",
           "required": false,
           "type": {
@@ -47668,8 +48120,8 @@
         },
         {
           "description": "Returns documents that contain a specific prefix in a provided field.",
-          "docId": "query-dsl-prefix-query",
-          "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/query-dsl-prefix-query.html",
+          "extDocId": "query-dsl-prefix-query",
+          "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/query-dsl-prefix-query.html",
           "name": "prefix",
           "required": false,
           "type": {
@@ -47693,8 +48145,8 @@
         },
         {
           "description": "Returns documents based on a provided query string, using a parser with a strict syntax.",
-          "docId": "query-dsl-query-string-query",
-          "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/query-dsl-query-string-query.html",
+          "extDocId": "query-dsl-query-string-query",
+          "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/query-dsl-query-string-query.html",
           "name": "query_string",
           "required": false,
           "type": {
@@ -47707,8 +48159,8 @@
         },
         {
           "description": "Returns documents that contain terms within a provided range.",
-          "docId": "query-dsl-range-query",
-          "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/query-dsl-range-query.html",
+          "extDocId": "query-dsl-range-query",
+          "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/query-dsl-range-query.html",
           "name": "range",
           "required": false,
           "type": {
@@ -47732,8 +48184,8 @@
         },
         {
           "description": "Boosts the relevance score of documents based on the numeric value of a `rank_feature` or `rank_features` field.",
-          "docId": "query-dsl-rank-feature-query",
-          "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/query-dsl-rank-feature-query.html",
+          "extDocId": "query-dsl-rank-feature-query",
+          "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/query-dsl-rank-feature-query.html",
           "name": "rank_feature",
           "required": false,
           "type": {
@@ -47746,8 +48198,8 @@
         },
         {
           "description": "Returns documents that contain terms matching a regular expression.",
-          "docId": "query-dsl-regexp-query",
-          "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/query-dsl-regexp-query.html",
+          "extDocId": "query-dsl-regexp-query",
+          "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/query-dsl-regexp-query.html",
           "name": "regexp",
           "required": false,
           "type": {
@@ -47782,8 +48234,8 @@
         },
         {
           "description": "Filters documents based on a provided script.\nThe script query is typically used in a filter context.",
-          "docId": "query-dsl-script-query",
-          "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/query-dsl-script-query.html",
+          "extDocId": "query-dsl-script-query",
+          "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/query-dsl-script-query.html",
           "name": "script",
           "required": false,
           "type": {
@@ -47796,8 +48248,8 @@
         },
         {
           "description": "Uses a script to provide a custom score for returned documents.",
-          "docId": "query-dsl-script-score-query",
-          "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/query-dsl-script-score-query.html",
+          "extDocId": "query-dsl-script-score-query",
+          "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/query-dsl-script-score-query.html",
           "name": "script_score",
           "required": false,
           "type": {
@@ -47828,8 +48280,8 @@
         },
         {
           "description": "Queries documents that contain fields indexed using the `shape` type.",
-          "docId": "query-dsl-shape-query",
-          "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/query-dsl-shape-query.html",
+          "extDocId": "query-dsl-shape-query",
+          "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/query-dsl-shape-query.html",
           "name": "shape",
           "required": false,
           "type": {
@@ -47842,8 +48294,8 @@
         },
         {
           "description": "Returns documents based on a provided query string, using a parser with a limited but fault-tolerant syntax.",
-          "docId": "query-dsl-simple-query-string-query",
-          "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/query-dsl-simple-query-string-query.html",
+          "extDocId": "query-dsl-simple-query-string-query",
+          "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/query-dsl-simple-query-string-query.html",
           "name": "simple_query_string",
           "required": false,
           "type": {
@@ -47856,8 +48308,8 @@
         },
         {
           "description": "Returns matches which enclose another span query.",
-          "docId": "query-dsl-span-containing-query",
-          "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/query-dsl-span-containing-query.html",
+          "extDocId": "query-dsl-span-containing-query",
+          "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/query-dsl-span-containing-query.html",
           "name": "span_containing",
           "required": false,
           "type": {
@@ -47870,8 +48322,8 @@
         },
         {
           "description": "Wrapper to allow span queries to participate in composite single-field span queries by _lying_ about their search field.",
-          "docId": "query-dsl-span-field-masking-query",
-          "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/query-dsl-span-field-masking-query.html",
+          "extDocId": "query-dsl-span-field-masking-query",
+          "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/query-dsl-span-field-masking-query.html",
           "name": "span_field_masking",
           "required": false,
           "type": {
@@ -47884,8 +48336,8 @@
         },
         {
           "description": "Matches spans near the beginning of a field.",
-          "docId": "query-dsl-span-first-query",
-          "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/query-dsl-span-first-query.html",
+          "extDocId": "query-dsl-span-first-query",
+          "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/query-dsl-span-first-query.html",
           "name": "span_first",
           "required": false,
           "type": {
@@ -47898,8 +48350,8 @@
         },
         {
           "description": "Allows you to wrap a multi term query (one of `wildcard`, `fuzzy`, `prefix`, `range`, or `regexp` query) as a `span` query, so it can be nested.",
-          "docId": "query-dsl-span-multi-term-query",
-          "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/query-dsl-span-multi-term-query.html",
+          "extDocId": "query-dsl-span-multi-term-query",
+          "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/query-dsl-span-multi-term-query.html",
           "name": "span_multi",
           "required": false,
           "type": {
@@ -47912,8 +48364,8 @@
         },
         {
           "description": "Matches spans which are near one another.\nYou can specify `slop`, the maximum number of intervening unmatched positions, as well as whether matches are required to be in-order.",
-          "docId": "query-dsl-span-near-query",
-          "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/query-dsl-span-near-query.html",
+          "extDocId": "query-dsl-span-near-query",
+          "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/query-dsl-span-near-query.html",
           "name": "span_near",
           "required": false,
           "type": {
@@ -47926,8 +48378,8 @@
         },
         {
           "description": "Removes matches which overlap with another span query or which are within x tokens before (controlled by the parameter `pre`) or y tokens after (controlled by the parameter `post`) another span query.",
-          "docId": "query-dsl-span-not-query",
-          "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/query-dsl-span-not-query.html",
+          "extDocId": "query-dsl-span-not-query",
+          "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/query-dsl-span-not-query.html",
           "name": "span_not",
           "required": false,
           "type": {
@@ -47940,8 +48392,8 @@
         },
         {
           "description": "Matches the union of its span clauses.",
-          "docId": "query-dsl-span-or-query",
-          "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/query-dsl-span-or-query.html",
+          "extDocId": "query-dsl-span-or-query",
+          "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/query-dsl-span-or-query.html",
           "name": "span_or",
           "required": false,
           "type": {
@@ -47954,8 +48406,8 @@
         },
         {
           "description": "Matches spans containing a term.",
-          "docId": "query-dsl-span-term-query",
-          "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/query-dsl-span-term-query.html",
+          "extDocId": "query-dsl-span-term-query",
+          "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/query-dsl-span-term-query.html",
           "name": "span_term",
           "required": false,
           "type": {
@@ -47979,8 +48431,8 @@
         },
         {
           "description": "Returns matches which are enclosed inside another span query.",
-          "docId": "query-dsl-span-within-query",
-          "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/query-dsl-span-within-query.html",
+          "extDocId": "query-dsl-span-within-query",
+          "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/query-dsl-span-within-query.html",
           "name": "span_within",
           "required": false,
           "type": {
@@ -47999,7 +48451,8 @@
             }
           },
           "description": "Using input query vectors or a natural language processing model to convert a query into a list of token-weight pairs, queries against a sparse vector field.",
-          "docId": "query-dsl-sparse-vector-query",
+          "extDocId": "query-dsl-sparse-vector-query",
+          "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/query-dsl-sparse-vector-query.html",
           "name": "sparse_vector",
           "required": false,
           "type": {
@@ -48012,8 +48465,8 @@
         },
         {
           "description": "Returns documents that contain an exact term in a provided field.\nTo return a document, the query term must exactly match the queried field's value, including whitespace and capitalization.",
-          "docId": "query-dsl-term-query",
-          "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/query-dsl-term-query.html",
+          "extDocId": "query-dsl-term-query",
+          "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/query-dsl-term-query.html",
           "name": "term",
           "required": false,
           "type": {
@@ -48037,8 +48490,8 @@
         },
         {
           "description": "Returns documents that contain one or more exact terms in a provided field.\nTo return a document, one or more terms must exactly match a field value, including whitespace and capitalization.",
-          "docId": "query-dsl-terms-query",
-          "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/query-dsl-terms-query.html",
+          "extDocId": "query-dsl-terms-query",
+          "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/query-dsl-terms-query.html",
           "name": "terms",
           "required": false,
           "type": {
@@ -48051,8 +48504,8 @@
         },
         {
           "description": "Returns documents that contain a minimum number of exact terms in a provided field.\nTo return a document, a required number of terms must exactly match the field values, including whitespace and capitalization.",
-          "docId": "query-dsl-terms-set-query",
-          "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/query-dsl-terms-set-query.html",
+          "extDocId": "query-dsl-terms-set-query",
+          "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/query-dsl-terms-set-query.html",
           "name": "terms_set",
           "required": false,
           "type": {
@@ -48086,8 +48539,8 @@
             "version": "8.15.0"
           },
           "description": "Uses a natural language processing model to convert the query text into a list of token-weight pairs which are then used in a query against a sparse vector or rank features field.",
-          "docId": "query-dsl-text-expansion-query",
-          "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/query-dsl-text-expansion-query.html",
+          "extDocId": "query-dsl-text-expansion-query",
+          "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/query-dsl-text-expansion-query.html",
           "name": "text_expansion",
           "required": false,
           "type": {
@@ -48121,7 +48574,8 @@
             "version": "8.15.0"
           },
           "description": "Supports returning text_expansion query results by sending in precomputed tokens with the query.",
-          "docId": "query-dsl-weighted-tokens-query",
+          "extDocId": "query-dsl-weighted-tokens-query",
+          "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/query-dsl-weighted-tokens-query.html",
           "name": "weighted_tokens",
           "required": false,
           "type": {
@@ -48145,8 +48599,8 @@
         },
         {
           "description": "Returns documents that contain terms matching a wildcard pattern.",
-          "docId": "query-dsl-wildcard-query",
-          "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/query-dsl-wildcard-query.html",
+          "extDocId": "query-dsl-wildcard-query",
+          "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/query-dsl-wildcard-query.html",
           "name": "wildcard",
           "required": false,
           "type": {
@@ -48170,8 +48624,8 @@
         },
         {
           "description": "A query that accepts any other query as base64 encoded string.",
-          "docId": "query-dsl-wrapper-query",
-          "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/query-dsl-wrapper-query.html",
+          "extDocId": "query-dsl-wrapper-query",
+          "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/query-dsl-wrapper-query.html",
           "name": "wrapper",
           "required": false,
           "type": {
@@ -48198,13 +48652,15 @@
           }
         }
       ],
-      "specLocation": "_types/query_dsl/abstractions.ts#L102-L427",
+      "specLocation": "_types/query_dsl/abstractions.ts#L103-L433",
       "variants": {
         "kind": "container",
         "nonExhaustive": true
       }
     },
     {
+      "extDocId": "query-dsl-bool-query",
+      "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/query-dsl-bool-query.html",
       "inherits": {
         "type": {
           "name": "QueryBase",
@@ -48340,7 +48796,7 @@
           }
         }
       ],
-      "specLocation": "_types/query_dsl/compound.ts#L29-L53"
+      "specLocation": "_types/query_dsl/compound.ts#L29-L56"
     },
     {
       "kind": "interface",
@@ -48375,7 +48831,7 @@
           }
         }
       ],
-      "specLocation": "_types/query_dsl/abstractions.ts#L452-L463"
+      "specLocation": "_types/query_dsl/abstractions.ts#L458-L469"
     },
     {
       "kind": "type_alias",
@@ -48438,6 +48894,8 @@
       }
     },
     {
+      "extDocId": "query-dsl-boosting-query",
+      "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/query-dsl-boosting-query.html",
       "inherits": {
         "type": {
           "name": "QueryBase",
@@ -48487,7 +48945,7 @@
           }
         }
       ],
-      "specLocation": "_types/query_dsl/compound.ts#L55-L68"
+      "specLocation": "_types/query_dsl/compound.ts#L58-L74"
     },
     {
       "kind": "type_alias",
@@ -48693,8 +49151,8 @@
         },
         {
           "description": "Minimum number of clauses that must match for a document to be returned.",
-          "docId": "query-dsl-minimum-should-match",
-          "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/query-dsl-minimum-should-match.html",
+          "extDocId": "query-dsl-minimum-should-match",
+          "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/query-dsl-minimum-should-match.html",
           "name": "minimum_should_match",
           "required": false,
           "type": {
@@ -48719,7 +49177,7 @@
           }
         }
       ],
-      "specLocation": "_types/query_dsl/abstractions.ts#L465-L499"
+      "specLocation": "_types/query_dsl/abstractions.ts#L471-L505"
     },
     {
       "kind": "enum",
@@ -48735,7 +49193,7 @@
         "name": "CombinedFieldsOperator",
         "namespace": "_types.query_dsl"
       },
-      "specLocation": "_types/query_dsl/abstractions.ts#L509-L512"
+      "specLocation": "_types/query_dsl/abstractions.ts#L518-L521"
     },
     {
       "kind": "enum",
@@ -48753,9 +49211,11 @@
         "name": "CombinedFieldsZeroTerms",
         "namespace": "_types.query_dsl"
       },
-      "specLocation": "_types/query_dsl/abstractions.ts#L514-L523"
+      "specLocation": "_types/query_dsl/abstractions.ts#L523-L532"
     },
     {
+      "extDocId": "query-dsl-constant-score-query",
+      "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/query-dsl-constant-score-query.html",
       "inherits": {
         "type": {
           "name": "QueryBase",
@@ -48781,9 +49241,11 @@
           }
         }
       ],
-      "specLocation": "_types/query_dsl/compound.ts#L70-L77"
+      "specLocation": "_types/query_dsl/compound.ts#L76-L86"
     },
     {
+      "extDocId": "query-dsl-dis-max-query",
+      "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/query-dsl-dis-max-query.html",
       "inherits": {
         "type": {
           "name": "QueryBase",
@@ -48825,7 +49287,7 @@
           }
         }
       ],
-      "specLocation": "_types/query_dsl/compound.ts#L79-L91"
+      "specLocation": "_types/query_dsl/compound.ts#L88-L103"
     },
     {
       "codegenNames": [
@@ -48833,12 +49295,14 @@
         "geo",
         "date"
       ],
+      "extDocId": "query-dsl-distance-feature-query",
+      "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/query-dsl-distance-feature-query.html",
       "kind": "type_alias",
       "name": {
         "name": "DistanceFeatureQuery",
         "namespace": "_types.query_dsl"
       },
-      "specLocation": "_types/query_dsl/specialized.ts#L76-L84",
+      "specLocation": "_types/query_dsl/specialized.ts#L76-L85",
       "type": {
         "items": [
           {
@@ -49021,6 +49485,8 @@
       "specLocation": "_types/query_dsl/specialized.ts#L71-L74"
     },
     {
+      "extDocId": "query-dsl-exists-query",
+      "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/query-dsl-exists-query.html",
       "inherits": {
         "type": {
           "name": "QueryBase",
@@ -49046,9 +49512,11 @@
           }
         }
       ],
-      "specLocation": "_types/query_dsl/term.ts#L37-L42"
+      "specLocation": "_types/query_dsl/term.ts#L38-L46"
     },
     {
+      "extDocId": "query-dsl-function-score-query",
+      "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/query-dsl-function-score-query.html",
       "inherits": {
         "type": {
           "name": "QueryBase",
@@ -49140,7 +49608,7 @@
         }
       ],
       "shortcutProperty": "functions",
-      "specLocation": "_types/query_dsl/compound.ts#L93-L122"
+      "specLocation": "_types/query_dsl/compound.ts#L105-L135"
     },
     {
       "kind": "enum",
@@ -49174,7 +49642,7 @@
         "name": "FunctionBoostMode",
         "namespace": "_types.query_dsl"
       },
-      "specLocation": "_types/query_dsl/compound.ts#L282-L308"
+      "specLocation": "_types/query_dsl/compound.ts#L295-L321"
     },
     {
       "esQuirk": "this container is valid without a variant. Despite being documented as a function, 'weight'\nis actually a container property that can be combined with a function. Comment in the ES code\n(SearchModule#registerScoreFunctions) says: Weight doesn't have its own parser, so every function\nsupports it out of the box. Can be a single function too when not associated to any other function,\nwhich is why it needs to be registered manually here.",
@@ -49281,7 +49749,7 @@
           }
         }
       ],
-      "specLocation": "_types/query_dsl/compound.ts#L213-L253",
+      "specLocation": "_types/query_dsl/compound.ts#L226-L266",
       "variants": {
         "kind": "container"
       }
@@ -49298,7 +49766,7 @@
         "name": "DecayFunction",
         "namespace": "_types.query_dsl"
       },
-      "specLocation": "_types/query_dsl/compound.ts#L202-L211",
+      "specLocation": "_types/query_dsl/compound.ts#L215-L224",
       "type": {
         "items": [
           {
@@ -49364,7 +49832,7 @@
         "namespace": "_types.query_dsl"
       },
       "properties": [],
-      "specLocation": "_types/query_dsl/compound.ts#L191-L194"
+      "specLocation": "_types/query_dsl/compound.ts#L204-L207"
     },
     {
       "attachedBehaviors": [
@@ -49444,7 +49912,7 @@
           }
         }
       ],
-      "specLocation": "_types/query_dsl/compound.ts#L178-L189"
+      "specLocation": "_types/query_dsl/compound.ts#L191-L202"
     },
     {
       "description": "In some places in the specification an object consists of a static set of properties and a single additional property\nwith an arbitrary name but a statically defined type. This is typically used for configurations associated\nto a single field. Meaning that object should theoretically extend SingleKeyDictionary but expose\na set of known keys. And possibly the object might already be part of an object graph and have a parent class.\nThis puts it into a bind that needs a client specific solution.\nWe therefore document the requirement to accept a single unknown property with this interface.",
@@ -49534,7 +50002,7 @@
           }
         }
       ],
-      "specLocation": "_types/query_dsl/compound.ts#L157-L176"
+      "specLocation": "_types/query_dsl/compound.ts#L170-L189"
     },
     {
       "kind": "enum",
@@ -49560,7 +50028,7 @@
         "name": "MultiValueMode",
         "namespace": "_types.query_dsl"
       },
-      "specLocation": "_types/query_dsl/compound.ts#L355-L372"
+      "specLocation": "_types/query_dsl/compound.ts#L368-L385"
     },
     {
       "attachedBehaviors": [
@@ -49594,7 +50062,7 @@
         "namespace": "_types.query_dsl"
       },
       "properties": [],
-      "specLocation": "_types/query_dsl/compound.ts#L196-L196"
+      "specLocation": "_types/query_dsl/compound.ts#L209-L209"
     },
     {
       "attachedBehaviors": [
@@ -49628,7 +50096,7 @@
         "namespace": "_types.query_dsl"
       },
       "properties": [],
-      "specLocation": "_types/query_dsl/compound.ts#L195-L195"
+      "specLocation": "_types/query_dsl/compound.ts#L208-L208"
     },
     {
       "attachedBehaviors": [
@@ -49662,7 +50130,7 @@
         "namespace": "_types.query_dsl"
       },
       "properties": [],
-      "specLocation": "_types/query_dsl/compound.ts#L197-L200"
+      "specLocation": "_types/query_dsl/compound.ts#L210-L213"
     },
     {
       "kind": "interface",
@@ -49721,7 +50189,7 @@
           }
         }
       ],
-      "specLocation": "_types/query_dsl/compound.ts#L136-L155"
+      "specLocation": "_types/query_dsl/compound.ts#L149-L168"
     },
     {
       "kind": "enum",
@@ -49771,7 +50239,7 @@
         "name": "FieldValueFactorModifier",
         "namespace": "_types.query_dsl"
       },
-      "specLocation": "_types/query_dsl/compound.ts#L310-L353"
+      "specLocation": "_types/query_dsl/compound.ts#L323-L366"
     },
     {
       "kind": "interface",
@@ -49815,7 +50283,7 @@
           }
         }
       ],
-      "specLocation": "_types/query_dsl/compound.ts#L131-L134"
+      "specLocation": "_types/query_dsl/compound.ts#L144-L147"
     },
     {
       "kind": "interface",
@@ -49837,7 +50305,7 @@
           }
         }
       ],
-      "specLocation": "_types/query_dsl/compound.ts#L124-L129"
+      "specLocation": "_types/query_dsl/compound.ts#L137-L142"
     },
     {
       "kind": "interface",
@@ -49987,9 +50455,11 @@
         "name": "FunctionScoreMode",
         "namespace": "_types.query_dsl"
       },
-      "specLocation": "_types/query_dsl/compound.ts#L255-L280"
+      "specLocation": "_types/query_dsl/compound.ts#L268-L293"
     },
     {
+      "extDocId": "query-dsl-fuzzy-query",
+      "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/query-dsl-fuzzy-query.html",
       "inherits": {
         "type": {
           "name": "QueryBase",
@@ -50103,7 +50573,7 @@
         }
       ],
       "shortcutProperty": "value",
-      "specLocation": "_types/query_dsl/term.ts#L44-L79"
+      "specLocation": "_types/query_dsl/term.ts#L48-L86"
     },
     {
       "docId": "query-dsl-multi-term-rewrite",
@@ -50183,6 +50653,8 @@
           }
         }
       ],
+      "extDocId": "query-dsl-geo-bounding-box-query",
+      "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/query-dsl-geo-bounding-box-query.html",
       "inherits": {
         "type": {
           "name": "QueryBase",
@@ -50237,7 +50709,7 @@
           }
         }
       ],
-      "specLocation": "_types/query_dsl/geo.ts#L32-L53"
+      "specLocation": "_types/query_dsl/geo.ts#L35-L57"
     },
     {
       "codegenNames": [
@@ -50561,7 +51033,7 @@
         "name": "GeoExecution",
         "namespace": "_types.query_dsl"
       },
-      "specLocation": "_types/query_dsl/geo.ts#L55-L58"
+      "specLocation": "_types/query_dsl/geo.ts#L59-L62"
     },
     {
       "kind": "enum",
@@ -50582,7 +51054,7 @@
         "name": "GeoValidationMethod",
         "namespace": "_types.query_dsl"
       },
-      "specLocation": "_types/query_dsl/geo.ts#L159-L169"
+      "specLocation": "_types/query_dsl/geo.ts#L173-L183"
     },
     {
       "attachedBehaviors": [
@@ -50616,6 +51088,8 @@
           }
         }
       ],
+      "extDocId": "query-dsl-geo-distance-query",
+      "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/query-dsl-geo-distance-query.html",
       "inherits": {
         "type": {
           "name": "QueryBase",
@@ -50682,7 +51156,7 @@
           }
         }
       ],
-      "specLocation": "_types/query_dsl/geo.ts#L60-L91"
+      "specLocation": "_types/query_dsl/geo.ts#L64-L96"
     },
     {
       "kind": "type_alias",
@@ -50717,6 +51191,90 @@
       },
       "specLocation": "_types/Geo.ts#L42-L51"
     },
+    {
+      "inherits": {
+        "type": {
+          "name": "QueryBase",
+          "namespace": "_types.query_dsl"
+        }
+      },
+      "kind": "interface",
+      "name": {
+        "name": "GeoGridQuery",
+        "namespace": "_types.query_dsl"
+      },
+      "properties": [
+        {
+          "name": "geogrid",
+          "required": false,
+          "type": {
+            "kind": "instance_of",
+            "type": {
+              "name": "GeoTile",
+              "namespace": "_types"
+            }
+          }
+        },
+        {
+          "name": "geohash",
+          "required": false,
+          "type": {
+            "kind": "instance_of",
+            "type": {
+              "name": "GeoHash",
+              "namespace": "_types"
+            }
+          }
+        },
+        {
+          "name": "geohex",
+          "required": false,
+          "type": {
+            "kind": "instance_of",
+            "type": {
+              "name": "GeoHexCell",
+              "namespace": "_types"
+            }
+          }
+        }
+      ],
+      "specLocation": "_types/query_dsl/geo.ts#L98-L103",
+      "variants": {
+        "kind": "container"
+      }
+    },
+    {
+      "description": "A map tile reference, represented as `{zoom}/{x}/{y}`",
+      "kind": "type_alias",
+      "name": {
+        "name": "GeoTile",
+        "namespace": "_types"
+      },
+      "specLocation": "_types/Geo.ts#L93-L94",
+      "type": {
+        "kind": "instance_of",
+        "type": {
+          "name": "string",
+          "namespace": "_builtins"
+        }
+      }
+    },
+    {
+      "description": "A map hex cell (H3) reference",
+      "kind": "type_alias",
+      "name": {
+        "name": "GeoHexCell",
+        "namespace": "_types"
+      },
+      "specLocation": "_types/Geo.ts#L96-L97",
+      "type": {
+        "kind": "instance_of",
+        "type": {
+          "name": "string",
+          "namespace": "_builtins"
+        }
+      }
+    },
     {
       "attachedBehaviors": [
         "AdditionalProperty"
@@ -50753,6 +51311,8 @@
         "description": "Use geo-shape instead.",
         "version": "7.12.0"
       },
+      "extDocId": "query-dsl-geo-polygon-query",
+      "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/query-dsl-geo-polygon-query.html",
       "inherits": {
         "type": {
           "name": "QueryBase",
@@ -50789,7 +51349,7 @@
           }
         }
       ],
-      "specLocation": "_types/query_dsl/geo.ts#L97-L108"
+      "specLocation": "_types/query_dsl/geo.ts#L109-L121"
     },
     {
       "kind": "interface",
@@ -50813,7 +51373,7 @@
           }
         }
       ],
-      "specLocation": "_types/query_dsl/geo.ts#L93-L95"
+      "specLocation": "_types/query_dsl/geo.ts#L105-L107"
     },
     {
       "attachedBehaviors": [
@@ -50847,6 +51407,8 @@
           }
         }
       ],
+      "extDocId": "query-dsl-geo-shape-query",
+      "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/query-dsl-geo-shape-query.html",
       "inherits": {
         "type": {
           "name": "QueryBase",
@@ -50873,7 +51435,7 @@
           }
         }
       ],
-      "specLocation": "_types/query_dsl/geo.ts#L128-L143"
+      "specLocation": "_types/query_dsl/geo.ts#L141-L157"
     },
     {
       "kind": "interface",
@@ -50919,7 +51481,7 @@
           }
         }
       ],
-      "specLocation": "_types/query_dsl/geo.ts#L115-L126"
+      "specLocation": "_types/query_dsl/geo.ts#L128-L139"
     },
     {
       "description": "A GeoJson shape, that can also use Elasticsearch's `envelope` extension.",
@@ -50989,7 +51551,7 @@
           }
         }
       ],
-      "specLocation": "_types/query_dsl/abstractions.ts#L429-L446"
+      "specLocation": "_types/query_dsl/abstractions.ts#L435-L452"
     },
     {
       "kind": "enum",
@@ -51018,6 +51580,8 @@
       "specLocation": "_types/Geo.ts#L64-L82"
     },
     {
+      "extDocId": "query-dsl-has-child-query",
+      "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/query-dsl-has-child-query.html",
       "inherits": {
         "type": {
           "name": "QueryBase",
@@ -51119,7 +51683,7 @@
           }
         }
       ],
-      "specLocation": "_types/query_dsl/joining.ts#L41-L76"
+      "specLocation": "_types/query_dsl/joining.ts#L41-L79"
     },
     {
       "kind": "interface",
@@ -51326,7 +51890,7 @@
           }
         }
       ],
-      "specLocation": "_global/search/_types/hits.ts#L107-L141"
+      "specLocation": "_global/search/_types/hits.ts#L108-L142"
     },
     {
       "kind": "type_alias",
@@ -51344,6 +51908,8 @@
       }
     },
     {
+      "extDocId": "collapse-search-results",
+      "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/collapse-search-results.html",
       "kind": "interface",
       "name": {
         "name": "FieldCollapse",
@@ -51413,7 +51979,7 @@
           }
         }
       ],
-      "specLocation": "_global/search/_types/FieldCollapse.ts#L24-L38"
+      "specLocation": "_global/search/_types/FieldCollapse.ts#L24-L41"
     },
     {
       "description": "A reference to a field with formatting instructions on how to return the value",
@@ -51460,7 +52026,7 @@
         }
       ],
       "shortcutProperty": "field",
-      "specLocation": "_types/query_dsl/abstractions.ts#L525-L539"
+      "specLocation": "_types/query_dsl/abstractions.ts#L534-L548"
     },
     {
       "inherits": {
@@ -52244,7 +52810,7 @@
         "name": "Missing",
         "namespace": "_types.aggregations"
       },
-      "specLocation": "_types/aggregations/AggregationContainer.ts#L525-L525",
+      "specLocation": "_types/aggregations/AggregationContainer.ts#L535-L535",
       "type": {
         "items": [
           {
@@ -52931,6 +53497,8 @@
       }
     },
     {
+      "extDocId": "query-dsl-has-parent-query",
+      "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/query-dsl-has-parent-query.html",
       "inherits": {
         "type": {
           "name": "QueryBase",
@@ -53008,9 +53576,11 @@
           }
         }
       ],
-      "specLocation": "_types/query_dsl/joining.ts#L78-L104"
+      "specLocation": "_types/query_dsl/joining.ts#L81-L110"
     },
     {
+      "extDocId": "query-dsl-ids-query",
+      "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/query-dsl-ids-query.html",
       "inherits": {
         "type": {
           "name": "QueryBase",
@@ -53036,7 +53606,7 @@
           }
         }
       ],
-      "specLocation": "_types/query_dsl/term.ts#L81-L86"
+      "specLocation": "_types/query_dsl/term.ts#L88-L96"
     },
     {
       "kind": "type_alias",
@@ -53069,6 +53639,8 @@
       }
     },
     {
+      "extDocId": "query-dsl-intervals-query",
+      "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/query-dsl-intervals-query.html",
       "inherits": {
         "type": {
           "name": "QueryBase",
@@ -53156,7 +53728,7 @@
           }
         }
       ],
-      "specLocation": "_types/query_dsl/fulltext.ts#L235-L263",
+      "specLocation": "_types/query_dsl/fulltext.ts#L235-L266",
       "variants": {
         "kind": "container"
       }
@@ -53732,9 +54304,11 @@
           }
         }
       ],
-      "specLocation": "_types/query_dsl/fulltext.ts#L265-L280"
+      "specLocation": "_types/query_dsl/fulltext.ts#L268-L283"
     },
     {
+      "extDocId": "query-dsl-knn-query",
+      "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/query-dsl-knn-query.html",
       "inherits": {
         "type": {
           "name": "QueryBase",
@@ -53847,7 +54421,7 @@
           }
         }
       ],
-      "specLocation": "_types/Knn.ts#L54-L69"
+      "specLocation": "_types/Knn.ts#L54-L72"
     },
     {
       "kind": "type_alias",
@@ -53886,7 +54460,7 @@
           }
         }
       ],
-      "specLocation": "_types/Knn.ts#L71-L74",
+      "specLocation": "_types/Knn.ts#L74-L77",
       "variants": {
         "kind": "container"
       }
@@ -53921,9 +54495,11 @@
           }
         }
       ],
-      "specLocation": "_types/Knn.ts#L76-L79"
+      "specLocation": "_types/Knn.ts#L79-L82"
     },
     {
+      "extDocId": "query-dsl-match-query",
+      "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/query-dsl-match-query.html",
       "inherits": {
         "type": {
           "name": "QueryBase",
@@ -54131,7 +54707,7 @@
         }
       ],
       "shortcutProperty": "query",
-      "specLocation": "_types/query_dsl/fulltext.ts#L282-L347"
+      "specLocation": "_types/query_dsl/fulltext.ts#L285-L353"
     },
     {
       "kind": "enum",
@@ -54149,9 +54725,11 @@
         "name": "ZeroTermsQuery",
         "namespace": "_types.query_dsl"
       },
-      "specLocation": "_types/query_dsl/fulltext.ts#L569-L578"
+      "specLocation": "_types/query_dsl/fulltext.ts#L587-L596"
     },
     {
+      "extDocId": "query-dsl-match-all-query",
+      "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/query-dsl-match-all-query.html",
       "inherits": {
         "type": {
           "name": "QueryBase",
@@ -54164,9 +54742,11 @@
         "namespace": "_types.query_dsl"
       },
       "properties": [],
-      "specLocation": "_types/query_dsl/MatchAllQuery.ts#L22-L22"
+      "specLocation": "_types/query_dsl/MatchAllQuery.ts#L22-L25"
     },
     {
+      "extDocId": "query-dsl-match-bool-prefix-query",
+      "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/query-dsl-match-bool-prefix-query.html",
       "inherits": {
         "type": {
           "name": "QueryBase",
@@ -54301,9 +54881,11 @@
         }
       ],
       "shortcutProperty": "query",
-      "specLocation": "_types/query_dsl/fulltext.ts#L349-L403"
+      "specLocation": "_types/query_dsl/fulltext.ts#L355-L412"
     },
     {
+      "extDocId": "query-dsl-match-none-query",
+      "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/query-dsl-match-all-query.html#query-dsl-match-none-query",
       "inherits": {
         "type": {
           "name": "QueryBase",
@@ -54316,9 +54898,11 @@
         "namespace": "_types.query_dsl"
       },
       "properties": [],
-      "specLocation": "_types/query_dsl/MatchNoneQuery.ts#L22-L22"
+      "specLocation": "_types/query_dsl/MatchNoneQuery.ts#L22-L25"
     },
     {
+      "extDocId": "query-dsl-match-query-phrase",
+      "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/query-dsl-match-query-phrase.html",
       "inherits": {
         "type": {
           "name": "QueryBase",
@@ -54385,9 +54969,11 @@
         }
       ],
       "shortcutProperty": "query",
-      "specLocation": "_types/query_dsl/fulltext.ts#L405-L426"
+      "specLocation": "_types/query_dsl/fulltext.ts#L414-L438"
     },
     {
+      "extDocId": "query-dsl-match-query-phrase-prefix",
+      "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/query-dsl-match-query-phrase-prefix.html",
       "inherits": {
         "type": {
           "name": "QueryBase",
@@ -54467,9 +55053,11 @@
         }
       ],
       "shortcutProperty": "query",
-      "specLocation": "_types/query_dsl/fulltext.ts#L428-L454"
+      "specLocation": "_types/query_dsl/fulltext.ts#L440-L469"
     },
     {
+      "extDocId": "query-dsl-mlt-query",
+      "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/query-dsl-mlt-query.html",
       "inherits": {
         "type": {
           "name": "QueryBase",
@@ -54484,8 +55072,8 @@
       "properties": [
         {
           "description": "The analyzer that is used to analyze the free form text.\nDefaults to the analyzer associated with the first field in fields.",
-          "docId": "analysis",
-          "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/analysis.html",
+          "extDocId": "analysis",
+          "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/analysis.html",
           "name": "analyzer",
           "required": false,
           "type": {
@@ -54742,7 +55330,7 @@
           }
         }
       ],
-      "specLocation": "_types/query_dsl/specialized.ts#L86-L168"
+      "specLocation": "_types/query_dsl/specialized.ts#L87-L172"
     },
     {
       "codegenNames": [
@@ -54757,7 +55345,7 @@
         "name": "Like",
         "namespace": "_types.query_dsl"
       },
-      "specLocation": "_types/query_dsl/specialized.ts#L194-L199",
+      "specLocation": "_types/query_dsl/specialized.ts#L198-L203",
       "type": {
         "items": [
           {
@@ -54889,7 +55477,7 @@
           }
         }
       ],
-      "specLocation": "_types/query_dsl/specialized.ts#L170-L192"
+      "specLocation": "_types/query_dsl/specialized.ts#L174-L196"
     },
     {
       "kind": "enum",
@@ -54948,6 +55536,8 @@
       }
     },
     {
+      "extDocId": "query-dsl-multi-match-query",
+      "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/query-dsl-multi-match-query.html",
       "inherits": {
         "type": {
           "name": "QueryBase",
@@ -55186,7 +55776,7 @@
           }
         }
       ],
-      "specLocation": "_types/query_dsl/fulltext.ts#L456-L539"
+      "specLocation": "_types/query_dsl/fulltext.ts#L471-L557"
     },
     {
       "kind": "enum",
@@ -55220,9 +55810,11 @@
         "name": "TextQueryType",
         "namespace": "_types.query_dsl"
       },
-      "specLocation": "_types/query_dsl/fulltext.ts#L541-L567"
+      "specLocation": "_types/query_dsl/fulltext.ts#L559-L585"
     },
     {
+      "extDocId": "query-dsl-nested-query",
+      "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/query-dsl-nested-query.html",
       "inherits": {
         "type": {
           "name": "QueryBase",
@@ -55300,9 +55892,11 @@
           }
         }
       ],
-      "specLocation": "_types/query_dsl/joining.ts#L106-L130"
+      "specLocation": "_types/query_dsl/joining.ts#L112-L139"
     },
     {
+      "extDocId": "query-dsl-parent-id-query",
+      "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/query-dsl-parent-id-query.html",
       "inherits": {
         "type": {
           "name": "QueryBase",
@@ -55353,9 +55947,11 @@
           }
         }
       ],
-      "specLocation": "_types/query_dsl/joining.ts#L132-L146"
+      "specLocation": "_types/query_dsl/joining.ts#L141-L158"
     },
     {
+      "extDocId": "query-dsl-percolate-query",
+      "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/query-dsl-percolate-query.html",
       "inherits": {
         "type": {
           "name": "QueryBase",
@@ -55472,9 +56068,11 @@
           }
         }
       ],
-      "specLocation": "_types/query_dsl/specialized.ts#L201-L238"
+      "specLocation": "_types/query_dsl/specialized.ts#L205-L245"
     },
     {
+      "extDocId": "query-dsl-pinned-query",
+      "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/query-dsl-pinned-query.html",
       "inherits": {
         "type": {
           "name": "QueryBase",
@@ -55531,7 +56129,7 @@
           }
         }
       ],
-      "specLocation": "_types/query_dsl/specialized.ts#L240-L259",
+      "specLocation": "_types/query_dsl/specialized.ts#L247-L267",
       "variants": {
         "kind": "container"
       }
@@ -55568,9 +56166,11 @@
           }
         }
       ],
-      "specLocation": "_types/query_dsl/specialized.ts#L261-L270"
+      "specLocation": "_types/query_dsl/specialized.ts#L269-L278"
     },
     {
+      "extDocId": "query-dsl-prefix-query",
+      "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/query-dsl-prefix-query.html",
       "inherits": {
         "type": {
           "name": "QueryBase",
@@ -55630,9 +56230,11 @@
         }
       ],
       "shortcutProperty": "value",
-      "specLocation": "_types/query_dsl/term.ts#L88-L107"
+      "specLocation": "_types/query_dsl/term.ts#L98-L120"
     },
     {
+      "extDocId": "query-dsl-query-string-query",
+      "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/query-dsl-query-string-query.html",
       "inherits": {
         "type": {
           "name": "QueryBase",
@@ -55971,7 +56573,7 @@
           }
         }
       ],
-      "specLocation": "_types/query_dsl/fulltext.ts#L580-L700"
+      "specLocation": "_types/query_dsl/fulltext.ts#L598-L721"
     },
     {
       "kind": "type_alias",
@@ -55995,12 +56597,14 @@
         "number",
         "term"
       ],
+      "extDocId": "query-dsl-range-query",
+      "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/query-dsl-range-query.html",
       "kind": "type_alias",
       "name": {
         "name": "RangeQuery",
         "namespace": "_types.query_dsl"
       },
-      "specLocation": "_types/query_dsl/term.ts#L161-L170",
+      "specLocation": "_types/query_dsl/term.ts#L176-L186",
       "type": {
         "items": [
           {
@@ -56085,7 +56689,7 @@
           }
         }
       ],
-      "specLocation": "_types/query_dsl/term.ts#L135-L144"
+      "specLocation": "_types/query_dsl/term.ts#L150-L159"
     },
     {
       "generics": [
@@ -56168,6 +56772,10 @@
           }
         },
         {
+          "deprecation": {
+            "description": "Use gte or gt instead",
+            "version": "8.16.0"
+          },
           "name": "from",
           "required": false,
           "type": {
@@ -56191,6 +56799,10 @@
           }
         },
         {
+          "deprecation": {
+            "description": "Use lte or lt instead",
+            "version": "8.16.0"
+          },
           "name": "to",
           "required": false,
           "type": {
@@ -56214,7 +56826,7 @@
           }
         }
       ],
-      "specLocation": "_types/query_dsl/term.ts#L109-L133"
+      "specLocation": "_types/query_dsl/term.ts#L122-L148"
     },
     {
       "kind": "enum",
@@ -56236,7 +56848,7 @@
         "name": "RangeRelation",
         "namespace": "_types.query_dsl"
       },
-      "specLocation": "_types/query_dsl/term.ts#L172-L185"
+      "specLocation": "_types/query_dsl/term.ts#L188-L201"
     },
     {
       "docId": "mapping-date-format",
@@ -56302,7 +56914,7 @@
           }
         }
       ],
-      "specLocation": "_types/query_dsl/term.ts#L146-L155"
+      "specLocation": "_types/query_dsl/term.ts#L161-L170"
     },
     {
       "inherits": {
@@ -56326,7 +56938,7 @@
         "namespace": "_types.query_dsl"
       },
       "properties": [],
-      "specLocation": "_types/query_dsl/term.ts#L157-L157"
+      "specLocation": "_types/query_dsl/term.ts#L172-L172"
     },
     {
       "inherits": {
@@ -56350,9 +56962,11 @@
         "namespace": "_types.query_dsl"
       },
       "properties": [],
-      "specLocation": "_types/query_dsl/term.ts#L159-L159"
+      "specLocation": "_types/query_dsl/term.ts#L174-L174"
     },
     {
+      "extDocId": "query-dsl-rank-feature-query",
+      "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/query-dsl-rank-feature-query.html",
       "inherits": {
         "type": {
           "name": "QueryBase",
@@ -56426,7 +57040,7 @@
           }
         }
       ],
-      "specLocation": "_types/query_dsl/specialized.ts#L301-L324"
+      "specLocation": "_types/query_dsl/specialized.ts#L309-L335"
     },
     {
       "inherits": {
@@ -56454,7 +57068,7 @@
           }
         }
       ],
-      "specLocation": "_types/query_dsl/specialized.ts#L283-L288"
+      "specLocation": "_types/query_dsl/specialized.ts#L291-L296"
     },
     {
       "kind": "interface",
@@ -56463,7 +57077,7 @@
         "namespace": "_types.query_dsl"
       },
       "properties": [],
-      "specLocation": "_types/query_dsl/specialized.ts#L272-L272"
+      "specLocation": "_types/query_dsl/specialized.ts#L280-L280"
     },
     {
       "inherits": {
@@ -56491,7 +57105,7 @@
           }
         }
       ],
-      "specLocation": "_types/query_dsl/specialized.ts#L276-L281"
+      "specLocation": "_types/query_dsl/specialized.ts#L284-L289"
     },
     {
       "inherits": {
@@ -56506,7 +57120,7 @@
         "namespace": "_types.query_dsl"
       },
       "properties": [],
-      "specLocation": "_types/query_dsl/specialized.ts#L274-L274"
+      "specLocation": "_types/query_dsl/specialized.ts#L282-L282"
     },
     {
       "inherits": {
@@ -56546,9 +57160,11 @@
           }
         }
       ],
-      "specLocation": "_types/query_dsl/specialized.ts#L290-L299"
+      "specLocation": "_types/query_dsl/specialized.ts#L298-L307"
     },
     {
+      "extDocId": "query-dsl-regexp-query",
+      "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/query-dsl-regexp-query.html",
       "inherits": {
         "type": {
           "name": "QueryBase",
@@ -56637,9 +57253,11 @@
         }
       ],
       "shortcutProperty": "value",
-      "specLocation": "_types/query_dsl/term.ts#L187-L217"
+      "specLocation": "_types/query_dsl/term.ts#L203-L236"
     },
     {
+      "extDocId": "query-dsl-rule-query",
+      "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/query-dsl-rule-query.html",
       "inherits": {
         "type": {
           "name": "QueryBase",
@@ -56685,9 +57303,11 @@
           }
         }
       ],
-      "specLocation": "_types/query_dsl/specialized.ts#L380-L384"
+      "specLocation": "_types/query_dsl/specialized.ts#L398-L405"
     },
     {
+      "extDocId": "query-dsl-script-query",
+      "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/query-dsl-script-query.html",
       "inherits": {
         "type": {
           "name": "QueryBase",
@@ -56713,9 +57333,11 @@
           }
         }
       ],
-      "specLocation": "_types/query_dsl/specialized.ts#L326-L332"
+      "specLocation": "_types/query_dsl/specialized.ts#L337-L346"
     },
     {
+      "extDocId": "query-dsl-script-score-query",
+      "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/query-dsl-script-score-query.html",
       "inherits": {
         "type": {
           "name": "QueryBase",
@@ -56765,9 +57387,11 @@
           }
         }
       ],
-      "specLocation": "_types/query_dsl/specialized.ts#L334-L348"
+      "specLocation": "_types/query_dsl/specialized.ts#L348-L365"
     },
     {
+      "extDocId": "query-dsl-semantic-query",
+      "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/query-dsl-semantic-query.html",
       "inherits": {
         "type": {
           "name": "QueryBase",
@@ -56805,7 +57429,7 @@
           }
         }
       ],
-      "specLocation": "_types/query_dsl/SemanticQuery.ts#L22-L27"
+      "specLocation": "_types/query_dsl/SemanticQuery.ts#L22-L30"
     },
     {
       "attachedBehaviors": [
@@ -56839,6 +57463,8 @@
           }
         }
       ],
+      "extDocId": "query-dsl-shape-query",
+      "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/query-dsl-shape-query.html",
       "inherits": {
         "type": {
           "name": "QueryBase",
@@ -56864,7 +57490,7 @@
           }
         }
       ],
-      "specLocation": "_types/query_dsl/specialized.ts#L350-L363"
+      "specLocation": "_types/query_dsl/specialized.ts#L367-L381"
     },
     {
       "kind": "interface",
@@ -56910,9 +57536,11 @@
           }
         }
       ],
-      "specLocation": "_types/query_dsl/specialized.ts#L365-L378"
+      "specLocation": "_types/query_dsl/specialized.ts#L383-L396"
     },
     {
+      "extDocId": "query-dsl-simple-query-string-query",
+      "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/query-dsl-simple-query-string-query.html",
       "inherits": {
         "type": {
           "name": "QueryBase",
@@ -57096,7 +57724,7 @@
           }
         }
       ],
-      "specLocation": "_types/query_dsl/fulltext.ts#L765-L830"
+      "specLocation": "_types/query_dsl/fulltext.ts#L786-L854"
     },
     {
       "description": "Query flags can be either a single flag or a combination of flags, e.g. `OR|AND|PREFIX`",
@@ -57107,7 +57735,7 @@
         "name": "SimpleQueryStringFlags",
         "namespace": "_types.query_dsl"
       },
-      "specLocation": "_types/query_dsl/fulltext.ts#L702-L706",
+      "specLocation": "_types/query_dsl/fulltext.ts#L723-L727",
       "type": {
         "generics": [
           {
@@ -57160,6 +57788,8 @@
       }
     },
     {
+      "extDocId": "query-dsl-span-containing-query",
+      "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/query-dsl-span-containing-query.html",
       "inherits": {
         "type": {
           "name": "QueryBase",
@@ -57197,7 +57827,7 @@
           }
         }
       ],
-      "specLocation": "_types/query_dsl/span.ts#L25-L36"
+      "specLocation": "_types/query_dsl/span.ts#L25-L39"
     },
     {
       "kind": "interface",
@@ -57337,13 +57967,15 @@
           }
         }
       ],
-      "specLocation": "_types/query_dsl/span.ts#L131-L173",
+      "specLocation": "_types/query_dsl/span.ts#L158-L200",
       "variants": {
         "kind": "container",
         "nonExhaustive": true
       }
     },
     {
+      "extDocId": "query-dsl-span-field-masking-query",
+      "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/query-dsl-span-field-masking-query.html",
       "inherits": {
         "type": {
           "name": "QueryBase",
@@ -57379,9 +58011,11 @@
           }
         }
       ],
-      "specLocation": "_types/query_dsl/span.ts#L38-L41"
+      "specLocation": "_types/query_dsl/span.ts#L41-L47"
     },
     {
+      "extDocId": "query-dsl-span-first-query",
+      "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/query-dsl-span-first-query.html",
       "inherits": {
         "type": {
           "name": "QueryBase",
@@ -57419,7 +58053,7 @@
           }
         }
       ],
-      "specLocation": "_types/query_dsl/span.ts#L43-L52"
+      "specLocation": "_types/query_dsl/span.ts#L49-L61"
     },
     {
       "description": "Can only be used as a clause in a span_near query.",
@@ -57428,7 +58062,7 @@
         "name": "SpanGapQuery",
         "namespace": "_types.query_dsl"
       },
-      "specLocation": "_types/query_dsl/span.ts#L54-L56",
+      "specLocation": "_types/query_dsl/span.ts#L63-L65",
       "type": {
         "key": {
           "kind": "instance_of",
@@ -57449,6 +58083,8 @@
       }
     },
     {
+      "extDocId": "query-dsl-span-multi-term-query",
+      "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/query-dsl-span-multi-term-query.html",
       "inherits": {
         "type": {
           "name": "QueryBase",
@@ -57474,9 +58110,11 @@
           }
         }
       ],
-      "specLocation": "_types/query_dsl/span.ts#L58-L63"
+      "specLocation": "_types/query_dsl/span.ts#L67-L75"
     },
     {
+      "extDocId": "query-dsl-span-near-query",
+      "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/query-dsl-span-near-query.html",
       "inherits": {
         "type": {
           "name": "QueryBase",
@@ -57529,9 +58167,11 @@
           }
         }
       ],
-      "specLocation": "_types/query_dsl/span.ts#L65-L78"
+      "specLocation": "_types/query_dsl/span.ts#L77-L93"
     },
     {
+      "extDocId": "query-dsl-span-not-query",
+      "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/query-dsl-span-not-query.html",
       "inherits": {
         "type": {
           "name": "QueryBase",
@@ -57607,9 +58247,11 @@
           }
         }
       ],
-      "specLocation": "_types/query_dsl/span.ts#L80-L104"
+      "specLocation": "_types/query_dsl/span.ts#L95-L122"
     },
     {
+      "extDocId": "query-dsl-span-or-query",
+      "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/query-dsl-span-or-query.html",
       "inherits": {
         "type": {
           "name": "QueryBase",
@@ -57638,9 +58280,11 @@
           }
         }
       ],
-      "specLocation": "_types/query_dsl/span.ts#L106-L111"
+      "specLocation": "_types/query_dsl/span.ts#L124-L132"
     },
     {
+      "extDocId": "query-dsl-span-term-query",
+      "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/query-dsl-span-term-query.html",
       "inherits": {
         "type": {
           "name": "QueryBase",
@@ -57666,9 +58310,11 @@
         }
       ],
       "shortcutProperty": "value",
-      "specLocation": "_types/query_dsl/span.ts#L113-L116"
+      "specLocation": "_types/query_dsl/span.ts#L134-L140"
     },
     {
+      "extDocId": "query-dsl-span-within-query",
+      "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/query-dsl-span-within-query.html",
       "inherits": {
         "type": {
           "name": "QueryBase",
@@ -57706,9 +58352,11 @@
           }
         }
       ],
-      "specLocation": "_types/query_dsl/span.ts#L118-L129"
+      "specLocation": "_types/query_dsl/span.ts#L142-L156"
     },
     {
+      "extDocId": "query-dsl-sparse-vector-query",
+      "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/query-dsl-sparse-vector-query.html",
       "inherits": {
         "type": {
           "name": "QueryBase",
@@ -57827,7 +58475,7 @@
           }
         }
       ],
-      "specLocation": "_types/query_dsl/SparseVectorQuery.ts#L26-L79",
+      "specLocation": "_types/query_dsl/SparseVectorQuery.ts#L26-L80",
       "variants": {
         "kind": "container"
       }
@@ -57882,6 +58530,8 @@
       "specLocation": "_types/query_dsl/TokenPruningConfig.ts#L22-L35"
     },
     {
+      "extDocId": "query-dsl-term-query",
+      "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/query-dsl-term-query.html",
       "inherits": {
         "type": {
           "name": "QueryBase",
@@ -57927,7 +58577,7 @@
         }
       ],
       "shortcutProperty": "value",
-      "specLocation": "_types/query_dsl/term.ts#L219-L233"
+      "specLocation": "_types/query_dsl/term.ts#L238-L255"
     },
     {
       "codegenNames": [
@@ -58021,6 +58671,8 @@
           }
         }
       ],
+      "extDocId": "query-dsl-terms-query",
+      "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/query-dsl-terms-query.html",
       "inherits": {
         "type": {
           "name": "QueryBase",
@@ -58033,7 +58685,7 @@
         "namespace": "_types.query_dsl"
       },
       "properties": [],
-      "specLocation": "_types/query_dsl/term.ts#L235-L240"
+      "specLocation": "_types/query_dsl/term.ts#L257-L263"
     },
     {
       "codegenNames": [
@@ -58045,7 +58697,7 @@
         "name": "TermsQueryField",
         "namespace": "_types.query_dsl"
       },
-      "specLocation": "_types/query_dsl/term.ts#L242-L245",
+      "specLocation": "_types/query_dsl/term.ts#L265-L268",
       "type": {
         "items": [
           {
@@ -58121,9 +58773,11 @@
           }
         }
       ],
-      "specLocation": "_types/query_dsl/term.ts#L247-L252"
+      "specLocation": "_types/query_dsl/term.ts#L270-L275"
     },
     {
+      "extDocId": "query-dsl-terms-set-query",
+      "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/query-dsl-terms-set-query.html",
       "inherits": {
         "type": {
           "name": "QueryBase",
@@ -58136,6 +58790,24 @@
         "namespace": "_types.query_dsl"
       },
       "properties": [
+        {
+          "availability": {
+            "serverless": {},
+            "stack": {
+              "since": "8.10.0"
+            }
+          },
+          "description": "Specification describing number of matching terms required to return a document.",
+          "name": "minimum_should_match",
+          "required": false,
+          "type": {
+            "kind": "instance_of",
+            "type": {
+              "name": "MinimumShouldMatch",
+              "namespace": "_types"
+            }
+          }
+        },
         {
           "description": "Numeric field containing the number of matching terms required to return a document.",
           "name": "minimum_should_match_field",
@@ -58176,9 +58848,11 @@
           }
         }
       ],
-      "specLocation": "_types/query_dsl/term.ts#L254-L267"
+      "specLocation": "_types/query_dsl/term.ts#L277-L299"
     },
     {
+      "extDocId": "query-dsl-text-expansion-query",
+      "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/query-dsl-text-expansion-query.html",
       "inherits": {
         "type": {
           "name": "QueryBase",
@@ -58237,9 +58911,11 @@
           }
         }
       ],
-      "specLocation": "_types/query_dsl/TextExpansionQuery.ts#L23-L33"
+      "specLocation": "_types/query_dsl/TextExpansionQuery.ts#L23-L36"
     },
     {
+      "extDocId": "query-dsl-weighted-tokens-query",
+      "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/query-dsl-weighted-tokens-query.html",
       "inherits": {
         "type": {
           "name": "QueryBase",
@@ -58288,9 +58964,11 @@
           }
         }
       ],
-      "specLocation": "_types/query_dsl/WeightedTokensQuery.ts#L25-L30"
+      "specLocation": "_types/query_dsl/WeightedTokensQuery.ts#L25-L33"
     },
     {
+      "extDocId": "query-dsl-wildcard-query",
+      "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/query-dsl-wildcard-query.html",
       "inherits": {
         "type": {
           "name": "QueryBase",
@@ -58361,9 +59039,11 @@
         }
       ],
       "shortcutProperty": "value",
-      "specLocation": "_types/query_dsl/term.ts#L273-L290"
+      "specLocation": "_types/query_dsl/term.ts#L305-L325"
     },
     {
+      "extDocId": "query-dsl-wrapper-query",
+      "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/query-dsl-wrapper-query.html",
       "inherits": {
         "type": {
           "name": "QueryBase",
@@ -58389,7 +59069,7 @@
           }
         }
       ],
-      "specLocation": "_types/query_dsl/abstractions.ts#L501-L507"
+      "specLocation": "_types/query_dsl/abstractions.ts#L507-L516"
     },
     {
       "inherits": {
@@ -58416,9 +59096,11 @@
           }
         }
       ],
-      "specLocation": "_types/query_dsl/term.ts#L269-L271"
+      "specLocation": "_types/query_dsl/term.ts#L301-L303"
     },
     {
+      "extDocId": "search-aggregations-bucket-autodatehistogram-aggregation",
+      "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/search-aggregations-bucket-autodatehistogram-aggregation.html",
       "inherits": {
         "type": {
           "name": "BucketAggregationBase",
@@ -58546,7 +59228,7 @@
           }
         }
       ],
-      "specLocation": "_types/aggregations/bucket.ts#L72-L107"
+      "specLocation": "_types/aggregations/bucket.ts#L72-L110"
     },
     {
       "kind": "enum",
@@ -58574,7 +59256,7 @@
         "name": "MinimumInterval",
         "namespace": "_types.aggregations"
       },
-      "specLocation": "_types/aggregations/bucket.ts#L109-L116"
+      "specLocation": "_types/aggregations/bucket.ts#L112-L119"
     },
     {
       "description": "A date and time, either as a string whose format can depend on the context (defaulting to ISO 8601), or a\nnumber of milliseconds since the Epoch. Elasticsearch accepts both as input, but will generally output a string\nrepresentation.",
@@ -58722,6 +59404,8 @@
       "specLocation": "_types/aggregations/metric.ts#L34-L45"
     },
     {
+      "extDocId": "search-aggregations-pipeline-avg-bucket-aggregation",
+      "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/search-aggregations-pipeline-avg-bucket-aggregation.html",
       "inherits": {
         "type": {
           "name": "PipelineAggregationBase",
@@ -58734,7 +59418,7 @@
         "namespace": "_types.aggregations"
       },
       "properties": [],
-      "specLocation": "_types/aggregations/pipeline.ts#L78-L78"
+      "specLocation": "_types/aggregations/pipeline.ts#L78-L81"
     },
     {
       "inherits": {
@@ -58914,6 +59598,8 @@
       "specLocation": "_types/aggregations/metric.ts#L57-L62"
     },
     {
+      "extDocId": "search-aggregations-pipeline-bucket-script-aggregation",
+      "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/search-aggregations-pipeline-bucket-script-aggregation.html",
       "inherits": {
         "type": {
           "name": "PipelineAggregationBase",
@@ -58939,9 +59625,11 @@
           }
         }
       ],
-      "specLocation": "_types/aggregations/pipeline.ts#L80-L85"
+      "specLocation": "_types/aggregations/pipeline.ts#L83-L91"
     },
     {
+      "extDocId": "search-aggregations-pipeline-bucket-selector-aggregation",
+      "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/search-aggregations-pipeline-bucket-selector-aggregation.html",
       "inherits": {
         "type": {
           "name": "PipelineAggregationBase",
@@ -58967,9 +59655,11 @@
           }
         }
       ],
-      "specLocation": "_types/aggregations/pipeline.ts#L87-L92"
+      "specLocation": "_types/aggregations/pipeline.ts#L93-L101"
     },
     {
+      "extDocId": "search-aggregations-pipeline-bucket-sort-aggregation",
+      "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/search-aggregations-pipeline-bucket-sort-aggregation.html",
       "inherits": {
         "type": {
           "name": "Aggregation",
@@ -59036,10 +59726,12 @@
           }
         }
       ],
-      "specLocation": "_types/aggregations/pipeline.ts#L169-L190"
+      "specLocation": "_types/aggregations/pipeline.ts#L180-L204"
     },
     {
       "description": "A sibling pipeline aggregation which executes a two sample Kolmogorov–Smirnov test (referred\nto as a \"K-S test\" from now on) against a provided distribution, and the distribution implied\nby the documents counts in the configured sibling aggregation. Specifically, for some metric,\nassuming that the percentile intervals of the metric are known beforehand or have been computed\nby an aggregation, then one would use range aggregation for the sibling to compute the p-value\nof the distribution difference between the metric and the restriction of that metric to a subset\nof the documents. A natural use case is if the sibling aggregation range aggregation nested in a\nterms aggregation, in which case one compares the overall distribution of metric to its restriction\nto each term.",
+      "extDocId": "search-aggregations-bucket-count-ks-test-aggregation",
+      "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/search-aggregations-bucket-count-ks-test-aggregation.html",
       "inherits": {
         "type": {
           "name": "BucketPathAggregation",
@@ -59095,10 +59787,12 @@
           }
         }
       ],
-      "specLocation": "_types/aggregations/pipeline.ts#L94-L127"
+      "specLocation": "_types/aggregations/pipeline.ts#L103-L137"
     },
     {
       "description": "A sibling pipeline aggregation which executes a correlation function on the configured sibling multi-bucket aggregation.",
+      "extDocId": "search-aggregations-bucket-correlation-aggregation",
+      "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/search-aggregations-bucket-correlation-aggregation.html",
       "inherits": {
         "type": {
           "name": "BucketPathAggregation",
@@ -59124,7 +59818,7 @@
           }
         }
       ],
-      "specLocation": "_types/aggregations/pipeline.ts#L129-L135"
+      "specLocation": "_types/aggregations/pipeline.ts#L139-L146"
     },
     {
       "kind": "interface",
@@ -59146,7 +59840,7 @@
           }
         }
       ],
-      "specLocation": "_types/aggregations/pipeline.ts#L137-L142"
+      "specLocation": "_types/aggregations/pipeline.ts#L148-L153"
     },
     {
       "kind": "interface",
@@ -59168,7 +59862,7 @@
           }
         }
       ],
-      "specLocation": "_types/aggregations/pipeline.ts#L144-L147"
+      "specLocation": "_types/aggregations/pipeline.ts#L155-L158"
     },
     {
       "kind": "interface",
@@ -59220,7 +59914,7 @@
           }
         }
       ],
-      "specLocation": "_types/aggregations/pipeline.ts#L149-L167"
+      "specLocation": "_types/aggregations/pipeline.ts#L160-L178"
     },
     {
       "inherits": {
@@ -59306,6 +60000,8 @@
     },
     {
       "description": "A multi-bucket aggregation that groups semi-structured text into buckets. Each text\nfield is re-analyzed using a custom analyzer. The resulting tokens are then categorized\ncreating buckets of similarly formatted text values. This aggregation works best with machine\ngenerated text like system logs. Only the first 100 analyzed tokens are used to categorize the text.",
+      "extDocId": "search-aggregations-bucket-categorize-text-aggregation",
+      "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/search-aggregations-bucket-categorize-text-aggregation.html",
       "inherits": {
         "type": {
           "name": "Aggregation",
@@ -59446,7 +60142,7 @@
           }
         }
       ],
-      "specLocation": "_types/aggregations/bucket.ts#L1062-L1126"
+      "specLocation": "_types/aggregations/bucket.ts#L1117-L1182"
     },
     {
       "codegenNames": [
@@ -59458,7 +60154,7 @@
         "name": "CategorizeTextAnalyzer",
         "namespace": "_types.aggregations"
       },
-      "specLocation": "_types/aggregations/bucket.ts#L1128-L1131",
+      "specLocation": "_types/aggregations/bucket.ts#L1184-L1187",
       "type": {
         "items": [
           {
@@ -59526,7 +60222,7 @@
           }
         }
       ],
-      "specLocation": "_types/aggregations/bucket.ts#L1133-L1137"
+      "specLocation": "_types/aggregations/bucket.ts#L1189-L1193"
     },
     {
       "inherits": {
@@ -59554,9 +60250,11 @@
           }
         }
       ],
-      "specLocation": "_types/aggregations/bucket.ts#L118-L123"
+      "specLocation": "_types/aggregations/bucket.ts#L121-L126"
     },
     {
+      "extDocId": "search-aggregations-bucket-composite-aggregation",
+      "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/search-aggregations-bucket-composite-aggregation.html",
       "inherits": {
         "type": {
           "name": "BucketAggregationBase",
@@ -59621,7 +60319,7 @@
           }
         }
       ],
-      "specLocation": "_types/aggregations/bucket.ts#L127-L143"
+      "specLocation": "_types/aggregations/bucket.ts#L130-L149"
     },
     {
       "kind": "type_alias",
@@ -59629,7 +60327,7 @@
         "name": "CompositeAggregateKey",
         "namespace": "_types.aggregations"
       },
-      "specLocation": "_types/aggregations/bucket.ts#L125-L125",
+      "specLocation": "_types/aggregations/bucket.ts#L128-L128",
       "type": {
         "key": {
           "kind": "instance_of",
@@ -59705,7 +60403,7 @@
           }
         }
       ],
-      "specLocation": "_types/aggregations/bucket.ts#L145-L162"
+      "specLocation": "_types/aggregations/bucket.ts#L151-L168"
     },
     {
       "inherits": {
@@ -59720,7 +60418,7 @@
         "namespace": "_types.aggregations"
       },
       "properties": [],
-      "specLocation": "_types/aggregations/bucket.ts#L175-L175"
+      "specLocation": "_types/aggregations/bucket.ts#L181-L181"
     },
     {
       "kind": "interface",
@@ -59798,7 +60496,7 @@
           }
         }
       ],
-      "specLocation": "_types/aggregations/bucket.ts#L164-L173"
+      "specLocation": "_types/aggregations/bucket.ts#L170-L179"
     },
     {
       "kind": "enum",
@@ -59817,7 +60515,7 @@
         "name": "MissingOrder",
         "namespace": "_types.aggregations"
       },
-      "specLocation": "_types/aggregations/AggregationContainer.ts#L526-L530"
+      "specLocation": "_types/aggregations/AggregationContainer.ts#L536-L540"
     },
     {
       "kind": "enum",
@@ -59857,7 +60555,7 @@
         "name": "ValueType",
         "namespace": "_types.aggregations"
       },
-      "specLocation": "_types/aggregations/metric.ts#L424-L435"
+      "specLocation": "_types/aggregations/metric.ts#L436-L447"
     },
     {
       "inherits": {
@@ -59884,7 +60582,7 @@
           }
         }
       ],
-      "specLocation": "_types/aggregations/bucket.ts#L177-L179"
+      "specLocation": "_types/aggregations/bucket.ts#L183-L185"
     },
     {
       "inherits": {
@@ -59957,7 +60655,7 @@
           }
         }
       ],
-      "specLocation": "_types/aggregations/bucket.ts#L181-L189"
+      "specLocation": "_types/aggregations/bucket.ts#L187-L195"
     },
     {
       "description": "A date histogram interval. Similar to `Duration` with additional units: `w` (week), `M` (month), `q` (quarter) and\n`y` (year)",
@@ -60042,9 +60740,11 @@
           }
         }
       ],
-      "specLocation": "_types/aggregations/bucket.ts#L191-L194"
+      "specLocation": "_types/aggregations/bucket.ts#L197-L200"
     },
     {
+      "extDocId": "search-aggregations-pipeline-cumulative-cardinality-aggregation",
+      "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/search-aggregations-pipeline-cumulative-cardinality-aggregation.html",
       "inherits": {
         "type": {
           "name": "PipelineAggregationBase",
@@ -60057,9 +60757,11 @@
         "namespace": "_types.aggregations"
       },
       "properties": [],
-      "specLocation": "_types/aggregations/pipeline.ts#L192-L192"
+      "specLocation": "_types/aggregations/pipeline.ts#L206-L209"
     },
     {
+      "extDocId": "search-aggregations-pipeline-cumulative-sum-aggregation",
+      "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/search-aggregations-pipeline-cumulative-sum-aggregation.html",
       "inherits": {
         "type": {
           "name": "PipelineAggregationBase",
@@ -60072,7 +60774,7 @@
         "namespace": "_types.aggregations"
       },
       "properties": [],
-      "specLocation": "_types/aggregations/pipeline.ts#L194-L194"
+      "specLocation": "_types/aggregations/pipeline.ts#L211-L214"
     },
     {
       "inherits": {
@@ -60294,7 +60996,7 @@
           }
         }
       ],
-      "specLocation": "_types/aggregations/bucket.ts#L196-L254"
+      "specLocation": "_types/aggregations/bucket.ts#L202-L260"
     },
     {
       "kind": "enum",
@@ -60352,7 +61054,7 @@
         "name": "CalendarInterval",
         "namespace": "_types.aggregations"
       },
-      "specLocation": "_types/aggregations/bucket.ts#L256-L273"
+      "specLocation": "_types/aggregations/bucket.ts#L262-L279"
     },
     {
       "generics": [
@@ -60392,7 +61094,7 @@
           }
         }
       ],
-      "specLocation": "_types/aggregations/bucket.ts#L496-L505"
+      "specLocation": "_types/aggregations/bucket.ts#L508-L517"
     },
     {
       "kind": "type_alias",
@@ -60400,7 +61102,7 @@
         "name": "AggregateOrder",
         "namespace": "_types.aggregations"
       },
-      "specLocation": "_types/aggregations/bucket.ts#L1000-L1002",
+      "specLocation": "_types/aggregations/bucket.ts#L1052-L1054",
       "type": {
         "items": [
           {
@@ -60535,7 +61237,7 @@
           }
         }
       ],
-      "specLocation": "_types/aggregations/bucket.ts#L275-L301"
+      "specLocation": "_types/aggregations/bucket.ts#L281-L307"
     },
     {
       "kind": "interface",
@@ -60581,7 +61283,7 @@
           }
         }
       ],
-      "specLocation": "_types/aggregations/bucket.ts#L312-L325"
+      "specLocation": "_types/aggregations/bucket.ts#L318-L331"
     },
     {
       "codegenNames": [
@@ -60594,7 +61296,7 @@
         "name": "FieldDateMath",
         "namespace": "_types.aggregations"
       },
-      "specLocation": "_types/aggregations/bucket.ts#L303-L310",
+      "specLocation": "_types/aggregations/bucket.ts#L309-L316",
       "type": {
         "items": [
           {
@@ -60643,9 +61345,11 @@
         "namespace": "_types.aggregations"
       },
       "properties": [],
-      "specLocation": "_types/aggregations/pipeline.ts#L196-L196"
+      "specLocation": "_types/aggregations/pipeline.ts#L216-L216"
     },
     {
+      "extDocId": "search-aggregations-bucket-diversified-sampler-aggregation",
+      "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/search-aggregations-bucket-diversified-sampler-aggregation.html",
       "inherits": {
         "type": {
           "name": "BucketAggregationBase",
@@ -60721,7 +61425,7 @@
           }
         }
       ],
-      "specLocation": "_types/aggregations/bucket.ts#L327-L348"
+      "specLocation": "_types/aggregations/bucket.ts#L333-L357"
     },
     {
       "kind": "enum",
@@ -60743,7 +61447,7 @@
         "name": "SamplerAggregationExecutionHint",
         "namespace": "_types.aggregations"
       },
-      "specLocation": "_types/aggregations/bucket.ts#L350-L363"
+      "specLocation": "_types/aggregations/bucket.ts#L359-L372"
     },
     {
       "inherits": {
@@ -60799,9 +61503,11 @@
           }
         }
       ],
-      "specLocation": "_types/aggregations/pipeline.ts#L198-L203"
+      "specLocation": "_types/aggregations/pipeline.ts#L218-L223"
     },
     {
+      "extDocId": "search-aggregations-bucket-frequent-item-sets-aggregation",
+      "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/search-aggregations-bucket-frequent-item-sets-aggregation.html",
       "kind": "interface",
       "name": {
         "name": "FrequentItemSetsAggregation",
@@ -60875,7 +61581,7 @@
           }
         }
       ],
-      "specLocation": "_types/aggregations/bucket.ts#L1184-L1208"
+      "specLocation": "_types/aggregations/bucket.ts#L1240-L1267"
     },
     {
       "kind": "interface",
@@ -60920,7 +61626,7 @@
           }
         }
       ],
-      "specLocation": "_types/aggregations/bucket.ts#L1170-L1182"
+      "specLocation": "_types/aggregations/bucket.ts#L1226-L1238"
     },
     {
       "codegenNames": [
@@ -60932,7 +61638,7 @@
         "name": "TermsExclude",
         "namespace": "_types.aggregations"
       },
-      "specLocation": "_types/aggregations/bucket.ts#L1025-L1026",
+      "specLocation": "_types/aggregations/bucket.ts#L1077-L1078",
       "type": {
         "items": [
           {
@@ -60967,7 +61673,7 @@
         "name": "TermsInclude",
         "namespace": "_types.aggregations"
       },
-      "specLocation": "_types/aggregations/bucket.ts#L1022-L1023",
+      "specLocation": "_types/aggregations/bucket.ts#L1074-L1075",
       "type": {
         "items": [
           {
@@ -61030,7 +61736,7 @@
           }
         }
       ],
-      "specLocation": "_types/aggregations/bucket.ts#L1028-L1037"
+      "specLocation": "_types/aggregations/bucket.ts#L1080-L1089"
     },
     {
       "inherits": {
@@ -61105,7 +61811,7 @@
           }
         }
       ],
-      "specLocation": "_types/aggregations/bucket.ts#L365-L385"
+      "specLocation": "_types/aggregations/bucket.ts#L374-L394"
     },
     {
       "codegenNames": [
@@ -61124,7 +61830,7 @@
         "name": "Buckets",
         "namespace": "_types.aggregations"
       },
-      "specLocation": "_types/aggregations/Aggregate.ts#L317-L326",
+      "specLocation": "_types/aggregations/Aggregate.ts#L346-L355",
       "type": {
         "items": [
           {
@@ -61160,6 +61866,8 @@
       }
     },
     {
+      "extDocId": "search-aggregations-metrics-geobounds-aggregation",
+      "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/search-aggregations-metrics-geobounds-aggregation.html",
       "inherits": {
         "type": {
           "name": "MetricAggregationBase",
@@ -61186,7 +61894,7 @@
           }
         }
       ],
-      "specLocation": "_types/aggregations/metric.ts#L108-L114"
+      "specLocation": "_types/aggregations/metric.ts#L108-L117"
     },
     {
       "inherits": {
@@ -61224,7 +61932,7 @@
           }
         }
       ],
-      "specLocation": "_types/aggregations/metric.ts#L116-L119"
+      "specLocation": "_types/aggregations/metric.ts#L119-L122"
     },
     {
       "inherits": {
@@ -61305,7 +62013,7 @@
           }
         }
       ],
-      "specLocation": "_types/aggregations/bucket.ts#L387-L410"
+      "specLocation": "_types/aggregations/bucket.ts#L396-L419"
     },
     {
       "kind": "interface",
@@ -61375,9 +62083,11 @@
           }
         }
       ],
-      "specLocation": "_types/aggregations/bucket.ts#L679-L692"
+      "specLocation": "_types/aggregations/bucket.ts#L691-L704"
     },
     {
+      "extDocId": "search-aggregations-bucket-geohashgrid-aggregation",
+      "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/search-aggregations-bucket-geohashgrid-aggregation.html",
       "inherits": {
         "type": {
           "name": "BucketAggregationBase",
@@ -61453,7 +62163,7 @@
           }
         }
       ],
-      "specLocation": "_types/aggregations/bucket.ts#L412-L437"
+      "specLocation": "_types/aggregations/bucket.ts#L421-L449"
     },
     {
       "codegenNames": [
@@ -61557,7 +62267,7 @@
           }
         }
       ],
-      "specLocation": "_types/aggregations/metric.ts#L121-L146"
+      "specLocation": "_types/aggregations/metric.ts#L124-L149"
     },
     {
       "kind": "interface",
@@ -61579,7 +62289,7 @@
           }
         }
       ],
-      "specLocation": "_types/aggregations/metric.ts#L155-L160"
+      "specLocation": "_types/aggregations/metric.ts#L158-L163"
     },
     {
       "kind": "interface",
@@ -61601,7 +62311,7 @@
           }
         }
       ],
-      "specLocation": "_types/aggregations/metric.ts#L148-L153"
+      "specLocation": "_types/aggregations/metric.ts#L151-L156"
     },
     {
       "inherits": {
@@ -61679,7 +62389,7 @@
           }
         }
       ],
-      "specLocation": "_types/aggregations/bucket.ts#L439-L465"
+      "specLocation": "_types/aggregations/bucket.ts#L451-L477"
     },
     {
       "kind": "type_alias",
@@ -61772,7 +62482,7 @@
           }
         }
       ],
-      "specLocation": "_types/aggregations/bucket.ts#L467-L492"
+      "specLocation": "_types/aggregations/bucket.ts#L479-L504"
     },
     {
       "inherits": {
@@ -61787,7 +62497,7 @@
         "namespace": "_types.aggregations"
       },
       "properties": [],
-      "specLocation": "_types/aggregations/bucket.ts#L494-L494"
+      "specLocation": "_types/aggregations/bucket.ts#L506-L506"
     },
     {
       "inherits": {
@@ -61952,7 +62662,7 @@
           }
         }
       ],
-      "specLocation": "_types/aggregations/bucket.ts#L507-L553"
+      "specLocation": "_types/aggregations/bucket.ts#L519-L565"
     },
     {
       "inherits": {
@@ -61995,7 +62705,7 @@
           }
         }
       ],
-      "specLocation": "_types/aggregations/bucket.ts#L555-L564"
+      "specLocation": "_types/aggregations/bucket.ts#L567-L576"
     },
     {
       "kind": "interface",
@@ -62065,7 +62775,7 @@
           }
         }
       ],
-      "specLocation": "_types/aggregations/bucket.ts#L566-L579"
+      "specLocation": "_types/aggregations/bucket.ts#L578-L591"
     },
     {
       "inherits": {
@@ -62156,7 +62866,7 @@
           }
         }
       ],
-      "specLocation": "_types/aggregations/bucket.ts#L1139-L1168"
+      "specLocation": "_types/aggregations/bucket.ts#L1195-L1224"
     },
     {
       "inherits": {
@@ -62196,7 +62906,7 @@
           }
         }
       ],
-      "specLocation": "_types/aggregations/pipeline.ts#L205-L214"
+      "specLocation": "_types/aggregations/pipeline.ts#L225-L234"
     },
     {
       "kind": "interface",
@@ -62230,7 +62940,7 @@
           }
         }
       ],
-      "specLocation": "_types/aggregations/pipeline.ts#L216-L222",
+      "specLocation": "_types/aggregations/pipeline.ts#L236-L242",
       "variants": {
         "kind": "container"
       }
@@ -62270,7 +62980,7 @@
           }
         }
       ],
-      "specLocation": "ml/_types/inference.ts#L82-L91"
+      "specLocation": "ml/_types/inference.ts#L107-L116"
     },
     {
       "kind": "interface",
@@ -62343,7 +63053,7 @@
           }
         }
       ],
-      "specLocation": "ml/_types/inference.ts#L93-L108"
+      "specLocation": "ml/_types/inference.ts#L118-L133"
     },
     {
       "inherits": {
@@ -62438,9 +63148,11 @@
         "namespace": "_types.aggregations"
       },
       "properties": [],
-      "specLocation": "_types/aggregations/metric.ts#L162-L162"
+      "specLocation": "_types/aggregations/metric.ts#L165-L165"
     },
     {
+      "extDocId": "search-aggregations-pipeline-max-bucket-aggregation",
+      "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/search-aggregations-pipeline-max-bucket-aggregation.html",
       "inherits": {
         "type": {
           "name": "PipelineAggregationBase",
@@ -62453,9 +63165,11 @@
         "namespace": "_types.aggregations"
       },
       "properties": [],
-      "specLocation": "_types/aggregations/pipeline.ts#L224-L224"
+      "specLocation": "_types/aggregations/pipeline.ts#L244-L247"
     },
     {
+      "extDocId": "search-aggregations-metrics-median-absolute-deviation-aggregation",
+      "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/search-aggregations-metrics-median-absolute-deviation-aggregation.html",
       "inherits": {
         "type": {
           "name": "FormatMetricAggregationBase",
@@ -62482,7 +63196,7 @@
           }
         }
       ],
-      "specLocation": "_types/aggregations/metric.ts#L164-L170"
+      "specLocation": "_types/aggregations/metric.ts#L167-L176"
     },
     {
       "inherits": {
@@ -62497,9 +63211,11 @@
         "namespace": "_types.aggregations"
       },
       "properties": [],
-      "specLocation": "_types/aggregations/metric.ts#L172-L172"
+      "specLocation": "_types/aggregations/metric.ts#L178-L178"
     },
     {
+      "extDocId": "search-aggregations-pipeline-min-bucket-aggregation",
+      "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/search-aggregations-pipeline-min-bucket-aggregation.html",
       "inherits": {
         "type": {
           "name": "PipelineAggregationBase",
@@ -62512,7 +63228,7 @@
         "namespace": "_types.aggregations"
       },
       "properties": [],
-      "specLocation": "_types/aggregations/pipeline.ts#L226-L226"
+      "specLocation": "_types/aggregations/pipeline.ts#L249-L252"
     },
     {
       "inherits": {
@@ -62551,7 +63267,7 @@
           }
         }
       ],
-      "specLocation": "_types/aggregations/bucket.ts#L581-L587"
+      "specLocation": "_types/aggregations/bucket.ts#L593-L599"
     },
     {
       "kind": "type_alias",
@@ -62559,7 +63275,7 @@
         "name": "MovingAverageAggregation",
         "namespace": "_types.aggregations"
       },
-      "specLocation": "_types/aggregations/pipeline.ts#L228-L234",
+      "specLocation": "_types/aggregations/pipeline.ts#L254-L260",
       "type": {
         "items": [
           {
@@ -62638,7 +63354,7 @@
           }
         }
       ],
-      "specLocation": "_types/aggregations/pipeline.ts#L242-L245"
+      "specLocation": "_types/aggregations/pipeline.ts#L268-L271"
     },
     {
       "inherits": {
@@ -62687,7 +63403,7 @@
           }
         }
       ],
-      "specLocation": "_types/aggregations/pipeline.ts#L236-L240"
+      "specLocation": "_types/aggregations/pipeline.ts#L262-L266"
     },
     {
       "description": "For empty Class assignments",
@@ -62732,7 +63448,7 @@
           }
         }
       ],
-      "specLocation": "_types/aggregations/pipeline.ts#L247-L250"
+      "specLocation": "_types/aggregations/pipeline.ts#L273-L276"
     },
     {
       "inherits": {
@@ -62767,7 +63483,7 @@
           }
         }
       ],
-      "specLocation": "_types/aggregations/pipeline.ts#L252-L255"
+      "specLocation": "_types/aggregations/pipeline.ts#L278-L281"
     },
     {
       "kind": "interface",
@@ -62788,7 +63504,7 @@
           }
         }
       ],
-      "specLocation": "_types/aggregations/pipeline.ts#L267-L269"
+      "specLocation": "_types/aggregations/pipeline.ts#L293-L295"
     },
     {
       "inherits": {
@@ -62823,7 +63539,7 @@
           }
         }
       ],
-      "specLocation": "_types/aggregations/pipeline.ts#L257-L260"
+      "specLocation": "_types/aggregations/pipeline.ts#L283-L286"
     },
     {
       "kind": "interface",
@@ -62855,7 +63571,7 @@
           }
         }
       ],
-      "specLocation": "_types/aggregations/pipeline.ts#L271-L274"
+      "specLocation": "_types/aggregations/pipeline.ts#L297-L300"
     },
     {
       "inherits": {
@@ -62890,7 +63606,7 @@
           }
         }
       ],
-      "specLocation": "_types/aggregations/pipeline.ts#L262-L265"
+      "specLocation": "_types/aggregations/pipeline.ts#L288-L291"
     },
     {
       "kind": "interface",
@@ -62966,7 +63682,7 @@
           }
         }
       ],
-      "specLocation": "_types/aggregations/pipeline.ts#L275-L282"
+      "specLocation": "_types/aggregations/pipeline.ts#L301-L308"
     },
     {
       "kind": "enum",
@@ -62984,9 +63700,11 @@
         "name": "HoltWintersType",
         "namespace": "_types.aggregations"
       },
-      "specLocation": "_types/aggregations/pipeline.ts#L283-L286"
+      "specLocation": "_types/aggregations/pipeline.ts#L309-L312"
     },
     {
+      "extDocId": "search-aggregations-pipeline-moving-percentiles-aggregation",
+      "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/search-aggregations-pipeline-moving-percentiles-aggregation.html",
       "inherits": {
         "type": {
           "name": "PipelineAggregationBase",
@@ -63036,9 +63754,11 @@
           }
         }
       ],
-      "specLocation": "_types/aggregations/pipeline.ts#L305-L317"
+      "specLocation": "_types/aggregations/pipeline.ts#L334-L349"
     },
     {
+      "extDocId": "search-aggregations-pipeline-movfn-aggregation",
+      "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/search-aggregations-pipeline-movfn-aggregation.html",
       "inherits": {
         "type": {
           "name": "PipelineAggregationBase",
@@ -63089,7 +63809,7 @@
           }
         }
       ],
-      "specLocation": "_types/aggregations/pipeline.ts#L288-L303"
+      "specLocation": "_types/aggregations/pipeline.ts#L314-L332"
     },
     {
       "inherits": {
@@ -63209,7 +63929,7 @@
           }
         }
       ],
-      "specLocation": "_types/aggregations/bucket.ts#L589-L629"
+      "specLocation": "_types/aggregations/bucket.ts#L601-L641"
     },
     {
       "kind": "enum",
@@ -63227,7 +63947,7 @@
         "name": "TermsAggregationCollectMode",
         "namespace": "_types.aggregations"
       },
-      "specLocation": "_types/aggregations/bucket.ts#L1004-L1013"
+      "specLocation": "_types/aggregations/bucket.ts#L1056-L1065"
     },
     {
       "kind": "interface",
@@ -63261,7 +63981,7 @@
           }
         }
       ],
-      "specLocation": "_types/aggregations/bucket.ts#L631-L641"
+      "specLocation": "_types/aggregations/bucket.ts#L643-L653"
     },
     {
       "inherits": {
@@ -63289,9 +64009,11 @@
           }
         }
       ],
-      "specLocation": "_types/aggregations/bucket.ts#L643-L648"
+      "specLocation": "_types/aggregations/bucket.ts#L655-L660"
     },
     {
+      "extDocId": "search-aggregations-pipeline-normalize-aggregation",
+      "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/search-aggregations-pipeline-normalize-aggregation.html",
       "inherits": {
         "type": {
           "name": "PipelineAggregationBase",
@@ -63317,7 +64039,7 @@
           }
         }
       ],
-      "specLocation": "_types/aggregations/pipeline.ts#L319-L324"
+      "specLocation": "_types/aggregations/pipeline.ts#L351-L359"
     },
     {
       "kind": "enum",
@@ -63352,7 +64074,7 @@
         "name": "NormalizeMethod",
         "namespace": "_types.aggregations"
       },
-      "specLocation": "_types/aggregations/pipeline.ts#L326-L352"
+      "specLocation": "_types/aggregations/pipeline.ts#L361-L387"
     },
     {
       "inherits": {
@@ -63380,9 +64102,11 @@
           }
         }
       ],
-      "specLocation": "_types/aggregations/bucket.ts#L650-L655"
+      "specLocation": "_types/aggregations/bucket.ts#L662-L667"
     },
     {
+      "extDocId": "search-aggregations-metrics-percentile-rank-aggregation",
+      "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/search-aggregations-metrics-percentile-rank-aggregation.html",
       "inherits": {
         "type": {
           "name": "FormatMetricAggregationBase",
@@ -63460,7 +64184,7 @@
           }
         }
       ],
-      "specLocation": "_types/aggregations/metric.ts#L174-L193"
+      "specLocation": "_types/aggregations/metric.ts#L180-L202"
     },
     {
       "kind": "interface",
@@ -63482,7 +64206,7 @@
           }
         }
       ],
-      "specLocation": "_types/aggregations/metric.ts#L216-L221"
+      "specLocation": "_types/aggregations/metric.ts#L225-L230"
     },
     {
       "kind": "interface",
@@ -63504,7 +64228,7 @@
           }
         }
       ],
-      "specLocation": "_types/aggregations/metric.ts#L223-L228"
+      "specLocation": "_types/aggregations/metric.ts#L232-L237"
     },
     {
       "inherits": {
@@ -63572,9 +64296,11 @@
           }
         }
       ],
-      "specLocation": "_types/aggregations/metric.ts#L195-L214"
+      "specLocation": "_types/aggregations/metric.ts#L204-L223"
     },
     {
+      "extDocId": "search-aggregations-pipeline-percentiles-bucket-aggregation",
+      "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/search-aggregations-pipeline-percentiles-bucket-aggregation.html",
       "inherits": {
         "type": {
           "name": "PipelineAggregationBase",
@@ -63603,7 +64329,7 @@
           }
         }
       ],
-      "specLocation": "_types/aggregations/pipeline.ts#L354-L359"
+      "specLocation": "_types/aggregations/pipeline.ts#L389-L397"
     },
     {
       "inherits": {
@@ -63692,9 +64418,11 @@
           }
         }
       ],
-      "specLocation": "_types/aggregations/bucket.ts#L657-L677"
+      "specLocation": "_types/aggregations/bucket.ts#L669-L689"
     },
     {
+      "extDocId": "search-aggregations-bucket-rare-terms-aggregation",
+      "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/search-aggregations-bucket-rare-terms-aggregation.html",
       "inherits": {
         "type": {
           "name": "BucketAggregationBase",
@@ -63793,7 +64521,7 @@
           }
         }
       ],
-      "specLocation": "_types/aggregations/bucket.ts#L694-L724"
+      "specLocation": "_types/aggregations/bucket.ts#L706-L739"
     },
     {
       "inherits": {
@@ -63834,7 +64562,7 @@
           }
         }
       ],
-      "specLocation": "_types/aggregations/metric.ts#L230-L241"
+      "specLocation": "_types/aggregations/metric.ts#L239-L250"
     },
     {
       "kind": "enum",
@@ -63852,7 +64580,7 @@
         "name": "RateMode",
         "namespace": "_types.aggregations"
       },
-      "specLocation": "_types/aggregations/metric.ts#L243-L252"
+      "specLocation": "_types/aggregations/metric.ts#L252-L261"
     },
     {
       "inherits": {
@@ -63880,9 +64608,53 @@
           }
         }
       ],
-      "specLocation": "_types/aggregations/bucket.ts#L726-L732"
+      "specLocation": "_types/aggregations/bucket.ts#L741-L747"
+    },
+    {
+      "extDocId": "search-aggregations-random-sampler-aggregation",
+      "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/search-aggregations-random-sampler-aggregation.html",
+      "inherits": {
+        "type": {
+          "name": "BucketAggregationBase",
+          "namespace": "_types.aggregations"
+        }
+      },
+      "kind": "interface",
+      "name": {
+        "name": "RandomSamplerAggregation",
+        "namespace": "_types.aggregations"
+      },
+      "properties": [
+        {
+          "description": "The probability that a document will be included in the aggregated data.\nMust be greater than 0, less than 0.5, or exactly 1.\nThe lower the probability, the fewer documents are matched.",
+          "name": "probability",
+          "required": true,
+          "type": {
+            "kind": "instance_of",
+            "type": {
+              "name": "double",
+              "namespace": "_types"
+            }
+          }
+        },
+        {
+          "description": "The seed to generate the random sampling of documents.\nWhen a seed is provided, the random subset of documents is the same between calls.",
+          "name": "seed",
+          "required": false,
+          "type": {
+            "kind": "instance_of",
+            "type": {
+              "name": "integer",
+              "namespace": "_types"
+            }
+          }
+        }
+      ],
+      "specLocation": "_types/aggregations/bucket.ts#L749-L769"
     },
     {
+      "extDocId": "search-aggregations-bucket-sampler-aggregation",
+      "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/search-aggregations-bucket-sampler-aggregation.html",
       "inherits": {
         "type": {
           "name": "BucketAggregationBase",
@@ -63909,7 +64681,7 @@
           }
         }
       ],
-      "specLocation": "_types/aggregations/bucket.ts#L734-L740"
+      "specLocation": "_types/aggregations/bucket.ts#L771-L780"
     },
     {
       "inherits": {
@@ -63992,9 +64764,11 @@
           }
         }
       ],
-      "specLocation": "_types/aggregations/metric.ts#L254-L280"
+      "specLocation": "_types/aggregations/metric.ts#L263-L289"
     },
     {
+      "extDocId": "search-aggregations-pipeline-serialdiff-aggregation",
+      "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/search-aggregations-pipeline-serialdiff-aggregation.html",
       "inherits": {
         "type": {
           "name": "PipelineAggregationBase",
@@ -64020,9 +64794,11 @@
           }
         }
       ],
-      "specLocation": "_types/aggregations/pipeline.ts#L361-L367"
+      "specLocation": "_types/aggregations/pipeline.ts#L399-L408"
     },
     {
+      "extDocId": "search-aggregations-bucket-significanttext-aggregation",
+      "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/search-aggregations-bucket-significanttext-aggregation.html",
       "inherits": {
         "type": {
           "name": "BucketAggregationBase",
@@ -64217,7 +64993,7 @@
           }
         }
       ],
-      "specLocation": "_types/aggregations/bucket.ts#L777-L841"
+      "specLocation": "_types/aggregations/bucket.ts#L817-L884"
     },
     {
       "kind": "interface",
@@ -64251,7 +65027,7 @@
           }
         }
       ],
-      "specLocation": "_types/aggregations/bucket.ts#L742-L751"
+      "specLocation": "_types/aggregations/bucket.ts#L782-L791"
     },
     {
       "kind": "enum",
@@ -64273,7 +65049,7 @@
         "name": "TermsAggregationExecutionHint",
         "namespace": "_types.aggregations"
       },
-      "specLocation": "_types/aggregations/bucket.ts#L1015-L1020"
+      "specLocation": "_types/aggregations/bucket.ts#L1067-L1072"
     },
     {
       "kind": "interface",
@@ -64295,7 +65071,7 @@
           }
         }
       ],
-      "specLocation": "_types/aggregations/bucket.ts#L753-L758"
+      "specLocation": "_types/aggregations/bucket.ts#L793-L798"
     },
     {
       "kind": "interface",
@@ -64329,7 +65105,7 @@
           }
         }
       ],
-      "specLocation": "_types/aggregations/bucket.ts#L760-L769"
+      "specLocation": "_types/aggregations/bucket.ts#L800-L809"
     },
     {
       "kind": "interface",
@@ -64338,7 +65114,7 @@
         "namespace": "_types.aggregations"
       },
       "properties": [],
-      "specLocation": "_types/aggregations/bucket.ts#L771-L771"
+      "specLocation": "_types/aggregations/bucket.ts#L811-L811"
     },
     {
       "kind": "interface",
@@ -64359,9 +65135,11 @@
           }
         }
       ],
-      "specLocation": "_types/aggregations/bucket.ts#L773-L775"
+      "specLocation": "_types/aggregations/bucket.ts#L813-L815"
     },
     {
+      "extDocId": "search-aggregations-bucket-significanttext-aggregation",
+      "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/search-aggregations-bucket-significanttext-aggregation.html",
       "inherits": {
         "type": {
           "name": "BucketAggregationBase",
@@ -64580,7 +65358,7 @@
           }
         }
       ],
-      "specLocation": "_types/aggregations/bucket.ts#L843-L915"
+      "specLocation": "_types/aggregations/bucket.ts#L886-L961"
     },
     {
       "inherits": {
@@ -64595,7 +65373,7 @@
         "namespace": "_types.aggregations"
       },
       "properties": [],
-      "specLocation": "_types/aggregations/metric.ts#L282-L282"
+      "specLocation": "_types/aggregations/metric.ts#L291-L291"
     },
     {
       "inherits": {
@@ -64610,7 +65388,7 @@
         "namespace": "_types.aggregations"
       },
       "properties": [],
-      "specLocation": "_types/aggregations/pipeline.ts#L369-L369"
+      "specLocation": "_types/aggregations/pipeline.ts#L410-L410"
     },
     {
       "inherits": {
@@ -64639,7 +65417,7 @@
           }
         }
       ],
-      "specLocation": "_types/aggregations/metric.ts#L284-L290"
+      "specLocation": "_types/aggregations/metric.ts#L293-L299"
     },
     {
       "inherits": {
@@ -64654,9 +65432,11 @@
         "namespace": "_types.aggregations"
       },
       "properties": [],
-      "specLocation": "_types/aggregations/metric.ts#L292-L292"
+      "specLocation": "_types/aggregations/metric.ts#L301-L301"
     },
     {
+      "extDocId": "search-aggregations-pipeline-sum-bucket-aggregation",
+      "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/search-aggregations-pipeline-sum-bucket-aggregation.html",
       "inherits": {
         "type": {
           "name": "PipelineAggregationBase",
@@ -64669,9 +65449,11 @@
         "namespace": "_types.aggregations"
       },
       "properties": [],
-      "specLocation": "_types/aggregations/pipeline.ts#L371-L371"
+      "specLocation": "_types/aggregations/pipeline.ts#L412-L415"
     },
     {
+      "extDocId": "search-aggregations-bucket-terms-aggregation",
+      "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/search-aggregations-bucket-terms-aggregation.html",
       "inherits": {
         "type": {
           "name": "BucketAggregationBase",
@@ -64887,9 +65669,11 @@
           }
         }
       ],
-      "specLocation": "_types/aggregations/bucket.ts#L917-L982"
+      "specLocation": "_types/aggregations/bucket.ts#L963-L1031"
     },
     {
+      "extDocId": "search-aggregations-bucket-time-series-aggregation",
+      "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/search-aggregations-bucket-time-series-aggregation.html",
       "inherits": {
         "type": {
           "name": "BucketAggregationBase",
@@ -64928,7 +65712,7 @@
           }
         }
       ],
-      "specLocation": "_types/aggregations/bucket.ts#L984-L994"
+      "specLocation": "_types/aggregations/bucket.ts#L1033-L1046"
     },
     {
       "inherits": {
@@ -65122,7 +65906,7 @@
           }
         }
       ],
-      "specLocation": "_types/aggregations/metric.ts#L337-L397"
+      "specLocation": "_types/aggregations/metric.ts#L346-L406"
     },
     {
       "inherits": {
@@ -65175,7 +65959,7 @@
           }
         }
       ],
-      "specLocation": "_types/aggregations/metric.ts#L294-L308"
+      "specLocation": "_types/aggregations/metric.ts#L303-L317"
     },
     {
       "kind": "interface",
@@ -65220,7 +66004,7 @@
           }
         }
       ],
-      "specLocation": "_types/aggregations/metric.ts#L310-L320"
+      "specLocation": "_types/aggregations/metric.ts#L319-L329"
     },
     {
       "kind": "enum",
@@ -65242,9 +66026,11 @@
         "name": "TTestType",
         "namespace": "_types.aggregations"
       },
-      "specLocation": "_types/aggregations/metric.ts#L322-L335"
+      "specLocation": "_types/aggregations/metric.ts#L331-L344"
     },
     {
+      "extDocId": "search-aggregations-metrics-top-metrics",
+      "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/search-aggregations-metrics-top-metrics.html",
       "inherits": {
         "type": {
           "name": "MetricAggregationBase",
@@ -65310,7 +66096,7 @@
           }
         }
       ],
-      "specLocation": "_types/aggregations/metric.ts#L399-L413"
+      "specLocation": "_types/aggregations/metric.ts#L408-L425"
     },
     {
       "kind": "interface",
@@ -65332,7 +66118,7 @@
           }
         }
       ],
-      "specLocation": "_types/aggregations/metric.ts#L415-L420"
+      "specLocation": "_types/aggregations/metric.ts#L427-L432"
     },
     {
       "inherits": {
@@ -65347,7 +66133,7 @@
         "namespace": "_types.aggregations"
       },
       "properties": [],
-      "specLocation": "_types/aggregations/metric.ts#L422-L422"
+      "specLocation": "_types/aggregations/metric.ts#L434-L434"
     },
     {
       "inherits": {
@@ -65437,7 +66223,7 @@
           }
         }
       ],
-      "specLocation": "_types/aggregations/metric.ts#L437-L451"
+      "specLocation": "_types/aggregations/metric.ts#L449-L463"
     },
     {
       "kind": "interface",
@@ -65482,9 +66268,11 @@
           }
         }
       ],
-      "specLocation": "_types/aggregations/metric.ts#L453-L463"
+      "specLocation": "_types/aggregations/metric.ts#L465-L475"
     },
     {
+      "extDocId": "search-aggregations-bucket-variablewidthhistogram-aggregation",
+      "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/search-aggregations-bucket-variablewidthhistogram-aggregation.html",
       "kind": "interface",
       "name": {
         "name": "VariableWidthHistogramAggregation",
@@ -65552,7 +66340,7 @@
           }
         }
       ],
-      "specLocation": "_types/aggregations/bucket.ts#L1039-L1060"
+      "specLocation": "_types/aggregations/bucket.ts#L1091-L1115"
     },
     {
       "kind": "interface",
@@ -65899,7 +66687,7 @@
         "name": "TrackHits",
         "namespace": "_global.search._types"
       },
-      "specLocation": "_global/search/_types/hits.ts#L143-L151",
+      "specLocation": "_global/search/_types/hits.ts#L144-L152",
       "type": {
         "items": [
           {
@@ -67541,7 +68329,7 @@
         "name": "ResponseItem",
         "namespace": "_global.msearch"
       },
-      "specLocation": "_global/msearch/types.ts#L208-L211",
+      "specLocation": "_global/msearch/types.ts#L211-L214",
       "type": {
         "items": [
           {
@@ -67611,7 +68399,7 @@
           }
         }
       ],
-      "specLocation": "_global/msearch/types.ts#L213-L216"
+      "specLocation": "_global/msearch/types.ts#L216-L219"
     },
     {
       "generics": [
@@ -68067,7 +68855,7 @@
           }
         }
       ],
-      "specLocation": "_global/search/_types/hits.ts#L67-L73"
+      "specLocation": "_global/search/_types/hits.ts#L68-L74"
     },
     {
       "kind": "interface",
@@ -68099,7 +68887,7 @@
           }
         }
       ],
-      "specLocation": "_global/search/_types/hits.ts#L95-L98"
+      "specLocation": "_global/search/_types/hits.ts#L96-L99"
     },
     {
       "kind": "enum",
@@ -68117,7 +68905,7 @@
         "name": "TotalHitsRelation",
         "namespace": "_global.search._types"
       },
-      "specLocation": "_global/search/_types/hits.ts#L100-L105"
+      "specLocation": "_global/search/_types/hits.ts#L101-L106"
     },
     {
       "generics": [
@@ -68280,13 +69068,10 @@
                 "kind": "dictionary_of",
                 "singleKey": false,
                 "value": {
-                  "kind": "array_of",
-                  "value": {
-                    "kind": "instance_of",
-                    "type": {
-                      "name": "double",
-                      "namespace": "_types"
-                    }
+                  "kind": "instance_of",
+                  "type": {
+                    "name": "double",
+                    "namespace": "_types"
                   }
                 }
               }
@@ -68337,8 +69122,8 @@
               "value": {
                 "kind": "instance_of",
                 "type": {
-                  "name": "string",
-                  "namespace": "_builtins"
+                  "name": "FieldValue",
+                  "namespace": "_types"
                 }
               }
             }
@@ -68444,7 +69229,7 @@
           }
         }
       ],
-      "specLocation": "_global/search/_types/hits.ts#L40-L65"
+      "specLocation": "_global/search/_types/hits.ts#L41-L66"
     },
     {
       "kind": "interface",
@@ -68562,7 +69347,7 @@
           }
         }
       ],
-      "specLocation": "_global/search/_types/hits.ts#L85-L87"
+      "specLocation": "_global/search/_types/hits.ts#L86-L88"
     },
     {
       "kind": "interface",
@@ -68605,7 +69390,7 @@
           }
         }
       ],
-      "specLocation": "_global/search/_types/hits.ts#L89-L93"
+      "specLocation": "_global/search/_types/hits.ts#L90-L94"
     },
     {
       "description": "The aggregation name as returned from the server. Depending whether typed_keys is specified this could come back\nin the form of `name#type` instead of simply `name`",
@@ -68624,12 +69409,14 @@
       }
     },
     {
+      "extDocId": "search-aggregations",
+      "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/search-aggregations.html",
       "kind": "type_alias",
       "name": {
         "name": "Aggregate",
         "namespace": "_types.aggregations"
       },
-      "specLocation": "_types/aggregations/Aggregate.ts#L38-L124",
+      "specLocation": "_types/aggregations/Aggregate.ts#L38-L125",
       "type": {
         "items": [
           {
@@ -69155,7 +69942,7 @@
           }
         }
       ],
-      "specLocation": "_types/aggregations/Aggregate.ts#L139-L142",
+      "specLocation": "_types/aggregations/Aggregate.ts#L140-L143",
       "variantName": "cardinality"
     },
     {
@@ -69177,7 +69964,7 @@
           }
         }
       ],
-      "specLocation": "_types/aggregations/Aggregate.ts#L135-L137"
+      "specLocation": "_types/aggregations/Aggregate.ts#L136-L138"
     },
     {
       "inherits": {
@@ -69192,7 +69979,7 @@
         "namespace": "_types.aggregations"
       },
       "properties": [],
-      "specLocation": "_types/aggregations/Aggregate.ts#L167-L168",
+      "specLocation": "_types/aggregations/Aggregate.ts#L168-L169",
       "variantName": "hdr_percentiles"
     },
     {
@@ -69220,7 +70007,7 @@
           }
         }
       ],
-      "specLocation": "_types/aggregations/Aggregate.ts#L147-L149"
+      "specLocation": "_types/aggregations/Aggregate.ts#L148-L150"
     },
     {
       "codegenNames": [
@@ -69232,7 +70019,7 @@
         "name": "Percentiles",
         "namespace": "_types.aggregations"
       },
-      "specLocation": "_types/aggregations/Aggregate.ts#L151-L152",
+      "specLocation": "_types/aggregations/Aggregate.ts#L152-L153",
       "type": {
         "items": [
           {
@@ -69262,7 +70049,7 @@
         "name": "KeyedPercentiles",
         "namespace": "_types.aggregations"
       },
-      "specLocation": "_types/aggregations/Aggregate.ts#L159-L159",
+      "specLocation": "_types/aggregations/Aggregate.ts#L160-L160",
       "type": {
         "key": {
           "kind": "instance_of",
@@ -69354,7 +70141,7 @@
           }
         }
       ],
-      "specLocation": "_types/aggregations/Aggregate.ts#L161-L165"
+      "specLocation": "_types/aggregations/Aggregate.ts#L162-L166"
     },
     {
       "inherits": {
@@ -69369,7 +70156,7 @@
         "namespace": "_types.aggregations"
       },
       "properties": [],
-      "specLocation": "_types/aggregations/Aggregate.ts#L170-L171",
+      "specLocation": "_types/aggregations/Aggregate.ts#L171-L172",
       "variantName": "hdr_percentile_ranks"
     },
     {
@@ -69385,7 +70172,7 @@
         "namespace": "_types.aggregations"
       },
       "properties": [],
-      "specLocation": "_types/aggregations/Aggregate.ts#L173-L174",
+      "specLocation": "_types/aggregations/Aggregate.ts#L174-L175",
       "variantName": "tdigest_percentiles"
     },
     {
@@ -69401,7 +70188,7 @@
         "namespace": "_types.aggregations"
       },
       "properties": [],
-      "specLocation": "_types/aggregations/Aggregate.ts#L176-L177",
+      "specLocation": "_types/aggregations/Aggregate.ts#L177-L178",
       "variantName": "tdigest_percentile_ranks"
     },
     {
@@ -69417,7 +70204,7 @@
         "namespace": "_types.aggregations"
       },
       "properties": [],
-      "specLocation": "_types/aggregations/Aggregate.ts#L179-L180",
+      "specLocation": "_types/aggregations/Aggregate.ts#L180-L181",
       "variantName": "percentiles_bucket"
     },
     {
@@ -69433,7 +70220,7 @@
         "namespace": "_types.aggregations"
       },
       "properties": [],
-      "specLocation": "_types/aggregations/Aggregate.ts#L195-L196",
+      "specLocation": "_types/aggregations/Aggregate.ts#L196-L197",
       "variantName": "median_absolute_deviation"
     },
     {
@@ -69485,9 +70272,11 @@
           }
         }
       ],
-      "specLocation": "_types/aggregations/Aggregate.ts#L184-L193"
+      "specLocation": "_types/aggregations/Aggregate.ts#L185-L194"
     },
     {
+      "extDocId": "search-aggregations-metrics-min-aggregation",
+      "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/search-aggregations-metrics-min-aggregation.html",
       "inherits": {
         "type": {
           "name": "SingleMetricAggregateBase",
@@ -69500,10 +70289,12 @@
         "namespace": "_types.aggregations"
       },
       "properties": [],
-      "specLocation": "_types/aggregations/Aggregate.ts#L198-L199",
+      "specLocation": "_types/aggregations/Aggregate.ts#L199-L203",
       "variantName": "min"
     },
     {
+      "extDocId": "search-aggregations-metrics-max-aggregation",
+      "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/search-aggregations-metrics-max-aggregation.html",
       "inherits": {
         "type": {
           "name": "SingleMetricAggregateBase",
@@ -69516,11 +70307,13 @@
         "namespace": "_types.aggregations"
       },
       "properties": [],
-      "specLocation": "_types/aggregations/Aggregate.ts#L201-L202",
+      "specLocation": "_types/aggregations/Aggregate.ts#L205-L209",
       "variantName": "max"
     },
     {
       "description": "Sum aggregation result. `value` is always present and is zero if there were no values to process.",
+      "extDocId": "search-aggregations-metrics-sum-aggregation",
+      "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/search-aggregations-metrics-sum-aggregation.html",
       "inherits": {
         "type": {
           "name": "SingleMetricAggregateBase",
@@ -69533,10 +70326,12 @@
         "namespace": "_types.aggregations"
       },
       "properties": [],
-      "specLocation": "_types/aggregations/Aggregate.ts#L204-L208",
+      "specLocation": "_types/aggregations/Aggregate.ts#L211-L216",
       "variantName": "sum"
     },
     {
+      "extDocId": "search-aggregations-metrics-avg-aggregation",
+      "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/search-aggregations-metrics-avg-aggregation.html",
       "inherits": {
         "type": {
           "name": "SingleMetricAggregateBase",
@@ -69549,11 +70344,13 @@
         "namespace": "_types.aggregations"
       },
       "properties": [],
-      "specLocation": "_types/aggregations/Aggregate.ts#L210-L211",
+      "specLocation": "_types/aggregations/Aggregate.ts#L218-L222",
       "variantName": "avg"
     },
     {
       "description": "Weighted average aggregation result. `value` is missing if the weight was set to zero.",
+      "extDocId": "search-aggregations-metrics-weight-avg-aggregation",
+      "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/search-aggregations-metrics-weight-avg-aggregation.html",
       "inherits": {
         "type": {
           "name": "SingleMetricAggregateBase",
@@ -69566,11 +70363,13 @@
         "namespace": "_types.aggregations"
       },
       "properties": [],
-      "specLocation": "_types/aggregations/Aggregate.ts#L213-L217",
+      "specLocation": "_types/aggregations/Aggregate.ts#L224-L229",
       "variantName": "weighted_avg"
     },
     {
       "description": "Value count aggregation result. `value` is always present.",
+      "extDocId": "search-aggregations-metrics-valuecount-aggregation",
+      "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/search-aggregations-metrics-valuecount-aggregation.html",
       "inherits": {
         "type": {
           "name": "SingleMetricAggregateBase",
@@ -69583,7 +70382,7 @@
         "namespace": "_types.aggregations"
       },
       "properties": [],
-      "specLocation": "_types/aggregations/Aggregate.ts#L219-L223",
+      "specLocation": "_types/aggregations/Aggregate.ts#L231-L236",
       "variantName": "value_count"
     },
     {
@@ -69599,10 +70398,12 @@
         "namespace": "_types.aggregations"
       },
       "properties": [],
-      "specLocation": "_types/aggregations/Aggregate.ts#L225-L226",
+      "specLocation": "_types/aggregations/Aggregate.ts#L238-L239",
       "variantName": "simple_value"
     },
     {
+      "extDocId": "search-aggregations-pipeline-derivative-aggregation",
+      "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/search-aggregations-pipeline-derivative-aggregation.html",
       "inherits": {
         "type": {
           "name": "SingleMetricAggregateBase",
@@ -69638,7 +70439,7 @@
           }
         }
       ],
-      "specLocation": "_types/aggregations/Aggregate.ts#L228-L232",
+      "specLocation": "_types/aggregations/Aggregate.ts#L241-L248",
       "variantName": "derivative"
     },
     {
@@ -69669,11 +70470,13 @@
           }
         }
       ],
-      "specLocation": "_types/aggregations/Aggregate.ts#L234-L237",
+      "specLocation": "_types/aggregations/Aggregate.ts#L250-L253",
       "variantName": "bucket_metric_value"
     },
     {
       "description": "Statistics aggregation result. `min`, `max` and `avg` are missing if there were no values to process\n(`count` is zero).",
+      "extDocId": "search-aggregations-metrics-stats-aggregation",
+      "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/search-aggregations-metrics-stats-aggregation.html",
       "inherits": {
         "type": {
           "name": "AggregateBase",
@@ -69822,10 +70625,12 @@
           }
         }
       ],
-      "specLocation": "_types/aggregations/Aggregate.ts#L241-L256",
+      "specLocation": "_types/aggregations/Aggregate.ts#L257-L273",
       "variantName": "stats"
     },
     {
+      "extDocId": "search-aggregations-pipeline-stats-bucket-aggregation",
+      "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/search-aggregations-pipeline-stats-bucket-aggregation.html",
       "inherits": {
         "type": {
           "name": "StatsAggregate",
@@ -69838,10 +70643,12 @@
         "namespace": "_types.aggregations"
       },
       "properties": [],
-      "specLocation": "_types/aggregations/Aggregate.ts#L258-L259",
+      "specLocation": "_types/aggregations/Aggregate.ts#L275-L279",
       "variantName": "stats_bucket"
     },
     {
+      "extDocId": "search-aggregations-metrics-extendedstats-aggregation",
+      "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/search-aggregations-metrics-extendedstats-aggregation.html",
       "inherits": {
         "type": {
           "name": "StatsAggregate",
@@ -70093,7 +70900,7 @@
           }
         }
       ],
-      "specLocation": "_types/aggregations/Aggregate.ts#L279-L297",
+      "specLocation": "_types/aggregations/Aggregate.ts#L299-L320",
       "variantName": "extended_stats"
     },
     {
@@ -70242,7 +71049,7 @@
           }
         }
       ],
-      "specLocation": "_types/aggregations/Aggregate.ts#L261-L268"
+      "specLocation": "_types/aggregations/Aggregate.ts#L281-L288"
     },
     {
       "kind": "interface",
@@ -70318,7 +71125,7 @@
           }
         }
       ],
-      "specLocation": "_types/aggregations/Aggregate.ts#L270-L277"
+      "specLocation": "_types/aggregations/Aggregate.ts#L290-L297"
     },
     {
       "inherits": {
@@ -70333,10 +71140,12 @@
         "namespace": "_types.aggregations"
       },
       "properties": [],
-      "specLocation": "_types/aggregations/Aggregate.ts#L299-L300",
+      "specLocation": "_types/aggregations/Aggregate.ts#L322-L323",
       "variantName": "extended_stats_bucket"
     },
     {
+      "extDocId": "search-aggregations-metrics-geobounds-aggregation",
+      "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/search-aggregations-metrics-geobounds-aggregation.html",
       "inherits": {
         "type": {
           "name": "AggregateBase",
@@ -70361,10 +71170,12 @@
           }
         }
       ],
-      "specLocation": "_types/aggregations/Aggregate.ts#L304-L307",
+      "specLocation": "_types/aggregations/Aggregate.ts#L327-L333",
       "variantName": "geo_bounds"
     },
     {
+      "extDocId": "search-aggregations-metrics-geocentroid-aggregation",
+      "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/search-aggregations-metrics-geocentroid-aggregation.html",
       "inherits": {
         "type": {
           "name": "AggregateBase",
@@ -70400,10 +71211,12 @@
           }
         }
       ],
-      "specLocation": "_types/aggregations/Aggregate.ts#L309-L313",
+      "specLocation": "_types/aggregations/Aggregate.ts#L335-L342",
       "variantName": "geo_centroid"
     },
     {
+      "extDocId": "search-aggregations-bucket-histogram-aggregation",
+      "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/search-aggregations-bucket-histogram-aggregation.html",
       "inherits": {
         "generics": [
           {
@@ -70425,7 +71238,7 @@
         "namespace": "_types.aggregations"
       },
       "properties": [],
-      "specLocation": "_types/aggregations/Aggregate.ts#L343-L344",
+      "specLocation": "_types/aggregations/Aggregate.ts#L372-L376",
       "variantName": "histogram"
     },
     {
@@ -70468,9 +71281,11 @@
           }
         }
       ],
-      "specLocation": "_types/aggregations/Aggregate.ts#L328-L330"
+      "specLocation": "_types/aggregations/Aggregate.ts#L357-L359"
     },
     {
+      "extDocId": "search-aggregations-bucket-datehistogram-aggregation",
+      "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/search-aggregations-bucket-datehistogram-aggregation.html",
       "inherits": {
         "generics": [
           {
@@ -70492,10 +71307,12 @@
         "namespace": "_types.aggregations"
       },
       "properties": [],
-      "specLocation": "_types/aggregations/Aggregate.ts#L351-L352",
+      "specLocation": "_types/aggregations/Aggregate.ts#L383-L386",
       "variantName": "date_histogram"
     },
     {
+      "extDocId": "search-aggregations-bucket-autodatehistogram-aggregation",
+      "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/search-aggregations-bucket-autodatehistogram-aggregation.html",
       "inherits": {
         "generics": [
           {
@@ -70529,7 +71346,7 @@
           }
         }
       ],
-      "specLocation": "_types/aggregations/Aggregate.ts#L359-L363",
+      "specLocation": "_types/aggregations/Aggregate.ts#L393-L400",
       "variantName": "auto_date_histogram"
     },
     {
@@ -70554,7 +71371,7 @@
         "namespace": "_types.aggregations"
       },
       "properties": [],
-      "specLocation": "_types/aggregations/Aggregate.ts#L365-L367",
+      "specLocation": "_types/aggregations/Aggregate.ts#L402-L404",
       "variantName": "variable_width_histogram"
     },
     {
@@ -70580,7 +71397,7 @@
         "namespace": "_types.aggregations"
       },
       "properties": [],
-      "specLocation": "_types/aggregations/Aggregate.ts#L387-L392",
+      "specLocation": "_types/aggregations/Aggregate.ts#L424-L429",
       "variantName": "sterms"
     },
     {
@@ -70634,7 +71451,7 @@
           }
         }
       ],
-      "specLocation": "_types/aggregations/Aggregate.ts#L380-L385"
+      "specLocation": "_types/aggregations/Aggregate.ts#L417-L422"
     },
     {
       "description": "Result of a `terms` aggregation when the field is some kind of whole number like a integer, long, or a date.",
@@ -70659,7 +71476,7 @@
         "namespace": "_types.aggregations"
       },
       "properties": [],
-      "specLocation": "_types/aggregations/Aggregate.ts#L402-L407",
+      "specLocation": "_types/aggregations/Aggregate.ts#L439-L444",
       "variantName": "lterms"
     },
     {
@@ -70685,7 +71502,7 @@
         "namespace": "_types.aggregations"
       },
       "properties": [],
-      "specLocation": "_types/aggregations/Aggregate.ts#L414-L419",
+      "specLocation": "_types/aggregations/Aggregate.ts#L451-L456",
       "variantName": "dterms"
     },
     {
@@ -70711,7 +71528,7 @@
         "namespace": "_types.aggregations"
       },
       "properties": [],
-      "specLocation": "_types/aggregations/Aggregate.ts#L426-L432",
+      "specLocation": "_types/aggregations/Aggregate.ts#L463-L469",
       "variantName": "umterms"
     },
     {
@@ -70737,7 +71554,7 @@
         "namespace": "_types.aggregations"
       },
       "properties": [],
-      "specLocation": "_types/aggregations/Aggregate.ts#L434-L439",
+      "specLocation": "_types/aggregations/Aggregate.ts#L471-L476",
       "variantName": "lrareterms"
     },
     {
@@ -70763,7 +71580,7 @@
         "namespace": "_types.aggregations"
       },
       "properties": [],
-      "specLocation": "_types/aggregations/Aggregate.ts#L446-L450",
+      "specLocation": "_types/aggregations/Aggregate.ts#L483-L487",
       "variantName": "srareterms"
     },
     {
@@ -70789,10 +71606,12 @@
         "namespace": "_types.aggregations"
       },
       "properties": [],
-      "specLocation": "_types/aggregations/Aggregate.ts#L456-L462",
+      "specLocation": "_types/aggregations/Aggregate.ts#L493-L499",
       "variantName": "umrareterms"
     },
     {
+      "extDocId": "search-aggregations-bucket-multi-terms-aggregation",
+      "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/search-aggregations-bucket-multi-terms-aggregation.html",
       "inherits": {
         "generics": [
           {
@@ -70814,13 +71633,15 @@
         "namespace": "_types.aggregations"
       },
       "properties": [],
-      "specLocation": "_types/aggregations/Aggregate.ts#L464-L466",
+      "specLocation": "_types/aggregations/Aggregate.ts#L501-L506",
       "variantName": "multi_terms"
     },
     {
       "attachedBehaviors": [
         "AdditionalProperties"
       ],
+      "extDocId": "search-aggregations-bucket-missing-aggregation",
+      "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/search-aggregations-bucket-missing-aggregation.html",
       "inherits": {
         "type": {
           "name": "SingleBucketAggregateBase",
@@ -70833,7 +71654,7 @@
         "namespace": "_types.aggregations"
       },
       "properties": [],
-      "specLocation": "_types/aggregations/Aggregate.ts#L488-L489",
+      "specLocation": "_types/aggregations/Aggregate.ts#L528-L532",
       "variantName": "missing"
     },
     {
@@ -70893,12 +71714,14 @@
           }
         }
       ],
-      "specLocation": "_types/aggregations/Aggregate.ts#L476-L486"
+      "specLocation": "_types/aggregations/Aggregate.ts#L516-L526"
     },
     {
       "attachedBehaviors": [
         "AdditionalProperties"
       ],
+      "extDocId": "search-aggregations-bucket-nested-aggregation",
+      "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/search-aggregations-bucket-nested-aggregation.html",
       "inherits": {
         "type": {
           "name": "SingleBucketAggregateBase",
@@ -70911,13 +71734,15 @@
         "namespace": "_types.aggregations"
       },
       "properties": [],
-      "specLocation": "_types/aggregations/Aggregate.ts#L491-L492",
+      "specLocation": "_types/aggregations/Aggregate.ts#L534-L538",
       "variantName": "nested"
     },
     {
       "attachedBehaviors": [
         "AdditionalProperties"
       ],
+      "extDocId": "search-aggregations-bucket-reverse-nested-aggregation",
+      "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/search-aggregations-bucket-reverse-nested-aggregation.html",
       "inherits": {
         "type": {
           "name": "SingleBucketAggregateBase",
@@ -70930,13 +71755,15 @@
         "namespace": "_types.aggregations"
       },
       "properties": [],
-      "specLocation": "_types/aggregations/Aggregate.ts#L494-L495",
+      "specLocation": "_types/aggregations/Aggregate.ts#L540-L544",
       "variantName": "reverse_nested"
     },
     {
       "attachedBehaviors": [
         "AdditionalProperties"
       ],
+      "extDocId": "search-aggregations-bucket-global-aggregation",
+      "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/search-aggregations-bucket-global-aggregation.html",
       "inherits": {
         "type": {
           "name": "SingleBucketAggregateBase",
@@ -70949,13 +71776,15 @@
         "namespace": "_types.aggregations"
       },
       "properties": [],
-      "specLocation": "_types/aggregations/Aggregate.ts#L497-L498",
+      "specLocation": "_types/aggregations/Aggregate.ts#L546-L550",
       "variantName": "global"
     },
     {
       "attachedBehaviors": [
         "AdditionalProperties"
       ],
+      "extDocId": "search-aggregations-bucket-filter-aggregation",
+      "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/search-aggregations-bucket-filter-aggregation.html",
       "inherits": {
         "type": {
           "name": "SingleBucketAggregateBase",
@@ -70968,13 +71797,15 @@
         "namespace": "_types.aggregations"
       },
       "properties": [],
-      "specLocation": "_types/aggregations/Aggregate.ts#L500-L501",
+      "specLocation": "_types/aggregations/Aggregate.ts#L552-L556",
       "variantName": "filter"
     },
     {
       "attachedBehaviors": [
         "AdditionalProperties"
       ],
+      "extDocId": "search-aggregations-bucket-children-aggregation",
+      "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/search-aggregations-bucket-children-aggregation.html",
       "inherits": {
         "type": {
           "name": "SingleBucketAggregateBase",
@@ -70987,13 +71818,15 @@
         "namespace": "_types.aggregations"
       },
       "properties": [],
-      "specLocation": "_types/aggregations/Aggregate.ts#L791-L792",
+      "specLocation": "_types/aggregations/Aggregate.ts#L888-L892",
       "variantName": "children"
     },
     {
       "attachedBehaviors": [
         "AdditionalProperties"
       ],
+      "extDocId": "search-aggregations-bucket-parent-aggregation",
+      "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/search-aggregations-bucket-parent-aggregation.html",
       "inherits": {
         "type": {
           "name": "SingleBucketAggregateBase",
@@ -71006,7 +71839,7 @@
         "namespace": "_types.aggregations"
       },
       "properties": [],
-      "specLocation": "_types/aggregations/Aggregate.ts#L794-L795",
+      "specLocation": "_types/aggregations/Aggregate.ts#L894-L898",
       "variantName": "parent"
     },
     {
@@ -71025,7 +71858,7 @@
         "namespace": "_types.aggregations"
       },
       "properties": [],
-      "specLocation": "_types/aggregations/Aggregate.ts#L503-L504",
+      "specLocation": "_types/aggregations/Aggregate.ts#L558-L559",
       "variantName": "sampler"
     },
     {
@@ -71044,7 +71877,7 @@
         "namespace": "_types.aggregations"
       },
       "properties": [],
-      "specLocation": "_types/aggregations/Aggregate.ts#L506-L507",
+      "specLocation": "_types/aggregations/Aggregate.ts#L561-L562",
       "variantName": "unmapped_sampler"
     },
     {
@@ -71069,10 +71902,12 @@
         "namespace": "_types.aggregations"
       },
       "properties": [],
-      "specLocation": "_types/aggregations/Aggregate.ts#L511-L513",
+      "specLocation": "_types/aggregations/Aggregate.ts#L566-L568",
       "variantName": "geohash_grid"
     },
     {
+      "extDocId": "search-aggregations-bucket-geotilegrid-aggregation",
+      "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/search-aggregations-bucket-geotilegrid-aggregation.html",
       "inherits": {
         "generics": [
           {
@@ -71094,7 +71929,7 @@
         "namespace": "_types.aggregations"
       },
       "properties": [],
-      "specLocation": "_types/aggregations/Aggregate.ts#L519-L521",
+      "specLocation": "_types/aggregations/Aggregate.ts#L574-L579",
       "variantName": "geotile_grid"
     },
     {
@@ -71119,10 +71954,12 @@
         "namespace": "_types.aggregations"
       },
       "properties": [],
-      "specLocation": "_types/aggregations/Aggregate.ts#L527-L528",
+      "specLocation": "_types/aggregations/Aggregate.ts#L585-L586",
       "variantName": "geohex_grid"
     },
     {
+      "extDocId": "search-aggregations-bucket-range-aggregation",
+      "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/search-aggregations-bucket-range-aggregation.html",
       "inherits": {
         "generics": [
           {
@@ -71144,11 +71981,13 @@
         "namespace": "_types.aggregations"
       },
       "properties": [],
-      "specLocation": "_types/aggregations/Aggregate.ts#L536-L537",
+      "specLocation": "_types/aggregations/Aggregate.ts#L594-L598",
       "variantName": "range"
     },
     {
       "description": "Result of a `date_range` aggregation. Same format as a for a `range` aggregation: `from` and `to`\nin `buckets` are milliseconds since the Epoch, represented as a floating point number.",
+      "extDocId": "search-aggregations-bucket-daterange-aggregation",
+      "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/search-aggregations-bucket-daterange-aggregation.html",
       "inherits": {
         "type": {
           "name": "RangeAggregate",
@@ -71161,11 +72000,13 @@
         "namespace": "_types.aggregations"
       },
       "properties": [],
-      "specLocation": "_types/aggregations/Aggregate.ts#L548-L553",
+      "specLocation": "_types/aggregations/Aggregate.ts#L609-L615",
       "variantName": "date_range"
     },
     {
       "description": "Result of a `geo_distance` aggregation. The unit for `from` and `to` is meters by default.",
+      "extDocId": "search-aggregations-bucket-geodistance-aggregation",
+      "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/search-aggregations-bucket-geodistance-aggregation.html",
       "inherits": {
         "type": {
           "name": "RangeAggregate",
@@ -71178,10 +72019,12 @@
         "namespace": "_types.aggregations"
       },
       "properties": [],
-      "specLocation": "_types/aggregations/Aggregate.ts#L555-L559",
+      "specLocation": "_types/aggregations/Aggregate.ts#L617-L622",
       "variantName": "geo_distance"
     },
     {
+      "extDocId": "search-aggregations-bucket-iprange-aggregation",
+      "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/search-aggregations-bucket-iprange-aggregation.html",
       "inherits": {
         "generics": [
           {
@@ -71203,10 +72046,12 @@
         "namespace": "_types.aggregations"
       },
       "properties": [],
-      "specLocation": "_types/aggregations/Aggregate.ts#L561-L563",
+      "specLocation": "_types/aggregations/Aggregate.ts#L624-L629",
       "variantName": "ip_range"
     },
     {
+      "extDocId": "search-aggregations-bucket-ipprefix-aggregation",
+      "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/search-aggregations-bucket-ipprefix-aggregation.html",
       "inherits": {
         "generics": [
           {
@@ -71228,10 +72073,12 @@
         "namespace": "_types.aggregations"
       },
       "properties": [],
-      "specLocation": "_types/aggregations/Aggregate.ts#L634-L635",
+      "specLocation": "_types/aggregations/Aggregate.ts#L709-L713",
       "variantName": "ip_prefix"
     },
     {
+      "extDocId": "search-aggregations-bucket-filters-aggregation",
+      "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/search-aggregations-bucket-filters-aggregation.html",
       "inherits": {
         "generics": [
           {
@@ -71253,10 +72100,12 @@
         "namespace": "_types.aggregations"
       },
       "properties": [],
-      "specLocation": "_types/aggregations/Aggregate.ts#L573-L574",
+      "specLocation": "_types/aggregations/Aggregate.ts#L639-L643",
       "variantName": "filters"
     },
     {
+      "extDocId": "search-aggregations-bucket-adjacency-matrix-aggregation",
+      "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/search-aggregations-bucket-adjacency-matrix-aggregation.html",
       "inherits": {
         "generics": [
           {
@@ -71278,7 +72127,7 @@
         "namespace": "_types.aggregations"
       },
       "properties": [],
-      "specLocation": "_types/aggregations/Aggregate.ts#L578-L580",
+      "specLocation": "_types/aggregations/Aggregate.ts#L647-L652",
       "variantName": "adjacency_matrix"
     },
     {
@@ -71303,10 +72152,12 @@
         "namespace": "_types.aggregations"
       },
       "properties": [],
-      "specLocation": "_types/aggregations/Aggregate.ts#L593-L595",
+      "specLocation": "_types/aggregations/Aggregate.ts#L668-L670",
       "variantName": "siglterms"
     },
     {
+      "extDocId": "search-aggregations-bucket-significanttext-aggregation",
+      "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/search-aggregations-bucket-significanttext-aggregation.html",
       "generics": [
         {
           "name": "T",
@@ -71357,7 +72208,7 @@
           }
         }
       ],
-      "specLocation": "_types/aggregations/Aggregate.ts#L586-L591"
+      "specLocation": "_types/aggregations/Aggregate.ts#L658-L666"
     },
     {
       "inherits": {
@@ -71381,7 +72232,7 @@
         "namespace": "_types.aggregations"
       },
       "properties": [],
-      "specLocation": "_types/aggregations/Aggregate.ts#L607-L609",
+      "specLocation": "_types/aggregations/Aggregate.ts#L682-L684",
       "variantName": "sigsterms"
     },
     {
@@ -71407,7 +72258,7 @@
         "namespace": "_types.aggregations"
       },
       "properties": [],
-      "specLocation": "_types/aggregations/Aggregate.ts#L615-L621",
+      "specLocation": "_types/aggregations/Aggregate.ts#L690-L696",
       "variantName": "umsigterms"
     },
     {
@@ -71444,7 +72295,7 @@
           }
         }
       ],
-      "specLocation": "_types/aggregations/Aggregate.ts#L623-L628",
+      "specLocation": "_types/aggregations/Aggregate.ts#L698-L703",
       "variantName": "composite"
     },
     {
@@ -71469,7 +72320,7 @@
         "namespace": "_types.aggregations"
       },
       "properties": [],
-      "specLocation": "_types/aggregations/Aggregate.ts#L644-L645",
+      "specLocation": "_types/aggregations/Aggregate.ts#L722-L723",
       "variantName": "frequent_item_sets"
     },
     {
@@ -71494,10 +72345,12 @@
         "namespace": "_types.aggregations"
       },
       "properties": [],
-      "specLocation": "_types/aggregations/Aggregate.ts#L652-L653",
+      "specLocation": "_types/aggregations/Aggregate.ts#L730-L731",
       "variantName": "time_series"
     },
     {
+      "extDocId": "search-aggregations-metrics-scripted-metric-aggregation",
+      "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/search-aggregations-metrics-scripted-metric-aggregation.html",
       "inherits": {
         "type": {
           "name": "AggregateBase",
@@ -71518,10 +72371,12 @@
           }
         }
       ],
-      "specLocation": "_types/aggregations/Aggregate.ts#L661-L664",
+      "specLocation": "_types/aggregations/Aggregate.ts#L739-L745",
       "variantName": "scripted_metric"
     },
     {
+      "extDocId": "search-aggregations-metrics-top-hits-aggregation",
+      "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/search-aggregations-metrics-top-hits-aggregation.html",
       "inherits": {
         "type": {
           "name": "AggregateBase",
@@ -71551,7 +72406,7 @@
           }
         }
       ],
-      "specLocation": "_types/aggregations/Aggregate.ts#L666-L669",
+      "specLocation": "_types/aggregations/Aggregate.ts#L747-L753",
       "variantName": "top_hits"
     },
     {
@@ -71582,6 +72437,8 @@
           }
         }
       ],
+      "extDocId": "search-aggregations-pipeline-inference-bucket-aggregation",
+      "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/search-aggregations-pipeline-inference-bucket-aggregation.html",
       "inherits": {
         "type": {
           "name": "AggregateBase",
@@ -71645,7 +72502,7 @@
           }
         }
       ],
-      "specLocation": "_types/aggregations/Aggregate.ts#L671-L685",
+      "specLocation": "_types/aggregations/Aggregate.ts#L755-L770",
       "variantName": "inference"
     },
     {
@@ -71692,7 +72549,7 @@
           }
         }
       ],
-      "specLocation": "_types/aggregations/Aggregate.ts#L693-L697"
+      "specLocation": "_types/aggregations/Aggregate.ts#L778-L782"
     },
     {
       "kind": "interface",
@@ -71724,7 +72581,7 @@
           }
         }
       ],
-      "specLocation": "_types/aggregations/Aggregate.ts#L699-L702"
+      "specLocation": "_types/aggregations/Aggregate.ts#L784-L787"
     },
     {
       "kind": "interface",
@@ -71767,7 +72624,7 @@
           }
         }
       ],
-      "specLocation": "_types/aggregations/Aggregate.ts#L687-L691"
+      "specLocation": "_types/aggregations/Aggregate.ts#L772-L776"
     },
     {
       "inherits": {
@@ -71953,10 +72810,12 @@
           }
         }
       ],
-      "specLocation": "_types/aggregations/Aggregate.ts#L708-L719",
+      "specLocation": "_types/aggregations/Aggregate.ts#L793-L804",
       "variantName": "string_stats"
     },
     {
+      "extDocId": "search-aggregations-metrics-boxplot-aggregation",
+      "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/search-aggregations-metrics-boxplot-aggregation.html",
       "inherits": {
         "type": {
           "name": "AggregateBase",
@@ -72124,7 +72983,7 @@
           }
         }
       ],
-      "specLocation": "_types/aggregations/Aggregate.ts#L721-L737",
+      "specLocation": "_types/aggregations/Aggregate.ts#L806-L825",
       "variantName": "boxplot"
     },
     {
@@ -72155,7 +73014,7 @@
           }
         }
       ],
-      "specLocation": "_types/aggregations/Aggregate.ts#L739-L742",
+      "specLocation": "_types/aggregations/Aggregate.ts#L827-L830",
       "variantName": "top_metrics"
     },
     {
@@ -72226,9 +73085,11 @@
           }
         }
       ],
-      "specLocation": "_types/aggregations/Aggregate.ts#L744-L748"
+      "specLocation": "_types/aggregations/Aggregate.ts#L832-L836"
     },
     {
+      "extDocId": "search-aggregations-metrics-ttest-aggregation",
+      "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/search-aggregations-metrics-ttest-aggregation.html",
       "inherits": {
         "type": {
           "name": "AggregateBase",
@@ -72276,10 +73137,12 @@
           }
         }
       ],
-      "specLocation": "_types/aggregations/Aggregate.ts#L750-L754",
+      "specLocation": "_types/aggregations/Aggregate.ts#L838-L845",
       "variantName": "t_test"
     },
     {
+      "extDocId": "search-aggregations-metrics-rate-aggregation",
+      "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/search-aggregations-metrics-rate-aggregation.html",
       "inherits": {
         "type": {
           "name": "AggregateBase",
@@ -72315,7 +73178,7 @@
           }
         }
       ],
-      "specLocation": "_types/aggregations/Aggregate.ts#L756-L760",
+      "specLocation": "_types/aggregations/Aggregate.ts#L847-L854",
       "variantName": "rate"
     },
     {
@@ -72355,10 +73218,12 @@
           }
         }
       ],
-      "specLocation": "_types/aggregations/Aggregate.ts#L762-L770",
+      "specLocation": "_types/aggregations/Aggregate.ts#L856-L864",
       "variantName": "simple_long_value"
     },
     {
+      "extDocId": "search-aggregations-matrix-stats-aggregation",
+      "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/search-aggregations-matrix-stats-aggregation.html",
       "inherits": {
         "type": {
           "name": "AggregateBase",
@@ -72397,7 +73262,7 @@
           }
         }
       ],
-      "specLocation": "_types/aggregations/Aggregate.ts#L772-L776",
+      "specLocation": "_types/aggregations/Aggregate.ts#L866-L873",
       "variantName": "matrix_stats"
     },
     {
@@ -72518,9 +73383,11 @@
           }
         }
       ],
-      "specLocation": "_types/aggregations/Aggregate.ts#L778-L787"
+      "specLocation": "_types/aggregations/Aggregate.ts#L875-L884"
     },
     {
+      "extDocId": "search-aggregations-metrics-geo-line",
+      "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/search-aggregations-metrics-geo-line.html",
       "inherits": {
         "type": {
           "name": "AggregateBase",
@@ -72563,7 +73430,7 @@
           }
         }
       ],
-      "specLocation": "_types/aggregations/Aggregate.ts#L799-L806",
+      "specLocation": "_types/aggregations/Aggregate.ts#L902-L912",
       "variantName": "geo_line"
     },
     {
@@ -72876,7 +73743,7 @@
           }
         }
       ],
-      "specLocation": "_global/search/_types/profile.ts#L93-L95"
+      "specLocation": "_global/search/_types/profile.ts#L101-L103"
     },
     {
       "kind": "interface",
@@ -72899,6 +73766,39 @@
             }
           }
         },
+        {
+          "name": "cluster",
+          "required": true,
+          "type": {
+            "kind": "instance_of",
+            "type": {
+              "name": "string",
+              "namespace": "_builtins"
+            }
+          }
+        },
+        {
+          "name": "dfs",
+          "required": false,
+          "type": {
+            "kind": "instance_of",
+            "type": {
+              "name": "DfsProfile",
+              "namespace": "_global.search._types"
+            }
+          }
+        },
+        {
+          "name": "fetch",
+          "required": false,
+          "type": {
+            "kind": "instance_of",
+            "type": {
+              "name": "FetchProfile",
+              "namespace": "_global.search._types"
+            }
+          }
+        },
         {
           "name": "id",
           "required": true,
@@ -72910,6 +73810,28 @@
             }
           }
         },
+        {
+          "name": "index",
+          "required": true,
+          "type": {
+            "kind": "instance_of",
+            "type": {
+              "name": "IndexName",
+              "namespace": "_types"
+            }
+          }
+        },
+        {
+          "name": "node_id",
+          "required": true,
+          "type": {
+            "kind": "instance_of",
+            "type": {
+              "name": "NodeId",
+              "namespace": "_types"
+            }
+          }
+        },
         {
           "name": "searches",
           "required": true,
@@ -72925,18 +73847,18 @@
           }
         },
         {
-          "name": "fetch",
-          "required": false,
+          "name": "shard_id",
+          "required": true,
           "type": {
             "kind": "instance_of",
             "type": {
-              "name": "FetchProfile",
-              "namespace": "_global.search._types"
+              "name": "long",
+              "namespace": "_types"
             }
           }
         }
       ],
-      "specLocation": "_global/search/_types/profile.ts#L132-L137"
+      "specLocation": "_global/search/_types/profile.ts#L142-L152"
     },
     {
       "kind": "interface",
@@ -73024,7 +73946,7 @@
           }
         }
       ],
-      "specLocation": "_global/search/_types/profile.ts#L77-L84"
+      "specLocation": "_global/search/_types/profile.ts#L85-L92"
     },
     {
       "kind": "interface",
@@ -73166,7 +74088,7 @@
           }
         }
       ],
-      "specLocation": "_global/search/_types/profile.ts#L23-L36"
+      "specLocation": "_global/search/_types/profile.ts#L26-L39"
     },
     {
       "kind": "interface",
@@ -73488,9 +74410,53 @@
               "namespace": "_builtins"
             }
           }
+        },
+        {
+          "name": "brute_force_used",
+          "required": false,
+          "type": {
+            "kind": "instance_of",
+            "type": {
+              "name": "integer",
+              "namespace": "_types"
+            }
+          }
+        },
+        {
+          "name": "dynamic_pruning_attempted",
+          "required": false,
+          "type": {
+            "kind": "instance_of",
+            "type": {
+              "name": "integer",
+              "namespace": "_types"
+            }
+          }
+        },
+        {
+          "name": "dynamic_pruning_used",
+          "required": false,
+          "type": {
+            "kind": "instance_of",
+            "type": {
+              "name": "integer",
+              "namespace": "_types"
+            }
+          }
+        },
+        {
+          "name": "skipped_due_to_no_data",
+          "required": false,
+          "type": {
+            "kind": "instance_of",
+            "type": {
+              "name": "integer",
+              "namespace": "_types"
+            }
+          }
         }
       ],
-      "specLocation": "_global/search/_types/profile.ts#L39-L68"
+      "specLocation": "_global/search/_types/profile.ts#L42-L76"
     },
     {
       "kind": "interface",
@@ -73544,7 +74510,955 @@
           }
         }
       ],
-      "specLocation": "_global/search/_types/profile.ts#L70-L75"
+      "specLocation": "_global/search/_types/profile.ts#L78-L83"
+    },
+    {
+      "kind": "interface",
+      "name": {
+        "name": "DfsProfile",
+        "namespace": "_global.search._types"
+      },
+      "properties": [
+        {
+          "name": "statistics",
+          "required": false,
+          "type": {
+            "kind": "instance_of",
+            "type": {
+              "name": "DfsStatisticsProfile",
+              "namespace": "_global.search._types"
+            }
+          }
+        },
+        {
+          "name": "knn",
+          "required": false,
+          "type": {
+            "kind": "array_of",
+            "value": {
+              "kind": "instance_of",
+              "type": {
+                "name": "DfsKnnProfile",
+                "namespace": "_global.search._types"
+              }
+            }
+          }
+        }
+      ],
+      "specLocation": "_global/search/_types/profile.ts#L154-L157"
+    },
+    {
+      "kind": "interface",
+      "name": {
+        "name": "DfsStatisticsProfile",
+        "namespace": "_global.search._types"
+      },
+      "properties": [
+        {
+          "name": "type",
+          "required": true,
+          "type": {
+            "kind": "instance_of",
+            "type": {
+              "name": "string",
+              "namespace": "_builtins"
+            }
+          }
+        },
+        {
+          "name": "description",
+          "required": true,
+          "type": {
+            "kind": "instance_of",
+            "type": {
+              "name": "string",
+              "namespace": "_builtins"
+            }
+          }
+        },
+        {
+          "name": "time",
+          "required": false,
+          "type": {
+            "kind": "instance_of",
+            "type": {
+              "name": "Duration",
+              "namespace": "_types"
+            }
+          }
+        },
+        {
+          "name": "time_in_nanos",
+          "required": true,
+          "type": {
+            "generics": [
+              {
+                "kind": "instance_of",
+                "type": {
+                  "name": "UnitNanos",
+                  "namespace": "_types"
+                }
+              }
+            ],
+            "kind": "instance_of",
+            "type": {
+              "name": "DurationValue",
+              "namespace": "_types"
+            }
+          }
+        },
+        {
+          "name": "breakdown",
+          "required": true,
+          "type": {
+            "kind": "instance_of",
+            "type": {
+              "name": "DfsStatisticsBreakdown",
+              "namespace": "_global.search._types"
+            }
+          }
+        },
+        {
+          "name": "debug",
+          "required": false,
+          "type": {
+            "key": {
+              "kind": "instance_of",
+              "type": {
+                "name": "string",
+                "namespace": "_builtins"
+              }
+            },
+            "kind": "dictionary_of",
+            "singleKey": false,
+            "value": {
+              "kind": "user_defined_value"
+            }
+          }
+        },
+        {
+          "name": "children",
+          "required": false,
+          "type": {
+            "kind": "array_of",
+            "value": {
+              "kind": "instance_of",
+              "type": {
+                "name": "DfsStatisticsProfile",
+                "namespace": "_global.search._types"
+              }
+            }
+          }
+        }
+      ],
+      "specLocation": "_global/search/_types/profile.ts#L159-L167"
+    },
+    {
+      "kind": "interface",
+      "name": {
+        "name": "DfsStatisticsBreakdown",
+        "namespace": "_global.search._types"
+      },
+      "properties": [
+        {
+          "name": "collection_statistics",
+          "required": true,
+          "type": {
+            "kind": "instance_of",
+            "type": {
+              "name": "long",
+              "namespace": "_types"
+            }
+          }
+        },
+        {
+          "name": "collection_statistics_count",
+          "required": true,
+          "type": {
+            "kind": "instance_of",
+            "type": {
+              "name": "long",
+              "namespace": "_types"
+            }
+          }
+        },
+        {
+          "name": "create_weight",
+          "required": true,
+          "type": {
+            "kind": "instance_of",
+            "type": {
+              "name": "long",
+              "namespace": "_types"
+            }
+          }
+        },
+        {
+          "name": "create_weight_count",
+          "required": true,
+          "type": {
+            "kind": "instance_of",
+            "type": {
+              "name": "long",
+              "namespace": "_types"
+            }
+          }
+        },
+        {
+          "name": "rewrite",
+          "required": true,
+          "type": {
+            "kind": "instance_of",
+            "type": {
+              "name": "long",
+              "namespace": "_types"
+            }
+          }
+        },
+        {
+          "name": "rewrite_count",
+          "required": true,
+          "type": {
+            "kind": "instance_of",
+            "type": {
+              "name": "long",
+              "namespace": "_types"
+            }
+          }
+        },
+        {
+          "name": "term_statistics",
+          "required": true,
+          "type": {
+            "kind": "instance_of",
+            "type": {
+              "name": "long",
+              "namespace": "_types"
+            }
+          }
+        },
+        {
+          "name": "term_statistics_count",
+          "required": true,
+          "type": {
+            "kind": "instance_of",
+            "type": {
+              "name": "long",
+              "namespace": "_types"
+            }
+          }
+        }
+      ],
+      "specLocation": "_global/search/_types/profile.ts#L170-L179"
+    },
+    {
+      "kind": "interface",
+      "name": {
+        "name": "DfsKnnProfile",
+        "namespace": "_global.search._types"
+      },
+      "properties": [
+        {
+          "name": "vector_operations_count",
+          "required": false,
+          "type": {
+            "kind": "instance_of",
+            "type": {
+              "name": "long",
+              "namespace": "_types"
+            }
+          }
+        },
+        {
+          "name": "query",
+          "required": true,
+          "type": {
+            "kind": "array_of",
+            "value": {
+              "kind": "instance_of",
+              "type": {
+                "name": "KnnQueryProfileResult",
+                "namespace": "_global.search._types"
+              }
+            }
+          }
+        },
+        {
+          "name": "rewrite_time",
+          "required": true,
+          "type": {
+            "kind": "instance_of",
+            "type": {
+              "name": "long",
+              "namespace": "_types"
+            }
+          }
+        },
+        {
+          "name": "collector",
+          "required": true,
+          "type": {
+            "kind": "array_of",
+            "value": {
+              "kind": "instance_of",
+              "type": {
+                "name": "KnnCollectorResult",
+                "namespace": "_global.search._types"
+              }
+            }
+          }
+        }
+      ],
+      "specLocation": "_global/search/_types/profile.ts#L181-L186"
+    },
+    {
+      "kind": "interface",
+      "name": {
+        "name": "KnnQueryProfileResult",
+        "namespace": "_global.search._types"
+      },
+      "properties": [
+        {
+          "name": "type",
+          "required": true,
+          "type": {
+            "kind": "instance_of",
+            "type": {
+              "name": "string",
+              "namespace": "_builtins"
+            }
+          }
+        },
+        {
+          "name": "description",
+          "required": true,
+          "type": {
+            "kind": "instance_of",
+            "type": {
+              "name": "string",
+              "namespace": "_builtins"
+            }
+          }
+        },
+        {
+          "name": "time",
+          "required": false,
+          "type": {
+            "kind": "instance_of",
+            "type": {
+              "name": "Duration",
+              "namespace": "_types"
+            }
+          }
+        },
+        {
+          "name": "time_in_nanos",
+          "required": true,
+          "type": {
+            "generics": [
+              {
+                "kind": "instance_of",
+                "type": {
+                  "name": "UnitNanos",
+                  "namespace": "_types"
+                }
+              }
+            ],
+            "kind": "instance_of",
+            "type": {
+              "name": "DurationValue",
+              "namespace": "_types"
+            }
+          }
+        },
+        {
+          "name": "breakdown",
+          "required": true,
+          "type": {
+            "kind": "instance_of",
+            "type": {
+              "name": "KnnQueryProfileBreakdown",
+              "namespace": "_global.search._types"
+            }
+          }
+        },
+        {
+          "name": "debug",
+          "required": false,
+          "type": {
+            "key": {
+              "kind": "instance_of",
+              "type": {
+                "name": "string",
+                "namespace": "_builtins"
+              }
+            },
+            "kind": "dictionary_of",
+            "singleKey": false,
+            "value": {
+              "kind": "user_defined_value"
+            }
+          }
+        },
+        {
+          "name": "children",
+          "required": false,
+          "type": {
+            "kind": "array_of",
+            "value": {
+              "kind": "instance_of",
+              "type": {
+                "name": "KnnQueryProfileResult",
+                "namespace": "_global.search._types"
+              }
+            }
+          }
+        }
+      ],
+      "specLocation": "_global/search/_types/profile.ts#L188-L196"
+    },
+    {
+      "kind": "interface",
+      "name": {
+        "name": "KnnQueryProfileBreakdown",
+        "namespace": "_global.search._types"
+      },
+      "properties": [
+        {
+          "name": "advance",
+          "required": true,
+          "type": {
+            "kind": "instance_of",
+            "type": {
+              "name": "long",
+              "namespace": "_types"
+            }
+          }
+        },
+        {
+          "name": "advance_count",
+          "required": true,
+          "type": {
+            "kind": "instance_of",
+            "type": {
+              "name": "long",
+              "namespace": "_types"
+            }
+          }
+        },
+        {
+          "name": "build_scorer",
+          "required": true,
+          "type": {
+            "kind": "instance_of",
+            "type": {
+              "name": "long",
+              "namespace": "_types"
+            }
+          }
+        },
+        {
+          "name": "build_scorer_count",
+          "required": true,
+          "type": {
+            "kind": "instance_of",
+            "type": {
+              "name": "long",
+              "namespace": "_types"
+            }
+          }
+        },
+        {
+          "name": "compute_max_score",
+          "required": true,
+          "type": {
+            "kind": "instance_of",
+            "type": {
+              "name": "long",
+              "namespace": "_types"
+            }
+          }
+        },
+        {
+          "name": "compute_max_score_count",
+          "required": true,
+          "type": {
+            "kind": "instance_of",
+            "type": {
+              "name": "long",
+              "namespace": "_types"
+            }
+          }
+        },
+        {
+          "name": "count_weight",
+          "required": true,
+          "type": {
+            "kind": "instance_of",
+            "type": {
+              "name": "long",
+              "namespace": "_types"
+            }
+          }
+        },
+        {
+          "name": "count_weight_count",
+          "required": true,
+          "type": {
+            "kind": "instance_of",
+            "type": {
+              "name": "long",
+              "namespace": "_types"
+            }
+          }
+        },
+        {
+          "name": "create_weight",
+          "required": true,
+          "type": {
+            "kind": "instance_of",
+            "type": {
+              "name": "long",
+              "namespace": "_types"
+            }
+          }
+        },
+        {
+          "name": "create_weight_count",
+          "required": true,
+          "type": {
+            "kind": "instance_of",
+            "type": {
+              "name": "long",
+              "namespace": "_types"
+            }
+          }
+        },
+        {
+          "name": "match",
+          "required": true,
+          "type": {
+            "kind": "instance_of",
+            "type": {
+              "name": "long",
+              "namespace": "_types"
+            }
+          }
+        },
+        {
+          "name": "match_count",
+          "required": true,
+          "type": {
+            "kind": "instance_of",
+            "type": {
+              "name": "long",
+              "namespace": "_types"
+            }
+          }
+        },
+        {
+          "name": "next_doc",
+          "required": true,
+          "type": {
+            "kind": "instance_of",
+            "type": {
+              "name": "long",
+              "namespace": "_types"
+            }
+          }
+        },
+        {
+          "name": "next_doc_count",
+          "required": true,
+          "type": {
+            "kind": "instance_of",
+            "type": {
+              "name": "long",
+              "namespace": "_types"
+            }
+          }
+        },
+        {
+          "name": "score",
+          "required": true,
+          "type": {
+            "kind": "instance_of",
+            "type": {
+              "name": "long",
+              "namespace": "_types"
+            }
+          }
+        },
+        {
+          "name": "score_count",
+          "required": true,
+          "type": {
+            "kind": "instance_of",
+            "type": {
+              "name": "long",
+              "namespace": "_types"
+            }
+          }
+        },
+        {
+          "name": "set_min_competitive_score",
+          "required": true,
+          "type": {
+            "kind": "instance_of",
+            "type": {
+              "name": "long",
+              "namespace": "_types"
+            }
+          }
+        },
+        {
+          "name": "set_min_competitive_score_count",
+          "required": true,
+          "type": {
+            "kind": "instance_of",
+            "type": {
+              "name": "long",
+              "namespace": "_types"
+            }
+          }
+        },
+        {
+          "name": "shallow_advance",
+          "required": true,
+          "type": {
+            "kind": "instance_of",
+            "type": {
+              "name": "long",
+              "namespace": "_types"
+            }
+          }
+        },
+        {
+          "name": "shallow_advance_count",
+          "required": true,
+          "type": {
+            "kind": "instance_of",
+            "type": {
+              "name": "long",
+              "namespace": "_types"
+            }
+          }
+        }
+      ],
+      "specLocation": "_global/search/_types/profile.ts#L199-L220"
+    },
+    {
+      "kind": "interface",
+      "name": {
+        "name": "KnnCollectorResult",
+        "namespace": "_global.search._types"
+      },
+      "properties": [
+        {
+          "name": "name",
+          "required": true,
+          "type": {
+            "kind": "instance_of",
+            "type": {
+              "name": "string",
+              "namespace": "_builtins"
+            }
+          }
+        },
+        {
+          "name": "reason",
+          "required": true,
+          "type": {
+            "kind": "instance_of",
+            "type": {
+              "name": "string",
+              "namespace": "_builtins"
+            }
+          }
+        },
+        {
+          "name": "time",
+          "required": false,
+          "type": {
+            "kind": "instance_of",
+            "type": {
+              "name": "Duration",
+              "namespace": "_types"
+            }
+          }
+        },
+        {
+          "name": "time_in_nanos",
+          "required": true,
+          "type": {
+            "generics": [
+              {
+                "kind": "instance_of",
+                "type": {
+                  "name": "UnitNanos",
+                  "namespace": "_types"
+                }
+              }
+            ],
+            "kind": "instance_of",
+            "type": {
+              "name": "DurationValue",
+              "namespace": "_types"
+            }
+          }
+        },
+        {
+          "name": "children",
+          "required": false,
+          "type": {
+            "kind": "array_of",
+            "value": {
+              "kind": "instance_of",
+              "type": {
+                "name": "KnnCollectorResult",
+                "namespace": "_global.search._types"
+              }
+            }
+          }
+        }
+      ],
+      "specLocation": "_global/search/_types/profile.ts#L222-L228"
+    },
+    {
+      "kind": "interface",
+      "name": {
+        "name": "FetchProfile",
+        "namespace": "_global.search._types"
+      },
+      "properties": [
+        {
+          "name": "type",
+          "required": true,
+          "type": {
+            "kind": "instance_of",
+            "type": {
+              "name": "string",
+              "namespace": "_builtins"
+            }
+          }
+        },
+        {
+          "name": "description",
+          "required": true,
+          "type": {
+            "kind": "instance_of",
+            "type": {
+              "name": "string",
+              "namespace": "_builtins"
+            }
+          }
+        },
+        {
+          "name": "time_in_nanos",
+          "required": true,
+          "type": {
+            "generics": [
+              {
+                "kind": "instance_of",
+                "type": {
+                  "name": "UnitNanos",
+                  "namespace": "_types"
+                }
+              }
+            ],
+            "kind": "instance_of",
+            "type": {
+              "name": "DurationValue",
+              "namespace": "_types"
+            }
+          }
+        },
+        {
+          "name": "breakdown",
+          "required": true,
+          "type": {
+            "kind": "instance_of",
+            "type": {
+              "name": "FetchProfileBreakdown",
+              "namespace": "_global.search._types"
+            }
+          }
+        },
+        {
+          "name": "debug",
+          "required": false,
+          "type": {
+            "kind": "instance_of",
+            "type": {
+              "name": "FetchProfileDebug",
+              "namespace": "_global.search._types"
+            }
+          }
+        },
+        {
+          "name": "children",
+          "required": false,
+          "type": {
+            "kind": "array_of",
+            "value": {
+              "kind": "instance_of",
+              "type": {
+                "name": "FetchProfile",
+                "namespace": "_global.search._types"
+              }
+            }
+          }
+        }
+      ],
+      "specLocation": "_global/search/_types/profile.ts#L230-L237"
+    },
+    {
+      "kind": "interface",
+      "name": {
+        "name": "FetchProfileBreakdown",
+        "namespace": "_global.search._types"
+      },
+      "properties": [
+        {
+          "name": "load_source",
+          "required": false,
+          "type": {
+            "kind": "instance_of",
+            "type": {
+              "name": "integer",
+              "namespace": "_types"
+            }
+          }
+        },
+        {
+          "name": "load_source_count",
+          "required": false,
+          "type": {
+            "kind": "instance_of",
+            "type": {
+              "name": "integer",
+              "namespace": "_types"
+            }
+          }
+        },
+        {
+          "name": "load_stored_fields",
+          "required": false,
+          "type": {
+            "kind": "instance_of",
+            "type": {
+              "name": "integer",
+              "namespace": "_types"
+            }
+          }
+        },
+        {
+          "name": "load_stored_fields_count",
+          "required": false,
+          "type": {
+            "kind": "instance_of",
+            "type": {
+              "name": "integer",
+              "namespace": "_types"
+            }
+          }
+        },
+        {
+          "name": "next_reader",
+          "required": false,
+          "type": {
+            "kind": "instance_of",
+            "type": {
+              "name": "integer",
+              "namespace": "_types"
+            }
+          }
+        },
+        {
+          "name": "next_reader_count",
+          "required": false,
+          "type": {
+            "kind": "instance_of",
+            "type": {
+              "name": "integer",
+              "namespace": "_types"
+            }
+          }
+        },
+        {
+          "name": "process_count",
+          "required": false,
+          "type": {
+            "kind": "instance_of",
+            "type": {
+              "name": "integer",
+              "namespace": "_types"
+            }
+          }
+        },
+        {
+          "name": "process",
+          "required": false,
+          "type": {
+            "kind": "instance_of",
+            "type": {
+              "name": "integer",
+              "namespace": "_types"
+            }
+          }
+        }
+      ],
+      "specLocation": "_global/search/_types/profile.ts#L239-L248"
+    },
+    {
+      "kind": "interface",
+      "name": {
+        "name": "FetchProfileDebug",
+        "namespace": "_global.search._types"
+      },
+      "properties": [
+        {
+          "name": "stored_fields",
+          "required": false,
+          "type": {
+            "kind": "array_of",
+            "value": {
+              "kind": "instance_of",
+              "type": {
+                "name": "string",
+                "namespace": "_builtins"
+              }
+            }
+          }
+        },
+        {
+          "name": "fast_path",
+          "required": false,
+          "type": {
+            "kind": "instance_of",
+            "type": {
+              "name": "integer",
+              "namespace": "_types"
+            }
+          }
+        }
+      ],
+      "specLocation": "_global/search/_types/profile.ts#L250-L253"
+    },
+    {
+      "kind": "type_alias",
+      "name": {
+        "name": "NodeId",
+        "namespace": "_types"
+      },
+      "specLocation": "_types/common.ts#L63-L63",
+      "type": {
+        "kind": "instance_of",
+        "type": {
+          "name": "string",
+          "namespace": "_builtins"
+        }
+      }
     },
     {
       "kind": "interface",
@@ -73593,7 +75507,7 @@
           }
         }
       ],
-      "specLocation": "_global/search/_types/profile.ts#L126-L130"
+      "specLocation": "_global/search/_types/profile.ts#L136-L140"
     },
     {
       "kind": "interface",
@@ -73659,7 +75573,7 @@
           }
         }
       ],
-      "specLocation": "_global/search/_types/profile.ts#L86-L91"
+      "specLocation": "_global/search/_types/profile.ts#L94-L99"
     },
     {
       "kind": "interface",
@@ -73736,7 +75650,7 @@
           }
         }
       ],
-      "specLocation": "_global/search/_types/profile.ts#L118-L124"
+      "specLocation": "_global/search/_types/profile.ts#L128-L134"
     },
     {
       "kind": "interface",
@@ -73922,7 +75836,7 @@
           }
         },
         {
-          "name": "set_min_competitive_score",
+          "name": "count_weight",
           "required": true,
           "type": {
             "kind": "instance_of",
@@ -73933,7 +75847,7 @@
           }
         },
         {
-          "name": "set_min_competitive_score_count",
+          "name": "count_weight_count",
           "required": true,
           "type": {
             "kind": "instance_of",
@@ -73942,230 +75856,31 @@
               "namespace": "_types"
             }
           }
-        }
-      ],
-      "specLocation": "_global/search/_types/profile.ts#L97-L116"
-    },
-    {
-      "kind": "interface",
-      "name": {
-        "name": "FetchProfile",
-        "namespace": "_global.search._types"
-      },
-      "properties": [
-        {
-          "name": "type",
-          "required": true,
-          "type": {
-            "kind": "instance_of",
-            "type": {
-              "name": "string",
-              "namespace": "_builtins"
-            }
-          }
         },
         {
-          "name": "description",
-          "required": true,
-          "type": {
-            "kind": "instance_of",
-            "type": {
-              "name": "string",
-              "namespace": "_builtins"
-            }
-          }
-        },
-        {
-          "name": "time_in_nanos",
+          "name": "set_min_competitive_score",
           "required": true,
           "type": {
-            "generics": [
-              {
-                "kind": "instance_of",
-                "type": {
-                  "name": "UnitNanos",
-                  "namespace": "_types"
-                }
-              }
-            ],
             "kind": "instance_of",
             "type": {
-              "name": "DurationValue",
+              "name": "long",
               "namespace": "_types"
             }
           }
         },
         {
-          "name": "breakdown",
+          "name": "set_min_competitive_score_count",
           "required": true,
           "type": {
             "kind": "instance_of",
             "type": {
-              "name": "FetchProfileBreakdown",
-              "namespace": "_global.search._types"
-            }
-          }
-        },
-        {
-          "name": "debug",
-          "required": false,
-          "type": {
-            "kind": "instance_of",
-            "type": {
-              "name": "FetchProfileDebug",
-              "namespace": "_global.search._types"
-            }
-          }
-        },
-        {
-          "name": "children",
-          "required": false,
-          "type": {
-            "kind": "array_of",
-            "value": {
-              "kind": "instance_of",
-              "type": {
-                "name": "FetchProfile",
-                "namespace": "_global.search._types"
-              }
-            }
-          }
-        }
-      ],
-      "specLocation": "_global/search/_types/profile.ts#L139-L146"
-    },
-    {
-      "kind": "interface",
-      "name": {
-        "name": "FetchProfileBreakdown",
-        "namespace": "_global.search._types"
-      },
-      "properties": [
-        {
-          "name": "load_source",
-          "required": false,
-          "type": {
-            "kind": "instance_of",
-            "type": {
-              "name": "integer",
-              "namespace": "_types"
-            }
-          }
-        },
-        {
-          "name": "load_source_count",
-          "required": false,
-          "type": {
-            "kind": "instance_of",
-            "type": {
-              "name": "integer",
-              "namespace": "_types"
-            }
-          }
-        },
-        {
-          "name": "load_stored_fields",
-          "required": false,
-          "type": {
-            "kind": "instance_of",
-            "type": {
-              "name": "integer",
-              "namespace": "_types"
-            }
-          }
-        },
-        {
-          "name": "load_stored_fields_count",
-          "required": false,
-          "type": {
-            "kind": "instance_of",
-            "type": {
-              "name": "integer",
-              "namespace": "_types"
-            }
-          }
-        },
-        {
-          "name": "next_reader",
-          "required": false,
-          "type": {
-            "kind": "instance_of",
-            "type": {
-              "name": "integer",
-              "namespace": "_types"
-            }
-          }
-        },
-        {
-          "name": "next_reader_count",
-          "required": false,
-          "type": {
-            "kind": "instance_of",
-            "type": {
-              "name": "integer",
-              "namespace": "_types"
-            }
-          }
-        },
-        {
-          "name": "process_count",
-          "required": false,
-          "type": {
-            "kind": "instance_of",
-            "type": {
-              "name": "integer",
-              "namespace": "_types"
-            }
-          }
-        },
-        {
-          "name": "process",
-          "required": false,
-          "type": {
-            "kind": "instance_of",
-            "type": {
-              "name": "integer",
-              "namespace": "_types"
-            }
-          }
-        }
-      ],
-      "specLocation": "_global/search/_types/profile.ts#L148-L157"
-    },
-    {
-      "kind": "interface",
-      "name": {
-        "name": "FetchProfileDebug",
-        "namespace": "_global.search._types"
-      },
-      "properties": [
-        {
-          "name": "stored_fields",
-          "required": false,
-          "type": {
-            "kind": "array_of",
-            "value": {
-              "kind": "instance_of",
-              "type": {
-                "name": "string",
-                "namespace": "_builtins"
-              }
-            }
-          }
-        },
-        {
-          "name": "fast_path",
-          "required": false,
-          "type": {
-            "kind": "instance_of",
-            "type": {
-              "name": "integer",
+              "name": "long",
               "namespace": "_types"
             }
           }
         }
       ],
-      "specLocation": "_global/search/_types/profile.ts#L159-L162"
+      "specLocation": "_global/search/_types/profile.ts#L105-L126"
     },
     {
       "kind": "type_alias",
@@ -75340,38 +77055,6 @@
         }
       }
     },
-    {
-      "description": "A map hex cell (H3) reference",
-      "kind": "type_alias",
-      "name": {
-        "name": "GeoHexCell",
-        "namespace": "_types"
-      },
-      "specLocation": "_types/Geo.ts#L96-L97",
-      "type": {
-        "kind": "instance_of",
-        "type": {
-          "name": "string",
-          "namespace": "_builtins"
-        }
-      }
-    },
-    {
-      "description": "A map tile reference, represented as `{zoom}/{x}/{y}`",
-      "kind": "type_alias",
-      "name": {
-        "name": "GeoTile",
-        "namespace": "_types"
-      },
-      "specLocation": "_types/Geo.ts#L93-L94",
-      "type": {
-        "kind": "instance_of",
-        "type": {
-          "name": "string",
-          "namespace": "_builtins"
-        }
-      }
-    },
     {
       "kind": "type_alias",
       "name": {
@@ -75697,21 +77380,6 @@
         }
       }
     },
-    {
-      "kind": "type_alias",
-      "name": {
-        "name": "NodeId",
-        "namespace": "_types"
-      },
-      "specLocation": "_types/common.ts#L63-L63",
-      "type": {
-        "kind": "instance_of",
-        "type": {
-          "name": "string",
-          "namespace": "_builtins"
-        }
-      }
-    },
     {
       "kind": "type_alias",
       "name": {
@@ -79719,12 +81387,14 @@
         "name",
         "definition"
       ],
+      "extDocId": "analysis-charfilters",
+      "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/analysis-charfilters.html",
       "kind": "type_alias",
       "name": {
         "name": "CharFilter",
         "namespace": "_types.analysis"
       },
-      "specLocation": "_types/analysis/char_filters.ts#L28-L30",
+      "specLocation": "_types/analysis/char_filters.ts#L28-L33",
       "type": {
         "items": [
           {
@@ -79751,7 +81421,7 @@
         "name": "CharFilterDefinition",
         "namespace": "_types.analysis"
       },
-      "specLocation": "_types/analysis/char_filters.ts#L32-L41",
+      "specLocation": "_types/analysis/char_filters.ts#L35-L44",
       "type": {
         "items": [
           {
@@ -79834,7 +81504,7 @@
           }
         }
       ],
-      "specLocation": "_types/analysis/char_filters.ts#L43-L46"
+      "specLocation": "_types/analysis/char_filters.ts#L46-L49"
     },
     {
       "kind": "interface",
@@ -79904,7 +81574,7 @@
           }
         }
       ],
-      "specLocation": "_types/analysis/char_filters.ts#L48-L52"
+      "specLocation": "_types/analysis/char_filters.ts#L51-L55"
     },
     {
       "inherits": {
@@ -79961,7 +81631,7 @@
           }
         }
       ],
-      "specLocation": "_types/analysis/char_filters.ts#L54-L59"
+      "specLocation": "_types/analysis/char_filters.ts#L57-L62"
     },
     {
       "inherits": {
@@ -80469,12 +82139,14 @@
         "name",
         "definition"
       ],
+      "extDocId": "analysis-tokenfilters",
+      "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/analysis-tokenfilters.html",
       "kind": "type_alias",
       "name": {
         "name": "TokenFilter",
         "namespace": "_types.analysis"
       },
-      "specLocation": "_types/analysis/token_filters.ts#L345-L347",
+      "specLocation": "_types/analysis/token_filters.ts#L345-L350",
       "type": {
         "items": [
           {
@@ -80501,7 +82173,7 @@
         "name": "TokenFilterDefinition",
         "namespace": "_types.analysis"
       },
-      "specLocation": "_types/analysis/token_filters.ts#L349-L401",
+      "specLocation": "_types/analysis/token_filters.ts#L352-L404",
       "type": {
         "items": [
           {
@@ -81598,14 +83270,26 @@
           "name": "keywords",
           "required": false,
           "type": {
-            "kind": "array_of",
-            "value": {
-              "kind": "instance_of",
-              "type": {
-                "name": "string",
-                "namespace": "_builtins"
+            "items": [
+              {
+                "kind": "instance_of",
+                "type": {
+                  "name": "string",
+                  "namespace": "_builtins"
+                }
+              },
+              {
+                "kind": "array_of",
+                "value": {
+                  "kind": "instance_of",
+                  "type": {
+                    "name": "string",
+                    "namespace": "_builtins"
+                  }
+                }
               }
-            }
+            ],
+            "kind": "union_of"
           }
         },
         {
@@ -83740,12 +85424,14 @@
         "name",
         "definition"
       ],
+      "extDocId": "analysis-tokenizers",
+      "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/analysis-tokenizers.html",
       "kind": "type_alias",
       "name": {
         "name": "Tokenizer",
         "namespace": "_types.analysis"
       },
-      "specLocation": "_types/analysis/tokenizers.ts#L137-L139",
+      "specLocation": "_types/analysis/tokenizers.ts#L140-L145",
       "type": {
         "items": [
           {
@@ -83772,7 +85458,7 @@
         "name": "TokenizerDefinition",
         "namespace": "_types.analysis"
       },
-      "specLocation": "_types/analysis/tokenizers.ts#L141-L164",
+      "specLocation": "_types/analysis/tokenizers.ts#L147-L170",
       "type": {
         "items": [
           {
@@ -84049,7 +85735,7 @@
         },
         {
           "name": "max_gram",
-          "required": true,
+          "required": false,
           "type": {
             "kind": "instance_of",
             "type": {
@@ -84060,7 +85746,7 @@
         },
         {
           "name": "min_gram",
-          "required": true,
+          "required": false,
           "type": {
             "kind": "instance_of",
             "type": {
@@ -84110,7 +85796,8 @@
         },
         {
           "name": "buffer_size",
-          "required": true,
+          "required": false,
+          "serverDefault": 256,
           "type": {
             "kind": "instance_of",
             "type": {
@@ -84120,7 +85807,7 @@
           }
         }
       ],
-      "specLocation": "_types/analysis/tokenizers.ts#L68-L71"
+      "specLocation": "_types/analysis/tokenizers.ts#L68-L74"
     },
     {
       "inherits": {
@@ -84144,7 +85831,7 @@
           }
         }
       ],
-      "specLocation": "_types/analysis/tokenizers.ts#L73-L75"
+      "specLocation": "_types/analysis/tokenizers.ts#L76-L78"
     },
     {
       "inherits": {
@@ -84168,7 +85855,7 @@
           }
         }
       ],
-      "specLocation": "_types/analysis/tokenizers.ts#L77-L79"
+      "specLocation": "_types/analysis/tokenizers.ts#L80-L82"
     },
     {
       "inherits": {
@@ -84204,7 +85891,7 @@
         },
         {
           "name": "max_gram",
-          "required": true,
+          "required": false,
           "type": {
             "kind": "instance_of",
             "type": {
@@ -84215,7 +85902,7 @@
         },
         {
           "name": "min_gram",
-          "required": true,
+          "required": false,
           "type": {
             "kind": "instance_of",
             "type": {
@@ -84240,7 +85927,7 @@
           }
         }
       ],
-      "specLocation": "_types/analysis/tokenizers.ts#L81-L90"
+      "specLocation": "_types/analysis/tokenizers.ts#L84-L93"
     },
     {
       "inherits": {
@@ -84346,7 +86033,7 @@
           }
         }
       ],
-      "specLocation": "_types/analysis/tokenizers.ts#L92-L99"
+      "specLocation": "_types/analysis/tokenizers.ts#L95-L102"
     },
     {
       "inherits": {
@@ -84403,7 +86090,7 @@
           }
         }
       ],
-      "specLocation": "_types/analysis/tokenizers.ts#L101-L106"
+      "specLocation": "_types/analysis/tokenizers.ts#L104-L109"
     },
     {
       "inherits": {
@@ -84438,7 +86125,7 @@
           }
         }
       ],
-      "specLocation": "_types/analysis/tokenizers.ts#L108-L111"
+      "specLocation": "_types/analysis/tokenizers.ts#L111-L114"
     },
     {
       "inherits": {
@@ -84473,7 +86160,7 @@
           }
         }
       ],
-      "specLocation": "_types/analysis/tokenizers.ts#L113-L116"
+      "specLocation": "_types/analysis/tokenizers.ts#L116-L119"
     },
     {
       "inherits": {
@@ -84508,7 +86195,7 @@
           }
         }
       ],
-      "specLocation": "_types/analysis/tokenizers.ts#L118-L121"
+      "specLocation": "_types/analysis/tokenizers.ts#L121-L124"
     },
     {
       "inherits": {
@@ -84532,7 +86219,7 @@
           }
         }
       ],
-      "specLocation": "_types/analysis/tokenizers.ts#L123-L125"
+      "specLocation": "_types/analysis/tokenizers.ts#L126-L128"
     },
     {
       "inherits": {
@@ -84567,7 +86254,7 @@
           }
         }
       ],
-      "specLocation": "_types/analysis/tokenizers.ts#L127-L130"
+      "specLocation": "_types/analysis/tokenizers.ts#L130-L133"
     },
     {
       "inherits": {
@@ -84602,7 +86289,7 @@
           }
         }
       ],
-      "specLocation": "_types/analysis/tokenizers.ts#L132-L135"
+      "specLocation": "_types/analysis/tokenizers.ts#L135-L138"
     },
     {
       "inherits": {
@@ -84899,7 +86586,7 @@
         "name": "IndexOptions",
         "namespace": "_types.mapping"
       },
-      "specLocation": "_types/mapping/core.ts#L257-L262"
+      "specLocation": "_types/mapping/core.ts#L267-L272"
     },
     {
       "kind": "enum",
@@ -84931,7 +86618,7 @@
         "name": "OnScriptError",
         "namespace": "_types.mapping"
       },
-      "specLocation": "_types/mapping/core.ts#L137-L140"
+      "specLocation": "_types/mapping/core.ts#L146-L149"
     },
     {
       "kind": "type_alias",
@@ -85317,7 +87004,7 @@
           }
         }
       ],
-      "specLocation": "_types/mapping/core.ts#L55-L57"
+      "specLocation": "_types/mapping/core.ts#L54-L56"
     },
     {
       "inherits": {
@@ -85344,7 +87031,7 @@
           }
         }
       ],
-      "specLocation": "_types/mapping/core.ts#L51-L53"
+      "specLocation": "_types/mapping/core.ts#L50-L52"
     },
     {
       "inherits": {
@@ -85370,17 +87057,6 @@
             }
           }
         },
-        {
-          "name": "similarity",
-          "required": false,
-          "type": {
-            "kind": "instance_of",
-            "type": {
-              "name": "string",
-              "namespace": "_builtins"
-            }
-          }
-        },
         {
           "name": "store",
           "required": false,
@@ -85393,7 +87069,7 @@
           }
         }
       ],
-      "specLocation": "_types/mapping/core.ts#L45-L49"
+      "specLocation": "_types/mapping/core.ts#L45-L48"
     },
     {
       "kind": "interface",
@@ -85553,6 +87229,59 @@
             }
           }
         },
+        {
+          "name": "ignore_malformed",
+          "required": false,
+          "type": {
+            "kind": "instance_of",
+            "type": {
+              "name": "boolean",
+              "namespace": "_builtins"
+            }
+          }
+        },
+        {
+          "name": "script",
+          "required": false,
+          "type": {
+            "kind": "instance_of",
+            "type": {
+              "name": "Script",
+              "namespace": "_types"
+            }
+          }
+        },
+        {
+          "name": "on_script_error",
+          "required": false,
+          "type": {
+            "kind": "instance_of",
+            "type": {
+              "name": "OnScriptError",
+              "namespace": "_types.mapping"
+            }
+          }
+        },
+        {
+          "availability": {
+            "serverless": {
+              "stability": "experimental"
+            },
+            "stack": {
+              "stability": "experimental"
+            }
+          },
+          "description": "For internal use by Elastic only. Marks the field as a time series dimension. Defaults to false.",
+          "name": "time_series_dimension",
+          "required": false,
+          "type": {
+            "kind": "instance_of",
+            "type": {
+              "name": "boolean",
+              "namespace": "_builtins"
+            }
+          }
+        },
         {
           "name": "type",
           "required": true,
@@ -85562,7 +87291,7 @@
           }
         }
       ],
-      "specLocation": "_types/mapping/core.ts#L59-L65"
+      "specLocation": "_types/mapping/core.ts#L58-L73"
     },
     {
       "kind": "interface",
@@ -85769,11 +87498,23 @@
           "name": "index_prefixes",
           "required": false,
           "type": {
-            "kind": "instance_of",
-            "type": {
-              "name": "TextIndexPrefixes",
-              "namespace": "_types.mapping"
-            }
+            "items": [
+              {
+                "kind": "instance_of",
+                "type": {
+                  "name": "TextIndexPrefixes",
+                  "namespace": "_types.mapping"
+                }
+              },
+              {
+                "kind": "instance_of",
+                "type": {
+                  "name": "null",
+                  "namespace": "_builtins"
+                }
+              }
+            ],
+            "kind": "union_of"
           }
         },
         {
@@ -85865,7 +87606,7 @@
           }
         }
       ],
-      "specLocation": "_types/mapping/core.ts#L300-L331"
+      "specLocation": "_types/mapping/core.ts#L311-L342"
     },
     {
       "kind": "enum",
@@ -85922,7 +87663,7 @@
           }
         }
       ],
-      "specLocation": "_types/mapping/core.ts#L264-L267"
+      "specLocation": "_types/mapping/core.ts#L274-L277"
     },
     {
       "kind": "enum",
@@ -86025,7 +87766,7 @@
           }
         }
       ],
-      "specLocation": "_types/mapping/core.ts#L89-L93"
+      "specLocation": "_types/mapping/core.ts#L97-L101"
     },
     {
       "inherits": {
@@ -86139,6 +87880,29 @@
             }
           }
         },
+        {
+          "name": "similarity",
+          "required": false,
+          "type": {
+            "items": [
+              {
+                "kind": "instance_of",
+                "type": {
+                  "name": "string",
+                  "namespace": "_builtins"
+                }
+              },
+              {
+                "kind": "instance_of",
+                "type": {
+                  "name": "null",
+                  "namespace": "_builtins"
+                }
+              }
+            ],
+            "kind": "union_of"
+          }
+        },
         {
           "name": "split_queries_on_whitespace",
           "required": false,
@@ -86179,7 +87943,7 @@
           }
         }
       ],
-      "specLocation": "_types/mapping/core.ts#L95-L113"
+      "specLocation": "_types/mapping/core.ts#L103-L122"
     },
     {
       "description": "A variant of text that trades scoring and efficiency of positional queries for space efficiency. This field\neffectively stores data the same way as a text field that only indexes documents (index_options: docs) and\ndisables norms (norms: false). Term queries perform as fast if not faster as on text fields, however queries\nthat need positions such as the match_phrase query perform slower as they need to look at the _source document\nto verify whether a phrase matches. All queries return constant scores that are equal to 1.0.",
@@ -86260,7 +88024,7 @@
           }
         }
       ],
-      "specLocation": "_types/mapping/core.ts#L230-L255"
+      "specLocation": "_types/mapping/core.ts#L240-L265"
     },
     {
       "inherits": {
@@ -86284,7 +88048,7 @@
           }
         }
       ],
-      "specLocation": "_types/mapping/core.ts#L188-L190"
+      "specLocation": "_types/mapping/core.ts#L197-L199"
     },
     {
       "inherits": {
@@ -86319,7 +88083,7 @@
           }
         }
       ],
-      "specLocation": "_types/mapping/core.ts#L192-L195"
+      "specLocation": "_types/mapping/core.ts#L201-L204"
     },
     {
       "inherits": {
@@ -86354,7 +88118,7 @@
           }
         }
       ],
-      "specLocation": "_types/mapping/core.ts#L197-L200"
+      "specLocation": "_types/mapping/core.ts#L206-L209"
     },
     {
       "inherits": {
@@ -86446,6 +88210,29 @@
             }
           }
         },
+        {
+          "name": "similarity",
+          "required": false,
+          "type": {
+            "items": [
+              {
+                "kind": "instance_of",
+                "type": {
+                  "name": "string",
+                  "namespace": "_builtins"
+                }
+              },
+              {
+                "kind": "instance_of",
+                "type": {
+                  "name": "null",
+                  "namespace": "_builtins"
+                }
+              }
+            ],
+            "kind": "union_of"
+          }
+        },
         {
           "name": "term_vector",
           "required": false,
@@ -86466,7 +88253,7 @@
           }
         }
       ],
-      "specLocation": "_types/mapping/core.ts#L212-L222"
+      "specLocation": "_types/mapping/core.ts#L221-L232"
     },
     {
       "inherits": {
@@ -86573,11 +88360,23 @@
           "name": "index_prefixes",
           "required": false,
           "type": {
-            "kind": "instance_of",
-            "type": {
-              "name": "TextIndexPrefixes",
-              "namespace": "_types.mapping"
-            }
+            "items": [
+              {
+                "kind": "instance_of",
+                "type": {
+                  "name": "TextIndexPrefixes",
+                  "namespace": "_types.mapping"
+                }
+              },
+              {
+                "kind": "instance_of",
+                "type": {
+                  "name": "null",
+                  "namespace": "_builtins"
+                }
+              }
+            ],
+            "kind": "union_of"
           }
         },
         {
@@ -86624,6 +88423,29 @@
             }
           }
         },
+        {
+          "name": "similarity",
+          "required": false,
+          "type": {
+            "items": [
+              {
+                "kind": "instance_of",
+                "type": {
+                  "name": "string",
+                  "namespace": "_builtins"
+                }
+              },
+              {
+                "kind": "instance_of",
+                "type": {
+                  "name": "null",
+                  "namespace": "_builtins"
+                }
+              }
+            ],
+            "kind": "union_of"
+          }
+        },
         {
           "name": "term_vector",
           "required": false,
@@ -86644,7 +88466,7 @@
           }
         }
       ],
-      "specLocation": "_types/mapping/core.ts#L269-L285"
+      "specLocation": "_types/mapping/core.ts#L279-L296"
     },
     {
       "kind": "interface",
@@ -86711,7 +88533,7 @@
           }
         }
       ],
-      "specLocation": "_types/mapping/core.ts#L287-L289"
+      "specLocation": "_types/mapping/core.ts#L298-L300"
     },
     {
       "inherits": {
@@ -86752,7 +88574,7 @@
           }
         }
       ],
-      "specLocation": "_types/mapping/core.ts#L291-L298"
+      "specLocation": "_types/mapping/core.ts#L302-L309"
     },
     {
       "inherits": {
@@ -86842,7 +88664,7 @@
           }
         }
       ],
-      "specLocation": "_types/mapping/core.ts#L79-L87"
+      "specLocation": "_types/mapping/core.ts#L87-L95"
     },
     {
       "inherits": {
@@ -86954,7 +88776,7 @@
           }
         }
       ],
-      "specLocation": "_types/mapping/core.ts#L67-L77"
+      "specLocation": "_types/mapping/core.ts#L75-L85"
     },
     {
       "inherits": {
@@ -87424,7 +89246,7 @@
           }
         }
       ],
-      "specLocation": "_types/mapping/core.ts#L206-L210"
+      "specLocation": "_types/mapping/core.ts#L215-L219"
     },
     {
       "inherits": {
@@ -87448,7 +89270,7 @@
           }
         }
       ],
-      "specLocation": "_types/mapping/core.ts#L202-L204"
+      "specLocation": "_types/mapping/core.ts#L211-L213"
     },
     {
       "inherits": {
@@ -88256,7 +90078,7 @@
           }
         }
       ],
-      "specLocation": "_types/mapping/core.ts#L172-L175"
+      "specLocation": "_types/mapping/core.ts#L181-L184"
     },
     {
       "inherits": {
@@ -88379,7 +90201,7 @@
           }
         }
       ],
-      "specLocation": "_types/mapping/core.ts#L115-L135"
+      "specLocation": "_types/mapping/core.ts#L124-L144"
     },
     {
       "inherits": {
@@ -88414,7 +90236,7 @@
           }
         }
       ],
-      "specLocation": "_types/mapping/core.ts#L152-L155"
+      "specLocation": "_types/mapping/core.ts#L161-L164"
     },
     {
       "inherits": {
@@ -88449,7 +90271,7 @@
           }
         }
       ],
-      "specLocation": "_types/mapping/core.ts#L142-L145"
+      "specLocation": "_types/mapping/core.ts#L151-L154"
     },
     {
       "inherits": {
@@ -88484,7 +90306,7 @@
           }
         }
       ],
-      "specLocation": "_types/mapping/core.ts#L147-L150"
+      "specLocation": "_types/mapping/core.ts#L156-L159"
     },
     {
       "inherits": {
@@ -88519,7 +90341,7 @@
           }
         }
       ],
-      "specLocation": "_types/mapping/core.ts#L157-L160"
+      "specLocation": "_types/mapping/core.ts#L166-L169"
     },
     {
       "inherits": {
@@ -88554,7 +90376,7 @@
           }
         }
       ],
-      "specLocation": "_types/mapping/core.ts#L162-L165"
+      "specLocation": "_types/mapping/core.ts#L171-L174"
     },
     {
       "inherits": {
@@ -88600,7 +90422,7 @@
           }
         }
       ],
-      "specLocation": "_types/mapping/core.ts#L182-L186"
+      "specLocation": "_types/mapping/core.ts#L191-L195"
     },
     {
       "inherits": {
@@ -88635,7 +90457,7 @@
           }
         }
       ],
-      "specLocation": "_types/mapping/core.ts#L167-L170"
+      "specLocation": "_types/mapping/core.ts#L176-L179"
     },
     {
       "inherits": {
@@ -88670,7 +90492,7 @@
           }
         }
       ],
-      "specLocation": "_types/mapping/core.ts#L177-L180"
+      "specLocation": "_types/mapping/core.ts#L186-L189"
     },
     {
       "inherits": {
@@ -89158,7 +90980,7 @@
         "name": "SimpleQueryStringFlag",
         "namespace": "_types.query_dsl"
       },
-      "specLocation": "_types/query_dsl/fulltext.ts#L708-L763"
+      "specLocation": "_types/query_dsl/fulltext.ts#L729-L784"
     },
     {
       "kind": "enum",
@@ -91609,13 +93431,16 @@
         },
         {
           "name": "FAILED"
+        },
+        {
+          "name": "CANCELLED"
         }
       ],
       "name": {
         "name": "EnrichPolicyPhase",
         "namespace": "enrich.execute_policy"
       },
-      "specLocation": "enrich/execute_policy/types.ts#L24-L29"
+      "specLocation": "enrich/execute_policy/types.ts#L25-L31"
     },
     {
       "kind": "enum",
@@ -91787,7 +93612,7 @@
         "name": "EsqlFormat",
         "namespace": "esql.query"
       },
-      "specLocation": "esql/query/QueryRequest.ts#L91-L100"
+      "specLocation": "esql/query/QueryRequest.ts#L93-L102"
     },
     {
       "kind": "type_alias",
@@ -93026,7 +94851,7 @@
         "name": "ServiceSettings",
         "namespace": "inference._types"
       },
-      "specLocation": "inference/_types/Services.ts#L55-L55",
+      "specLocation": "inference/_types/Services.ts#L92-L92",
       "type": {
         "kind": "user_defined_value"
       }
@@ -93064,7 +94889,7 @@
         "name": "TaskSettings",
         "namespace": "inference._types"
       },
-      "specLocation": "inference/_types/Services.ts#L57-L57",
+      "specLocation": "inference/_types/Services.ts#L94-L94",
       "type": {
         "kind": "user_defined_value"
       }
@@ -93100,17 +94925,20 @@
         {
           "name": "long"
         },
+        {
+          "name": "double"
+        },
         {
           "name": "float"
         },
         {
-          "name": "double"
+          "name": "boolean"
         },
         {
-          "name": "string"
+          "name": "ip"
         },
         {
-          "name": "boolean"
+          "name": "string"
         },
         {
           "name": "auto"
@@ -93120,7 +94948,37 @@
         "name": "ConvertType",
         "namespace": "ingest._types"
       },
-      "specLocation": "ingest/_types/Processors.ts#L525-L533"
+      "specLocation": "ingest/_types/Processors.ts#L661-L670"
+    },
+    {
+      "kind": "enum",
+      "members": [
+        {
+          "codegenName": "md5",
+          "name": "MD5"
+        },
+        {
+          "codegenName": "sha1",
+          "name": "SHA-1"
+        },
+        {
+          "codegenName": "sha256",
+          "name": "SHA-256"
+        },
+        {
+          "codegenName": "sha512",
+          "name": "SHA-512"
+        },
+        {
+          "codegenName": "murmurHash3",
+          "name": "MurmurHash3"
+        }
+      ],
+      "name": {
+        "name": "FingerprintDigest",
+        "namespace": "ingest._types"
+      },
+      "specLocation": "ingest/_types/Processors.ts#L896-L902"
     },
     {
       "kind": "enum",
@@ -93136,7 +94994,7 @@
         "name": "GeoGridTargetFormat",
         "namespace": "ingest._types"
       },
-      "specLocation": "ingest/_types/Processors.ts#L400-L403"
+      "specLocation": "ingest/_types/Processors.ts#L437-L440"
     },
     {
       "kind": "enum",
@@ -93155,7 +95013,7 @@
         "name": "GeoGridTileType",
         "namespace": "ingest._types"
       },
-      "specLocation": "ingest/_types/Processors.ts#L394-L398"
+      "specLocation": "ingest/_types/Processors.ts#L431-L435"
     },
     {
       "kind": "enum",
@@ -93173,7 +95031,7 @@
         "name": "JsonProcessorConflictStrategy",
         "namespace": "ingest._types"
       },
-      "specLocation": "ingest/_types/Processors.ts#L964-L969"
+      "specLocation": "ingest/_types/Processors.ts#L1151-L1156"
     },
     {
       "kind": "enum",
@@ -93189,7 +95047,7 @@
         "name": "ShapeType",
         "namespace": "ingest._types"
       },
-      "specLocation": "ingest/_types/Processors.ts#L1225-L1228"
+      "specLocation": "ingest/_types/Processors.ts#L1473-L1476"
     },
     {
       "kind": "enum",
@@ -93214,7 +95072,7 @@
         "name": "UserAgentProperty",
         "namespace": "ingest._types"
       },
-      "specLocation": "ingest/_types/Processors.ts#L474-L480"
+      "specLocation": "ingest/_types/Processors.ts#L547-L553"
     },
     {
       "kind": "enum",
@@ -93297,7 +95155,7 @@
         "name": "DeprecationLevel",
         "namespace": "migration.deprecations"
       },
-      "specLocation": "migration/deprecations/types.ts#L20-L27"
+      "specLocation": "migration/deprecations/types.ts#L23-L30"
     },
     {
       "kind": "enum",
@@ -93413,6 +95271,8 @@
         },
         {
           "description": "The name or definition of the tokenizer to use after character filters are applied. This property is compulsory if `categorization_analyzer` is specified as an object. Machine learning provides a tokenizer called `ml_standard` that tokenizes in a way that has been determined to produce good categorization results on a variety of log file formats for logs in English. If you want to use that tokenizer but change the character or token filters, specify \"tokenizer\": \"ml_standard\" in your `categorization_analyzer`. Additionally, the `ml_classic` tokenizer is available, which tokenizes in the same way as the non-customizable tokenizer in old versions of the product (before 6.2). `ml_classic` was the default categorization tokenizer in versions 6.2 to 7.13, so if you need categorization identical to the default for jobs created in these versions, specify \"tokenizer\": \"ml_classic\" in your `categorization_analyzer`.",
+          "extDocId": "analysis-tokenizers",
+          "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/analysis-tokenizers.html",
           "name": "tokenizer",
           "required": false,
           "type": {
@@ -93424,7 +95284,7 @@
           }
         }
       ],
-      "specLocation": "ml/_types/Analysis.ts#L184-L197"
+      "specLocation": "ml/_types/Analysis.ts#L184-L198"
     },
     {
       "kind": "enum",
@@ -93440,7 +95300,7 @@
         "name": "CategorizationStatus",
         "namespace": "ml._types"
       },
-      "specLocation": "ml/_types/Model.ts#L83-L86"
+      "specLocation": "ml/_types/Model.ts#L84-L87"
     },
     {
       "kind": "enum",
@@ -93459,7 +95319,7 @@
         "name": "ChunkingMode",
         "namespace": "ml._types"
       },
-      "specLocation": "ml/_types/Datafeed.ts#L232-L236"
+      "specLocation": "ml/_types/Datafeed.ts#L245-L249"
     },
     {
       "kind": "enum",
@@ -93515,7 +95375,7 @@
         "name": "DatafeedState",
         "namespace": "ml._types"
       },
-      "specLocation": "ml/_types/Datafeed.ts#L132-L137"
+      "specLocation": "ml/_types/Datafeed.ts#L136-L141"
     },
     {
       "kind": "enum",
@@ -93562,21 +95422,25 @@
         "name": "DeploymentAllocationState",
         "namespace": "ml._types"
       },
-      "specLocation": "ml/_types/TrainedModel.ts#L288-L301"
+      "specLocation": "ml/_types/TrainedModel.ts#L319-L332"
     },
     {
       "kind": "enum",
       "members": [
         {
-          "name": "starting"
+          "description": "The deployment is usable; at least one node has the model allocated.",
+          "name": "started"
         },
         {
-          "name": "started"
+          "description": "The deployment has recently started but is not yet usable; the model is not allocated on any nodes.",
+          "name": "starting"
         },
         {
+          "description": "The deployment is preparing to stop and deallocate the model from the relevant nodes.",
           "name": "stopping"
         },
         {
+          "description": "The deployment is on a failed state and must be re-deployed.",
           "name": "failed"
         }
       ],
@@ -93584,29 +95448,156 @@
         "name": "DeploymentAssignmentState",
         "namespace": "ml._types"
       },
-      "specLocation": "ml/_types/TrainedModel.ts#L303-L308"
+      "specLocation": "ml/_types/TrainedModel.ts#L334-L351"
     },
     {
-      "kind": "enum",
-      "members": [
+      "kind": "type_alias",
+      "name": {
+        "name": "DiscoveryNode",
+        "namespace": "ml._types"
+      },
+      "specLocation": "ml/_types/DiscoveryNode.ts#L25-L25",
+      "type": {
+        "key": {
+          "kind": "instance_of",
+          "type": {
+            "name": "Id",
+            "namespace": "_types"
+          }
+        },
+        "kind": "dictionary_of",
+        "singleKey": true,
+        "value": {
+          "kind": "instance_of",
+          "type": {
+            "name": "DiscoveryNodeContent",
+            "namespace": "ml._types"
+          }
+        }
+      }
+    },
+    {
+      "kind": "interface",
+      "name": {
+        "name": "DiscoveryNodeContent",
+        "namespace": "ml._types"
+      },
+      "properties": [
         {
-          "description": "The deployment is usable; at least one node has the model allocated.",
-          "name": "started"
+          "name": "name",
+          "required": false,
+          "type": {
+            "kind": "instance_of",
+            "type": {
+              "name": "Name",
+              "namespace": "_types"
+            }
+          }
         },
         {
-          "description": "The deployment has recently started but is not yet usable; the model is not allocated on any nodes.",
-          "name": "starting"
+          "name": "ephemeral_id",
+          "required": true,
+          "type": {
+            "kind": "instance_of",
+            "type": {
+              "name": "Id",
+              "namespace": "_types"
+            }
+          }
         },
         {
-          "description": "The deployment is preparing to stop and deallocate the model from the relevant nodes.",
-          "name": "stopping"
+          "name": "transport_address",
+          "required": true,
+          "type": {
+            "kind": "instance_of",
+            "type": {
+              "name": "TransportAddress",
+              "namespace": "_types"
+            }
+          }
+        },
+        {
+          "name": "external_id",
+          "required": true,
+          "type": {
+            "kind": "instance_of",
+            "type": {
+              "name": "string",
+              "namespace": "_builtins"
+            }
+          }
+        },
+        {
+          "name": "attributes",
+          "required": true,
+          "type": {
+            "key": {
+              "kind": "instance_of",
+              "type": {
+                "name": "string",
+                "namespace": "_builtins"
+              }
+            },
+            "kind": "dictionary_of",
+            "singleKey": false,
+            "value": {
+              "kind": "instance_of",
+              "type": {
+                "name": "string",
+                "namespace": "_builtins"
+              }
+            }
+          }
+        },
+        {
+          "name": "roles",
+          "required": true,
+          "type": {
+            "kind": "array_of",
+            "value": {
+              "kind": "instance_of",
+              "type": {
+                "name": "string",
+                "namespace": "_builtins"
+              }
+            }
+          }
+        },
+        {
+          "name": "version",
+          "required": true,
+          "type": {
+            "kind": "instance_of",
+            "type": {
+              "name": "VersionString",
+              "namespace": "_types"
+            }
+          }
+        },
+        {
+          "name": "min_index_version",
+          "required": true,
+          "type": {
+            "kind": "instance_of",
+            "type": {
+              "name": "integer",
+              "namespace": "_types"
+            }
+          }
+        },
+        {
+          "name": "max_index_version",
+          "required": true,
+          "type": {
+            "kind": "instance_of",
+            "type": {
+              "name": "integer",
+              "namespace": "_types"
+            }
+          }
         }
       ],
-      "name": {
-        "name": "DeploymentState",
-        "namespace": "ml._types"
-      },
-      "specLocation": "ml/_types/TrainedModel.ts#L273-L286"
+      "specLocation": "ml/_types/DiscoveryNode.ts#L27-L37"
     },
     {
       "kind": "enum",
@@ -93628,7 +95619,66 @@
         "name": "ExcludeFrequent",
         "namespace": "ml._types"
       },
-      "specLocation": "ml/_types/Detector.ts#L127-L132"
+      "specLocation": "ml/_types/Detector.ts#L145-L150"
+    },
+    {
+      "kind": "type_alias",
+      "name": {
+        "name": "FeatureExtractor",
+        "namespace": "ml._types"
+      },
+      "specLocation": "ml/_types/inference.ts#L93-L96",
+      "type": {
+        "kind": "instance_of",
+        "type": {
+          "name": "QueryFeatureExtractor",
+          "namespace": "ml._types"
+        }
+      }
+    },
+    {
+      "kind": "interface",
+      "name": {
+        "name": "QueryFeatureExtractor",
+        "namespace": "ml._types"
+      },
+      "properties": [
+        {
+          "name": "default_score",
+          "required": false,
+          "type": {
+            "kind": "instance_of",
+            "type": {
+              "name": "float",
+              "namespace": "_types"
+            }
+          }
+        },
+        {
+          "name": "feature_name",
+          "required": true,
+          "type": {
+            "kind": "instance_of",
+            "type": {
+              "name": "string",
+              "namespace": "_builtins"
+            }
+          }
+        },
+        {
+          "name": "query",
+          "required": true,
+          "type": {
+            "kind": "instance_of",
+            "type": {
+              "name": "QueryContainer",
+              "namespace": "_types.query_dsl"
+            }
+          }
+        }
+      ],
+      "specLocation": "ml/_types/inference.ts#L98-L105",
+      "variantName": "query_extractor"
     },
     {
       "kind": "enum",
@@ -93742,7 +95792,7 @@
         "name": "MemoryStatus",
         "namespace": "ml._types"
       },
-      "specLocation": "ml/_types/Model.ts#L88-L92"
+      "specLocation": "ml/_types/Model.ts#L89-L93"
     },
     {
       "kind": "type_alias",
@@ -93750,7 +95800,7 @@
         "name": "PredictedValue",
         "namespace": "ml._types"
       },
-      "specLocation": "ml/_types/inference.ts#L457-L457",
+      "specLocation": "ml/_types/inference.ts#L476-L476",
       "type": {
         "items": [
           {
@@ -93802,7 +95852,7 @@
         "name": "RoutingState",
         "namespace": "ml._types"
       },
-      "specLocation": "ml/_types/TrainedModel.ts#L350-L371"
+      "specLocation": "ml/_types/TrainedModel.ts#L396-L417"
     },
     {
       "kind": "enum",
@@ -93842,7 +95892,7 @@
         "name": "SnapshotUpgradeState",
         "namespace": "ml._types"
       },
-      "specLocation": "ml/_types/Model.ts#L94-L99"
+      "specLocation": "ml/_types/Model.ts#L95-L100"
     },
     {
       "kind": "enum",
@@ -93861,7 +95911,7 @@
         "name": "TokenizationTruncate",
         "namespace": "ml._types"
       },
-      "specLocation": "ml/_types/inference.ts#L350-L354"
+      "specLocation": "ml/_types/inference.ts#L369-L373"
     },
     {
       "kind": "enum",
@@ -93883,7 +95933,7 @@
         "name": "TrainedModelType",
         "namespace": "ml._types"
       },
-      "specLocation": "ml/_types/TrainedModel.ts#L257-L271"
+      "specLocation": "ml/_types/TrainedModel.ts#L303-L317"
     },
     {
       "kind": "enum",
@@ -93899,7 +95949,7 @@
         "name": "TrainingPriority",
         "namespace": "ml._types"
       },
-      "specLocation": "ml/_types/TrainedModel.ts#L310-L313"
+      "specLocation": "ml/_types/TrainedModel.ts#L353-L356"
     },
     {
       "codegenNames": [
@@ -101424,6 +103474,22 @@
       },
       "specLocation": "searchable_snapshots/_types/stats.ts#L20-L24"
     },
+    {
+      "kind": "enum",
+      "members": [
+        {
+          "name": "rest"
+        },
+        {
+          "name": "cross_cluster"
+        }
+      ],
+      "name": {
+        "name": "ApiKeyType",
+        "namespace": "security._types"
+      },
+      "specLocation": "security/_types/ApiKey.ts#L115-L118"
+    },
     {
       "isOpen": true,
       "kind": "enum",
@@ -101591,7 +103657,7 @@
         "name": "IndexPrivilege",
         "namespace": "security._types"
       },
-      "specLocation": "security/_types/Privileges.ts#L292-L334"
+      "specLocation": "security/_types/Privileges.ts#L324-L366"
     },
     {
       "codegenNames": [
@@ -101605,7 +103671,7 @@
         "name": "IndicesPrivilegesQuery",
         "namespace": "security._types"
       },
-      "specLocation": "security/_types/Privileges.ts#L247-L255",
+      "specLocation": "security/_types/Privileges.ts#L279-L287",
       "type": {
         "items": [
           {
@@ -101642,8 +103708,8 @@
       "properties": [
         {
           "description": "When you create a role, you can specify a query that defines the document level security permissions. You can optionally\nuse Mustache templates in the role query to insert the username of the current authenticated user into the role.\nLike other places in Elasticsearch that support templating or scripting, you can specify inline, stored, or file-based\ntemplates and define custom parameters. You access the details for the current authenticated user through the _user parameter.",
-          "docId": "templating-role-query",
-          "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/field-and-document-access-control.html#templating-role-query",
+          "extDocId": "templating-role-query",
+          "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/field-and-document-access-control.html#templating-role-query",
           "name": "template",
           "required": false,
           "type": {
@@ -101655,7 +103721,7 @@
           }
         }
       ],
-      "specLocation": "security/_types/Privileges.ts#L257-L267"
+      "specLocation": "security/_types/Privileges.ts#L289-L299"
     },
     {
       "kind": "interface",
@@ -101743,7 +103809,7 @@
         }
       ],
       "shortcutProperty": "source",
-      "specLocation": "security/_types/Privileges.ts#L269-L287"
+      "specLocation": "security/_types/Privileges.ts#L301-L319"
     },
     {
       "codegenNames": [
@@ -101755,7 +103821,7 @@
         "name": "RoleTemplateInlineQuery",
         "namespace": "security._types"
       },
-      "specLocation": "security/_types/Privileges.ts#L289-L290",
+      "specLocation": "security/_types/Privileges.ts#L321-L322",
       "type": {
         "items": [
           {
@@ -102933,6 +104999,37 @@
         }
       }
     },
+    {
+      "kind": "enum",
+      "members": [
+        {
+          "name": "csv"
+        },
+        {
+          "name": "json"
+        },
+        {
+          "name": "tsv"
+        },
+        {
+          "name": "txt"
+        },
+        {
+          "name": "yaml"
+        },
+        {
+          "name": "cbor"
+        },
+        {
+          "name": "smile"
+        }
+      ],
+      "name": {
+        "name": "SqlFormat",
+        "namespace": "sql.query"
+      },
+      "specLocation": "sql/query/QuerySqlRequest.ts#L126-L134"
+    },
     {
       "kind": "type_alias",
       "name": {
@@ -104013,6 +106110,25 @@
       },
       "specLocation": "watcher/stats/types.ts#L26-L31"
     },
+    {
+      "kind": "enum",
+      "members": [
+        {
+          "name": "build"
+        },
+        {
+          "name": "features"
+        },
+        {
+          "name": "license"
+        }
+      ],
+      "name": {
+        "name": "XPackCategory",
+        "namespace": "xpack.info"
+      },
+      "specLocation": "xpack/info/XPackInfoRequest.ts#L44-L48"
+    },
     {
       "attachedBehaviors": [
         "CommonQueryParameters"
@@ -105578,11 +107694,23 @@
           "name": "version",
           "required": true,
           "type": {
-            "kind": "instance_of",
-            "type": {
-              "name": "string",
-              "namespace": "_builtins"
-            }
+            "items": [
+              {
+                "kind": "instance_of",
+                "type": {
+                  "name": "string",
+                  "namespace": "_builtins"
+                }
+              },
+              {
+                "kind": "instance_of",
+                "type": {
+                  "name": "null",
+                  "namespace": "_builtins"
+                }
+              }
+            ],
+            "kind": "union_of"
           }
         },
         {
@@ -114619,18 +116747,7 @@
           "name": "value",
           "required": true,
           "type": {
-            "key": {
-              "kind": "instance_of",
-              "type": {
-                "name": "string",
-                "namespace": "_builtins"
-              }
-            },
-            "kind": "dictionary_of",
-            "singleKey": false,
-            "value": {
-              "kind": "user_defined_value"
-            }
+            "kind": "user_defined_value"
           }
         }
       ],
@@ -115394,20 +117511,9 @@
               "namespace": "_types"
             }
           }
-        },
-        {
-          "name": "type",
-          "required": true,
-          "type": {
-            "kind": "instance_of",
-            "type": {
-              "name": "string",
-              "namespace": "_builtins"
-            }
-          }
         }
       ],
-      "specLocation": "_types/Errors.ts#L60-L66"
+      "specLocation": "_types/Errors.ts#L60-L65"
     },
     {
       "kind": "interface",
@@ -115458,9 +117564,20 @@
               "namespace": "enrich.execute_policy"
             }
           }
+        },
+        {
+          "name": "step",
+          "required": false,
+          "type": {
+            "kind": "instance_of",
+            "type": {
+              "name": "string",
+              "namespace": "_builtins"
+            }
+          }
         }
       ],
-      "specLocation": "enrich/execute_policy/types.ts#L20-L22"
+      "specLocation": "enrich/execute_policy/types.ts#L20-L23"
     },
     {
       "kind": "interface",
@@ -118029,9 +120146,45 @@
               "namespace": "indices._types"
             }
           }
+        },
+        {
+          "availability": {
+            "serverless": {},
+            "stack": {
+              "since": "8.12.0"
+            }
+          },
+          "description": "Marks this index template as deprecated.\nWhen creating or updating a non-deprecated index template that uses deprecated components,\nElasticsearch will emit a deprecation warning.",
+          "name": "deprecated",
+          "required": false,
+          "type": {
+            "kind": "instance_of",
+            "type": {
+              "name": "boolean",
+              "namespace": "_builtins"
+            }
+          }
+        },
+        {
+          "availability": {
+            "serverless": {},
+            "stack": {
+              "since": "8.7.0"
+            }
+          },
+          "description": "A list of component template names that are allowed to be absent.",
+          "name": "ignore_missing_component_templates",
+          "required": false,
+          "type": {
+            "kind": "instance_of",
+            "type": {
+              "name": "Names",
+              "namespace": "_types"
+            }
+          }
         }
       ],
-      "specLocation": "indices/_types/IndexTemplate.ts#L28-L67"
+      "specLocation": "indices/_types/IndexTemplate.ts#L28-L81"
     },
     {
       "kind": "interface",
@@ -118108,7 +120261,7 @@
           }
         }
       ],
-      "specLocation": "indices/_types/IndexTemplate.ts#L82-L104"
+      "specLocation": "indices/_types/IndexTemplate.ts#L96-L118"
     },
     {
       "kind": "interface",
@@ -118144,7 +120297,7 @@
           }
         }
       ],
-      "specLocation": "indices/_types/IndexTemplate.ts#L69-L80"
+      "specLocation": "indices/_types/IndexTemplate.ts#L83-L94"
     },
     {
       "kind": "interface",
@@ -118343,9 +120496,20 @@
               "namespace": "_builtins"
             }
           }
+        },
+        {
+          "name": "allow_custom_routing",
+          "required": false,
+          "type": {
+            "kind": "instance_of",
+            "type": {
+              "name": "boolean",
+              "namespace": "_builtins"
+            }
+          }
         }
       ],
-      "specLocation": "indices/_types/DataStream.ts#L159-L161"
+      "specLocation": "indices/_types/DataStream.ts#L159-L162"
     },
     {
       "kind": "interface",
@@ -118356,7 +120520,7 @@
       "properties": [
         {
           "name": "_shards",
-          "required": true,
+          "required": false,
           "type": {
             "kind": "instance_of",
             "type": {
@@ -118366,7 +120530,7 @@
           }
         }
       ],
-      "specLocation": "_types/Base.ts#L91-L93"
+      "specLocation": "_types/Base.ts#L91-L94"
     },
     {
       "kind": "interface",
@@ -119241,7 +121405,7 @@
           }
         }
       ],
-      "specLocation": "inference/_types/Services.ts#L41-L53"
+      "specLocation": "inference/_types/Services.ts#L46-L58"
     },
     {
       "description": "Configuration options when storing the inference endpoint",
@@ -119251,6 +121415,18 @@
         "namespace": "inference._types"
       },
       "properties": [
+        {
+          "description": "Chunking configuration object",
+          "name": "chunking_settings",
+          "required": false,
+          "type": {
+            "kind": "instance_of",
+            "type": {
+              "name": "InferenceChunkingSettings",
+              "namespace": "inference._types"
+            }
+          }
+        },
         {
           "description": "The service type",
           "name": "service",
@@ -119278,7 +121454,7 @@
         {
           "description": "Task settings specific to the service and task type",
           "name": "task_settings",
-          "required": true,
+          "required": false,
           "type": {
             "kind": "instance_of",
             "type": {
@@ -119288,7 +121464,70 @@
           }
         }
       ],
-      "specLocation": "inference/_types/Services.ts#L23-L39"
+      "specLocation": "inference/_types/Services.ts#L24-L44"
+    },
+    {
+      "description": "Chunking configuration object",
+      "kind": "interface",
+      "name": {
+        "name": "InferenceChunkingSettings",
+        "namespace": "inference._types"
+      },
+      "properties": [
+        {
+          "description": "Specifies the maximum size of a chunk in words\nThis value cannot be higher than `300` or lower than `20` (for `sentence` strategy) or `10` (for `word` strategy)",
+          "name": "max_chunk_size",
+          "required": false,
+          "serverDefault": 250,
+          "type": {
+            "kind": "instance_of",
+            "type": {
+              "name": "integer",
+              "namespace": "_types"
+            }
+          }
+        },
+        {
+          "description": "Specifies the number of overlapping words for chunks\nOnly for `word` chunking strategy\nThis value cannot be higher than the half of `max_chunk_size`",
+          "name": "overlap",
+          "required": false,
+          "serverDefault": 100,
+          "type": {
+            "kind": "instance_of",
+            "type": {
+              "name": "integer",
+              "namespace": "_types"
+            }
+          }
+        },
+        {
+          "description": "Specifies the number of overlapping sentences for chunks\nOnly for `sentence` chunking strategy\nIt can be either `1` or `0`",
+          "name": "sentence_overlap",
+          "required": false,
+          "serverDefault": 1,
+          "type": {
+            "kind": "instance_of",
+            "type": {
+              "name": "integer",
+              "namespace": "_types"
+            }
+          }
+        },
+        {
+          "description": "Specifies the chunking strategy\nIt could be either `sentence` or `word`",
+          "name": "strategy",
+          "required": false,
+          "serverDefault": "sentence",
+          "type": {
+            "kind": "instance_of",
+            "type": {
+              "name": "string",
+              "namespace": "_builtins"
+            }
+          }
+        }
+      ],
+      "specLocation": "inference/_types/Services.ts#L60-L90"
     },
     {
       "description": "InferenceResult is an aggregation of mutually exclusive variants",
@@ -119766,6 +122005,20 @@
             }
           }
         },
+        {
+          "description": "Computes the Community ID for network flow data as defined in the\nCommunity ID Specification. You can use a community ID to correlate network\nevents related to a single flow.",
+          "docId": "community-id-processor",
+          "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/community-id-processor.html",
+          "name": "community_id",
+          "required": false,
+          "type": {
+            "kind": "instance_of",
+            "type": {
+              "name": "CommunityIDProcessor",
+              "namespace": "ingest._types"
+            }
+          }
+        },
         {
           "description": "Converts a field in the currently ingested document to a different type, such as converting a string to an integer.\nIf the field value is an array, all members will be converted.",
           "docId": "convert-processor",
@@ -119892,6 +122145,20 @@
             }
           }
         },
+        {
+          "description": "Computes a hash of the document’s content. You can use this hash for\ncontent fingerprinting.",
+          "docId": "fingerprint-processor",
+          "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/fingerprint-processor.html",
+          "name": "fingerprint",
+          "required": false,
+          "type": {
+            "kind": "instance_of",
+            "type": {
+              "name": "FingerprintProcessor",
+              "namespace": "ingest._types"
+            }
+          }
+        },
         {
           "description": "Runs an ingest processor on each element of an array or object.",
           "docId": "foreach-processor",
@@ -119906,6 +122173,18 @@
             }
           }
         },
+        {
+          "description": "Currently an undocumented alias for GeoIP Processor.",
+          "name": "ip_location",
+          "required": false,
+          "type": {
+            "kind": "instance_of",
+            "type": {
+              "name": "IpLocationProcessor",
+              "namespace": "ingest._types"
+            }
+          }
+        },
         {
           "description": "Converts geo-grid definitions of grid tiles or cells to regular bounding boxes or polygons which describe their shape.\nThis is useful if there is a need to interact with the tile shapes as spatially indexable fields.",
           "docId": "geo-grid-processor",
@@ -120045,6 +122324,20 @@
             }
           }
         },
+        {
+          "description": "Calculates the network direction given a source IP address, destination IP\naddress, and a list of internal networks.",
+          "docId": "network-direction-processor",
+          "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/network-direction-processor.html",
+          "name": "network_direction",
+          "required": false,
+          "type": {
+            "kind": "instance_of",
+            "type": {
+              "name": "NetworkDirectionProcessor",
+              "namespace": "ingest._types"
+            }
+          }
+        },
         {
           "description": "Executes another pipeline.",
           "docId": "pipeline-processor",
@@ -120073,6 +122366,20 @@
             }
           }
         },
+        {
+          "description": "Extracts the registered domain (also known as the effective top-level\ndomain or eTLD), sub-domain, and top-level domain from a fully qualified\ndomain name (FQDN). Uses the registered domains defined in the Mozilla\nPublic Suffix List.",
+          "docId": "registered-domain-processor",
+          "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/registered-domain-processor.html",
+          "name": "registered_domain",
+          "required": false,
+          "type": {
+            "kind": "instance_of",
+            "type": {
+              "name": "RegisteredDomainProcessor",
+              "namespace": "ingest._types"
+            }
+          }
+        },
         {
           "description": "Removes existing fields.\nIf one field doesn’t exist, an exception will be thrown.",
           "docId": "remove-processor",
@@ -120185,6 +122492,20 @@
             }
           }
         },
+        {
+          "description": "Terminates the current ingest pipeline, causing no further processors to be run.\nThis will normally be executed conditionally, using the `if` option.",
+          "docId": "terminate-processor",
+          "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/terminate-processor.html",
+          "name": "terminate",
+          "required": false,
+          "type": {
+            "kind": "instance_of",
+            "type": {
+              "name": "TerminateProcessor",
+              "namespace": "ingest._types"
+            }
+          }
+        },
         {
           "description": "Trims whitespace from a field.\nIf the field is an array of strings, all members of the array will be trimmed.\nThis only works on leading and trailing whitespace.",
           "docId": "trim-processor",
@@ -120255,7 +122576,7 @@
           }
         }
       ],
-      "specLocation": "ingest/_types/Processors.ts#L27-L264",
+      "specLocation": "ingest/_types/Processors.ts#L27-L301",
       "variants": {
         "kind": "container",
         "nonExhaustive": true
@@ -120319,7 +122640,7 @@
           }
         }
       ],
-      "specLocation": "ingest/_types/Processors.ts#L291-L306"
+      "specLocation": "ingest/_types/Processors.ts#L328-L343"
     },
     {
       "kind": "interface",
@@ -120392,7 +122713,7 @@
           }
         }
       ],
-      "specLocation": "ingest/_types/Processors.ts#L266-L289"
+      "specLocation": "ingest/_types/Processors.ts#L303-L326"
     },
     {
       "inherits": {
@@ -120512,7 +122833,7 @@
           }
         }
       ],
-      "specLocation": "ingest/_types/Processors.ts#L308-L349"
+      "specLocation": "ingest/_types/Processors.ts#L345-L386"
     },
     {
       "inherits": {
@@ -120566,7 +122887,7 @@
           }
         }
       ],
-      "specLocation": "ingest/_types/Processors.ts#L482-L498"
+      "specLocation": "ingest/_types/Processors.ts#L555-L571"
     },
     {
       "inherits": {
@@ -120643,7 +122964,166 @@
           }
         }
       ],
-      "specLocation": "ingest/_types/Processors.ts#L500-L523"
+      "specLocation": "ingest/_types/Processors.ts#L573-L596"
+    },
+    {
+      "inherits": {
+        "type": {
+          "name": "ProcessorBase",
+          "namespace": "ingest._types"
+        }
+      },
+      "kind": "interface",
+      "name": {
+        "name": "CommunityIDProcessor",
+        "namespace": "ingest._types"
+      },
+      "properties": [
+        {
+          "description": "Field containing the source IP address.",
+          "name": "source_ip",
+          "required": false,
+          "serverDefault": "source.ip",
+          "type": {
+            "kind": "instance_of",
+            "type": {
+              "name": "Field",
+              "namespace": "_types"
+            }
+          }
+        },
+        {
+          "description": "Field containing the source port.",
+          "name": "source_port",
+          "required": false,
+          "serverDefault": "source.port",
+          "type": {
+            "kind": "instance_of",
+            "type": {
+              "name": "Field",
+              "namespace": "_types"
+            }
+          }
+        },
+        {
+          "description": "Field containing the destination IP address.",
+          "name": "destination_ip",
+          "required": false,
+          "serverDefault": "destination.ip",
+          "type": {
+            "kind": "instance_of",
+            "type": {
+              "name": "Field",
+              "namespace": "_types"
+            }
+          }
+        },
+        {
+          "description": "Field containing the destination port.",
+          "name": "destination_port",
+          "required": false,
+          "serverDefault": "destination.port",
+          "type": {
+            "kind": "instance_of",
+            "type": {
+              "name": "Field",
+              "namespace": "_types"
+            }
+          }
+        },
+        {
+          "description": "Field containing the IANA number.",
+          "name": "iana_number",
+          "required": false,
+          "serverDefault": "network.iana_number",
+          "type": {
+            "kind": "instance_of",
+            "type": {
+              "name": "Field",
+              "namespace": "_types"
+            }
+          }
+        },
+        {
+          "description": "Field containing the ICMP type.",
+          "name": "icmp_type",
+          "required": false,
+          "serverDefault": "icmp.type",
+          "type": {
+            "kind": "instance_of",
+            "type": {
+              "name": "Field",
+              "namespace": "_types"
+            }
+          }
+        },
+        {
+          "description": "Field containing the ICMP code.",
+          "name": "icmp_code",
+          "required": false,
+          "serverDefault": "icmp.code",
+          "type": {
+            "kind": "instance_of",
+            "type": {
+              "name": "Field",
+              "namespace": "_types"
+            }
+          }
+        },
+        {
+          "description": "Field containing the transport protocol name or number. Used only when the\niana_number field is not present. The following protocol names are currently\nsupported: eigrp, gre, icmp, icmpv6, igmp, ipv6-icmp, ospf, pim, sctp, tcp, udp",
+          "name": "transport",
+          "required": false,
+          "serverDefault": "network.transport",
+          "type": {
+            "kind": "instance_of",
+            "type": {
+              "name": "Field",
+              "namespace": "_types"
+            }
+          }
+        },
+        {
+          "description": "Output field for the community ID.",
+          "name": "target_field",
+          "required": false,
+          "serverDefault": "network.community_id",
+          "type": {
+            "kind": "instance_of",
+            "type": {
+              "name": "Field",
+              "namespace": "_types"
+            }
+          }
+        },
+        {
+          "description": "Seed for the community ID hash. Must be between 0 and 65535 (inclusive). The\nseed can prevent hash collisions between network domains, such as a staging\nand production network that use the same addressing scheme.",
+          "name": "seed",
+          "required": false,
+          "serverDefault": 0,
+          "type": {
+            "kind": "instance_of",
+            "type": {
+              "name": "integer",
+              "namespace": "_types"
+            }
+          }
+        },
+        {
+          "description": "If true and any required fields are missing, the processor quietly exits\nwithout modifying the document.",
+          "name": "ignore_missing",
+          "required": false,
+          "serverDefault": true,
+          "type": {
+            "kind": "instance_of",
+            "type": {
+              "name": "boolean",
+              "namespace": "_builtins"
+            }
+          }
+        }
+      ],
+      "specLocation": "ingest/_types/Processors.ts#L598-L659"
     },
     {
       "inherits": {
@@ -120709,7 +123189,7 @@
           }
         }
       ],
-      "specLocation": "ingest/_types/Processors.ts#L535-L555"
+      "specLocation": "ingest/_types/Processors.ts#L672-L692"
     },
     {
       "inherits": {
@@ -120807,7 +123287,7 @@
           }
         }
       ],
-      "specLocation": "ingest/_types/Processors.ts#L557-L590"
+      "specLocation": "ingest/_types/Processors.ts#L694-L727"
     },
     {
       "inherits": {
@@ -120887,9 +123367,22 @@
               "namespace": "_builtins"
             }
           }
+        },
+        {
+          "description": "The format to use when writing the date to target_field. Must be a valid\njava time pattern.",
+          "name": "output_format",
+          "required": false,
+          "serverDefault": "yyyy-MM-dd'T'HH:mm:ss.SSSXXX",
+          "type": {
+            "kind": "instance_of",
+            "type": {
+              "name": "string",
+              "namespace": "_builtins"
+            }
+          }
         }
       ],
-      "specLocation": "ingest/_types/Processors.ts#L632-L659"
+      "specLocation": "ingest/_types/Processors.ts#L769-L802"
     },
     {
       "inherits": {
@@ -120995,7 +123488,7 @@
           }
         }
       ],
-      "specLocation": "ingest/_types/Processors.ts#L592-L630"
+      "specLocation": "ingest/_types/Processors.ts#L729-L767"
     },
     {
       "inherits": {
@@ -121061,7 +123554,7 @@
           }
         }
       ],
-      "specLocation": "ingest/_types/Processors.ts#L661-L680"
+      "specLocation": "ingest/_types/Processors.ts#L804-L823"
     },
     {
       "inherits": {
@@ -121114,7 +123607,7 @@
           }
         }
       ],
-      "specLocation": "ingest/_types/Processors.ts#L682-L700"
+      "specLocation": "ingest/_types/Processors.ts#L825-L843"
     },
     {
       "inherits": {
@@ -121129,7 +123622,7 @@
         "namespace": "ingest._types"
       },
       "properties": [],
-      "specLocation": "ingest/_types/Processors.ts#L702-L702"
+      "specLocation": "ingest/_types/Processors.ts#L845-L845"
     },
     {
       "inherits": {
@@ -121233,7 +123726,7 @@
           }
         }
       ],
-      "specLocation": "ingest/_types/Processors.ts#L704-L743"
+      "specLocation": "ingest/_types/Processors.ts#L847-L886"
     },
     {
       "inherits": {
@@ -121261,7 +123754,86 @@
           }
         }
       ],
-      "specLocation": "ingest/_types/Processors.ts#L745-L751"
+      "specLocation": "ingest/_types/Processors.ts#L888-L894"
+    },
+    {
+      "inherits": {
+        "type": {
+          "name": "ProcessorBase",
+          "namespace": "ingest._types"
+        }
+      },
+      "kind": "interface",
+      "name": {
+        "name": "FingerprintProcessor",
+        "namespace": "ingest._types"
+      },
+      "properties": [
+        {
+          "description": "Array of fields to include in the fingerprint. For objects, the processor\nhashes both the field key and value. For other fields, the processor hashes\nonly the field value.",
+          "name": "fields",
+          "required": true,
+          "type": {
+            "kind": "instance_of",
+            "type": {
+              "name": "Fields",
+              "namespace": "_types"
+            }
+          }
+        },
+        {
+          "description": "Output field for the fingerprint.",
+          "name": "target_field",
+          "required": false,
+          "serverDefault": "fingerprint",
+          "type": {
+            "kind": "instance_of",
+            "type": {
+              "name": "Field",
+              "namespace": "_types"
+            }
+          }
+        },
+        {
+          "description": "Salt value for the hash function.",
+          "name": "salt",
+          "required": false,
+          "type": {
+            "kind": "instance_of",
+            "type": {
+              "name": "string",
+              "namespace": "_builtins"
+            }
+          }
+        },
+        {
+          "description": "The hash method used to compute the fingerprint. Must be one of MD5, SHA-1,\nSHA-256, SHA-512, or MurmurHash3.",
+          "name": "method",
+          "required": false,
+          "serverDefault": "SHA-1",
+          "type": {
+            "kind": "instance_of",
+            "type": {
+              "name": "FingerprintDigest",
+              "namespace": "ingest._types"
+            }
+          }
+        },
+        {
+          "description": "If true, the processor ignores any missing fields. If all fields are\nmissing, the processor silently exits without modifying the document.",
+          "name": "ignore_missing",
+          "required": false,
+          "serverDefault": false,
+          "type": {
+            "kind": "instance_of",
+            "type": {
+              "name": "boolean",
+              "namespace": "_builtins"
+            }
+          }
+        }
+      ],
+      "specLocation": "ingest/_types/Processors.ts#L904-L932"
     },
     {
       "inherits": {
@@ -121314,7 +123886,114 @@
           }
         }
       ],
-      "specLocation": "ingest/_types/Processors.ts#L753-L767"
+      "specLocation": "ingest/_types/Processors.ts#L934-L948"
+    },
+    {
+      "inherits": {
+        "type": {
+          "name": "ProcessorBase",
+          "namespace": "ingest._types"
+        }
+      },
+      "kind": "interface",
+      "name": {
+        "name": "IpLocationProcessor",
+        "namespace": "ingest._types"
+      },
+      "properties": [
+        {
+          "description": "The database filename referring to a database the module ships with (GeoLite2-City.mmdb, GeoLite2-Country.mmdb, or GeoLite2-ASN.mmdb) or a custom database in the ingest-geoip config directory.",
+          "name": "database_file",
+          "required": false,
+          "serverDefault": "GeoLite2-City.mmdb",
+          "type": {
+            "kind": "instance_of",
+            "type": {
+              "name": "string",
+              "namespace": "_builtins"
+            }
+          }
+        },
+        {
+          "description": "The field to get the ip address from for the geographical lookup.",
+          "name": "field",
+          "required": true,
+          "type": {
+            "kind": "instance_of",
+            "type": {
+              "name": "Field",
+              "namespace": "_types"
+            }
+          }
+        },
+        {
+          "description": "If `true`, only the first found IP location data will be returned, even if the field contains an array.",
+          "name": "first_only",
+          "required": false,
+          "serverDefault": true,
+          "type": {
+            "kind": "instance_of",
+            "type": {
+              "name": "boolean",
+              "namespace": "_builtins"
+            }
+          }
+        },
+        {
+          "description": "If `true` and `field` does not exist, the processor quietly exits without modifying the document.",
+          "name": "ignore_missing",
+          "required": false,
+          "serverDefault": false,
+          "type": {
+            "kind": "instance_of",
+            "type": {
+              "name": "boolean",
+              "namespace": "_builtins"
+            }
+          }
+        },
+        {
+          "description": "Controls what properties are added to the `target_field` based on the IP location lookup.",
+          "name": "properties",
+          "required": false,
+          "type": {
+            "kind": "array_of",
+            "value": {
+              "kind": "instance_of",
+              "type": {
+                "name": "string",
+                "namespace": "_builtins"
+              }
+            }
+          }
+        },
+        {
+          "description": "The field that will hold the geographical information looked up from the MaxMind database.",
+          "name": "target_field",
+          "required": false,
+          "serverDefault": "geoip",
+          "type": {
+            "kind": "instance_of",
+            "type": {
+              "name": "Field",
+              "namespace": "_types"
+            }
+          }
+        },
+        {
+          "description": "If `true` (and if `ingest.geoip.downloader.eager.download` is `false`), the missing database is downloaded when the pipeline is created.\nElse, the download is triggered by when the pipeline is used as the `default_pipeline` or `final_pipeline` in an index.",
+          "name": "download_database_on_pipeline_creation",
+          "required": false,
+          "type": {
+            "kind": "instance_of",
+            "type": {
+              "name": "boolean",
+              "namespace": "_builtins"
+            }
+          }
+        }
+      ],
+      "specLocation": "ingest/_types/Processors.ts#L478-L512"
     },
     {
       "inherits": {
@@ -121441,7 +124120,7 @@
           }
         }
       ],
-      "specLocation": "ingest/_types/Processors.ts#L351-L392"
+      "specLocation": "ingest/_types/Processors.ts#L388-L429"
     },
     {
       "inherits": {
@@ -121548,7 +124227,7 @@
           }
         }
       ],
-      "specLocation": "ingest/_types/Processors.ts#L405-L439"
+      "specLocation": "ingest/_types/Processors.ts#L442-L476"
     },
     {
       "inherits": {
@@ -121563,6 +124242,19 @@
         "namespace": "ingest._types"
       },
       "properties": [
+        {
+          "description": "Must be disabled or v1. If v1, the processor uses patterns with Elastic\nCommon Schema (ECS) field names.",
+          "name": "ecs_compatibility",
+          "required": false,
+          "serverDefault": "disabled",
+          "type": {
+            "kind": "instance_of",
+            "type": {
+              "name": "string",
+              "namespace": "_builtins"
+            }
+          }
+        },
         {
           "description": "The field to use for grok expression parsing.",
           "name": "field",
@@ -121640,7 +124332,7 @@
           }
         }
       ],
-      "specLocation": "ingest/_types/Processors.ts#L769-L794"
+      "specLocation": "ingest/_types/Processors.ts#L950-L981"
     },
     {
       "inherits": {
@@ -121718,7 +124410,7 @@
           }
         }
       ],
-      "specLocation": "ingest/_types/Processors.ts#L796-L820"
+      "specLocation": "ingest/_types/Processors.ts#L983-L1007"
     },
     {
       "inherits": {
@@ -121772,7 +124464,7 @@
           }
         }
       ],
-      "specLocation": "ingest/_types/Processors.ts#L822-L838"
+      "specLocation": "ingest/_types/Processors.ts#L1009-L1025"
     },
     {
       "inherits": {
@@ -121844,7 +124536,7 @@
           }
         }
       ],
-      "specLocation": "ingest/_types/Processors.ts#L840-L859"
+      "specLocation": "ingest/_types/Processors.ts#L1027-L1046"
     },
     {
       "kind": "interface",
@@ -121878,7 +124570,7 @@
           }
         }
       ],
-      "specLocation": "ingest/_types/Processors.ts#L861-L873",
+      "specLocation": "ingest/_types/Processors.ts#L1048-L1060",
       "variants": {
         "kind": "container"
       }
@@ -121917,7 +124609,7 @@
           }
         }
       ],
-      "specLocation": "ingest/_types/Processors.ts#L875-L886"
+      "specLocation": "ingest/_types/Processors.ts#L1062-L1073"
     },
     {
       "kind": "interface",
@@ -121991,7 +124683,7 @@
           }
         }
       ],
-      "specLocation": "ingest/_types/Processors.ts#L888-L914"
+      "specLocation": "ingest/_types/Processors.ts#L1075-L1101"
     },
     {
       "inherits": {
@@ -122044,7 +124736,7 @@
           }
         }
       ],
-      "specLocation": "ingest/_types/Processors.ts#L916-L931"
+      "specLocation": "ingest/_types/Processors.ts#L1103-L1118"
     },
     {
       "inherits": {
@@ -122123,7 +124815,7 @@
           }
         }
       ],
-      "specLocation": "ingest/_types/Processors.ts#L933-L962"
+      "specLocation": "ingest/_types/Processors.ts#L1120-L1149"
     },
     {
       "inherits": {
@@ -122280,7 +124972,7 @@
           }
         }
       ],
-      "specLocation": "ingest/_types/Processors.ts#L971-L1023"
+      "specLocation": "ingest/_types/Processors.ts#L1158-L1210"
     },
     {
       "inherits": {
@@ -122334,7 +125026,102 @@
           }
         }
       ],
-      "specLocation": "ingest/_types/Processors.ts#L1025-L1041"
+      "specLocation": "ingest/_types/Processors.ts#L1212-L1228"
+    },
+    {
+      "inherits": {
+        "type": {
+          "name": "ProcessorBase",
+          "namespace": "ingest._types"
+        }
+      },
+      "kind": "interface",
+      "name": {
+        "name": "NetworkDirectionProcessor",
+        "namespace": "ingest._types"
+      },
+      "properties": [
+        {
+          "description": "Field containing the source IP address.",
+          "name": "source_ip",
+          "required": false,
+          "serverDefault": "source.ip",
+          "type": {
+            "kind": "instance_of",
+            "type": {
+              "name": "Field",
+              "namespace": "_types"
+            }
+          }
+        },
+        {
+          "description": "Field containing the destination IP address.",
+          "name": "destination_ip",
+          "required": false,
+          "serverDefault": "destination.ip",
+          "type": {
+            "kind": "instance_of",
+            "type": {
+              "name": "Field",
+              "namespace": "_types"
+            }
+          }
+        },
+        {
+          "description": "Output field for the network direction.",
+          "name": "target_field",
+          "required": false,
+          "serverDefault": "network.direction",
+          "type": {
+            "kind": "instance_of",
+            "type": {
+              "name": "Field",
+              "namespace": "_types"
+            }
+          }
+        },
+        {
+          "description": "List of internal networks. Supports IPv4 and IPv6 addresses and ranges in\nCIDR notation. Also supports the named ranges listed below. These may be\nconstructed with template snippets. Must specify only one of\ninternal_networks or internal_networks_field.",
+          "name": "internal_networks",
+          "required": false,
+          "type": {
+            "kind": "array_of",
+            "value": {
+              "kind": "instance_of",
+              "type": {
+                "name": "string",
+                "namespace": "_builtins"
+              }
+            }
+          }
+        },
+        {
+          "description": "A field on the given document to read the internal_networks configuration\nfrom.",
+          "name": "internal_networks_field",
+          "required": false,
+          "type": {
+            "kind": "instance_of",
+            "type": {
+              "name": "Field",
+              "namespace": "_types"
+            }
+          }
+        },
+        {
+          "description": "If true and any required fields are missing, the processor quietly exits\nwithout modifying the document.",
+          "name": "ignore_missing",
+          "required": false,
+          "serverDefault": true,
+          "type": {
+            "kind": "instance_of",
+            "type": {
+              "name": "boolean",
+              "namespace": "_builtins"
+            }
+          }
+        }
+      ],
+      "specLocation": "ingest/_types/Processors.ts#L1230-L1264"
     },
     {
       "inherits": {
@@ -122375,7 +125162,7 @@
           }
         }
       ],
-      "specLocation": "ingest/_types/Processors.ts#L1043-L1054"
+      "specLocation": "ingest/_types/Processors.ts#L1266-L1277"
     },
     {
       "inherits": {
@@ -122490,9 +125277,81 @@
               "namespace": "_builtins"
             }
           }
+        },
+        {
+          "availability": {
+            "serverless": {},
+            "stack": {
+              "since": "8.16.0"
+            }
+          },
+          "description": "If `true` then ingest metadata `_ingest._redact._is_redacted` is set to `true` if the document has been redacted",
+          "name": "trace_redact",
+          "required": false,
+          "serverDefault": false,
+          "type": {
+            "kind": "instance_of",
+            "type": {
+              "name": "boolean",
+              "namespace": "_builtins"
+            }
+          }
+        }
+      ],
+      "specLocation": "ingest/_types/Processors.ts#L1279-L1320"
+    },
+    {
+      "inherits": {
+        "type": {
+          "name": "ProcessorBase",
+          "namespace": "ingest._types"
+        }
+      },
+      "kind": "interface",
+      "name": {
+        "name": "RegisteredDomainProcessor",
+        "namespace": "ingest._types"
+      },
+      "properties": [
+        {
+          "description": "Field containing the source FQDN.",
+          "name": "field",
+          "required": true,
+          "type": {
+            "kind": "instance_of",
+            "type": {
+              "name": "Field",
+              "namespace": "_types"
+            }
+          }
+        },
+        {
+          "description": "Object field containing extracted domain components. If an empty string,\nthe processor adds components to the document’s root.",
+          "name": "target_field",
+          "required": false,
+          "type": {
+            "kind": "instance_of",
+            "type": {
+              "name": "Field",
+              "namespace": "_types"
+            }
+          }
+        },
+        {
+          "description": "If true and any required fields are missing, the processor quietly exits\nwithout modifying the document.",
+          "name": "ignore_missing",
+          "required": false,
+          "serverDefault": true,
+          "type": {
+            "kind": "instance_of",
+            "type": {
+              "name": "boolean",
+              "namespace": "_builtins"
+            }
+          }
         }
       ],
-      "specLocation": "ingest/_types/Processors.ts#L1056-L1090"
+      "specLocation": "ingest/_types/Processors.ts#L1322-L1338"
     },
     {
       "inherits": {
@@ -122545,7 +125404,7 @@
           }
         }
       ],
-      "specLocation": "ingest/_types/Processors.ts#L1092-L1106"
+      "specLocation": "ingest/_types/Processors.ts#L1340-L1354"
     },
     {
       "inherits": {
@@ -122598,7 +125457,7 @@
           }
         }
       ],
-      "specLocation": "ingest/_types/Processors.ts#L1108-L1124"
+      "specLocation": "ingest/_types/Processors.ts#L1356-L1372"
     },
     {
       "inherits": {
@@ -122680,7 +125539,7 @@
           }
         }
       ],
-      "specLocation": "ingest/_types/Processors.ts#L1126-L1154"
+      "specLocation": "ingest/_types/Processors.ts#L1374-L1402"
     },
     {
       "inherits": {
@@ -122752,7 +125611,7 @@
           }
         }
       ],
-      "specLocation": "ingest/_types/Processors.ts#L1156-L1176"
+      "specLocation": "ingest/_types/Processors.ts#L1404-L1424"
     },
     {
       "inherits": {
@@ -122838,7 +125697,7 @@
           }
         }
       ],
-      "specLocation": "ingest/_types/Processors.ts#L1178-L1212"
+      "specLocation": "ingest/_types/Processors.ts#L1426-L1460"
     },
     {
       "inherits": {
@@ -122881,7 +125740,7 @@
           }
         }
       ],
-      "specLocation": "ingest/_types/Processors.ts#L1214-L1223"
+      "specLocation": "ingest/_types/Processors.ts#L1462-L1471"
     },
     {
       "inherits": {
@@ -122934,7 +125793,7 @@
           }
         }
       ],
-      "specLocation": "ingest/_types/Processors.ts#L1230-L1246"
+      "specLocation": "ingest/_types/Processors.ts#L1478-L1494"
     },
     {
       "inherits": {
@@ -123013,7 +125872,22 @@
           }
         }
       ],
-      "specLocation": "ingest/_types/Processors.ts#L1248-L1273"
+      "specLocation": "ingest/_types/Processors.ts#L1496-L1521"
+    },
+    {
+      "inherits": {
+        "type": {
+          "name": "ProcessorBase",
+          "namespace": "ingest._types"
+        }
+      },
+      "kind": "interface",
+      "name": {
+        "name": "TerminateProcessor",
+        "namespace": "ingest._types"
+      },
+      "properties": [],
+      "specLocation": "ingest/_types/Processors.ts#L1523-L1523"
     },
     {
       "inherits": {
@@ -123067,7 +125941,7 @@
           }
         }
       ],
-      "specLocation": "ingest/_types/Processors.ts#L1275-L1291"
+      "specLocation": "ingest/_types/Processors.ts#L1525-L1541"
     },
     {
       "inherits": {
@@ -123121,7 +125995,7 @@
           }
         }
       ],
-      "specLocation": "ingest/_types/Processors.ts#L1293-L1309"
+      "specLocation": "ingest/_types/Processors.ts#L1543-L1559"
     },
     {
       "inherits": {
@@ -123175,7 +126049,7 @@
           }
         }
       ],
-      "specLocation": "ingest/_types/Processors.ts#L1311-L1327"
+      "specLocation": "ingest/_types/Processors.ts#L1561-L1577"
     },
     {
       "inherits": {
@@ -123255,7 +126129,7 @@
           }
         }
       ],
-      "specLocation": "ingest/_types/Processors.ts#L1329-L1355"
+      "specLocation": "ingest/_types/Processors.ts#L1579-L1605"
     },
     {
       "inherits": {
@@ -123368,7 +126242,7 @@
           }
         }
       ],
-      "specLocation": "ingest/_types/Processors.ts#L441-L472"
+      "specLocation": "ingest/_types/Processors.ts#L514-L545"
     },
     {
       "kind": "interface",
@@ -123410,7 +126284,7 @@
           }
         }
       ],
-      "specLocation": "ingest/simulate/types.ts#L50-L64"
+      "specLocation": "ingest/simulate/types.ts#L62-L76"
     },
     {
       "kind": "interface",
@@ -123456,7 +126330,7 @@
           }
         }
       ],
-      "specLocation": "ingest/simulate/types.ts#L34-L38"
+      "specLocation": "ingest/simulate/types.ts#L46-L50"
     },
     {
       "attachedBehaviors": [
@@ -123596,7 +126470,7 @@
           }
         }
       ],
-      "specLocation": "ingest/simulate/types.ts#L66-L96"
+      "specLocation": "ingest/simulate/types.ts#L78-L108"
     },
     {
       "kind": "interface",
@@ -123605,6 +126479,23 @@
         "namespace": "ingest.simulate"
       },
       "properties": [
+        {
+          "availability": {
+            "serverless": {},
+            "stack": {
+              "since": "8.16.0"
+            }
+          },
+          "name": "_redact",
+          "required": false,
+          "type": {
+            "kind": "instance_of",
+            "type": {
+              "name": "Redact",
+              "namespace": "ingest.simulate"
+            }
+          }
+        },
         {
           "name": "timestamp",
           "required": true,
@@ -123628,7 +126519,29 @@
           }
         }
       ],
-      "specLocation": "ingest/simulate/types.ts#L29-L32"
+      "specLocation": "ingest/simulate/types.ts#L29-L37"
+    },
+    {
+      "kind": "interface",
+      "name": {
+        "name": "Redact",
+        "namespace": "ingest.simulate"
+      },
+      "properties": [
+        {
+          "description": "indicates if document has been redacted",
+          "name": "_is_redacted",
+          "required": true,
+          "type": {
+            "kind": "instance_of",
+            "type": {
+              "name": "boolean",
+              "namespace": "_builtins"
+            }
+          }
+        }
+      ],
+      "specLocation": "ingest/simulate/types.ts#L39-L44"
     },
     {
       "kind": "interface",
@@ -123715,7 +126628,7 @@
           }
         }
       ],
-      "specLocation": "ingest/simulate/types.ts#L40-L48"
+      "specLocation": "ingest/simulate/types.ts#L52-L60"
     },
     {
       "kind": "interface",
@@ -126121,9 +129034,20 @@
               "namespace": "_types"
             }
           }
+        },
+        {
+          "name": "_meta",
+          "required": false,
+          "type": {
+            "kind": "instance_of",
+            "type": {
+              "name": "Metadata",
+              "namespace": "_types"
+            }
+          }
         }
       ],
-      "specLocation": "ml/_types/DataframeAnalytics.ts#L305-L321"
+      "specLocation": "ml/_types/DataframeAnalytics.ts#L306-L323"
     },
     {
       "kind": "interface",
@@ -126175,7 +129099,7 @@
           }
         }
       ],
-      "specLocation": "ml/_types/DataframeAnalytics.ts#L83-L100",
+      "specLocation": "ml/_types/DataframeAnalytics.ts#L84-L101",
       "variants": {
         "kind": "container"
       }
@@ -126218,7 +129142,7 @@
           }
         }
       ],
-      "specLocation": "ml/_types/DataframeAnalytics.ts#L226-L235"
+      "specLocation": "ml/_types/DataframeAnalytics.ts#L227-L236"
     },
     {
       "kind": "interface",
@@ -126453,7 +129377,7 @@
           }
         }
       ],
-      "specLocation": "ml/_types/DataframeAnalytics.ts#L133-L212"
+      "specLocation": "ml/_types/DataframeAnalytics.ts#L134-L213"
     },
     {
       "kind": "interface",
@@ -126523,7 +129447,7 @@
           }
         }
       ],
-      "specLocation": "ml/_types/DataframeAnalytics.ts#L245-L257",
+      "specLocation": "ml/_types/DataframeAnalytics.ts#L246-L258",
       "variants": {
         "kind": "container"
       }
@@ -126582,7 +129506,7 @@
           }
         }
       ],
-      "specLocation": "ml/_types/DataframeAnalytics.ts#L259-L266"
+      "specLocation": "ml/_types/DataframeAnalytics.ts#L260-L267"
     },
     {
       "kind": "interface",
@@ -126607,7 +129531,7 @@
           }
         }
       ],
-      "specLocation": "ml/_types/DataframeAnalytics.ts#L268-L271"
+      "specLocation": "ml/_types/DataframeAnalytics.ts#L269-L272"
     },
     {
       "kind": "interface",
@@ -126691,7 +129615,7 @@
           }
         }
       ],
-      "specLocation": "ml/_types/DataframeAnalytics.ts#L273-L285"
+      "specLocation": "ml/_types/DataframeAnalytics.ts#L274-L286"
     },
     {
       "kind": "interface",
@@ -126725,7 +129649,7 @@
           }
         }
       ],
-      "specLocation": "ml/_types/DataframeAnalytics.ts#L287-L292"
+      "specLocation": "ml/_types/DataframeAnalytics.ts#L288-L293"
     },
     {
       "kind": "interface",
@@ -126790,7 +129714,7 @@
           }
         }
       ],
-      "specLocation": "ml/_types/DataframeAnalytics.ts#L294-L303"
+      "specLocation": "ml/_types/DataframeAnalytics.ts#L295-L304"
     },
     {
       "kind": "interface",
@@ -126876,7 +129800,7 @@
           }
         }
       ],
-      "specLocation": "ml/_types/DataframeAnalytics.ts#L102-L131"
+      "specLocation": "ml/_types/DataframeAnalytics.ts#L103-L132"
     },
     {
       "inherits": {
@@ -126917,7 +129841,7 @@
           }
         }
       ],
-      "specLocation": "ml/_types/DataframeAnalytics.ts#L214-L224"
+      "specLocation": "ml/_types/DataframeAnalytics.ts#L215-L225"
     },
     {
       "kind": "interface",
@@ -126958,7 +129882,7 @@
         }
       ],
       "shortcutProperty": "includes",
-      "specLocation": "ml/_types/DataframeAnalytics.ts#L237-L243"
+      "specLocation": "ml/_types/DataframeAnalytics.ts#L238-L244"
     },
     {
       "kind": "interface",
@@ -127075,7 +129999,7 @@
           }
         }
       ],
-      "specLocation": "ml/_types/DataframeAnalytics.ts#L76-L81"
+      "specLocation": "ml/_types/DataframeAnalytics.ts#L77-L82"
     },
     {
       "kind": "interface",
@@ -127135,7 +130059,7 @@
           }
         }
       ],
-      "specLocation": "ml/_types/DataframeAnalytics.ts#L38-L52"
+      "specLocation": "ml/_types/DataframeAnalytics.ts#L39-L53"
     },
     {
       "kind": "interface",
@@ -127232,7 +130156,7 @@
           }
         }
       ],
-      "specLocation": "ml/_types/DataframeAnalytics.ts#L323-L343"
+      "specLocation": "ml/_types/DataframeAnalytics.ts#L325-L345"
     },
     {
       "kind": "interface",
@@ -127278,7 +130202,7 @@
           }
         }
       ],
-      "specLocation": "ml/_types/DataframeAnalytics.ts#L372-L380",
+      "specLocation": "ml/_types/DataframeAnalytics.ts#L374-L382",
       "variants": {
         "kind": "container"
       }
@@ -127360,7 +130284,7 @@
           }
         }
       ],
-      "specLocation": "ml/_types/DataframeAnalytics.ts#L382-L401"
+      "specLocation": "ml/_types/DataframeAnalytics.ts#L384-L403"
     },
     {
       "kind": "interface",
@@ -127538,7 +130462,7 @@
           }
         }
       ],
-      "specLocation": "ml/_types/DataframeAnalytics.ts#L418-L524"
+      "specLocation": "ml/_types/DataframeAnalytics.ts#L420-L526"
     },
     {
       "kind": "interface",
@@ -127590,7 +130514,7 @@
           }
         }
       ],
-      "specLocation": "ml/_types/DataframeAnalytics.ts#L562-L567"
+      "specLocation": "ml/_types/DataframeAnalytics.ts#L564-L569"
     },
     {
       "kind": "interface",
@@ -127627,7 +130551,7 @@
           }
         }
       ],
-      "specLocation": "ml/_types/DataframeAnalytics.ts#L569-L574"
+      "specLocation": "ml/_types/DataframeAnalytics.ts#L571-L576"
     },
     {
       "kind": "interface",
@@ -127682,7 +130606,7 @@
           }
         }
       ],
-      "specLocation": "ml/_types/DataframeAnalytics.ts#L403-L416"
+      "specLocation": "ml/_types/DataframeAnalytics.ts#L405-L418"
     },
     {
       "kind": "interface",
@@ -127767,7 +130691,7 @@
           }
         }
       ],
-      "specLocation": "ml/_types/DataframeAnalytics.ts#L526-L560"
+      "specLocation": "ml/_types/DataframeAnalytics.ts#L528-L562"
     },
     {
       "kind": "interface",
@@ -127813,7 +130737,7 @@
           }
         }
       ],
-      "specLocation": "ml/_types/DataframeAnalytics.ts#L363-L370"
+      "specLocation": "ml/_types/DataframeAnalytics.ts#L365-L372"
     },
     {
       "kind": "interface",
@@ -127880,7 +130804,7 @@
           }
         }
       ],
-      "specLocation": "ml/_types/DataframeAnalytics.ts#L352-L361"
+      "specLocation": "ml/_types/DataframeAnalytics.ts#L354-L363"
     },
     {
       "kind": "interface",
@@ -127914,7 +130838,7 @@
           }
         }
       ],
-      "specLocation": "ml/_types/DataframeAnalytics.ts#L345-L350"
+      "specLocation": "ml/_types/DataframeAnalytics.ts#L347-L352"
     },
     {
       "kind": "interface",
@@ -127962,7 +130886,7 @@
         {
           "description": "An object that provides statistical information about timing aspect of this datafeed.",
           "name": "timing_stats",
-          "required": true,
+          "required": false,
           "type": {
             "kind": "instance_of",
             "type": {
@@ -127984,7 +130908,7 @@
           }
         }
       ],
-      "specLocation": "ml/_types/Datafeed.ts#L139-L168"
+      "specLocation": "ml/_types/Datafeed.ts#L143-L172"
     },
     {
       "kind": "interface",
@@ -128026,6 +130950,17 @@
             }
           }
         },
+        {
+          "name": "exponential_average_calculation_context",
+          "required": false,
+          "type": {
+            "kind": "instance_of",
+            "type": {
+              "name": "ExponentialAverageCalculationContext",
+              "namespace": "ml._types"
+            }
+          }
+        },
         {
           "description": "Identifier for the anomaly detection job.",
           "name": "job_id",
@@ -128093,7 +131028,77 @@
           }
         }
       ],
-      "specLocation": "ml/_types/Datafeed.ts#L170-L195"
+      "specLocation": "ml/_types/Datafeed.ts#L174-L202"
+    },
+    {
+      "kind": "interface",
+      "name": {
+        "name": "ExponentialAverageCalculationContext",
+        "namespace": "ml._types"
+      },
+      "properties": [
+        {
+          "name": "incremental_metric_value_ms",
+          "required": true,
+          "type": {
+            "generics": [
+              {
+                "kind": "instance_of",
+                "type": {
+                  "name": "UnitFloatMillis",
+                  "namespace": "_types"
+                }
+              }
+            ],
+            "kind": "instance_of",
+            "type": {
+              "name": "DurationValue",
+              "namespace": "_types"
+            }
+          }
+        },
+        {
+          "name": "latest_timestamp",
+          "required": false,
+          "type": {
+            "generics": [
+              {
+                "kind": "instance_of",
+                "type": {
+                  "name": "UnitMillis",
+                  "namespace": "_types"
+                }
+              }
+            ],
+            "kind": "instance_of",
+            "type": {
+              "name": "EpochTime",
+              "namespace": "_types"
+            }
+          }
+        },
+        {
+          "name": "previous_exponential_average_ms",
+          "required": false,
+          "type": {
+            "generics": [
+              {
+                "kind": "instance_of",
+                "type": {
+                  "name": "UnitFloatMillis",
+                  "namespace": "_types"
+                }
+              }
+            ],
+            "kind": "instance_of",
+            "type": {
+              "name": "DurationValue",
+              "namespace": "_types"
+            }
+          }
+        }
+      ],
+      "specLocation": "ml/_types/Datafeed.ts#L204-L208"
     },
     {
       "kind": "interface",
@@ -128139,7 +131144,7 @@
           }
         }
       ],
-      "specLocation": "ml/_types/Datafeed.ts#L197-L211"
+      "specLocation": "ml/_types/Datafeed.ts#L210-L224"
     },
     {
       "kind": "interface",
@@ -128215,7 +131220,7 @@
           }
         }
       ],
-      "specLocation": "ml/_types/Datafeed.ts#L213-L230"
+      "specLocation": "ml/_types/Datafeed.ts#L226-L243"
     },
     {
       "kind": "interface",
@@ -128345,6 +131350,8 @@
           }
         },
         {
+          "extDocId": "query-dsl",
+          "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/query-dsl.html",
           "name": "query",
           "required": true,
           "type": {
@@ -128433,7 +131440,7 @@
           }
         }
       ],
-      "specLocation": "ml/_types/Datafeed.ts#L36-L57"
+      "specLocation": "ml/_types/Datafeed.ts#L37-L61"
     },
     {
       "kind": "interface",
@@ -128517,7 +131524,7 @@
           }
         }
       ],
-      "specLocation": "ml/_types/Datafeed.ts#L238-L251"
+      "specLocation": "ml/_types/Datafeed.ts#L251-L264"
     },
     {
       "kind": "interface",
@@ -128551,7 +131558,7 @@
           }
         }
       ],
-      "specLocation": "ml/_types/Datafeed.ts#L118-L129"
+      "specLocation": "ml/_types/Datafeed.ts#L122-L133"
     },
     {
       "description": "Controls how to deal with unavailable concrete indices (closed or missing), how wildcard expressions are expanded\nto actual indices (all, closed or open indices) and how to deal with wildcard expressions that resolve to no indices.",
@@ -129225,6 +132232,17 @@
             }
           }
         },
+        {
+          "name": "output_memory_allocator_bytes",
+          "required": false,
+          "type": {
+            "kind": "instance_of",
+            "type": {
+              "name": "ByteSize",
+              "namespace": "_types"
+            }
+          }
+        },
         {
           "name": "peak_model_bytes",
           "required": false,
@@ -129380,7 +132398,7 @@
           }
         }
       ],
-      "specLocation": "ml/_types/Model.ts#L59-L81"
+      "specLocation": "ml/_types/Model.ts#L59-L82"
     },
     {
       "kind": "interface",
@@ -129849,8 +132867,8 @@
           "type": {
             "kind": "instance_of",
             "type": {
-              "name": "string",
-              "namespace": "_builtins"
+              "name": "ByteSize",
+              "namespace": "_types"
             }
           }
         }
@@ -130111,7 +133129,7 @@
         {
           "description": "The start time of the bucket for which these results were calculated.",
           "name": "timestamp_string",
-          "required": true,
+          "required": false,
           "type": {
             "kind": "instance_of",
             "type": {
@@ -130378,6 +133396,17 @@
             }
           }
         },
+        {
+          "name": "model_package",
+          "required": false,
+          "type": {
+            "kind": "instance_of",
+            "type": {
+              "name": "ModelPackageConfig",
+              "namespace": "ml._types"
+            }
+          }
+        },
         {
           "name": "location",
           "required": false,
@@ -130389,6 +133418,17 @@
             }
           }
         },
+        {
+          "name": "platform_architecture",
+          "required": false,
+          "type": {
+            "kind": "instance_of",
+            "type": {
+              "name": "string",
+              "namespace": "_builtins"
+            }
+          }
+        },
         {
           "name": "prefix_strings",
           "required": false,
@@ -130401,7 +133441,7 @@
           }
         }
       ],
-      "specLocation": "ml/_types/TrainedModel.ts#L164-L199"
+      "specLocation": "ml/_types/TrainedModel.ts#L191-L228"
     },
     {
       "description": "Inference configuration provided when storing the model config",
@@ -130489,6 +133529,17 @@
             }
           }
         },
+        {
+          "name": "learning_to_rank",
+          "required": false,
+          "type": {
+            "kind": "instance_of",
+            "type": {
+              "name": "LearningToRankConfig",
+              "namespace": "ml._types"
+            }
+          }
+        },
         {
           "availability": {
             "serverless": {},
@@ -130580,7 +133631,7 @@
           }
         }
       ],
-      "specLocation": "ml/_types/inference.ts#L23-L80",
+      "specLocation": "ml/_types/inference.ts#L26-L85",
       "variants": {
         "kind": "container"
       }
@@ -130643,9 +133694,20 @@
               }
             }
           }
+        },
+        {
+          "name": "vocabulary",
+          "required": false,
+          "type": {
+            "kind": "instance_of",
+            "type": {
+              "name": "Vocabulary",
+              "namespace": "ml._types"
+            }
+          }
         }
       ],
-      "specLocation": "ml/_types/inference.ts#L189-L199"
+      "specLocation": "ml/_types/inference.ts#L202-L214"
     },
     {
       "description": "Tokenization options stored in inference configuration",
@@ -130667,6 +133729,18 @@
             }
           }
         },
+        {
+          "description": "Indicates BERT Japanese tokenization and its options",
+          "name": "bert_ja",
+          "required": false,
+          "type": {
+            "kind": "instance_of",
+            "type": {
+              "name": "NlpBertTokenizationConfig",
+              "namespace": "ml._types"
+            }
+          }
+        },
         {
           "availability": {
             "serverless": {},
@@ -130702,20 +133776,46 @@
               "namespace": "ml._types"
             }
           }
+        },
+        {
+          "name": "xlm_roberta",
+          "required": false,
+          "type": {
+            "kind": "instance_of",
+            "type": {
+              "name": "XlmRobertaTokenizationConfig",
+              "namespace": "ml._types"
+            }
+          }
         }
       ],
-      "specLocation": "ml/_types/inference.ts#L110-L129",
+      "specLocation": "ml/_types/inference.ts#L135-L158",
       "variants": {
         "kind": "container"
       }
     },
     {
       "description": "BERT and MPNet tokenization configuration options",
+      "inherits": {
+        "type": {
+          "name": "CommonTokenizationConfig",
+          "namespace": "ml._types"
+        }
+      },
       "kind": "interface",
       "name": {
         "name": "NlpBertTokenizationConfig",
         "namespace": "ml._types"
       },
+      "properties": [],
+      "specLocation": "ml/_types/inference.ts#L188-L189"
+    },
+    {
+      "kind": "interface",
+      "name": {
+        "name": "CommonTokenizationConfig",
+        "namespace": "ml._types"
+      },
       "properties": [
         {
           "description": "Should the tokenizer lower case the text",
@@ -130731,23 +133831,23 @@
           }
         },
         {
-          "description": "Is tokenization completed with special tokens",
-          "name": "with_special_tokens",
+          "description": "Maximum input sequence length for the model",
+          "name": "max_sequence_length",
           "required": false,
-          "serverDefault": true,
+          "serverDefault": 512,
           "type": {
             "kind": "instance_of",
             "type": {
-              "name": "boolean",
-              "namespace": "_builtins"
+              "name": "integer",
+              "namespace": "_types"
             }
           }
         },
         {
-          "description": "Maximum input sequence length for the model",
-          "name": "max_sequence_length",
+          "description": "Tokenization spanning options. Special value of -1 indicates no spanning takes place",
+          "name": "span",
           "required": false,
-          "serverDefault": 512,
+          "serverDefault": -1,
           "type": {
             "kind": "instance_of",
             "type": {
@@ -130770,23 +133870,29 @@
           }
         },
         {
-          "description": "Tokenization spanning options. Special value of -1 indicates no spanning takes place",
-          "name": "span",
+          "description": "Is tokenization completed with special tokens",
+          "name": "with_special_tokens",
           "required": false,
-          "serverDefault": -1,
+          "serverDefault": true,
           "type": {
             "kind": "instance_of",
             "type": {
-              "name": "integer",
-              "namespace": "_types"
+              "name": "boolean",
+              "namespace": "_builtins"
             }
           }
         }
       ],
-      "specLocation": "ml/_types/inference.ts#L131-L158"
+      "specLocation": "ml/_types/inference.ts#L160-L186"
     },
     {
       "description": "RoBERTa tokenization configuration options",
+      "inherits": {
+        "type": {
+          "name": "CommonTokenizationConfig",
+          "namespace": "ml._types"
+        }
+      },
       "kind": "interface",
       "name": {
         "name": "NlpRobertaTokenizationConfig",
@@ -130805,61 +133911,45 @@
               "namespace": "_builtins"
             }
           }
-        },
-        {
-          "description": "Is tokenization completed with special tokens",
-          "name": "with_special_tokens",
-          "required": false,
-          "serverDefault": true,
-          "type": {
-            "kind": "instance_of",
-            "type": {
-              "name": "boolean",
-              "namespace": "_builtins"
-            }
-          }
-        },
-        {
-          "description": "Maximum input sequence length for the model",
-          "name": "max_sequence_length",
-          "required": false,
-          "serverDefault": 512,
-          "type": {
-            "kind": "instance_of",
-            "type": {
-              "name": "integer",
-              "namespace": "_types"
-            }
-          }
-        },
-        {
-          "description": "Should tokenization input be automatically truncated before sending to the model for inference",
-          "name": "truncate",
-          "required": false,
-          "serverDefault": "first",
-          "type": {
-            "kind": "instance_of",
-            "type": {
-              "name": "TokenizationTruncate",
-              "namespace": "ml._types"
-            }
-          }
-        },
+        }
+      ],
+      "specLocation": "ml/_types/inference.ts#L191-L198"
+    },
+    {
+      "inherits": {
+        "type": {
+          "name": "CommonTokenizationConfig",
+          "namespace": "ml._types"
+        }
+      },
+      "kind": "interface",
+      "name": {
+        "name": "XlmRobertaTokenizationConfig",
+        "namespace": "ml._types"
+      },
+      "properties": [],
+      "specLocation": "ml/_types/inference.ts#L200-L200"
+    },
+    {
+      "kind": "interface",
+      "name": {
+        "name": "Vocabulary",
+        "namespace": "ml._types"
+      },
+      "properties": [
         {
-          "description": "Tokenization spanning options. Special value of -1 indicates no spanning takes place",
-          "name": "span",
-          "required": false,
-          "serverDefault": -1,
+          "name": "index",
+          "required": true,
           "type": {
             "kind": "instance_of",
             "type": {
-              "name": "integer",
+              "name": "IndexName",
               "namespace": "_types"
             }
           }
         }
       ],
-      "specLocation": "ml/_types/inference.ts#L160-L187"
+      "specLocation": "ml/_types/inference.ts#L248-L250"
     },
     {
       "description": "Zero shot classification configuration options",
@@ -130950,7 +134040,7 @@
           }
         }
       ],
-      "specLocation": "ml/_types/inference.ts#L201-L222"
+      "specLocation": "ml/_types/inference.ts#L216-L237"
     },
     {
       "description": "Fill mask inference options",
@@ -131007,9 +134097,84 @@
               "namespace": "_builtins"
             }
           }
+        },
+        {
+          "name": "vocabulary",
+          "required": true,
+          "type": {
+            "kind": "instance_of",
+            "type": {
+              "name": "Vocabulary",
+              "namespace": "ml._types"
+            }
+          }
+        }
+      ],
+      "specLocation": "ml/_types/inference.ts#L284-L299"
+    },
+    {
+      "kind": "interface",
+      "name": {
+        "name": "LearningToRankConfig",
+        "namespace": "ml._types"
+      },
+      "properties": [
+        {
+          "name": "default_params",
+          "required": false,
+          "type": {
+            "key": {
+              "kind": "instance_of",
+              "type": {
+                "name": "string",
+                "namespace": "_builtins"
+              }
+            },
+            "kind": "dictionary_of",
+            "singleKey": false,
+            "value": {
+              "kind": "user_defined_value"
+            }
+          }
+        },
+        {
+          "name": "feature_extractors",
+          "required": false,
+          "type": {
+            "kind": "array_of",
+            "value": {
+              "key": {
+                "kind": "instance_of",
+                "type": {
+                  "name": "string",
+                  "namespace": "_builtins"
+                }
+              },
+              "kind": "dictionary_of",
+              "singleKey": false,
+              "value": {
+                "kind": "instance_of",
+                "type": {
+                  "name": "FeatureExtractor",
+                  "namespace": "ml._types"
+                }
+              }
+            }
+          }
+        },
+        {
+          "name": "num_top_feature_importance_values",
+          "required": true,
+          "type": {
+            "kind": "instance_of",
+            "type": {
+              "name": "integer",
+              "namespace": "_types"
+            }
+          }
         }
       ],
-      "specLocation": "ml/_types/inference.ts#L266-L280"
+      "specLocation": "ml/_types/inference.ts#L87-L91"
     },
     {
       "description": "Named entity recognition options",
@@ -131070,28 +134235,7 @@
           }
         }
       ],
-      "specLocation": "ml/_types/inference.ts#L255-L264"
-    },
-    {
-      "kind": "interface",
-      "name": {
-        "name": "Vocabulary",
-        "namespace": "ml._types"
-      },
-      "properties": [
-        {
-          "name": "index",
-          "required": true,
-          "type": {
-            "kind": "instance_of",
-            "type": {
-              "name": "IndexName",
-              "namespace": "_types"
-            }
-          }
-        }
-      ],
-      "specLocation": "ml/_types/inference.ts#L233-L235"
+      "specLocation": "ml/_types/inference.ts#L273-L282"
     },
     {
       "description": "Pass through configuration options",
@@ -131137,7 +134281,7 @@
           }
         }
       ],
-      "specLocation": "ml/_types/inference.ts#L224-L231"
+      "specLocation": "ml/_types/inference.ts#L239-L246"
     },
     {
       "description": "Text embedding inference options",
@@ -131182,9 +134326,20 @@
               "namespace": "_builtins"
             }
           }
+        },
+        {
+          "name": "vocabulary",
+          "required": true,
+          "type": {
+            "kind": "instance_of",
+            "type": {
+              "name": "Vocabulary",
+              "namespace": "ml._types"
+            }
+          }
         }
       ],
-      "specLocation": "ml/_types/inference.ts#L237-L245"
+      "specLocation": "ml/_types/inference.ts#L252-L262"
     },
     {
       "description": "Text expansion inference options",
@@ -131217,9 +134372,20 @@
               "namespace": "_builtins"
             }
           }
+        },
+        {
+          "name": "vocabulary",
+          "required": true,
+          "type": {
+            "kind": "instance_of",
+            "type": {
+              "name": "Vocabulary",
+              "namespace": "ml._types"
+            }
+          }
         }
       ],
-      "specLocation": "ml/_types/inference.ts#L247-L253"
+      "specLocation": "ml/_types/inference.ts#L264-L271"
     },
     {
       "description": "Question answering inference options",
@@ -131278,7 +134444,7 @@
           }
         }
       ],
-      "specLocation": "ml/_types/inference.ts#L282-L292"
+      "specLocation": "ml/_types/inference.ts#L301-L311"
     },
     {
       "kind": "interface",
@@ -131303,7 +134469,7 @@
           }
         }
       ],
-      "specLocation": "ml/_types/TrainedModel.ts#L201-L204"
+      "specLocation": "ml/_types/TrainedModel.ts#L230-L233"
     },
     {
       "kind": "interface",
@@ -131380,7 +134546,7 @@
           }
         }
       ],
-      "specLocation": "ml/_types/TrainedModel.ts#L206-L214"
+      "specLocation": "ml/_types/TrainedModel.ts#L235-L243"
     },
     {
       "kind": "interface",
@@ -131452,7 +134618,7 @@
           }
         }
       ],
-      "specLocation": "ml/_types/TrainedModel.ts#L216-L230"
+      "specLocation": "ml/_types/TrainedModel.ts#L262-L276"
     },
     {
       "kind": "interface",
@@ -131504,7 +134670,7 @@
           }
         }
       ],
-      "specLocation": "ml/_types/TrainedModel.ts#L232-L239"
+      "specLocation": "ml/_types/TrainedModel.ts#L278-L285"
     },
     {
       "kind": "interface",
@@ -131550,7 +134716,7 @@
           }
         }
       ],
-      "specLocation": "ml/_types/TrainedModel.ts#L248-L255"
+      "specLocation": "ml/_types/TrainedModel.ts#L294-L301"
     },
     {
       "kind": "interface",
@@ -131587,49 +134753,190 @@
           }
         }
       ],
-      "specLocation": "ml/_types/TrainedModel.ts#L241-L246"
+      "specLocation": "ml/_types/TrainedModel.ts#L287-L292"
     },
     {
       "kind": "interface",
       "name": {
-        "name": "TrainedModelLocation",
+        "name": "ModelPackageConfig",
         "namespace": "ml._types"
       },
       "properties": [
         {
-          "name": "index",
+          "name": "create_time",
+          "required": false,
+          "type": {
+            "generics": [
+              {
+                "kind": "instance_of",
+                "type": {
+                  "name": "UnitMillis",
+                  "namespace": "_types"
+                }
+              }
+            ],
+            "kind": "instance_of",
+            "type": {
+              "name": "EpochTime",
+              "namespace": "_types"
+            }
+          }
+        },
+        {
+          "name": "description",
+          "required": false,
+          "type": {
+            "kind": "instance_of",
+            "type": {
+              "name": "string",
+              "namespace": "_builtins"
+            }
+          }
+        },
+        {
+          "name": "inference_config",
+          "required": false,
+          "type": {
+            "key": {
+              "kind": "instance_of",
+              "type": {
+                "name": "string",
+                "namespace": "_builtins"
+              }
+            },
+            "kind": "dictionary_of",
+            "singleKey": false,
+            "value": {
+              "kind": "user_defined_value"
+            }
+          }
+        },
+        {
+          "name": "metadata",
+          "required": false,
+          "type": {
+            "kind": "instance_of",
+            "type": {
+              "name": "Metadata",
+              "namespace": "_types"
+            }
+          }
+        },
+        {
+          "name": "minimum_version",
+          "required": false,
+          "type": {
+            "kind": "instance_of",
+            "type": {
+              "name": "string",
+              "namespace": "_builtins"
+            }
+          }
+        },
+        {
+          "name": "model_repository",
+          "required": false,
+          "type": {
+            "kind": "instance_of",
+            "type": {
+              "name": "string",
+              "namespace": "_builtins"
+            }
+          }
+        },
+        {
+          "name": "model_type",
+          "required": false,
+          "type": {
+            "kind": "instance_of",
+            "type": {
+              "name": "string",
+              "namespace": "_builtins"
+            }
+          }
+        },
+        {
+          "name": "packaged_model_id",
           "required": true,
           "type": {
             "kind": "instance_of",
             "type": {
-              "name": "TrainedModelLocationIndex",
+              "name": "Id",
+              "namespace": "_types"
+            }
+          }
+        },
+        {
+          "name": "platform_architecture",
+          "required": false,
+          "type": {
+            "kind": "instance_of",
+            "type": {
+              "name": "string",
+              "namespace": "_builtins"
+            }
+          }
+        },
+        {
+          "name": "prefix_strings",
+          "required": false,
+          "type": {
+            "kind": "instance_of",
+            "type": {
+              "name": "TrainedModelPrefixStrings",
               "namespace": "ml._types"
             }
           }
-        }
-      ],
-      "specLocation": "ml/_types/TrainedModel.ts#L419-L421"
-    },
-    {
-      "kind": "interface",
-      "name": {
-        "name": "TrainedModelLocationIndex",
-        "namespace": "ml._types"
-      },
-      "properties": [
+        },
         {
-          "name": "name",
-          "required": true,
+          "name": "size",
+          "required": false,
           "type": {
             "kind": "instance_of",
             "type": {
-              "name": "IndexName",
+              "name": "ByteSize",
               "namespace": "_types"
             }
           }
+        },
+        {
+          "name": "sha256",
+          "required": false,
+          "type": {
+            "kind": "instance_of",
+            "type": {
+              "name": "string",
+              "namespace": "_builtins"
+            }
+          }
+        },
+        {
+          "name": "tags",
+          "required": false,
+          "type": {
+            "kind": "array_of",
+            "value": {
+              "kind": "instance_of",
+              "type": {
+                "name": "string",
+                "namespace": "_builtins"
+              }
+            }
+          }
+        },
+        {
+          "name": "vocabulary_file",
+          "required": false,
+          "type": {
+            "kind": "instance_of",
+            "type": {
+              "name": "string",
+              "namespace": "_builtins"
+            }
+          }
         }
       ],
-      "specLocation": "ml/_types/TrainedModel.ts#L423-L425"
+      "specLocation": "ml/_types/TrainedModel.ts#L245-L260"
     },
     {
       "kind": "interface",
@@ -131663,7 +134970,49 @@
           }
         }
       ],
-      "specLocation": "ml/_types/TrainedModel.ts#L427-L436"
+      "specLocation": "ml/_types/TrainedModel.ts#L475-L484"
+    },
+    {
+      "kind": "interface",
+      "name": {
+        "name": "TrainedModelLocation",
+        "namespace": "ml._types"
+      },
+      "properties": [
+        {
+          "name": "index",
+          "required": true,
+          "type": {
+            "kind": "instance_of",
+            "type": {
+              "name": "TrainedModelLocationIndex",
+              "namespace": "ml._types"
+            }
+          }
+        }
+      ],
+      "specLocation": "ml/_types/TrainedModel.ts#L467-L469"
+    },
+    {
+      "kind": "interface",
+      "name": {
+        "name": "TrainedModelLocationIndex",
+        "namespace": "ml._types"
+      },
+      "properties": [
+        {
+          "name": "name",
+          "required": true,
+          "type": {
+            "kind": "instance_of",
+            "type": {
+              "name": "IndexName",
+              "namespace": "_types"
+            }
+          }
+        }
+      ],
+      "specLocation": "ml/_types/TrainedModel.ts#L471-L473"
     },
     {
       "kind": "interface",
@@ -131754,7 +135103,7 @@
           }
         }
       ],
-      "specLocation": "ml/_types/TrainedModel.ts#L41-L59"
+      "specLocation": "ml/_types/TrainedModel.ts#L42-L60"
     },
     {
       "kind": "interface",
@@ -131763,10 +135112,21 @@
         "namespace": "ml._types"
       },
       "properties": [
+        {
+          "name": "adaptive_allocations",
+          "required": false,
+          "type": {
+            "kind": "instance_of",
+            "type": {
+              "name": "AdaptiveAllocationsSettings",
+              "namespace": "ml._types"
+            }
+          }
+        },
         {
           "description": "The detailed allocation status for the deployment.",
           "name": "allocation_status",
-          "required": true,
+          "required": false,
           "type": {
             "kind": "instance_of",
             "type": {
@@ -131801,7 +135161,7 @@
         {
           "description": "The sum of `error_count` for all nodes in the deployment.",
           "name": "error_count",
-          "required": true,
+          "required": false,
           "type": {
             "kind": "instance_of",
             "type": {
@@ -131813,7 +135173,7 @@
         {
           "description": "The sum of `inference_count` for all nodes in the deployment.",
           "name": "inference_count",
-          "required": true,
+          "required": false,
           "type": {
             "kind": "instance_of",
             "type": {
@@ -131852,7 +135212,7 @@
         {
           "description": "The number of allocations requested.",
           "name": "number_of_allocations",
-          "required": true,
+          "required": false,
           "type": {
             "kind": "instance_of",
             "type": {
@@ -131861,10 +135221,32 @@
             }
           }
         },
+        {
+          "name": "peak_throughput_per_minute",
+          "required": true,
+          "type": {
+            "kind": "instance_of",
+            "type": {
+              "name": "long",
+              "namespace": "_types"
+            }
+          }
+        },
+        {
+          "name": "priority",
+          "required": true,
+          "type": {
+            "kind": "instance_of",
+            "type": {
+              "name": "TrainingPriority",
+              "namespace": "ml._types"
+            }
+          }
+        },
         {
           "description": "The number of inference requests that can be queued before new requests are rejected.",
           "name": "queue_capacity",
-          "required": true,
+          "required": false,
           "type": {
             "kind": "instance_of",
             "type": {
@@ -131876,7 +135258,7 @@
         {
           "description": "The sum of `rejected_execution_count` for all nodes in the deployment.\nIndividual nodes reject an inference request if the inference queue is full.\nThe queue size is controlled by the `queue_capacity` setting in the start\ntrained model deployment API.",
           "name": "rejected_execution_count",
-          "required": true,
+          "required": false,
           "type": {
             "kind": "instance_of",
             "type": {
@@ -131888,7 +135270,7 @@
         {
           "description": "The reason for the current deployment state. Usually only populated when\nthe model is not deployed to a node.",
           "name": "reason",
-          "required": true,
+          "required": false,
           "type": {
             "kind": "instance_of",
             "type": {
@@ -131921,11 +135303,11 @@
         {
           "description": "The overall state of the deployment.",
           "name": "state",
-          "required": true,
+          "required": false,
           "type": {
             "kind": "instance_of",
             "type": {
-              "name": "DeploymentState",
+              "name": "DeploymentAssignmentState",
               "namespace": "ml._types"
             }
           }
@@ -131933,7 +135315,7 @@
         {
           "description": "The number of threads used be each allocation during inference.",
           "name": "threads_per_allocation",
-          "required": true,
+          "required": false,
           "type": {
             "kind": "instance_of",
             "type": {
@@ -131945,7 +135327,50 @@
         {
           "description": "The sum of `timeout_count` for all nodes in the deployment.",
           "name": "timeout_count",
+          "required": false,
+          "type": {
+            "kind": "instance_of",
+            "type": {
+              "name": "integer",
+              "namespace": "_types"
+            }
+          }
+        }
+      ],
+      "specLocation": "ml/_types/TrainedModel.ts#L62-L107"
+    },
+    {
+      "kind": "interface",
+      "name": {
+        "name": "AdaptiveAllocationsSettings",
+        "namespace": "ml._types"
+      },
+      "properties": [
+        {
+          "name": "enabled",
           "required": true,
+          "type": {
+            "kind": "instance_of",
+            "type": {
+              "name": "boolean",
+              "namespace": "_builtins"
+            }
+          }
+        },
+        {
+          "name": "min_number_of_allocations",
+          "required": false,
+          "type": {
+            "kind": "instance_of",
+            "type": {
+              "name": "integer",
+              "namespace": "_types"
+            }
+          }
+        },
+        {
+          "name": "max_number_of_allocations",
+          "required": false,
           "type": {
             "kind": "instance_of",
             "type": {
@@ -131955,7 +135380,7 @@
           }
         }
       ],
-      "specLocation": "ml/_types/TrainedModel.ts#L61-L101"
+      "specLocation": "ml/_types/TrainedModel.ts#L109-L113"
     },
     {
       "kind": "interface",
@@ -132001,7 +135426,7 @@
           }
         }
       ],
-      "specLocation": "ml/_types/TrainedModel.ts#L393-L400"
+      "specLocation": "ml/_types/TrainedModel.ts#L439-L446"
     },
     {
       "kind": "interface",
@@ -132013,7 +135438,48 @@
         {
           "description": "The average time for each inference call to complete on this node.",
           "name": "average_inference_time_ms",
-          "required": true,
+          "required": false,
+          "type": {
+            "generics": [
+              {
+                "kind": "instance_of",
+                "type": {
+                  "name": "UnitFloatMillis",
+                  "namespace": "_types"
+                }
+              }
+            ],
+            "kind": "instance_of",
+            "type": {
+              "name": "DurationValue",
+              "namespace": "_types"
+            }
+          }
+        },
+        {
+          "name": "average_inference_time_ms_last_minute",
+          "required": false,
+          "type": {
+            "generics": [
+              {
+                "kind": "instance_of",
+                "type": {
+                  "name": "UnitFloatMillis",
+                  "namespace": "_types"
+                }
+              }
+            ],
+            "kind": "instance_of",
+            "type": {
+              "name": "DurationValue",
+              "namespace": "_types"
+            }
+          }
+        },
+        {
+          "description": "The average time for each inference call to complete on this node, excluding cache",
+          "name": "average_inference_time_ms_excluding_cache_hits",
+          "required": false,
           "type": {
             "generics": [
               {
@@ -132034,7 +135500,7 @@
         {
           "description": "The number of errors when evaluating the trained model.",
           "name": "error_count",
-          "required": true,
+          "required": false,
           "type": {
             "kind": "instance_of",
             "type": {
@@ -132046,11 +135512,33 @@
         {
           "description": "The total number of inference calls made against this node for this model.",
           "name": "inference_count",
-          "required": true,
+          "required": false,
           "type": {
             "kind": "instance_of",
             "type": {
-              "name": "integer",
+              "name": "long",
+              "namespace": "_types"
+            }
+          }
+        },
+        {
+          "name": "inference_cache_hit_count",
+          "required": false,
+          "type": {
+            "kind": "instance_of",
+            "type": {
+              "name": "long",
+              "namespace": "_types"
+            }
+          }
+        },
+        {
+          "name": "inference_cache_hit_count_last_minute",
+          "required": false,
+          "type": {
+            "kind": "instance_of",
+            "type": {
+              "name": "long",
               "namespace": "_types"
             }
           }
@@ -132058,11 +135546,20 @@
         {
           "description": "The epoch time stamp of the last inference call for the model on this node.",
           "name": "last_access",
-          "required": true,
+          "required": false,
           "type": {
+            "generics": [
+              {
+                "kind": "instance_of",
+                "type": {
+                  "name": "UnitMillis",
+                  "namespace": "_types"
+                }
+              }
+            ],
             "kind": "instance_of",
             "type": {
-              "name": "long",
+              "name": "EpochTime",
               "namespace": "_types"
             }
           }
@@ -132070,7 +135567,7 @@
         {
           "description": "The number of allocations assigned to this node.",
           "name": "number_of_allocations",
-          "required": true,
+          "required": false,
           "type": {
             "kind": "instance_of",
             "type": {
@@ -132082,7 +135579,7 @@
         {
           "description": "The number of inference requests queued to be processed.",
           "name": "number_of_pending_requests",
-          "required": true,
+          "required": false,
           "type": {
             "kind": "instance_of",
             "type": {
@@ -132091,10 +135588,21 @@
             }
           }
         },
+        {
+          "name": "peak_throughput_per_minute",
+          "required": true,
+          "type": {
+            "kind": "instance_of",
+            "type": {
+              "name": "long",
+              "namespace": "_types"
+            }
+          }
+        },
         {
           "description": "The number of inference requests that were not processed because the queue was full.",
           "name": "rejection_execution_count",
-          "required": true,
+          "required": false,
           "type": {
             "kind": "instance_of",
             "type": {
@@ -132118,7 +135626,7 @@
         {
           "description": "The epoch timestamp when the allocation started.",
           "name": "start_time",
-          "required": true,
+          "required": false,
           "type": {
             "generics": [
               {
@@ -132139,6 +135647,17 @@
         {
           "description": "The number of threads used by each allocation during inference.",
           "name": "threads_per_allocation",
+          "required": false,
+          "type": {
+            "kind": "instance_of",
+            "type": {
+              "name": "integer",
+              "namespace": "_types"
+            }
+          }
+        },
+        {
+          "name": "throughput_last_minute",
           "required": true,
           "type": {
             "kind": "instance_of",
@@ -132151,7 +135670,7 @@
         {
           "description": "The number of inference requests that timed out before being processed.",
           "name": "timeout_count",
-          "required": true,
+          "required": false,
           "type": {
             "kind": "instance_of",
             "type": {
@@ -132161,7 +135680,7 @@
           }
         }
       ],
-      "specLocation": "ml/_types/TrainedModel.ts#L132-L162"
+      "specLocation": "ml/_types/TrainedModel.ts#L144-L189"
     },
     {
       "kind": "interface",
@@ -132173,7 +135692,7 @@
         {
           "description": "The reason for the current state. It is usually populated only when the\n`routing_state` is `failed`.",
           "name": "reason",
-          "required": true,
+          "required": false,
           "type": {
             "kind": "instance_of",
             "type": {
@@ -132219,7 +135738,7 @@
           }
         }
       ],
-      "specLocation": "ml/_types/TrainedModel.ts#L373-L391"
+      "specLocation": "ml/_types/TrainedModel.ts#L419-L437"
     },
     {
       "kind": "interface",
@@ -132300,7 +135819,7 @@
           }
         }
       ],
-      "specLocation": "ml/_types/TrainedModel.ts#L103-L123"
+      "specLocation": "ml/_types/TrainedModel.ts#L115-L135"
     },
     {
       "kind": "interface",
@@ -132334,7 +135853,7 @@
           }
         }
       ],
-      "specLocation": "ml/_types/TrainedModel.ts#L125-L130"
+      "specLocation": "ml/_types/TrainedModel.ts#L137-L142"
     },
     {
       "kind": "interface",
@@ -132464,7 +135983,7 @@
           }
         }
       ],
-      "specLocation": "ml/_types/inference.ts#L296-L318",
+      "specLocation": "ml/_types/inference.ts#L315-L337",
       "variants": {
         "kind": "container"
       }
@@ -132528,7 +136047,7 @@
           }
         }
       ],
-      "specLocation": "ml/_types/inference.ts#L363-L372"
+      "specLocation": "ml/_types/inference.ts#L382-L391"
     },
     {
       "kind": "interface",
@@ -132562,7 +136081,7 @@
           }
         }
       ],
-      "specLocation": "ml/_types/inference.ts#L356-L361"
+      "specLocation": "ml/_types/inference.ts#L375-L380"
     },
     {
       "kind": "interface",
@@ -132623,7 +136142,7 @@
           }
         }
       ],
-      "specLocation": "ml/_types/inference.ts#L374-L383"
+      "specLocation": "ml/_types/inference.ts#L393-L402"
     },
     {
       "kind": "interface",
@@ -132669,7 +136188,7 @@
           }
         }
       ],
-      "specLocation": "ml/_types/inference.ts#L411-L418"
+      "specLocation": "ml/_types/inference.ts#L430-L437"
     },
     {
       "kind": "interface",
@@ -132703,7 +136222,7 @@
           }
         }
       ],
-      "specLocation": "ml/_types/inference.ts#L404-L409"
+      "specLocation": "ml/_types/inference.ts#L423-L428"
     },
     {
       "kind": "interface",
@@ -132737,7 +136256,7 @@
           }
         }
       ],
-      "specLocation": "ml/_types/inference.ts#L385-L390"
+      "specLocation": "ml/_types/inference.ts#L404-L409"
     },
     {
       "kind": "interface",
@@ -132770,7 +136289,7 @@
           }
         }
       ],
-      "specLocation": "ml/_types/inference.ts#L392-L396"
+      "specLocation": "ml/_types/inference.ts#L411-L415"
     },
     {
       "kind": "interface",
@@ -132803,7 +136322,7 @@
           }
         }
       ],
-      "specLocation": "ml/_types/inference.ts#L398-L402"
+      "specLocation": "ml/_types/inference.ts#L417-L421"
     },
     {
       "kind": "interface",
@@ -132873,7 +136392,7 @@
           }
         }
       ],
-      "specLocation": "ml/_types/inference.ts#L420-L431"
+      "specLocation": "ml/_types/inference.ts#L439-L450"
     },
     {
       "kind": "interface",
@@ -133015,7 +136534,7 @@
           }
         }
       ],
-      "specLocation": "ml/_types/inference.ts#L459-L507"
+      "specLocation": "ml/_types/inference.ts#L478-L526"
     },
     {
       "kind": "interface",
@@ -133080,7 +136599,7 @@
           }
         }
       ],
-      "specLocation": "ml/_types/inference.ts#L433-L439"
+      "specLocation": "ml/_types/inference.ts#L452-L458"
     },
     {
       "kind": "interface",
@@ -133123,7 +136642,7 @@
           }
         }
       ],
-      "specLocation": "ml/_types/inference.ts#L440-L444"
+      "specLocation": "ml/_types/inference.ts#L459-L463"
     },
     {
       "kind": "interface",
@@ -133169,7 +136688,7 @@
           }
         }
       ],
-      "specLocation": "ml/_types/inference.ts#L451-L455"
+      "specLocation": "ml/_types/inference.ts#L470-L474"
     },
     {
       "kind": "interface",
@@ -133201,7 +136720,7 @@
           }
         }
       ],
-      "specLocation": "ml/_types/inference.ts#L446-L449"
+      "specLocation": "ml/_types/inference.ts#L465-L468"
     },
     {
       "kind": "interface",
@@ -133472,7 +136991,7 @@
           }
         }
       ],
-      "specLocation": "ml/_types/Datafeed.ts#L59-L116"
+      "specLocation": "ml/_types/Datafeed.ts#L63-L120"
     },
     {
       "kind": "interface",
@@ -134682,6 +138201,29 @@
         "namespace": "ml._types"
       },
       "properties": [
+        {
+          "name": "adaptive_allocations",
+          "required": false,
+          "type": {
+            "items": [
+              {
+                "kind": "instance_of",
+                "type": {
+                  "name": "AdaptiveAllocationsSettings",
+                  "namespace": "ml._types"
+                }
+              },
+              {
+                "kind": "instance_of",
+                "type": {
+                  "name": "null",
+                  "namespace": "_builtins"
+                }
+              }
+            ],
+            "kind": "union_of"
+          }
+        },
         {
           "description": "The overall assignment state.",
           "name": "assignment_state",
@@ -134705,6 +138247,17 @@
             }
           }
         },
+        {
+          "name": "reason",
+          "required": false,
+          "type": {
+            "kind": "instance_of",
+            "type": {
+              "name": "string",
+              "namespace": "_builtins"
+            }
+          }
+        },
         {
           "description": "The allocation state for each node.",
           "name": "routing_table",
@@ -134752,7 +138305,7 @@
           }
         }
       ],
-      "specLocation": "ml/_types/TrainedModel.ts#L402-L417"
+      "specLocation": "ml/_types/TrainedModel.ts#L448-L465"
     },
     {
       "kind": "interface",
@@ -134768,7 +138321,7 @@
           "type": {
             "kind": "instance_of",
             "type": {
-              "name": "integer",
+              "name": "ByteSize",
               "namespace": "_types"
             }
           }
@@ -134806,7 +138359,7 @@
           },
           "description": "The size of the trained model cache.",
           "name": "cache_size",
-          "required": true,
+          "required": false,
           "type": {
             "kind": "instance_of",
             "type": {
@@ -134838,6 +138391,28 @@
             }
           }
         },
+        {
+          "name": "per_deployment_memory_bytes",
+          "required": true,
+          "type": {
+            "kind": "instance_of",
+            "type": {
+              "name": "ByteSize",
+              "namespace": "_types"
+            }
+          }
+        },
+        {
+          "name": "per_allocation_memory_bytes",
+          "required": true,
+          "type": {
+            "kind": "instance_of",
+            "type": {
+              "name": "ByteSize",
+              "namespace": "_types"
+            }
+          }
+        },
         {
           "description": "Number of inference requests are allowed in the queue at a time.",
           "name": "queue_capacity",
@@ -134863,7 +138438,7 @@
           }
         }
       ],
-      "specLocation": "ml/_types/TrainedModel.ts#L315-L348"
+      "specLocation": "ml/_types/TrainedModel.ts#L358-L394"
     },
     {
       "kind": "interface",
@@ -134887,6 +138462,55 @@
       ],
       "specLocation": "ml/_types/Analysis.ts#L174-L179"
     },
+    {
+      "kind": "interface",
+      "name": {
+        "name": "DetectorUpdate",
+        "namespace": "ml._types"
+      },
+      "properties": [
+        {
+          "description": "A unique identifier for the detector.\nThis identifier is based on the order of the detectors in the `analysis_config`, starting at zero.",
+          "name": "detector_index",
+          "required": true,
+          "type": {
+            "kind": "instance_of",
+            "type": {
+              "name": "integer",
+              "namespace": "_types"
+            }
+          }
+        },
+        {
+          "description": "A description of the detector.",
+          "name": "description",
+          "required": false,
+          "type": {
+            "kind": "instance_of",
+            "type": {
+              "name": "string",
+              "namespace": "_builtins"
+            }
+          }
+        },
+        {
+          "description": "An array of custom rule objects, which enable you to customize the way detectors operate.\nFor example, a rule may dictate to the detector conditions under which results should be skipped.\nKibana refers to custom rules as job rules.",
+          "name": "custom_rules",
+          "required": false,
+          "type": {
+            "kind": "array_of",
+            "value": {
+              "kind": "instance_of",
+              "type": {
+                "name": "DetectionRule",
+                "namespace": "ml._types"
+              }
+            }
+          }
+        }
+      ],
+      "specLocation": "ml/_types/Detector.ts#L127-L143"
+    },
     {
       "generics": [
         {
@@ -134935,7 +138559,7 @@
           }
         }
       ],
-      "specLocation": "_global/msearch/types.ts#L203-L206"
+      "specLocation": "_global/msearch/types.ts#L206-L209"
     },
     {
       "kind": "interface",
@@ -135738,7 +139362,7 @@
           }
         },
         {
-          "description": "A map of criteria type to the number of rules of that type",
+          "description": "A map of criteria type (e.g. exact) to the number of rules of that type",
           "name": "rule_criteria_types_counts",
           "required": true,
           "type": {
@@ -135759,9 +139383,66 @@
               }
             }
           }
+        },
+        {
+          "description": "A map of rule type (e.g. pinned) to the number of rules of that type",
+          "name": "rule_type_counts",
+          "required": true,
+          "type": {
+            "key": {
+              "kind": "instance_of",
+              "type": {
+                "name": "string",
+                "namespace": "_builtins"
+              }
+            },
+            "kind": "dictionary_of",
+            "singleKey": false,
+            "value": {
+              "kind": "instance_of",
+              "type": {
+                "name": "integer",
+                "namespace": "_types"
+              }
+            }
+          }
+        }
+      ],
+      "specLocation": "query_rules/list_rulesets/types.ts#L23-L42"
+    },
+    {
+      "kind": "interface",
+      "name": {
+        "name": "QueryRulesetMatchedRule",
+        "namespace": "query_rules.test"
+      },
+      "properties": [
+        {
+          "description": "Ruleset unique identifier",
+          "name": "ruleset_id",
+          "required": true,
+          "type": {
+            "kind": "instance_of",
+            "type": {
+              "name": "Id",
+              "namespace": "_types"
+            }
+          }
+        },
+        {
+          "description": "Rule unique identifier within that ruleset",
+          "name": "rule_id",
+          "required": true,
+          "type": {
+            "kind": "instance_of",
+            "type": {
+              "name": "Id",
+              "namespace": "_types"
+            }
+          }
         }
       ],
-      "specLocation": "query_rules/list_rulesets/types.ts#L23-L37"
+      "specLocation": "query_rules/test/QueryRulesetTestResponse.ts#L30-L39"
     },
     {
       "kind": "interface",
@@ -136727,9 +140408,21 @@
               "namespace": "_types"
             }
           }
+        },
+        {
+          "description": "A retriever that reranks the top documents based on a reranking model using the InferenceAPI",
+          "name": "text_similarity_reranker",
+          "required": false,
+          "type": {
+            "kind": "instance_of",
+            "type": {
+              "name": "TextSimilarityReranker",
+              "namespace": "_types"
+            }
+          }
         }
       ],
-      "specLocation": "_types/Retriever.ts#L26-L36",
+      "specLocation": "_types/Retriever.ts#L26-L38",
       "variants": {
         "kind": "container"
       }
@@ -136795,18 +140488,6 @@
             }
           }
         },
-        {
-          "description": "Minimum _score for matching documents. Documents with a lower _score are not included in the top documents.",
-          "name": "min_score",
-          "required": false,
-          "type": {
-            "kind": "instance_of",
-            "type": {
-              "name": "float",
-              "namespace": "_types"
-            }
-          }
-        },
         {
           "description": "Collapses the top documents by a specified key into a single top document per key.",
           "name": "collapse",
@@ -136820,7 +140501,7 @@
           }
         }
       ],
-      "specLocation": "_types/Retriever.ts#L43-L56"
+      "specLocation": "_types/Retriever.ts#L47-L58"
     },
     {
       "kind": "interface",
@@ -136855,9 +140536,21 @@
             ],
             "kind": "union_of"
           }
+        },
+        {
+          "description": "Minimum _score for matching documents. Documents with a lower _score are not included in the top documents.",
+          "name": "min_score",
+          "required": false,
+          "type": {
+            "kind": "instance_of",
+            "type": {
+              "name": "float",
+              "namespace": "_types"
+            }
+          }
         }
       ],
-      "specLocation": "_types/Retriever.ts#L38-L41"
+      "specLocation": "_types/Retriever.ts#L40-L45"
     },
     {
       "inherits": {
@@ -136945,7 +140638,7 @@
           }
         }
       ],
-      "specLocation": "_types/Retriever.ts#L58-L71"
+      "specLocation": "_types/Retriever.ts#L60-L73"
     },
     {
       "inherits": {
@@ -137000,7 +140693,83 @@
           }
         }
       ],
-      "specLocation": "_types/Retriever.ts#L73-L80"
+      "specLocation": "_types/Retriever.ts#L75-L82"
+    },
+    {
+      "inherits": {
+        "type": {
+          "name": "RetrieverBase",
+          "namespace": "_types"
+        }
+      },
+      "kind": "interface",
+      "name": {
+        "name": "TextSimilarityReranker",
+        "namespace": "_types"
+      },
+      "properties": [
+        {
+          "description": "The nested retriever which will produce the first-level results, that will later be used for reranking.",
+          "name": "retriever",
+          "required": true,
+          "type": {
+            "kind": "instance_of",
+            "type": {
+              "name": "RetrieverContainer",
+              "namespace": "_types"
+            }
+          }
+        },
+        {
+          "description": "This value determines how many documents we will consider from the nested retriever.",
+          "name": "rank_window_size",
+          "required": false,
+          "type": {
+            "kind": "instance_of",
+            "type": {
+              "name": "integer",
+              "namespace": "_types"
+            }
+          }
+        },
+        {
+          "description": "Unique identifier of the inference endpoint created using the inference API.",
+          "name": "inference_id",
+          "required": false,
+          "type": {
+            "kind": "instance_of",
+            "type": {
+              "name": "string",
+              "namespace": "_builtins"
+            }
+          }
+        },
+        {
+          "description": "The text snippet used as the basis for similarity comparison",
+          "name": "inference_text",
+          "required": false,
+          "type": {
+            "kind": "instance_of",
+            "type": {
+              "name": "string",
+              "namespace": "_builtins"
+            }
+          }
+        },
+        {
+          "description": "The document field to be used for text similarity comparisons. This field should contain the text that will be evaluated against the inference_text",
+          "name": "field",
+          "required": false,
+          "type": {
+            "kind": "instance_of",
+            "type": {
+              "name": "string",
+              "namespace": "_builtins"
+            }
+          }
+        }
+      ],
+      "specLocation": "_types/Retriever.ts#L84-L95"
     },
     {
       "kind": "interface",
@@ -137250,36 +141019,11 @@
     {
       "kind": "interface",
       "name": {
-        "name": "ApiKey",
-        "namespace": "security._types"
+        "name": "AuthenticateApiKey",
+        "namespace": "security.authenticate"
       },
       "properties": [
         {
-          "description": "Creation time for the API key in milliseconds.",
-          "name": "creation",
-          "required": false,
-          "type": {
-            "kind": "instance_of",
-            "type": {
-              "name": "long",
-              "namespace": "_types"
-            }
-          }
-        },
-        {
-          "description": "Expiration time for the API key in milliseconds.",
-          "name": "expiration",
-          "required": false,
-          "type": {
-            "kind": "instance_of",
-            "type": {
-              "name": "long",
-              "namespace": "_types"
-            }
-          }
-        },
-        {
-          "description": "Id for the API key",
           "name": "id",
           "required": true,
           "type": {
@@ -137291,19 +141035,27 @@
           }
         },
         {
-          "description": "Invalidation status for the API key.\nIf the key has been invalidated, it has a value of `true`. Otherwise, it is `false`.",
-          "name": "invalidated",
+          "name": "name",
           "required": false,
           "type": {
             "kind": "instance_of",
             "type": {
-              "name": "boolean",
-              "namespace": "_builtins"
+              "name": "Name",
+              "namespace": "_types"
             }
           }
-        },
+        }
+      ],
+      "specLocation": "security/authenticate/SecurityAuthenticateResponse.ts#L44-L47"
+    },
+    {
+      "kind": "interface",
+      "name": {
+        "name": "RealmInfo",
+        "namespace": "security._types"
+      },
+      "properties": [
         {
-          "description": "Name of the API key.",
           "name": "name",
           "required": true,
           "type": {
@@ -137315,27 +141067,8 @@
           }
         },
         {
-          "description": "Realm name of the principal for which this API key was created.",
-          "name": "realm",
-          "required": false,
-          "type": {
-            "kind": "instance_of",
-            "type": {
-              "name": "string",
-              "namespace": "_builtins"
-            }
-          }
-        },
-        {
-          "availability": {
-            "serverless": {},
-            "stack": {
-              "since": "8.14.0"
-            }
-          },
-          "description": "Realm type of the principal for which this API key was created",
-          "name": "realm_type",
-          "required": false,
+          "name": "type",
+          "required": true,
           "type": {
             "kind": "instance_of",
             "type": {
@@ -137343,15 +141076,24 @@
               "namespace": "_builtins"
             }
           }
-        },
+        }
+      ],
+      "specLocation": "security/_types/RealmInfo.ts#L22-L25"
+    },
+    {
+      "kind": "interface",
+      "name": {
+        "name": "Token",
+        "namespace": "security.authenticate"
+      },
+      "properties": [
         {
-          "description": "Principal for which this API key was created",
-          "name": "username",
-          "required": false,
+          "name": "name",
+          "required": true,
           "type": {
             "kind": "instance_of",
             "type": {
-              "name": "Username",
+              "name": "Name",
               "namespace": "_types"
             }
           }
@@ -137360,11 +141102,10 @@
           "availability": {
             "serverless": {},
             "stack": {
-              "since": "8.14.0"
+              "since": "7.14.0"
             }
           },
-          "description": "The profile uid for the API key owner principal, if requested and if it exists",
-          "name": "profile_uid",
+          "name": "type",
           "required": false,
           "type": {
             "kind": "instance_of",
@@ -137373,93 +141114,9 @@
               "namespace": "_builtins"
             }
           }
-        },
-        {
-          "availability": {
-            "serverless": {},
-            "stack": {
-              "since": "7.13.0"
-            }
-          },
-          "description": "Metadata of the API key",
-          "name": "metadata",
-          "required": false,
-          "type": {
-            "kind": "instance_of",
-            "type": {
-              "name": "Metadata",
-              "namespace": "_types"
-            }
-          }
-        },
-        {
-          "description": "The role descriptors assigned to this API key when it was created or last updated.\nAn empty role descriptor means the API key inherits the owner user’s permissions.",
-          "name": "role_descriptors",
-          "required": false,
-          "type": {
-            "key": {
-              "kind": "instance_of",
-              "type": {
-                "name": "string",
-                "namespace": "_builtins"
-              }
-            },
-            "kind": "dictionary_of",
-            "singleKey": false,
-            "value": {
-              "kind": "instance_of",
-              "type": {
-                "name": "RoleDescriptor",
-                "namespace": "security._types"
-              }
-            }
-          }
-        },
-        {
-          "availability": {
-            "serverless": {},
-            "stack": {
-              "since": "8.5.0"
-            }
-          },
-          "description": "The owner user’s permissions associated with the API key.\nIt is a point-in-time snapshot captured at creation and subsequent updates.\nAn API key’s effective permissions are an intersection of its assigned privileges and the owner user’s permissions.",
-          "name": "limited_by",
-          "required": false,
-          "type": {
-            "kind": "array_of",
-            "value": {
-              "key": {
-                "kind": "instance_of",
-                "type": {
-                  "name": "string",
-                  "namespace": "_builtins"
-                }
-              },
-              "kind": "dictionary_of",
-              "singleKey": false,
-              "value": {
-                "kind": "instance_of",
-                "type": {
-                  "name": "RoleDescriptor",
-                  "namespace": "security._types"
-                }
-              }
-            }
-          }
-        },
-        {
-          "name": "_sort",
-          "required": false,
-          "type": {
-            "kind": "instance_of",
-            "type": {
-              "name": "SortResults",
-              "namespace": "_types"
-            }
-          }
         }
       ],
-      "specLocation": "security/_types/ApiKey.ts#L26-L88"
+      "specLocation": "security/authenticate/types.ts#L22-L29"
     },
     {
       "kind": "interface",
@@ -137639,7 +141296,7 @@
           }
         }
       ],
-      "specLocation": "security/_types/Privileges.ts#L197-L221"
+      "specLocation": "security/_types/Privileges.ts#L198-L222"
     },
     {
       "kind": "interface",
@@ -137728,11 +141385,24 @@
     {
       "kind": "interface",
       "name": {
-        "name": "RealmInfo",
+        "name": "ApiKey",
         "namespace": "security._types"
       },
       "properties": [
         {
+          "description": "Id for the API key",
+          "name": "id",
+          "required": true,
+          "type": {
+            "kind": "instance_of",
+            "type": {
+              "name": "Id",
+              "namespace": "_types"
+            }
+          }
+        },
+        {
+          "description": "Name of the API key.",
           "name": "name",
           "required": true,
           "type": {
@@ -137744,8 +141414,120 @@
           }
         },
         {
+          "availability": {
+            "serverless": {},
+            "stack": {
+              "since": "8.10.0"
+            }
+          },
+          "description": "The type of the API key (e.g. `rest` or `cross_cluster`).",
           "name": "type",
           "required": true,
+          "type": {
+            "kind": "instance_of",
+            "type": {
+              "name": "ApiKeyType",
+              "namespace": "security._types"
+            }
+          }
+        },
+        {
+          "description": "Creation time for the API key in milliseconds.",
+          "name": "creation",
+          "required": true,
+          "type": {
+            "generics": [
+              {
+                "kind": "instance_of",
+                "type": {
+                  "name": "UnitMillis",
+                  "namespace": "_types"
+                }
+              }
+            ],
+            "kind": "instance_of",
+            "type": {
+              "name": "EpochTime",
+              "namespace": "_types"
+            }
+          }
+        },
+        {
+          "description": "Expiration time for the API key in milliseconds.",
+          "name": "expiration",
+          "required": false,
+          "type": {
+            "generics": [
+              {
+                "kind": "instance_of",
+                "type": {
+                  "name": "UnitMillis",
+                  "namespace": "_types"
+                }
+              }
+            ],
+            "kind": "instance_of",
+            "type": {
+              "name": "EpochTime",
+              "namespace": "_types"
+            }
+          }
+        },
+        {
+          "description": "Invalidation status for the API key.\nIf the key has been invalidated, it has a value of `true`. Otherwise, it is `false`.",
+          "name": "invalidated",
+          "required": true,
+          "type": {
+            "kind": "instance_of",
+            "type": {
+              "name": "boolean",
+              "namespace": "_builtins"
+            }
+          }
+        },
+        {
+          "availability": {
+            "serverless": {},
+            "stack": {
+              "since": "8.12.0"
+            }
+          },
+          "description": "If the key has been invalidated, invalidation time in milliseconds.",
+          "name": "invalidation",
+          "required": false,
+          "type": {
+            "generics": [
+              {
+                "kind": "instance_of",
+                "type": {
+                  "name": "UnitMillis",
+                  "namespace": "_types"
+                }
+              }
+            ],
+            "kind": "instance_of",
+            "type": {
+              "name": "EpochTime",
+              "namespace": "_types"
+            }
+          }
+        },
+        {
+          "description": "Principal for which this API key was created",
+          "name": "username",
+          "required": true,
+          "type": {
+            "kind": "instance_of",
+            "type": {
+              "name": "Username",
+              "namespace": "_types"
+            }
+          }
+        },
+        {
+          "description": "Realm name of the principal for which this API key was created.",
+          "name": "realm",
+          "required": true,
           "type": {
             "kind": "instance_of",
             "type": {
@@ -137753,47 +141535,277 @@
               "namespace": "_builtins"
             }
           }
+        },
+        {
+          "availability": {
+            "serverless": {},
+            "stack": {
+              "since": "8.14.0"
+            }
+          },
+          "description": "Realm type of the principal for which this API key was created",
+          "name": "realm_type",
+          "required": false,
+          "type": {
+            "kind": "instance_of",
+            "type": {
+              "name": "string",
+              "namespace": "_builtins"
+            }
+          }
+        },
+        {
+          "availability": {
+            "serverless": {},
+            "stack": {
+              "since": "7.13.0"
+            }
+          },
+          "description": "Metadata of the API key",
+          "name": "metadata",
+          "required": true,
+          "type": {
+            "kind": "instance_of",
+            "type": {
+              "name": "Metadata",
+              "namespace": "_types"
+            }
+          }
+        },
+        {
+          "description": "The role descriptors assigned to this API key when it was created or last updated.\nAn empty role descriptor means the API key inherits the owner user’s permissions.",
+          "name": "role_descriptors",
+          "required": false,
+          "type": {
+            "key": {
+              "kind": "instance_of",
+              "type": {
+                "name": "string",
+                "namespace": "_builtins"
+              }
+            },
+            "kind": "dictionary_of",
+            "singleKey": false,
+            "value": {
+              "kind": "instance_of",
+              "type": {
+                "name": "RoleDescriptor",
+                "namespace": "security._types"
+              }
+            }
+          }
+        },
+        {
+          "availability": {
+            "serverless": {},
+            "stack": {
+              "since": "8.5.0"
+            }
+          },
+          "description": "The owner user’s permissions associated with the API key.\nIt is a point-in-time snapshot captured at creation and subsequent updates.\nAn API key’s effective permissions are an intersection of its assigned privileges and the owner user’s permissions.",
+          "name": "limited_by",
+          "required": false,
+          "type": {
+            "kind": "array_of",
+            "value": {
+              "key": {
+                "kind": "instance_of",
+                "type": {
+                  "name": "string",
+                  "namespace": "_builtins"
+                }
+              },
+              "kind": "dictionary_of",
+              "singleKey": false,
+              "value": {
+                "kind": "instance_of",
+                "type": {
+                  "name": "RoleDescriptor",
+                  "namespace": "security._types"
+                }
+              }
+            }
+          }
+        },
+        {
+          "availability": {
+            "serverless": {},
+            "stack": {
+              "since": "8.10.0"
+            }
+          },
+          "description": "The access granted to cross-cluster API keys.\nThe access is composed of permissions for cross cluster search and cross cluster replication.\nAt least one of them must be specified.\nWhen specified, the new access assignment fully replaces the previously assigned access.",
+          "name": "access",
+          "required": false,
+          "type": {
+            "kind": "instance_of",
+            "type": {
+              "name": "Access",
+              "namespace": "security._types"
+            }
+          }
+        },
+        {
+          "availability": {
+            "serverless": {},
+            "stack": {
+              "since": "8.14.0"
+            }
+          },
+          "description": "The profile uid for the API key owner principal, if requested and if it exists",
+          "name": "profile_uid",
+          "required": false,
+          "type": {
+            "kind": "instance_of",
+            "type": {
+              "name": "string",
+              "namespace": "_builtins"
+            }
+          }
+        },
+        {
+          "description": "Sorting values when using the `sort` parameter with the `security.query_api_keys` API.",
+          "name": "_sort",
+          "required": false,
+          "type": {
+            "kind": "instance_of",
+            "type": {
+              "name": "SortResults",
+              "namespace": "_types"
+            }
+          }
         }
       ],
-      "specLocation": "security/_types/RealmInfo.ts#L22-L25"
+      "specLocation": "security/_types/ApiKey.ts#L27-L113"
     },
     {
       "kind": "interface",
       "name": {
-        "name": "Token",
-        "namespace": "security.authenticate"
+        "name": "Access",
+        "namespace": "security._types"
       },
       "properties": [
         {
-          "name": "name",
+          "description": "A list of indices permission entries for cross-cluster replication.",
+          "name": "replication",
+          "required": false,
+          "type": {
+            "kind": "array_of",
+            "value": {
+              "kind": "instance_of",
+              "type": {
+                "name": "ReplicationAccess",
+                "namespace": "security._types"
+              }
+            }
+          }
+        },
+        {
+          "description": "A list of indices permission entries for cross-cluster search.",
+          "name": "search",
+          "required": false,
+          "type": {
+            "kind": "array_of",
+            "value": {
+              "kind": "instance_of",
+              "type": {
+                "name": "SearchAccess",
+                "namespace": "security._types"
+              }
+            }
+          }
+        }
+      ],
+      "specLocation": "security/_types/Access.ts#L22-L31"
+    },
+    {
+      "kind": "interface",
+      "name": {
+        "name": "ReplicationAccess",
+        "namespace": "security._types"
+      },
+      "properties": [
+        {
+          "description": "A list of indices (or index name patterns) to which the permissions in this entry apply.",
+          "name": "names",
           "required": true,
+          "type": {
+            "kind": "array_of",
+            "value": {
+              "kind": "instance_of",
+              "type": {
+                "name": "IndexName",
+                "namespace": "_types"
+              }
+            }
+          }
+        },
+        {
+          "description": "This needs to be set to true if the patterns in the names field should cover system indices.",
+          "name": "allow_restricted_indices",
+          "required": false,
+          "serverDefault": false,
           "type": {
             "kind": "instance_of",
             "type": {
-              "name": "Name",
-              "namespace": "_types"
+              "name": "boolean",
+              "namespace": "_builtins"
+            }
+          }
+        }
+      ],
+      "specLocation": "security/_types/Privileges.ts#L380-L390"
+    },
+    {
+      "kind": "interface",
+      "name": {
+        "name": "SearchAccess",
+        "namespace": "security._types"
+      },
+      "properties": [
+        {
+          "description": "The document fields that the owners of the role have read access to.",
+          "docId": "field-and-document-access-control",
+          "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/field-and-document-access-control.html",
+          "name": "field_security",
+          "required": false,
+          "type": {
+            "kind": "instance_of",
+            "type": {
+              "name": "FieldSecurity",
+              "namespace": "security._types"
             }
           }
         },
         {
-          "availability": {
-            "serverless": {},
-            "stack": {
-              "since": "7.14.0"
+          "description": "A list of indices (or index name patterns) to which the permissions in this entry apply.",
+          "name": "names",
+          "required": true,
+          "type": {
+            "kind": "array_of",
+            "value": {
+              "kind": "instance_of",
+              "type": {
+                "name": "IndexName",
+                "namespace": "_types"
+              }
             }
-          },
-          "name": "type",
+          }
+        },
+        {
+          "description": "A search query that defines the documents the owners of the role have access to. A document within the specified indices must match this query for it to be accessible by the owners of the role.",
+          "name": "query",
           "required": false,
           "type": {
             "kind": "instance_of",
             "type": {
-              "name": "string",
-              "namespace": "_builtins"
+              "name": "IndicesPrivilegesQuery",
+              "namespace": "security._types"
             }
           }
         }
       ],
-      "specLocation": "security/authenticate/types.ts#L22-L29"
+      "specLocation": "security/_types/Privileges.ts#L392-L412"
     },
     {
       "kind": "interface",
diff --git a/output/schema/schema.json b/output/schema/schema.json
index 1cad3778c2..0c24c15c4a 100644
--- a/output/schema/schema.json
+++ b/output/schema/schema.json
@@ -171,8 +171,9 @@
           "stability": "stable"
         }
       },
-      "description": "Deletes an async search by identifier.\nIf the search is still running, the search request will be cancelled.\nOtherwise, the saved search results are deleted.\nIf the Elasticsearch security features are enabled, the deletion of a specific async search is restricted to: the authenticated user that submitted the original search request; users that have the `cancel_task` cluster privilege.",
+      "description": "Delete an async search.\n\nIf the asynchronous search is still running, it is cancelled.\nOtherwise, the saved search results are deleted.\nIf the Elasticsearch security features are enabled, the deletion of a specific async search is restricted to: the authenticated user that submitted the original search request; users that have the `cancel_task` cluster privilege.",
       "docId": "async-search",
+      "docTag": "search",
       "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/async-search.html",
       "name": "async_search.delete",
       "request": {
@@ -207,8 +208,9 @@
           "stability": "stable"
         }
       },
-      "description": "Retrieves the results of a previously submitted async search request given its identifier.\nIf the Elasticsearch security features are enabled, access to the results of a specific async search is restricted to the user or API key that submitted it.",
+      "description": "Get async search results.\n\nRetrieve the results of a previously submitted asynchronous search request.\nIf the Elasticsearch security features are enabled, access to the results of a specific async search is restricted to the user or API key that submitted it.",
       "docId": "async-search",
+      "docTag": "search",
       "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/async-search.html",
       "name": "async_search.get",
       "request": {
@@ -243,8 +245,9 @@
           "stability": "stable"
         }
       },
-      "description": "Get async search status\nRetrieves the status of a previously submitted async search request given its identifier, without retrieving search results.\nIf the Elasticsearch security features are enabled, use of this API is restricted to the `monitoring_user` role.",
+      "description": "Get the async search status.\n\nGet the status of a previously submitted async search request given its identifier, without retrieving search results.\nIf the Elasticsearch security features are enabled, use of this API is restricted to the `monitoring_user` role.",
       "docId": "async-search",
+      "docTag": "search",
       "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/async-search.html",
       "name": "async_search.status",
       "request": {
@@ -279,8 +282,9 @@
           "stability": "stable"
         }
       },
-      "description": "Runs a search request asynchronously.\nWhen the primary sort of the results is an indexed field, shards get sorted based on minimum and maximum value that they hold for that field, hence partial results become available following the sort criteria that was requested.\nWarning: Async search does not support scroll nor search requests that only include the suggest section.\nBy default, Elasticsearch doesn’t allow you to store an async search response larger than 10Mb and an attempt to do this results in an error.\nThe maximum allowed size for a stored async search response can be set by changing the `search.max_async_search_response_size` cluster level setting.",
+      "description": "Run an async search.\n\nWhen the primary sort of the results is an indexed field, shards get sorted based on minimum and maximum value that they hold for that field. Partial results become available following the sort criteria that was requested.\n\nWarning: Asynchronous search does not support scroll or search requests that include only the suggest section.\n\nBy default, Elasticsearch does not allow you to store an async search response larger than 10Mb and an attempt to do this results in an error.\nThe maximum allowed size for a stored async search response can be set by changing the `search.max_async_search_response_size` cluster level setting.",
       "docId": "async-search",
+      "docTag": "search",
       "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/async-search.html",
       "name": "async_search.submit",
       "request": {
@@ -320,9 +324,11 @@
           "stability": "stable"
         }
       },
-      "description": "Deletes an autoscaling policy. Designed for indirect use by ECE/ESS and ECK. Direct use is not supported.",
+      "description": "Delete an autoscaling policy.\n\nNOTE: This feature is designed for indirect use by Elasticsearch Service, Elastic Cloud Enterprise, and Elastic Cloud on Kubernetes. Direct use is not supported.",
       "docId": "autoscaling-delete-autoscaling-policy",
       "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/autoscaling-delete-autoscaling-policy.html",
+      "extDocId": "autoscaling",
+      "extDocUrl": "https://www.elastic.co/guide/en/cloud/current/ec-autoscaling.html",
       "name": "autoscaling.delete_autoscaling_policy",
       "request": {
         "name": "Request",
@@ -352,9 +358,11 @@
           "stability": "stable"
         }
       },
-      "description": "Gets the current autoscaling capacity based on the configured autoscaling policy. Designed for indirect use by ECE/ESS and ECK. Direct use is not supported.",
+      "description": "Get the autoscaling capacity.\n\nNOTE: This feature is designed for indirect use by Elasticsearch Service, Elastic Cloud Enterprise, and Elastic Cloud on Kubernetes. Direct use is not supported.\n\nThis API gets the current autoscaling capacity based on the configured autoscaling policy.\nIt will return information to size the cluster appropriately to the current workload.\n\nThe `required_capacity` is calculated as the maximum of the `required_capacity` result of all individual deciders that are enabled for the policy.\n\nThe operator should verify that the `current_nodes` match the operator’s knowledge of the cluster to avoid making autoscaling decisions based on stale or incomplete information.\n\nThe response contains decider-specific information you can use to diagnose how and why autoscaling determined a certain capacity was required.\nThis information is provided for diagnosis only.\nDo not use this information to make autoscaling decisions.",
       "docId": "autoscaling-get-autoscaling-capacity",
       "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/autoscaling-get-autoscaling-capacity.html",
+      "extDocId": "autoscaling",
+      "extDocUrl": "https://www.elastic.co/guide/en/cloud/current/ec-autoscaling.html",
       "name": "autoscaling.get_autoscaling_capacity",
       "request": {
         "name": "Request",
@@ -384,9 +392,11 @@
           "stability": "stable"
         }
       },
-      "description": "Retrieves an autoscaling policy. Designed for indirect use by ECE/ESS and ECK. Direct use is not supported.",
+      "description": "Get an autoscaling policy.\n\nNOTE: This feature is designed for indirect use by Elasticsearch Service, Elastic Cloud Enterprise, and Elastic Cloud on Kubernetes. Direct use is not supported.",
       "docId": "autoscaling-get-autoscaling-capacity",
       "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/autoscaling-get-autoscaling-capacity.html",
+      "extDocId": "autoscaling",
+      "extDocUrl": "https://www.elastic.co/guide/en/cloud/current/ec-autoscaling.html",
       "name": "autoscaling.get_autoscaling_policy",
       "request": {
         "name": "Request",
@@ -416,9 +426,11 @@
           "stability": "stable"
         }
       },
-      "description": "Creates a new autoscaling policy. Designed for indirect use by ECE/ESS and ECK. Direct use is not supported.",
+      "description": "Create or update an autoscaling policy.\n\nNOTE: This feature is designed for indirect use by Elasticsearch Service, Elastic Cloud Enterprise, and Elastic Cloud on Kubernetes. Direct use is not supported.",
       "docId": "autoscaling-put-autoscaling-policy",
       "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/autoscaling-put-autoscaling-policy.html",
+      "extDocId": "autoscaling",
+      "extDocUrl": "https://www.elastic.co/guide/en/cloud/current/ec-autoscaling.html",
       "name": "autoscaling.put_autoscaling_policy",
       "request": {
         "name": "Request",
@@ -456,6 +468,7 @@
       },
       "description": "Bulk index or delete documents.\nPerforms multiple indexing or delete operations in a single API call.\nThis reduces overhead and can greatly increase indexing speed.",
       "docId": "docs-bulk",
+      "docTag": "document",
       "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/docs-bulk.html",
       "name": "bulk",
       "request": {
@@ -2142,8 +2155,9 @@
           "stability": "stable"
         }
       },
-      "description": "Clears the search context and results for a scrolling search.",
+      "description": "Clear a scrolling search.\n\nClear the search context and results for a scrolling search.",
       "docId": "clear-scroll-api",
+      "docTag": "search",
       "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/clear-scroll-api.html",
       "name": "clear_scroll",
       "request": {
@@ -2192,8 +2206,9 @@
           "stability": "stable"
         }
       },
-      "description": "Closes a point-in-time.",
+      "description": "Close a point in time.\n\nA point in time must be opened explicitly before being used in search requests.\nThe `keep_alive` parameter tells Elasticsearch how long it should persist.\nA point in time is automatically closed when the `keep_alive` period has elapsed.\nHowever, keeping points in time has a cost; close them as soon as they are no longer required for search requests.",
       "docId": "point-in-time-api",
+      "docTag": "search",
       "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/point-in-time-api.html",
       "name": "close_point_in_time",
       "request": {
@@ -2231,7 +2246,7 @@
           "stability": "stable"
         }
       },
-      "description": "Provides explanations for shard allocations in the cluster.",
+      "description": "Explain the shard allocations.\nGet explanations for shard allocations in the cluster.\nFor unassigned shards, it provides an explanation for why the shard is unassigned.\nFor assigned shards, it provides an explanation for why the shard is remaining on its current node and has not moved or rebalanced to another node.\nThis API can be very useful when attempting to diagnose why a shard is unassigned or why a shard continues to remain on its current node when you might expect otherwise.",
       "docId": "cluster-allocation-explain",
       "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/cluster-allocation-explain.html",
       "name": "cluster.allocation_explain",
@@ -2273,6 +2288,7 @@
       },
       "description": "Delete component templates.\nDeletes component templates.\nComponent templates are building blocks for constructing index templates that specify index mappings, settings, and aliases.",
       "docId": "indices-component-template",
+      "docTag": "indices",
       "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/indices-component-template.html",
       "name": "cluster.delete_component_template",
       "privileges": {
@@ -2308,9 +2324,11 @@
           "stability": "stable"
         }
       },
-      "description": "Clears cluster voting config exclusions.",
+      "description": "Clear cluster voting config exclusions.\nRemove master-eligible nodes from the voting configuration exclusion list.",
       "docId": "voting-config-exclusions",
       "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/voting-config-exclusions.html",
+      "extDocId": "add-nodes",
+      "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/add-elasticsearch-nodes.html",
       "name": "cluster.delete_voting_config_exclusions",
       "request": {
         "name": "Request",
@@ -2346,6 +2364,7 @@
       },
       "description": "Check component templates.\nReturns information about whether a particular component template exists.",
       "docId": "indices-component-template",
+      "docTag": "indices",
       "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/indices-component-template.html",
       "name": "cluster.exists_component_template",
       "request": {
@@ -2382,6 +2401,7 @@
       },
       "description": "Get component templates.\nRetrieves information about component templates.",
       "docId": "indices-component-template",
+      "docTag": "indices",
       "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/indices-component-template.html",
       "name": "cluster.get_component_template",
       "privileges": {
@@ -2426,7 +2446,7 @@
           "stability": "stable"
         }
       },
-      "description": "Returns cluster-wide settings.\nBy default, it returns only settings that have been explicitly defined.",
+      "description": "Get cluster-wide settings.\nBy default, it returns only settings that have been explicitly defined.",
       "docId": "cluster-get-settings",
       "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/cluster-get-settings.html",
       "name": "cluster.get_settings",
@@ -2467,8 +2487,9 @@
           "stability": "stable"
         }
       },
-      "description": "The cluster health API returns a simple status on the health of the cluster. You can also use the API to get the health status of only specified data streams and indices. For data streams, the API retrieves the health status of the stream’s backing indices.\nThe cluster health status is: green, yellow or red. On the shard level, a red status indicates that the specific shard is not allocated in the cluster, yellow means that the primary shard is allocated but replicas are not, and green means that all shards are allocated. The index level status is controlled by the worst shard status. The cluster status is controlled by the worst index status.",
+      "description": "Get the cluster health status.\nYou can also use the API to get the health status of only specified data streams and indices.\nFor data streams, the API retrieves the health status of the stream’s backing indices.\n\nThe cluster health status is: green, yellow or red.\nOn the shard level, a red status indicates that the specific shard is not allocated in the cluster. Yellow means that the primary shard is allocated but replicas are not. Green means that all shards are allocated.\nThe index level status is controlled by the worst shard status.\n\nOne of the main benefits of the API is the ability to wait until the cluster reaches a certain high watermark health level.\nThe cluster status is controlled by the worst index status.",
       "docId": "cluster-health",
+      "docTag": "cluster",
       "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/cluster-health.html",
       "name": "cluster.health",
       "privileges": {
@@ -2550,7 +2571,7 @@
           "stability": "stable"
         }
       },
-      "description": "Returns cluster-level changes (such as create index, update mapping, allocate or fail shard) that have not yet been executed.\nNOTE: This API returns a list of any pending updates to the cluster state.\nThese are distinct from the tasks reported by the Task Management API which include periodic tasks and tasks initiated by the user, such as node stats, search queries, or create index requests.\nHowever, if a user-initiated task such as a create index command causes a cluster state update, the activity of this task might be reported by both task api and pending cluster tasks API.",
+      "description": "Get the pending cluster tasks.\nGet information about cluster-level changes (such as create index, update mapping, allocate or fail shard) that have not yet taken effect.\n\nNOTE: This API returns a list of any pending updates to the cluster state.\nThese are distinct from the tasks reported by the task management API which include periodic tasks and tasks initiated by the user, such as node stats, search queries, or create index requests.\nHowever, if a user-initiated task such as a create index command causes a cluster state update, the activity of this task might be reported by both task api and pending cluster tasks API.",
       "docId": "cluster-pending",
       "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/cluster-pending.html",
       "name": "cluster.pending_tasks",
@@ -2587,9 +2608,11 @@
           "stability": "stable"
         }
       },
-      "description": "Updates the cluster voting config exclusions by node ids or node names.",
+      "description": "Update voting configuration exclusions.\nUpdate the cluster voting config exclusions by node IDs or node names.\nBy default, if there are more than three master-eligible nodes in the cluster and you remove fewer than half of the master-eligible nodes in the cluster at once, the voting configuration automatically shrinks.\nIf you want to shrink the voting configuration to contain fewer than three nodes or to remove half or more of the master-eligible nodes in the cluster at once, use this API to remove departing nodes from the voting configuration manually.\nThe API adds an entry for each specified node to the cluster’s voting configuration exclusions list.\nIt then waits until the cluster has reconfigured its voting configuration to exclude the specified nodes.\n\nClusters should have no voting configuration exclusions in normal operation.\nOnce the excluded nodes have stopped, clear the voting configuration exclusions with `DELETE /_cluster/voting_config_exclusions`.\nThis API waits for the nodes to be fully removed from the cluster before it returns.\nIf your cluster has voting configuration exclusions for nodes that you no longer intend to remove, use `DELETE /_cluster/voting_config_exclusions?wait_for_removal=false` to clear the voting configuration exclusions without waiting for the nodes to leave the cluster.\n\nA response to `POST /_cluster/voting_config_exclusions` with an HTTP status code of 200 OK guarantees that the node has been removed from the voting configuration and will not be reinstated until the voting configuration exclusions are cleared by calling `DELETE /_cluster/voting_config_exclusions`.\nIf the call to `POST /_cluster/voting_config_exclusions` fails or returns a response with an HTTP status code other than 200 OK then the node may not have been removed from the voting configuration.\nIn that case, you may safely retry the call.\n\nNOTE: Voting exclusions are required only when you remove at least half of the master-eligible nodes from a cluster in a short time period.\nThey are not required when removing master-ineligible nodes or when removing fewer than half of the master-eligible nodes.",
       "docId": "voting-config-exclusions",
       "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/voting-config-exclusions.html",
+      "extDocId": "add-nodes",
+      "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/add-elasticsearch-nodes.html",
       "name": "cluster.post_voting_config_exclusions",
       "request": {
         "name": "Request",
@@ -2625,6 +2648,7 @@
       },
       "description": "Create or update a component template.\nCreates or updates a component template.\nComponent templates are building blocks for constructing index templates that specify index mappings, settings, and aliases.\n\nAn index template can be composed of multiple component templates.\nTo use a component template, specify it in an index template’s `composed_of` list.\nComponent templates are only applied to new data streams and indices as part of a matching index template.\n\nSettings and mappings specified directly in the index template or the create index request override any settings or mappings specified in a component template.\n\nComponent templates are only used during index creation.\nFor data streams, this includes data stream creation and the creation of a stream’s backing indices.\nChanges to component templates do not affect existing indices, including a stream’s backing indices.\n\nYou can use C-style `/* *\\/` block comments in component templates.\nYou can include comments anywhere in the request body except before the opening curly bracket.",
       "docId": "indices-component-template",
+      "docTag": "indices",
       "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/indices-component-template.html",
       "name": "cluster.put_component_template",
       "privileges": {
@@ -2667,7 +2691,7 @@
           "stability": "stable"
         }
       },
-      "description": "Updates the cluster settings.",
+      "description": "Update the cluster settings.\nConfigure and update dynamic settings on a running cluster.\nYou can also configure dynamic settings locally on an unstarted or shut down node in `elasticsearch.yml`.\n\nUpdates made with this API can be persistent, which apply across cluster restarts, or transient, which reset after a cluster restart.\nYou can also reset transient or persistent settings by assigning them a null value.\n\nIf you configure the same setting using multiple methods, Elasticsearch applies the settings in following order of precedence: 1) Transient setting; 2) Persistent setting; 3) `elasticsearch.yml` setting; 4) Default setting value.\nFor example, you can apply a transient setting to override a persistent setting or `elasticsearch.yml` setting.\nHowever, a change to an `elasticsearch.yml` setting will not override a defined transient or persistent setting.\n\nTIP: In Elastic Cloud, use the user settings feature to configure all cluster settings. This method automatically rejects unsafe settings that could break your cluster.\nIf you run Elasticsearch on your own hardware, use this API to configure dynamic cluster settings.\nOnly use `elasticsearch.yml` for static cluster settings and node settings.\nThe API doesn’t require a restart and ensures a setting’s value is the same on all nodes.\n\nWARNING: Transient cluster settings are no longer recommended. Use persistent cluster settings instead.\nIf a cluster becomes unstable, transient settings can clear unexpectedly, resulting in a potentially undesired cluster configuration.",
       "docId": "cluster-update-settings",
       "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/cluster-update-settings.html",
       "name": "cluster.put_settings",
@@ -2702,7 +2726,7 @@
           "stability": "stable"
         }
       },
-      "description": "The cluster remote info API allows you to retrieve all of the configured\nremote cluster information. It returns connection and endpoint information\nkeyed by the configured remote cluster alias.",
+      "description": "Get remote cluster information.\nGet all of the configured remote cluster information.\nThis API returns connection and endpoint information keyed by the configured remote cluster alias.",
       "docId": "cluster-remote-info",
       "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/cluster-remote-info.html",
       "name": "cluster.remote_info",
@@ -2738,7 +2762,7 @@
           "stability": "stable"
         }
       },
-      "description": "Allows to manually change the allocation of individual shards in the cluster.",
+      "description": "Reroute the cluster.\nManually change the allocation of individual shards in the cluster.\nFor example, a shard can be moved from one node to another explicitly, an allocation can be canceled, and an unassigned shard can be explicitly allocated to a specific node.\n\nIt is important to note that after processing any reroute commands Elasticsearch will perform rebalancing as normal (respecting the values of settings such as `cluster.routing.rebalance.enable`) in order to remain in a balanced state.\nFor example, if the requested allocation includes moving a shard from node1 to node2 then this may cause a shard to be moved from node2 back to node1 to even things out.\n\nThe cluster can be set to disable allocations using the `cluster.routing.allocation.enable` setting.\nIf allocations are disabled then the only allocations that will be performed are explicit ones given using the reroute command, and consequent allocations due to rebalancing.\n\nThe cluster will attempt to allocate a shard a maximum of `index.allocation.max_retries` times in a row (defaults to `5`), before giving up and leaving the shard unallocated.\nThis scenario can be caused by structural problems such as having an analyzer which refers to a stopwords file which doesn’t exist on all nodes.\n\nOnce the problem has been corrected, allocation can be manually retried by calling the reroute API with the `?retry_failed` URI query parameter, which will attempt a single retry round for these shards.",
       "docId": "cluster-reroute",
       "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/cluster-reroute.html",
       "name": "cluster.reroute",
@@ -2777,7 +2801,7 @@
           "stability": "stable"
         }
       },
-      "description": "Returns a comprehensive information about the state of the cluster.",
+      "description": "Get the cluster state.\nGet comprehensive information about the state of the cluster.\n\nThe cluster state is an internal data structure which keeps track of a variety of information needed by every node, including the identity and attributes of the other nodes in the cluster; cluster-wide settings; index metadata, including the mapping and settings for each index; the location and status of every shard copy in the cluster.\n\nThe elected master node ensures that every node in the cluster has a copy of the same cluster state.\nThis API lets you retrieve a representation of this internal state for debugging or diagnostic purposes.\nYou may need to consult the Elasticsearch source code to determine the precise meaning of the response.\n\nBy default the API will route requests to the elected master node since this node is the authoritative source of cluster states.\nYou can also retrieve the cluster state held on the node handling the API request by adding the `?local=true` query parameter.\n\nElasticsearch may need to expend significant effort to compute a response to this API in larger clusters, and the response may comprise a very large quantity of data.\nIf you use this API repeatedly, your cluster may become unstable.\n\nWARNING: The response is a representation of an internal data structure.\nIts format is not subject to the same compatibility guarantees as other more stable APIs and may change from version to version.\nDo not query this API using external monitoring tools.\nInstead, obtain the information you require using other more stable cluster APIs.",
       "docId": "cluster-state",
       "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/cluster-state.html",
       "name": "cluster.state",
@@ -2831,7 +2855,7 @@
           "stability": "stable"
         }
       },
-      "description": "Returns cluster statistics.\nIt returns basic index metrics (shard numbers, store size, memory usage) and information about the current nodes that form the cluster (number, roles, os, jvm versions, memory usage, cpu and installed plugins).",
+      "description": "Get cluster statistics.\nGet basic index metrics (shard numbers, store size, memory usage) and information about the current nodes that form the cluster (number, roles, os, jvm versions, memory usage, cpu and installed plugins).",
       "docId": "cluster-stats",
       "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/cluster-stats.html",
       "name": "cluster.stats",
@@ -2878,7 +2902,7 @@
           "stability": "experimental"
         }
       },
-      "description": "Updates the last_seen field in the connector, and sets it to current timestamp",
+      "description": "Check in a connector.\n\nUpdate the `last_seen` field in the connector and set it to the current timestamp.",
       "docId": "connector-checkin",
       "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/check-in-connector-api.html",
       "name": "connector.check_in",
@@ -2914,7 +2938,7 @@
           "stability": "beta"
         }
       },
-      "description": "Deletes a connector.",
+      "description": "Delete a connector.\n\nRemoves a connector and associated sync jobs.\nThis is a destructive action that is not recoverable.\nNOTE: This action doesn’t delete any API keys, ingest pipelines, or data indices associated with the connector.\nThese need to be removed manually.",
       "docId": "connector-delete",
       "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/delete-connector-api.html",
       "name": "connector.delete",
@@ -2950,7 +2974,7 @@
           "stability": "beta"
         }
       },
-      "description": "Retrieves a connector.",
+      "description": "Get a connector.\n\nGet the details about a connector.",
       "docId": "connector-get",
       "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/get-connector-api.html",
       "name": "connector.get",
@@ -2987,7 +3011,7 @@
           "visibility": "private"
         }
       },
-      "description": "Updates last sync stats in the connector document",
+      "description": "Update the connector last sync stats.\n\nUpdate the fields related to the last sync of a connector.\nThis action is used for analytics and monitoring.",
       "docId": "connector-last-sync",
       "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/update-connector-last-sync-api.html",
       "name": "connector.last_sync",
@@ -3026,7 +3050,7 @@
           "stability": "beta"
         }
       },
-      "description": "Returns existing connectors.",
+      "description": "Get all connectors.\n\nGet information about all connectors.",
       "docId": "connector-list",
       "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/list-connector-api.html",
       "name": "connector.list",
@@ -3062,7 +3086,7 @@
           "stability": "beta"
         }
       },
-      "description": "Creates a connector.",
+      "description": "Create a connector.\n\nConnectors are Elasticsearch integrations that bring content from third-party data sources, which can be deployed on Elastic Cloud or hosted on your own infrastructure.\nElastic managed connectors (Native connectors) are a managed service on Elastic Cloud.\nSelf-managed connectors (Connector clients) are self-managed on your infrastructure.",
       "docId": "connector-post",
       "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/create-connector-api.html",
       "name": "connector.post",
@@ -3101,7 +3125,7 @@
           "stability": "beta"
         }
       },
-      "description": "Creates or updates a connector.",
+      "description": "Create or update a connector.",
       "docId": "connector-put",
       "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/create-connector-api.html",
       "name": "connector.put",
@@ -3246,7 +3270,7 @@
           "stability": "beta"
         }
       },
-      "description": "Cancels a connector sync job.",
+      "description": "Cancel a connector sync job.\n\nCancel a connector sync job, which sets the status to cancelling and updates `cancellation_requested_at` to the current time.\nThe connector service is then responsible for setting the status of connector sync jobs to cancelled.",
       "docId": "connector-sync-job-cancel",
       "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/cancel-connector-sync-job-api.html",
       "name": "connector.sync_job_cancel",
@@ -3335,7 +3359,7 @@
           "stability": "beta"
         }
       },
-      "description": "Deletes a connector sync job.",
+      "description": "Delete a connector sync job.\n\nRemove a connector sync job and its associated data.\nThis is a destructive action that is not recoverable.",
       "docId": "connector-sync-job-delete",
       "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/delete-connector-sync-job-api.html",
       "name": "connector.sync_job_delete",
@@ -3399,7 +3423,7 @@
           "stability": "beta"
         }
       },
-      "description": "Retrieves a connector sync job.",
+      "description": "Get a connector sync job.",
       "docId": "connector-sync-job-get",
       "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/get-connector-sync-job-api.html",
       "name": "connector.sync_job_get",
@@ -3435,7 +3459,7 @@
           "stability": "beta"
         }
       },
-      "description": "Lists connector sync jobs.",
+      "description": "Get all connector sync jobs.\n\nGet information about all stored connector sync jobs listed by their creation date in ascending order.",
       "docId": "connector-sync-job-list",
       "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/list-connector-sync-jobs-api.html",
       "name": "connector.sync_job_list",
@@ -3471,7 +3495,7 @@
           "stability": "beta"
         }
       },
-      "description": "Creates a connector sync job.",
+      "description": "Create a connector sync job.\n\nCreate a connector sync job document in the internal index and initialize its counters and timestamps with default values.",
       "docId": "connector-sync-job-post",
       "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/create-connector-sync-job-api.html",
       "name": "connector.sync_job_post",
@@ -3538,7 +3562,7 @@
           "stability": "experimental"
         }
       },
-      "description": "Activates the valid draft filtering for a connector.",
+      "description": "Activate the connector draft filter.\n\nActivates the valid draft filtering for a connector.",
       "docId": "connector-update-filtering",
       "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/update-connector-filtering-api.html",
       "name": "connector.update_active_filtering",
@@ -3577,7 +3601,7 @@
           "stability": "beta"
         }
       },
-      "description": "Updates the API key id in the connector document",
+      "description": "Update the connector API key ID.\n\nUpdate the `api_key_id` and `api_key_secret_id` fields of a connector.\nYou can specify the ID of the API key used for authorization and the ID of the connector secret where the API key is stored.\nThe connector secret ID is required only for Elastic managed (native) connectors.\nSelf-managed connectors (connector clients) do not use this field.",
       "docId": "connector-update-api-key-id",
       "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/update-connector-api-key-id-api.html",
       "name": "connector.update_api_key_id",
@@ -3616,7 +3640,7 @@
           "stability": "beta"
         }
       },
-      "description": "Updates the configuration field in the connector document",
+      "description": "Update the connector configuration.\n\nUpdate the configuration field in the connector document.",
       "docId": "connector-configuration",
       "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/update-connector-configuration-api.html",
       "name": "connector.update_configuration",
@@ -3655,7 +3679,7 @@
           "stability": "experimental"
         }
       },
-      "description": "Updates the filtering field in the connector document",
+      "description": "Update the connector error field.\n\nSet the error field for the connector.\nIf the error provided in the request body is non-null, the connector’s status is updated to error.\nOtherwise, if the error is reset to null, the connector status is updated to connected.",
       "docId": "connector-update-error",
       "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/update-connector-error-api.html",
       "name": "connector.update_error",
@@ -3722,7 +3746,7 @@
           "stability": "beta"
         }
       },
-      "description": "Updates the filtering field in the connector document",
+      "description": "Update the connector filtering.\n\nUpdate the draft filtering configuration of a connector and marks the draft validation state as edited.\nThe filtering draft is activated once validated by the running Elastic connector service.\nThe filtering property is used to configure sync rules (both basic and advanced) for a connector.",
       "docId": "connector-update-filtering",
       "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/update-connector-filtering-api.html",
       "name": "connector.update_filtering",
@@ -3761,7 +3785,7 @@
           "stability": "experimental"
         }
       },
-      "description": "Updates the draft filtering validation info for a connector.",
+      "description": "Update the connector draft filtering validation.\n\nUpdate the draft filtering validation info for a connector.",
       "docId": "connector-update-filtering-validation",
       "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/update-connector-filtering-validation-api.html",
       "name": "connector.update_filtering_validation",
@@ -3800,7 +3824,7 @@
           "stability": "beta"
         }
       },
-      "description": "Updates the index_name in the connector document",
+      "description": "Update the connector index name.\n\nUpdate the `index_name` field of a connector, specifying the index where the data ingested by the connector is stored.",
       "docId": "connector-update-index-name",
       "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/update-connector-index-name-api.html",
       "name": "connector.update_index_name",
@@ -3839,7 +3863,7 @@
           "stability": "beta"
         }
       },
-      "description": "Updates the name and description fields in the connector document",
+      "description": "Update the connector name and description.",
       "docId": "connector-update-name",
       "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/update-connector-name-description-api.html",
       "name": "connector.update_name",
@@ -3878,7 +3902,7 @@
           "stability": "beta"
         }
       },
-      "description": "Updates the is_native flag in the connector document",
+      "description": "Update the connector is_native flag.",
       "docId": "connector-update-native",
       "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/update-connector-native-api.html",
       "name": "connector.update_native",
@@ -3917,7 +3941,7 @@
           "stability": "beta"
         }
       },
-      "description": "Updates the pipeline field in the connector document",
+      "description": "Update the connector pipeline.\n\nWhen you create a new connector, the configuration of an ingest pipeline is populated with default settings.",
       "docId": "connector-update-pipeline",
       "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/update-connector-pipeline-api.html",
       "name": "connector.update_pipeline",
@@ -3956,7 +3980,7 @@
           "stability": "beta"
         }
       },
-      "description": "Updates the scheduling field in the connector document",
+      "description": "Update the connector scheduling.",
       "docId": "connector-update-scheduling",
       "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/update-connector-scheduling-api.html",
       "name": "connector.update_scheduling",
@@ -3995,7 +4019,7 @@
           "stability": "beta"
         }
       },
-      "description": "Updates the service type of the connector",
+      "description": "Update the connector service type.",
       "docId": "connector-update-service-type",
       "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/update-connector-service-type-api.html",
       "name": "connector.update_service_type",
@@ -4034,7 +4058,7 @@
           "stability": "experimental"
         }
       },
-      "description": "Updates the status of the connector",
+      "description": "Update the connector status.",
       "docId": "connector-update-status",
       "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/update-connector-status-api.html",
       "name": "connector.update_status",
@@ -4072,7 +4096,8 @@
           "stability": "stable"
         }
       },
-      "description": "Returns number of documents matching a query.",
+      "description": "Count search results.\nGet the number of documents matching a query.",
+      "docTag": "search",
       "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/master/search-count.html",
       "name": "count",
       "request": {
@@ -4119,6 +4144,7 @@
         }
       },
       "description": "Index a document.\nAdds a JSON document to the specified data stream or index and makes it searchable.\nIf the target is an index and the document already exists, the request updates the document and increments its version.",
+      "docTag": "document",
       "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/master/docs-index_.html",
       "name": "create",
       "request": {
@@ -4153,7 +4179,8 @@
           "stability": "stable"
         }
       },
-      "description": "Deletes the specified dangling index",
+      "description": "Delete a dangling index.\n\nIf Elasticsearch encounters index data that is absent from the current cluster state, those indices are considered to be dangling.\nFor example, this can happen if you delete more than `cluster.indices.tombstones.size` indices while an Elasticsearch node is offline.",
+      "docTag": "indices",
       "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/master/modules-gateway-dangling-indices.html",
       "name": "dangling_indices.delete_dangling_index",
       "request": {
@@ -4184,7 +4211,8 @@
           "stability": "stable"
         }
       },
-      "description": "Imports the specified dangling index",
+      "description": "Import a dangling index.\n\nIf Elasticsearch encounters index data that is absent from the current cluster state, those indices are considered to be dangling.\nFor example, this can happen if you delete more than `cluster.indices.tombstones.size` indices while an Elasticsearch node is offline.",
+      "docTag": "indices",
       "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/master/modules-gateway-dangling-indices.html",
       "name": "dangling_indices.import_dangling_index",
       "request": {
@@ -4215,7 +4243,8 @@
           "stability": "stable"
         }
       },
-      "description": "Returns all dangling indices.",
+      "description": "Get the dangling indices.\n\nIf Elasticsearch encounters index data that is absent from the current cluster state, those indices are considered to be dangling.\nFor example, this can happen if you delete more than `cluster.indices.tombstones.size` indices while an Elasticsearch node is offline.\n\nUse this API to list dangling indices, which you can then import or delete.",
+      "docTag": "indices",
       "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/master/modules-gateway-dangling-indices.html",
       "name": "dangling_indices.list_dangling_indices",
       "request": {
@@ -4250,6 +4279,7 @@
         }
       },
       "description": "Delete a document.\nRemoves a JSON document from the specified index.",
+      "docTag": "document",
       "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/master/docs-delete.html",
       "name": "delete",
       "request": {
@@ -4285,6 +4315,7 @@
         }
       },
       "description": "Delete documents.\nDeletes documents that match the specified query.",
+      "docTag": "document",
       "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/master/docs-delete-by-query.html",
       "name": "delete_by_query",
       "request": {
@@ -4322,7 +4353,8 @@
           "stability": "stable"
         }
       },
-      "description": "Changes the number of requests per second for a particular Delete By Query operation.",
+      "description": "Throttle a delete by query operation.\n\nChange the number of requests per second for a particular delete by query operation.\nRethrottling that speeds up the query takes effect immediately but rethrotting that slows down the query takes effect after completing the current batch to prevent scroll timeouts.",
+      "docTag": "document",
       "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/current/docs-delete-by-query.html",
       "name": "delete_by_query_rethrottle",
       "request": {
@@ -4357,6 +4389,7 @@
         }
       },
       "description": "Delete a script or search template.\nDeletes a stored script or search template.",
+      "docTag": "script",
       "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/master/modules-scripting.html",
       "name": "delete_script",
       "request": {
@@ -4426,7 +4459,7 @@
           "stability": "stable"
         }
       },
-      "description": "Creates the enrich index for an existing enrich policy.",
+      "description": "Run an enrich policy.\nCreate the enrich index for an existing enrich policy.",
       "docId": "execute-enrich-policy-api",
       "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/execute-enrich-policy-api.html",
       "name": "enrich.execute_policy",
@@ -4577,7 +4610,7 @@
           "stability": "stable"
         }
       },
-      "description": "Deletes an async EQL search or a stored synchronous EQL search.\nThe API also deletes results for the search.",
+      "description": "Delete an async EQL search.\nDelete an async EQL search or a stored synchronous EQL search.\nThe API also deletes results for the search.",
       "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/current/eql-search-api.html",
       "name": "eql.delete",
       "request": {
@@ -4612,7 +4645,7 @@
           "stability": "stable"
         }
       },
-      "description": "Returns the current status and available results for an async EQL search or a stored synchronous EQL search.",
+      "description": "Get async EQL search results.\nGet the current status and available results for an async EQL search or a stored synchronous EQL search.",
       "docId": "eql-async-search-api",
       "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/get-async-eql-search-api.html",
       "name": "eql.get",
@@ -4648,7 +4681,7 @@
           "stability": "stable"
         }
       },
-      "description": "Returns the current status for an async EQL search or a stored synchronous EQL search without returning results.",
+      "description": "Get the async EQL status.\nGet the current status for an async EQL search or a stored synchronous EQL search without returning results.",
       "docId": "eql-async-search-status-api",
       "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/get-async-eql-status-api.html",
       "name": "eql.get_status",
@@ -4684,8 +4717,10 @@
           "stability": "stable"
         }
       },
-      "description": "Returns results matching a query expressed in Event Query Language (EQL)",
+      "description": "Get EQL search results.\nReturns search results for an Event Query Language (EQL) query.\nEQL assumes each document in a data stream or index corresponds to an event.",
       "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/current/eql-search-api.html",
+      "extDocId": "eql",
+      "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/eql.html",
       "name": "eql.search",
       "request": {
         "name": "Request",
@@ -4772,9 +4807,11 @@
           "since": "8.11.0"
         }
       },
-      "description": "Executes an ES|QL request",
+      "description": "Run an ES|QL query.\nGet search results for an ES|QL (Elasticsearch query language) query.",
       "docId": "esql-query",
       "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/esql-rest.html",
+      "extDocId": "esql",
+      "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/esql.html",
       "name": "esql.query",
       "request": {
         "name": "Request",
@@ -4811,6 +4848,7 @@
         }
       },
       "description": "Check a document.\nChecks if a specified document exists.",
+      "docTag": "document",
       "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/master/docs-get.html",
       "name": "exists",
       "request": {
@@ -4846,6 +4884,7 @@
         }
       },
       "description": "Check for a document source.\nChecks if a document's `_source` is stored.",
+      "docTag": "document",
       "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/master/docs-get.html",
       "name": "exists_source",
       "request": {
@@ -4880,6 +4919,7 @@
         }
       },
       "description": "Explain a document match result.\nReturns information about why a specific document matches, or doesn’t match, a query.",
+      "docTag": "search",
       "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/master/search-explain.html",
       "name": "explain",
       "request": {
@@ -4984,7 +5024,8 @@
           "stability": "stable"
         }
       },
-      "description": "The field capabilities API returns the information about the capabilities of fields among multiple indices.\nThe field capabilities API returns runtime fields like any other field. For example, a runtime field with a type\nof keyword is returned as any other field that belongs to the `keyword` family.",
+      "description": "Get the field capabilities.\n\nGet information about the capabilities of fields among multiple indices.\n\nFor data streams, the API returns field capabilities among the stream’s backing indices.\nIt returns runtime fields like any other field.\nFor example, a runtime field with a type of keyword is returned the same as any other field that belongs to the `keyword` family.",
+      "docTag": "search",
       "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/master/search-field-caps.html",
       "name": "field_caps",
       "privileges": {
@@ -5245,6 +5286,7 @@
         }
       },
       "description": "Get a document by its ID.\nRetrieves the document with the specified ID from an index.",
+      "docTag": "document",
       "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/master/docs-get.html",
       "name": "get",
       "request": {
@@ -5279,6 +5321,7 @@
         }
       },
       "description": "Get a script or search template.\nRetrieves a stored script or search template.",
+      "docTag": "script",
       "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/master/modules-scripting.html",
       "name": "get_script",
       "request": {
@@ -5308,7 +5351,8 @@
           "stability": "stable"
         }
       },
-      "description": "Returns all script contexts.",
+      "description": "Get script contexts.\n\nGet a list of supported script contexts and their methods.",
+      "docTag": "script",
       "docUrl": "https://www.elastic.co/guide/en/elasticsearch/painless/master/painless-contexts.html",
       "name": "get_script_context",
       "request": {
@@ -5338,7 +5382,8 @@
           "stability": "stable"
         }
       },
-      "description": "Returns available script types, languages and contexts",
+      "description": "Get script languages.\n\nGet a list of available script types, languages, and contexts.",
+      "docTag": "script",
       "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/master/modules-scripting.html",
       "name": "get_script_languages",
       "request": {
@@ -5373,6 +5418,7 @@
         }
       },
       "description": "Get a document's source.\nReturns the source of a document.",
+      "docTag": "document",
       "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/master/docs-get.html",
       "name": "get_source",
       "request": {
@@ -5406,9 +5452,11 @@
           "stability": "stable"
         }
       },
-      "description": "Extracts and summarizes information about the documents and terms in an Elasticsearch data stream or index.",
+      "description": "Explore graph analytics.\nExtract and summarize information about the documents and terms in an Elasticsearch data stream or index.\nThe easiest way to understand the behavior of this API is to use the Graph UI to explore connections.\nAn initial request to the `_explore` API contains a seed query that identifies the documents of interest and specifies the fields that define the vertices and connections you want to include in the graph.\nSubsequent requests enable you to spider out from one more vertices of interest.\nYou can exclude vertices that have already been returned.",
       "docId": "graph-explore-api",
       "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/graph-explore-api.html",
+      "extDocId": "graph",
+      "extDocUrl": "https://www.elastic.co/guide/en/kibana/{branch}/xpack-graph.html",
       "name": "graph.explore",
       "request": {
         "name": "Request",
@@ -5446,7 +5494,7 @@
           "stability": "stable"
         }
       },
-      "description": "Returns the health of the cluster.",
+      "description": "Get the cluster health.\nGet a report with the health status of an Elasticsearch cluster.\nThe report contains a list of indicators that compose Elasticsearch functionality.\n\nEach indicator has a health status of: green, unknown, yellow or red.\nThe indicator will provide an explanation and metadata describing the reason for its current health status.\n\nThe cluster’s status is controlled by the worst indicator status.\n\nIn the event that an indicator’s status is non-green, a list of impacts may be present in the indicator result which detail the functionalities that are negatively affected by the health issue.\nEach impact carries with it a severity level, an area of the system that is affected, and a simple description of the impact on the system.\n\nSome health indicators can determine the root cause of a health problem and prescribe a set of steps that can be performed in order to improve the health of the system.\nThe root cause and remediation steps are encapsulated in a diagnosis.\nA diagnosis contains a cause detailing a root cause analysis, an action containing a brief description of the steps to take to fix the problem, the list of affected resources (if applicable), and a detailed step-by-step troubleshooting guide to fix the diagnosed problem.\n\nNOTE: The health indicators perform root cause analysis of non-green health statuses. This can be computationally expensive when called frequently.\nWhen setting up automated polling of the API for health status, set verbose to false to disable the more expensive analysis logic.",
       "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/current/health-api.html",
       "name": "health_report",
       "request": {
@@ -5483,7 +5531,7 @@
           "stability": "stable"
         }
       },
-      "description": "Deletes the specified lifecycle policy definition. You cannot delete policies that are currently in use. If the policy is being used to manage any indices, the request fails and returns an error.",
+      "description": "Delete a lifecycle policy.\nYou cannot delete policies that are currently in use. If the policy is being used to manage any indices, the request fails and returns an error.",
       "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/current/ilm-delete-lifecycle.html",
       "name": "ilm.delete_lifecycle",
       "privileges": {
@@ -5519,7 +5567,7 @@
           "stability": "stable"
         }
       },
-      "description": "Retrieves information about the index’s current lifecycle state, such as the currently executing phase, action, and step. Shows when the index entered each one, the definition of the running phase, and information about any failures.",
+      "description": "Explain the lifecycle state.\nGet the current lifecycle status for one or more indices.\nFor data streams, the API retrieves the current lifecycle status for the stream's backing indices.\n\nThe response indicates when the index entered each lifecycle state, provides the definition of the running phase, and information about any failures.",
       "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/current/ilm-explain-lifecycle.html",
       "name": "ilm.explain_lifecycle",
       "privileges": {
@@ -5556,7 +5604,7 @@
           "stability": "stable"
         }
       },
-      "description": "Retrieves a lifecycle policy.",
+      "description": "Get lifecycle policies.",
       "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/current/ilm-get-lifecycle.html",
       "name": "ilm.get_lifecycle",
       "privileges": {
@@ -5599,9 +5647,14 @@
           "stability": "stable"
         }
       },
-      "description": "Retrieves the current index lifecycle management (ILM) status.",
+      "description": "Get the ILM status.\nGet the current index lifecycle management status.",
       "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/current/ilm-get-status.html",
       "name": "ilm.get_status",
+      "privileges": {
+        "cluster": [
+          "read_ilm"
+        ]
+      },
       "request": {
         "name": "Request",
         "namespace": "ilm.get_status"
@@ -5630,8 +5683,10 @@
           "stability": "stable"
         }
       },
-      "description": "Switches the indices, ILM policies, and legacy, composable and component templates from using custom node attributes and\nattribute-based allocation filters to using data tiers, and optionally deletes one legacy index template.+\nUsing node roles enables ILM to automatically move the indices between data tiers.",
+      "description": "Migrate to data tiers routing.\nSwitch the indices, ILM policies, and legacy, composable, and component templates from using custom node attributes and attribute-based allocation filters to using data tiers.\nOptionally, delete one legacy index template.\nUsing node roles enables ILM to automatically move the indices between data tiers.\n\nMigrating away from custom node attributes routing can be manually performed.\nThis API provides an automated way of performing three out of the four manual steps listed in the migration guide:\n\n1. Stop setting the custom hot attribute on new indices.\n1. Remove custom allocation settings from existing ILM policies.\n1. Replace custom allocation settings from existing indices with the corresponding tier preference.\n\nILM must be stopped before performing the migration.\nUse the stop ILM and get ILM status APIs to wait until the reported operation mode is `STOPPED`.",
       "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/current/ilm-migrate-to-data-tiers.html",
+      "extDocId": "migrate-index-allocation-filters",
+      "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/migrate-index-allocation-filters.html",
       "name": "ilm.migrate_to_data_tiers",
       "request": {
         "name": "Request",
@@ -5664,9 +5719,14 @@
           "stability": "stable"
         }
       },
-      "description": "Manually moves an index into the specified step and executes that step.",
+      "description": "Move to a lifecycle step.\nManually move an index into a specific step in the lifecycle policy and run that step.\n\nWARNING: This operation can result in the loss of data. Manually moving an index into a specific step runs that step even if it has already been performed. This is a potentially destructive action and this should be considered an expert level API.\n\nYou must specify both the current step and the step to be executed in the body of the request.\nThe request will fail if the current step does not match the step currently running for the index\nThis is to prevent the index from being moved from an unexpected step into the next step.\n\nWhen specifying the target (`next_step`) to which the index will be moved, either the name or both the action and name fields are optional.\nIf only the phase is specified, the index will move to the first step of the first action in the target phase.\nIf the phase and action are specified, the index will move to the first step of the specified action in the specified phase.\nOnly actions specified in the ILM policy are considered valid.\nAn index cannot move to a step that is not part of its policy.",
       "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/current/ilm-move-to-step.html",
       "name": "ilm.move_to_step",
+      "privileges": {
+        "index": [
+          "manage_ilm"
+        ]
+      },
       "request": {
         "name": "Request",
         "namespace": "ilm.move_to_step"
@@ -5698,8 +5758,10 @@
           "stability": "stable"
         }
       },
-      "description": "Creates a lifecycle policy. If the specified policy exists, the policy is replaced and the policy version is incremented.",
+      "description": "Create or update a lifecycle policy.\nIf the specified policy exists, it is replaced and the policy version is incremented.\n\nNOTE: Only the latest version of the policy is stored, you cannot revert to previous versions.",
       "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/current/ilm-put-lifecycle.html",
+      "extDocId": "ilm-index-lifecycle",
+      "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/ilm-index-lifecycle.html",
       "name": "ilm.put_lifecycle",
       "privileges": {
         "cluster": [
@@ -5740,9 +5802,14 @@
           "stability": "stable"
         }
       },
-      "description": "Removes the assigned lifecycle policy and stops managing the specified index",
+      "description": "Remove policies from an index.\nRemove the assigned lifecycle policies from an index or a data stream's backing indices.\nIt also stops managing the indices.",
       "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/current/ilm-remove-policy.html",
       "name": "ilm.remove_policy",
+      "privileges": {
+        "index": [
+          "manage_ilm"
+        ]
+      },
       "request": {
         "name": "Request",
         "namespace": "ilm.remove_policy"
@@ -5771,9 +5838,14 @@
           "stability": "stable"
         }
       },
-      "description": "Retries executing the policy for an index that is in the ERROR step.",
+      "description": "Retry a policy.\nRetry running the lifecycle policy for an index that is in the ERROR step.\nThe API sets the policy back to the step where the error occurred and runs the step.\nUse the explain lifecycle state API to determine whether an index is in the ERROR step.",
       "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/current/ilm-retry-policy.html",
       "name": "ilm.retry",
+      "privileges": {
+        "index": [
+          "manage_ilm"
+        ]
+      },
       "request": {
         "name": "Request",
         "namespace": "ilm.retry"
@@ -5802,9 +5874,14 @@
           "stability": "stable"
         }
       },
-      "description": "Start the index lifecycle management (ILM) plugin.",
+      "description": "Start the ILM plugin.\nStart the index lifecycle management plugin if it is currently stopped.\nILM is started automatically when the cluster is formed.\nRestarting ILM is necessary only when it has been stopped using the stop ILM API.",
       "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/current/ilm-start.html",
       "name": "ilm.start",
+      "privileges": {
+        "cluster": [
+          "manage_ilm"
+        ]
+      },
       "request": {
         "name": "Request",
         "namespace": "ilm.start"
@@ -5833,9 +5910,14 @@
           "stability": "stable"
         }
       },
-      "description": "Halts all lifecycle management operations and stops the index lifecycle management (ILM) plugin",
+      "description": "Stop the ILM plugin.\nHalt all lifecycle management operations and stop the index lifecycle management plugin.\nThis is useful when you are performing maintenance on the cluster and need to prevent ILM from performing any actions on your indices.\n\nThe API returns as soon as the stop request has been acknowledged, but the plugin might continue to run until in-progress operations complete and the plugin can be safely stopped.\nUse the get ILM status API to check whether ILM is running.",
       "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/current/ilm-stop.html",
       "name": "ilm.stop",
+      "privileges": {
+        "cluster": [
+          "manage_ilm"
+        ]
+      },
       "request": {
         "name": "Request",
         "namespace": "ilm.stop"
@@ -5868,6 +5950,7 @@
         }
       },
       "description": "Index a document.\nAdds a JSON document to the specified data stream or index and makes it searchable.\nIf the target is an index and the document already exists, the request updates the document and increments its version.",
+      "docTag": "document",
       "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/master/docs-index_.html",
       "name": "index",
       "request": {
@@ -5946,7 +6029,7 @@
           "stability": "stable"
         }
       },
-      "description": "Performs analysis on a text string and returns the resulting tokens.",
+      "description": "Get tokens from text analysis.\nThe analyze API performs [analysis](https://www.elastic.co/guide/en/elasticsearch/reference/current/analysis.html) on a text string and returns the resulting tokens.",
       "docId": "indices-analyze",
       "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/indices-analyze.html",
       "name": "indices.analyze",
@@ -6148,6 +6231,7 @@
         }
       },
       "description": "Create a data stream.\nCreates a data stream.\nYou must have a matching index template with data stream enabled.",
+      "docTag": "data stream",
       "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/master/data-streams.html",
       "name": "indices.create_data_stream",
       "privileges": {
@@ -6188,6 +6272,7 @@
         }
       },
       "description": "Get data stream stats.\nRetrieves statistics for one or more data streams.",
+      "docTag": "data stream",
       "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/master/data-streams.html",
       "name": "indices.data_streams_stats",
       "privileges": {
@@ -6607,7 +6692,7 @@
           "stability": "stable"
         }
       },
-      "description": "Returns information about whether a particular index template exists.",
+      "description": "Check index templates.\nCheck whether index templates exist.",
       "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/master/index-templates.html",
       "name": "indices.exists_index_template",
       "request": {
@@ -6672,7 +6757,7 @@
           "stability": "stable"
         }
       },
-      "description": "Get the status for a data stream lifecycle.\nRetrieves information about an index or data stream’s current data stream lifecycle status, such as time since index creation, time since rollover, the lifecycle configuration managing the index, or any errors encountered during lifecycle execution.",
+      "description": "Get the status for a data stream lifecycle.\nGet information about an index or data stream's current data stream lifecycle status, such as time since index creation, time since rollover, the lifecycle configuration managing the index, or any errors encountered during lifecycle execution.",
       "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/current/data-streams-explain-lifecycle.html",
       "name": "indices.explain_data_lifecycle",
       "request": {
@@ -6924,6 +7009,7 @@
         }
       },
       "description": "Get data stream lifecycles.\nRetrieves the data stream lifecycle configuration of one or more data streams.",
+      "docTag": "data stream",
       "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/master/data-streams-get-lifecycle.html",
       "name": "indices.get_data_lifecycle",
       "request": {
@@ -6959,6 +7045,7 @@
         }
       },
       "description": "Get data streams.\nRetrieves information about one or more data streams.",
+      "docTag": "data stream",
       "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/master/data-streams.html",
       "name": "indices.get_data_stream",
       "privileges": {
@@ -7223,6 +7310,7 @@
         }
       },
       "description": "Convert an index alias to a data stream.\nConverts an index alias to a data stream.\nYou must have a matching index template that is data stream enabled.\nThe alias must meet the following criteria:\nThe alias must have a write index;\nAll indices for the alias must have a `@timestamp` field mapping of a `date` or `date_nanos` field type;\nThe alias must not have any filters;\nThe alias must not use custom routing.\nIf successful, the request removes the alias and creates a data stream with the same name.\nThe indices for the alias become hidden backing indices for the stream.\nThe write index for the alias becomes the write index for the stream.",
+      "docTag": "data stream",
       "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/master/data-streams.html",
       "name": "indices.migrate_to_data_stream",
       "privileges": {
@@ -7263,6 +7351,7 @@
         }
       },
       "description": "Update data streams.\nPerforms one or more data stream modification actions in a single atomic operation.",
+      "docTag": "data stream",
       "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/master/data-streams.html",
       "name": "indices.modify_data_stream",
       "request": {
@@ -7418,6 +7507,9 @@
         "namespace": "indices.put_data_lifecycle"
       },
       "requestBodyRequired": false,
+      "requestMediaType": [
+        "application/json"
+      ],
       "response": {
         "name": "Response",
         "namespace": "indices.put_data_lifecycle"
@@ -7753,7 +7845,7 @@
           "stability": "stable"
         }
       },
-      "description": "Resolves the specified name(s) and/or index patterns for indices, aliases, and data streams.\nMultiple patterns and remote clusters are supported.",
+      "description": "Resolve indices.\nResolve the names and/or index patterns for indices, aliases, and data streams.\nMultiple patterns and remote clusters are supported.",
       "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-resolve-index-api.html",
       "name": "indices.resolve_index",
       "request": {
@@ -8238,12 +8330,12 @@
     {
       "availability": {
         "serverless": {
-          "stability": "experimental",
+          "stability": "stable",
           "visibility": "public"
         },
         "stack": {
           "since": "8.11.0",
-          "stability": "experimental",
+          "stability": "stable",
           "visibility": "public"
         }
       },
@@ -8280,12 +8372,12 @@
     {
       "availability": {
         "serverless": {
-          "stability": "experimental",
+          "stability": "stable",
           "visibility": "public"
         },
         "stack": {
           "since": "8.11.0",
-          "stability": "experimental",
+          "stability": "stable",
           "visibility": "public"
         }
       },
@@ -8328,12 +8420,12 @@
     {
       "availability": {
         "serverless": {
-          "stability": "experimental",
+          "stability": "stable",
           "visibility": "public"
         },
         "stack": {
           "since": "8.11.0",
-          "stability": "experimental",
+          "stability": "stable",
           "visibility": "public"
         }
       },
@@ -8373,12 +8465,12 @@
     {
       "availability": {
         "serverless": {
-          "stability": "experimental",
+          "stability": "stable",
           "visibility": "public"
         },
         "stack": {
           "since": "8.11.0",
-          "stability": "experimental",
+          "stability": "stable",
           "visibility": "public"
         }
       },
@@ -8415,6 +8507,40 @@
         }
       ]
     },
+    {
+      "availability": {
+        "stack": {
+          "stability": "stable",
+          "visibility": "public"
+        }
+      },
+      "description": "Perform streaming inference",
+      "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/master/post-stream-inference-api.html",
+      "name": "inference.stream_inference",
+      "request": null,
+      "requestBodyRequired": false,
+      "requestMediaType": [
+        "application/json"
+      ],
+      "response": null,
+      "responseMediaType": [
+        "text/event-stream"
+      ],
+      "urls": [
+        {
+          "methods": [
+            "POST"
+          ],
+          "path": "/_inference/{inference_id}/_stream"
+        },
+        {
+          "methods": [
+            "POST"
+          ],
+          "path": "/_inference/{task_type}/{inference_id}/_stream"
+        }
+      ]
+    },
     {
       "availability": {
         "serverless": {
@@ -8459,8 +8585,8 @@
           "stability": "stable"
         }
       },
-      "description": "Deletes a geoip database configuration.",
-      "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/master/TODO.html",
+      "description": "Delete GeoIP database configurations.\nDelete one or more IP geolocation database configurations.",
+      "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/master/delete-geoip-database-api.html",
       "name": "ingest.delete_geoip_database",
       "request": {
         "name": "Request",
@@ -8483,6 +8609,40 @@
         }
       ]
     },
+    {
+      "availability": {
+        "serverless": {
+          "visibility": "private"
+        },
+        "stack": {
+          "since": "8.15.0",
+          "stability": "stable"
+        }
+      },
+      "description": "Deletes an IP location database configuration.",
+      "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/master/delete-ip-location-database-api.html",
+      "name": "ingest.delete_ip_location_database",
+      "request": {
+        "name": "Request",
+        "namespace": "ingest.delete_ip_location_database"
+      },
+      "requestBodyRequired": false,
+      "response": {
+        "name": "Response",
+        "namespace": "ingest.delete_ip_location_database"
+      },
+      "responseMediaType": [
+        "application/json"
+      ],
+      "urls": [
+        {
+          "methods": [
+            "DELETE"
+          ],
+          "path": "/_ingest/ip_location/database/{id}"
+        }
+      ]
+    },
     {
       "availability": {
         "serverless": {
@@ -8494,8 +8654,10 @@
           "stability": "stable"
         }
       },
-      "description": "Deletes one or more existing ingest pipeline.",
+      "description": "Delete pipelines.\nDelete one or more ingest pipelines.",
       "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/master/delete-pipeline-api.html",
+      "extDocId": "ingest",
+      "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/ingest.html",
       "name": "ingest.delete_pipeline",
       "request": {
         "name": "Request",
@@ -8529,9 +8691,11 @@
           "stability": "stable"
         }
       },
-      "description": "Gets download statistics for GeoIP2 databases used with the geoip processor.",
+      "description": "Get GeoIP statistics.\nGet download statistics for GeoIP2 databases that are used with the GeoIP processor.",
       "docId": "geoip-processor",
       "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/geoip-processor.html",
+      "extDocId": "geoip-processor",
+      "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/geoip-processor.html",
       "name": "ingest.geo_ip_stats",
       "request": {
         "name": "Request",
@@ -8564,8 +8728,8 @@
           "stability": "stable"
         }
       },
-      "description": "Returns information about one or more geoip database configurations.",
-      "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/master/TODO.html",
+      "description": "Get GeoIP database configurations.\nGet information about one or more IP geolocation database configurations.",
+      "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/master/get-geoip-database-api.html",
       "name": "ingest.get_geoip_database",
       "request": {
         "name": "Request",
@@ -8594,6 +8758,46 @@
         }
       ]
     },
+    {
+      "availability": {
+        "serverless": {
+          "visibility": "private"
+        },
+        "stack": {
+          "since": "8.15.0",
+          "stability": "stable"
+        }
+      },
+      "description": "Returns information about one or more IP location database configurations.",
+      "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/master/get-ip-location-database-api.html",
+      "name": "ingest.get_ip_location_database",
+      "request": {
+        "name": "Request",
+        "namespace": "ingest.get_ip_location_database"
+      },
+      "requestBodyRequired": false,
+      "response": {
+        "name": "Response",
+        "namespace": "ingest.get_ip_location_database"
+      },
+      "responseMediaType": [
+        "application/json"
+      ],
+      "urls": [
+        {
+          "methods": [
+            "GET"
+          ],
+          "path": "/_ingest/ip_location/database"
+        },
+        {
+          "methods": [
+            "GET"
+          ],
+          "path": "/_ingest/ip_location/database/{id}"
+        }
+      ]
+    },
     {
       "availability": {
         "serverless": {
@@ -8605,8 +8809,10 @@
           "stability": "stable"
         }
       },
-      "description": "Returns information about one or more ingest pipelines.\nThis API returns a local reference of the pipeline.",
+      "description": "Get pipelines.\nGet information about one or more ingest pipelines.\nThis API returns a local reference of the pipeline.",
       "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/master/get-pipeline-api.html",
+      "extDocId": "ingest",
+      "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/ingest.html",
       "name": "ingest.get_pipeline",
       "request": {
         "name": "Request",
@@ -8646,9 +8852,11 @@
           "stability": "stable"
         }
       },
-      "description": "Extracts structured fields out of a single text field within a document.\nYou choose which field to extract matched fields from, as well as the grok pattern you expect will match.\nA grok pattern is like a regular expression that supports aliased expressions that can be reused.",
+      "description": "Run a grok processor.\nExtract structured fields out of a single text field within a document.\nYou must choose which field to extract matched fields from, as well as the grok pattern you expect will match.\nA grok pattern is like a regular expression that supports aliased expressions that can be reused.",
       "docId": "grok-processor",
       "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/grok-processor.html",
+      "extDocId": "grok-processor",
+      "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/grok-processor.html",
       "name": "ingest.processor_grok",
       "request": {
         "name": "Request",
@@ -8681,8 +8889,8 @@
           "stability": "stable"
         }
       },
-      "description": "Returns information about one or more geoip database configurations.",
-      "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/master/TODO.html",
+      "description": "Create or update GeoIP database configurations.\nCreate or update IP geolocation database configurations.",
+      "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/master/put-geoip-database-api.html",
       "name": "ingest.put_geoip_database",
       "request": {
         "name": "Request",
@@ -8708,6 +8916,43 @@
         }
       ]
     },
+    {
+      "availability": {
+        "serverless": {
+          "visibility": "private"
+        },
+        "stack": {
+          "since": "8.15.0",
+          "stability": "stable"
+        }
+      },
+      "description": "Returns information about one or more IP location database configurations.",
+      "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/master/put-ip-location-database-api.html",
+      "name": "ingest.put_ip_location_database",
+      "request": {
+        "name": "Request",
+        "namespace": "ingest.put_ip_location_database"
+      },
+      "requestBodyRequired": true,
+      "requestMediaType": [
+        "application/json"
+      ],
+      "response": {
+        "name": "Response",
+        "namespace": "ingest.put_ip_location_database"
+      },
+      "responseMediaType": [
+        "application/json"
+      ],
+      "urls": [
+        {
+          "methods": [
+            "PUT"
+          ],
+          "path": "/_ingest/ip_location/database/{id}"
+        }
+      ]
+    },
     {
       "availability": {
         "serverless": {
@@ -8719,9 +8964,11 @@
           "stability": "stable"
         }
       },
-      "description": "Creates or updates an ingest pipeline.\nChanges made using this API take effect immediately.",
+      "description": "Create or update a pipeline.\nChanges made using this API take effect immediately.",
       "docId": "ingest",
       "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/ingest.html",
+      "extDocId": "ingest",
+      "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/ingest.html",
       "name": "ingest.put_pipeline",
       "request": {
         "name": "Request",
@@ -8758,7 +9005,7 @@
           "stability": "stable"
         }
       },
-      "description": "Executes an ingest pipeline against a set of provided documents.",
+      "description": "Simulate a pipeline.\nRun an ingest pipeline against a set of provided documents.\nYou can either specify an existing pipeline to use with the provided documents or supply a pipeline definition in the body of the request.",
       "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/master/simulate-pipeline-api.html",
       "name": "ingest.simulate",
       "request": {
@@ -8801,10 +9048,11 @@
         }
       },
       "deprecation": {
-        "description": "",
+        "description": "The kNN search API has been replaced by the `knn` option in the search API.",
         "version": "8.4.0"
       },
-      "description": "Performs a kNN search.",
+      "description": "Run a knn search.\n\nNOTE: The kNN search API has been replaced by the `knn` option in the search API.\n\nPerform a k-nearest neighbor (kNN) search on a dense_vector field and return the matching documents.\nGiven a query vector, the API finds the k closest vectors and returns those documents as search hits.\n\nElasticsearch uses the HNSW algorithm to support efficient kNN search.\nLike most kNN algorithms, HNSW is an approximate method that sacrifices result accuracy for improved search speed.\nThis means the results returned are not always the true k closest neighbors.\n\nThe kNN search API supports restricting the search using a filter.\nThe search will return the top k documents that also match the filter query.",
+      "docTag": "search",
       "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/master/search-search.html",
       "name": "knn_search",
       "request": {
@@ -9204,7 +9452,8 @@
           "stability": "stable"
         }
       },
-      "description": "Allows to get multiple documents in one request.",
+      "description": "Get multiple documents.\n\nGet multiple JSON documents by ID from one or more indices.\nIf you specify an index in the request URI, you only need to specify the document IDs in the request body.\nTo ensure fast responses, this multi get (mget) API responds with partial results if one or more shards fail.",
+      "docTag": "document",
       "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/master/docs-multi-get.html",
       "name": "mget",
       "privileges": {
@@ -9365,6 +9614,7 @@
         }
       },
       "description": "Clear trained model deployment cache.\nCache will be cleared on all nodes where the trained model is assigned.\nA trained model deployment may have an inference cache enabled.\nAs requests are handled by each allocated node, their responses may be cached on that individual node.\nCalling this API clears the caches without restarting the deployment.",
+      "docTag": "ml trained model",
       "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/master/clear-trained-model-deployment-cache.html",
       "name": "ml.clear_trained_model_deployment_cache",
       "privileges": {
@@ -9409,6 +9659,7 @@
       },
       "description": "Close anomaly detection jobs.\nA job can be opened and closed multiple times throughout its lifecycle. A closed job cannot receive data or perform analysis operations, but you can still explore and navigate results.\nWhen you close a job, it runs housekeeping tasks such as pruning the model history, flushing buffers, calculating final results and persisting the model snapshots. Depending upon the size of the job, it could take several minutes to close and the equivalent time to re-open. After it is closed, the job has a minimal overhead on the cluster except for maintaining its meta data. Therefore it is a best practice to close jobs that are no longer required to process data.\nIf you close an anomaly detection job whose datafeed is running, the request first tries to stop the datafeed. This behavior is equivalent to calling stop datafeed API with the same timeout and force parameters as the close job request.\nWhen a datafeed that has a specified end date stops, it automatically closes its associated job.",
       "docId": "ml-close-job",
+      "docTag": "ml anomaly",
       "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/ml-close-job.html",
       "name": "ml.close_job",
       "privileges": {
@@ -9453,6 +9704,7 @@
       },
       "description": "Delete a calendar.\nRemoves all scheduled events from a calendar, then deletes it.",
       "docId": "ml-delete-calendar",
+      "docTag": "ml anomaly",
       "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/ml-delete-calendar.html",
       "name": "ml.delete_calendar",
       "privileges": {
@@ -9494,6 +9746,7 @@
       },
       "description": "Delete events from a calendar.",
       "docId": "ml-delete-calendar-event",
+      "docTag": "ml anomaly",
       "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/ml-delete-calendar-event.html",
       "name": "ml.delete_calendar_event",
       "request": {
@@ -9530,6 +9783,7 @@
       },
       "description": "Delete anomaly jobs from a calendar.",
       "docId": "ml-delete-calendar-job",
+      "docTag": "ml anomaly",
       "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/ml-delete-calendar-job.html",
       "name": "ml.delete_calendar_job",
       "privileges": {
@@ -9571,6 +9825,7 @@
       },
       "description": "Delete a data frame analytics job.",
       "docId": "ml-delete-dfanalytics",
+      "docTag": "ml data frame",
       "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/delete-dfanalytics.html",
       "name": "ml.delete_data_frame_analytics",
       "privileges": {
@@ -9612,6 +9867,7 @@
       },
       "description": "Delete a datafeed.",
       "docId": "ml-delete-datafeed",
+      "docTag": "ml anomaly",
       "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/ml-delete-datafeed.html",
       "name": "ml.delete_datafeed",
       "privileges": {
@@ -9652,6 +9908,7 @@
         }
       },
       "description": "Delete expired ML data.\nDeletes all job results, model snapshots and forecast data that have exceeded\ntheir retention days period. Machine learning state documents that are not\nassociated with any job are also deleted.\nYou can limit the request to a single or set of anomaly detection jobs by\nusing a job identifier, a group name, a comma-separated list of jobs, or a\nwildcard expression. You can delete expired data for all anomaly detection\njobs by using _all, by specifying * as the <job_id>, or by omitting the\n<job_id>.",
+      "docTag": "ml anomaly",
       "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/current/ml-delete-expired-data.html",
       "name": "ml.delete_expired_data",
       "privileges": {
@@ -9701,6 +9958,7 @@
         }
       },
       "description": "Delete a filter.\nIf an anomaly detection job references the filter, you cannot delete the\nfilter. You must update or delete the job before you can delete the filter.",
+      "docTag": "ml anomaly",
       "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/current/ml-delete-filter.html",
       "name": "ml.delete_filter",
       "privileges": {
@@ -9741,6 +9999,7 @@
         }
       },
       "description": "Delete forecasts from a job.\nBy default, forecasts are retained for 14 days. You can specify a\ndifferent retention period with the `expires_in` parameter in the forecast\njobs API. The delete forecast API enables you to delete one or more\nforecasts before they expire.",
+      "docTag": "ml anomaly",
       "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/current/ml-delete-forecast.html",
       "name": "ml.delete_forecast",
       "privileges": {
@@ -9787,6 +10046,7 @@
         }
       },
       "description": "Delete an anomaly detection job.\nAll job configuration, model state and results are deleted.\nIt is not currently possible to delete multiple jobs using wildcards or a\ncomma separated list. If you delete a job that has a datafeed, the request\nfirst tries to delete the datafeed. This behavior is equivalent to calling\nthe delete datafeed API with the same timeout and force parameters as the\ndelete job request.",
+      "docTag": "ml anomaly",
       "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/current/ml-delete-job.html",
       "name": "ml.delete_job",
       "privileges": {
@@ -9827,6 +10087,7 @@
         }
       },
       "description": "Delete a model snapshot.\nYou cannot delete the active model snapshot. To delete that snapshot, first\nrevert to a different one. To identify the active model snapshot, refer to\nthe `model_snapshot_id` in the results from the get jobs API.",
+      "docTag": "ml anomaly",
       "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/current/ml-delete-snapshot.html",
       "name": "ml.delete_model_snapshot",
       "privileges": {
@@ -9867,6 +10128,7 @@
         }
       },
       "description": "Delete an unreferenced trained model.\nThe request deletes a trained inference model that is not referenced by an ingest pipeline.",
+      "docTag": "ml trained model",
       "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/current/delete-trained-models.html",
       "name": "ml.delete_trained_model",
       "privileges": {
@@ -9907,6 +10169,7 @@
         }
       },
       "description": "Delete a trained model alias.\nThis API deletes an existing model alias that refers to a trained model. If\nthe model alias is missing or refers to a model other than the one identified\nby the `model_id`, this API returns an error.",
+      "docTag": "ml trained model",
       "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/current/delete-trained-models-aliases.html",
       "name": "ml.delete_trained_model_alias",
       "privileges": {
@@ -9950,6 +10213,7 @@
         }
       },
       "description": "Estimate job model memory usage.\nMakes an estimation of the memory usage for an anomaly detection job model.\nIt is based on analysis configuration details for the job and cardinality\nestimates for the fields it references.",
+      "docTag": "ml anomaly",
       "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/current/ml-apis.html",
       "name": "ml.estimate_model_memory",
       "privileges": {
@@ -9993,6 +10257,7 @@
         }
       },
       "description": "Evaluate data frame analytics.\nThe API packages together commonly used evaluation metrics for various types\nof machine learning features. This has been designed for use on indexes\ncreated by data frame analytics. Evaluation requires both a ground truth\nfield and an analytics result field to be present.",
+      "docTag": "ml data frame",
       "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/current/evaluate-dfanalytics.html",
       "name": "ml.evaluate_data_frame",
       "privileges": {
@@ -10036,6 +10301,7 @@
         }
       },
       "description": "Explain data frame analytics config.\nThis API provides explanations for a data frame analytics config that either\nexists already or one that has not been created yet. The following\nexplanations are provided:\n* which fields are included or not in the analysis and why,\n* how much memory is estimated to be required. The estimate can be used when deciding the appropriate value for model_memory_limit setting later on.\nIf you have object fields or fields that are excluded via source filtering, they are not included in the explanation.",
+      "docTag": "ml data frame",
       "docUrl": "http://www.elastic.co/guide/en/elasticsearch/reference/current/explain-dfanalytics.html",
       "name": "ml.explain_data_frame_analytics",
       "privileges": {
@@ -10087,6 +10353,7 @@
         }
       },
       "description": "Force buffered data to be processed.\nThe flush jobs API is only applicable when sending data for analysis using\nthe post data API. Depending on the content of the buffer, then it might\nadditionally calculate new results. Both flush and close operations are\nsimilar, however the flush is more efficient if you are expecting to send\nmore data for analysis. When flushing, the job remains open and is available\nto continue analyzing data. A close operation additionally prunes and\npersists the model state to disk and the job must be opened again before\nanalyzing further data.",
+      "docTag": "ml anomaly",
       "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/current/ml-flush-job.html",
       "name": "ml.flush_job",
       "privileges": {
@@ -10130,6 +10397,7 @@
         }
       },
       "description": "Predict future behavior of a time series.\n\nForecasts are not supported for jobs that perform population analysis; an\nerror occurs if you try to create a forecast for a job that has an\n`over_field_name` in its configuration. Forcasts predict future behavior\nbased on historical data.",
+      "docTag": "ml anomaly",
       "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/current/ml-forecast.html",
       "name": "ml.forecast",
       "privileges": {
@@ -10173,6 +10441,7 @@
         }
       },
       "description": "Get anomaly detection job results for buckets.\nThe API presents a chronological view of the records, grouped by bucket.",
+      "docTag": "ml anomaly",
       "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/current/ml-get-bucket.html",
       "name": "ml.get_buckets",
       "privileges": {
@@ -10224,6 +10493,7 @@
         }
       },
       "description": "Get info about events in calendars.",
+      "docTag": "ml anomaly",
       "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/current/ml-get-calendar-event.html",
       "name": "ml.get_calendar_events",
       "privileges": {
@@ -10264,6 +10534,7 @@
         }
       },
       "description": "Get calendar configuration info.",
+      "docTag": "ml anomaly",
       "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/current/ml-get-calendar.html",
       "name": "ml.get_calendars",
       "privileges": {
@@ -10315,6 +10586,7 @@
         }
       },
       "description": "Get anomaly detection job results for categories.",
+      "docTag": "ml anomaly",
       "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/current/ml-get-category.html",
       "name": "ml.get_categories",
       "privileges": {
@@ -10366,6 +10638,7 @@
         }
       },
       "description": "Get data frame analytics job configuration info.\nYou can get information for multiple data frame analytics jobs in a single\nAPI request by using a comma-separated list of data frame analytics jobs or a\nwildcard expression.",
+      "docTag": "ml data frame",
       "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/current/get-dfanalytics.html",
       "name": "ml.get_data_frame_analytics",
       "privileges": {
@@ -10411,7 +10684,8 @@
           "stability": "stable"
         }
       },
-      "description": "Get data frame analytics jobs usage info.",
+      "description": "Get data frame analytics job stats.",
+      "docTag": "ml data frame",
       "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/current/get-dfanalytics-stats.html",
       "name": "ml.get_data_frame_analytics_stats",
       "privileges": {
@@ -10457,7 +10731,8 @@
           "stability": "stable"
         }
       },
-      "description": "Get datafeeds usage info.\nYou can get statistics for multiple datafeeds in a single API request by\nusing a comma-separated list of datafeeds or a wildcard expression. You can\nget statistics for all datafeeds by using `_all`, by specifying `*` as the\n`<feed_id>`, or by omitting the `<feed_id>`. If the datafeed is stopped, the\nonly information you receive is the `datafeed_id` and the `state`.\nThis API returns a maximum of 10,000 datafeeds.",
+      "description": "Get datafeeds stats.\nYou can get statistics for multiple datafeeds in a single API request by\nusing a comma-separated list of datafeeds or a wildcard expression. You can\nget statistics for all datafeeds by using `_all`, by specifying `*` as the\n`<feed_id>`, or by omitting the `<feed_id>`. If the datafeed is stopped, the\nonly information you receive is the `datafeed_id` and the `state`.\nThis API returns a maximum of 10,000 datafeeds.",
+      "docTag": "ml anomaly",
       "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/current/ml-get-datafeed-stats.html",
       "name": "ml.get_datafeed_stats",
       "privileges": {
@@ -10504,6 +10779,7 @@
         }
       },
       "description": "Get datafeeds configuration info.\nYou can get information for multiple datafeeds in a single API request by\nusing a comma-separated list of datafeeds or a wildcard expression. You can\nget information for all datafeeds by using `_all`, by specifying `*` as the\n`<feed_id>`, or by omitting the `<feed_id>`.\nThis API returns a maximum of 10,000 datafeeds.",
+      "docTag": "ml anomaly",
       "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/current/ml-get-datafeed.html",
       "name": "ml.get_datafeeds",
       "privileges": {
@@ -10550,6 +10826,7 @@
         }
       },
       "description": "Get filters.\nYou can get a single filter or all filters.",
+      "docTag": "ml anomaly",
       "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/current/ml-get-filter.html",
       "name": "ml.get_filters",
       "privileges": {
@@ -10596,6 +10873,7 @@
         }
       },
       "description": "Get anomaly detection job results for influencers.\nInfluencers are the entities that have contributed to, or are to blame for,\nthe anomalies. Influencer results are available only if an\n`influencer_field_name` is specified in the job configuration.",
+      "docTag": "ml anomaly",
       "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/current/ml-get-influencer.html",
       "name": "ml.get_influencers",
       "privileges": {
@@ -10639,7 +10917,8 @@
           "stability": "stable"
         }
       },
-      "description": "Get anomaly detection jobs usage info.",
+      "description": "Get anomaly detection job stats.",
+      "docTag": "ml anomaly",
       "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/current/ml-get-job-stats.html",
       "name": "ml.get_job_stats",
       "privileges": {
@@ -10686,6 +10965,7 @@
         }
       },
       "description": "Get anomaly detection jobs configuration info.\nYou can get information for multiple anomaly detection jobs in a single API\nrequest by using a group name, a comma-separated list of jobs, or a wildcard\nexpression. You can get information for all anomaly detection jobs by using\n`_all`, by specifying `*` as the `<job_id>`, or by omitting the `<job_id>`.",
+      "docTag": "ml anomaly",
       "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/current/ml-get-job.html",
       "name": "ml.get_jobs",
       "privileges": {
@@ -10778,6 +11058,7 @@
         }
       },
       "description": "Get anomaly detection job model snapshot upgrade usage info.",
+      "docTag": "ml anomaly",
       "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/current/ml-get-job-model-snapshot-upgrade-stats.html",
       "name": "ml.get_model_snapshot_upgrade_stats",
       "privileges": {
@@ -10818,6 +11099,7 @@
         }
       },
       "description": "Get model snapshots info.",
+      "docTag": "ml anomaly",
       "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/current/ml-get-snapshot.html",
       "name": "ml.get_model_snapshots",
       "privileges": {
@@ -10869,6 +11151,7 @@
         }
       },
       "description": "Get overall bucket results.\n\nRetrievs overall bucket results that summarize the bucket results of\nmultiple anomaly detection jobs.\n\nThe `overall_score` is calculated by combining the scores of all the\nbuckets within the overall bucket span. First, the maximum\n`anomaly_score` per anomaly detection job in the overall bucket is\ncalculated. Then the `top_n` of those scores are averaged to result in\nthe `overall_score`. This means that you can fine-tune the\n`overall_score` so that it is more or less sensitive to the number of\njobs that detect an anomaly at the same time. For example, if you set\n`top_n` to `1`, the `overall_score` is the maximum bucket score in the\noverall bucket. Alternatively, if you set `top_n` to the number of jobs,\nthe `overall_score` is high only when all jobs detect anomalies in that\noverall bucket. If you set the `bucket_span` parameter (to a value\ngreater than its default), the `overall_score` is the maximum\n`overall_score` of the overall buckets that have a span equal to the\njobs' largest bucket span.",
+      "docTag": "ml anomaly",
       "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/current/ml-get-overall-buckets.html",
       "name": "ml.get_overall_buckets",
       "privileges": {
@@ -10913,6 +11196,7 @@
         }
       },
       "description": "Get anomaly records for an anomaly detection job.\nRecords contain the detailed analytical results. They describe the anomalous\nactivity that has been identified in the input data based on the detector\nconfiguration.\nThere can be many anomaly records depending on the characteristics and size\nof the input data. In practice, there are often too many to be able to\nmanually process them. The machine learning features therefore perform a\nsophisticated aggregation of the anomaly records into buckets.\nThe number of record results depends on the number of anomalies found in each\nbucket, which relates to the number of time series being modeled and the\nnumber of detectors.",
+      "docTag": "ml anomaly",
       "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/current/ml-get-record.html",
       "name": "ml.get_records",
       "privileges": {
@@ -10957,6 +11241,7 @@
         }
       },
       "description": "Get trained model configuration info.",
+      "docTag": "ml trained model",
       "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/current/get-trained-models.html",
       "name": "ml.get_trained_models",
       "privileges": {
@@ -11003,6 +11288,7 @@
         }
       },
       "description": "Get trained models usage info.\nYou can get usage information for multiple trained\nmodels in a single API request by using a comma-separated list of model IDs or a wildcard expression.",
+      "docTag": "ml trained model",
       "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/current/get-trained-models-stats.html",
       "name": "ml.get_trained_models_stats",
       "privileges": {
@@ -11049,6 +11335,7 @@
         }
       },
       "description": "Evaluate a trained model.",
+      "docTag": "ml trained model",
       "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/master/infer-trained-model.html",
       "name": "ml.infer_trained_model",
       "request": {
@@ -11137,6 +11424,7 @@
         }
       },
       "description": "Open anomaly detection jobs.\nAn anomaly detection job must be opened to be ready to receive and analyze\ndata. It can be opened and closed multiple times throughout its lifecycle.\nWhen you open a new job, it starts with an empty model.\nWhen you open an existing job, the most recent model state is automatically\nloaded. The job is ready to resume its analysis from where it left off, once\nnew data is received.",
+      "docTag": "ml anomaly",
       "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/current/ml-open-job.html",
       "name": "ml.open_job",
       "privileges": {
@@ -11180,6 +11468,7 @@
         }
       },
       "description": "Add scheduled events to the calendar.",
+      "docTag": "ml anomaly",
       "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/current/ml-post-calendar-event.html",
       "name": "ml.post_calendar_events",
       "privileges": {
@@ -11223,6 +11512,7 @@
         "version": "7.11.0"
       },
       "description": "Send data to an anomaly detection job for analysis.\n\nIMPORTANT: For each job, data can be accepted from only a single connection at a time.\nIt is not currently possible to post data to multiple jobs using wildcards or a comma-separated list.",
+      "docTag": "ml anomaly",
       "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/current/ml-post-data.html",
       "name": "ml.post_data",
       "privileges": {
@@ -11267,6 +11557,7 @@
         }
       },
       "description": "Preview features used by data frame analytics.\nPreviews the extracted features used by a data frame analytics config.",
+      "docTag": "ml data frame",
       "docUrl": "http://www.elastic.co/guide/en/elasticsearch/reference/current/preview-dfanalytics.html",
       "name": "ml.preview_data_frame_analytics",
       "privileges": {
@@ -11318,6 +11609,7 @@
         }
       },
       "description": "Preview a datafeed.\nThis API returns the first \"page\" of search results from a datafeed.\nYou can preview an existing datafeed or provide configuration details for a datafeed\nand anomaly detection job in the API. The preview shows the structure of the data\nthat will be passed to the anomaly detection engine.\nIMPORTANT: When Elasticsearch security features are enabled, the preview uses the credentials of the user that\ncalled the API. However, when the datafeed starts it uses the roles of the last user that created or updated the\ndatafeed. To get a preview that accurately reflects the behavior of the datafeed, use the appropriate credentials.\nYou can also use secondary authorization headers to supply the credentials.",
+      "docTag": "ml anomaly",
       "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/current/ml-preview-datafeed.html",
       "name": "ml.preview_datafeed",
       "privileges": {
@@ -11372,6 +11664,7 @@
         }
       },
       "description": "Create a calendar.",
+      "docTag": "ml anomaly",
       "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/current/ml-put-calendar.html",
       "name": "ml.put_calendar",
       "privileges": {
@@ -11415,6 +11708,7 @@
         }
       },
       "description": "Add anomaly detection job to calendar.",
+      "docTag": "ml anomaly",
       "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/current/ml-put-calendar-job.html",
       "name": "ml.put_calendar_job",
       "privileges": {
@@ -11456,6 +11750,7 @@
       },
       "description": "Create a data frame analytics job.\nThis API creates a data frame analytics job that performs an analysis on the\nsource indices and stores the outcome in a destination index.",
       "docId": "put-dfanalytics",
+      "docTag": "ml data frame",
       "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/put-dfanalytics.html",
       "name": "ml.put_data_frame_analytics",
       "privileges": {
@@ -11506,6 +11801,7 @@
         }
       },
       "description": "Create a datafeed.\nDatafeeds retrieve data from Elasticsearch for analysis by an anomaly detection job.\nYou can associate only one datafeed with each anomaly detection job.\nThe datafeed contains a query that runs at a defined interval (`frequency`).\nIf you are concerned about delayed data, you can add a delay (`query_delay') at each interval.\nWhen Elasticsearch security features are enabled, your datafeed remembers which roles the user who created it had\nat the time of creation and runs the query using those same roles. If you provide secondary authorization headers,\nthose credentials are used instead.\nYou must use Kibana, this API, or the create anomaly detection jobs API to create a datafeed. Do not add a datafeed\ndirectly to the `.ml-config` index. Do not give users `write` privileges on the `.ml-config` index.",
+      "docTag": "ml anomaly",
       "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/current/ml-put-datafeed.html",
       "name": "ml.put_datafeed",
       "privileges": {
@@ -11552,6 +11848,7 @@
         }
       },
       "description": "Create a filter.\nA filter contains a list of strings. It can be used by one or more anomaly detection jobs.\nSpecifically, filters are referenced in the `custom_rules` property of detector configuration objects.",
+      "docTag": "ml anomaly",
       "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/current/ml-put-filter.html",
       "name": "ml.put_filter",
       "privileges": {
@@ -11595,6 +11892,7 @@
         }
       },
       "description": "Create an anomaly detection job.\nIf you include a `datafeed_config`, you must have read index privileges on the source index.",
+      "docTag": "ml anomaly",
       "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/current/ml-put-job.html",
       "name": "ml.put_job",
       "privileges": {
@@ -11641,6 +11939,7 @@
         }
       },
       "description": "Create a trained model.\nEnable you to supply a trained model that is not created by data frame analytics.",
+      "docTag": "ml trained model",
       "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/current/put-trained-models.html",
       "name": "ml.put_trained_model",
       "privileges": {
@@ -11684,6 +11983,7 @@
         }
       },
       "description": "Create or update a trained model alias.\nA trained model alias is a logical name used to reference a single trained\nmodel.\nYou can use aliases instead of trained model identifiers to make it easier to\nreference your models. For example, you can use aliases in inference\naggregations and processors.\nAn alias must be unique and refer to only a single trained model. However,\nyou can have multiple aliases for each trained model.\nIf you use this API to update an alias such that it references a different\ntrained model ID and the model uses a different type of data frame analytics,\nan error occurs. For example, this situation occurs if you have a trained\nmodel for regression analysis and a trained model for classification\nanalysis; you cannot reassign an alias from one type of trained model to\nanother.\nIf you use this API to update an alias and there are very few input fields in\ncommon between the old and new trained models for the model alias, the API\nreturns a warning.",
+      "docTag": "ml trained model",
       "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/current/put-trained-models-aliases.html",
       "name": "ml.put_trained_model_alias",
       "privileges": {
@@ -11727,6 +12027,7 @@
         }
       },
       "description": "Create part of a trained model definition.",
+      "docTag": "ml trained model",
       "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/current/put-trained-model-definition-part.html",
       "name": "ml.put_trained_model_definition_part",
       "privileges": {
@@ -11770,6 +12071,7 @@
         }
       },
       "description": "Create a trained model vocabulary.\nThis API is supported only for natural language processing (NLP) models.\nThe vocabulary is stored in the index as described in `inference_config.*.vocabulary` of the trained model definition.",
+      "docTag": "ml trained model",
       "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/current/put-trained-model-vocabulary.html",
       "name": "ml.put_trained_model_vocabulary",
       "privileges": {
@@ -11813,6 +12115,7 @@
         }
       },
       "description": "Reset an anomaly detection job.\nAll model state and results are deleted. The job is ready to start over as if\nit had just been created.\nIt is not currently possible to reset multiple jobs using wildcards or a\ncomma separated list.",
+      "docTag": "ml anomaly",
       "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/current/ml-reset-job.html",
       "name": "ml.reset_job",
       "privileges": {
@@ -11853,6 +12156,7 @@
         }
       },
       "description": "Revert to a snapshot.\nThe machine learning features react quickly to anomalous input, learning new\nbehaviors in data. Highly anomalous input increases the variance in the\nmodels whilst the system learns whether this is a new step-change in behavior\nor a one-off event. In the case where this anomalous input is known to be a\none-off, then it might be appropriate to reset the model state to a time\nbefore this event. For example, you might consider reverting to a saved\nsnapshot after Black Friday or a critical system failure.",
+      "docTag": "ml anomaly",
       "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/current/ml-revert-snapshot.html",
       "name": "ml.revert_model_snapshot",
       "privileges": {
@@ -11936,6 +12240,7 @@
         }
       },
       "description": "Start a data frame analytics job.\nA data frame analytics job can be started and stopped multiple times\nthroughout its lifecycle.\nIf the destination index does not exist, it is created automatically the\nfirst time you start the data frame analytics job. The\n`index.number_of_shards` and `index.number_of_replicas` settings for the\ndestination index are copied from the source index. If there are multiple\nsource indices, the destination index copies the highest setting values. The\nmappings for the destination index are also copied from the source indices.\nIf there are any mapping conflicts, the job fails to start.\nIf the destination index exists, it is used as is. You can therefore set up\nthe destination index in advance with custom settings and mappings.",
+      "docTag": "ml data frame",
       "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/current/start-dfanalytics.html",
       "name": "ml.start_data_frame_analytics",
       "privileges": {
@@ -11986,6 +12291,7 @@
         }
       },
       "description": "Start datafeeds.\n\nA datafeed must be started in order to retrieve data from Elasticsearch. A datafeed can be started and stopped\nmultiple times throughout its lifecycle.\n\nBefore you can start a datafeed, the anomaly detection job must be open. Otherwise, an error occurs.\n\nIf you restart a stopped datafeed, it continues processing input data from the next millisecond after it was stopped.\nIf new data was indexed for that exact millisecond between stopping and starting, it will be ignored.\n\nWhen Elasticsearch security features are enabled, your datafeed remembers which roles the last user to create or\nupdate it had at the time of creation or update and runs the query using those same roles. If you provided secondary\nauthorization headers when you created or updated the datafeed, those credentials are used instead.",
+      "docTag": "ml anomaly",
       "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/current/ml-start-datafeed.html",
       "name": "ml.start_datafeed",
       "privileges": {
@@ -12029,6 +12335,7 @@
         }
       },
       "description": "Start a trained model deployment.\nIt allocates the model to every machine learning node.",
+      "docTag": "ml trained model",
       "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/master/start-trained-model-deployment.html",
       "name": "ml.start_trained_model_deployment",
       "privileges": {
@@ -12072,6 +12379,7 @@
         }
       },
       "description": "Stop data frame analytics jobs.\nA data frame analytics job can be started and stopped multiple times\nthroughout its lifecycle.",
+      "docTag": "ml data frame",
       "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/current/stop-dfanalytics.html",
       "name": "ml.stop_data_frame_analytics",
       "privileges": {
@@ -12115,6 +12423,7 @@
         }
       },
       "description": "Stop datafeeds.\nA datafeed that is stopped ceases to retrieve data from Elasticsearch. A datafeed can be started and stopped\nmultiple times throughout its lifecycle.",
+      "docTag": "ml anomaly",
       "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/current/ml-stop-datafeed.html",
       "name": "ml.stop_datafeed",
       "privileges": {
@@ -12158,6 +12467,7 @@
         }
       },
       "description": "Stop a trained model deployment.",
+      "docTag": "ml trained model",
       "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/master/stop-trained-model-deployment.html",
       "name": "ml.stop_trained_model_deployment",
       "privileges": {
@@ -12201,6 +12511,7 @@
         }
       },
       "description": "Update a data frame analytics job.",
+      "docTag": "ml data frame",
       "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/current/update-dfanalytics.html",
       "name": "ml.update_data_frame_analytics",
       "privileges": {
@@ -12251,6 +12562,7 @@
         }
       },
       "description": "Update a datafeed.\nYou must stop and start the datafeed for the changes to be applied.\nWhen Elasticsearch security features are enabled, your datafeed remembers which roles the user who updated it had at\nthe time of the update and runs the query using those same roles. If you provide secondary authorization headers,\nthose credentials are used instead.",
+      "docTag": "ml anomaly",
       "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/current/ml-update-datafeed.html",
       "name": "ml.update_datafeed",
       "privileges": {
@@ -12294,6 +12606,7 @@
         }
       },
       "description": "Update a filter.\nUpdates the description of a filter, adds items, or removes items from the list.",
+      "docTag": "ml anomaly",
       "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/current/ml-update-filter.html",
       "name": "ml.update_filter",
       "privileges": {
@@ -12337,6 +12650,7 @@
         }
       },
       "description": "Update an anomaly detection job.\nUpdates certain properties of an anomaly detection job.",
+      "docTag": "ml anomaly",
       "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/current/ml-update-job.html",
       "name": "ml.update_job",
       "privileges": {
@@ -12380,6 +12694,7 @@
         }
       },
       "description": "Update a snapshot.\nUpdates certain properties of a snapshot.",
+      "docTag": "ml anomaly",
       "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/current/ml-update-snapshot.html",
       "name": "ml.update_model_snapshot",
       "privileges": {
@@ -12423,6 +12738,7 @@
         }
       },
       "description": "Update a trained model deployment.",
+      "docTag": "ml trained model",
       "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/current/update-trained-model-deployment.html",
       "name": "ml.update_trained_model_deployment",
       "privileges": {
@@ -12466,6 +12782,7 @@
         }
       },
       "description": "Upgrade a snapshot.\nUpgrades an anomaly detection model snapshot to the latest major version.\nOver time, older snapshot formats are deprecated and removed. Anomaly\ndetection jobs support only snapshots that are from the current or previous\nmajor version.\nThis API provides a means to upgrade a snapshot to the current major version.\nThis aids in preparing the cluster for an upgrade to the next major version.\nOnly one snapshot per anomaly detection job can be upgraded at a time and the\nupgraded snapshot cannot be the current snapshot of the anomaly detection\njob.",
+      "docTag": "ml anomaly",
       "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/current/ml-upgrade-job-model-snapshot.html",
       "name": "ml.upgrade_job_snapshot",
       "privileges": {
@@ -12629,7 +12946,8 @@
           "stability": "stable"
         }
       },
-      "description": "Allows to execute several search operations in one request.",
+      "description": "Run multiple searches.\n\nThe format of the request is similar to the bulk API format and makes use of the newline delimited JSON (NDJSON) format.\nThe structure is as follows:\n\n```\nheader\\n\nbody\\n\nheader\\n\nbody\\n\n```\n\nThis structure is specifically optimized to reduce parsing if a specific search ends up redirected to another node.\n\nIMPORTANT: The final line of data must end with a newline character `\\n`.\nEach newline character may be preceded by a carriage return `\\r`.\nWhen sending requests to this endpoint the `Content-Type` header should be set to `application/x-ndjson`.",
+      "docTag": "search",
       "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/master/search-multi-search.html",
       "name": "msearch",
       "privileges": {
@@ -12680,8 +12998,11 @@
           "stability": "stable"
         }
       },
-      "description": "Runs multiple templated searches with a single request.",
+      "description": "Run multiple templated searches.",
+      "docTag": "search",
       "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/current/search-multi-search.html",
+      "extDocId": "search-templates",
+      "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/search-template.html",
       "name": "msearch_template",
       "privileges": {
         "index": [
@@ -12730,7 +13051,8 @@
           "stability": "stable"
         }
       },
-      "description": "Returns multiple termvectors in one request.",
+      "description": "Get multiple term vectors.\n\nYou can specify existing documents by index and ID or provide artificial documents in the body of the request.\nYou can specify the index in the request body or request URI.\nThe response contains a `docs` array with all the fetched termvectors.\nEach element has the structure provided by the termvectors API.",
+      "docTag": "document",
       "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/master/docs-multi-termvectors.html",
       "name": "mtermvectors",
       "request": {
@@ -12776,7 +13098,8 @@
           "stability": "experimental"
         }
       },
-      "description": "You can use this API to clear the archived repositories metering information in the cluster.",
+      "description": "Clear the archived repositories metering.\nClear the archived repositories metering information in the cluster.",
+      "docTag": "cluster",
       "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/current/clear-repositories-metering-archive-api.html",
       "name": "nodes.clear_repositories_metering_archive",
       "privileges": {
@@ -12817,7 +13140,8 @@
           "stability": "experimental"
         }
       },
-      "description": "You can use the cluster repositories metering API to retrieve repositories metering information in a cluster.\nThis API exposes monotonically non-decreasing counters and it’s expected that clients would durably store the\ninformation needed to compute aggregations over a period of time. Additionally, the information exposed by this\nAPI is volatile, meaning that it won’t be present after node restarts.",
+      "description": "Get cluster repositories metering.\nGet repositories metering information for a cluster.\nThis API exposes monotonically non-decreasing counters and it is expected that clients would durably store the information needed to compute aggregations over a period of time.\nAdditionally, the information exposed by this API is volatile, meaning that it will not be present after node restarts.",
+      "docTag": "cluster",
       "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/current/get-repositories-metering-api.html",
       "name": "nodes.get_repositories_metering_info",
       "privileges": {
@@ -12857,8 +13181,9 @@
           "stability": "stable"
         }
       },
-      "description": "This API yields a breakdown of the hot threads on each selected node in the cluster.\nThe output is plain text with a breakdown of each node’s top hot threads.",
+      "description": "Get the hot threads for nodes.\nGet a breakdown of the hot threads on each selected node in the cluster.\nThe output is plain text with a breakdown of the top hot threads for each node.",
       "docId": "cluster-nodes-hot-threads",
+      "docTag": "cluster",
       "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/cluster-nodes-hot-threads.html",
       "name": "nodes.hot_threads",
       "privileges": {
@@ -12905,8 +13230,9 @@
           "stability": "stable"
         }
       },
-      "description": "Returns cluster nodes information.",
+      "description": "Get node information.\nBy default, the API returns all attributes and core settings for cluster nodes.",
       "docId": "cluster-nodes-info",
+      "docTag": "cluster",
       "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/cluster-nodes-info.html",
       "name": "nodes.info",
       "request": {
@@ -12955,7 +13281,8 @@
           "stability": "stable"
         }
       },
-      "description": "Reloads the keystore on nodes in the cluster.",
+      "description": "Reload the keystore on nodes in the cluster.\n\nSecure settings are stored in an on-disk keystore. Certain of these settings are reloadable.\nThat is, you can change them on disk and reload them without restarting any nodes in the cluster.\nWhen you have updated reloadable secure settings in your keystore, you can use this API to reload those settings on each node.\n\nWhen the Elasticsearch keystore is password protected and not simply obfuscated, you must provide the password for the keystore when you reload the secure settings.\nReloading the settings for the whole cluster assumes that the keystores for all nodes are protected with the same password; this method is allowed only when inter-node communications are encrypted.\nAlternatively, you can reload the secure settings on each node by locally accessing the API and passing the node-specific Elasticsearch keystore password.",
+      "docTag": "cluster",
       "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/master/secure-settings.html#reloadable-secure-settings",
       "name": "nodes.reload_secure_settings",
       "request": {
@@ -12998,8 +13325,9 @@
           "stability": "stable"
         }
       },
-      "description": "Returns cluster nodes statistics.",
+      "description": "Get node statistics.\nGet statistics for nodes in a cluster.\nBy default, all stats are returned. You can limit the returned information by using metrics.",
       "docId": "cluster-nodes-stats",
+      "docTag": "cluster",
       "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/cluster-nodes-stats.html",
       "name": "nodes.stats",
       "privileges": {
@@ -13070,8 +13398,9 @@
           "stability": "stable"
         }
       },
-      "description": "Returns information on the usage of features.",
+      "description": "Get feature usage information.",
       "docId": "cluster-nodes-usage",
+      "docTag": "cluster",
       "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/cluster-nodes-usage.html",
       "name": "nodes.usage",
       "privileges": {
@@ -13130,8 +13459,9 @@
           "stability": "stable"
         }
       },
-      "description": "A search request by default executes against the most recent visible data of the target indices,\nwhich is called point in time. Elasticsearch pit (point in time) is a lightweight view into the\nstate of the data as it existed when initiated. In some cases, it’s preferred to perform multiple\nsearch requests using the same point in time. For example, if refreshes happen between\n`search_after` requests, then the results of those requests might not be consistent as changes happening\nbetween searches are only visible to the more recent point in time.",
+      "description": "Open a point in time.\n\nA search request by default runs against the most recent visible data of the target indices,\nwhich is called point in time. Elasticsearch pit (point in time) is a lightweight view into the\nstate of the data as it existed when initiated. In some cases, it’s preferred to perform multiple\nsearch requests using the same point in time. For example, if refreshes happen between\n`search_after` requests, then the results of those requests might not be consistent as changes happening\nbetween searches are only visible to the more recent point in time.\n\nA point in time must be opened explicitly before being used in search requests.\nThe `keep_alive` parameter tells Elasticsearch how long it should persist.",
       "docId": "point-in-time-api",
+      "docTag": "search",
       "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/point-in-time-api.html",
       "name": "open_point_in_time",
       "privileges": {
@@ -13173,7 +13503,8 @@
           "stability": "stable"
         }
       },
-      "description": "Ping the cluster.\nReturns whether the cluster is running.",
+      "description": "Ping the cluster.\nGet information about whether the cluster is running.",
+      "docTag": "cluster",
       "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/current/index.html",
       "name": "ping",
       "request": {
@@ -13317,6 +13648,7 @@
         }
       },
       "description": "Create or update a script or search template.\nCreates or updates a stored script or search template.",
+      "docTag": "script",
       "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/master/modules-scripting.html",
       "name": "put_script",
       "request": {
@@ -13362,7 +13694,7 @@
           "stability": "stable"
         }
       },
-      "description": "Deletes a query rule within a query ruleset.",
+      "description": "Delete a query rule.\nDelete a query rule within a query ruleset.",
       "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/master/delete-query-rule.html",
       "name": "query_rules.delete_rule",
       "request": {
@@ -13397,7 +13729,7 @@
           "stability": "stable"
         }
       },
-      "description": "Deletes a query ruleset.",
+      "description": "Delete a query ruleset.",
       "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/master/delete-query-ruleset.html",
       "name": "query_rules.delete_ruleset",
       "request": {
@@ -13432,8 +13764,10 @@
           "stability": "stable"
         }
       },
-      "description": "Returns the details about a query rule within a query ruleset",
+      "description": "Get a query rule.\nGet details about a query rule within a query ruleset.",
       "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/master/get-query-rule.html",
+      "extDocId": "query-rule",
+      "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/search-using-query-rules.html",
       "name": "query_rules.get_rule",
       "request": {
         "name": "Request",
@@ -13467,7 +13801,7 @@
           "stability": "stable"
         }
       },
-      "description": "Returns the details about a query ruleset",
+      "description": "Get a query ruleset.\nGet details about a query ruleset.",
       "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/master/get-query-ruleset.html",
       "name": "query_rules.get_ruleset",
       "request": {
@@ -13502,7 +13836,7 @@
           "stability": "stable"
         }
       },
-      "description": "Returns summarized information about existing query rulesets.",
+      "description": "Get all query rulesets.\nGet summarized information about the query rulesets.",
       "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/master/list-query-rulesets.html",
       "name": "query_rules.list_rulesets",
       "request": {
@@ -13537,7 +13871,7 @@
           "stability": "stable"
         }
       },
-      "description": "Creates or updates a query rule within a query ruleset.",
+      "description": "Create or update a query rule.\nCreate or update a query rule within a query ruleset.",
       "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/master/put-query-rule.html",
       "name": "query_rules.put_rule",
       "request": {
@@ -13575,8 +13909,10 @@
           "stability": "stable"
         }
       },
-      "description": "Creates or updates a query ruleset.",
+      "description": "Create or update a query ruleset.",
       "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/master/put-query-ruleset.html",
+      "extDocId": "query-rule",
+      "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/search-using-query-rules.html",
       "name": "query_rules.put_ruleset",
       "request": {
         "name": "Request",
@@ -13602,6 +13938,44 @@
         }
       ]
     },
+    {
+      "availability": {
+        "serverless": {
+          "stability": "stable",
+          "visibility": "public"
+        },
+        "stack": {
+          "since": "8.10.0",
+          "stability": "stable"
+        }
+      },
+      "description": "Test a query ruleset.\nEvaluate match criteria against a query ruleset to identify the rules that would match that criteria.",
+      "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/master/test-query-ruleset.html",
+      "name": "query_rules.test",
+      "request": {
+        "name": "Request",
+        "namespace": "query_rules.test"
+      },
+      "requestBodyRequired": true,
+      "requestMediaType": [
+        "application/json"
+      ],
+      "response": {
+        "name": "Response",
+        "namespace": "query_rules.test"
+      },
+      "responseMediaType": [
+        "application/json"
+      ],
+      "urls": [
+        {
+          "methods": [
+            "POST"
+          ],
+          "path": "/_query_rules/{ruleset_id}/_test"
+        }
+      ]
+    },
     {
       "availability": {
         "serverless": {
@@ -13613,7 +13987,8 @@
           "stability": "stable"
         }
       },
-      "description": "Enables you to evaluate the quality of ranked search results over a set of typical search queries.",
+      "description": "Evaluate ranked search results.\n\nEvaluate the quality of ranked search results over a set of typical search queries.",
+      "docTag": "search",
       "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/master/search-rank-eval.html",
       "name": "rank_eval",
       "privileges": {
@@ -13665,6 +14040,7 @@
         }
       },
       "description": "Reindex documents.\nCopies documents from a source to a destination. The source can be any existing index, alias, or data stream. The destination must differ from the source. For example, you cannot reindex a data stream into itself.",
+      "docTag": "document",
       "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/master/docs-reindex.html",
       "name": "reindex",
       "request": {
@@ -13702,7 +14078,8 @@
           "stability": "stable"
         }
       },
-      "description": "Copies documents from a source to a destination.",
+      "description": "Throttle a reindex operation.\n\nChange the number of requests per second for a particular reindex operation.",
+      "docTag": "document",
       "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/master/docs-reindex.html",
       "name": "reindex_rethrottle",
       "request": {
@@ -13736,7 +14113,8 @@
           "stability": "stable"
         }
       },
-      "description": "Renders a search template as a search request body.",
+      "description": "Render a search template.\n\nRender a search template as a search request body.",
+      "docTag": "search",
       "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/current/render-search-template-api.html",
       "name": "render_search_template",
       "request": {
@@ -14056,6 +14434,7 @@
         }
       },
       "description": "Run a script.\nRuns a script and returns a result.",
+      "docTag": "script",
       "docUrl": "https://www.elastic.co/guide/en/elasticsearch/painless/master/painless-execute-api.html",
       "name": "scripts_painless_execute",
       "request": {
@@ -14093,8 +14472,11 @@
           "stability": "stable"
         }
       },
-      "description": "Allows to retrieve a large numbers of results from a single search request.",
+      "description": "Run a scrolling search.\n\nIMPORTANT: The scroll API is no longer recommend for deep pagination. If you need to preserve the index state while paging through more than 10,000 hits, use the `search_after` parameter with a point in time (PIT).\n\nThe scroll API gets large sets of results from a single scrolling search request.\nTo get the necessary scroll ID, submit a search API request that includes an argument for the `scroll` query parameter.\nThe `scroll` parameter indicates how long Elasticsearch should retain the search context for the request.\nThe search response returns a scroll ID in the `_scroll_id` response body parameter.\nYou can then use the scroll ID with the scroll API to retrieve the next batch of results for the request.\nIf the Elasticsearch security features are enabled, the access to the results of a specific scroll ID is restricted to the user or API key that submitted the search.\n\nYou can also use the scroll API to specify a new scroll parameter that extends or shortens the retention period for the search context.\n\nIMPORTANT: Results from a scrolling search reflect the state of the index at the time of the initial search request. Subsequent indexing or document changes only affect later search and scroll requests.",
+      "docTag": "search",
       "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/master/search-request-body.html#request-body-search-scroll",
+      "extDocId": "scroll-search-results",
+      "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/paginate-search-results.html#scroll-search-results",
       "name": "scroll",
       "request": {
         "name": "Request",
@@ -14142,7 +14524,7 @@
           "stability": "stable"
         }
       },
-      "description": "Returns search hits that match the query defined in the request.\nYou can provide search queries using the `q` query string parameter or the request body.\nIf both are specified, only the query parameter is used.",
+      "description": "Run a search.\n\nGet search hits that match the query defined in the request.\nYou can provide search queries using the `q` query string parameter or the request body.\nIf both are specified, only the query parameter is used.",
       "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/master/search-search.html",
       "name": "search",
       "privileges": {
@@ -14193,7 +14575,7 @@
           "stability": "beta"
         }
       },
-      "description": "Deletes a search application.",
+      "description": "Delete a search application.\nRemove a search application and its associated alias. Indices attached to the search application are not removed.",
       "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/master/delete-search-application.html",
       "name": "search_application.delete",
       "request": {
@@ -14228,7 +14610,8 @@
           "stability": "experimental"
         }
       },
-      "description": "Delete a behavioral analytics collection.",
+      "description": "Delete a behavioral analytics collection.\nThe associated data stream is also deleted.",
+      "docTag": "analytics",
       "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/master/delete-analytics-collection.html",
       "name": "search_application.delete_behavioral_analytics",
       "request": {
@@ -14263,7 +14646,7 @@
           "stability": "beta"
         }
       },
-      "description": "Returns the details about a search application",
+      "description": "Get search application details.",
       "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/master/get-search-application.html",
       "name": "search_application.get",
       "request": {
@@ -14298,7 +14681,8 @@
           "stability": "experimental"
         }
       },
-      "description": "Returns the existing behavioral analytics collections.",
+      "description": "Get behavioral analytics collections.",
+      "docTag": "analytics",
       "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/master/list-analytics-collection.html",
       "name": "search_application.get_behavioral_analytics",
       "request": {
@@ -14402,7 +14786,7 @@
           "stability": "beta"
         }
       },
-      "description": "Creates or updates a search application.",
+      "description": "Create or update a search application.",
       "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/master/put-search-application.html",
       "name": "search_application.put",
       "request": {
@@ -14440,7 +14824,8 @@
           "stability": "experimental"
         }
       },
-      "description": "Creates a behavioral analytics collection.",
+      "description": "Create a behavioral analytics collection.",
+      "docTag": "analytics",
       "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/master/put-analytics-collection.html",
       "name": "search_application.put_behavioral_analytics",
       "request": {
@@ -14503,7 +14888,7 @@
           "stability": "beta"
         }
       },
-      "description": "Perform a search against a search application.",
+      "description": "Run a search application search.\nGenerate and run an Elasticsearch query that uses the specified query parameteter and the search template associated with the search application or default template.\nUnspecified template parameters are assigned their default values if applicable.",
       "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/master/search-application-search.html",
       "name": "search_application.search",
       "request": {
@@ -14542,7 +14927,8 @@
           "stability": "stable"
         }
       },
-      "description": "Search a vector tile.\nSearches a vector tile for geospatial values.",
+      "description": "Search a vector tile.\n\nSearch a vector tile for geospatial values.",
+      "docTag": "search",
       "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/master/search-vector-tile-api.html",
       "name": "search_mvt",
       "request": {
@@ -14576,7 +14962,8 @@
           "stability": "stable"
         }
       },
-      "description": "Returns information about the indices and shards that a search request would be executed against.",
+      "description": "Get the search shards.\n\nGet the indices and shards that a search request would be run against.\nThis information can be useful for working out issues or planning optimizations with routing and shard preferences.\nWhen filtered aliases are used, the filter is returned as part of the indices section.",
+      "docTag": "search",
       "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/master/search-shards.html",
       "name": "search_shards",
       "request": {
@@ -14619,8 +15006,11 @@
           "stability": "stable"
         }
       },
-      "description": "Runs a search with a search template.",
+      "description": "Run a search with a search template.",
+      "docTag": "search",
       "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/current/search-template.html",
+      "extDocId": "search-template",
+      "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/search-template.html",
       "name": "search_template",
       "request": {
         "name": "Request",
@@ -14810,7 +15200,7 @@
           "stability": "stable"
         }
       },
-      "description": "Creates or updates a user profile on behalf of another user.",
+      "description": "Activate a user profile.\n\nCreate or update a user profile on behalf of another user.",
       "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/current/security-api-activate-user-profile.html",
       "name": "security.activate_user_profile",
       "privileges": {
@@ -14853,7 +15243,7 @@
           "stability": "stable"
         }
       },
-      "description": "Authenticate a user.\nAuthenticates a user and returns information about the authenticated user.\nInclude the user information in a [basic auth header](https://en.wikipedia.org/wiki/Basic_access_authentication).\nA successful call returns a JSON structure that shows user information such as their username, the roles that are assigned to the user, any assigned metadata, and information about the realms that authenticated and authorized the user.\nIf the user cannot be authenticated, this API returns a 401 status code.",
+      "description": "Authenticate a user.\n\nAuthenticates a user and returns information about the authenticated user.\nInclude the user information in a [basic auth header](https://en.wikipedia.org/wiki/Basic_access_authentication).\nA successful call returns a JSON structure that shows user information such as their username, the roles that are assigned to the user, any assigned metadata, and information about the realms that authenticated and authorized the user.\nIf the user cannot be authenticated, this API returns a 401 status code.",
       "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/current/security-api-authenticate.html",
       "name": "security.authenticate",
       "request": {
@@ -14888,7 +15278,7 @@
           "stability": "stable"
         }
       },
-      "description": "The role management APIs are generally the preferred way to manage roles, rather than using file-based role management.\nThe bulk delete roles API cannot delete roles that are defined in roles files.",
+      "description": "Bulk delete roles.\n\nThe role management APIs are generally the preferred way to manage roles, rather than using file-based role management.\nThe bulk delete roles API cannot delete roles that are defined in roles files.",
       "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/current/security-api-bulk-delete-role.html",
       "name": "security.bulk_delete_role",
       "privileges": {
@@ -14931,7 +15321,7 @@
           "stability": "stable"
         }
       },
-      "description": "The role management APIs are generally the preferred way to manage roles, rather than using file-based role management.\nThe bulk create or update roles API cannot update roles that are defined in roles files.",
+      "description": "Bulk create or update roles.\n\nThe role management APIs are generally the preferred way to manage roles, rather than using file-based role management.\nThe bulk create or update roles API cannot update roles that are defined in roles files.",
       "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/current/security-api-bulk-put-role.html",
       "name": "security.bulk_put_role",
       "privileges": {
@@ -14997,7 +15387,7 @@
           "stability": "stable"
         }
       },
-      "description": "Changes the passwords of users in the native realm and built-in users.",
+      "description": "Change passwords.\n\nChange the passwords of users in the native realm and built-in users.",
       "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/current/security-api-change-password.html",
       "name": "security.change_password",
       "request": {
@@ -15043,7 +15433,7 @@
           "stability": "stable"
         }
       },
-      "description": "Evicts a subset of all entries from the API key cache.\nThe cache is also automatically cleared on state changes of the security index.",
+      "description": "Clear the API key cache.\n\nEvict a subset of all entries from the API key cache.\nThe cache is also automatically cleared on state changes of the security index.",
       "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/current/security-api-clear-api-key-cache.html",
       "name": "security.clear_api_key_cache",
       "privileges": {
@@ -15083,7 +15473,7 @@
           "stability": "stable"
         }
       },
-      "description": "Evicts application privileges from the native application privileges cache.",
+      "description": "Clear the privileges cache.\n\nEvict privileges from the native application privilege cache.\nThe cache is also automatically cleared for applications that have their privileges updated.",
       "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/current/security-api-clear-privilege-cache.html",
       "name": "security.clear_cached_privileges",
       "request": {
@@ -15117,7 +15507,7 @@
           "stability": "stable"
         }
       },
-      "description": "Evicts users from the user cache. Can completely clear the cache or evict specific users.",
+      "description": "Clear the user cache.\n\nEvict users from the user cache. You can completely clear the cache or evict specific users.",
       "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/current/security-api-clear-cache.html",
       "name": "security.clear_cached_realms",
       "request": {
@@ -15151,7 +15541,7 @@
           "stability": "stable"
         }
       },
-      "description": "Evicts roles from the native role cache.",
+      "description": "Clear the roles cache.\n\nEvict roles from the native role cache.",
       "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/current/security-api-clear-role-cache.html",
       "name": "security.clear_cached_roles",
       "request": {
@@ -15185,8 +15575,10 @@
           "stability": "stable"
         }
       },
-      "description": "Evicts tokens from the service account token caches.",
+      "description": "Clear service account token caches.\n\nEvict a subset of all entries from the service account token caches.",
       "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/current/security-api-clear-service-token-caches.html",
+      "extDocId": "service-accounts",
+      "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/service-accounts.html",
       "name": "security.clear_cached_service_tokens",
       "request": {
         "name": "Request",
@@ -15220,7 +15612,7 @@
           "stability": "stable"
         }
       },
-      "description": "Create an API key.\nCreates an API key for access without requiring basic authentication.\nA successful request returns a JSON structure that contains the API key, its unique id, and its name.\nIf applicable, it also returns expiration information for the API key in milliseconds.\nNOTE: By default, API keys never expire. You can specify expiration information when you create the API keys.",
+      "description": "Create an API key.\n\nCreate an API key for access without requiring basic authentication.\nA successful request returns a JSON structure that contains the API key, its unique id, and its name.\nIf applicable, it also returns expiration information for the API key in milliseconds.\nNOTE: By default, API keys never expire. You can specify expiration information when you create the API keys.",
       "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/current/security-api-create-api-key.html",
       "name": "security.create_api_key",
       "privileges": {
@@ -15256,19 +15648,31 @@
     {
       "availability": {
         "stack": {
-          "stability": "stable",
-          "visibility": "public"
+          "stability": "stable"
         }
       },
-      "description": "Creates a cross-cluster API key for API key based remote cluster access.",
+      "description": "Create a cross-cluster API key.\n\nCreate an API key of the `cross_cluster` type for the API key based remote cluster access.\nA `cross_cluster` API key cannot be used to authenticate through the REST interface.\n\nIMPORTANT: To authenticate this request you must use a credential that is not an API key. Even if you use an API key that has the required privilege, the API returns an error.\n\nCross-cluster API keys are created by the Elasticsearch API key service, which is automatically enabled.\n\nNOTE: Unlike REST API keys, a cross-cluster API key does not capture permissions of the authenticated user. The API key’s effective permission is exactly as specified with the `access` property.\n\nA successful request returns a JSON structure that contains the API key, its unique ID, and its name. If applicable, it also returns expiration information for the API key in milliseconds.\n\nBy default, API keys never expire. You can specify expiration information when you create the API keys.\n\nCross-cluster API keys can only be updated with the update cross-cluster API key API.\nAttempting to update them with the update REST API key API or the bulk update REST API keys API will result in an error.",
       "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/current/security-api-create-cross-cluster-api-key.html",
+      "extDocId": "remote-clusters-api-key",
+      "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/remote-clusters-api-key.html",
       "name": "security.create_cross_cluster_api_key",
-      "request": null,
+      "privileges": {
+        "cluster": [
+          "manage_security"
+        ]
+      },
+      "request": {
+        "name": "Request",
+        "namespace": "security.create_cross_cluster_api_key"
+      },
       "requestBodyRequired": true,
       "requestMediaType": [
         "application/json"
       ],
-      "response": null,
+      "response": {
+        "name": "Response",
+        "namespace": "security.create_cross_cluster_api_key"
+      },
       "responseMediaType": [
         "application/json"
       ],
@@ -15291,8 +15695,10 @@
           "stability": "stable"
         }
       },
-      "description": "Creates a service accounts token for access without requiring basic authentication.",
+      "description": "Create a service account token.\n\nCreate a service accounts token for access without requiring basic authentication.",
       "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/current/security-api-create-service-token.html",
+      "extDocId": "service-accounts",
+      "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/service-accounts.html",
       "name": "security.create_service_token",
       "request": {
         "name": "Request",
@@ -15333,8 +15739,10 @@
           "stability": "stable"
         }
       },
-      "description": "Removes application privileges.",
+      "description": "Delete application privileges.",
       "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/current/security-api-delete-privilege.html",
+      "extDocId": "security-privileges",
+      "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/security-privileges.html",
       "name": "security.delete_privileges",
       "request": {
         "name": "Request",
@@ -15367,7 +15775,7 @@
           "stability": "stable"
         }
       },
-      "description": "Removes roles in the native realm.",
+      "description": "Delete roles.\n\nDelete roles in the native realm.",
       "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/current/security-api-delete-role.html",
       "name": "security.delete_role",
       "request": {
@@ -15402,7 +15810,7 @@
           "stability": "stable"
         }
       },
-      "description": "Removes role mappings.",
+      "description": "Delete role mappings.",
       "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/current/security-api-delete-role-mapping.html",
       "name": "security.delete_role_mapping",
       "request": {
@@ -15437,8 +15845,10 @@
           "stability": "stable"
         }
       },
-      "description": "Deletes a service account token.",
+      "description": "Delete service account tokens.\n\nDelete service account tokens for a service in a specified namespace.",
       "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/current/security-api-delete-service-token.html",
+      "extDocId": "service-accounts",
+      "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/service-accounts.html",
       "name": "security.delete_service_token",
       "request": {
         "name": "Request",
@@ -15467,7 +15877,7 @@
           "stability": "stable"
         }
       },
-      "description": "Deletes users from the native realm.",
+      "description": "Delete users.\n\nDelete users from the native realm.",
       "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/current/security-api-delete-user.html",
       "name": "security.delete_user",
       "request": {
@@ -15497,7 +15907,7 @@
           "stability": "stable"
         }
       },
-      "description": "Disables users in the native realm.",
+      "description": "Disable users.\n\nDisable users in the native realm.",
       "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/current/security-api-disable-user.html",
       "name": "security.disable_user",
       "request": {
@@ -15533,7 +15943,7 @@
           "stability": "stable"
         }
       },
-      "description": "Disables a user profile so it's not visible in user profile searches.",
+      "description": "Disable a user profile.\n\nDisable user profiles so that they are not visible in user profile searches.",
       "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/master/security-api-disable-user-profile.html",
       "name": "security.disable_user_profile",
       "privileges": {
@@ -15569,7 +15979,7 @@
           "stability": "stable"
         }
       },
-      "description": "Enables users in the native realm.",
+      "description": "Enable users.\n\nEnable users in the native realm.",
       "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/current/security-api-enable-user.html",
       "name": "security.enable_user",
       "request": {
@@ -15605,7 +16015,7 @@
           "stability": "stable"
         }
       },
-      "description": "Enables a user profile so it's visible in user profile searches.",
+      "description": "Enable a user profile.\n\nEnable user profiles to make them visible in user profile searches.",
       "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/master/security-api-enable-user-profile.html",
       "name": "security.enable_user_profile",
       "privileges": {
@@ -15642,7 +16052,7 @@
           "stability": "stable"
         }
       },
-      "description": "Enables a Kibana instance to configure itself for communication with a secured Elasticsearch cluster.",
+      "description": "Enroll Kibana.\n\nEnable a Kibana instance to configure itself for communication with a secured Elasticsearch cluster.",
       "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/master/security-api-kibana-enrollment.html",
       "name": "security.enroll_kibana",
       "request": {
@@ -15676,7 +16086,7 @@
           "stability": "stable"
         }
       },
-      "description": "Allows a new node to join an existing cluster with security features enabled.",
+      "description": "Enroll a node.\n\nEnroll a new node to allow it to join an existing cluster with security features enabled.",
       "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/master/security-api-node-enrollment.html",
       "name": "security.enroll_node",
       "request": {
@@ -15714,7 +16124,7 @@
           "stability": "stable"
         }
       },
-      "description": "Get API key information.\nRetrieves information for one or more API keys.\nNOTE: If you have only the `manage_own_api_key` privilege, this API returns only the API keys that you own.\nIf you have `read_security`, `manage_api_key` or greater privileges (including `manage_security`), this API returns all API keys regardless of ownership.",
+      "description": "Get API key information.\n\nRetrieves information for one or more API keys.\nNOTE: If you have only the `manage_own_api_key` privilege, this API returns only the API keys that you own.\nIf you have `read_security`, `manage_api_key` or greater privileges (including `manage_security`), this API returns all API keys regardless of ownership.",
       "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/current/security-api-get-api-key.html",
       "name": "security.get_api_key",
       "privileges": {
@@ -15755,8 +16165,10 @@
           "stability": "stable"
         }
       },
-      "description": "Retrieves the list of cluster privileges and index privileges that are available in this version of Elasticsearch.",
+      "description": "Get builtin privileges.\n\nGet the list of cluster privileges and index privileges that are available in this version of Elasticsearch.",
       "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/current/security-api-get-builtin-privileges.html",
+      "extDocId": "security-privileges",
+      "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/security-privileges.html",
       "name": "security.get_builtin_privileges",
       "privileges": {
         "cluster": [
@@ -15795,8 +16207,10 @@
           "stability": "stable"
         }
       },
-      "description": "Retrieves application privileges.",
+      "description": "Get application privileges.",
       "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/current/security-api-get-privileges.html",
+      "extDocId": "security-privileges",
+      "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/security-privileges.html",
       "name": "security.get_privileges",
       "request": {
         "name": "Request",
@@ -15841,7 +16255,7 @@
           "stability": "stable"
         }
       },
-      "description": "The role management APIs are generally the preferred way to manage roles, rather than using file-based role management.\nThe get roles API cannot retrieve roles that are defined in roles files.",
+      "description": "Get roles.\n\nGet roles in the native realm.\nThe role management APIs are generally the preferred way to manage roles, rather than using file-based role management.\nThe get roles API cannot retrieve roles that are defined in roles files.",
       "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/current/security-api-get-role.html",
       "name": "security.get_role",
       "privileges": {
@@ -15887,8 +16301,10 @@
           "stability": "stable"
         }
       },
-      "description": "Retrieves role mappings.",
+      "description": "Get role mappings.\n\nRole mappings define which roles are assigned to each user.\nThe role mapping APIs are generally the preferred way to manage role mappings rather than using role mapping files.\nThe get role mappings API cannot retrieve role mappings that are defined in role mapping files.",
       "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/current/security-api-get-role-mapping.html",
+      "extDocId": "mapping-roles",
+      "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/mapping-roles.html",
       "name": "security.get_role_mapping",
       "privileges": {
         "cluster": [
@@ -15933,8 +16349,10 @@
           "stability": "stable"
         }
       },
-      "description": "This API returns a list of service accounts that match the provided path parameter(s).",
+      "description": "Get service accounts.\n\nGet a list of service accounts that match the provided path parameters.",
       "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/current/security-api-get-service-accounts.html",
+      "extDocId": "service-accounts",
+      "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/service-accounts.html",
       "name": "security.get_service_accounts",
       "privileges": {
         "cluster": [
@@ -15985,8 +16403,10 @@
           "stability": "stable"
         }
       },
-      "description": "Retrieves information of all service credentials for a service account.",
+      "description": "Get service account credentials.",
       "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/current/security-api-get-service-credentials.html",
+      "extDocId": "service-accounts",
+      "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/service-accounts.html",
       "name": "security.get_service_credentials",
       "request": {
         "name": "Request",
@@ -16048,7 +16468,7 @@
           "stability": "stable"
         }
       },
-      "description": "Creates a bearer token for access without requiring basic authentication.",
+      "description": "Get a token.\n\nCreate a bearer token for access without requiring basic authentication.",
       "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/current/security-api-get-token.html",
       "name": "security.get_token",
       "request": {
@@ -16081,7 +16501,7 @@
           "stability": "stable"
         }
       },
-      "description": "Retrieves information about users in the native realm and built-in users.",
+      "description": "Get users.\n\nGet information about users in the native realm and built-in users.",
       "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/current/security-api-get-user.html",
       "name": "security.get_user",
       "request": {
@@ -16122,7 +16542,7 @@
           "stability": "stable"
         }
       },
-      "description": "Retrieves security privileges for the logged in user.",
+      "description": "Get user privileges.",
       "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/current/security-api-get-user-privileges.html",
       "name": "security.get_user_privileges",
       "request": {
@@ -16157,7 +16577,7 @@
           "stability": "stable"
         }
       },
-      "description": "Retrieves a user's profile using the unique profile ID.",
+      "description": "Get a user profile.\n\nGet a user's profile using the unique profile ID.",
       "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/current/security-api-get-user-profile.html",
       "name": "security.get_user_profile",
       "privileges": {
@@ -16197,7 +16617,7 @@
           "stability": "stable"
         }
       },
-      "description": "Creates an API key on behalf of another user.\nThis API is similar to Create API keys, however it creates the API key for a user that is different than the user that runs the API.\nThe caller must have authentication credentials (either an access token, or a username and password) for the user on whose behalf the API key will be created.\nIt is not possible to use this API to create an API key without that user’s credentials.\nThe user, for whom the authentication credentials is provided, can optionally \"run as\" (impersonate) another user.\nIn this case, the API key will be created on behalf of the impersonated user.\n\nThis API is intended be used by applications that need to create and manage API keys for end users, but cannot guarantee that those users have permission to create API keys on their own behalf.\n\nA successful grant API key API call returns a JSON structure that contains the API key, its unique id, and its name.\nIf applicable, it also returns expiration information for the API key in milliseconds.\n\nBy default, API keys never expire. You can specify expiration information when you create the API keys.",
+      "description": "Grant an API key.\n\nCreate an API key on behalf of another user.\nThis API is similar to the create API keys API, however it creates the API key for a user that is different than the user that runs the API.\nThe caller must have authentication credentials (either an access token, or a username and password) for the user on whose behalf the API key will be created.\nIt is not possible to use this API to create an API key without that user’s credentials.\nThe user, for whom the authentication credentials is provided, can optionally \"run as\" (impersonate) another user.\nIn this case, the API key will be created on behalf of the impersonated user.\n\nThis API is intended be used by applications that need to create and manage API keys for end users, but cannot guarantee that those users have permission to create API keys on their own behalf.\n\nA successful grant API key API call returns a JSON structure that contains the API key, its unique id, and its name.\nIf applicable, it also returns expiration information for the API key in milliseconds.\n\nBy default, API keys never expire. You can specify expiration information when you create the API keys.",
       "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/current/security-api-grant-api-key.html",
       "name": "security.grant_api_key",
       "privileges": {
@@ -16240,8 +16660,10 @@
           "stability": "stable"
         }
       },
-      "description": "Check user privileges.\nDetermines whether the specified user has a specified list of privileges.",
+      "description": "Check user privileges.\n\nDetermine whether the specified user has a specified list of privileges.",
       "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/current/security-api-has-privileges.html",
+      "extDocId": "security-privileges",
+      "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/security-privileges.html",
       "name": "security.has_privileges",
       "request": {
         "name": "Request",
@@ -16286,8 +16708,10 @@
           "stability": "stable"
         }
       },
-      "description": "Determines whether the users associated with the specified profile IDs have all the requested privileges.",
+      "description": "Check user profile privileges.\n\nDetermine whether the users associated with the specified user profile IDs have all the requested privileges.",
       "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/current/security-api-has-privileges-user-profile.html",
+      "extDocId": "user-profile",
+      "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/user-profile.html",
       "name": "security.has_privileges_user_profile",
       "privileges": {
         "cluster": [
@@ -16330,7 +16754,7 @@
           "stability": "stable"
         }
       },
-      "description": "Invalidate API keys.\nInvalidates one or more API keys.\nThe `manage_api_key` privilege allows deleting any API keys.\nThe `manage_own_api_key` only allows deleting API keys that are owned by the user.\nIn addition, with the `manage_own_api_key` privilege, an invalidation request must be issued in one of the three formats:\n- Set the parameter `owner=true`.\n- Or, set both `username` and `realm_name` to match the user’s identity.\n- Or, if the request is issued by an API key, i.e. an API key invalidates itself, specify its ID in the `ids` field.",
+      "description": "Invalidate API keys.\n\nThis API invalidates API keys created by the create API key or grant API key APIs.\nInvalidated API keys fail authentication, but they can still be viewed using the get API key information and query API key information APIs, for at least the configured retention period, until they are automatically deleted.\nThe `manage_api_key` privilege allows deleting any API keys.\nThe `manage_own_api_key` only allows deleting API keys that are owned by the user.\nIn addition, with the `manage_own_api_key` privilege, an invalidation request must be issued in one of the three formats:\n- Set the parameter `owner=true`.\n- Or, set both `username` and `realm_name` to match the user’s identity.\n- Or, if the request is issued by an API key, that is to say an API key invalidates itself, specify its ID in the `ids` field.",
       "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/current/security-api-invalidate-api-key.html",
       "name": "security.invalidate_api_key",
       "privileges": {
@@ -16374,7 +16798,7 @@
           "stability": "stable"
         }
       },
-      "description": "Invalidates one or more access tokens or refresh tokens.",
+      "description": "Invalidate a token.\n\nThe access tokens returned by the get token API have a finite period of time for which they are valid.\nAfter that time period, they can no longer be used.\nThe time period is defined by the `xpack.security.authc.token.timeout` setting.\n\nThe refresh tokens returned by the get token API are only valid for 24 hours. They can also be used exactly once.\nIf you want to invalidate one or more access or refresh tokens immediately, use this invalidate token API.",
       "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/current/security-api-invalidate-token.html",
       "name": "security.invalidate_token",
       "request": {
@@ -16496,8 +16920,10 @@
           "stability": "stable"
         }
       },
-      "description": "Adds or updates application privileges.",
+      "description": "Create or update application privileges.",
       "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/current/security-api-put-privileges.html",
+      "extDocId": "security-privileges",
+      "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/security-privileges.html",
       "name": "security.put_privileges",
       "request": {
         "name": "Request",
@@ -16534,8 +16960,10 @@
           "stability": "stable"
         }
       },
-      "description": "The role management APIs are generally the preferred way to manage roles, rather than using file-based role management.\nThe create or update roles API cannot update roles that are defined in roles files.",
+      "description": "Create or update roles.\n\nThe role management APIs are generally the preferred way to manage roles in the native realm, rather than using file-based role management.\nThe create or update roles API cannot update roles that are defined in roles files.\nFile-based role management is not available in Elastic Serverless.",
       "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/current/security-api-put-role.html",
+      "extDocId": "defining-roles",
+      "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/defining-roles.html",
       "name": "security.put_role",
       "privileges": {
         "cluster": [
@@ -16578,8 +17006,10 @@
           "stability": "stable"
         }
       },
-      "description": "Creates and updates role mappings.",
+      "description": "Create or update role mappings.\n\nRole mappings define which roles are assigned to each user.\nEach mapping has rules that identify users and a list of roles that are granted to those users.\nThe role mapping APIs are generally the preferred way to manage role mappings rather than using role mapping files. The create or update role mappings API cannot update role mappings that are defined in role mapping files.\n\nThis API does not create roles. Rather, it maps users to existing roles.\nRoles can be created by using the create or update roles API or roles files.",
       "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/current/security-api-put-role-mapping.html",
+      "extDocId": "mapping-roles",
+      "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/mapping-roles.html",
       "name": "security.put_role_mapping",
       "request": {
         "name": "Request",
@@ -16612,7 +17042,7 @@
           "stability": "stable"
         }
       },
-      "description": "Adds and updates users in the native realm. These users are commonly referred to as native users.",
+      "description": "Create or update users.\n\nA password is required for adding a new user but is optional when updating an existing user.\nTo change a user’s password without updating any other fields, use the change password API.",
       "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/current/security-api-put-user.html",
       "name": "security.put_user",
       "request": {
@@ -16651,7 +17081,7 @@
           "stability": "stable"
         }
       },
-      "description": "Query API keys.\nRetrieves a paginated list of API keys and their information. You can optionally filter the results with a query.",
+      "description": "Find API keys with a query.\n\nGet a paginated list of API keys and their information. You can optionally filter the results with a query.",
       "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/current/security-api-query-api-key.html",
       "name": "security.query_api_keys",
       "privileges": {
@@ -16696,7 +17126,7 @@
           "stability": "stable"
         }
       },
-      "description": "Retrieves roles in a paginated manner. You can optionally filter the results with a query.",
+      "description": "Find roles with a query.\n\nGet roles in a paginated manner. You can optionally filter the results with a query.",
       "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/current/security-api-query-role.html",
       "name": "security.query_role",
       "privileges": {
@@ -16740,7 +17170,7 @@
           "stability": "stable"
         }
       },
-      "description": "Retrieves information for Users in a paginated manner. You can optionally filter the results with a query.",
+      "description": "Find users with a query.\n\nGet information for users in a paginated manner.\nYou can optionally filter the results with a query.",
       "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/current/security-api-query-user.html",
       "name": "security.query_user",
       "privileges": {
@@ -16784,7 +17214,7 @@
           "stability": "stable"
         }
       },
-      "description": "Submits a SAML Response message to Elasticsearch for consumption.",
+      "description": "Authenticate SAML.\n\nSubmits a SAML response message to Elasticsearch for consumption.",
       "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/current/security-api-saml-authenticate.html",
       "name": "security.saml_authenticate",
       "request": {
@@ -16822,7 +17252,7 @@
           "stability": "stable"
         }
       },
-      "description": "Verifies the logout response sent from the SAML IdP.",
+      "description": "Logout of SAML completely.\n\nVerifies the logout response sent from the SAML IdP.",
       "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/current/security-api-saml-complete-logout.html",
       "name": "security.saml_complete_logout",
       "request": {
@@ -16860,7 +17290,7 @@
           "stability": "stable"
         }
       },
-      "description": "Submits a SAML LogoutRequest message to Elasticsearch for consumption.",
+      "description": "Invalidate SAML.\n\nSubmits a SAML LogoutRequest message to Elasticsearch for consumption.",
       "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/current/security-api-saml-invalidate.html",
       "name": "security.saml_invalidate",
       "request": {
@@ -16898,7 +17328,7 @@
           "stability": "stable"
         }
       },
-      "description": "Submits a request to invalidate an access token and refresh token.",
+      "description": "Logout of SAML.\n\nSubmits a request to invalidate an access token and refresh token.",
       "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/current/security-api-saml-logout.html",
       "name": "security.saml_logout",
       "request": {
@@ -16936,7 +17366,7 @@
           "stability": "stable"
         }
       },
-      "description": "Creates a SAML authentication request (<AuthnRequest>) as a URL string, based on the configuration of the respective SAML realm in Elasticsearch.",
+      "description": "Prepare SAML authentication.\n\nCreates a SAML authentication request (`<AuthnRequest>`) as a URL string, based on the configuration of the respective SAML realm in Elasticsearch.",
       "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/current/security-api-saml-prepare-authentication.html",
       "name": "security.saml_prepare_authentication",
       "request": {
@@ -16974,7 +17404,7 @@
           "stability": "stable"
         }
       },
-      "description": "Generate SAML metadata for a SAML 2.0 Service Provider.",
+      "description": "Create SAML service provider metadata.\n\nGenerate SAML metadata for a SAML 2.0 Service Provider.",
       "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/current/security-api-saml-sp-metadata.html",
       "name": "security.saml_service_provider_metadata",
       "request": {
@@ -17012,7 +17442,7 @@
           "stability": "stable"
         }
       },
-      "description": "Get suggestions for user profiles that match specified search criteria.",
+      "description": "Suggest a user profile.\n\nGet suggestions for user profiles that match specified search criteria.",
       "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/master/security-api-suggest-user-profile.html",
       "name": "security.suggest_user_profiles",
       "request": {
@@ -17051,7 +17481,7 @@
           "stability": "stable"
         }
       },
-      "description": "Update an API key.\nUpdates attributes of an existing API key.\nUsers can only update API keys that they created or that were granted to them.\nUse this API to update API keys created by the create API Key or grant API Key APIs.\nIf you need to apply the same update to many API keys, you can use bulk update API Keys to reduce overhead.\nIt’s not possible to update expired API keys, or API keys that have been invalidated by invalidate API Key.\nThis API supports updates to an API key’s access scope and metadata.\nThe access scope of an API key is derived from the `role_descriptors` you specify in the request, and a snapshot of the owner user’s permissions at the time of the request.\nThe snapshot of the owner’s permissions is updated automatically on every call.\nIf you don’t specify `role_descriptors` in the request, a call to this API might still change the API key’s access scope.\nThis change can occur if the owner user’s permissions have changed since the API key was created or last modified.\nTo update another user’s API key, use the `run_as` feature to submit a request on behalf of another user.\nIMPORTANT: It’s not possible to use an API key as the authentication credential for this API.\nTo update an API key, the owner user’s credentials are required.",
+      "description": "Update an API key.\n\nUpdates attributes of an existing API key.\nUsers can only update API keys that they created or that were granted to them.\nUse this API to update API keys created by the create API Key or grant API Key APIs.\nIf you need to apply the same update to many API keys, you can use bulk update API Keys to reduce overhead.\nIt’s not possible to update expired API keys, or API keys that have been invalidated by invalidate API Key.\nThis API supports updates to an API key’s access scope and metadata.\nThe access scope of an API key is derived from the `role_descriptors` you specify in the request, and a snapshot of the owner user’s permissions at the time of the request.\nThe snapshot of the owner’s permissions is updated automatically on every call.\nIf you don’t specify `role_descriptors` in the request, a call to this API might still change the API key’s access scope.\nThis change can occur if the owner user’s permissions have changed since the API key was created or last modified.\nTo update another user’s API key, use the `run_as` feature to submit a request on behalf of another user.\nIMPORTANT: It’s not possible to use an API key as the authentication credential for this API.\nTo update an API key, the owner user’s credentials are required.",
       "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/current/security-api-update-api-key.html",
       "name": "security.update_api_key",
       "privileges": {
@@ -17086,19 +17516,26 @@
     {
       "availability": {
         "stack": {
-          "stability": "stable",
-          "visibility": "public"
+          "stability": "stable"
         }
       },
-      "description": "Updates attributes of an existing cross-cluster API key.",
+      "description": "Update a cross-cluster API key.\n\nUpdate the attributes of an existing cross-cluster API key, which is used for API key based remote cluster access.",
       "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/current/security-api-update-cross-cluster-api-key.html",
+      "extDocId": "remote-clusters-api-key",
+      "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/remote-clusters-api-key.html",
       "name": "security.update_cross_cluster_api_key",
-      "request": null,
+      "request": {
+        "name": "Request",
+        "namespace": "security.update_cross_cluster_api_key"
+      },
       "requestBodyRequired": true,
       "requestMediaType": [
         "application/json"
       ],
-      "response": null,
+      "response": {
+        "name": "Response",
+        "namespace": "security.update_cross_cluster_api_key"
+      },
       "responseMediaType": [
         "application/json"
       ],
@@ -17150,7 +17587,7 @@
           "stability": "stable"
         }
       },
-      "description": "Updates specific data for the user profile that's associated with the specified unique ID.",
+      "description": "Update user profile data.\n\nUpdate specific data for the user profile that is associated with a unique ID.",
       "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/current/security-api-update-user-profile-data.html",
       "name": "security.update_user_profile_data",
       "privileges": {
@@ -17972,6 +18409,38 @@
         }
       ]
     },
+    {
+      "availability": {
+        "stack": {
+          "since": "8.16.0",
+          "stability": "experimental",
+          "visibility": "private"
+        }
+      },
+      "description": "Verifies the integrity of the contents of a snapshot repository",
+      "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/master/modules-snapshots.html",
+      "name": "snapshot.repository_verify_integrity",
+      "request": {
+        "name": "Request",
+        "namespace": "snapshot.repository_verify_integrity"
+      },
+      "requestBodyRequired": false,
+      "response": {
+        "name": "Response",
+        "namespace": "snapshot.repository_verify_integrity"
+      },
+      "responseMediaType": [
+        "application/json"
+      ],
+      "urls": [
+        {
+          "methods": [
+            "POST"
+          ],
+          "path": "/_snapshot/{repository}/_verify_integrity"
+        }
+      ]
+    },
     {
       "availability": {
         "serverless": {
@@ -18103,7 +18572,7 @@
           "stability": "stable"
         }
       },
-      "description": "Clears the SQL cursor",
+      "description": "Clear an SQL search cursor.",
       "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/current/clear-sql-cursor-api.html",
       "name": "sql.clear_cursor",
       "request": {
@@ -18141,7 +18610,7 @@
           "stability": "stable"
         }
       },
-      "description": "Deletes an async SQL search or a stored synchronous SQL search. If the search is still running, the API cancels it.",
+      "description": "Delete an async SQL search.\nDelete an async SQL search or a stored synchronous SQL search.\nIf the search is still running, the API cancels it.",
       "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/master/delete-async-sql-search-api.html",
       "name": "sql.delete_async",
       "request": {
@@ -18176,7 +18645,7 @@
           "stability": "stable"
         }
       },
-      "description": "Returns the current status and available results for an async SQL search or stored synchronous SQL search",
+      "description": "Get async SQL search results.\nGet the current status and available results for an async SQL search or stored synchronous SQL search.",
       "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/master/get-async-sql-search-api.html",
       "name": "sql.get_async",
       "request": {
@@ -18211,7 +18680,7 @@
           "stability": "stable"
         }
       },
-      "description": "Returns the current status of an async SQL search or a stored synchronous SQL search",
+      "description": "Get the async SQL search status.\nGet the current status of an async SQL search or a stored synchronous SQL search.",
       "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/master/get-async-sql-search-status-api.html",
       "name": "sql.get_async_status",
       "request": {
@@ -18246,7 +18715,7 @@
           "stability": "stable"
         }
       },
-      "description": "Executes a SQL request",
+      "description": "Get SQL search results.\nRun an SQL request.",
       "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/current/sql-search-api.html",
       "name": "sql.query",
       "request": {
@@ -18285,7 +18754,7 @@
           "stability": "stable"
         }
       },
-      "description": "Translates SQL into Elasticsearch queries",
+      "description": "Translate SQL into Elasticsearch queries.\nTranslate an SQL search into a search API request containing Query DSL.",
       "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/current/sql-translate-api.html",
       "name": "sql.translate",
       "request": {
@@ -18324,7 +18793,8 @@
           "stability": "stable"
         }
       },
-      "description": "Retrieves information about the X.509 certificates used to encrypt communications in the cluster.",
+      "description": "Get SSL certificates.\n\nGet information about the X.509 certificates that are used to encrypt communications in the cluster.\nThe API returns a list that includes certificates from all TLS contexts including:\n\n- Settings for transport and HTTP interfaces\n- TLS settings that are used within authentication realms\n- TLS settings for remote monitoring exporters\n\nThe list includes certificates that are used for configuring trust, such as those configured in the `xpack.security.transport.ssl.truststore` and `xpack.security.transport.ssl.certificate_authorities` settings.\nIt also includes certificates that are used for configuring server identity, such as `xpack.security.http.ssl.keystore` and `xpack.security.http.ssl.certificate settings`.\n\nThe list does not include certificates that are sourced from the default SSL context of the Java Runtime Environment (JRE), even if those certificates are in use within Elasticsearch.\n\nNOTE: When a PKCS#11 token is configured as the truststore of the JRE, the API returns all the certificates that are included in the PKCS#11 token irrespective of whether these are used in the Elasticsearch TLS configuration.\n\nIf Elasticsearch is configured to use a keystore or truststore, the API output includes all certificates in that store, even though some of the certificates might not be in active use within the cluster.",
+      "docTag": "security",
       "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/current/security-api-ssl.html",
       "name": "ssl.certificates",
       "request": {
@@ -18359,7 +18829,7 @@
           "stability": "stable"
         }
       },
-      "description": "Deletes a synonym set",
+      "description": "Delete a synonym set.",
       "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/master/delete-synonyms-set.html",
       "name": "synonyms.delete_synonym",
       "request": {
@@ -18394,7 +18864,7 @@
           "stability": "stable"
         }
       },
-      "description": "Deletes a synonym rule in a synonym set",
+      "description": "Delete a synonym rule.\nDelete a synonym rule from a synonym set.",
       "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/master/delete-synonym-rule.html",
       "name": "synonyms.delete_synonym_rule",
       "request": {
@@ -18432,7 +18902,7 @@
           "stability": "stable"
         }
       },
-      "description": "Retrieves a synonym set",
+      "description": "Get a synonym set.",
       "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/master/get-synonyms-set.html",
       "name": "synonyms.get_synonym",
       "request": {
@@ -18467,7 +18937,7 @@
           "stability": "stable"
         }
       },
-      "description": "Retrieves a synonym rule from a synonym set",
+      "description": "Get a synonym rule.\nGet a synonym rule from a synonym set.",
       "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/master/get-synonym-rule.html",
       "name": "synonyms.get_synonym_rule",
       "request": {
@@ -18505,7 +18975,7 @@
           "stability": "stable"
         }
       },
-      "description": "Retrieves a summary of all defined synonym sets",
+      "description": "Get all synonym sets.\nGet a summary of all defined synonym sets.",
       "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/master/list-synonyms-sets.html",
       "name": "synonyms.get_synonyms_sets",
       "request": {
@@ -18540,7 +19010,7 @@
           "stability": "stable"
         }
       },
-      "description": "Creates or updates a synonym set.",
+      "description": "Create or update a synonym set.\nSynonyms sets are limited to a maximum of 10,000 synonym rules per set.\nIf you need to manage more synonym rules, you can create multiple synonym sets.",
       "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/master/put-synonyms-set.html",
       "name": "synonyms.put_synonym",
       "request": {
@@ -18578,7 +19048,7 @@
           "stability": "stable"
         }
       },
-      "description": "Creates or updates a synonym rule in a synonym set",
+      "description": "Create or update a synonym rule.\nCreate or update a synonym rule in a synonym set.",
       "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/master/put-synonym-rule.html",
       "name": "synonyms.put_synonym_rule",
       "request": {
@@ -18736,7 +19206,8 @@
           "stability": "stable"
         }
       },
-      "description": "The terms enum API  can be used to discover terms in the index that begin with the provided string. It is designed for low-latency look-ups used in auto-complete scenarios.",
+      "description": "Get terms in an index.\n\nDiscover terms that match a partial string in an index.\nThis \"terms enum\" API is designed for low-latency look-ups used in auto-complete scenarios.\n\nIf the `complete` property in the response is false, the returned terms set may be incomplete and should be treated as approximate.\nThis can occur due to a few reasons, such as a request timeout or a node error.\n\nNOTE: The terms enum API may return terms from deleted documents. Deleted documents are initially only marked as deleted. It is not until their segments are merged that documents are actually deleted. Until that happens, the terms enum API will return terms from these documents.",
+      "docTag": "search",
       "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/current/search-terms-enum.html",
       "name": "terms_enum",
       "request": {
@@ -18774,7 +19245,8 @@
           "stability": "stable"
         }
       },
-      "description": "Get term vector information.\nReturns information and statistics about terms in the fields of a particular document.",
+      "description": "Get term vector information.\n\nGet information and statistics about terms in the fields of a particular document.",
+      "docTag": "document",
       "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/master/docs-termvectors.html",
       "name": "termvectors",
       "request": {
@@ -19468,6 +19940,7 @@
         }
       },
       "description": "Update a document.\nUpdates a document by running a script or passing a partial document.",
+      "docTag": "document",
       "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/master/docs-update.html",
       "name": "update",
       "request": {
@@ -19506,6 +19979,7 @@
         }
       },
       "description": "Update documents.\nUpdates documents that match the specified query.\nIf no query is specified, performs an update on every document in the data stream or index without modifying the source, which is useful for picking up mapping changes.",
+      "docTag": "document",
       "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/master/docs-update-by-query.html",
       "name": "update_by_query",
       "request": {
@@ -19543,7 +20017,8 @@
           "stability": "stable"
         }
       },
-      "description": "Changes the number of requests per second for a particular Update By Query operation.",
+      "description": "Throttle an update by query operation.\n\nChange the number of requests per second for a particular update by query operation.\nRethrottling that speeds up the query takes effect immediately but rethrotting that slows down the query takes effect after completing the current batch to prevent scroll timeouts.",
+      "docTag": "document",
       "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/current/docs-update-by-query.html",
       "name": "update_by_query_rethrottle",
       "request": {
@@ -20386,6 +20861,19 @@
         }
       ],
       "query": [
+        {
+          "description": "If `true`, the response will include the ingest pipelines that were executed for each index or create.",
+          "name": "list_executed_pipelines",
+          "required": false,
+          "serverDefault": false,
+          "type": {
+            "kind": "instance_of",
+            "type": {
+              "name": "boolean",
+              "namespace": "_builtins"
+            }
+          }
+        },
         {
           "description": "ID of the pipeline to use to preprocess incoming documents.\nIf the index has a default ingest pipeline specified, then setting the value to `_none` disables the default ingest pipeline for this request.\nIf a final pipeline is configured it will always run, regardless of the value of this parameter.",
           "name": "pipeline",
@@ -20497,9 +20985,22 @@
               "namespace": "_builtins"
             }
           }
+        },
+        {
+          "description": "If `true`, the request's actions must target a data stream (existing or to-be-created).",
+          "name": "require_data_stream",
+          "required": false,
+          "serverDefault": false,
+          "type": {
+            "kind": "instance_of",
+            "type": {
+              "name": "boolean",
+              "namespace": "_builtins"
+            }
+          }
         }
       ],
-      "specLocation": "_global/bulk/BulkRequest.ts#L32-L104"
+      "specLocation": "_global/bulk/BulkRequest.ts#L32-L115"
     },
     {
       "kind": "response",
@@ -20974,7 +21475,7 @@
           }
         ]
       },
-      "description": "Clears the search context and results for a scrolling search.",
+      "description": "Clear a scrolling search.\n\nClear the search context and results for a scrolling search.",
       "inherits": {
         "type": {
           "name": "RequestBase",
@@ -21000,7 +21501,7 @@
         }
       ],
       "query": [],
-      "specLocation": "_global/clear_scroll/ClearScrollRequest.ts#L23-L45"
+      "specLocation": "_global/clear_scroll/ClearScrollRequest.ts#L23-L48"
     },
     {
       "kind": "response",
@@ -21093,7 +21594,7 @@
           }
         ]
       },
-      "description": "Closes a point-in-time.",
+      "description": "Close a point in time.\n\nA point in time must be opened explicitly before being used in search requests.\nThe `keep_alive` parameter tells Elasticsearch how long it should persist.\nA point in time is automatically closed when the `keep_alive` period has elapsed.\nHowever, keeping points in time has a cost; close them as soon as they are no longer required for search requests.",
       "inherits": {
         "type": {
           "name": "RequestBase",
@@ -21106,7 +21607,7 @@
       },
       "path": [],
       "query": [],
-      "specLocation": "_global/close_point_in_time/ClosePointInTimeRequest.ts#L23-L37"
+      "specLocation": "_global/close_point_in_time/ClosePointInTimeRequest.ts#L23-L43"
     },
     {
       "kind": "response",
@@ -21199,7 +21700,7 @@
           }
         ]
       },
-      "description": "Returns number of documents matching a query.",
+      "description": "Count search results.\nGet the number of documents matching a query.",
       "inherits": {
         "type": {
           "name": "RequestBase",
@@ -21400,7 +21901,7 @@
           }
         }
       ],
-      "specLocation": "_global/count/CountRequest.ts#L26-L120"
+      "specLocation": "_global/count/CountRequest.ts#L26-L123"
     },
     {
       "kind": "response",
@@ -21751,7 +22252,7 @@
           }
         }
       ],
-      "specLocation": "_global/delete/DeleteRequest.ts#L34-L92"
+      "specLocation": "_global/delete/DeleteRequest.ts#L34-L93"
     },
     {
       "kind": "response",
@@ -22241,7 +22742,7 @@
           }
         }
       ],
-      "specLocation": "_global/delete_by_query/DeleteByQueryRequest.ts#L36-L210"
+      "specLocation": "_global/delete_by_query/DeleteByQueryRequest.ts#L36-L211"
     },
     {
       "kind": "response",
@@ -22470,7 +22971,7 @@
       "body": {
         "kind": "no_body"
       },
-      "description": "Changes the number of requests per second for a particular Delete By Query operation.",
+      "description": "Throttle a delete by query operation.\n\nChange the number of requests per second for a particular delete by query operation.\nRethrottling that speeds up the query takes effect immediately but rethrotting that slows down the query takes effect after completing the current batch to prevent scroll timeouts.",
       "inherits": {
         "type": {
           "name": "RequestBase",
@@ -22509,7 +23010,7 @@
           }
         }
       ],
-      "specLocation": "_global/delete_by_query_rethrottle/DeleteByQueryRethrottleRequest.ts#L24-L42"
+      "specLocation": "_global/delete_by_query_rethrottle/DeleteByQueryRethrottleRequest.ts#L24-L47"
     },
     {
       "kind": "response",
@@ -22590,7 +23091,7 @@
           }
         }
       ],
-      "specLocation": "_global/delete_script/DeleteScriptRequest.ts#L24-L52"
+      "specLocation": "_global/delete_script/DeleteScriptRequest.ts#L24-L53"
     },
     {
       "kind": "response",
@@ -22783,7 +23284,7 @@
           }
         }
       ],
-      "specLocation": "_global/exists/DocumentExistsRequest.ts#L31-L100"
+      "specLocation": "_global/exists/DocumentExistsRequest.ts#L31-L101"
     },
     {
       "kind": "response",
@@ -22957,7 +23458,7 @@
           }
         }
       ],
-      "specLocation": "_global/exists_source/SourceExistsRequest.ts#L31-L94"
+      "specLocation": "_global/exists_source/SourceExistsRequest.ts#L31-L95"
     },
     {
       "kind": "response",
@@ -23270,7 +23771,7 @@
           }
         }
       ],
-      "specLocation": "_global/explain/ExplainRequest.ts#L26-L106"
+      "specLocation": "_global/explain/ExplainRequest.ts#L26-L107"
     },
     {
       "kind": "response",
@@ -23612,7 +24113,7 @@
           }
         ]
       },
-      "description": "The field capabilities API returns the information about the capabilities of fields among multiple indices.\nThe field capabilities API returns runtime fields like any other field. For example, a runtime field with a type\nof keyword is returned as any other field that belongs to the `keyword` family.",
+      "description": "Get the field capabilities.\n\nGet information about the capabilities of fields among multiple indices.\n\nFor data streams, the API returns field capabilities among the stream’s backing indices.\nIt returns runtime fields like any other field.\nFor example, a runtime field with a type of keyword is returned the same as any other field that belongs to the `keyword` family.",
       "inherits": {
         "type": {
           "name": "RequestBase",
@@ -23761,7 +24262,7 @@
           }
         }
       ],
-      "specLocation": "_global/field_caps/FieldCapabilitiesRequest.ts#L25-L106"
+      "specLocation": "_global/field_caps/FieldCapabilitiesRequest.ts#L25-L111"
     },
     {
       "kind": "response",
@@ -24148,7 +24649,7 @@
           }
         }
       ],
-      "specLocation": "_global/get/GetRequest.ts#L31-L100"
+      "specLocation": "_global/get/GetRequest.ts#L31-L101"
     },
     {
       "kind": "response",
@@ -24268,7 +24769,7 @@
           }
         }
       ],
-      "specLocation": "_global/get_script/GetScriptRequest.ts#L24-L42"
+      "specLocation": "_global/get_script/GetScriptRequest.ts#L24-L43"
     },
     {
       "kind": "response",
@@ -24437,7 +24938,7 @@
       "body": {
         "kind": "no_body"
       },
-      "description": "Returns all script contexts.",
+      "description": "Get script contexts.\n\nGet a list of supported script contexts and their methods.",
       "inherits": {
         "type": {
           "name": "RequestBase",
@@ -24450,7 +24951,7 @@
       },
       "path": [],
       "query": [],
-      "specLocation": "_global/get_script_context/GetScriptContextRequest.ts#L22-L26"
+      "specLocation": "_global/get_script_context/GetScriptContextRequest.ts#L22-L30"
     },
     {
       "kind": "response",
@@ -24522,7 +25023,7 @@
       "body": {
         "kind": "no_body"
       },
-      "description": "Returns available script types, languages and contexts",
+      "description": "Get script languages.\n\nGet a list of available script types, languages, and contexts.",
       "inherits": {
         "type": {
           "name": "RequestBase",
@@ -24535,7 +25036,7 @@
       },
       "path": [],
       "query": [],
-      "specLocation": "_global/get_script_languages/GetScriptLanguagesRequest.ts#L22-L26"
+      "specLocation": "_global/get_script_languages/GetScriptLanguagesRequest.ts#L22-L30"
     },
     {
       "kind": "response",
@@ -24749,7 +25250,7 @@
           }
         }
       ],
-      "specLocation": "_global/get_source/SourceRequest.ts#L31-L88"
+      "specLocation": "_global/get_source/SourceRequest.ts#L31-L89"
     },
     {
       "kind": "response",
@@ -25715,7 +26216,7 @@
       "body": {
         "kind": "no_body"
       },
-      "description": "Returns the health of the cluster.",
+      "description": "Get the cluster health.\nGet a report with the health status of an Elasticsearch cluster.\nThe report contains a list of indicators that compose Elasticsearch functionality.\n\nEach indicator has a health status of: green, unknown, yellow or red.\nThe indicator will provide an explanation and metadata describing the reason for its current health status.\n\nThe cluster’s status is controlled by the worst indicator status.\n\nIn the event that an indicator’s status is non-green, a list of impacts may be present in the indicator result which detail the functionalities that are negatively affected by the health issue.\nEach impact carries with it a severity level, an area of the system that is affected, and a simple description of the impact on the system.\n\nSome health indicators can determine the root cause of a health problem and prescribe a set of steps that can be performed in order to improve the health of the system.\nThe root cause and remediation steps are encapsulated in a diagnosis.\nA diagnosis contains a cause detailing a root cause analysis, an action containing a brief description of the steps to take to fix the problem, the list of affected resources (if applicable), and a detailed step-by-step troubleshooting guide to fix the diagnosed problem.\n\nNOTE: The health indicators perform root cause analysis of non-green health statuses. This can be computationally expensive when called frequently.\nWhen setting up automated polling of the API for health status, set verbose to false to disable the more expensive analysis logic.",
       "inherits": {
         "type": {
           "name": "RequestBase",
@@ -25795,7 +26296,7 @@
           }
         }
       ],
-      "specLocation": "_global/health_report/Request.ts#L24-L52"
+      "specLocation": "_global/health_report/Request.ts#L24-L70"
     },
     {
       "kind": "response",
@@ -26436,7 +26937,7 @@
           }
         }
       ],
-      "specLocation": "_global/index/IndexRequest.ts#L35-L118"
+      "specLocation": "_global/index/IndexRequest.ts#L35-L119"
     },
     {
       "kind": "response",
@@ -26641,6 +27142,8 @@
           },
           {
             "description": "kNN query to execute",
+            "extDocId": "query-dsl-knn-query",
+            "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/query-dsl-knn-query.html",
             "name": "knn",
             "required": true,
             "type": {
@@ -26654,10 +27157,10 @@
         ]
       },
       "deprecation": {
-        "description": "",
+        "description": "The kNN search API has been replaced by the `knn` option in the search API.",
         "version": "8.4.0"
       },
-      "description": "Performs a kNN search.",
+      "description": "Run a knn search.\n\nNOTE: The kNN search API has been replaced by the `knn` option in the search API.\n\nPerform a k-nearest neighbor (kNN) search on a dense_vector field and return the matching documents.\nGiven a query vector, the API finds the k closest vectors and returns those documents as search hits.\n\nElasticsearch uses the HNSW algorithm to support efficient kNN search.\nLike most kNN algorithms, HNSW is an approximate method that sacrifices result accuracy for improved search speed.\nThis means the results returned are not always the true k closest neighbors.\n\nThe kNN search API supports restricting the search using a filter.\nThe search will return the top k documents that also match the filter query.",
       "inherits": {
         "type": {
           "name": "RequestBase",
@@ -26696,7 +27199,7 @@
           }
         }
       ],
-      "specLocation": "_global/knn_search/KnnSearchRequest.ts#L26-L79"
+      "specLocation": "_global/knn_search/KnnSearchRequest.ts#L26-L96"
     },
     {
       "kind": "response",
@@ -27035,7 +27538,7 @@
           }
         ]
       },
-      "description": "Allows to get multiple documents in one request.",
+      "description": "Get multiple documents.\n\nGet multiple JSON documents by ID from one or more indices.\nIf you specify an index in the request URI, you only need to specify the document IDs in the request body.\nTo ensure fast responses, this multi get (mget) API responds with partial results if one or more shards fail.",
       "inherits": {
         "type": {
           "name": "RequestBase",
@@ -27186,7 +27689,7 @@
           }
         }
       ],
-      "specLocation": "_global/mget/MultiGetRequest.ts#L25-L98"
+      "specLocation": "_global/mget/MultiGetRequest.ts#L25-L104"
     },
     {
       "kind": "response",
@@ -27316,7 +27819,7 @@
           }
         }
       ],
-      "specLocation": "_global/msearch/types.ts#L213-L216"
+      "specLocation": "_global/msearch/types.ts#L216-L219"
     },
     {
       "kind": "interface",
@@ -27366,7 +27869,7 @@
           }
         }
       ],
-      "specLocation": "_global/msearch/types.ts#L203-L206"
+      "specLocation": "_global/msearch/types.ts#L206-L209"
     },
     {
       "kind": "interface",
@@ -27379,6 +27882,8 @@
           "aliases": [
             "aggs"
           ],
+          "extDocId": "search-aggregations",
+          "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/search-aggregations.html",
           "name": "aggregations",
           "required": false,
           "type": {
@@ -27838,7 +28343,7 @@
           }
         }
       ],
-      "specLocation": "_global/msearch/types.ts#L70-L201"
+      "specLocation": "_global/msearch/types.ts#L70-L204"
     },
     {
       "kind": "interface",
@@ -27991,7 +28496,7 @@
           }
         }
       },
-      "description": "Allows to execute several search operations in one request.",
+      "description": "Run multiple searches.\n\nThe format of the request is similar to the bulk API format and makes use of the newline delimited JSON (NDJSON) format.\nThe structure is as follows:\n\n```\nheader\\n\nbody\\n\nheader\\n\nbody\\n\n```\n\nThis structure is specifically optimized to reduce parsing if a specific search ends up redirected to another node.\n\nIMPORTANT: The final line of data must end with a newline character `\\n`.\nEach newline character may be preceded by a carriage return `\\r`.\nWhen sending requests to this endpoint the `Content-Type` header should be set to `application/x-ndjson`.",
       "inherits": {
         "type": {
           "name": "RequestBase",
@@ -28182,7 +28687,7 @@
           }
         }
       ],
-      "specLocation": "_global/msearch/MultiSearchRequest.ts#L25-L106"
+      "specLocation": "_global/msearch/MultiSearchRequest.ts#L25-L124"
     },
     {
       "kind": "type_alias",
@@ -28264,7 +28769,7 @@
         "name": "ResponseItem",
         "namespace": "_global.msearch"
       },
-      "specLocation": "_global/msearch/types.ts#L208-L211",
+      "specLocation": "_global/msearch/types.ts#L211-L214",
       "type": {
         "kind": "union_of",
         "items": [
@@ -28313,7 +28818,7 @@
           }
         }
       },
-      "description": "Runs multiple templated searches with a single request.",
+      "description": "Run multiple templated searches.",
       "inherits": {
         "type": {
           "name": "RequestBase",
@@ -28403,7 +28908,7 @@
           }
         }
       ],
-      "specLocation": "_global/msearch_template/MultiSearchTemplateRequest.ts#L25-L70"
+      "specLocation": "_global/msearch_template/MultiSearchTemplateRequest.ts#L25-L72"
     },
     {
       "kind": "type_alias",
@@ -28755,7 +29260,7 @@
           }
         ]
       },
-      "description": "Returns multiple termvectors in one request.",
+      "description": "Get multiple term vectors.\n\nYou can specify existing documents by index and ID or provide artificial documents in the body of the request.\nYou can specify the index in the request body or request URI.\nThe response contains a `docs` array with all the fetched termvectors.\nEach element has the structure provided by the termvectors API.",
       "inherits": {
         "type": {
           "name": "RequestBase",
@@ -28937,7 +29442,7 @@
           }
         }
       ],
-      "specLocation": "_global/mtermvectors/MultiTermVectorsRequest.ts#L31-L109"
+      "specLocation": "_global/mtermvectors/MultiTermVectorsRequest.ts#L31-L116"
     },
     {
       "kind": "response",
@@ -29086,7 +29591,7 @@
           }
         ]
       },
-      "description": "A search request by default executes against the most recent visible data of the target indices,\nwhich is called point in time. Elasticsearch pit (point in time) is a lightweight view into the\nstate of the data as it existed when initiated. In some cases, it’s preferred to perform multiple\nsearch requests using the same point in time. For example, if refreshes happen between\n`search_after` requests, then the results of those requests might not be consistent as changes happening\nbetween searches are only visible to the more recent point in time.",
+      "description": "Open a point in time.\n\nA search request by default runs against the most recent visible data of the target indices,\nwhich is called point in time. Elasticsearch pit (point in time) is a lightweight view into the\nstate of the data as it existed when initiated. In some cases, it’s preferred to perform multiple\nsearch requests using the same point in time. For example, if refreshes happen between\n`search_after` requests, then the results of those requests might not be consistent as changes happening\nbetween searches are only visible to the more recent point in time.\n\nA point in time must be opened explicitly before being used in search requests.\nThe `keep_alive` parameter tells Elasticsearch how long it should persist.",
       "inherits": {
         "type": {
           "name": "RequestBase",
@@ -29173,9 +29678,22 @@
               "namespace": "_types"
             }
           }
+        },
+        {
+          "description": "If `false`, creating a point in time request when a shard is missing or unavailable will throw an exception.\nIf `true`, the point in time will contain all the shards that are available at the time of the request.",
+          "name": "allow_partial_search_results",
+          "required": false,
+          "serverDefault": false,
+          "type": {
+            "kind": "instance_of",
+            "type": {
+              "name": "boolean",
+              "namespace": "_builtins"
+            }
+          }
         }
       ],
-      "specLocation": "_global/open_point_in_time/OpenPointInTimeRequest.ts#L25-L75"
+      "specLocation": "_global/open_point_in_time/OpenPointInTimeRequest.ts#L25-L87"
     },
     {
       "kind": "response",
@@ -29221,7 +29739,7 @@
       "body": {
         "kind": "no_body"
       },
-      "description": "Ping the cluster.\nReturns whether the cluster is running.",
+      "description": "Ping the cluster.\nGet information about whether the cluster is running.",
       "inherits": {
         "type": {
           "name": "RequestBase",
@@ -29234,7 +29752,7 @@
       },
       "path": [],
       "query": [],
-      "specLocation": "_global/ping/PingRequest.ts#L22-L29"
+      "specLocation": "_global/ping/PingRequest.ts#L22-L30"
     },
     {
       "kind": "response",
@@ -29334,7 +29852,7 @@
           }
         }
       ],
-      "specLocation": "_global/put_script/PutScriptRequest.ts#L25-L65"
+      "specLocation": "_global/put_script/PutScriptRequest.ts#L25-L66"
     },
     {
       "kind": "response",
@@ -29968,7 +30486,7 @@
           }
         ]
       },
-      "description": "Enables you to evaluate the quality of ranked search results over a set of typical search queries.",
+      "description": "Evaluate ranked search results.\n\nEvaluate the quality of ranked search results over a set of typical search queries.",
       "inherits": {
         "type": {
           "name": "RequestBase",
@@ -30045,7 +30563,7 @@
           }
         }
       ],
-      "specLocation": "_global/rank_eval/RankEvalRequest.ts#L24-L61"
+      "specLocation": "_global/rank_eval/RankEvalRequest.ts#L24-L64"
     },
     {
       "kind": "response",
@@ -30509,7 +31027,7 @@
           }
         }
       ],
-      "specLocation": "_global/reindex/ReindexRequest.ts#L27-L103"
+      "specLocation": "_global/reindex/ReindexRequest.ts#L27-L104"
     },
     {
       "kind": "response",
@@ -31202,7 +31720,7 @@
       "body": {
         "kind": "no_body"
       },
-      "description": "Copies documents from a source to a destination.",
+      "description": "Throttle a reindex operation.\n\nChange the number of requests per second for a particular reindex operation.",
       "inherits": {
         "type": {
           "name": "RequestBase",
@@ -31241,7 +31759,7 @@
           }
         }
       ],
-      "specLocation": "_global/reindex_rethrottle/ReindexRethrottleRequest.ts#L24-L43"
+      "specLocation": "_global/reindex_rethrottle/ReindexRethrottleRequest.ts#L24-L46"
     },
     {
       "kind": "response",
@@ -31330,7 +31848,7 @@
           }
         ]
       },
-      "description": "Renders a search template as a search request body.",
+      "description": "Render a search template.\n\nRender a search template as a search request body.",
       "inherits": {
         "type": {
           "name": "RequestBase",
@@ -31356,7 +31874,7 @@
         }
       ],
       "query": [],
-      "specLocation": "_global/render_search_template/RenderSearchTemplateRequest.ts#L25-L55"
+      "specLocation": "_global/render_search_template/RenderSearchTemplateRequest.ts#L25-L58"
     },
     {
       "kind": "response",
@@ -31491,7 +32009,7 @@
       },
       "path": [],
       "query": [],
-      "specLocation": "_global/scripts_painless_execute/ExecutePainlessScriptRequest.ts#L24-L47"
+      "specLocation": "_global/scripts_painless_execute/ExecutePainlessScriptRequest.ts#L24-L48"
     },
     {
       "kind": "response",
@@ -31560,7 +32078,7 @@
           }
         ]
       },
-      "description": "Allows to retrieve a large numbers of results from a single search request.",
+      "description": "Run a scrolling search.\n\nIMPORTANT: The scroll API is no longer recommend for deep pagination. If you need to preserve the index state while paging through more than 10,000 hits, use the `search_after` parameter with a point in time (PIT).\n\nThe scroll API gets large sets of results from a single scrolling search request.\nTo get the necessary scroll ID, submit a search API request that includes an argument for the `scroll` query parameter.\nThe `scroll` parameter indicates how long Elasticsearch should retain the search context for the request.\nThe search response returns a scroll ID in the `_scroll_id` response body parameter.\nYou can then use the scroll ID with the scroll API to retrieve the next batch of results for the request.\nIf the Elasticsearch security features are enabled, the access to the results of a specific scroll ID is restricted to the user or API key that submitted the search.\n\nYou can also use the scroll API to specify a new scroll parameter that extends or shortens the retention period for the search context.\n\nIMPORTANT: Results from a scrolling search reflect the state of the index at the time of the initial search request. Subsequent indexing or document changes only affect later search and scroll requests.",
       "inherits": {
         "type": {
           "name": "RequestBase",
@@ -31635,7 +32153,7 @@
           }
         }
       ],
-      "specLocation": "_global/scroll/ScrollRequest.ts#L24-L59"
+      "specLocation": "_global/scroll/ScrollRequest.ts#L24-L75"
     },
     {
       "kind": "response",
@@ -31955,9 +32473,12 @@
           },
           {
             "availability": {
-              "serverless": {},
+              "serverless": {
+                "stability": "stable"
+              },
               "stack": {
-                "since": "8.14.0"
+                "since": "8.14.0",
+                "stability": "stable"
               }
             },
             "description": "A retriever is a specification to describe top documents returned from a search. A retriever replaces other elements of the search API that also return top documents such as query and knn.",
@@ -32200,7 +32721,7 @@
           }
         ]
       },
-      "description": "Returns search hits that match the query defined in the request.\nYou can provide search queries using the `q` query string parameter or the request body.\nIf both are specified, only the query parameter is used.",
+      "description": "Run a search.\n\nGet search hits that match the query defined in the request.\nYou can provide search queries using the `q` query string parameter or the request body.\nIf both are specified, only the query parameter is used.",
       "inherits": {
         "type": {
           "name": "RequestBase",
@@ -32820,7 +33341,7 @@
           }
         }
       ],
-      "specLocation": "_global/search/SearchRequest.ts#L54-L529"
+      "specLocation": "_global/search/SearchRequest.ts#L54-L531"
     },
     {
       "kind": "response",
@@ -33215,7 +33736,7 @@
           }
         }
       ],
-      "specLocation": "_global/search/_types/profile.ts#L23-L36"
+      "specLocation": "_global/search/_types/profile.ts#L26-L39"
     },
     {
       "kind": "interface",
@@ -33303,7 +33824,7 @@
           }
         }
       ],
-      "specLocation": "_global/search/_types/profile.ts#L77-L84"
+      "specLocation": "_global/search/_types/profile.ts#L85-L92"
     },
     {
       "kind": "interface",
@@ -33625,9 +34146,53 @@
               "namespace": "_builtins"
             }
           }
+        },
+        {
+          "name": "brute_force_used",
+          "required": false,
+          "type": {
+            "kind": "instance_of",
+            "type": {
+              "name": "integer",
+              "namespace": "_types"
+            }
+          }
+        },
+        {
+          "name": "dynamic_pruning_attempted",
+          "required": false,
+          "type": {
+            "kind": "instance_of",
+            "type": {
+              "name": "integer",
+              "namespace": "_types"
+            }
+          }
+        },
+        {
+          "name": "dynamic_pruning_used",
+          "required": false,
+          "type": {
+            "kind": "instance_of",
+            "type": {
+              "name": "integer",
+              "namespace": "_types"
+            }
+          }
+        },
+        {
+          "name": "skipped_due_to_no_data",
+          "required": false,
+          "type": {
+            "kind": "instance_of",
+            "type": {
+              "name": "integer",
+              "namespace": "_types"
+            }
+          }
         }
       ],
-      "specLocation": "_global/search/_types/profile.ts#L39-L68"
+      "specLocation": "_global/search/_types/profile.ts#L42-L76"
     },
     {
       "kind": "interface",
@@ -33681,7 +34246,7 @@
           }
         }
       ],
-      "specLocation": "_global/search/_types/profile.ts#L70-L75"
+      "specLocation": "_global/search/_types/profile.ts#L78-L83"
     },
     {
       "kind": "enum",
@@ -33769,7 +34334,7 @@
           }
         }
       ],
-      "specLocation": "_global/search/_types/profile.ts#L86-L91"
+      "specLocation": "_global/search/_types/profile.ts#L94-L99"
     },
     {
       "kind": "interface",
@@ -34186,6 +34751,305 @@
         ]
       }
     },
+    {
+      "kind": "interface",
+      "name": {
+        "name": "DfsKnnProfile",
+        "namespace": "_global.search._types"
+      },
+      "properties": [
+        {
+          "name": "vector_operations_count",
+          "required": false,
+          "type": {
+            "kind": "instance_of",
+            "type": {
+              "name": "long",
+              "namespace": "_types"
+            }
+          }
+        },
+        {
+          "name": "query",
+          "required": true,
+          "type": {
+            "kind": "array_of",
+            "value": {
+              "kind": "instance_of",
+              "type": {
+                "name": "KnnQueryProfileResult",
+                "namespace": "_global.search._types"
+              }
+            }
+          }
+        },
+        {
+          "name": "rewrite_time",
+          "required": true,
+          "type": {
+            "kind": "instance_of",
+            "type": {
+              "name": "long",
+              "namespace": "_types"
+            }
+          }
+        },
+        {
+          "name": "collector",
+          "required": true,
+          "type": {
+            "kind": "array_of",
+            "value": {
+              "kind": "instance_of",
+              "type": {
+                "name": "KnnCollectorResult",
+                "namespace": "_global.search._types"
+              }
+            }
+          }
+        }
+      ],
+      "specLocation": "_global/search/_types/profile.ts#L181-L186"
+    },
+    {
+      "kind": "interface",
+      "name": {
+        "name": "DfsProfile",
+        "namespace": "_global.search._types"
+      },
+      "properties": [
+        {
+          "name": "statistics",
+          "required": false,
+          "type": {
+            "kind": "instance_of",
+            "type": {
+              "name": "DfsStatisticsProfile",
+              "namespace": "_global.search._types"
+            }
+          }
+        },
+        {
+          "name": "knn",
+          "required": false,
+          "type": {
+            "kind": "array_of",
+            "value": {
+              "kind": "instance_of",
+              "type": {
+                "name": "DfsKnnProfile",
+                "namespace": "_global.search._types"
+              }
+            }
+          }
+        }
+      ],
+      "specLocation": "_global/search/_types/profile.ts#L154-L157"
+    },
+    {
+      "kind": "interface",
+      "name": {
+        "name": "DfsStatisticsBreakdown",
+        "namespace": "_global.search._types"
+      },
+      "properties": [
+        {
+          "name": "collection_statistics",
+          "required": true,
+          "type": {
+            "kind": "instance_of",
+            "type": {
+              "name": "long",
+              "namespace": "_types"
+            }
+          }
+        },
+        {
+          "name": "collection_statistics_count",
+          "required": true,
+          "type": {
+            "kind": "instance_of",
+            "type": {
+              "name": "long",
+              "namespace": "_types"
+            }
+          }
+        },
+        {
+          "name": "create_weight",
+          "required": true,
+          "type": {
+            "kind": "instance_of",
+            "type": {
+              "name": "long",
+              "namespace": "_types"
+            }
+          }
+        },
+        {
+          "name": "create_weight_count",
+          "required": true,
+          "type": {
+            "kind": "instance_of",
+            "type": {
+              "name": "long",
+              "namespace": "_types"
+            }
+          }
+        },
+        {
+          "name": "rewrite",
+          "required": true,
+          "type": {
+            "kind": "instance_of",
+            "type": {
+              "name": "long",
+              "namespace": "_types"
+            }
+          }
+        },
+        {
+          "name": "rewrite_count",
+          "required": true,
+          "type": {
+            "kind": "instance_of",
+            "type": {
+              "name": "long",
+              "namespace": "_types"
+            }
+          }
+        },
+        {
+          "name": "term_statistics",
+          "required": true,
+          "type": {
+            "kind": "instance_of",
+            "type": {
+              "name": "long",
+              "namespace": "_types"
+            }
+          }
+        },
+        {
+          "name": "term_statistics_count",
+          "required": true,
+          "type": {
+            "kind": "instance_of",
+            "type": {
+              "name": "long",
+              "namespace": "_types"
+            }
+          }
+        }
+      ],
+      "specLocation": "_global/search/_types/profile.ts#L170-L179"
+    },
+    {
+      "kind": "interface",
+      "name": {
+        "name": "DfsStatisticsProfile",
+        "namespace": "_global.search._types"
+      },
+      "properties": [
+        {
+          "name": "type",
+          "required": true,
+          "type": {
+            "kind": "instance_of",
+            "type": {
+              "name": "string",
+              "namespace": "_builtins"
+            }
+          }
+        },
+        {
+          "name": "description",
+          "required": true,
+          "type": {
+            "kind": "instance_of",
+            "type": {
+              "name": "string",
+              "namespace": "_builtins"
+            }
+          }
+        },
+        {
+          "name": "time",
+          "required": false,
+          "type": {
+            "kind": "instance_of",
+            "type": {
+              "name": "Duration",
+              "namespace": "_types"
+            }
+          }
+        },
+        {
+          "name": "time_in_nanos",
+          "required": true,
+          "type": {
+            "kind": "instance_of",
+            "generics": [
+              {
+                "kind": "instance_of",
+                "type": {
+                  "name": "UnitNanos",
+                  "namespace": "_types"
+                }
+              }
+            ],
+            "type": {
+              "name": "DurationValue",
+              "namespace": "_types"
+            }
+          }
+        },
+        {
+          "name": "breakdown",
+          "required": true,
+          "type": {
+            "kind": "instance_of",
+            "type": {
+              "name": "DfsStatisticsBreakdown",
+              "namespace": "_global.search._types"
+            }
+          }
+        },
+        {
+          "name": "debug",
+          "required": false,
+          "type": {
+            "kind": "dictionary_of",
+            "key": {
+              "kind": "instance_of",
+              "type": {
+                "name": "string",
+                "namespace": "_builtins"
+              }
+            },
+            "singleKey": false,
+            "value": {
+              "kind": "user_defined_value"
+            }
+          }
+        },
+        {
+          "name": "children",
+          "required": false,
+          "type": {
+            "kind": "array_of",
+            "value": {
+              "kind": "instance_of",
+              "type": {
+                "name": "DfsStatisticsProfile",
+                "namespace": "_global.search._types"
+              }
+            }
+          }
+        }
+      ],
+      "specLocation": "_global/search/_types/profile.ts#L159-L167"
+    },
     {
       "kind": "interface",
       "name": {
@@ -34421,7 +35285,7 @@
           }
         }
       ],
-      "specLocation": "_global/search/_types/profile.ts#L139-L146"
+      "specLocation": "_global/search/_types/profile.ts#L230-L237"
     },
     {
       "kind": "interface",
@@ -34519,7 +35383,7 @@
           }
         }
       ],
-      "specLocation": "_global/search/_types/profile.ts#L148-L157"
+      "specLocation": "_global/search/_types/profile.ts#L239-L248"
     },
     {
       "kind": "interface",
@@ -34554,10 +35418,12 @@
           }
         }
       ],
-      "specLocation": "_global/search/_types/profile.ts#L159-L162"
+      "specLocation": "_global/search/_types/profile.ts#L250-L253"
     },
     {
       "kind": "interface",
+      "extDocId": "collapse-search-results",
+      "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/collapse-search-results.html",
       "name": {
         "name": "FieldCollapse",
         "namespace": "_global.search._types"
@@ -34626,7 +35492,7 @@
           }
         }
       ],
-      "specLocation": "_global/search/_types/FieldCollapse.ts#L24-L38"
+      "specLocation": "_global/search/_types/FieldCollapse.ts#L24-L41"
     },
     {
       "kind": "interface",
@@ -35332,13 +36198,10 @@
                 },
                 "singleKey": false,
                 "value": {
-                  "kind": "array_of",
-                  "value": {
-                    "kind": "instance_of",
-                    "type": {
-                      "name": "double",
-                      "namespace": "_types"
-                    }
+                  "kind": "instance_of",
+                  "type": {
+                    "name": "double",
+                    "namespace": "_types"
                   }
                 }
               }
@@ -35388,8 +36251,8 @@
               "value": {
                 "kind": "instance_of",
                 "type": {
-                  "name": "string",
-                  "namespace": "_builtins"
+                  "name": "FieldValue",
+                  "namespace": "_types"
                 }
               }
             }
@@ -35495,7 +36358,7 @@
           }
         }
       ],
-      "specLocation": "_global/search/_types/hits.ts#L40-L65"
+      "specLocation": "_global/search/_types/hits.ts#L41-L66"
     },
     {
       "kind": "interface",
@@ -35581,7 +36444,7 @@
           }
         }
       ],
-      "specLocation": "_global/search/_types/hits.ts#L67-L73"
+      "specLocation": "_global/search/_types/hits.ts#L68-L74"
     },
     {
       "kind": "interface",
@@ -35788,7 +36651,7 @@
           }
         }
       ],
-      "specLocation": "_global/search/_types/hits.ts#L107-L141"
+      "specLocation": "_global/search/_types/hits.ts#L108-L142"
     },
     {
       "kind": "interface",
@@ -35814,7 +36677,420 @@
           }
         }
       ],
-      "specLocation": "_global/search/_types/hits.ts#L85-L87"
+      "specLocation": "_global/search/_types/hits.ts#L86-L88"
+    },
+    {
+      "kind": "interface",
+      "name": {
+        "name": "KnnCollectorResult",
+        "namespace": "_global.search._types"
+      },
+      "properties": [
+        {
+          "name": "name",
+          "required": true,
+          "type": {
+            "kind": "instance_of",
+            "type": {
+              "name": "string",
+              "namespace": "_builtins"
+            }
+          }
+        },
+        {
+          "name": "reason",
+          "required": true,
+          "type": {
+            "kind": "instance_of",
+            "type": {
+              "name": "string",
+              "namespace": "_builtins"
+            }
+          }
+        },
+        {
+          "name": "time",
+          "required": false,
+          "type": {
+            "kind": "instance_of",
+            "type": {
+              "name": "Duration",
+              "namespace": "_types"
+            }
+          }
+        },
+        {
+          "name": "time_in_nanos",
+          "required": true,
+          "type": {
+            "kind": "instance_of",
+            "generics": [
+              {
+                "kind": "instance_of",
+                "type": {
+                  "name": "UnitNanos",
+                  "namespace": "_types"
+                }
+              }
+            ],
+            "type": {
+              "name": "DurationValue",
+              "namespace": "_types"
+            }
+          }
+        },
+        {
+          "name": "children",
+          "required": false,
+          "type": {
+            "kind": "array_of",
+            "value": {
+              "kind": "instance_of",
+              "type": {
+                "name": "KnnCollectorResult",
+                "namespace": "_global.search._types"
+              }
+            }
+          }
+        }
+      ],
+      "specLocation": "_global/search/_types/profile.ts#L222-L228"
+    },
+    {
+      "kind": "interface",
+      "name": {
+        "name": "KnnQueryProfileBreakdown",
+        "namespace": "_global.search._types"
+      },
+      "properties": [
+        {
+          "name": "advance",
+          "required": true,
+          "type": {
+            "kind": "instance_of",
+            "type": {
+              "name": "long",
+              "namespace": "_types"
+            }
+          }
+        },
+        {
+          "name": "advance_count",
+          "required": true,
+          "type": {
+            "kind": "instance_of",
+            "type": {
+              "name": "long",
+              "namespace": "_types"
+            }
+          }
+        },
+        {
+          "name": "build_scorer",
+          "required": true,
+          "type": {
+            "kind": "instance_of",
+            "type": {
+              "name": "long",
+              "namespace": "_types"
+            }
+          }
+        },
+        {
+          "name": "build_scorer_count",
+          "required": true,
+          "type": {
+            "kind": "instance_of",
+            "type": {
+              "name": "long",
+              "namespace": "_types"
+            }
+          }
+        },
+        {
+          "name": "compute_max_score",
+          "required": true,
+          "type": {
+            "kind": "instance_of",
+            "type": {
+              "name": "long",
+              "namespace": "_types"
+            }
+          }
+        },
+        {
+          "name": "compute_max_score_count",
+          "required": true,
+          "type": {
+            "kind": "instance_of",
+            "type": {
+              "name": "long",
+              "namespace": "_types"
+            }
+          }
+        },
+        {
+          "name": "count_weight",
+          "required": true,
+          "type": {
+            "kind": "instance_of",
+            "type": {
+              "name": "long",
+              "namespace": "_types"
+            }
+          }
+        },
+        {
+          "name": "count_weight_count",
+          "required": true,
+          "type": {
+            "kind": "instance_of",
+            "type": {
+              "name": "long",
+              "namespace": "_types"
+            }
+          }
+        },
+        {
+          "name": "create_weight",
+          "required": true,
+          "type": {
+            "kind": "instance_of",
+            "type": {
+              "name": "long",
+              "namespace": "_types"
+            }
+          }
+        },
+        {
+          "name": "create_weight_count",
+          "required": true,
+          "type": {
+            "kind": "instance_of",
+            "type": {
+              "name": "long",
+              "namespace": "_types"
+            }
+          }
+        },
+        {
+          "name": "match",
+          "required": true,
+          "type": {
+            "kind": "instance_of",
+            "type": {
+              "name": "long",
+              "namespace": "_types"
+            }
+          }
+        },
+        {
+          "name": "match_count",
+          "required": true,
+          "type": {
+            "kind": "instance_of",
+            "type": {
+              "name": "long",
+              "namespace": "_types"
+            }
+          }
+        },
+        {
+          "name": "next_doc",
+          "required": true,
+          "type": {
+            "kind": "instance_of",
+            "type": {
+              "name": "long",
+              "namespace": "_types"
+            }
+          }
+        },
+        {
+          "name": "next_doc_count",
+          "required": true,
+          "type": {
+            "kind": "instance_of",
+            "type": {
+              "name": "long",
+              "namespace": "_types"
+            }
+          }
+        },
+        {
+          "name": "score",
+          "required": true,
+          "type": {
+            "kind": "instance_of",
+            "type": {
+              "name": "long",
+              "namespace": "_types"
+            }
+          }
+        },
+        {
+          "name": "score_count",
+          "required": true,
+          "type": {
+            "kind": "instance_of",
+            "type": {
+              "name": "long",
+              "namespace": "_types"
+            }
+          }
+        },
+        {
+          "name": "set_min_competitive_score",
+          "required": true,
+          "type": {
+            "kind": "instance_of",
+            "type": {
+              "name": "long",
+              "namespace": "_types"
+            }
+          }
+        },
+        {
+          "name": "set_min_competitive_score_count",
+          "required": true,
+          "type": {
+            "kind": "instance_of",
+            "type": {
+              "name": "long",
+              "namespace": "_types"
+            }
+          }
+        },
+        {
+          "name": "shallow_advance",
+          "required": true,
+          "type": {
+            "kind": "instance_of",
+            "type": {
+              "name": "long",
+              "namespace": "_types"
+            }
+          }
+        },
+        {
+          "name": "shallow_advance_count",
+          "required": true,
+          "type": {
+            "kind": "instance_of",
+            "type": {
+              "name": "long",
+              "namespace": "_types"
+            }
+          }
+        }
+      ],
+      "specLocation": "_global/search/_types/profile.ts#L199-L220"
+    },
+    {
+      "kind": "interface",
+      "name": {
+        "name": "KnnQueryProfileResult",
+        "namespace": "_global.search._types"
+      },
+      "properties": [
+        {
+          "name": "type",
+          "required": true,
+          "type": {
+            "kind": "instance_of",
+            "type": {
+              "name": "string",
+              "namespace": "_builtins"
+            }
+          }
+        },
+        {
+          "name": "description",
+          "required": true,
+          "type": {
+            "kind": "instance_of",
+            "type": {
+              "name": "string",
+              "namespace": "_builtins"
+            }
+          }
+        },
+        {
+          "name": "time",
+          "required": false,
+          "type": {
+            "kind": "instance_of",
+            "type": {
+              "name": "Duration",
+              "namespace": "_types"
+            }
+          }
+        },
+        {
+          "name": "time_in_nanos",
+          "required": true,
+          "type": {
+            "kind": "instance_of",
+            "generics": [
+              {
+                "kind": "instance_of",
+                "type": {
+                  "name": "UnitNanos",
+                  "namespace": "_types"
+                }
+              }
+            ],
+            "type": {
+              "name": "DurationValue",
+              "namespace": "_types"
+            }
+          }
+        },
+        {
+          "name": "breakdown",
+          "required": true,
+          "type": {
+            "kind": "instance_of",
+            "type": {
+              "name": "KnnQueryProfileBreakdown",
+              "namespace": "_global.search._types"
+            }
+          }
+        },
+        {
+          "name": "debug",
+          "required": false,
+          "type": {
+            "kind": "dictionary_of",
+            "key": {
+              "kind": "instance_of",
+              "type": {
+                "name": "string",
+                "namespace": "_builtins"
+              }
+            },
+            "singleKey": false,
+            "value": {
+              "kind": "user_defined_value"
+            }
+          }
+        },
+        {
+          "name": "children",
+          "required": false,
+          "type": {
+            "kind": "array_of",
+            "value": {
+              "kind": "instance_of",
+              "type": {
+                "name": "KnnQueryProfileResult",
+                "namespace": "_global.search._types"
+              }
+            }
+          }
+        }
+      ],
+      "specLocation": "_global/search/_types/profile.ts#L188-L196"
     },
     {
       "kind": "interface",
@@ -35963,7 +37239,7 @@
           }
         }
       ],
-      "specLocation": "_global/search/_types/hits.ts#L89-L93"
+      "specLocation": "_global/search/_types/hits.ts#L90-L94"
     },
     {
       "kind": "interface",
@@ -36414,7 +37690,7 @@
           }
         }
       ],
-      "specLocation": "_global/search/_types/profile.ts#L93-L95"
+      "specLocation": "_global/search/_types/profile.ts#L101-L103"
     },
     {
       "kind": "interface",
@@ -36599,6 +37875,28 @@
             }
           }
         },
+        {
+          "name": "count_weight",
+          "required": true,
+          "type": {
+            "kind": "instance_of",
+            "type": {
+              "name": "long",
+              "namespace": "_types"
+            }
+          }
+        },
+        {
+          "name": "count_weight_count",
+          "required": true,
+          "type": {
+            "kind": "instance_of",
+            "type": {
+              "name": "long",
+              "namespace": "_types"
+            }
+          }
+        },
         {
           "name": "set_min_competitive_score",
           "required": true,
@@ -36622,7 +37920,7 @@
           }
         }
       ],
-      "specLocation": "_global/search/_types/profile.ts#L97-L116"
+      "specLocation": "_global/search/_types/profile.ts#L105-L126"
     },
     {
       "kind": "interface",
@@ -36699,7 +37997,7 @@
           }
         }
       ],
-      "specLocation": "_global/search/_types/profile.ts#L118-L124"
+      "specLocation": "_global/search/_types/profile.ts#L128-L134"
     },
     {
       "kind": "interface",
@@ -36937,7 +38235,7 @@
           }
         }
       ],
-      "specLocation": "_global/search/_types/profile.ts#L126-L130"
+      "specLocation": "_global/search/_types/profile.ts#L136-L140"
     },
     {
       "kind": "interface",
@@ -36960,6 +38258,39 @@
             }
           }
         },
+        {
+          "name": "cluster",
+          "required": true,
+          "type": {
+            "kind": "instance_of",
+            "type": {
+              "name": "string",
+              "namespace": "_builtins"
+            }
+          }
+        },
+        {
+          "name": "dfs",
+          "required": false,
+          "type": {
+            "kind": "instance_of",
+            "type": {
+              "name": "DfsProfile",
+              "namespace": "_global.search._types"
+            }
+          }
+        },
+        {
+          "name": "fetch",
+          "required": false,
+          "type": {
+            "kind": "instance_of",
+            "type": {
+              "name": "FetchProfile",
+              "namespace": "_global.search._types"
+            }
+          }
+        },
         {
           "name": "id",
           "required": true,
@@ -36971,6 +38302,28 @@
             }
           }
         },
+        {
+          "name": "index",
+          "required": true,
+          "type": {
+            "kind": "instance_of",
+            "type": {
+              "name": "IndexName",
+              "namespace": "_types"
+            }
+          }
+        },
+        {
+          "name": "node_id",
+          "required": true,
+          "type": {
+            "kind": "instance_of",
+            "type": {
+              "name": "NodeId",
+              "namespace": "_types"
+            }
+          }
+        },
         {
           "name": "searches",
           "required": true,
@@ -36986,18 +38339,18 @@
           }
         },
         {
-          "name": "fetch",
-          "required": false,
+          "name": "shard_id",
+          "required": true,
           "type": {
             "kind": "instance_of",
             "type": {
-              "name": "FetchProfile",
-              "namespace": "_global.search._types"
+              "name": "long",
+              "namespace": "_types"
             }
           }
         }
       ],
-      "specLocation": "_global/search/_types/profile.ts#L132-L137"
+      "specLocation": "_global/search/_types/profile.ts#L142-L152"
     },
     {
       "kind": "interface",
@@ -37796,7 +39149,7 @@
           }
         }
       ],
-      "specLocation": "_global/search/_types/hits.ts#L95-L98"
+      "specLocation": "_global/search/_types/hits.ts#L96-L99"
     },
     {
       "kind": "enum",
@@ -37814,7 +39167,7 @@
         "name": "TotalHitsRelation",
         "namespace": "_global.search._types"
       },
-      "specLocation": "_global/search/_types/hits.ts#L100-L105"
+      "specLocation": "_global/search/_types/hits.ts#L101-L106"
     },
     {
       "kind": "type_alias",
@@ -37827,7 +39180,7 @@
         "name": "TrackHits",
         "namespace": "_global.search._types"
       },
-      "specLocation": "_global/search/_types/hits.ts#L143-L151",
+      "specLocation": "_global/search/_types/hits.ts#L144-L152",
       "type": {
         "kind": "union_of",
         "items": [
@@ -38044,7 +39397,7 @@
           }
         ]
       },
-      "description": "Search a vector tile.\nSearches a vector tile for geospatial values.",
+      "description": "Search a vector tile.\n\nSearch a vector tile for geospatial values.",
       "inherits": {
         "type": {
           "name": "RequestBase",
@@ -38208,7 +39561,7 @@
           }
         }
       ],
-      "specLocation": "_global/search_mvt/SearchMvtRequest.ts#L33-L190"
+      "specLocation": "_global/search_mvt/SearchMvtRequest.ts#L33-L193"
     },
     {
       "kind": "response",
@@ -38307,7 +39660,7 @@
       "body": {
         "kind": "no_body"
       },
-      "description": "Returns information about the indices and shards that a search request would be executed against.",
+      "description": "Get the search shards.\n\nGet the indices and shards that a search request would be run against.\nThis information can be useful for working out issues or planning optimizations with routing and shard preferences.\nWhen filtered aliases are used, the filter is returned as part of the indices section.",
       "inherits": {
         "type": {
           "name": "RequestBase",
@@ -38410,7 +39763,7 @@
           }
         }
       ],
-      "specLocation": "_global/search_shards/SearchShardsRequest.ts#L23-L70"
+      "specLocation": "_global/search_shards/SearchShardsRequest.ts#L23-L76"
     },
     {
       "kind": "response",
@@ -38730,7 +40083,7 @@
           }
         ]
       },
-      "description": "Runs a search with a search template.",
+      "description": "Run a search with a search template.",
       "inherits": {
         "type": {
           "name": "RequestBase",
@@ -38927,7 +40280,7 @@
           }
         }
       ],
-      "specLocation": "_global/search_template/SearchTemplateRequest.ts#L32-L134"
+      "specLocation": "_global/search_template/SearchTemplateRequest.ts#L32-L136"
     },
     {
       "kind": "response",
@@ -39250,7 +40603,7 @@
           }
         ]
       },
-      "description": "The terms enum API  can be used to discover terms in the index that begin with the provided string. It is designed for low-latency look-ups used in auto-complete scenarios.",
+      "description": "Get terms in an index.\n\nDiscover terms that match a partial string in an index.\nThis \"terms enum\" API is designed for low-latency look-ups used in auto-complete scenarios.\n\nIf the `complete` property in the response is false, the returned terms set may be incomplete and should be treated as approximate.\nThis can occur due to a few reasons, such as a request timeout or a node error.\n\nNOTE: The terms enum API may return terms from deleted documents. Deleted documents are initially only marked as deleted. It is not until their segments are merged that documents are actually deleted. Until that happens, the terms enum API will return terms from these documents.",
       "inherits": {
         "type": {
           "name": "RequestBase",
@@ -39276,7 +40629,7 @@
         }
       ],
       "query": [],
-      "specLocation": "_global/terms_enum/TermsEnumRequest.ts#L26-L65"
+      "specLocation": "_global/terms_enum/TermsEnumRequest.ts#L26-L75"
     },
     {
       "kind": "response",
@@ -39526,7 +40879,7 @@
           }
         ]
       },
-      "description": "Get term vector information.\nReturns information and statistics about terms in the fields of a particular document.",
+      "description": "Get term vector information.\n\nGet information and statistics about terms in the fields of a particular document.",
       "generics": [
         {
           "name": "TDocument",
@@ -39711,7 +41064,7 @@
           }
         }
       ],
-      "specLocation": "_global/termvectors/TermVectorsRequest.ts#L33-L120"
+      "specLocation": "_global/termvectors/TermVectorsRequest.ts#L33-L122"
     },
     {
       "kind": "response",
@@ -40266,7 +41619,7 @@
           }
         }
       ],
-      "specLocation": "_global/update/UpdateRequest.ts#L38-L153"
+      "specLocation": "_global/update/UpdateRequest.ts#L38-L154"
     },
     {
       "kind": "response",
@@ -40832,7 +42185,7 @@
           }
         }
       ],
-      "specLocation": "_global/update_by_query/UpdateByQueryRequest.ts#L37-L226"
+      "specLocation": "_global/update_by_query/UpdateByQueryRequest.ts#L37-L227"
     },
     {
       "kind": "response",
@@ -41061,7 +42414,7 @@
       "body": {
         "kind": "no_body"
       },
-      "description": "Changes the number of requests per second for a particular Update By Query operation.",
+      "description": "Throttle an update by query operation.\n\nChange the number of requests per second for a particular update by query operation.\nRethrottling that speeds up the query takes effect immediately but rethrotting that slows down the query takes effect after completing the current batch to prevent scroll timeouts.",
       "inherits": {
         "type": {
           "name": "RequestBase",
@@ -41101,7 +42454,7 @@
           }
         }
       ],
-      "specLocation": "_global/update_by_query_rethrottle/UpdateByQueryRethrottleRequest.ts#L24-L43"
+      "specLocation": "_global/update_by_query_rethrottle/UpdateByQueryRethrottleRequest.ts#L24-L48"
     },
     {
       "kind": "response",
@@ -41485,20 +42838,9 @@
               "namespace": "_types"
             }
           }
-        },
-        {
-          "name": "type",
-          "required": true,
-          "type": {
-            "kind": "instance_of",
-            "type": {
-              "name": "string",
-              "namespace": "_builtins"
-            }
-          }
         }
       ],
-      "specLocation": "_types/Errors.ts#L60-L66"
+      "specLocation": "_types/Errors.ts#L60-L65"
     },
     {
       "kind": "interface",
@@ -44601,6 +45943,8 @@
     },
     {
       "kind": "interface",
+      "extDocId": "query-dsl-knn-query",
+      "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/query-dsl-knn-query.html",
       "inherits": {
         "type": {
           "name": "QueryBase",
@@ -44712,7 +46056,7 @@
           }
         }
       ],
-      "specLocation": "_types/Knn.ts#L54-L69"
+      "specLocation": "_types/Knn.ts#L54-L72"
     },
     {
       "kind": "interface",
@@ -44800,7 +46144,7 @@
           }
         }
       ],
-      "specLocation": "_types/Retriever.ts#L58-L71"
+      "specLocation": "_types/Retriever.ts#L60-L73"
     },
     {
       "kind": "interface",
@@ -46249,7 +47593,7 @@
           }
         }
       ],
-      "specLocation": "_types/Knn.ts#L71-L74",
+      "specLocation": "_types/Knn.ts#L74-L77",
       "variants": {
         "kind": "container"
       }
@@ -46307,7 +47651,7 @@
           }
         }
       ],
-      "specLocation": "_types/Retriever.ts#L73-L80"
+      "specLocation": "_types/Retriever.ts#L75-L82"
     },
     {
       "kind": "interface",
@@ -46732,9 +48076,21 @@
               }
             ]
           }
+        },
+        {
+          "description": "Minimum _score for matching documents. Documents with a lower _score are not included in the top documents.",
+          "name": "min_score",
+          "required": false,
+          "type": {
+            "kind": "instance_of",
+            "type": {
+              "name": "float",
+              "namespace": "_types"
+            }
+          }
         }
       ],
-      "specLocation": "_types/Retriever.ts#L38-L41"
+      "specLocation": "_types/Retriever.ts#L40-L45"
     },
     {
       "kind": "interface",
@@ -46778,9 +48134,21 @@
               "namespace": "_types"
             }
           }
+        },
+        {
+          "description": "A retriever that reranks the top documents based on a reranking model using the InferenceAPI",
+          "name": "text_similarity_reranker",
+          "required": false,
+          "type": {
+            "kind": "instance_of",
+            "type": {
+              "name": "TextSimilarityReranker",
+              "namespace": "_types"
+            }
+          }
         }
       ],
-      "specLocation": "_types/Retriever.ts#L26-L36",
+      "specLocation": "_types/Retriever.ts#L26-L38",
       "variants": {
         "kind": "container"
       }
@@ -48042,7 +49410,7 @@
       "properties": [
         {
           "name": "_shards",
-          "required": true,
+          "required": false,
           "type": {
             "kind": "instance_of",
             "type": {
@@ -48052,7 +49420,7 @@
           }
         }
       ],
-      "specLocation": "_types/Base.ts#L91-L93"
+      "specLocation": "_types/Base.ts#L91-L94"
     },
     {
       "kind": "interface",
@@ -48416,18 +49784,6 @@
             }
           }
         },
-        {
-          "description": "Minimum _score for matching documents. Documents with a lower _score are not included in the top documents.",
-          "name": "min_score",
-          "required": false,
-          "type": {
-            "kind": "instance_of",
-            "type": {
-              "name": "float",
-              "namespace": "_types"
-            }
-          }
-        },
         {
           "description": "Collapses the top documents by a specified key into a single top document per key.",
           "name": "collapse",
@@ -48441,7 +49797,7 @@
           }
         }
       ],
-      "specLocation": "_types/Retriever.ts#L43-L56"
+      "specLocation": "_types/Retriever.ts#L47-L58"
     },
     {
       "kind": "interface",
@@ -48671,7 +50027,7 @@
           }
         }
       ],
-      "specLocation": "_types/Errors.ts#L68-L73"
+      "specLocation": "_types/Errors.ts#L67-L72"
     },
     {
       "kind": "type_alias",
@@ -48730,7 +50086,83 @@
           }
         }
       ],
-      "specLocation": "_types/Knn.ts#L76-L79"
+      "specLocation": "_types/Knn.ts#L79-L82"
+    },
+    {
+      "kind": "interface",
+      "inherits": {
+        "type": {
+          "name": "RetrieverBase",
+          "namespace": "_types"
+        }
+      },
+      "name": {
+        "name": "TextSimilarityReranker",
+        "namespace": "_types"
+      },
+      "properties": [
+        {
+          "description": "The nested retriever which will produce the first-level results, that will later be used for reranking.",
+          "name": "retriever",
+          "required": true,
+          "type": {
+            "kind": "instance_of",
+            "type": {
+              "name": "RetrieverContainer",
+              "namespace": "_types"
+            }
+          }
+        },
+        {
+          "description": "This value determines how many documents we will consider from the nested retriever.",
+          "name": "rank_window_size",
+          "required": false,
+          "type": {
+            "kind": "instance_of",
+            "type": {
+              "name": "integer",
+              "namespace": "_types"
+            }
+          }
+        },
+        {
+          "description": "Unique identifier of the inference endpoint created using the inference API.",
+          "name": "inference_id",
+          "required": false,
+          "type": {
+            "kind": "instance_of",
+            "type": {
+              "name": "string",
+              "namespace": "_builtins"
+            }
+          }
+        },
+        {
+          "description": "The text snippet used as the basis for similarity comparison",
+          "name": "inference_text",
+          "required": false,
+          "type": {
+            "kind": "instance_of",
+            "type": {
+              "name": "string",
+              "namespace": "_builtins"
+            }
+          }
+        },
+        {
+          "description": "The document field to be used for text similarity comparisons. This field should contain the text that will be evaluated against the inference_text",
+          "name": "field",
+          "required": false,
+          "type": {
+            "kind": "instance_of",
+            "type": {
+              "name": "string",
+              "namespace": "_builtins"
+            }
+          }
+        }
+      ],
+      "specLocation": "_types/Retriever.ts#L84-L95"
     },
     {
       "kind": "enum",
@@ -49569,6 +51001,8 @@
     },
     {
       "kind": "interface",
+      "extDocId": "search-aggregations-bucket-adjacency-matrix-aggregation",
+      "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/search-aggregations-bucket-adjacency-matrix-aggregation.html",
       "inherits": {
         "generics": [
           {
@@ -49589,7 +51023,7 @@
         "namespace": "_types.aggregations"
       },
       "properties": [],
-      "specLocation": "_types/aggregations/Aggregate.ts#L578-L580",
+      "specLocation": "_types/aggregations/Aggregate.ts#L647-L652",
       "variantName": "adjacency_matrix"
     },
     {
@@ -49671,15 +51105,17 @@
           }
         }
       ],
-      "specLocation": "_types/aggregations/Aggregate.ts#L582-L584"
+      "specLocation": "_types/aggregations/Aggregate.ts#L654-L656"
     },
     {
       "kind": "type_alias",
+      "extDocId": "search-aggregations",
+      "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/search-aggregations.html",
       "name": {
         "name": "Aggregate",
         "namespace": "_types.aggregations"
       },
-      "specLocation": "_types/aggregations/Aggregate.ts#L38-L124",
+      "specLocation": "_types/aggregations/Aggregate.ts#L38-L125",
       "type": {
         "kind": "union_of",
         "items": [
@@ -50199,7 +51635,7 @@
           }
         }
       ],
-      "specLocation": "_types/aggregations/Aggregate.ts#L135-L137"
+      "specLocation": "_types/aggregations/Aggregate.ts#L136-L138"
     },
     {
       "kind": "type_alias",
@@ -50207,7 +51643,7 @@
         "name": "AggregateOrder",
         "namespace": "_types.aggregations"
       },
-      "specLocation": "_types/aggregations/bucket.ts#L1000-L1002",
+      "specLocation": "_types/aggregations/bucket.ts#L1052-L1054",
       "type": {
         "kind": "union_of",
         "items": [
@@ -50310,8 +51746,8 @@
         },
         {
           "description": "A bucket aggregation returning a form of adjacency matrix.\nThe request provides a collection of named filter expressions, similar to the `filters` aggregation.\nEach bucket in the response represents a non-empty cell in the matrix of intersecting filters.",
-          "docId": "search-aggregations-bucket-adjacency-matrix-aggregation",
-          "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/search-aggregations-bucket-adjacency-matrix-aggregation.html",
+          "extDocId": "search-aggregations-bucket-adjacency-matrix-aggregation",
+          "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/search-aggregations-bucket-adjacency-matrix-aggregation.html",
           "name": "adjacency_matrix",
           "required": false,
           "type": {
@@ -50324,8 +51760,8 @@
         },
         {
           "description": "A multi-bucket aggregation similar to the date histogram, except instead of providing an interval to use as the width of each bucket, a target number of buckets is provided.",
-          "docId": "search-aggregations-bucket-autodatehistogram-aggregation",
-          "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/search-aggregations-bucket-autodatehistogram-aggregation.html",
+          "extDocId": "search-aggregations-bucket-autodatehistogram-aggregation",
+          "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/search-aggregations-bucket-autodatehistogram-aggregation.html",
           "name": "auto_date_histogram",
           "required": false,
           "type": {
@@ -50338,8 +51774,8 @@
         },
         {
           "description": "A single-value metrics aggregation that computes the average of numeric values that are extracted from the aggregated documents.",
-          "docId": "search-aggregations-metrics-avg-aggregation",
-          "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/search-aggregations-metrics-avg-aggregation.html",
+          "extDocId": "search-aggregations-metrics-avg-aggregation",
+          "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/search-aggregations-metrics-avg-aggregation.html",
           "name": "avg",
           "required": false,
           "type": {
@@ -50352,8 +51788,8 @@
         },
         {
           "description": "A sibling pipeline aggregation which calculates the mean value of a specified metric in a sibling aggregation.\nThe specified metric must be numeric and the sibling aggregation must be a multi-bucket aggregation.",
-          "docId": "search-aggregations-pipeline-avg-bucket-aggregation",
-          "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/search-aggregations-pipeline-avg-bucket-aggregation.html",
+          "extDocId": "search-aggregations-pipeline-avg-bucket-aggregation",
+          "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/search-aggregations-pipeline-avg-bucket-aggregation.html",
           "name": "avg_bucket",
           "required": false,
           "type": {
@@ -50366,8 +51802,8 @@
         },
         {
           "description": "A metrics aggregation that computes a box plot of numeric values extracted from the aggregated documents.",
-          "docId": "search-aggregations-metrics-boxplot-aggregation",
-          "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/search-aggregations-metrics-boxplot-aggregation.html",
+          "extDocId": "search-aggregations-metrics-boxplot-aggregation",
+          "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/search-aggregations-metrics-boxplot-aggregation.html",
           "name": "boxplot",
           "required": false,
           "type": {
@@ -50380,8 +51816,8 @@
         },
         {
           "description": "A parent pipeline aggregation which runs a script which can perform per bucket computations on metrics in the parent multi-bucket aggregation.",
-          "docId": "search-aggregations-pipeline-bucket-script-aggregation",
-          "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/search-aggregations-pipeline-bucket-script-aggregation.html",
+          "extDocId": "search-aggregations-pipeline-bucket-script-aggregation",
+          "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/search-aggregations-pipeline-bucket-script-aggregation.html",
           "name": "bucket_script",
           "required": false,
           "type": {
@@ -50394,8 +51830,8 @@
         },
         {
           "description": "A parent pipeline aggregation which runs a script to determine whether the current bucket will be retained in the parent multi-bucket aggregation.",
-          "docId": "search-aggregations-pipeline-bucket-selector-aggregation",
-          "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/search-aggregations-pipeline-bucket-selector-aggregation.html",
+          "extDocId": "search-aggregations-pipeline-bucket-selector-aggregation",
+          "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/search-aggregations-pipeline-bucket-selector-aggregation.html",
           "name": "bucket_selector",
           "required": false,
           "type": {
@@ -50408,8 +51844,8 @@
         },
         {
           "description": "A parent pipeline aggregation which sorts the buckets of its parent multi-bucket aggregation.",
-          "docId": "search-aggregations-pipeline-bucket-sort-aggregation",
-          "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/search-aggregations-pipeline-bucket-sort-aggregation.html",
+          "extDocId": "search-aggregations-pipeline-bucket-sort-aggregation",
+          "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/search-aggregations-pipeline-bucket-sort-aggregation.html",
           "name": "bucket_sort",
           "required": false,
           "type": {
@@ -50430,8 +51866,8 @@
             }
           },
           "description": "A sibling pipeline aggregation which runs a two sample Kolmogorov–Smirnov test (\"K-S test\") against a provided distribution and the distribution implied by the documents counts in the configured sibling aggregation.",
-          "docId": "search-aggregations-bucket-count-ks-test-aggregation",
-          "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/search-aggregations-bucket-count-ks-test-aggregation.html",
+          "extDocId": "search-aggregations-bucket-count-ks-test-aggregation",
+          "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/search-aggregations-bucket-count-ks-test-aggregation.html",
           "name": "bucket_count_ks_test",
           "required": false,
           "type": {
@@ -50452,8 +51888,8 @@
             }
           },
           "description": "A sibling pipeline aggregation which runs a correlation function on the configured sibling multi-bucket aggregation.",
-          "docId": "search-aggregations-bucket-correlation-aggregation",
-          "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/search-aggregations-bucket-correlation-aggregation.html",
+          "extDocId": "search-aggregations-bucket-correlation-aggregation",
+          "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/search-aggregations-bucket-correlation-aggregation.html",
           "name": "bucket_correlation",
           "required": false,
           "type": {
@@ -50466,8 +51902,8 @@
         },
         {
           "description": "A single-value metrics aggregation that calculates an approximate count of distinct values.",
-          "docId": "search-aggregations-metrics-cardinality-aggregation",
-          "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/search-aggregations-metrics-cardinality-aggregation.html",
+          "extDocId": "search-aggregations-metrics-cardinality-aggregation",
+          "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/search-aggregations-metrics-cardinality-aggregation.html",
           "name": "cardinality",
           "required": false,
           "type": {
@@ -50488,8 +51924,8 @@
             }
           },
           "description": "A multi-bucket aggregation that groups semi-structured text into buckets.",
-          "docId": "search-aggregations-bucket-categorize-text-aggregation",
-          "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/search-aggregations-bucket-categorize-text-aggregation.html",
+          "extDocId": "search-aggregations-bucket-categorize-text-aggregation",
+          "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/search-aggregations-bucket-categorize-text-aggregation.html",
           "name": "categorize_text",
           "required": false,
           "type": {
@@ -50502,8 +51938,8 @@
         },
         {
           "description": "A single bucket aggregation that selects child documents that have the specified type, as defined in a `join` field.",
-          "docId": "search-aggregations-bucket-children-aggregation",
-          "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/search-aggregations-bucket-children-aggregation.html",
+          "extDocId": "search-aggregations-bucket-children-aggregation",
+          "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/search-aggregations-bucket-children-aggregation.html",
           "name": "children",
           "required": false,
           "type": {
@@ -50528,8 +51964,8 @@
         },
         {
           "description": "A parent pipeline aggregation which calculates the cumulative cardinality in a parent `histogram` or `date_histogram` aggregation.",
-          "docId": "search-aggregations-pipeline-cumulative-cardinality-aggregation",
-          "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/search-aggregations-pipeline-cumulative-cardinality-aggregation.html",
+          "extDocId": "search-aggregations-pipeline-cumulative-cardinality-aggregation",
+          "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/search-aggregations-pipeline-cumulative-cardinality-aggregation.html",
           "name": "cumulative_cardinality",
           "required": false,
           "type": {
@@ -50542,8 +51978,8 @@
         },
         {
           "description": "A parent pipeline aggregation which calculates the cumulative sum of a specified metric in a parent `histogram` or `date_histogram` aggregation.",
-          "docId": "search-aggregations-pipeline-cumulative-sum-aggregation",
-          "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/search-aggregations-pipeline-cumulative-sum-aggregation.html",
+          "extDocId": "search-aggregations-pipeline-cumulative-sum-aggregation",
+          "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/search-aggregations-pipeline-cumulative-sum-aggregation.html",
           "name": "cumulative_sum",
           "required": false,
           "type": {
@@ -50556,8 +51992,8 @@
         },
         {
           "description": "A multi-bucket values source based aggregation that can be applied on date values or date range values extracted from the documents.\nIt dynamically builds fixed size (interval) buckets over the values.",
-          "docId": "search-aggregations-bucket-datehistogram-aggregation",
-          "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/search-aggregations-bucket-datehistogram-aggregation.html",
+          "extDocId": "search-aggregations-bucket-datehistogram-aggregation",
+          "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/search-aggregations-bucket-datehistogram-aggregation.html",
           "name": "date_histogram",
           "required": false,
           "type": {
@@ -50570,8 +52006,8 @@
         },
         {
           "description": "A multi-bucket value source based aggregation that enables the user to define a set of date ranges - each representing a bucket.",
-          "docId": "search-aggregations-bucket-daterange-aggregation",
-          "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/search-aggregations-bucket-daterange-aggregation.html",
+          "extDocId": "search-aggregations-bucket-daterange-aggregation",
+          "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/search-aggregations-bucket-daterange-aggregation.html",
           "name": "date_range",
           "required": false,
           "type": {
@@ -50584,8 +52020,8 @@
         },
         {
           "description": "A parent pipeline aggregation which calculates the derivative of a specified metric in a parent `histogram` or `date_histogram` aggregation.",
-          "docId": "search-aggregations-pipeline-derivative-aggregation",
-          "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/search-aggregations-pipeline-derivative-aggregation.html",
+          "extDocId": "search-aggregations-pipeline-derivative-aggregation",
+          "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/search-aggregations-pipeline-derivative-aggregation.html",
           "name": "derivative",
           "required": false,
           "type": {
@@ -50598,8 +52034,8 @@
         },
         {
           "description": "A filtering aggregation used to limit any sub aggregations' processing to a sample of the top-scoring documents.\nSimilar to the `sampler` aggregation, but adds the ability to limit the number of matches that share a common value.",
-          "docId": "search-aggregations-bucket-diversified-sampler-aggregation",
-          "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/search-aggregations-bucket-diversified-sampler-aggregation.html",
+          "extDocId": "search-aggregations-bucket-diversified-sampler-aggregation",
+          "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/search-aggregations-bucket-diversified-sampler-aggregation.html",
           "name": "diversified_sampler",
           "required": false,
           "type": {
@@ -50612,8 +52048,8 @@
         },
         {
           "description": "A multi-value metrics aggregation that computes stats over numeric values extracted from the aggregated documents.",
-          "docId": "search-aggregations-metrics-extendedstats-aggregation",
-          "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/search-aggregations-metrics-extendedstats-aggregation.html",
+          "extDocId": "search-aggregations-metrics-extendedstats-aggregation",
+          "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/search-aggregations-metrics-extendedstats-aggregation.html",
           "name": "extended_stats",
           "required": false,
           "type": {
@@ -50626,8 +52062,8 @@
         },
         {
           "description": "A sibling pipeline aggregation which calculates a variety of stats across all bucket of a specified metric in a sibling aggregation.",
-          "docId": "search-aggregations-pipeline-extended-stats-bucket-aggregation",
-          "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/search-aggregations-pipeline-extended-stats-bucket-aggregation.html",
+          "extDocId": "search-aggregations-pipeline-extended-stats-bucket-aggregation",
+          "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/search-aggregations-pipeline-extended-stats-bucket-aggregation.html",
           "name": "extended_stats_bucket",
           "required": false,
           "type": {
@@ -50640,8 +52076,8 @@
         },
         {
           "description": "A bucket aggregation which finds frequent item sets, a form of association rules mining that identifies items that often occur together.",
-          "docId": "search-aggregations-bucket-frequent-item-sets-aggregation",
-          "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/search-aggregations-bucket-frequent-item-sets-aggregation.html",
+          "extDocId": "search-aggregations-bucket-frequent-item-sets-aggregation",
+          "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/search-aggregations-bucket-frequent-item-sets-aggregation.html",
           "name": "frequent_item_sets",
           "required": false,
           "type": {
@@ -50654,8 +52090,8 @@
         },
         {
           "description": "A single bucket aggregation that narrows the set of documents to those that match a query.",
-          "docId": "search-aggregations-bucket-filter-aggregation",
-          "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/search-aggregations-bucket-filter-aggregation.html",
+          "extDocId": "search-aggregations-bucket-filter-aggregation",
+          "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/search-aggregations-bucket-filter-aggregation.html",
           "name": "filter",
           "required": false,
           "type": {
@@ -50668,8 +52104,8 @@
         },
         {
           "description": "A multi-bucket aggregation where each bucket contains the documents that match a query.",
-          "docId": "search-aggregations-bucket-filters-aggregation",
-          "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/search-aggregations-bucket-filters-aggregation.html",
+          "extDocId": "search-aggregations-bucket-filters-aggregation",
+          "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/search-aggregations-bucket-filters-aggregation.html",
           "name": "filters",
           "required": false,
           "type": {
@@ -50682,8 +52118,8 @@
         },
         {
           "description": "A metric aggregation that computes the geographic bounding box containing all values for a Geopoint or Geoshape field.",
-          "docId": "search-aggregations-metrics-geobounds-aggregation",
-          "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/search-aggregations-metrics-geobounds-aggregation.html",
+          "extDocId": "search-aggregations-metrics-geobounds-aggregation",
+          "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/search-aggregations-metrics-geobounds-aggregation.html",
           "name": "geo_bounds",
           "required": false,
           "type": {
@@ -50696,8 +52132,8 @@
         },
         {
           "description": "A metric aggregation that computes the weighted centroid from all coordinate values for geo fields.",
-          "docId": "search-aggregations-metrics-geocentroid-aggregation",
-          "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/search-aggregations-metrics-geocentroid-aggregation.html",
+          "extDocId": "search-aggregations-metrics-geocentroid-aggregation",
+          "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/search-aggregations-metrics-geocentroid-aggregation.html",
           "name": "geo_centroid",
           "required": false,
           "type": {
@@ -50710,8 +52146,8 @@
         },
         {
           "description": "A multi-bucket aggregation that works on `geo_point` fields.\nEvaluates the distance of each document value from an origin point and determines the buckets it belongs to, based on ranges defined in the request.",
-          "docId": "search-aggregations-bucket-geodistance-aggregation",
-          "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/search-aggregations-bucket-geodistance-aggregation.html",
+          "extDocId": "search-aggregations-bucket-geodistance-aggregation",
+          "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/search-aggregations-bucket-geodistance-aggregation.html",
           "name": "geo_distance",
           "required": false,
           "type": {
@@ -50724,8 +52160,8 @@
         },
         {
           "description": "A multi-bucket aggregation that groups `geo_point` and `geo_shape` values into buckets that represent a grid.\nEach cell is labeled using a geohash which is of user-definable precision.",
-          "docId": "search-aggregations-bucket-geohashgrid-aggregation",
-          "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/search-aggregations-bucket-geohashgrid-aggregation.html",
+          "extDocId": "search-aggregations-bucket-geohashgrid-aggregation",
+          "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/search-aggregations-bucket-geohashgrid-aggregation.html",
           "name": "geohash_grid",
           "required": false,
           "type": {
@@ -50738,8 +52174,8 @@
         },
         {
           "description": "Aggregates all `geo_point` values within a bucket into a `LineString` ordered by the chosen sort field.",
-          "docId": "search-aggregations-metrics-geo-line",
-          "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/search-aggregations-metrics-geo-line.html",
+          "extDocId": "search-aggregations-metrics-geo-line",
+          "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/search-aggregations-metrics-geo-line.html",
           "name": "geo_line",
           "required": false,
           "type": {
@@ -50752,8 +52188,8 @@
         },
         {
           "description": "A multi-bucket aggregation that groups `geo_point` and `geo_shape` values into buckets that represent a grid.\nEach cell corresponds to a map tile as used by many online map sites.",
-          "docId": "search-aggregations-bucket-geotilegrid-aggregation",
-          "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/search-aggregations-bucket-geotilegrid-aggregation.html",
+          "extDocId": "search-aggregations-bucket-geotilegrid-aggregation",
+          "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/search-aggregations-bucket-geotilegrid-aggregation.html",
           "name": "geotile_grid",
           "required": false,
           "type": {
@@ -50766,8 +52202,8 @@
         },
         {
           "description": "A multi-bucket aggregation that groups `geo_point` and `geo_shape` values into buckets that represent a grid.\nEach cell corresponds to a H3 cell index and is labeled using the H3Index representation.",
-          "docId": "search-aggregations-bucket-geohexgrid-aggregation",
-          "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/search-aggregations-bucket-geohexgrid-aggregation.html",
+          "extDocId": "search-aggregations-bucket-geohexgrid-aggregation",
+          "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/search-aggregations-bucket-geohexgrid-aggregation.html",
           "name": "geohex_grid",
           "required": false,
           "type": {
@@ -50780,8 +52216,8 @@
         },
         {
           "description": "Defines a single bucket of all the documents within the search execution context.\nThis context is defined by the indices and the document types you’re searching on, but is not influenced by the search query itself.",
-          "docId": "search-aggregations-bucket-global-aggregation",
-          "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/search-aggregations-bucket-global-aggregation.html",
+          "extDocId": "search-aggregations-bucket-global-aggregation",
+          "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/search-aggregations-bucket-global-aggregation.html",
           "name": "global",
           "required": false,
           "type": {
@@ -50794,8 +52230,8 @@
         },
         {
           "description": "A multi-bucket values source based aggregation that can be applied on numeric values or numeric range values extracted from the documents.\nIt dynamically builds fixed size (interval) buckets over the values.",
-          "docId": "search-aggregations-bucket-histogram-aggregation",
-          "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/search-aggregations-bucket-histogram-aggregation.html",
+          "extDocId": "search-aggregations-bucket-histogram-aggregation",
+          "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/search-aggregations-bucket-histogram-aggregation.html",
           "name": "histogram",
           "required": false,
           "type": {
@@ -50808,8 +52244,8 @@
         },
         {
           "description": "A multi-bucket value source based aggregation that enables the user to define a set of IP ranges - each representing a bucket.",
-          "docId": "search-aggregations-bucket-iprange-aggregation",
-          "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/search-aggregations-bucket-iprange-aggregation.html",
+          "extDocId": "search-aggregations-bucket-iprange-aggregation",
+          "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/search-aggregations-bucket-iprange-aggregation.html",
           "name": "ip_range",
           "required": false,
           "type": {
@@ -50822,8 +52258,8 @@
         },
         {
           "description": "A bucket aggregation that groups documents based on the network or sub-network of an IP address.",
-          "docId": "search-aggregations-bucket-ipprefix-aggregation",
-          "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/search-aggregations-bucket-ipprefix-aggregation.html",
+          "extDocId": "search-aggregations-bucket-ipprefix-aggregation",
+          "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/search-aggregations-bucket-ipprefix-aggregation.html",
           "name": "ip_prefix",
           "required": false,
           "type": {
@@ -50836,8 +52272,8 @@
         },
         {
           "description": "A parent pipeline aggregation which loads a pre-trained model and performs inference on the collated result fields from the parent bucket aggregation.",
-          "docId": "search-aggregations-pipeline-inference-bucket-aggregation",
-          "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/search-aggregations-pipeline-inference-bucket-aggregation.html",
+          "extDocId": "search-aggregations-pipeline-inference-bucket-aggregation",
+          "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/search-aggregations-pipeline-inference-bucket-aggregation.html",
           "name": "inference",
           "required": false,
           "type": {
@@ -50861,8 +52297,8 @@
         },
         {
           "description": "A numeric aggregation that computes the following statistics over a set of document fields: `count`, `mean`, `variance`, `skewness`, `kurtosis`, `covariance`, and `covariance`.",
-          "docId": "search-aggregations-matrix-stats-aggregation",
-          "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/search-aggregations-matrix-stats-aggregation.html",
+          "extDocId": "search-aggregations-matrix-stats-aggregation",
+          "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/search-aggregations-matrix-stats-aggregation.html",
           "name": "matrix_stats",
           "required": false,
           "type": {
@@ -50875,8 +52311,8 @@
         },
         {
           "description": "A single-value metrics aggregation that returns the maximum value among the numeric values extracted from the aggregated documents.",
-          "docId": "search-aggregations-metrics-max-aggregation",
-          "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/search-aggregations-metrics-max-aggregation.html",
+          "extDocId": "search-aggregations-metrics-max-aggregation",
+          "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/search-aggregations-metrics-max-aggregation.html",
           "name": "max",
           "required": false,
           "type": {
@@ -50889,8 +52325,8 @@
         },
         {
           "description": "A sibling pipeline aggregation which identifies the bucket(s) with the maximum value of a specified metric in a sibling aggregation and outputs both the value and the key(s) of the bucket(s).",
-          "docId": "search-aggregations-pipeline-max-bucket-aggregation",
-          "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/search-aggregations-pipeline-max-bucket-aggregation.html",
+          "extDocId": "search-aggregations-pipeline-max-bucket-aggregation",
+          "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/search-aggregations-pipeline-max-bucket-aggregation.html",
           "name": "max_bucket",
           "required": false,
           "type": {
@@ -50903,8 +52339,8 @@
         },
         {
           "description": "A single-value aggregation that approximates the median absolute deviation of its search results.",
-          "docId": "search-aggregations-metrics-median-absolute-deviation-aggregation",
-          "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/search-aggregations-metrics-median-absolute-deviation-aggregation.html",
+          "extDocId": "search-aggregations-metrics-median-absolute-deviation-aggregation",
+          "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/search-aggregations-metrics-median-absolute-deviation-aggregation.html",
           "name": "median_absolute_deviation",
           "required": false,
           "type": {
@@ -50917,8 +52353,8 @@
         },
         {
           "description": "A single-value metrics aggregation that returns the minimum value among numeric values extracted from the aggregated documents.",
-          "docId": "search-aggregations-metrics-min-aggregation",
-          "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/search-aggregations-metrics-min-aggregation.html",
+          "extDocId": "search-aggregations-metrics-min-aggregation",
+          "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/search-aggregations-metrics-min-aggregation.html",
           "name": "min",
           "required": false,
           "type": {
@@ -50931,8 +52367,8 @@
         },
         {
           "description": "A sibling pipeline aggregation which identifies the bucket(s) with the minimum value of a specified metric in a sibling aggregation and outputs both the value and the key(s) of the bucket(s).",
-          "docId": "search-aggregations-pipeline-min-bucket-aggregation",
-          "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/search-aggregations-pipeline-min-bucket-aggregation.html",
+          "extDocId": "search-aggregations-pipeline-min-bucket-aggregation",
+          "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/search-aggregations-pipeline-min-bucket-aggregation.html",
           "name": "min_bucket",
           "required": false,
           "type": {
@@ -50945,8 +52381,8 @@
         },
         {
           "description": "A field data based single bucket aggregation, that creates a bucket of all documents in the current document set context that are missing a field value (effectively, missing a field or having the configured NULL value set).",
-          "docId": "search-aggregations-bucket-missing-aggregation",
-          "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/search-aggregations-bucket-missing-aggregation.html",
+          "extDocId": "search-aggregations-bucket-missing-aggregation",
+          "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/search-aggregations-bucket-missing-aggregation.html",
           "name": "missing",
           "required": false,
           "type": {
@@ -50970,8 +52406,8 @@
         },
         {
           "description": "Given an ordered series of percentiles, \"slides\" a window across those percentiles and computes cumulative percentiles.",
-          "docId": "search-aggregations-pipeline-moving-percentiles-aggregation",
-          "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/search-aggregations-pipeline-moving-percentiles-aggregation.html",
+          "extDocId": "search-aggregations-pipeline-moving-percentiles-aggregation",
+          "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/search-aggregations-pipeline-moving-percentiles-aggregation.html",
           "name": "moving_percentiles",
           "required": false,
           "type": {
@@ -50984,8 +52420,8 @@
         },
         {
           "description": "Given an ordered series of data, \"slides\" a window across the data and runs a custom script on each window of data.\nFor convenience, a number of common functions are predefined such as `min`, `max`, and moving averages.",
-          "docId": "search-aggregations-pipeline-movfn-aggregation",
-          "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/search-aggregations-pipeline-movfn-aggregation.html",
+          "extDocId": "search-aggregations-pipeline-movfn-aggregation",
+          "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/search-aggregations-pipeline-movfn-aggregation.html",
           "name": "moving_fn",
           "required": false,
           "type": {
@@ -50998,8 +52434,8 @@
         },
         {
           "description": "A multi-bucket value source based aggregation where buckets are dynamically built - one per unique set of values.",
-          "docId": "search-aggregations-bucket-multi-terms-aggregation",
-          "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/search-aggregations-bucket-multi-terms-aggregation.html",
+          "extDocId": "search-aggregations-bucket-multi-terms-aggregation",
+          "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/search-aggregations-bucket-multi-terms-aggregation.html",
           "name": "multi_terms",
           "required": false,
           "type": {
@@ -51012,8 +52448,8 @@
         },
         {
           "description": "A special single bucket aggregation that enables aggregating nested documents.",
-          "docId": "search-aggregations-bucket-nested-aggregation",
-          "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/search-aggregations-bucket-nested-aggregation.html",
+          "extDocId": "search-aggregations-bucket-nested-aggregation",
+          "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/search-aggregations-bucket-nested-aggregation.html",
           "name": "nested",
           "required": false,
           "type": {
@@ -51026,8 +52462,8 @@
         },
         {
           "description": "A parent pipeline aggregation which calculates the specific normalized/rescaled value for a specific bucket value.",
-          "docId": "search-aggregations-pipeline-normalize-aggregation",
-          "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/search-aggregations-pipeline-normalize-aggregation.html",
+          "extDocId": "search-aggregations-pipeline-normalize-aggregation",
+          "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/search-aggregations-pipeline-normalize-aggregation.html",
           "name": "normalize",
           "required": false,
           "type": {
@@ -51040,8 +52476,8 @@
         },
         {
           "description": "A special single bucket aggregation that selects parent documents that have the specified type, as defined in a `join` field.",
-          "docId": "search-aggregations-bucket-parent-aggregation",
-          "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/search-aggregations-bucket-parent-aggregation.html",
+          "extDocId": "search-aggregations-bucket-parent-aggregation",
+          "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/search-aggregations-bucket-parent-aggregation.html",
           "name": "parent",
           "required": false,
           "type": {
@@ -51054,8 +52490,8 @@
         },
         {
           "description": "A multi-value metrics aggregation that calculates one or more percentile ranks over numeric values extracted from the aggregated documents.",
-          "docId": "search-aggregations-metrics-percentile-rank-aggregation",
-          "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/search-aggregations-metrics-percentile-rank-aggregation.html",
+          "extDocId": "search-aggregations-metrics-percentile-rank-aggregation",
+          "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/search-aggregations-metrics-percentile-rank-aggregation.html",
           "name": "percentile_ranks",
           "required": false,
           "type": {
@@ -51068,8 +52504,8 @@
         },
         {
           "description": "A multi-value metrics aggregation that calculates one or more percentiles over numeric values extracted from the aggregated documents.",
-          "docId": "search-aggregations-metrics-percentile-aggregation",
-          "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/search-aggregations-metrics-percentile-aggregation.html",
+          "extDocId": "search-aggregations-metrics-percentile-aggregation",
+          "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/search-aggregations-metrics-percentile-aggregation.html",
           "name": "percentiles",
           "required": false,
           "type": {
@@ -51082,8 +52518,8 @@
         },
         {
           "description": "A sibling pipeline aggregation which calculates percentiles across all bucket of a specified metric in a sibling aggregation.",
-          "docId": "search-aggregations-pipeline-percentiles-bucket-aggregation",
-          "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/search-aggregations-pipeline-percentiles-bucket-aggregation.html",
+          "extDocId": "search-aggregations-pipeline-percentiles-bucket-aggregation",
+          "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/search-aggregations-pipeline-percentiles-bucket-aggregation.html",
           "name": "percentiles_bucket",
           "required": false,
           "type": {
@@ -51096,8 +52532,8 @@
         },
         {
           "description": "A multi-bucket value source based aggregation that enables the user to define a set of ranges - each representing a bucket.",
-          "docId": "search-aggregations-bucket-range-aggregation",
-          "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/search-aggregations-bucket-range-aggregation.html",
+          "extDocId": "search-aggregations-bucket-range-aggregation",
+          "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/search-aggregations-bucket-range-aggregation.html",
           "name": "range",
           "required": false,
           "type": {
@@ -51110,8 +52546,8 @@
         },
         {
           "description": "A multi-bucket value source based aggregation which finds \"rare\" terms — terms that are at the long-tail of the distribution and are not frequent.",
-          "docId": "search-aggregations-bucket-rare-terms-aggregation",
-          "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/search-aggregations-bucket-rare-terms-aggregation.html",
+          "extDocId": "search-aggregations-bucket-rare-terms-aggregation",
+          "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/search-aggregations-bucket-rare-terms-aggregation.html",
           "name": "rare_terms",
           "required": false,
           "type": {
@@ -51124,8 +52560,8 @@
         },
         {
           "description": "Calculates a rate of documents or a field in each bucket.\nCan only be used inside a `date_histogram` or `composite` aggregation.",
-          "docId": "search-aggregations-metrics-rate-aggregation",
-          "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/search-aggregations-metrics-rate-aggregation.html",
+          "extDocId": "search-aggregations-metrics-rate-aggregation",
+          "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/search-aggregations-metrics-rate-aggregation.html",
           "name": "rate",
           "required": false,
           "type": {
@@ -51138,8 +52574,8 @@
         },
         {
           "description": "A special single bucket aggregation that enables aggregating on parent documents from nested documents.\nShould only be defined inside a `nested` aggregation.",
-          "docId": "search-aggregations-bucket-reverse-nested-aggregation",
-          "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/search-aggregations-bucket-reverse-nested-aggregation.html",
+          "extDocId": "search-aggregations-bucket-reverse-nested-aggregation",
+          "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/search-aggregations-bucket-reverse-nested-aggregation.html",
           "name": "reverse_nested",
           "required": false,
           "type": {
@@ -51150,10 +52586,30 @@
             }
           }
         },
+        {
+          "availability": {
+            "stack": {
+              "since": "8.1.0",
+              "stability": "experimental"
+            }
+          },
+          "description": "A single bucket aggregation that randomly includes documents in the aggregated results.\nSampling provides significant speed improvement at the cost of accuracy.",
+          "extDocId": "search-aggregations-random-sampler-aggregation",
+          "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/search-aggregations-random-sampler-aggregation.html",
+          "name": "random_sampler",
+          "required": false,
+          "type": {
+            "kind": "instance_of",
+            "type": {
+              "name": "RandomSamplerAggregation",
+              "namespace": "_types.aggregations"
+            }
+          }
+        },
         {
           "description": "A filtering aggregation used to limit any sub aggregations' processing to a sample of the top-scoring documents.",
-          "docId": "search-aggregations-bucket-sampler-aggregation",
-          "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/search-aggregations-bucket-sampler-aggregation.html",
+          "extDocId": "search-aggregations-bucket-sampler-aggregation",
+          "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/search-aggregations-bucket-sampler-aggregation.html",
           "name": "sampler",
           "required": false,
           "type": {
@@ -51166,8 +52622,8 @@
         },
         {
           "description": "A metric aggregation that uses scripts to provide a metric output.",
-          "docId": "search-aggregations-metrics-scripted-metric-aggregation",
-          "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/search-aggregations-metrics-scripted-metric-aggregation.html",
+          "extDocId": "search-aggregations-metrics-scripted-metric-aggregation",
+          "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/search-aggregations-metrics-scripted-metric-aggregation.html",
           "name": "scripted_metric",
           "required": false,
           "type": {
@@ -51180,8 +52636,8 @@
         },
         {
           "description": "An aggregation that subtracts values in a time series from themselves at different time lags or periods.",
-          "docId": "search-aggregations-pipeline-serialdiff-aggregation",
-          "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/search-aggregations-pipeline-serialdiff-aggregation.html",
+          "extDocId": "search-aggregations-pipeline-serialdiff-aggregation",
+          "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/search-aggregations-pipeline-serialdiff-aggregation.html",
           "name": "serial_diff",
           "required": false,
           "type": {
@@ -51194,8 +52650,8 @@
         },
         {
           "description": "Returns interesting or unusual occurrences of terms in a set.",
-          "docId": "search-aggregations-bucket-significantterms-aggregation",
-          "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/search-aggregations-bucket-significantterms-aggregation.html",
+          "extDocId": "search-aggregations-bucket-significantterms-aggregation",
+          "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/search-aggregations-bucket-significantterms-aggregation.html",
           "name": "significant_terms",
           "required": false,
           "type": {
@@ -51208,8 +52664,8 @@
         },
         {
           "description": "Returns interesting or unusual occurrences of free-text terms in a set.",
-          "docId": "search-aggregations-bucket-significanttext-aggregation",
-          "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/search-aggregations-bucket-significanttext-aggregation.html",
+          "extDocId": "search-aggregations-bucket-significanttext-aggregation",
+          "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/search-aggregations-bucket-significanttext-aggregation.html",
           "name": "significant_text",
           "required": false,
           "type": {
@@ -51222,8 +52678,8 @@
         },
         {
           "description": "A multi-value metrics aggregation that computes stats over numeric values extracted from the aggregated documents.",
-          "docId": "search-aggregations-metrics-stats-aggregation",
-          "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/search-aggregations-metrics-stats-aggregation.html",
+          "extDocId": "search-aggregations-metrics-stats-aggregation",
+          "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/search-aggregations-metrics-stats-aggregation.html",
           "name": "stats",
           "required": false,
           "type": {
@@ -51236,8 +52692,8 @@
         },
         {
           "description": "A sibling pipeline aggregation which calculates a variety of stats across all bucket of a specified metric in a sibling aggregation.",
-          "docId": "search-aggregations-pipeline-stats-bucket-aggregation",
-          "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/search-aggregations-pipeline-stats-bucket-aggregation.html",
+          "extDocId": "search-aggregations-pipeline-stats-bucket-aggregation",
+          "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/search-aggregations-pipeline-stats-bucket-aggregation.html",
           "name": "stats_bucket",
           "required": false,
           "type": {
@@ -51250,8 +52706,8 @@
         },
         {
           "description": "A multi-value metrics aggregation that computes statistics over string values extracted from the aggregated documents.",
-          "docId": "search-aggregations-metrics-string-stats-aggregation",
-          "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/search-aggregations-metrics-string-stats-aggregation.html",
+          "extDocId": "search-aggregations-metrics-string-stats-aggregation",
+          "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/search-aggregations-metrics-string-stats-aggregation.html",
           "name": "string_stats",
           "required": false,
           "type": {
@@ -51264,8 +52720,8 @@
         },
         {
           "description": "A single-value metrics aggregation that sums numeric values that are extracted from the aggregated documents.",
-          "docId": "search-aggregations-metrics-sum-aggregation",
-          "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/search-aggregations-metrics-sum-aggregation.html",
+          "extDocId": "search-aggregations-metrics-sum-aggregation",
+          "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/search-aggregations-metrics-sum-aggregation.html",
           "name": "sum",
           "required": false,
           "type": {
@@ -51278,8 +52734,8 @@
         },
         {
           "description": "A sibling pipeline aggregation which calculates the sum of a specified metric across all buckets in a sibling aggregation.",
-          "docId": "search-aggregations-pipeline-sum-bucket-aggregation",
-          "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/search-aggregations-pipeline-sum-bucket-aggregation.html",
+          "extDocId": "search-aggregations-pipeline-sum-bucket-aggregation",
+          "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/search-aggregations-pipeline-sum-bucket-aggregation.html",
           "name": "sum_bucket",
           "required": false,
           "type": {
@@ -51292,8 +52748,8 @@
         },
         {
           "description": "A multi-bucket value source based aggregation where buckets are dynamically built - one per unique value.",
-          "docId": "search-aggregations-bucket-terms-aggregation",
-          "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/search-aggregations-bucket-terms-aggregation.html",
+          "extDocId": "search-aggregations-bucket-terms-aggregation",
+          "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/search-aggregations-bucket-terms-aggregation.html",
           "name": "terms",
           "required": false,
           "type": {
@@ -51314,8 +52770,8 @@
             }
           },
           "description": "The time series aggregation queries data created using a time series index.\nThis is typically data such as metrics or other data streams with a time component, and requires creating an index using the time series mode.",
-          "docId": "search-aggregations-bucket-time-series-aggregation",
-          "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/search-aggregations-bucket-time-series-aggregation.html",
+          "extDocId": "search-aggregations-bucket-time-series-aggregation",
+          "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/search-aggregations-bucket-time-series-aggregation.html",
           "name": "time_series",
           "required": false,
           "type": {
@@ -51328,8 +52784,8 @@
         },
         {
           "description": "A metric aggregation that returns the top matching documents per bucket.",
-          "docId": "search-aggregations-metrics-top-hits-aggregation",
-          "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/search-aggregations-metrics-top-hits-aggregation.html",
+          "extDocId": "search-aggregations-metrics-top-hits-aggregation",
+          "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/search-aggregations-metrics-top-hits-aggregation.html",
           "name": "top_hits",
           "required": false,
           "type": {
@@ -51342,8 +52798,8 @@
         },
         {
           "description": "A metrics aggregation that performs a statistical hypothesis test in which the test statistic follows a Student’s t-distribution under the null hypothesis on numeric values extracted from the aggregated documents.",
-          "docId": "search-aggregations-metrics-ttest-aggregation",
-          "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/search-aggregations-metrics-ttest-aggregation.html",
+          "extDocId": "search-aggregations-metrics-ttest-aggregation",
+          "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/search-aggregations-metrics-ttest-aggregation.html",
           "name": "t_test",
           "required": false,
           "type": {
@@ -51356,8 +52812,8 @@
         },
         {
           "description": "A metric aggregation that selects metrics from the document with the largest or smallest sort value.",
-          "docId": "search-aggregations-metrics-top-metrics",
-          "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/search-aggregations-metrics-top-metrics.html",
+          "extDocId": "search-aggregations-metrics-top-metrics",
+          "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/search-aggregations-metrics-top-metrics.html",
           "name": "top_metrics",
           "required": false,
           "type": {
@@ -51370,8 +52826,8 @@
         },
         {
           "description": "A single-value metrics aggregation that counts the number of values that are extracted from the aggregated documents.",
-          "docId": "search-aggregations-metrics-valuecount-aggregation",
-          "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/search-aggregations-metrics-valuecount-aggregation.html",
+          "extDocId": "search-aggregations-metrics-valuecount-aggregation",
+          "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/search-aggregations-metrics-valuecount-aggregation.html",
           "name": "value_count",
           "required": false,
           "type": {
@@ -51384,8 +52840,8 @@
         },
         {
           "description": "A single-value metrics aggregation that computes the weighted average of numeric values that are extracted from the aggregated documents.",
-          "docId": "search-aggregations-metrics-weight-avg-aggregation",
-          "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/search-aggregations-metrics-weight-avg-aggregation.html",
+          "extDocId": "search-aggregations-metrics-weight-avg-aggregation",
+          "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/search-aggregations-metrics-weight-avg-aggregation.html",
           "name": "weighted_avg",
           "required": false,
           "type": {
@@ -51398,8 +52854,8 @@
         },
         {
           "description": "A multi-bucket aggregation similar to the histogram, except instead of providing an interval to use as the width of each bucket, a target number of buckets is provided.",
-          "docId": "search-aggregations-bucket-variablewidthhistogram-aggregation",
-          "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/search-aggregations-bucket-variablewidthhistogram-aggregation.html",
+          "extDocId": "search-aggregations-bucket-variablewidthhistogram-aggregation",
+          "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/search-aggregations-bucket-variablewidthhistogram-aggregation.html",
           "name": "variable_width_histogram",
           "required": false,
           "type": {
@@ -51411,7 +52867,7 @@
           }
         }
       ],
-      "specLocation": "_types/aggregations/AggregationContainer.ts#L106-L523",
+      "specLocation": "_types/aggregations/AggregationContainer.ts#L107-L533",
       "variants": {
         "kind": "container",
         "nonExhaustive": true
@@ -51485,7 +52941,7 @@
           }
         }
       ],
-      "specLocation": "_types/aggregations/bucket.ts#L679-L692"
+      "specLocation": "_types/aggregations/bucket.ts#L691-L704"
     },
     {
       "kind": "interface",
@@ -51540,10 +52996,12 @@
           }
         }
       ],
-      "specLocation": "_types/aggregations/Aggregate.ts#L161-L165"
+      "specLocation": "_types/aggregations/Aggregate.ts#L162-L166"
     },
     {
       "kind": "interface",
+      "extDocId": "search-aggregations-bucket-autodatehistogram-aggregation",
+      "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/search-aggregations-bucket-autodatehistogram-aggregation.html",
       "inherits": {
         "generics": [
           {
@@ -51576,11 +53034,13 @@
           }
         }
       ],
-      "specLocation": "_types/aggregations/Aggregate.ts#L359-L363",
+      "specLocation": "_types/aggregations/Aggregate.ts#L393-L400",
       "variantName": "auto_date_histogram"
     },
     {
       "kind": "interface",
+      "extDocId": "search-aggregations-bucket-autodatehistogram-aggregation",
+      "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/search-aggregations-bucket-autodatehistogram-aggregation.html",
       "inherits": {
         "type": {
           "name": "BucketAggregationBase",
@@ -51707,7 +53167,7 @@
           }
         }
       ],
-      "specLocation": "_types/aggregations/bucket.ts#L72-L107"
+      "specLocation": "_types/aggregations/bucket.ts#L72-L110"
     },
     {
       "kind": "interface",
@@ -51726,6 +53186,8 @@
     },
     {
       "kind": "interface",
+      "extDocId": "search-aggregations-pipeline-avg-bucket-aggregation",
+      "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/search-aggregations-pipeline-avg-bucket-aggregation.html",
       "inherits": {
         "type": {
           "name": "PipelineAggregationBase",
@@ -51737,10 +53199,12 @@
         "namespace": "_types.aggregations"
       },
       "properties": [],
-      "specLocation": "_types/aggregations/pipeline.ts#L78-L78"
+      "specLocation": "_types/aggregations/pipeline.ts#L78-L81"
     },
     {
       "kind": "interface",
+      "extDocId": "search-aggregations-metrics-avg-aggregation",
+      "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/search-aggregations-metrics-avg-aggregation.html",
       "inherits": {
         "type": {
           "name": "SingleMetricAggregateBase",
@@ -51752,11 +53216,13 @@
         "namespace": "_types.aggregations"
       },
       "properties": [],
-      "specLocation": "_types/aggregations/Aggregate.ts#L210-L211",
+      "specLocation": "_types/aggregations/Aggregate.ts#L218-L222",
       "variantName": "avg"
     },
     {
       "kind": "interface",
+      "extDocId": "search-aggregations-metrics-boxplot-aggregation",
+      "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/search-aggregations-metrics-boxplot-aggregation.html",
       "inherits": {
         "type": {
           "name": "AggregateBase",
@@ -51923,7 +53389,7 @@
           }
         }
       ],
-      "specLocation": "_types/aggregations/Aggregate.ts#L721-L737",
+      "specLocation": "_types/aggregations/Aggregate.ts#L806-L825",
       "variantName": "boxplot"
     },
     {
@@ -51973,6 +53439,8 @@
     {
       "kind": "interface",
       "description": "A sibling pipeline aggregation which executes a correlation function on the configured sibling multi-bucket aggregation.",
+      "extDocId": "search-aggregations-bucket-correlation-aggregation",
+      "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/search-aggregations-bucket-correlation-aggregation.html",
       "inherits": {
         "type": {
           "name": "BucketPathAggregation",
@@ -51997,7 +53465,7 @@
           }
         }
       ],
-      "specLocation": "_types/aggregations/pipeline.ts#L129-L135"
+      "specLocation": "_types/aggregations/pipeline.ts#L139-L146"
     },
     {
       "kind": "interface",
@@ -52019,7 +53487,7 @@
           }
         }
       ],
-      "specLocation": "_types/aggregations/pipeline.ts#L137-L142"
+      "specLocation": "_types/aggregations/pipeline.ts#L148-L153"
     },
     {
       "kind": "interface",
@@ -52041,7 +53509,7 @@
           }
         }
       ],
-      "specLocation": "_types/aggregations/pipeline.ts#L144-L147"
+      "specLocation": "_types/aggregations/pipeline.ts#L155-L158"
     },
     {
       "kind": "interface",
@@ -52093,11 +53561,13 @@
           }
         }
       ],
-      "specLocation": "_types/aggregations/pipeline.ts#L149-L167"
+      "specLocation": "_types/aggregations/pipeline.ts#L160-L178"
     },
     {
       "kind": "interface",
       "description": "A sibling pipeline aggregation which executes a two sample Kolmogorov–Smirnov test (referred\nto as a \"K-S test\" from now on) against a provided distribution, and the distribution implied\nby the documents counts in the configured sibling aggregation. Specifically, for some metric,\nassuming that the percentile intervals of the metric are known beforehand or have been computed\nby an aggregation, then one would use range aggregation for the sibling to compute the p-value\nof the distribution difference between the metric and the restriction of that metric to a subset\nof the documents. A natural use case is if the sibling aggregation range aggregation nested in a\nterms aggregation, in which case one compares the overall distribution of metric to its restriction\nto each term.",
+      "extDocId": "search-aggregations-bucket-count-ks-test-aggregation",
+      "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/search-aggregations-bucket-count-ks-test-aggregation.html",
       "inherits": {
         "type": {
           "name": "BucketPathAggregation",
@@ -52152,7 +53622,7 @@
           }
         }
       ],
-      "specLocation": "_types/aggregations/pipeline.ts#L94-L127"
+      "specLocation": "_types/aggregations/pipeline.ts#L103-L137"
     },
     {
       "kind": "interface",
@@ -52182,7 +53652,7 @@
           }
         }
       ],
-      "specLocation": "_types/aggregations/Aggregate.ts#L234-L237",
+      "specLocation": "_types/aggregations/Aggregate.ts#L250-L253",
       "variantName": "bucket_metric_value"
     },
     {
@@ -52217,6 +53687,8 @@
     },
     {
       "kind": "interface",
+      "extDocId": "search-aggregations-pipeline-bucket-script-aggregation",
+      "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/search-aggregations-pipeline-bucket-script-aggregation.html",
       "inherits": {
         "type": {
           "name": "PipelineAggregationBase",
@@ -52241,10 +53713,12 @@
           }
         }
       ],
-      "specLocation": "_types/aggregations/pipeline.ts#L80-L85"
+      "specLocation": "_types/aggregations/pipeline.ts#L83-L91"
     },
     {
       "kind": "interface",
+      "extDocId": "search-aggregations-pipeline-bucket-selector-aggregation",
+      "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/search-aggregations-pipeline-bucket-selector-aggregation.html",
       "inherits": {
         "type": {
           "name": "PipelineAggregationBase",
@@ -52269,10 +53743,12 @@
           }
         }
       ],
-      "specLocation": "_types/aggregations/pipeline.ts#L87-L92"
+      "specLocation": "_types/aggregations/pipeline.ts#L93-L101"
     },
     {
       "kind": "interface",
+      "extDocId": "search-aggregations-pipeline-bucket-sort-aggregation",
+      "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/search-aggregations-pipeline-bucket-sort-aggregation.html",
       "inherits": {
         "type": {
           "name": "Aggregation",
@@ -52338,7 +53814,7 @@
           }
         }
       ],
-      "specLocation": "_types/aggregations/pipeline.ts#L169-L190"
+      "specLocation": "_types/aggregations/pipeline.ts#L180-L204"
     },
     {
       "kind": "type_alias",
@@ -52357,7 +53833,7 @@
         "name": "Buckets",
         "namespace": "_types.aggregations"
       },
-      "specLocation": "_types/aggregations/Aggregate.ts#L317-L326",
+      "specLocation": "_types/aggregations/Aggregate.ts#L346-L355",
       "type": {
         "kind": "union_of",
         "items": [
@@ -52502,7 +53978,7 @@
         "name": "CalendarInterval",
         "namespace": "_types.aggregations"
       },
-      "specLocation": "_types/aggregations/bucket.ts#L256-L273"
+      "specLocation": "_types/aggregations/bucket.ts#L262-L279"
     },
     {
       "kind": "interface",
@@ -52529,7 +54005,7 @@
           }
         }
       ],
-      "specLocation": "_types/aggregations/Aggregate.ts#L139-L142",
+      "specLocation": "_types/aggregations/Aggregate.ts#L140-L143",
       "variantName": "cardinality"
     },
     {
@@ -52617,6 +54093,8 @@
     {
       "kind": "interface",
       "description": "A multi-bucket aggregation that groups semi-structured text into buckets. Each text\nfield is re-analyzed using a custom analyzer. The resulting tokens are then categorized\ncreating buckets of similarly formatted text values. This aggregation works best with machine\ngenerated text like system logs. Only the first 100 analyzed tokens are used to categorize the text.",
+      "extDocId": "search-aggregations-bucket-categorize-text-aggregation",
+      "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/search-aggregations-bucket-categorize-text-aggregation.html",
       "inherits": {
         "type": {
           "name": "Aggregation",
@@ -52756,7 +54234,7 @@
           }
         }
       ],
-      "specLocation": "_types/aggregations/bucket.ts#L1062-L1126"
+      "specLocation": "_types/aggregations/bucket.ts#L1117-L1182"
     },
     {
       "kind": "type_alias",
@@ -52768,7 +54246,7 @@
         "name": "CategorizeTextAnalyzer",
         "namespace": "_types.aggregations"
       },
-      "specLocation": "_types/aggregations/bucket.ts#L1128-L1131",
+      "specLocation": "_types/aggregations/bucket.ts#L1184-L1187",
       "type": {
         "kind": "union_of",
         "items": [
@@ -52821,13 +54299,15 @@
           }
         }
       ],
-      "specLocation": "_types/aggregations/bucket.ts#L742-L751"
+      "specLocation": "_types/aggregations/bucket.ts#L782-L791"
     },
     {
       "kind": "interface",
       "attachedBehaviors": [
         "AdditionalProperties"
       ],
+      "extDocId": "search-aggregations-bucket-children-aggregation",
+      "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/search-aggregations-bucket-children-aggregation.html",
       "inherits": {
         "type": {
           "name": "SingleBucketAggregateBase",
@@ -52839,7 +54319,7 @@
         "namespace": "_types.aggregations"
       },
       "properties": [],
-      "specLocation": "_types/aggregations/Aggregate.ts#L791-L792",
+      "specLocation": "_types/aggregations/Aggregate.ts#L888-L892",
       "variantName": "children"
     },
     {
@@ -52868,7 +54348,7 @@
           }
         }
       ],
-      "specLocation": "_types/aggregations/bucket.ts#L118-L123"
+      "specLocation": "_types/aggregations/bucket.ts#L121-L126"
     },
     {
       "kind": "interface",
@@ -52904,7 +54384,7 @@
           }
         }
       ],
-      "specLocation": "_types/aggregations/Aggregate.ts#L623-L628",
+      "specLocation": "_types/aggregations/Aggregate.ts#L698-L703",
       "variantName": "composite"
     },
     {
@@ -52913,7 +54393,7 @@
         "name": "CompositeAggregateKey",
         "namespace": "_types.aggregations"
       },
-      "specLocation": "_types/aggregations/bucket.ts#L125-L125",
+      "specLocation": "_types/aggregations/bucket.ts#L128-L128",
       "type": {
         "kind": "dictionary_of",
         "key": {
@@ -52935,6 +54415,8 @@
     },
     {
       "kind": "interface",
+      "extDocId": "search-aggregations-bucket-composite-aggregation",
+      "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/search-aggregations-bucket-composite-aggregation.html",
       "inherits": {
         "type": {
           "name": "BucketAggregationBase",
@@ -52998,7 +54480,7 @@
           }
         }
       ],
-      "specLocation": "_types/aggregations/bucket.ts#L127-L143"
+      "specLocation": "_types/aggregations/bucket.ts#L130-L149"
     },
     {
       "kind": "interface",
@@ -53076,7 +54558,7 @@
           }
         }
       ],
-      "specLocation": "_types/aggregations/bucket.ts#L164-L173"
+      "specLocation": "_types/aggregations/bucket.ts#L170-L179"
     },
     {
       "kind": "interface",
@@ -53134,7 +54616,7 @@
           }
         }
       ],
-      "specLocation": "_types/aggregations/bucket.ts#L145-L162"
+      "specLocation": "_types/aggregations/bucket.ts#L151-L168"
     },
     {
       "kind": "interface",
@@ -53164,7 +54646,7 @@
           }
         }
       ],
-      "specLocation": "_types/aggregations/Aggregate.ts#L630-L632"
+      "specLocation": "_types/aggregations/Aggregate.ts#L705-L707"
     },
     {
       "kind": "interface",
@@ -53237,7 +54719,7 @@
           }
         }
       ],
-      "specLocation": "_types/aggregations/bucket.ts#L181-L189"
+      "specLocation": "_types/aggregations/bucket.ts#L187-L195"
     },
     {
       "kind": "interface",
@@ -53275,7 +54757,7 @@
           }
         }
       ],
-      "specLocation": "_types/aggregations/bucket.ts#L191-L194"
+      "specLocation": "_types/aggregations/bucket.ts#L197-L200"
     },
     {
       "kind": "interface",
@@ -53302,7 +54784,7 @@
           }
         }
       ],
-      "specLocation": "_types/aggregations/bucket.ts#L177-L179"
+      "specLocation": "_types/aggregations/bucket.ts#L183-L185"
     },
     {
       "kind": "interface",
@@ -53317,7 +54799,7 @@
         "namespace": "_types.aggregations"
       },
       "properties": [],
-      "specLocation": "_types/aggregations/bucket.ts#L175-L175"
+      "specLocation": "_types/aggregations/bucket.ts#L181-L181"
     },
     {
       "kind": "interface",
@@ -53356,11 +54838,13 @@
           }
         }
       ],
-      "specLocation": "_types/aggregations/Aggregate.ts#L762-L770",
+      "specLocation": "_types/aggregations/Aggregate.ts#L856-L864",
       "variantName": "simple_long_value"
     },
     {
       "kind": "interface",
+      "extDocId": "search-aggregations-pipeline-cumulative-cardinality-aggregation",
+      "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/search-aggregations-pipeline-cumulative-cardinality-aggregation.html",
       "inherits": {
         "type": {
           "name": "PipelineAggregationBase",
@@ -53372,10 +54856,12 @@
         "namespace": "_types.aggregations"
       },
       "properties": [],
-      "specLocation": "_types/aggregations/pipeline.ts#L192-L192"
+      "specLocation": "_types/aggregations/pipeline.ts#L206-L209"
     },
     {
       "kind": "interface",
+      "extDocId": "search-aggregations-pipeline-cumulative-sum-aggregation",
+      "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/search-aggregations-pipeline-cumulative-sum-aggregation.html",
       "inherits": {
         "type": {
           "name": "PipelineAggregationBase",
@@ -53387,7 +54873,7 @@
         "namespace": "_types.aggregations"
       },
       "properties": [],
-      "specLocation": "_types/aggregations/pipeline.ts#L194-L194"
+      "specLocation": "_types/aggregations/pipeline.ts#L211-L214"
     },
     {
       "kind": "interface",
@@ -53436,10 +54922,12 @@
           }
         }
       ],
-      "specLocation": "_types/aggregations/bucket.ts#L1133-L1137"
+      "specLocation": "_types/aggregations/bucket.ts#L1189-L1193"
     },
     {
       "kind": "interface",
+      "extDocId": "search-aggregations-bucket-datehistogram-aggregation",
+      "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/search-aggregations-bucket-datehistogram-aggregation.html",
       "inherits": {
         "generics": [
           {
@@ -53460,7 +54948,7 @@
         "namespace": "_types.aggregations"
       },
       "properties": [],
-      "specLocation": "_types/aggregations/Aggregate.ts#L351-L352",
+      "specLocation": "_types/aggregations/Aggregate.ts#L383-L386",
       "variantName": "date_histogram"
     },
     {
@@ -53683,7 +55171,7 @@
           }
         }
       ],
-      "specLocation": "_types/aggregations/bucket.ts#L196-L254"
+      "specLocation": "_types/aggregations/bucket.ts#L202-L260"
     },
     {
       "kind": "interface",
@@ -53733,11 +55221,13 @@
           }
         }
       ],
-      "specLocation": "_types/aggregations/Aggregate.ts#L354-L357"
+      "specLocation": "_types/aggregations/Aggregate.ts#L388-L391"
     },
     {
       "kind": "interface",
       "description": "Result of a `date_range` aggregation. Same format as a for a `range` aggregation: `from` and `to`\nin `buckets` are milliseconds since the Epoch, represented as a floating point number.",
+      "extDocId": "search-aggregations-bucket-daterange-aggregation",
+      "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/search-aggregations-bucket-daterange-aggregation.html",
       "inherits": {
         "type": {
           "name": "RangeAggregate",
@@ -53749,7 +55239,7 @@
         "namespace": "_types.aggregations"
       },
       "properties": [],
-      "specLocation": "_types/aggregations/Aggregate.ts#L548-L553",
+      "specLocation": "_types/aggregations/Aggregate.ts#L609-L615",
       "variantName": "date_range"
     },
     {
@@ -53841,7 +55331,7 @@
           }
         }
       ],
-      "specLocation": "_types/aggregations/bucket.ts#L275-L301"
+      "specLocation": "_types/aggregations/bucket.ts#L281-L307"
     },
     {
       "kind": "interface",
@@ -53887,10 +55377,12 @@
           }
         }
       ],
-      "specLocation": "_types/aggregations/bucket.ts#L312-L325"
+      "specLocation": "_types/aggregations/bucket.ts#L318-L331"
     },
     {
       "kind": "interface",
+      "extDocId": "search-aggregations-pipeline-derivative-aggregation",
+      "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/search-aggregations-pipeline-derivative-aggregation.html",
       "inherits": {
         "type": {
           "name": "SingleMetricAggregateBase",
@@ -53925,7 +55417,7 @@
           }
         }
       ],
-      "specLocation": "_types/aggregations/Aggregate.ts#L228-L232",
+      "specLocation": "_types/aggregations/Aggregate.ts#L241-L248",
       "variantName": "derivative"
     },
     {
@@ -53941,10 +55433,12 @@
         "namespace": "_types.aggregations"
       },
       "properties": [],
-      "specLocation": "_types/aggregations/pipeline.ts#L196-L196"
+      "specLocation": "_types/aggregations/pipeline.ts#L216-L216"
     },
     {
       "kind": "interface",
+      "extDocId": "search-aggregations-bucket-diversified-sampler-aggregation",
+      "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/search-aggregations-bucket-diversified-sampler-aggregation.html",
       "inherits": {
         "type": {
           "name": "BucketAggregationBase",
@@ -54019,7 +55513,7 @@
           }
         }
       ],
-      "specLocation": "_types/aggregations/bucket.ts#L327-L348"
+      "specLocation": "_types/aggregations/bucket.ts#L333-L357"
     },
     {
       "kind": "interface",
@@ -54044,7 +55538,7 @@
         "namespace": "_types.aggregations"
       },
       "properties": [],
-      "specLocation": "_types/aggregations/Aggregate.ts#L414-L419",
+      "specLocation": "_types/aggregations/Aggregate.ts#L451-L456",
       "variantName": "dterms"
     },
     {
@@ -54086,7 +55580,7 @@
           }
         }
       ],
-      "specLocation": "_types/aggregations/Aggregate.ts#L421-L424"
+      "specLocation": "_types/aggregations/Aggregate.ts#L458-L461"
     },
     {
       "kind": "interface",
@@ -54107,7 +55601,7 @@
           }
         }
       ],
-      "specLocation": "_types/aggregations/pipeline.ts#L267-L269"
+      "specLocation": "_types/aggregations/pipeline.ts#L293-L295"
     },
     {
       "kind": "interface",
@@ -54142,7 +55636,7 @@
           }
         }
       ],
-      "specLocation": "_types/aggregations/pipeline.ts#L252-L255"
+      "specLocation": "_types/aggregations/pipeline.ts#L278-L281"
     },
     {
       "kind": "interface",
@@ -54182,10 +55676,12 @@
           }
         }
       ],
-      "specLocation": "_types/aggregations/bucket.ts#L496-L505"
+      "specLocation": "_types/aggregations/bucket.ts#L508-L517"
     },
     {
       "kind": "interface",
+      "extDocId": "search-aggregations-metrics-extendedstats-aggregation",
+      "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/search-aggregations-metrics-extendedstats-aggregation.html",
       "inherits": {
         "type": {
           "name": "StatsAggregate",
@@ -54436,7 +55932,7 @@
           }
         }
       ],
-      "specLocation": "_types/aggregations/Aggregate.ts#L279-L297",
+      "specLocation": "_types/aggregations/Aggregate.ts#L299-L320",
       "variantName": "extended_stats"
     },
     {
@@ -54480,7 +55976,7 @@
         "namespace": "_types.aggregations"
       },
       "properties": [],
-      "specLocation": "_types/aggregations/Aggregate.ts#L299-L300",
+      "specLocation": "_types/aggregations/Aggregate.ts#L322-L323",
       "variantName": "extended_stats_bucket"
     },
     {
@@ -54509,7 +56005,7 @@
           }
         }
       ],
-      "specLocation": "_types/aggregations/pipeline.ts#L198-L203"
+      "specLocation": "_types/aggregations/pipeline.ts#L218-L223"
     },
     {
       "kind": "type_alias",
@@ -54522,7 +56018,7 @@
         "name": "FieldDateMath",
         "namespace": "_types.aggregations"
       },
-      "specLocation": "_types/aggregations/bucket.ts#L303-L310",
+      "specLocation": "_types/aggregations/bucket.ts#L309-L316",
       "type": {
         "kind": "union_of",
         "items": [
@@ -54548,6 +56044,8 @@
       "attachedBehaviors": [
         "AdditionalProperties"
       ],
+      "extDocId": "search-aggregations-bucket-filter-aggregation",
+      "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/search-aggregations-bucket-filter-aggregation.html",
       "inherits": {
         "type": {
           "name": "SingleBucketAggregateBase",
@@ -54559,11 +56057,13 @@
         "namespace": "_types.aggregations"
       },
       "properties": [],
-      "specLocation": "_types/aggregations/Aggregate.ts#L500-L501",
+      "specLocation": "_types/aggregations/Aggregate.ts#L552-L556",
       "variantName": "filter"
     },
     {
       "kind": "interface",
+      "extDocId": "search-aggregations-bucket-filters-aggregation",
+      "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/search-aggregations-bucket-filters-aggregation.html",
       "inherits": {
         "generics": [
           {
@@ -54584,7 +56084,7 @@
         "namespace": "_types.aggregations"
       },
       "properties": [],
-      "specLocation": "_types/aggregations/Aggregate.ts#L573-L574",
+      "specLocation": "_types/aggregations/Aggregate.ts#L639-L643",
       "variantName": "filters"
     },
     {
@@ -54660,7 +56160,7 @@
           }
         }
       ],
-      "specLocation": "_types/aggregations/bucket.ts#L365-L385"
+      "specLocation": "_types/aggregations/bucket.ts#L374-L394"
     },
     {
       "kind": "interface",
@@ -54678,7 +56178,7 @@
         "namespace": "_types.aggregations"
       },
       "properties": [],
-      "specLocation": "_types/aggregations/Aggregate.ts#L576-L576"
+      "specLocation": "_types/aggregations/Aggregate.ts#L645-L645"
     },
     {
       "kind": "interface",
@@ -54756,11 +56256,13 @@
         "namespace": "_types.aggregations"
       },
       "properties": [],
-      "specLocation": "_types/aggregations/Aggregate.ts#L644-L645",
+      "specLocation": "_types/aggregations/Aggregate.ts#L722-L723",
       "variantName": "frequent_item_sets"
     },
     {
       "kind": "interface",
+      "extDocId": "search-aggregations-bucket-frequent-item-sets-aggregation",
+      "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/search-aggregations-bucket-frequent-item-sets-aggregation.html",
       "name": {
         "name": "FrequentItemSetsAggregation",
         "namespace": "_types.aggregations"
@@ -54833,7 +56335,7 @@
           }
         }
       ],
-      "specLocation": "_types/aggregations/bucket.ts#L1184-L1208"
+      "specLocation": "_types/aggregations/bucket.ts#L1240-L1267"
     },
     {
       "kind": "interface",
@@ -54888,7 +56390,7 @@
           }
         }
       ],
-      "specLocation": "_types/aggregations/Aggregate.ts#L647-L650"
+      "specLocation": "_types/aggregations/Aggregate.ts#L725-L728"
     },
     {
       "kind": "interface",
@@ -54933,7 +56435,7 @@
           }
         }
       ],
-      "specLocation": "_types/aggregations/bucket.ts#L1170-L1182"
+      "specLocation": "_types/aggregations/bucket.ts#L1226-L1238"
     },
     {
       "kind": "enum",
@@ -54959,6 +56461,8 @@
     },
     {
       "kind": "interface",
+      "extDocId": "search-aggregations-metrics-geobounds-aggregation",
+      "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/search-aggregations-metrics-geobounds-aggregation.html",
       "inherits": {
         "type": {
           "name": "AggregateBase",
@@ -54982,11 +56486,13 @@
           }
         }
       ],
-      "specLocation": "_types/aggregations/Aggregate.ts#L304-L307",
+      "specLocation": "_types/aggregations/Aggregate.ts#L327-L333",
       "variantName": "geo_bounds"
     },
     {
       "kind": "interface",
+      "extDocId": "search-aggregations-metrics-geobounds-aggregation",
+      "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/search-aggregations-metrics-geobounds-aggregation.html",
       "inherits": {
         "type": {
           "name": "MetricAggregationBase",
@@ -55012,10 +56518,12 @@
           }
         }
       ],
-      "specLocation": "_types/aggregations/metric.ts#L108-L114"
+      "specLocation": "_types/aggregations/metric.ts#L108-L117"
     },
     {
       "kind": "interface",
+      "extDocId": "search-aggregations-metrics-geocentroid-aggregation",
+      "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/search-aggregations-metrics-geocentroid-aggregation.html",
       "inherits": {
         "type": {
           "name": "AggregateBase",
@@ -55050,7 +56558,7 @@
           }
         }
       ],
-      "specLocation": "_types/aggregations/Aggregate.ts#L309-L313",
+      "specLocation": "_types/aggregations/Aggregate.ts#L335-L342",
       "variantName": "geo_centroid"
     },
     {
@@ -55089,11 +56597,13 @@
           }
         }
       ],
-      "specLocation": "_types/aggregations/metric.ts#L116-L119"
+      "specLocation": "_types/aggregations/metric.ts#L119-L122"
     },
     {
       "kind": "interface",
       "description": "Result of a `geo_distance` aggregation. The unit for `from` and `to` is meters by default.",
+      "extDocId": "search-aggregations-bucket-geodistance-aggregation",
+      "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/search-aggregations-bucket-geodistance-aggregation.html",
       "inherits": {
         "type": {
           "name": "RangeAggregate",
@@ -55105,7 +56615,7 @@
         "namespace": "_types.aggregations"
       },
       "properties": [],
-      "specLocation": "_types/aggregations/Aggregate.ts#L555-L559",
+      "specLocation": "_types/aggregations/Aggregate.ts#L617-L622",
       "variantName": "geo_distance"
     },
     {
@@ -55187,7 +56697,7 @@
           }
         }
       ],
-      "specLocation": "_types/aggregations/bucket.ts#L387-L410"
+      "specLocation": "_types/aggregations/bucket.ts#L396-L419"
     },
     {
       "kind": "interface",
@@ -55211,11 +56721,13 @@
         "namespace": "_types.aggregations"
       },
       "properties": [],
-      "specLocation": "_types/aggregations/Aggregate.ts#L511-L513",
+      "specLocation": "_types/aggregations/Aggregate.ts#L566-L568",
       "variantName": "geohash_grid"
     },
     {
       "kind": "interface",
+      "extDocId": "search-aggregations-bucket-geohashgrid-aggregation",
+      "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/search-aggregations-bucket-geohashgrid-aggregation.html",
       "inherits": {
         "type": {
           "name": "BucketAggregationBase",
@@ -55290,7 +56802,7 @@
           }
         }
       ],
-      "specLocation": "_types/aggregations/bucket.ts#L412-L437"
+      "specLocation": "_types/aggregations/bucket.ts#L421-L449"
     },
     {
       "kind": "interface",
@@ -55320,7 +56832,7 @@
           }
         }
       ],
-      "specLocation": "_types/aggregations/Aggregate.ts#L515-L517"
+      "specLocation": "_types/aggregations/Aggregate.ts#L570-L572"
     },
     {
       "kind": "interface",
@@ -55344,7 +56856,7 @@
         "namespace": "_types.aggregations"
       },
       "properties": [],
-      "specLocation": "_types/aggregations/Aggregate.ts#L527-L528",
+      "specLocation": "_types/aggregations/Aggregate.ts#L585-L586",
       "variantName": "geohex_grid"
     },
     {
@@ -55375,10 +56887,12 @@
           }
         }
       ],
-      "specLocation": "_types/aggregations/Aggregate.ts#L530-L532"
+      "specLocation": "_types/aggregations/Aggregate.ts#L588-L590"
     },
     {
       "kind": "interface",
+      "extDocId": "search-aggregations-metrics-geo-line",
+      "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/search-aggregations-metrics-geo-line.html",
       "inherits": {
         "type": {
           "name": "AggregateBase",
@@ -55420,7 +56934,7 @@
           }
         }
       ],
-      "specLocation": "_types/aggregations/Aggregate.ts#L799-L806",
+      "specLocation": "_types/aggregations/Aggregate.ts#L902-L912",
       "variantName": "geo_line"
     },
     {
@@ -55493,7 +57007,7 @@
           }
         }
       ],
-      "specLocation": "_types/aggregations/metric.ts#L121-L146"
+      "specLocation": "_types/aggregations/metric.ts#L124-L149"
     },
     {
       "kind": "interface",
@@ -55515,7 +57029,7 @@
           }
         }
       ],
-      "specLocation": "_types/aggregations/metric.ts#L155-L160"
+      "specLocation": "_types/aggregations/metric.ts#L158-L163"
     },
     {
       "kind": "interface",
@@ -55537,10 +57051,12 @@
           }
         }
       ],
-      "specLocation": "_types/aggregations/metric.ts#L148-L153"
+      "specLocation": "_types/aggregations/metric.ts#L151-L156"
     },
     {
       "kind": "interface",
+      "extDocId": "search-aggregations-bucket-geotilegrid-aggregation",
+      "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/search-aggregations-bucket-geotilegrid-aggregation.html",
       "inherits": {
         "generics": [
           {
@@ -55561,7 +57077,7 @@
         "namespace": "_types.aggregations"
       },
       "properties": [],
-      "specLocation": "_types/aggregations/Aggregate.ts#L519-L521",
+      "specLocation": "_types/aggregations/Aggregate.ts#L574-L579",
       "variantName": "geotile_grid"
     },
     {
@@ -55640,7 +57156,7 @@
           }
         }
       ],
-      "specLocation": "_types/aggregations/bucket.ts#L439-L465"
+      "specLocation": "_types/aggregations/bucket.ts#L451-L477"
     },
     {
       "kind": "interface",
@@ -55670,7 +57186,7 @@
           }
         }
       ],
-      "specLocation": "_types/aggregations/Aggregate.ts#L523-L525"
+      "specLocation": "_types/aggregations/Aggregate.ts#L581-L583"
     },
     {
       "kind": "interface",
@@ -55748,13 +57264,15 @@
           }
         }
       ],
-      "specLocation": "_types/aggregations/bucket.ts#L467-L492"
+      "specLocation": "_types/aggregations/bucket.ts#L479-L504"
     },
     {
       "kind": "interface",
       "attachedBehaviors": [
         "AdditionalProperties"
       ],
+      "extDocId": "search-aggregations-bucket-global-aggregation",
+      "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/search-aggregations-bucket-global-aggregation.html",
       "inherits": {
         "type": {
           "name": "SingleBucketAggregateBase",
@@ -55766,7 +57284,7 @@
         "namespace": "_types.aggregations"
       },
       "properties": [],
-      "specLocation": "_types/aggregations/Aggregate.ts#L497-L498",
+      "specLocation": "_types/aggregations/Aggregate.ts#L546-L550",
       "variantName": "global"
     },
     {
@@ -55782,7 +57300,7 @@
         "namespace": "_types.aggregations"
       },
       "properties": [],
-      "specLocation": "_types/aggregations/bucket.ts#L494-L494"
+      "specLocation": "_types/aggregations/bucket.ts#L506-L506"
     },
     {
       "kind": "interface",
@@ -55804,7 +57322,7 @@
           }
         }
       ],
-      "specLocation": "_types/aggregations/bucket.ts#L753-L758"
+      "specLocation": "_types/aggregations/bucket.ts#L793-L798"
     },
     {
       "kind": "interface",
@@ -55826,7 +57344,7 @@
           }
         }
       ],
-      "specLocation": "_types/aggregations/metric.ts#L216-L221"
+      "specLocation": "_types/aggregations/metric.ts#L225-L230"
     },
     {
       "kind": "interface",
@@ -55841,7 +57359,7 @@
         "namespace": "_types.aggregations"
       },
       "properties": [],
-      "specLocation": "_types/aggregations/Aggregate.ts#L170-L171",
+      "specLocation": "_types/aggregations/Aggregate.ts#L171-L172",
       "variantName": "hdr_percentile_ranks"
     },
     {
@@ -55857,11 +57375,13 @@
         "namespace": "_types.aggregations"
       },
       "properties": [],
-      "specLocation": "_types/aggregations/Aggregate.ts#L167-L168",
+      "specLocation": "_types/aggregations/Aggregate.ts#L168-L169",
       "variantName": "hdr_percentiles"
     },
     {
       "kind": "interface",
+      "extDocId": "search-aggregations-bucket-histogram-aggregation",
+      "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/search-aggregations-bucket-histogram-aggregation.html",
       "inherits": {
         "generics": [
           {
@@ -55882,7 +57402,7 @@
         "namespace": "_types.aggregations"
       },
       "properties": [],
-      "specLocation": "_types/aggregations/Aggregate.ts#L343-L344",
+      "specLocation": "_types/aggregations/Aggregate.ts#L372-L376",
       "variantName": "histogram"
     },
     {
@@ -56048,7 +57568,7 @@
           }
         }
       ],
-      "specLocation": "_types/aggregations/bucket.ts#L507-L553"
+      "specLocation": "_types/aggregations/bucket.ts#L519-L565"
     },
     {
       "kind": "interface",
@@ -56089,7 +57609,7 @@
           }
         }
       ],
-      "specLocation": "_types/aggregations/Aggregate.ts#L346-L349"
+      "specLocation": "_types/aggregations/Aggregate.ts#L378-L381"
     },
     {
       "kind": "interface",
@@ -56121,7 +57641,7 @@
           }
         }
       ],
-      "specLocation": "_types/aggregations/pipeline.ts#L271-L274"
+      "specLocation": "_types/aggregations/pipeline.ts#L297-L300"
     },
     {
       "kind": "interface",
@@ -56156,7 +57676,7 @@
           }
         }
       ],
-      "specLocation": "_types/aggregations/pipeline.ts#L257-L260"
+      "specLocation": "_types/aggregations/pipeline.ts#L283-L286"
     },
     {
       "kind": "interface",
@@ -56232,7 +57752,7 @@
           }
         }
       ],
-      "specLocation": "_types/aggregations/pipeline.ts#L275-L282"
+      "specLocation": "_types/aggregations/pipeline.ts#L301-L308"
     },
     {
       "kind": "interface",
@@ -56267,7 +57787,7 @@
           }
         }
       ],
-      "specLocation": "_types/aggregations/pipeline.ts#L262-L265"
+      "specLocation": "_types/aggregations/pipeline.ts#L288-L291"
     },
     {
       "kind": "enum",
@@ -56285,7 +57805,7 @@
         "name": "HoltWintersType",
         "namespace": "_types.aggregations"
       },
-      "specLocation": "_types/aggregations/pipeline.ts#L283-L286"
+      "specLocation": "_types/aggregations/pipeline.ts#L309-L312"
     },
     {
       "kind": "interface",
@@ -56316,6 +57836,8 @@
           }
         }
       ],
+      "extDocId": "search-aggregations-pipeline-inference-bucket-aggregation",
+      "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/search-aggregations-pipeline-inference-bucket-aggregation.html",
       "inherits": {
         "type": {
           "name": "AggregateBase",
@@ -56378,7 +57900,7 @@
           }
         }
       ],
-      "specLocation": "_types/aggregations/Aggregate.ts#L671-L685",
+      "specLocation": "_types/aggregations/Aggregate.ts#L755-L770",
       "variantName": "inference"
     },
     {
@@ -56419,7 +57941,7 @@
           }
         }
       ],
-      "specLocation": "_types/aggregations/pipeline.ts#L205-L214"
+      "specLocation": "_types/aggregations/pipeline.ts#L225-L234"
     },
     {
       "kind": "interface",
@@ -56451,7 +57973,7 @@
           }
         }
       ],
-      "specLocation": "_types/aggregations/Aggregate.ts#L699-L702"
+      "specLocation": "_types/aggregations/Aggregate.ts#L784-L787"
     },
     {
       "kind": "interface",
@@ -56485,7 +58007,7 @@
           }
         }
       ],
-      "specLocation": "_types/aggregations/pipeline.ts#L216-L222",
+      "specLocation": "_types/aggregations/pipeline.ts#L236-L242",
       "variants": {
         "kind": "container"
       }
@@ -56534,7 +58056,7 @@
           }
         }
       ],
-      "specLocation": "_types/aggregations/Aggregate.ts#L693-L697"
+      "specLocation": "_types/aggregations/Aggregate.ts#L778-L782"
     },
     {
       "kind": "interface",
@@ -56577,10 +58099,12 @@
           }
         }
       ],
-      "specLocation": "_types/aggregations/Aggregate.ts#L687-L691"
+      "specLocation": "_types/aggregations/Aggregate.ts#L772-L776"
     },
     {
       "kind": "interface",
+      "extDocId": "search-aggregations-bucket-ipprefix-aggregation",
+      "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/search-aggregations-bucket-ipprefix-aggregation.html",
       "inherits": {
         "generics": [
           {
@@ -56601,7 +58125,7 @@
         "namespace": "_types.aggregations"
       },
       "properties": [],
-      "specLocation": "_types/aggregations/Aggregate.ts#L634-L635",
+      "specLocation": "_types/aggregations/Aggregate.ts#L709-L713",
       "variantName": "ip_prefix"
     },
     {
@@ -56693,7 +58217,7 @@
           }
         }
       ],
-      "specLocation": "_types/aggregations/bucket.ts#L1139-L1168"
+      "specLocation": "_types/aggregations/bucket.ts#L1195-L1224"
     },
     {
       "kind": "interface",
@@ -56756,10 +58280,12 @@
           }
         }
       ],
-      "specLocation": "_types/aggregations/Aggregate.ts#L637-L642"
+      "specLocation": "_types/aggregations/Aggregate.ts#L715-L720"
     },
     {
       "kind": "interface",
+      "extDocId": "search-aggregations-bucket-iprange-aggregation",
+      "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/search-aggregations-bucket-iprange-aggregation.html",
       "inherits": {
         "generics": [
           {
@@ -56780,7 +58306,7 @@
         "namespace": "_types.aggregations"
       },
       "properties": [],
-      "specLocation": "_types/aggregations/Aggregate.ts#L561-L563",
+      "specLocation": "_types/aggregations/Aggregate.ts#L624-L629",
       "variantName": "ip_range"
     },
     {
@@ -56824,7 +58350,7 @@
           }
         }
       ],
-      "specLocation": "_types/aggregations/bucket.ts#L555-L564"
+      "specLocation": "_types/aggregations/bucket.ts#L567-L576"
     },
     {
       "kind": "interface",
@@ -56894,7 +58420,7 @@
           }
         }
       ],
-      "specLocation": "_types/aggregations/bucket.ts#L566-L579"
+      "specLocation": "_types/aggregations/bucket.ts#L578-L591"
     },
     {
       "kind": "interface",
@@ -56946,7 +58472,7 @@
           }
         }
       ],
-      "specLocation": "_types/aggregations/Aggregate.ts#L565-L569"
+      "specLocation": "_types/aggregations/Aggregate.ts#L631-L635"
     },
     {
       "kind": "type_alias",
@@ -56954,7 +58480,7 @@
         "name": "KeyedPercentiles",
         "namespace": "_types.aggregations"
       },
-      "specLocation": "_types/aggregations/Aggregate.ts#L159-L159",
+      "specLocation": "_types/aggregations/Aggregate.ts#L160-L160",
       "type": {
         "kind": "dictionary_of",
         "key": {
@@ -57026,7 +58552,7 @@
           }
         }
       ],
-      "specLocation": "_types/aggregations/pipeline.ts#L242-L245"
+      "specLocation": "_types/aggregations/pipeline.ts#L268-L271"
     },
     {
       "kind": "interface",
@@ -57051,7 +58577,7 @@
         "namespace": "_types.aggregations"
       },
       "properties": [],
-      "specLocation": "_types/aggregations/Aggregate.ts#L434-L439",
+      "specLocation": "_types/aggregations/Aggregate.ts#L471-L476",
       "variantName": "lrareterms"
     },
     {
@@ -57093,7 +58619,7 @@
           }
         }
       ],
-      "specLocation": "_types/aggregations/Aggregate.ts#L441-L444"
+      "specLocation": "_types/aggregations/Aggregate.ts#L478-L481"
     },
     {
       "kind": "interface",
@@ -57118,7 +58644,7 @@
         "namespace": "_types.aggregations"
       },
       "properties": [],
-      "specLocation": "_types/aggregations/Aggregate.ts#L402-L407",
+      "specLocation": "_types/aggregations/Aggregate.ts#L439-L444",
       "variantName": "lterms"
     },
     {
@@ -57160,7 +58686,7 @@
           }
         }
       ],
-      "specLocation": "_types/aggregations/Aggregate.ts#L409-L412"
+      "specLocation": "_types/aggregations/Aggregate.ts#L446-L449"
     },
     {
       "kind": "interface",
@@ -57215,6 +58741,8 @@
     },
     {
       "kind": "interface",
+      "extDocId": "search-aggregations-matrix-stats-aggregation",
+      "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/search-aggregations-matrix-stats-aggregation.html",
       "inherits": {
         "type": {
           "name": "AggregateBase",
@@ -57252,7 +58780,7 @@
           }
         }
       ],
-      "specLocation": "_types/aggregations/Aggregate.ts#L772-L776",
+      "specLocation": "_types/aggregations/Aggregate.ts#L866-L873",
       "variantName": "matrix_stats"
     },
     {
@@ -57402,10 +58930,12 @@
           }
         }
       ],
-      "specLocation": "_types/aggregations/Aggregate.ts#L778-L787"
+      "specLocation": "_types/aggregations/Aggregate.ts#L875-L884"
     },
     {
       "kind": "interface",
+      "extDocId": "search-aggregations-metrics-max-aggregation",
+      "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/search-aggregations-metrics-max-aggregation.html",
       "inherits": {
         "type": {
           "name": "SingleMetricAggregateBase",
@@ -57417,7 +58947,7 @@
         "namespace": "_types.aggregations"
       },
       "properties": [],
-      "specLocation": "_types/aggregations/Aggregate.ts#L201-L202",
+      "specLocation": "_types/aggregations/Aggregate.ts#L205-L209",
       "variantName": "max"
     },
     {
@@ -57433,10 +58963,12 @@
         "namespace": "_types.aggregations"
       },
       "properties": [],
-      "specLocation": "_types/aggregations/metric.ts#L162-L162"
+      "specLocation": "_types/aggregations/metric.ts#L165-L165"
     },
     {
       "kind": "interface",
+      "extDocId": "search-aggregations-pipeline-max-bucket-aggregation",
+      "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/search-aggregations-pipeline-max-bucket-aggregation.html",
       "inherits": {
         "type": {
           "name": "PipelineAggregationBase",
@@ -57448,7 +58980,7 @@
         "namespace": "_types.aggregations"
       },
       "properties": [],
-      "specLocation": "_types/aggregations/pipeline.ts#L224-L224"
+      "specLocation": "_types/aggregations/pipeline.ts#L244-L247"
     },
     {
       "kind": "interface",
@@ -57463,11 +58995,13 @@
         "namespace": "_types.aggregations"
       },
       "properties": [],
-      "specLocation": "_types/aggregations/Aggregate.ts#L195-L196",
+      "specLocation": "_types/aggregations/Aggregate.ts#L196-L197",
       "variantName": "median_absolute_deviation"
     },
     {
       "kind": "interface",
+      "extDocId": "search-aggregations-metrics-median-absolute-deviation-aggregation",
+      "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/search-aggregations-metrics-median-absolute-deviation-aggregation.html",
       "inherits": {
         "type": {
           "name": "FormatMetricAggregationBase",
@@ -57493,7 +59027,7 @@
           }
         }
       ],
-      "specLocation": "_types/aggregations/metric.ts#L164-L170"
+      "specLocation": "_types/aggregations/metric.ts#L167-L176"
     },
     {
       "kind": "interface",
@@ -57542,6 +59076,8 @@
     },
     {
       "kind": "interface",
+      "extDocId": "search-aggregations-metrics-min-aggregation",
+      "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/search-aggregations-metrics-min-aggregation.html",
       "inherits": {
         "type": {
           "name": "SingleMetricAggregateBase",
@@ -57553,7 +59089,7 @@
         "namespace": "_types.aggregations"
       },
       "properties": [],
-      "specLocation": "_types/aggregations/Aggregate.ts#L198-L199",
+      "specLocation": "_types/aggregations/Aggregate.ts#L199-L203",
       "variantName": "min"
     },
     {
@@ -57569,10 +59105,12 @@
         "namespace": "_types.aggregations"
       },
       "properties": [],
-      "specLocation": "_types/aggregations/metric.ts#L172-L172"
+      "specLocation": "_types/aggregations/metric.ts#L178-L178"
     },
     {
       "kind": "interface",
+      "extDocId": "search-aggregations-pipeline-min-bucket-aggregation",
+      "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/search-aggregations-pipeline-min-bucket-aggregation.html",
       "inherits": {
         "type": {
           "name": "PipelineAggregationBase",
@@ -57584,7 +59122,7 @@
         "namespace": "_types.aggregations"
       },
       "properties": [],
-      "specLocation": "_types/aggregations/pipeline.ts#L226-L226"
+      "specLocation": "_types/aggregations/pipeline.ts#L249-L252"
     },
     {
       "kind": "enum",
@@ -57612,7 +59150,7 @@
         "name": "MinimumInterval",
         "namespace": "_types.aggregations"
       },
-      "specLocation": "_types/aggregations/bucket.ts#L109-L116"
+      "specLocation": "_types/aggregations/bucket.ts#L112-L119"
     },
     {
       "kind": "type_alias",
@@ -57620,7 +59158,7 @@
         "name": "Missing",
         "namespace": "_types.aggregations"
       },
-      "specLocation": "_types/aggregations/AggregationContainer.ts#L525-L525",
+      "specLocation": "_types/aggregations/AggregationContainer.ts#L535-L535",
       "type": {
         "kind": "union_of",
         "items": [
@@ -57660,6 +59198,8 @@
       "attachedBehaviors": [
         "AdditionalProperties"
       ],
+      "extDocId": "search-aggregations-bucket-missing-aggregation",
+      "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/search-aggregations-bucket-missing-aggregation.html",
       "inherits": {
         "type": {
           "name": "SingleBucketAggregateBase",
@@ -57671,7 +59211,7 @@
         "namespace": "_types.aggregations"
       },
       "properties": [],
-      "specLocation": "_types/aggregations/Aggregate.ts#L488-L489",
+      "specLocation": "_types/aggregations/Aggregate.ts#L528-L532",
       "variantName": "missing"
     },
     {
@@ -57711,7 +59251,7 @@
           }
         }
       ],
-      "specLocation": "_types/aggregations/bucket.ts#L581-L587"
+      "specLocation": "_types/aggregations/bucket.ts#L593-L599"
     },
     {
       "kind": "enum",
@@ -57730,7 +59270,7 @@
         "name": "MissingOrder",
         "namespace": "_types.aggregations"
       },
-      "specLocation": "_types/aggregations/AggregationContainer.ts#L526-L530"
+      "specLocation": "_types/aggregations/AggregationContainer.ts#L536-L540"
     },
     {
       "kind": "type_alias",
@@ -57738,7 +59278,7 @@
         "name": "MovingAverageAggregation",
         "namespace": "_types.aggregations"
       },
-      "specLocation": "_types/aggregations/pipeline.ts#L228-L234",
+      "specLocation": "_types/aggregations/pipeline.ts#L254-L260",
       "type": {
         "kind": "union_of",
         "items": [
@@ -57831,10 +59371,12 @@
           }
         }
       ],
-      "specLocation": "_types/aggregations/pipeline.ts#L236-L240"
+      "specLocation": "_types/aggregations/pipeline.ts#L262-L266"
     },
     {
       "kind": "interface",
+      "extDocId": "search-aggregations-pipeline-movfn-aggregation",
+      "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/search-aggregations-pipeline-movfn-aggregation.html",
       "inherits": {
         "type": {
           "name": "PipelineAggregationBase",
@@ -57884,10 +59426,12 @@
           }
         }
       ],
-      "specLocation": "_types/aggregations/pipeline.ts#L288-L303"
+      "specLocation": "_types/aggregations/pipeline.ts#L314-L332"
     },
     {
       "kind": "interface",
+      "extDocId": "search-aggregations-pipeline-moving-percentiles-aggregation",
+      "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/search-aggregations-pipeline-moving-percentiles-aggregation.html",
       "inherits": {
         "type": {
           "name": "PipelineAggregationBase",
@@ -57936,7 +59480,7 @@
           }
         }
       ],
-      "specLocation": "_types/aggregations/pipeline.ts#L305-L317"
+      "specLocation": "_types/aggregations/pipeline.ts#L334-L349"
     },
     {
       "kind": "interface",
@@ -57978,7 +59522,7 @@
           }
         }
       ],
-      "specLocation": "_types/aggregations/Aggregate.ts#L328-L330"
+      "specLocation": "_types/aggregations/Aggregate.ts#L357-L359"
     },
     {
       "kind": "interface",
@@ -58031,7 +59575,7 @@
           }
         }
       ],
-      "specLocation": "_types/aggregations/Aggregate.ts#L332-L341"
+      "specLocation": "_types/aggregations/Aggregate.ts#L361-L370"
     },
     {
       "kind": "interface",
@@ -58065,10 +59609,12 @@
           }
         }
       ],
-      "specLocation": "_types/aggregations/bucket.ts#L631-L641"
+      "specLocation": "_types/aggregations/bucket.ts#L643-L653"
     },
     {
       "kind": "interface",
+      "extDocId": "search-aggregations-bucket-multi-terms-aggregation",
+      "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/search-aggregations-bucket-multi-terms-aggregation.html",
       "inherits": {
         "generics": [
           {
@@ -58089,7 +59635,7 @@
         "namespace": "_types.aggregations"
       },
       "properties": [],
-      "specLocation": "_types/aggregations/Aggregate.ts#L464-L466",
+      "specLocation": "_types/aggregations/Aggregate.ts#L501-L506",
       "variantName": "multi_terms"
     },
     {
@@ -58210,7 +59756,7 @@
           }
         }
       ],
-      "specLocation": "_types/aggregations/bucket.ts#L589-L629"
+      "specLocation": "_types/aggregations/bucket.ts#L601-L641"
     },
     {
       "kind": "interface",
@@ -58265,7 +59811,7 @@
           }
         }
       ],
-      "specLocation": "_types/aggregations/Aggregate.ts#L468-L472"
+      "specLocation": "_types/aggregations/Aggregate.ts#L508-L512"
     },
     {
       "kind": "interface",
@@ -58299,13 +59845,15 @@
           }
         }
       ],
-      "specLocation": "_types/aggregations/bucket.ts#L760-L769"
+      "specLocation": "_types/aggregations/bucket.ts#L800-L809"
     },
     {
       "kind": "interface",
       "attachedBehaviors": [
         "AdditionalProperties"
       ],
+      "extDocId": "search-aggregations-bucket-nested-aggregation",
+      "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/search-aggregations-bucket-nested-aggregation.html",
       "inherits": {
         "type": {
           "name": "SingleBucketAggregateBase",
@@ -58317,7 +59865,7 @@
         "namespace": "_types.aggregations"
       },
       "properties": [],
-      "specLocation": "_types/aggregations/Aggregate.ts#L491-L492",
+      "specLocation": "_types/aggregations/Aggregate.ts#L534-L538",
       "variantName": "nested"
     },
     {
@@ -58346,10 +59894,12 @@
           }
         }
       ],
-      "specLocation": "_types/aggregations/bucket.ts#L643-L648"
+      "specLocation": "_types/aggregations/bucket.ts#L655-L660"
     },
     {
       "kind": "interface",
+      "extDocId": "search-aggregations-pipeline-normalize-aggregation",
+      "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/search-aggregations-pipeline-normalize-aggregation.html",
       "inherits": {
         "type": {
           "name": "PipelineAggregationBase",
@@ -58374,7 +59924,7 @@
           }
         }
       ],
-      "specLocation": "_types/aggregations/pipeline.ts#L319-L324"
+      "specLocation": "_types/aggregations/pipeline.ts#L351-L359"
     },
     {
       "kind": "enum",
@@ -58409,13 +59959,15 @@
         "name": "NormalizeMethod",
         "namespace": "_types.aggregations"
       },
-      "specLocation": "_types/aggregations/pipeline.ts#L326-L352"
+      "specLocation": "_types/aggregations/pipeline.ts#L361-L387"
     },
     {
       "kind": "interface",
       "attachedBehaviors": [
         "AdditionalProperties"
       ],
+      "extDocId": "search-aggregations-bucket-parent-aggregation",
+      "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/search-aggregations-bucket-parent-aggregation.html",
       "inherits": {
         "type": {
           "name": "SingleBucketAggregateBase",
@@ -58427,7 +59979,7 @@
         "namespace": "_types.aggregations"
       },
       "properties": [],
-      "specLocation": "_types/aggregations/Aggregate.ts#L794-L795",
+      "specLocation": "_types/aggregations/Aggregate.ts#L894-L898",
       "variantName": "parent"
     },
     {
@@ -58456,7 +60008,7 @@
           }
         }
       ],
-      "specLocation": "_types/aggregations/bucket.ts#L650-L655"
+      "specLocation": "_types/aggregations/bucket.ts#L662-L667"
     },
     {
       "kind": "interface",
@@ -58465,10 +60017,12 @@
         "namespace": "_types.aggregations"
       },
       "properties": [],
-      "specLocation": "_types/aggregations/bucket.ts#L771-L771"
+      "specLocation": "_types/aggregations/bucket.ts#L811-L811"
     },
     {
       "kind": "interface",
+      "extDocId": "search-aggregations-metrics-percentile-rank-aggregation",
+      "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/search-aggregations-metrics-percentile-rank-aggregation.html",
       "inherits": {
         "type": {
           "name": "FormatMetricAggregationBase",
@@ -58545,7 +60099,7 @@
           }
         }
       ],
-      "specLocation": "_types/aggregations/metric.ts#L174-L193"
+      "specLocation": "_types/aggregations/metric.ts#L180-L202"
     },
     {
       "kind": "type_alias",
@@ -58557,7 +60111,7 @@
         "name": "Percentiles",
         "namespace": "_types.aggregations"
       },
-      "specLocation": "_types/aggregations/Aggregate.ts#L151-L152",
+      "specLocation": "_types/aggregations/Aggregate.ts#L152-L153",
       "type": {
         "kind": "union_of",
         "items": [
@@ -58606,7 +60160,7 @@
           }
         }
       ],
-      "specLocation": "_types/aggregations/Aggregate.ts#L147-L149"
+      "specLocation": "_types/aggregations/Aggregate.ts#L148-L150"
     },
     {
       "kind": "interface",
@@ -58674,7 +60228,7 @@
           }
         }
       ],
-      "specLocation": "_types/aggregations/metric.ts#L195-L214"
+      "specLocation": "_types/aggregations/metric.ts#L204-L223"
     },
     {
       "kind": "interface",
@@ -58689,11 +60243,13 @@
         "namespace": "_types.aggregations"
       },
       "properties": [],
-      "specLocation": "_types/aggregations/Aggregate.ts#L179-L180",
+      "specLocation": "_types/aggregations/Aggregate.ts#L180-L181",
       "variantName": "percentiles_bucket"
     },
     {
       "kind": "interface",
+      "extDocId": "search-aggregations-pipeline-percentiles-bucket-aggregation",
+      "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/search-aggregations-pipeline-percentiles-bucket-aggregation.html",
       "inherits": {
         "type": {
           "name": "PipelineAggregationBase",
@@ -58721,7 +60277,7 @@
           }
         }
       ],
-      "specLocation": "_types/aggregations/pipeline.ts#L354-L359"
+      "specLocation": "_types/aggregations/pipeline.ts#L389-L397"
     },
     {
       "kind": "interface",
@@ -58768,6 +60324,67 @@
     },
     {
       "kind": "interface",
+      "extDocId": "search-aggregations-random-sampler-aggregation",
+      "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/search-aggregations-random-sampler-aggregation.html",
+      "inherits": {
+        "type": {
+          "name": "BucketAggregationBase",
+          "namespace": "_types.aggregations"
+        }
+      },
+      "name": {
+        "name": "RandomSamplerAggregation",
+        "namespace": "_types.aggregations"
+      },
+      "properties": [
+        {
+          "description": "The probability that a document will be included in the aggregated data.\nMust be greater than 0, less than 0.5, or exactly 1.\nThe lower the probability, the fewer documents are matched.",
+          "name": "probability",
+          "required": true,
+          "type": {
+            "kind": "instance_of",
+            "type": {
+              "name": "double",
+              "namespace": "_types"
+            }
+          }
+        },
+        {
+          "description": "The seed to generate the random sampling of documents.\nWhen a seed is provided, the random subset of documents is the same between calls.",
+          "name": "seed",
+          "required": false,
+          "type": {
+            "kind": "instance_of",
+            "type": {
+              "name": "integer",
+              "namespace": "_types"
+            }
+          }
+        },
+        {
+          "availability": {
+            "stack": {
+              "since": "8.14.0"
+            }
+          },
+          "description": "When combined with seed, setting shard_seed ensures 100% consistent sampling over shards where data is exactly the same.",
+          "name": "shard_seed",
+          "required": false,
+          "type": {
+            "kind": "instance_of",
+            "type": {
+              "name": "integer",
+              "namespace": "_types"
+            }
+          }
+        }
+      ],
+      "specLocation": "_types/aggregations/bucket.ts#L749-L769"
+    },
+    {
+      "kind": "interface",
+      "extDocId": "search-aggregations-bucket-range-aggregation",
+      "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/search-aggregations-bucket-range-aggregation.html",
       "inherits": {
         "generics": [
           {
@@ -58788,7 +60405,7 @@
         "namespace": "_types.aggregations"
       },
       "properties": [],
-      "specLocation": "_types/aggregations/Aggregate.ts#L536-L537",
+      "specLocation": "_types/aggregations/Aggregate.ts#L594-L598",
       "variantName": "range"
     },
     {
@@ -58878,7 +60495,7 @@
           }
         }
       ],
-      "specLocation": "_types/aggregations/bucket.ts#L657-L677"
+      "specLocation": "_types/aggregations/bucket.ts#L669-L689"
     },
     {
       "kind": "interface",
@@ -58953,10 +60570,12 @@
           }
         }
       ],
-      "specLocation": "_types/aggregations/Aggregate.ts#L539-L546"
+      "specLocation": "_types/aggregations/Aggregate.ts#L600-L607"
     },
     {
       "kind": "interface",
+      "extDocId": "search-aggregations-bucket-rare-terms-aggregation",
+      "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/search-aggregations-bucket-rare-terms-aggregation.html",
       "inherits": {
         "type": {
           "name": "BucketAggregationBase",
@@ -59054,10 +60673,12 @@
           }
         }
       ],
-      "specLocation": "_types/aggregations/bucket.ts#L694-L724"
+      "specLocation": "_types/aggregations/bucket.ts#L706-L739"
     },
     {
       "kind": "interface",
+      "extDocId": "search-aggregations-metrics-rate-aggregation",
+      "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/search-aggregations-metrics-rate-aggregation.html",
       "inherits": {
         "type": {
           "name": "AggregateBase",
@@ -59092,7 +60713,7 @@
           }
         }
       ],
-      "specLocation": "_types/aggregations/Aggregate.ts#L756-L760",
+      "specLocation": "_types/aggregations/Aggregate.ts#L847-L854",
       "variantName": "rate"
     },
     {
@@ -59134,7 +60755,7 @@
           }
         }
       ],
-      "specLocation": "_types/aggregations/metric.ts#L230-L241"
+      "specLocation": "_types/aggregations/metric.ts#L239-L250"
     },
     {
       "kind": "enum",
@@ -59152,13 +60773,15 @@
         "name": "RateMode",
         "namespace": "_types.aggregations"
       },
-      "specLocation": "_types/aggregations/metric.ts#L243-L252"
+      "specLocation": "_types/aggregations/metric.ts#L252-L261"
     },
     {
       "kind": "interface",
       "attachedBehaviors": [
         "AdditionalProperties"
       ],
+      "extDocId": "search-aggregations-bucket-reverse-nested-aggregation",
+      "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/search-aggregations-bucket-reverse-nested-aggregation.html",
       "inherits": {
         "type": {
           "name": "SingleBucketAggregateBase",
@@ -59170,7 +60793,7 @@
         "namespace": "_types.aggregations"
       },
       "properties": [],
-      "specLocation": "_types/aggregations/Aggregate.ts#L494-L495",
+      "specLocation": "_types/aggregations/Aggregate.ts#L540-L544",
       "variantName": "reverse_nested"
     },
     {
@@ -59199,7 +60822,7 @@
           }
         }
       ],
-      "specLocation": "_types/aggregations/bucket.ts#L726-L732"
+      "specLocation": "_types/aggregations/bucket.ts#L741-L747"
     },
     {
       "kind": "interface",
@@ -59217,11 +60840,13 @@
         "namespace": "_types.aggregations"
       },
       "properties": [],
-      "specLocation": "_types/aggregations/Aggregate.ts#L503-L504",
+      "specLocation": "_types/aggregations/Aggregate.ts#L558-L559",
       "variantName": "sampler"
     },
     {
       "kind": "interface",
+      "extDocId": "search-aggregations-bucket-sampler-aggregation",
+      "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/search-aggregations-bucket-sampler-aggregation.html",
       "inherits": {
         "type": {
           "name": "BucketAggregationBase",
@@ -59247,7 +60872,7 @@
           }
         }
       ],
-      "specLocation": "_types/aggregations/bucket.ts#L734-L740"
+      "specLocation": "_types/aggregations/bucket.ts#L771-L780"
     },
     {
       "kind": "enum",
@@ -59269,7 +60894,7 @@
         "name": "SamplerAggregationExecutionHint",
         "namespace": "_types.aggregations"
       },
-      "specLocation": "_types/aggregations/bucket.ts#L350-L363"
+      "specLocation": "_types/aggregations/bucket.ts#L359-L372"
     },
     {
       "kind": "interface",
@@ -59290,10 +60915,12 @@
           }
         }
       ],
-      "specLocation": "_types/aggregations/bucket.ts#L773-L775"
+      "specLocation": "_types/aggregations/bucket.ts#L813-L815"
     },
     {
       "kind": "interface",
+      "extDocId": "search-aggregations-metrics-scripted-metric-aggregation",
+      "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/search-aggregations-metrics-scripted-metric-aggregation.html",
       "inherits": {
         "type": {
           "name": "AggregateBase",
@@ -59313,7 +60940,7 @@
           }
         }
       ],
-      "specLocation": "_types/aggregations/Aggregate.ts#L661-L664",
+      "specLocation": "_types/aggregations/Aggregate.ts#L739-L745",
       "variantName": "scripted_metric"
     },
     {
@@ -59397,10 +61024,12 @@
           }
         }
       ],
-      "specLocation": "_types/aggregations/metric.ts#L254-L280"
+      "specLocation": "_types/aggregations/metric.ts#L263-L289"
     },
     {
       "kind": "interface",
+      "extDocId": "search-aggregations-pipeline-serialdiff-aggregation",
+      "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/search-aggregations-pipeline-serialdiff-aggregation.html",
       "inherits": {
         "type": {
           "name": "PipelineAggregationBase",
@@ -59425,7 +61054,7 @@
           }
         }
       ],
-      "specLocation": "_types/aggregations/pipeline.ts#L361-L367"
+      "specLocation": "_types/aggregations/pipeline.ts#L399-L408"
     },
     {
       "kind": "interface",
@@ -59449,7 +61078,7 @@
         "namespace": "_types.aggregations"
       },
       "properties": [],
-      "specLocation": "_types/aggregations/Aggregate.ts#L593-L595",
+      "specLocation": "_types/aggregations/Aggregate.ts#L668-L670",
       "variantName": "siglterms"
     },
     {
@@ -59491,7 +61120,7 @@
           }
         }
       ],
-      "specLocation": "_types/aggregations/Aggregate.ts#L602-L605"
+      "specLocation": "_types/aggregations/Aggregate.ts#L677-L680"
     },
     {
       "kind": "interface",
@@ -59515,7 +61144,7 @@
         "namespace": "_types.aggregations"
       },
       "properties": [],
-      "specLocation": "_types/aggregations/Aggregate.ts#L607-L609",
+      "specLocation": "_types/aggregations/Aggregate.ts#L682-L684",
       "variantName": "sigsterms"
     },
     {
@@ -59546,10 +61175,12 @@
           }
         }
       ],
-      "specLocation": "_types/aggregations/Aggregate.ts#L611-L613"
+      "specLocation": "_types/aggregations/Aggregate.ts#L686-L688"
     },
     {
       "kind": "interface",
+      "extDocId": "search-aggregations-bucket-significanttext-aggregation",
+      "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/search-aggregations-bucket-significanttext-aggregation.html",
       "generics": [
         {
           "name": "T",
@@ -59599,10 +61230,12 @@
           }
         }
       ],
-      "specLocation": "_types/aggregations/Aggregate.ts#L586-L591"
+      "specLocation": "_types/aggregations/Aggregate.ts#L658-L666"
     },
     {
       "kind": "interface",
+      "extDocId": "search-aggregations-bucket-significanttext-aggregation",
+      "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/search-aggregations-bucket-significanttext-aggregation.html",
       "inherits": {
         "type": {
           "name": "BucketAggregationBase",
@@ -59796,7 +61429,7 @@
           }
         }
       ],
-      "specLocation": "_types/aggregations/bucket.ts#L777-L841"
+      "specLocation": "_types/aggregations/bucket.ts#L817-L884"
     },
     {
       "kind": "interface",
@@ -59837,10 +61470,12 @@
           }
         }
       ],
-      "specLocation": "_types/aggregations/Aggregate.ts#L597-L600"
+      "specLocation": "_types/aggregations/Aggregate.ts#L672-L675"
     },
     {
       "kind": "interface",
+      "extDocId": "search-aggregations-bucket-significanttext-aggregation",
+      "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/search-aggregations-bucket-significanttext-aggregation.html",
       "inherits": {
         "type": {
           "name": "BucketAggregationBase",
@@ -60058,7 +61693,7 @@
           }
         }
       ],
-      "specLocation": "_types/aggregations/bucket.ts#L843-L915"
+      "specLocation": "_types/aggregations/bucket.ts#L886-L961"
     },
     {
       "kind": "interface",
@@ -60093,7 +61728,7 @@
           }
         }
       ],
-      "specLocation": "_types/aggregations/pipeline.ts#L247-L250"
+      "specLocation": "_types/aggregations/pipeline.ts#L273-L276"
     },
     {
       "kind": "interface",
@@ -60108,7 +61743,7 @@
         "namespace": "_types.aggregations"
       },
       "properties": [],
-      "specLocation": "_types/aggregations/Aggregate.ts#L225-L226",
+      "specLocation": "_types/aggregations/Aggregate.ts#L238-L239",
       "variantName": "simple_value"
     },
     {
@@ -60168,7 +61803,7 @@
           }
         }
       ],
-      "specLocation": "_types/aggregations/Aggregate.ts#L476-L486"
+      "specLocation": "_types/aggregations/Aggregate.ts#L516-L526"
     },
     {
       "kind": "interface",
@@ -60219,7 +61854,7 @@
           }
         }
       ],
-      "specLocation": "_types/aggregations/Aggregate.ts#L184-L193"
+      "specLocation": "_types/aggregations/Aggregate.ts#L185-L194"
     },
     {
       "kind": "interface",
@@ -60367,7 +62002,7 @@
           }
         }
       ],
-      "specLocation": "_types/aggregations/Aggregate.ts#L261-L268"
+      "specLocation": "_types/aggregations/Aggregate.ts#L281-L288"
     },
     {
       "kind": "interface",
@@ -60443,11 +62078,13 @@
           }
         }
       ],
-      "specLocation": "_types/aggregations/Aggregate.ts#L270-L277"
+      "specLocation": "_types/aggregations/Aggregate.ts#L290-L297"
     },
     {
       "kind": "interface",
       "description": "Statistics aggregation result. `min`, `max` and `avg` are missing if there were no values to process\n(`count` is zero).",
+      "extDocId": "search-aggregations-metrics-stats-aggregation",
+      "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/search-aggregations-metrics-stats-aggregation.html",
       "inherits": {
         "type": {
           "name": "AggregateBase",
@@ -60595,7 +62232,7 @@
           }
         }
       ],
-      "specLocation": "_types/aggregations/Aggregate.ts#L241-L256",
+      "specLocation": "_types/aggregations/Aggregate.ts#L257-L273",
       "variantName": "stats"
     },
     {
@@ -60611,10 +62248,12 @@
         "namespace": "_types.aggregations"
       },
       "properties": [],
-      "specLocation": "_types/aggregations/metric.ts#L282-L282"
+      "specLocation": "_types/aggregations/metric.ts#L291-L291"
     },
     {
       "kind": "interface",
+      "extDocId": "search-aggregations-pipeline-stats-bucket-aggregation",
+      "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/search-aggregations-pipeline-stats-bucket-aggregation.html",
       "inherits": {
         "type": {
           "name": "StatsAggregate",
@@ -60626,7 +62265,7 @@
         "namespace": "_types.aggregations"
       },
       "properties": [],
-      "specLocation": "_types/aggregations/Aggregate.ts#L258-L259",
+      "specLocation": "_types/aggregations/Aggregate.ts#L275-L279",
       "variantName": "stats_bucket"
     },
     {
@@ -60642,7 +62281,7 @@
         "namespace": "_types.aggregations"
       },
       "properties": [],
-      "specLocation": "_types/aggregations/pipeline.ts#L369-L369"
+      "specLocation": "_types/aggregations/pipeline.ts#L410-L410"
     },
     {
       "kind": "interface",
@@ -60667,7 +62306,7 @@
         "namespace": "_types.aggregations"
       },
       "properties": [],
-      "specLocation": "_types/aggregations/Aggregate.ts#L446-L450",
+      "specLocation": "_types/aggregations/Aggregate.ts#L483-L487",
       "variantName": "srareterms"
     },
     {
@@ -60698,7 +62337,7 @@
           }
         }
       ],
-      "specLocation": "_types/aggregations/Aggregate.ts#L452-L454"
+      "specLocation": "_types/aggregations/Aggregate.ts#L489-L491"
     },
     {
       "kind": "interface",
@@ -60884,7 +62523,7 @@
           }
         }
       ],
-      "specLocation": "_types/aggregations/Aggregate.ts#L708-L719",
+      "specLocation": "_types/aggregations/Aggregate.ts#L793-L804",
       "variantName": "string_stats"
     },
     {
@@ -60914,7 +62553,7 @@
           }
         }
       ],
-      "specLocation": "_types/aggregations/metric.ts#L284-L290"
+      "specLocation": "_types/aggregations/metric.ts#L293-L299"
     },
     {
       "kind": "interface",
@@ -60939,7 +62578,7 @@
         "namespace": "_types.aggregations"
       },
       "properties": [],
-      "specLocation": "_types/aggregations/Aggregate.ts#L387-L392",
+      "specLocation": "_types/aggregations/Aggregate.ts#L424-L429",
       "variantName": "sterms"
     },
     {
@@ -60970,11 +62609,13 @@
           }
         }
       ],
-      "specLocation": "_types/aggregations/Aggregate.ts#L398-L400"
+      "specLocation": "_types/aggregations/Aggregate.ts#L435-L437"
     },
     {
       "kind": "interface",
       "description": "Sum aggregation result. `value` is always present and is zero if there were no values to process.",
+      "extDocId": "search-aggregations-metrics-sum-aggregation",
+      "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/search-aggregations-metrics-sum-aggregation.html",
       "inherits": {
         "type": {
           "name": "SingleMetricAggregateBase",
@@ -60986,7 +62627,7 @@
         "namespace": "_types.aggregations"
       },
       "properties": [],
-      "specLocation": "_types/aggregations/Aggregate.ts#L204-L208",
+      "specLocation": "_types/aggregations/Aggregate.ts#L211-L216",
       "variantName": "sum"
     },
     {
@@ -61002,10 +62643,12 @@
         "namespace": "_types.aggregations"
       },
       "properties": [],
-      "specLocation": "_types/aggregations/metric.ts#L292-L292"
+      "specLocation": "_types/aggregations/metric.ts#L301-L301"
     },
     {
       "kind": "interface",
+      "extDocId": "search-aggregations-pipeline-sum-bucket-aggregation",
+      "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/search-aggregations-pipeline-sum-bucket-aggregation.html",
       "inherits": {
         "type": {
           "name": "PipelineAggregationBase",
@@ -61017,7 +62660,7 @@
         "namespace": "_types.aggregations"
       },
       "properties": [],
-      "specLocation": "_types/aggregations/pipeline.ts#L371-L371"
+      "specLocation": "_types/aggregations/pipeline.ts#L412-L415"
     },
     {
       "kind": "interface",
@@ -61039,7 +62682,7 @@
           }
         }
       ],
-      "specLocation": "_types/aggregations/metric.ts#L223-L228"
+      "specLocation": "_types/aggregations/metric.ts#L232-L237"
     },
     {
       "kind": "interface",
@@ -61054,7 +62697,7 @@
         "namespace": "_types.aggregations"
       },
       "properties": [],
-      "specLocation": "_types/aggregations/Aggregate.ts#L176-L177",
+      "specLocation": "_types/aggregations/Aggregate.ts#L177-L178",
       "variantName": "tdigest_percentile_ranks"
     },
     {
@@ -61070,11 +62713,13 @@
         "namespace": "_types.aggregations"
       },
       "properties": [],
-      "specLocation": "_types/aggregations/Aggregate.ts#L173-L174",
+      "specLocation": "_types/aggregations/Aggregate.ts#L174-L175",
       "variantName": "tdigest_percentiles"
     },
     {
       "kind": "interface",
+      "extDocId": "search-aggregations-metrics-ttest-aggregation",
+      "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/search-aggregations-metrics-ttest-aggregation.html",
       "inherits": {
         "type": {
           "name": "AggregateBase",
@@ -61121,7 +62766,7 @@
           }
         }
       ],
-      "specLocation": "_types/aggregations/Aggregate.ts#L750-L754",
+      "specLocation": "_types/aggregations/Aggregate.ts#L838-L845",
       "variantName": "t_test"
     },
     {
@@ -61175,7 +62820,7 @@
           }
         }
       ],
-      "specLocation": "_types/aggregations/metric.ts#L294-L308"
+      "specLocation": "_types/aggregations/metric.ts#L303-L317"
     },
     {
       "kind": "enum",
@@ -61197,7 +62842,7 @@
         "name": "TTestType",
         "namespace": "_types.aggregations"
       },
-      "specLocation": "_types/aggregations/metric.ts#L322-L335"
+      "specLocation": "_types/aggregations/metric.ts#L331-L344"
     },
     {
       "kind": "interface",
@@ -61250,10 +62895,12 @@
           }
         }
       ],
-      "specLocation": "_types/aggregations/Aggregate.ts#L380-L385"
+      "specLocation": "_types/aggregations/Aggregate.ts#L417-L422"
     },
     {
       "kind": "interface",
+      "extDocId": "search-aggregations-bucket-terms-aggregation",
+      "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/search-aggregations-bucket-terms-aggregation.html",
       "inherits": {
         "type": {
           "name": "BucketAggregationBase",
@@ -61468,7 +63115,7 @@
           }
         }
       ],
-      "specLocation": "_types/aggregations/bucket.ts#L917-L982"
+      "specLocation": "_types/aggregations/bucket.ts#L963-L1031"
     },
     {
       "kind": "enum",
@@ -61486,7 +63133,7 @@
         "name": "TermsAggregationCollectMode",
         "namespace": "_types.aggregations"
       },
-      "specLocation": "_types/aggregations/bucket.ts#L1004-L1013"
+      "specLocation": "_types/aggregations/bucket.ts#L1056-L1065"
     },
     {
       "kind": "enum",
@@ -61508,7 +63155,7 @@
         "name": "TermsAggregationExecutionHint",
         "namespace": "_types.aggregations"
       },
-      "specLocation": "_types/aggregations/bucket.ts#L1015-L1020"
+      "specLocation": "_types/aggregations/bucket.ts#L1067-L1072"
     },
     {
       "kind": "interface",
@@ -61538,7 +63185,7 @@
           }
         }
       ],
-      "specLocation": "_types/aggregations/Aggregate.ts#L394-L396"
+      "specLocation": "_types/aggregations/Aggregate.ts#L431-L433"
     },
     {
       "kind": "type_alias",
@@ -61550,7 +63197,7 @@
         "name": "TermsExclude",
         "namespace": "_types.aggregations"
       },
-      "specLocation": "_types/aggregations/bucket.ts#L1025-L1026",
+      "specLocation": "_types/aggregations/bucket.ts#L1077-L1078",
       "type": {
         "kind": "union_of",
         "items": [
@@ -61585,7 +63232,7 @@
         "name": "TermsInclude",
         "namespace": "_types.aggregations"
       },
-      "specLocation": "_types/aggregations/bucket.ts#L1022-L1023",
+      "specLocation": "_types/aggregations/bucket.ts#L1074-L1075",
       "type": {
         "kind": "union_of",
         "items": [
@@ -61648,7 +63295,7 @@
           }
         }
       ],
-      "specLocation": "_types/aggregations/bucket.ts#L1028-L1037"
+      "specLocation": "_types/aggregations/bucket.ts#L1080-L1089"
     },
     {
       "kind": "interface",
@@ -61693,7 +63340,7 @@
           }
         }
       ],
-      "specLocation": "_types/aggregations/metric.ts#L310-L320"
+      "specLocation": "_types/aggregations/metric.ts#L319-L329"
     },
     {
       "kind": "interface",
@@ -61717,11 +63364,13 @@
         "namespace": "_types.aggregations"
       },
       "properties": [],
-      "specLocation": "_types/aggregations/Aggregate.ts#L652-L653",
+      "specLocation": "_types/aggregations/Aggregate.ts#L730-L731",
       "variantName": "time_series"
     },
     {
       "kind": "interface",
+      "extDocId": "search-aggregations-bucket-time-series-aggregation",
+      "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/search-aggregations-bucket-time-series-aggregation.html",
       "inherits": {
         "type": {
           "name": "BucketAggregationBase",
@@ -61759,7 +63408,7 @@
           }
         }
       ],
-      "specLocation": "_types/aggregations/bucket.ts#L984-L994"
+      "specLocation": "_types/aggregations/bucket.ts#L1033-L1046"
     },
     {
       "kind": "interface",
@@ -61800,10 +63449,12 @@
           }
         }
       ],
-      "specLocation": "_types/aggregations/Aggregate.ts#L655-L657"
+      "specLocation": "_types/aggregations/Aggregate.ts#L733-L735"
     },
     {
       "kind": "interface",
+      "extDocId": "search-aggregations-metrics-top-hits-aggregation",
+      "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/search-aggregations-metrics-top-hits-aggregation.html",
       "inherits": {
         "type": {
           "name": "AggregateBase",
@@ -61832,7 +63483,7 @@
           }
         }
       ],
-      "specLocation": "_types/aggregations/Aggregate.ts#L666-L669",
+      "specLocation": "_types/aggregations/Aggregate.ts#L747-L753",
       "variantName": "top_hits"
     },
     {
@@ -62027,7 +63678,7 @@
           }
         }
       ],
-      "specLocation": "_types/aggregations/metric.ts#L337-L397"
+      "specLocation": "_types/aggregations/metric.ts#L346-L406"
     },
     {
       "kind": "interface",
@@ -62097,7 +63748,7 @@
           }
         }
       ],
-      "specLocation": "_types/aggregations/Aggregate.ts#L744-L748"
+      "specLocation": "_types/aggregations/Aggregate.ts#L832-L836"
     },
     {
       "kind": "interface",
@@ -62127,11 +63778,13 @@
           }
         }
       ],
-      "specLocation": "_types/aggregations/Aggregate.ts#L739-L742",
+      "specLocation": "_types/aggregations/Aggregate.ts#L827-L830",
       "variantName": "top_metrics"
     },
     {
       "kind": "interface",
+      "extDocId": "search-aggregations-metrics-top-metrics",
+      "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/search-aggregations-metrics-top-metrics.html",
       "inherits": {
         "type": {
           "name": "MetricAggregationBase",
@@ -62196,7 +63849,7 @@
           }
         }
       ],
-      "specLocation": "_types/aggregations/metric.ts#L399-L413"
+      "specLocation": "_types/aggregations/metric.ts#L408-L425"
     },
     {
       "kind": "interface",
@@ -62218,7 +63871,7 @@
           }
         }
       ],
-      "specLocation": "_types/aggregations/metric.ts#L415-L420"
+      "specLocation": "_types/aggregations/metric.ts#L427-L432"
     },
     {
       "kind": "interface",
@@ -62243,7 +63896,7 @@
         "namespace": "_types.aggregations"
       },
       "properties": [],
-      "specLocation": "_types/aggregations/Aggregate.ts#L456-L462",
+      "specLocation": "_types/aggregations/Aggregate.ts#L493-L499",
       "variantName": "umrareterms"
     },
     {
@@ -62262,7 +63915,7 @@
         "namespace": "_types.aggregations"
       },
       "properties": [],
-      "specLocation": "_types/aggregations/Aggregate.ts#L506-L507",
+      "specLocation": "_types/aggregations/Aggregate.ts#L561-L562",
       "variantName": "unmapped_sampler"
     },
     {
@@ -62288,7 +63941,7 @@
         "namespace": "_types.aggregations"
       },
       "properties": [],
-      "specLocation": "_types/aggregations/Aggregate.ts#L615-L621",
+      "specLocation": "_types/aggregations/Aggregate.ts#L690-L696",
       "variantName": "umsigterms"
     },
     {
@@ -62314,12 +63967,14 @@
         "namespace": "_types.aggregations"
       },
       "properties": [],
-      "specLocation": "_types/aggregations/Aggregate.ts#L426-L432",
+      "specLocation": "_types/aggregations/Aggregate.ts#L463-L469",
       "variantName": "umterms"
     },
     {
       "kind": "interface",
       "description": "Value count aggregation result. `value` is always present.",
+      "extDocId": "search-aggregations-metrics-valuecount-aggregation",
+      "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/search-aggregations-metrics-valuecount-aggregation.html",
       "inherits": {
         "type": {
           "name": "SingleMetricAggregateBase",
@@ -62331,7 +63986,7 @@
         "namespace": "_types.aggregations"
       },
       "properties": [],
-      "specLocation": "_types/aggregations/Aggregate.ts#L219-L223",
+      "specLocation": "_types/aggregations/Aggregate.ts#L231-L236",
       "variantName": "value_count"
     },
     {
@@ -62347,7 +64002,7 @@
         "namespace": "_types.aggregations"
       },
       "properties": [],
-      "specLocation": "_types/aggregations/metric.ts#L422-L422"
+      "specLocation": "_types/aggregations/metric.ts#L434-L434"
     },
     {
       "kind": "enum",
@@ -62387,7 +64042,7 @@
         "name": "ValueType",
         "namespace": "_types.aggregations"
       },
-      "specLocation": "_types/aggregations/metric.ts#L424-L435"
+      "specLocation": "_types/aggregations/metric.ts#L436-L447"
     },
     {
       "kind": "interface",
@@ -62411,11 +64066,13 @@
         "namespace": "_types.aggregations"
       },
       "properties": [],
-      "specLocation": "_types/aggregations/Aggregate.ts#L365-L367",
+      "specLocation": "_types/aggregations/Aggregate.ts#L402-L404",
       "variantName": "variable_width_histogram"
     },
     {
       "kind": "interface",
+      "extDocId": "search-aggregations-bucket-variablewidthhistogram-aggregation",
+      "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/search-aggregations-bucket-variablewidthhistogram-aggregation.html",
       "name": {
         "name": "VariableWidthHistogramAggregation",
         "namespace": "_types.aggregations"
@@ -62482,7 +64139,7 @@
           }
         }
       ],
-      "specLocation": "_types/aggregations/bucket.ts#L1039-L1060"
+      "specLocation": "_types/aggregations/bucket.ts#L1091-L1115"
     },
     {
       "kind": "interface",
@@ -62567,7 +64224,7 @@
           }
         }
       ],
-      "specLocation": "_types/aggregations/Aggregate.ts#L369-L376"
+      "specLocation": "_types/aggregations/Aggregate.ts#L406-L413"
     },
     {
       "kind": "interface",
@@ -62630,7 +64287,7 @@
           }
         }
       ],
-      "specLocation": "_types/aggregations/metric.ts#L437-L451"
+      "specLocation": "_types/aggregations/metric.ts#L449-L463"
     },
     {
       "kind": "interface",
@@ -62675,11 +64332,13 @@
           }
         }
       ],
-      "specLocation": "_types/aggregations/metric.ts#L453-L463"
+      "specLocation": "_types/aggregations/metric.ts#L465-L475"
     },
     {
       "kind": "interface",
       "description": "Weighted average aggregation result. `value` is missing if the weight was set to zero.",
+      "extDocId": "search-aggregations-metrics-weight-avg-aggregation",
+      "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/search-aggregations-metrics-weight-avg-aggregation.html",
       "inherits": {
         "type": {
           "name": "SingleMetricAggregateBase",
@@ -62691,7 +64350,7 @@
         "namespace": "_types.aggregations"
       },
       "properties": [],
-      "specLocation": "_types/aggregations/Aggregate.ts#L213-L217",
+      "specLocation": "_types/aggregations/Aggregate.ts#L224-L229",
       "variantName": "weighted_avg"
     },
     {
@@ -63477,11 +65136,13 @@
         "name",
         "definition"
       ],
+      "extDocId": "analysis-charfilters",
+      "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/analysis-charfilters.html",
       "name": {
         "name": "CharFilter",
         "namespace": "_types.analysis"
       },
-      "specLocation": "_types/analysis/char_filters.ts#L28-L30",
+      "specLocation": "_types/analysis/char_filters.ts#L28-L33",
       "type": {
         "kind": "union_of",
         "items": [
@@ -63529,7 +65190,7 @@
         "name": "CharFilterDefinition",
         "namespace": "_types.analysis"
       },
-      "specLocation": "_types/analysis/char_filters.ts#L32-L41",
+      "specLocation": "_types/analysis/char_filters.ts#L35-L44",
       "type": {
         "kind": "union_of",
         "items": [
@@ -64469,7 +66130,7 @@
         },
         {
           "name": "max_gram",
-          "required": true,
+          "required": false,
           "type": {
             "kind": "instance_of",
             "type": {
@@ -64480,7 +66141,7 @@
         },
         {
           "name": "min_gram",
-          "required": true,
+          "required": false,
           "type": {
             "kind": "instance_of",
             "type": {
@@ -65146,7 +66807,7 @@
           }
         }
       ],
-      "specLocation": "_types/analysis/char_filters.ts#L43-L46"
+      "specLocation": "_types/analysis/char_filters.ts#L46-L49"
     },
     {
       "kind": "interface",
@@ -66187,14 +67848,26 @@
           "name": "keywords",
           "required": false,
           "type": {
-            "kind": "array_of",
-            "value": {
-              "kind": "instance_of",
-              "type": {
-                "name": "string",
-                "namespace": "_builtins"
+            "kind": "union_of",
+            "items": [
+              {
+                "kind": "instance_of",
+                "type": {
+                  "name": "string",
+                  "namespace": "_builtins"
+                }
+              },
+              {
+                "kind": "array_of",
+                "value": {
+                  "kind": "instance_of",
+                  "type": {
+                    "name": "string",
+                    "namespace": "_builtins"
+                  }
+                }
               }
-            }
+            ]
           }
         },
         {
@@ -66245,7 +67918,8 @@
         },
         {
           "name": "buffer_size",
-          "required": true,
+          "required": false,
+          "serverDefault": 256,
           "type": {
             "kind": "instance_of",
             "type": {
@@ -66255,7 +67929,7 @@
           }
         }
       ],
-      "specLocation": "_types/analysis/tokenizers.ts#L68-L71"
+      "specLocation": "_types/analysis/tokenizers.ts#L68-L74"
     },
     {
       "kind": "interface",
@@ -66884,7 +68558,7 @@
           }
         }
       ],
-      "specLocation": "_types/analysis/tokenizers.ts#L73-L75"
+      "specLocation": "_types/analysis/tokenizers.ts#L76-L78"
     },
     {
       "kind": "interface",
@@ -67070,7 +68744,7 @@
           }
         }
       ],
-      "specLocation": "_types/analysis/tokenizers.ts#L77-L79"
+      "specLocation": "_types/analysis/tokenizers.ts#L80-L82"
     },
     {
       "kind": "interface",
@@ -67119,7 +68793,7 @@
           }
         }
       ],
-      "specLocation": "_types/analysis/char_filters.ts#L48-L52"
+      "specLocation": "_types/analysis/char_filters.ts#L51-L55"
     },
     {
       "kind": "interface",
@@ -67279,7 +68953,7 @@
         },
         {
           "name": "max_gram",
-          "required": true,
+          "required": false,
           "type": {
             "kind": "instance_of",
             "type": {
@@ -67290,7 +68964,7 @@
         },
         {
           "name": "min_gram",
-          "required": true,
+          "required": false,
           "type": {
             "kind": "instance_of",
             "type": {
@@ -67315,7 +68989,7 @@
           }
         }
       ],
-      "specLocation": "_types/analysis/tokenizers.ts#L81-L90"
+      "specLocation": "_types/analysis/tokenizers.ts#L84-L93"
     },
     {
       "kind": "interface",
@@ -67702,7 +69376,7 @@
           }
         }
       ],
-      "specLocation": "_types/analysis/tokenizers.ts#L92-L99"
+      "specLocation": "_types/analysis/tokenizers.ts#L95-L102"
     },
     {
       "kind": "interface",
@@ -67890,7 +69564,7 @@
           }
         }
       ],
-      "specLocation": "_types/analysis/char_filters.ts#L54-L59"
+      "specLocation": "_types/analysis/char_filters.ts#L57-L62"
     },
     {
       "kind": "interface",
@@ -68015,7 +69689,7 @@
           }
         }
       ],
-      "specLocation": "_types/analysis/tokenizers.ts#L101-L106"
+      "specLocation": "_types/analysis/tokenizers.ts#L104-L109"
     },
     {
       "kind": "interface",
@@ -68788,7 +70462,7 @@
           }
         }
       ],
-      "specLocation": "_types/analysis/tokenizers.ts#L113-L116"
+      "specLocation": "_types/analysis/tokenizers.ts#L116-L119"
     },
     {
       "kind": "interface",
@@ -68823,7 +70497,7 @@
           }
         }
       ],
-      "specLocation": "_types/analysis/tokenizers.ts#L108-L111"
+      "specLocation": "_types/analysis/tokenizers.ts#L111-L114"
     },
     {
       "kind": "interface",
@@ -69168,7 +70842,7 @@
           }
         }
       ],
-      "specLocation": "_types/analysis/tokenizers.ts#L118-L121"
+      "specLocation": "_types/analysis/tokenizers.ts#L121-L124"
     },
     {
       "kind": "interface",
@@ -69769,7 +71443,7 @@
           }
         }
       ],
-      "specLocation": "_types/analysis/tokenizers.ts#L123-L125"
+      "specLocation": "_types/analysis/tokenizers.ts#L126-L128"
     },
     {
       "kind": "enum",
@@ -69805,11 +71479,13 @@
         "name",
         "definition"
       ],
+      "extDocId": "analysis-tokenfilters",
+      "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/analysis-tokenfilters.html",
       "name": {
         "name": "TokenFilter",
         "namespace": "_types.analysis"
       },
-      "specLocation": "_types/analysis/token_filters.ts#L345-L347",
+      "specLocation": "_types/analysis/token_filters.ts#L345-L350",
       "type": {
         "kind": "union_of",
         "items": [
@@ -69857,7 +71533,7 @@
         "name": "TokenFilterDefinition",
         "namespace": "_types.analysis"
       },
-      "specLocation": "_types/analysis/token_filters.ts#L349-L401",
+      "specLocation": "_types/analysis/token_filters.ts#L352-L404",
       "type": {
         "kind": "union_of",
         "items": [
@@ -70204,11 +71880,13 @@
         "name",
         "definition"
       ],
+      "extDocId": "analysis-tokenizers",
+      "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/analysis-tokenizers.html",
       "name": {
         "name": "Tokenizer",
         "namespace": "_types.analysis"
       },
-      "specLocation": "_types/analysis/tokenizers.ts#L137-L139",
+      "specLocation": "_types/analysis/tokenizers.ts#L140-L145",
       "type": {
         "kind": "union_of",
         "items": [
@@ -70256,7 +71934,7 @@
         "name": "TokenizerDefinition",
         "namespace": "_types.analysis"
       },
-      "specLocation": "_types/analysis/tokenizers.ts#L141-L164",
+      "specLocation": "_types/analysis/tokenizers.ts#L147-L170",
       "type": {
         "kind": "union_of",
         "items": [
@@ -70540,7 +72218,7 @@
           }
         }
       ],
-      "specLocation": "_types/analysis/tokenizers.ts#L127-L130"
+      "specLocation": "_types/analysis/tokenizers.ts#L130-L133"
     },
     {
       "kind": "interface",
@@ -70663,7 +72341,7 @@
           }
         }
       ],
-      "specLocation": "_types/analysis/tokenizers.ts#L132-L135"
+      "specLocation": "_types/analysis/tokenizers.ts#L135-L138"
     },
     {
       "kind": "interface",
@@ -71253,7 +72931,7 @@
           }
         }
       ],
-      "specLocation": "_types/mapping/core.ts#L55-L57"
+      "specLocation": "_types/mapping/core.ts#L54-L56"
     },
     {
       "kind": "interface",
@@ -71312,6 +72990,59 @@
             }
           }
         },
+        {
+          "name": "ignore_malformed",
+          "required": false,
+          "type": {
+            "kind": "instance_of",
+            "type": {
+              "name": "boolean",
+              "namespace": "_builtins"
+            }
+          }
+        },
+        {
+          "name": "script",
+          "required": false,
+          "type": {
+            "kind": "instance_of",
+            "type": {
+              "name": "Script",
+              "namespace": "_types"
+            }
+          }
+        },
+        {
+          "name": "on_script_error",
+          "required": false,
+          "type": {
+            "kind": "instance_of",
+            "type": {
+              "name": "OnScriptError",
+              "namespace": "_types.mapping"
+            }
+          }
+        },
+        {
+          "availability": {
+            "serverless": {
+              "stability": "experimental"
+            },
+            "stack": {
+              "stability": "experimental"
+            }
+          },
+          "description": "For internal use by Elastic only. Marks the field as a time series dimension. Defaults to false.",
+          "name": "time_series_dimension",
+          "required": false,
+          "type": {
+            "kind": "instance_of",
+            "type": {
+              "name": "boolean",
+              "namespace": "_builtins"
+            }
+          }
+        },
         {
           "name": "type",
           "required": true,
@@ -71321,7 +73052,7 @@
           }
         }
       ],
-      "specLocation": "_types/mapping/core.ts#L59-L65"
+      "specLocation": "_types/mapping/core.ts#L58-L73"
     },
     {
       "kind": "interface",
@@ -71356,7 +73087,7 @@
           }
         }
       ],
-      "specLocation": "_types/mapping/core.ts#L172-L175"
+      "specLocation": "_types/mapping/core.ts#L181-L184"
     },
     {
       "kind": "interface",
@@ -71527,17 +73258,6 @@
             }
           }
         },
-        {
-          "name": "similarity",
-          "required": false,
-          "type": {
-            "kind": "instance_of",
-            "type": {
-              "name": "string",
-              "namespace": "_builtins"
-            }
-          }
-        },
         {
           "name": "store",
           "required": false,
@@ -71550,7 +73270,7 @@
           }
         }
       ],
-      "specLocation": "_types/mapping/core.ts#L45-L49"
+      "specLocation": "_types/mapping/core.ts#L45-L48"
     },
     {
       "kind": "interface",
@@ -71661,7 +73381,7 @@
           }
         }
       ],
-      "specLocation": "_types/mapping/core.ts#L79-L87"
+      "specLocation": "_types/mapping/core.ts#L87-L95"
     },
     {
       "kind": "interface",
@@ -71773,7 +73493,7 @@
           }
         }
       ],
-      "specLocation": "_types/mapping/core.ts#L67-L77"
+      "specLocation": "_types/mapping/core.ts#L75-L85"
     },
     {
       "kind": "interface",
@@ -71968,7 +73688,7 @@
           }
         }
       ],
-      "specLocation": "_types/mapping/core.ts#L51-L53"
+      "specLocation": "_types/mapping/core.ts#L50-L52"
     },
     {
       "kind": "interface",
@@ -72003,7 +73723,7 @@
           }
         }
       ],
-      "specLocation": "_types/mapping/core.ts#L152-L155"
+      "specLocation": "_types/mapping/core.ts#L161-L164"
     },
     {
       "kind": "interface",
@@ -72220,11 +73940,23 @@
           "name": "index_prefixes",
           "required": false,
           "type": {
-            "kind": "instance_of",
-            "type": {
-              "name": "TextIndexPrefixes",
-              "namespace": "_types.mapping"
-            }
+            "kind": "union_of",
+            "items": [
+              {
+                "kind": "instance_of",
+                "type": {
+                  "name": "TextIndexPrefixes",
+                  "namespace": "_types.mapping"
+                }
+              },
+              {
+                "kind": "instance_of",
+                "type": {
+                  "name": "null",
+                  "namespace": "_builtins"
+                }
+              }
+            ]
           }
         },
         {
@@ -72316,7 +74048,7 @@
           }
         }
       ],
-      "specLocation": "_types/mapping/core.ts#L300-L331"
+      "specLocation": "_types/mapping/core.ts#L311-L342"
     },
     {
       "kind": "interface",
@@ -72930,7 +74662,7 @@
           }
         }
       ],
-      "specLocation": "_types/mapping/core.ts#L142-L145"
+      "specLocation": "_types/mapping/core.ts#L151-L154"
     },
     {
       "kind": "interface",
@@ -73203,7 +74935,7 @@
           }
         }
       ],
-      "specLocation": "_types/mapping/core.ts#L147-L150"
+      "specLocation": "_types/mapping/core.ts#L156-L159"
     },
     {
       "kind": "interface",
@@ -73483,7 +75215,7 @@
         "name": "IndexOptions",
         "namespace": "_types.mapping"
       },
-      "specLocation": "_types/mapping/core.ts#L257-L262"
+      "specLocation": "_types/mapping/core.ts#L267-L272"
     },
     {
       "kind": "interface",
@@ -73518,7 +75250,7 @@
           }
         }
       ],
-      "specLocation": "_types/mapping/core.ts#L157-L160"
+      "specLocation": "_types/mapping/core.ts#L166-L169"
     },
     {
       "kind": "interface",
@@ -73748,7 +75480,7 @@
           }
         }
       ],
-      "specLocation": "_types/mapping/core.ts#L89-L93"
+      "specLocation": "_types/mapping/core.ts#L97-L101"
     },
     {
       "kind": "interface",
@@ -73862,6 +75594,29 @@
             }
           }
         },
+        {
+          "name": "similarity",
+          "required": false,
+          "type": {
+            "kind": "union_of",
+            "items": [
+              {
+                "kind": "instance_of",
+                "type": {
+                  "name": "string",
+                  "namespace": "_builtins"
+                }
+              },
+              {
+                "kind": "instance_of",
+                "type": {
+                  "name": "null",
+                  "namespace": "_builtins"
+                }
+              }
+            ]
+          }
+        },
         {
           "name": "split_queries_on_whitespace",
           "required": false,
@@ -73902,7 +75657,7 @@
           }
         }
       ],
-      "specLocation": "_types/mapping/core.ts#L95-L113"
+      "specLocation": "_types/mapping/core.ts#L103-L122"
     },
     {
       "kind": "interface",
@@ -73937,7 +75692,7 @@
           }
         }
       ],
-      "specLocation": "_types/mapping/core.ts#L162-L165"
+      "specLocation": "_types/mapping/core.ts#L171-L174"
     },
     {
       "kind": "interface",
@@ -74042,7 +75797,7 @@
           }
         }
       ],
-      "specLocation": "_types/mapping/core.ts#L230-L255"
+      "specLocation": "_types/mapping/core.ts#L240-L265"
     },
     {
       "kind": "enum",
@@ -74262,7 +76017,7 @@
           }
         }
       ],
-      "specLocation": "_types/mapping/core.ts#L115-L135"
+      "specLocation": "_types/mapping/core.ts#L124-L144"
     },
     {
       "kind": "interface",
@@ -74324,7 +76079,7 @@
         "name": "OnScriptError",
         "namespace": "_types.mapping"
       },
-      "specLocation": "_types/mapping/core.ts#L137-L140"
+      "specLocation": "_types/mapping/core.ts#L146-L149"
     },
     {
       "kind": "interface",
@@ -74348,7 +76103,7 @@
           }
         }
       ],
-      "specLocation": "_types/mapping/core.ts#L188-L190"
+      "specLocation": "_types/mapping/core.ts#L197-L199"
     },
     {
       "kind": "interface",
@@ -74952,7 +76707,7 @@
           }
         }
       ],
-      "specLocation": "_types/mapping/core.ts#L192-L195"
+      "specLocation": "_types/mapping/core.ts#L201-L204"
     },
     {
       "kind": "interface",
@@ -74987,7 +76742,7 @@
           }
         }
       ],
-      "specLocation": "_types/mapping/core.ts#L197-L200"
+      "specLocation": "_types/mapping/core.ts#L206-L209"
     },
     {
       "kind": "interface",
@@ -75272,7 +77027,7 @@
           }
         }
       ],
-      "specLocation": "_types/mapping/core.ts#L182-L186"
+      "specLocation": "_types/mapping/core.ts#L191-L195"
     },
     {
       "kind": "interface",
@@ -75364,6 +77119,29 @@
             }
           }
         },
+        {
+          "name": "similarity",
+          "required": false,
+          "type": {
+            "kind": "union_of",
+            "items": [
+              {
+                "kind": "instance_of",
+                "type": {
+                  "name": "string",
+                  "namespace": "_builtins"
+                }
+              },
+              {
+                "kind": "instance_of",
+                "type": {
+                  "name": "null",
+                  "namespace": "_builtins"
+                }
+              }
+            ]
+          }
+        },
         {
           "name": "term_vector",
           "required": false,
@@ -75384,7 +77162,7 @@
           }
         }
       ],
-      "specLocation": "_types/mapping/core.ts#L212-L222"
+      "specLocation": "_types/mapping/core.ts#L221-L232"
     },
     {
       "kind": "interface",
@@ -75435,7 +77213,7 @@
           }
         }
       ],
-      "specLocation": "_types/mapping/core.ts#L206-L210"
+      "specLocation": "_types/mapping/core.ts#L215-L219"
     },
     {
       "kind": "interface",
@@ -75541,7 +77319,7 @@
           }
         }
       ],
-      "specLocation": "_types/mapping/core.ts#L167-L170"
+      "specLocation": "_types/mapping/core.ts#L176-L179"
     },
     {
       "kind": "interface",
@@ -75688,7 +77466,7 @@
           }
         }
       ],
-      "specLocation": "_types/mapping/core.ts#L202-L204"
+      "specLocation": "_types/mapping/core.ts#L211-L213"
     },
     {
       "kind": "interface",
@@ -75817,7 +77595,7 @@
           }
         }
       ],
-      "specLocation": "_types/mapping/core.ts#L264-L267"
+      "specLocation": "_types/mapping/core.ts#L274-L277"
     },
     {
       "kind": "interface",
@@ -75924,11 +77702,23 @@
           "name": "index_prefixes",
           "required": false,
           "type": {
-            "kind": "instance_of",
-            "type": {
-              "name": "TextIndexPrefixes",
-              "namespace": "_types.mapping"
-            }
+            "kind": "union_of",
+            "items": [
+              {
+                "kind": "instance_of",
+                "type": {
+                  "name": "TextIndexPrefixes",
+                  "namespace": "_types.mapping"
+                }
+              },
+              {
+                "kind": "instance_of",
+                "type": {
+                  "name": "null",
+                  "namespace": "_builtins"
+                }
+              }
+            ]
           }
         },
         {
@@ -75975,6 +77765,29 @@
             }
           }
         },
+        {
+          "name": "similarity",
+          "required": false,
+          "type": {
+            "kind": "union_of",
+            "items": [
+              {
+                "kind": "instance_of",
+                "type": {
+                  "name": "string",
+                  "namespace": "_builtins"
+                }
+              },
+              {
+                "kind": "instance_of",
+                "type": {
+                  "name": "null",
+                  "namespace": "_builtins"
+                }
+              }
+            ]
+          }
+        },
         {
           "name": "term_vector",
           "required": false,
@@ -75995,7 +77808,7 @@
           }
         }
       ],
-      "specLocation": "_types/mapping/core.ts#L269-L285"
+      "specLocation": "_types/mapping/core.ts#L279-L296"
     },
     {
       "kind": "enum",
@@ -76378,7 +78191,7 @@
           }
         }
       ],
-      "specLocation": "_types/mapping/core.ts#L177-L180"
+      "specLocation": "_types/mapping/core.ts#L186-L189"
     },
     {
       "kind": "interface",
@@ -76402,7 +78215,7 @@
           }
         }
       ],
-      "specLocation": "_types/mapping/core.ts#L287-L289"
+      "specLocation": "_types/mapping/core.ts#L298-L300"
     },
     {
       "kind": "interface",
@@ -76443,10 +78256,12 @@
           }
         }
       ],
-      "specLocation": "_types/mapping/core.ts#L291-L298"
+      "specLocation": "_types/mapping/core.ts#L302-L309"
     },
     {
       "kind": "interface",
+      "extDocId": "query-dsl-bool-query",
+      "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/query-dsl-bool-query.html",
       "inherits": {
         "type": {
           "name": "QueryBase",
@@ -76581,10 +78396,12 @@
           }
         }
       ],
-      "specLocation": "_types/query_dsl/compound.ts#L29-L53"
+      "specLocation": "_types/query_dsl/compound.ts#L29-L56"
     },
     {
       "kind": "interface",
+      "extDocId": "query-dsl-boosting-query",
+      "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/query-dsl-boosting-query.html",
       "inherits": {
         "type": {
           "name": "QueryBase",
@@ -76633,7 +78450,7 @@
           }
         }
       ],
-      "specLocation": "_types/query_dsl/compound.ts#L55-L68"
+      "specLocation": "_types/query_dsl/compound.ts#L58-L74"
     },
     {
       "kind": "enum",
@@ -76674,7 +78491,7 @@
         "name": "CombinedFieldsOperator",
         "namespace": "_types.query_dsl"
       },
-      "specLocation": "_types/query_dsl/abstractions.ts#L509-L512"
+      "specLocation": "_types/query_dsl/abstractions.ts#L518-L521"
     },
     {
       "kind": "interface",
@@ -76744,8 +78561,8 @@
         },
         {
           "description": "Minimum number of clauses that must match for a document to be returned.",
-          "docId": "query-dsl-minimum-should-match",
-          "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/query-dsl-minimum-should-match.html",
+          "extDocId": "query-dsl-minimum-should-match",
+          "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/query-dsl-minimum-should-match.html",
           "name": "minimum_should_match",
           "required": false,
           "type": {
@@ -76770,7 +78587,7 @@
           }
         }
       ],
-      "specLocation": "_types/query_dsl/abstractions.ts#L465-L499"
+      "specLocation": "_types/query_dsl/abstractions.ts#L471-L505"
     },
     {
       "kind": "enum",
@@ -76788,7 +78605,7 @@
         "name": "CombinedFieldsZeroTerms",
         "namespace": "_types.query_dsl"
       },
-      "specLocation": "_types/query_dsl/abstractions.ts#L514-L523"
+      "specLocation": "_types/query_dsl/abstractions.ts#L523-L532"
     },
     {
       "kind": "interface",
@@ -76875,6 +78692,8 @@
     },
     {
       "kind": "interface",
+      "extDocId": "query-dsl-constant-score-query",
+      "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/query-dsl-constant-score-query.html",
       "inherits": {
         "type": {
           "name": "QueryBase",
@@ -76899,7 +78718,7 @@
           }
         }
       ],
-      "specLocation": "_types/query_dsl/compound.ts#L70-L77"
+      "specLocation": "_types/query_dsl/compound.ts#L76-L86"
     },
     {
       "kind": "interface",
@@ -76933,7 +78752,7 @@
         "namespace": "_types.query_dsl"
       },
       "properties": [],
-      "specLocation": "_types/query_dsl/compound.ts#L196-L196"
+      "specLocation": "_types/query_dsl/compound.ts#L209-L209"
     },
     {
       "kind": "interface",
@@ -77013,7 +78832,7 @@
           }
         }
       ],
-      "specLocation": "_types/query_dsl/term.ts#L146-L155"
+      "specLocation": "_types/query_dsl/term.ts#L161-L170"
     },
     {
       "kind": "type_alias",
@@ -77027,7 +78846,7 @@
         "name": "DecayFunction",
         "namespace": "_types.query_dsl"
       },
-      "specLocation": "_types/query_dsl/compound.ts#L202-L211",
+      "specLocation": "_types/query_dsl/compound.ts#L215-L224",
       "type": {
         "kind": "union_of",
         "items": [
@@ -77147,7 +78966,7 @@
           }
         }
       ],
-      "specLocation": "_types/query_dsl/compound.ts#L178-L189"
+      "specLocation": "_types/query_dsl/compound.ts#L191-L202"
     },
     {
       "kind": "interface",
@@ -77217,10 +79036,12 @@
           }
         }
       ],
-      "specLocation": "_types/query_dsl/compound.ts#L157-L176"
+      "specLocation": "_types/query_dsl/compound.ts#L170-L189"
     },
     {
       "kind": "interface",
+      "extDocId": "query-dsl-dis-max-query",
+      "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/query-dsl-dis-max-query.html",
       "inherits": {
         "type": {
           "name": "QueryBase",
@@ -77261,7 +79082,7 @@
           }
         }
       ],
-      "specLocation": "_types/query_dsl/compound.ts#L79-L91"
+      "specLocation": "_types/query_dsl/compound.ts#L88-L103"
     },
     {
       "kind": "type_alias",
@@ -77270,11 +79091,13 @@
         "geo",
         "date"
       ],
+      "extDocId": "query-dsl-distance-feature-query",
+      "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/query-dsl-distance-feature-query.html",
       "name": {
         "name": "DistanceFeatureQuery",
         "namespace": "_types.query_dsl"
       },
-      "specLocation": "_types/query_dsl/specialized.ts#L76-L84",
+      "specLocation": "_types/query_dsl/specialized.ts#L76-L85",
       "type": {
         "kind": "union_of",
         "items": [
@@ -77373,6 +79196,8 @@
     },
     {
       "kind": "interface",
+      "extDocId": "query-dsl-exists-query",
+      "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/query-dsl-exists-query.html",
       "inherits": {
         "type": {
           "name": "QueryBase",
@@ -77397,7 +79222,7 @@
           }
         }
       ],
-      "specLocation": "_types/query_dsl/term.ts#L37-L42"
+      "specLocation": "_types/query_dsl/term.ts#L38-L46"
     },
     {
       "kind": "interface",
@@ -77444,7 +79269,7 @@
         }
       ],
       "shortcutProperty": "field",
-      "specLocation": "_types/query_dsl/abstractions.ts#L525-L539"
+      "specLocation": "_types/query_dsl/abstractions.ts#L534-L548"
     },
     {
       "kind": "interface",
@@ -77502,7 +79327,7 @@
           }
         }
       ],
-      "specLocation": "_types/query_dsl/abstractions.ts#L429-L446"
+      "specLocation": "_types/query_dsl/abstractions.ts#L435-L452"
     },
     {
       "kind": "enum",
@@ -77552,7 +79377,7 @@
         "name": "FieldValueFactorModifier",
         "namespace": "_types.query_dsl"
       },
-      "specLocation": "_types/query_dsl/compound.ts#L310-L353"
+      "specLocation": "_types/query_dsl/compound.ts#L323-L366"
     },
     {
       "kind": "interface",
@@ -77611,7 +79436,7 @@
           }
         }
       ],
-      "specLocation": "_types/query_dsl/compound.ts#L136-L155"
+      "specLocation": "_types/query_dsl/compound.ts#L149-L168"
     },
     {
       "kind": "enum",
@@ -77645,7 +79470,7 @@
         "name": "FunctionBoostMode",
         "namespace": "_types.query_dsl"
       },
-      "specLocation": "_types/query_dsl/compound.ts#L282-L308"
+      "specLocation": "_types/query_dsl/compound.ts#L295-L321"
     },
     {
       "kind": "interface",
@@ -77752,7 +79577,7 @@
           }
         }
       ],
-      "specLocation": "_types/query_dsl/compound.ts#L213-L253",
+      "specLocation": "_types/query_dsl/compound.ts#L226-L266",
       "variants": {
         "kind": "container"
       }
@@ -77789,10 +79614,12 @@
         "name": "FunctionScoreMode",
         "namespace": "_types.query_dsl"
       },
-      "specLocation": "_types/query_dsl/compound.ts#L255-L280"
+      "specLocation": "_types/query_dsl/compound.ts#L268-L293"
     },
     {
       "kind": "interface",
+      "extDocId": "query-dsl-function-score-query",
+      "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/query-dsl-function-score-query.html",
       "inherits": {
         "type": {
           "name": "QueryBase",
@@ -77883,10 +79710,12 @@
         }
       ],
       "shortcutProperty": "functions",
-      "specLocation": "_types/query_dsl/compound.ts#L93-L122"
+      "specLocation": "_types/query_dsl/compound.ts#L105-L135"
     },
     {
       "kind": "interface",
+      "extDocId": "query-dsl-fuzzy-query",
+      "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/query-dsl-fuzzy-query.html",
       "inherits": {
         "type": {
           "name": "QueryBase",
@@ -77999,7 +79828,7 @@
         }
       ],
       "shortcutProperty": "value",
-      "specLocation": "_types/query_dsl/term.ts#L44-L79"
+      "specLocation": "_types/query_dsl/term.ts#L48-L86"
     },
     {
       "kind": "interface",
@@ -78034,6 +79863,8 @@
           }
         }
       ],
+      "extDocId": "query-dsl-geo-bounding-box-query",
+      "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/query-dsl-geo-bounding-box-query.html",
       "inherits": {
         "type": {
           "name": "QueryBase",
@@ -78087,7 +79918,7 @@
           }
         }
       ],
-      "specLocation": "_types/query_dsl/geo.ts#L32-L53"
+      "specLocation": "_types/query_dsl/geo.ts#L35-L57"
     },
     {
       "kind": "interface",
@@ -78121,7 +79952,7 @@
         "namespace": "_types.query_dsl"
       },
       "properties": [],
-      "specLocation": "_types/query_dsl/compound.ts#L197-L200"
+      "specLocation": "_types/query_dsl/compound.ts#L210-L213"
     },
     {
       "kind": "interface",
@@ -78187,6 +80018,8 @@
           }
         }
       ],
+      "extDocId": "query-dsl-geo-distance-query",
+      "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/query-dsl-geo-distance-query.html",
       "inherits": {
         "type": {
           "name": "QueryBase",
@@ -78252,7 +80085,7 @@
           }
         }
       ],
-      "specLocation": "_types/query_dsl/geo.ts#L60-L91"
+      "specLocation": "_types/query_dsl/geo.ts#L64-L96"
     },
     {
       "kind": "enum",
@@ -78268,7 +80101,59 @@
         "name": "GeoExecution",
         "namespace": "_types.query_dsl"
       },
-      "specLocation": "_types/query_dsl/geo.ts#L55-L58"
+      "specLocation": "_types/query_dsl/geo.ts#L59-L62"
+    },
+    {
+      "kind": "interface",
+      "inherits": {
+        "type": {
+          "name": "QueryBase",
+          "namespace": "_types.query_dsl"
+        }
+      },
+      "name": {
+        "name": "GeoGridQuery",
+        "namespace": "_types.query_dsl"
+      },
+      "properties": [
+        {
+          "name": "geogrid",
+          "required": false,
+          "type": {
+            "kind": "instance_of",
+            "type": {
+              "name": "GeoTile",
+              "namespace": "_types"
+            }
+          }
+        },
+        {
+          "name": "geohash",
+          "required": false,
+          "type": {
+            "kind": "instance_of",
+            "type": {
+              "name": "GeoHash",
+              "namespace": "_types"
+            }
+          }
+        },
+        {
+          "name": "geohex",
+          "required": false,
+          "type": {
+            "kind": "instance_of",
+            "type": {
+              "name": "GeoHexCell",
+              "namespace": "_types"
+            }
+          }
+        }
+      ],
+      "specLocation": "_types/query_dsl/geo.ts#L98-L103",
+      "variants": {
+        "kind": "container"
+      }
     },
     {
       "kind": "interface",
@@ -78292,7 +80177,7 @@
           }
         }
       ],
-      "specLocation": "_types/query_dsl/geo.ts#L93-L95"
+      "specLocation": "_types/query_dsl/geo.ts#L105-L107"
     },
     {
       "kind": "interface",
@@ -78331,6 +80216,8 @@
         "description": "Use geo-shape instead.",
         "version": "7.12.0"
       },
+      "extDocId": "query-dsl-geo-polygon-query",
+      "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/query-dsl-geo-polygon-query.html",
       "inherits": {
         "type": {
           "name": "QueryBase",
@@ -78366,7 +80253,7 @@
           }
         }
       ],
-      "specLocation": "_types/query_dsl/geo.ts#L97-L108"
+      "specLocation": "_types/query_dsl/geo.ts#L109-L121"
     },
     {
       "kind": "interface",
@@ -78412,7 +80299,7 @@
           }
         }
       ],
-      "specLocation": "_types/query_dsl/geo.ts#L115-L126"
+      "specLocation": "_types/query_dsl/geo.ts#L128-L139"
     },
     {
       "kind": "interface",
@@ -78447,6 +80334,8 @@
           }
         }
       ],
+      "extDocId": "query-dsl-geo-shape-query",
+      "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/query-dsl-geo-shape-query.html",
       "inherits": {
         "type": {
           "name": "QueryBase",
@@ -78472,7 +80361,7 @@
           }
         }
       ],
-      "specLocation": "_types/query_dsl/geo.ts#L128-L143"
+      "specLocation": "_types/query_dsl/geo.ts#L141-L157"
     },
     {
       "kind": "enum",
@@ -78493,10 +80382,12 @@
         "name": "GeoValidationMethod",
         "namespace": "_types.query_dsl"
       },
-      "specLocation": "_types/query_dsl/geo.ts#L159-L169"
+      "specLocation": "_types/query_dsl/geo.ts#L173-L183"
     },
     {
       "kind": "interface",
+      "extDocId": "query-dsl-has-child-query",
+      "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/query-dsl-has-child-query.html",
       "inherits": {
         "type": {
           "name": "QueryBase",
@@ -78597,10 +80488,12 @@
           }
         }
       ],
-      "specLocation": "_types/query_dsl/joining.ts#L41-L76"
+      "specLocation": "_types/query_dsl/joining.ts#L41-L79"
     },
     {
       "kind": "interface",
+      "extDocId": "query-dsl-has-parent-query",
+      "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/query-dsl-has-parent-query.html",
       "inherits": {
         "type": {
           "name": "QueryBase",
@@ -78677,10 +80570,12 @@
           }
         }
       ],
-      "specLocation": "_types/query_dsl/joining.ts#L78-L104"
+      "specLocation": "_types/query_dsl/joining.ts#L81-L110"
     },
     {
       "kind": "interface",
+      "extDocId": "query-dsl-ids-query",
+      "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/query-dsl-ids-query.html",
       "inherits": {
         "type": {
           "name": "QueryBase",
@@ -78705,7 +80600,7 @@
           }
         }
       ],
-      "specLocation": "_types/query_dsl/term.ts#L81-L86"
+      "specLocation": "_types/query_dsl/term.ts#L88-L96"
     },
     {
       "kind": "interface",
@@ -79236,6 +81131,8 @@
     },
     {
       "kind": "interface",
+      "extDocId": "query-dsl-intervals-query",
+      "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/query-dsl-intervals-query.html",
       "inherits": {
         "type": {
           "name": "QueryBase",
@@ -79322,7 +81219,7 @@
           }
         }
       ],
-      "specLocation": "_types/query_dsl/fulltext.ts#L235-L263",
+      "specLocation": "_types/query_dsl/fulltext.ts#L235-L266",
       "variants": {
         "kind": "container"
       }
@@ -79371,7 +81268,7 @@
           }
         }
       ],
-      "specLocation": "_types/query_dsl/fulltext.ts#L265-L280"
+      "specLocation": "_types/query_dsl/fulltext.ts#L268-L283"
     },
     {
       "kind": "type_alias",
@@ -79386,7 +81283,7 @@
         "name": "Like",
         "namespace": "_types.query_dsl"
       },
-      "specLocation": "_types/query_dsl/specialized.ts#L194-L199",
+      "specLocation": "_types/query_dsl/specialized.ts#L198-L203",
       "type": {
         "kind": "union_of",
         "items": [
@@ -79518,10 +81415,12 @@
           }
         }
       ],
-      "specLocation": "_types/query_dsl/specialized.ts#L170-L192"
+      "specLocation": "_types/query_dsl/specialized.ts#L174-L196"
     },
     {
       "kind": "interface",
+      "extDocId": "query-dsl-match-all-query",
+      "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/query-dsl-match-all-query.html",
       "inherits": {
         "type": {
           "name": "QueryBase",
@@ -79533,10 +81432,12 @@
         "namespace": "_types.query_dsl"
       },
       "properties": [],
-      "specLocation": "_types/query_dsl/MatchAllQuery.ts#L22-L22"
+      "specLocation": "_types/query_dsl/MatchAllQuery.ts#L22-L25"
     },
     {
       "kind": "interface",
+      "extDocId": "query-dsl-match-bool-prefix-query",
+      "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/query-dsl-match-bool-prefix-query.html",
       "inherits": {
         "type": {
           "name": "QueryBase",
@@ -79670,10 +81571,12 @@
         }
       ],
       "shortcutProperty": "query",
-      "specLocation": "_types/query_dsl/fulltext.ts#L349-L403"
+      "specLocation": "_types/query_dsl/fulltext.ts#L355-L412"
     },
     {
       "kind": "interface",
+      "extDocId": "query-dsl-match-none-query",
+      "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/query-dsl-match-all-query.html#query-dsl-match-none-query",
       "inherits": {
         "type": {
           "name": "QueryBase",
@@ -79685,10 +81588,12 @@
         "namespace": "_types.query_dsl"
       },
       "properties": [],
-      "specLocation": "_types/query_dsl/MatchNoneQuery.ts#L22-L22"
+      "specLocation": "_types/query_dsl/MatchNoneQuery.ts#L22-L25"
     },
     {
       "kind": "interface",
+      "extDocId": "query-dsl-match-query-phrase-prefix",
+      "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/query-dsl-match-query-phrase-prefix.html",
       "inherits": {
         "type": {
           "name": "QueryBase",
@@ -79767,10 +81672,12 @@
         }
       ],
       "shortcutProperty": "query",
-      "specLocation": "_types/query_dsl/fulltext.ts#L428-L454"
+      "specLocation": "_types/query_dsl/fulltext.ts#L440-L469"
     },
     {
       "kind": "interface",
+      "extDocId": "query-dsl-match-query-phrase",
+      "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/query-dsl-match-query-phrase.html",
       "inherits": {
         "type": {
           "name": "QueryBase",
@@ -79836,10 +81743,12 @@
         }
       ],
       "shortcutProperty": "query",
-      "specLocation": "_types/query_dsl/fulltext.ts#L405-L426"
+      "specLocation": "_types/query_dsl/fulltext.ts#L414-L438"
     },
     {
       "kind": "interface",
+      "extDocId": "query-dsl-match-query",
+      "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/query-dsl-match-query.html",
       "inherits": {
         "type": {
           "name": "QueryBase",
@@ -80046,10 +81955,12 @@
         }
       ],
       "shortcutProperty": "query",
-      "specLocation": "_types/query_dsl/fulltext.ts#L282-L347"
+      "specLocation": "_types/query_dsl/fulltext.ts#L285-L353"
     },
     {
       "kind": "interface",
+      "extDocId": "query-dsl-mlt-query",
+      "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/query-dsl-mlt-query.html",
       "inherits": {
         "type": {
           "name": "QueryBase",
@@ -80063,8 +81974,8 @@
       "properties": [
         {
           "description": "The analyzer that is used to analyze the free form text.\nDefaults to the analyzer associated with the first field in fields.",
-          "docId": "analysis",
-          "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/analysis.html",
+          "extDocId": "analysis",
+          "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/analysis.html",
           "name": "analyzer",
           "required": false,
           "type": {
@@ -80321,10 +82232,12 @@
           }
         }
       ],
-      "specLocation": "_types/query_dsl/specialized.ts#L86-L168"
+      "specLocation": "_types/query_dsl/specialized.ts#L87-L172"
     },
     {
       "kind": "interface",
+      "extDocId": "query-dsl-multi-match-query",
+      "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/query-dsl-multi-match-query.html",
       "inherits": {
         "type": {
           "name": "QueryBase",
@@ -80562,7 +82475,7 @@
           }
         }
       ],
-      "specLocation": "_types/query_dsl/fulltext.ts#L456-L539"
+      "specLocation": "_types/query_dsl/fulltext.ts#L471-L557"
     },
     {
       "kind": "enum",
@@ -80588,10 +82501,12 @@
         "name": "MultiValueMode",
         "namespace": "_types.query_dsl"
       },
-      "specLocation": "_types/query_dsl/compound.ts#L355-L372"
+      "specLocation": "_types/query_dsl/compound.ts#L368-L385"
     },
     {
       "kind": "interface",
+      "extDocId": "query-dsl-nested-query",
+      "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/query-dsl-nested-query.html",
       "inherits": {
         "type": {
           "name": "QueryBase",
@@ -80668,7 +82583,7 @@
           }
         }
       ],
-      "specLocation": "_types/query_dsl/joining.ts#L106-L130"
+      "specLocation": "_types/query_dsl/joining.ts#L112-L139"
     },
     {
       "kind": "interface",
@@ -80692,7 +82607,7 @@
         "namespace": "_types.query_dsl"
       },
       "properties": [],
-      "specLocation": "_types/query_dsl/term.ts#L157-L157"
+      "specLocation": "_types/query_dsl/term.ts#L172-L172"
     },
     {
       "kind": "interface",
@@ -80726,7 +82641,7 @@
         "namespace": "_types.query_dsl"
       },
       "properties": [],
-      "specLocation": "_types/query_dsl/compound.ts#L195-L195"
+      "specLocation": "_types/query_dsl/compound.ts#L208-L208"
     },
     {
       "kind": "enum",
@@ -80752,6 +82667,8 @@
     },
     {
       "kind": "interface",
+      "extDocId": "query-dsl-parent-id-query",
+      "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/query-dsl-parent-id-query.html",
       "inherits": {
         "type": {
           "name": "QueryBase",
@@ -80801,10 +82718,12 @@
           }
         }
       ],
-      "specLocation": "_types/query_dsl/joining.ts#L132-L146"
+      "specLocation": "_types/query_dsl/joining.ts#L141-L158"
     },
     {
       "kind": "interface",
+      "extDocId": "query-dsl-percolate-query",
+      "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/query-dsl-percolate-query.html",
       "inherits": {
         "type": {
           "name": "QueryBase",
@@ -80920,7 +82839,7 @@
           }
         }
       ],
-      "specLocation": "_types/query_dsl/specialized.ts#L201-L238"
+      "specLocation": "_types/query_dsl/specialized.ts#L205-L245"
     },
     {
       "kind": "interface",
@@ -80954,10 +82873,12 @@
           }
         }
       ],
-      "specLocation": "_types/query_dsl/specialized.ts#L261-L270"
+      "specLocation": "_types/query_dsl/specialized.ts#L269-L278"
     },
     {
       "kind": "interface",
+      "extDocId": "query-dsl-pinned-query",
+      "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/query-dsl-pinned-query.html",
       "inherits": {
         "type": {
           "name": "QueryBase",
@@ -81013,13 +82934,15 @@
           }
         }
       ],
-      "specLocation": "_types/query_dsl/specialized.ts#L240-L259",
+      "specLocation": "_types/query_dsl/specialized.ts#L247-L267",
       "variants": {
         "kind": "container"
       }
     },
     {
       "kind": "interface",
+      "extDocId": "query-dsl-prefix-query",
+      "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/query-dsl-prefix-query.html",
       "inherits": {
         "type": {
           "name": "QueryBase",
@@ -81078,7 +83001,7 @@
         }
       ],
       "shortcutProperty": "value",
-      "specLocation": "_types/query_dsl/term.ts#L88-L107"
+      "specLocation": "_types/query_dsl/term.ts#L98-L120"
     },
     {
       "kind": "interface",
@@ -81113,12 +83036,12 @@
           }
         }
       ],
-      "specLocation": "_types/query_dsl/abstractions.ts#L452-L463"
+      "specLocation": "_types/query_dsl/abstractions.ts#L458-L469"
     },
     {
       "kind": "interface",
-      "docId": "query-dsl",
-      "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/query-dsl.html",
+      "extDocId": "query-dsl",
+      "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/query-dsl.html",
       "name": {
         "name": "QueryContainer",
         "namespace": "_types.query_dsl"
@@ -81126,8 +83049,8 @@
       "properties": [
         {
           "description": "matches documents matching boolean combinations of other queries.",
-          "docId": "query-dsl-bool-query",
-          "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/query-dsl-bool-query.html",
+          "extDocId": "query-dsl-bool-query",
+          "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/query-dsl-bool-query.html",
           "name": "bool",
           "required": false,
           "type": {
@@ -81140,8 +83063,8 @@
         },
         {
           "description": "Returns documents matching a `positive` query while reducing the relevance score of documents that also match a `negative` query.",
-          "docId": "query-dsl-boosting-query",
-          "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/query-dsl-boosting-query.html",
+          "extDocId": "query-dsl-boosting-query",
+          "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/query-dsl-boosting-query.html",
           "name": "boosting",
           "required": false,
           "type": {
@@ -81186,8 +83109,8 @@
             }
           },
           "description": "The `combined_fields` query supports searching multiple text fields as if their contents had been indexed into one combined field.",
-          "docId": "query-dsl-combined-fields-query",
-          "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/query-dsl-combined-fields-query.html",
+          "extDocId": "query-dsl-combined-fields-query",
+          "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/query-dsl-combined-fields-query.html",
           "name": "combined_fields",
           "required": false,
           "type": {
@@ -81200,8 +83123,8 @@
         },
         {
           "description": "Wraps a filter query and returns every matching document with a relevance score equal to the `boost` parameter value.",
-          "docId": "query-dsl-constant-score-query",
-          "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/query-dsl-constant-score-query.html",
+          "extDocId": "query-dsl-constant-score-query",
+          "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/query-dsl-constant-score-query.html",
           "name": "constant_score",
           "required": false,
           "type": {
@@ -81214,8 +83137,8 @@
         },
         {
           "description": "Returns documents matching one or more wrapped queries, called query clauses or clauses.\nIf a returned document matches multiple query clauses, the `dis_max` query assigns the document the highest relevance score from any matching clause, plus a tie breaking increment for any additional matching subqueries.",
-          "docId": "query-dsl-dis-max-query",
-          "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/query-dsl-dis-max-query.html",
+          "extDocId": "query-dsl-dis-max-query",
+          "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/query-dsl-dis-max-query.html",
           "name": "dis_max",
           "required": false,
           "type": {
@@ -81228,8 +83151,8 @@
         },
         {
           "description": "Boosts the relevance score of documents closer to a provided origin date or point.\nFor example, you can use this query to give more weight to documents closer to a certain date or location.",
-          "docId": "query-dsl-distance-feature-query",
-          "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/query-dsl-distance-feature-query.html",
+          "extDocId": "query-dsl-distance-feature-query",
+          "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/query-dsl-distance-feature-query.html",
           "name": "distance_feature",
           "required": false,
           "type": {
@@ -81242,8 +83165,8 @@
         },
         {
           "description": "Returns documents that contain an indexed value for a field.",
-          "docId": "query-dsl-exists-query",
-          "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/query-dsl-exists-query.html",
+          "extDocId": "query-dsl-exists-query",
+          "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/query-dsl-exists-query.html",
           "name": "exists",
           "required": false,
           "type": {
@@ -81256,8 +83179,8 @@
         },
         {
           "description": "The `function_score` enables you to modify the score of documents that are retrieved by a query.",
-          "docId": "query-dsl-function-score-query",
-          "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/query-dsl-function-score-query.html",
+          "extDocId": "query-dsl-function-score-query",
+          "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/query-dsl-function-score-query.html",
           "name": "function_score",
           "required": false,
           "type": {
@@ -81270,8 +83193,8 @@
         },
         {
           "description": "Returns documents that contain terms similar to the search term, as measured by a Levenshtein edit distance.",
-          "docId": "query-dsl-fuzzy-query",
-          "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/query-dsl-fuzzy-query.html",
+          "extDocId": "query-dsl-fuzzy-query",
+          "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/query-dsl-fuzzy-query.html",
           "name": "fuzzy",
           "required": false,
           "type": {
@@ -81295,8 +83218,8 @@
         },
         {
           "description": "Matches geo_point and geo_shape values that intersect a bounding box.",
-          "docId": "query-dsl-geo-bounding-box-query",
-          "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/query-dsl-geo-bounding-box-query.html",
+          "extDocId": "query-dsl-geo-bounding-box-query",
+          "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/query-dsl-geo-bounding-box-query.html",
           "name": "geo_bounding_box",
           "required": false,
           "type": {
@@ -81309,8 +83232,8 @@
         },
         {
           "description": "Matches `geo_point` and `geo_shape` values within a given distance of a geopoint.",
-          "docId": "query-dsl-geo-distance-query",
-          "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/query-dsl-geo-distance-query.html",
+          "extDocId": "query-dsl-geo-distance-query",
+          "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/query-dsl-geo-distance-query.html",
           "name": "geo_distance",
           "required": false,
           "type": {
@@ -81321,6 +83244,29 @@
             }
           }
         },
+        {
+          "description": "Matches `geo_point` and `geo_shape` values that intersect a grid cell from a GeoGrid aggregation.",
+          "name": "geo_grid",
+          "required": false,
+          "type": {
+            "kind": "dictionary_of",
+            "key": {
+              "kind": "instance_of",
+              "type": {
+                "name": "Field",
+                "namespace": "_types"
+              }
+            },
+            "singleKey": true,
+            "value": {
+              "kind": "instance_of",
+              "type": {
+                "name": "GeoGridQuery",
+                "namespace": "_types.query_dsl"
+              }
+            }
+          }
+        },
         {
           "deprecation": {
             "description": "Use geo-shape instead.",
@@ -81338,8 +83284,8 @@
         },
         {
           "description": "Filter documents indexed using either the `geo_shape` or the `geo_point` type.",
-          "docId": "query-dsl-geo-shape-query",
-          "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/query-dsl-geo-shape-query.html",
+          "extDocId": "query-dsl-geo-shape-query",
+          "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/query-dsl-geo-shape-query.html",
           "name": "geo_shape",
           "required": false,
           "type": {
@@ -81352,8 +83298,8 @@
         },
         {
           "description": "Returns parent documents whose joined child documents match a provided query.",
-          "docId": "query-dsl-has-child-query",
-          "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/query-dsl-has-child-query.html",
+          "extDocId": "query-dsl-has-child-query",
+          "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/query-dsl-has-child-query.html",
           "name": "has_child",
           "required": false,
           "type": {
@@ -81366,8 +83312,8 @@
         },
         {
           "description": "Returns child documents whose joined parent document matches a provided query.",
-          "docId": "query-dsl-has-parent-query",
-          "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/query-dsl-has-parent-query.html",
+          "extDocId": "query-dsl-has-parent-query",
+          "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/query-dsl-has-parent-query.html",
           "name": "has_parent",
           "required": false,
           "type": {
@@ -81380,8 +83326,8 @@
         },
         {
           "description": "Returns documents based on their IDs.\nThis query uses document IDs stored in the `_id` field.",
-          "docId": "query-dsl-ids-query",
-          "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/query-dsl-ids-query.html",
+          "extDocId": "query-dsl-ids-query",
+          "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/query-dsl-ids-query.html",
           "name": "ids",
           "required": false,
           "type": {
@@ -81394,8 +83340,8 @@
         },
         {
           "description": "Returns documents based on the order and proximity of matching terms.",
-          "docId": "query-dsl-intervals-query",
-          "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/query-dsl-intervals-query.html",
+          "extDocId": "query-dsl-intervals-query",
+          "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/query-dsl-intervals-query.html",
           "name": "intervals",
           "required": false,
           "type": {
@@ -81419,8 +83365,8 @@
         },
         {
           "description": "Finds the k nearest vectors to a query vector, as measured by a similarity\nmetric. knn query finds nearest vectors through approximate search on indexed\ndense_vectors.",
-          "docId": "query-dsl-knn-query",
-          "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/query-dsl-knn-query.html",
+          "extDocId": "query-dsl-knn-query",
+          "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/query-dsl-knn-query.html",
           "name": "knn",
           "required": false,
           "type": {
@@ -81433,8 +83379,8 @@
         },
         {
           "description": "Returns documents that match a provided text, number, date or boolean value.\nThe provided text is analyzed before matching.",
-          "docId": "query-dsl-match-query",
-          "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/query-dsl-match-query.html",
+          "extDocId": "query-dsl-match-query",
+          "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/query-dsl-match-query.html",
           "name": "match",
           "required": false,
           "type": {
@@ -81458,8 +83404,8 @@
         },
         {
           "description": "Matches all documents, giving them all a `_score` of 1.0.",
-          "docId": "query-dsl-match-all-query",
-          "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/query-dsl-match-all-query.html",
+          "extDocId": "query-dsl-match-all-query",
+          "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/query-dsl-match-all-query.html",
           "name": "match_all",
           "required": false,
           "type": {
@@ -81472,8 +83418,8 @@
         },
         {
           "description": "Analyzes its input and constructs a `bool` query from the terms.\nEach term except the last is used in a `term` query.\nThe last term is used in a prefix query.",
-          "docId": "query-dsl-match-bool-prefix-query",
-          "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/query-dsl-match-bool-prefix-query.html",
+          "extDocId": "query-dsl-match-bool-prefix-query",
+          "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/query-dsl-match-bool-prefix-query.html",
           "name": "match_bool_prefix",
           "required": false,
           "type": {
@@ -81497,8 +83443,8 @@
         },
         {
           "description": "Matches no documents.",
-          "docId": "query-dsl-match-none-query",
-          "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/query-dsl-match-all-query.html#query-dsl-match-none-query",
+          "extDocId": "query-dsl-match-none-query",
+          "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/query-dsl-match-all-query.html#query-dsl-match-none-query",
           "name": "match_none",
           "required": false,
           "type": {
@@ -81511,8 +83457,8 @@
         },
         {
           "description": "Analyzes the text and creates a phrase query out of the analyzed text.",
-          "docId": "query-dsl-match-query-phrase",
-          "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/query-dsl-match-query-phrase.html",
+          "extDocId": "query-dsl-match-query-phrase",
+          "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/query-dsl-match-query-phrase.html",
           "name": "match_phrase",
           "required": false,
           "type": {
@@ -81536,8 +83482,8 @@
         },
         {
           "description": "Returns documents that contain the words of a provided text, in the same order as provided.\nThe last term of the provided text is treated as a prefix, matching any words that begin with that term.",
-          "docId": "query-dsl-match-query-phrase-prefix",
-          "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/query-dsl-match-query-phrase-prefix.html",
+          "extDocId": "query-dsl-match-query-phrase-prefix",
+          "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/query-dsl-match-query-phrase-prefix.html",
           "name": "match_phrase_prefix",
           "required": false,
           "type": {
@@ -81561,8 +83507,8 @@
         },
         {
           "description": "Returns documents that are \"like\" a given set of documents.",
-          "docId": "query-dsl-mlt-query",
-          "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/query-dsl-mlt-query.html",
+          "extDocId": "query-dsl-mlt-query",
+          "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/query-dsl-mlt-query.html",
           "name": "more_like_this",
           "required": false,
           "type": {
@@ -81575,8 +83521,8 @@
         },
         {
           "description": "Enables you to search for a provided text, number, date or boolean value across multiple fields.\nThe provided text is analyzed before matching.",
-          "docId": "query-dsl-multi-match-query",
-          "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/query-dsl-multi-match-query.html",
+          "extDocId": "query-dsl-multi-match-query",
+          "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/query-dsl-multi-match-query.html",
           "name": "multi_match",
           "required": false,
           "type": {
@@ -81589,8 +83535,8 @@
         },
         {
           "description": "Wraps another query to search nested fields.\nIf an object matches the search, the nested query returns the root parent document.",
-          "docId": "query-dsl-nested-query",
-          "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/query-dsl-nested-query.html",
+          "extDocId": "query-dsl-nested-query",
+          "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/query-dsl-nested-query.html",
           "name": "nested",
           "required": false,
           "type": {
@@ -81603,8 +83549,8 @@
         },
         {
           "description": "Returns child documents joined to a specific parent document.",
-          "docId": "query-dsl-parent-id-query",
-          "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/query-dsl-parent-id-query.html",
+          "extDocId": "query-dsl-parent-id-query",
+          "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/query-dsl-parent-id-query.html",
           "name": "parent_id",
           "required": false,
           "type": {
@@ -81617,8 +83563,8 @@
         },
         {
           "description": "Matches queries stored in an index.",
-          "docId": "query-dsl-percolate-query",
-          "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/query-dsl-percolate-query.html",
+          "extDocId": "query-dsl-percolate-query",
+          "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/query-dsl-percolate-query.html",
           "name": "percolate",
           "required": false,
           "type": {
@@ -81631,8 +83577,8 @@
         },
         {
           "description": "Promotes selected documents to rank higher than those matching a given query.",
-          "docId": "query-dsl-pinned-query",
-          "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/query-dsl-pinned-query.html",
+          "extDocId": "query-dsl-pinned-query",
+          "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/query-dsl-pinned-query.html",
           "name": "pinned",
           "required": false,
           "type": {
@@ -81645,8 +83591,8 @@
         },
         {
           "description": "Returns documents that contain a specific prefix in a provided field.",
-          "docId": "query-dsl-prefix-query",
-          "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/query-dsl-prefix-query.html",
+          "extDocId": "query-dsl-prefix-query",
+          "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/query-dsl-prefix-query.html",
           "name": "prefix",
           "required": false,
           "type": {
@@ -81670,8 +83616,8 @@
         },
         {
           "description": "Returns documents based on a provided query string, using a parser with a strict syntax.",
-          "docId": "query-dsl-query-string-query",
-          "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/query-dsl-query-string-query.html",
+          "extDocId": "query-dsl-query-string-query",
+          "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/query-dsl-query-string-query.html",
           "name": "query_string",
           "required": false,
           "type": {
@@ -81684,8 +83630,8 @@
         },
         {
           "description": "Returns documents that contain terms within a provided range.",
-          "docId": "query-dsl-range-query",
-          "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/query-dsl-range-query.html",
+          "extDocId": "query-dsl-range-query",
+          "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/query-dsl-range-query.html",
           "name": "range",
           "required": false,
           "type": {
@@ -81709,8 +83655,8 @@
         },
         {
           "description": "Boosts the relevance score of documents based on the numeric value of a `rank_feature` or `rank_features` field.",
-          "docId": "query-dsl-rank-feature-query",
-          "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/query-dsl-rank-feature-query.html",
+          "extDocId": "query-dsl-rank-feature-query",
+          "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/query-dsl-rank-feature-query.html",
           "name": "rank_feature",
           "required": false,
           "type": {
@@ -81723,8 +83669,8 @@
         },
         {
           "description": "Returns documents that contain terms matching a regular expression.",
-          "docId": "query-dsl-regexp-query",
-          "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/query-dsl-regexp-query.html",
+          "extDocId": "query-dsl-regexp-query",
+          "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/query-dsl-regexp-query.html",
           "name": "regexp",
           "required": false,
           "type": {
@@ -81759,8 +83705,8 @@
         },
         {
           "description": "Filters documents based on a provided script.\nThe script query is typically used in a filter context.",
-          "docId": "query-dsl-script-query",
-          "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/query-dsl-script-query.html",
+          "extDocId": "query-dsl-script-query",
+          "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/query-dsl-script-query.html",
           "name": "script",
           "required": false,
           "type": {
@@ -81773,8 +83719,8 @@
         },
         {
           "description": "Uses a script to provide a custom score for returned documents.",
-          "docId": "query-dsl-script-score-query",
-          "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/query-dsl-script-score-query.html",
+          "extDocId": "query-dsl-script-score-query",
+          "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/query-dsl-script-score-query.html",
           "name": "script_score",
           "required": false,
           "type": {
@@ -81805,8 +83751,8 @@
         },
         {
           "description": "Queries documents that contain fields indexed using the `shape` type.",
-          "docId": "query-dsl-shape-query",
-          "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/query-dsl-shape-query.html",
+          "extDocId": "query-dsl-shape-query",
+          "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/query-dsl-shape-query.html",
           "name": "shape",
           "required": false,
           "type": {
@@ -81819,8 +83765,8 @@
         },
         {
           "description": "Returns documents based on a provided query string, using a parser with a limited but fault-tolerant syntax.",
-          "docId": "query-dsl-simple-query-string-query",
-          "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/query-dsl-simple-query-string-query.html",
+          "extDocId": "query-dsl-simple-query-string-query",
+          "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/query-dsl-simple-query-string-query.html",
           "name": "simple_query_string",
           "required": false,
           "type": {
@@ -81833,8 +83779,8 @@
         },
         {
           "description": "Returns matches which enclose another span query.",
-          "docId": "query-dsl-span-containing-query",
-          "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/query-dsl-span-containing-query.html",
+          "extDocId": "query-dsl-span-containing-query",
+          "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/query-dsl-span-containing-query.html",
           "name": "span_containing",
           "required": false,
           "type": {
@@ -81847,8 +83793,8 @@
         },
         {
           "description": "Wrapper to allow span queries to participate in composite single-field span queries by _lying_ about their search field.",
-          "docId": "query-dsl-span-field-masking-query",
-          "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/query-dsl-span-field-masking-query.html",
+          "extDocId": "query-dsl-span-field-masking-query",
+          "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/query-dsl-span-field-masking-query.html",
           "name": "span_field_masking",
           "required": false,
           "type": {
@@ -81861,8 +83807,8 @@
         },
         {
           "description": "Matches spans near the beginning of a field.",
-          "docId": "query-dsl-span-first-query",
-          "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/query-dsl-span-first-query.html",
+          "extDocId": "query-dsl-span-first-query",
+          "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/query-dsl-span-first-query.html",
           "name": "span_first",
           "required": false,
           "type": {
@@ -81875,8 +83821,8 @@
         },
         {
           "description": "Allows you to wrap a multi term query (one of `wildcard`, `fuzzy`, `prefix`, `range`, or `regexp` query) as a `span` query, so it can be nested.",
-          "docId": "query-dsl-span-multi-term-query",
-          "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/query-dsl-span-multi-term-query.html",
+          "extDocId": "query-dsl-span-multi-term-query",
+          "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/query-dsl-span-multi-term-query.html",
           "name": "span_multi",
           "required": false,
           "type": {
@@ -81889,8 +83835,8 @@
         },
         {
           "description": "Matches spans which are near one another.\nYou can specify `slop`, the maximum number of intervening unmatched positions, as well as whether matches are required to be in-order.",
-          "docId": "query-dsl-span-near-query",
-          "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/query-dsl-span-near-query.html",
+          "extDocId": "query-dsl-span-near-query",
+          "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/query-dsl-span-near-query.html",
           "name": "span_near",
           "required": false,
           "type": {
@@ -81903,8 +83849,8 @@
         },
         {
           "description": "Removes matches which overlap with another span query or which are within x tokens before (controlled by the parameter `pre`) or y tokens after (controlled by the parameter `post`) another span query.",
-          "docId": "query-dsl-span-not-query",
-          "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/query-dsl-span-not-query.html",
+          "extDocId": "query-dsl-span-not-query",
+          "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/query-dsl-span-not-query.html",
           "name": "span_not",
           "required": false,
           "type": {
@@ -81917,8 +83863,8 @@
         },
         {
           "description": "Matches the union of its span clauses.",
-          "docId": "query-dsl-span-or-query",
-          "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/query-dsl-span-or-query.html",
+          "extDocId": "query-dsl-span-or-query",
+          "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/query-dsl-span-or-query.html",
           "name": "span_or",
           "required": false,
           "type": {
@@ -81931,8 +83877,8 @@
         },
         {
           "description": "Matches spans containing a term.",
-          "docId": "query-dsl-span-term-query",
-          "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/query-dsl-span-term-query.html",
+          "extDocId": "query-dsl-span-term-query",
+          "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/query-dsl-span-term-query.html",
           "name": "span_term",
           "required": false,
           "type": {
@@ -81956,8 +83902,8 @@
         },
         {
           "description": "Returns matches which are enclosed inside another span query.",
-          "docId": "query-dsl-span-within-query",
-          "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/query-dsl-span-within-query.html",
+          "extDocId": "query-dsl-span-within-query",
+          "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/query-dsl-span-within-query.html",
           "name": "span_within",
           "required": false,
           "type": {
@@ -81976,7 +83922,8 @@
             }
           },
           "description": "Using input query vectors or a natural language processing model to convert a query into a list of token-weight pairs, queries against a sparse vector field.",
-          "docId": "query-dsl-sparse-vector-query",
+          "extDocId": "query-dsl-sparse-vector-query",
+          "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/query-dsl-sparse-vector-query.html",
           "name": "sparse_vector",
           "required": false,
           "type": {
@@ -81989,8 +83936,8 @@
         },
         {
           "description": "Returns documents that contain an exact term in a provided field.\nTo return a document, the query term must exactly match the queried field's value, including whitespace and capitalization.",
-          "docId": "query-dsl-term-query",
-          "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/query-dsl-term-query.html",
+          "extDocId": "query-dsl-term-query",
+          "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/query-dsl-term-query.html",
           "name": "term",
           "required": false,
           "type": {
@@ -82014,8 +83961,8 @@
         },
         {
           "description": "Returns documents that contain one or more exact terms in a provided field.\nTo return a document, one or more terms must exactly match a field value, including whitespace and capitalization.",
-          "docId": "query-dsl-terms-query",
-          "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/query-dsl-terms-query.html",
+          "extDocId": "query-dsl-terms-query",
+          "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/query-dsl-terms-query.html",
           "name": "terms",
           "required": false,
           "type": {
@@ -82028,8 +83975,8 @@
         },
         {
           "description": "Returns documents that contain a minimum number of exact terms in a provided field.\nTo return a document, a required number of terms must exactly match the field values, including whitespace and capitalization.",
-          "docId": "query-dsl-terms-set-query",
-          "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/query-dsl-terms-set-query.html",
+          "extDocId": "query-dsl-terms-set-query",
+          "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/query-dsl-terms-set-query.html",
           "name": "terms_set",
           "required": false,
           "type": {
@@ -82063,8 +84010,8 @@
             "version": "8.15.0"
           },
           "description": "Uses a natural language processing model to convert the query text into a list of token-weight pairs which are then used in a query against a sparse vector or rank features field.",
-          "docId": "query-dsl-text-expansion-query",
-          "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/query-dsl-text-expansion-query.html",
+          "extDocId": "query-dsl-text-expansion-query",
+          "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/query-dsl-text-expansion-query.html",
           "name": "text_expansion",
           "required": false,
           "type": {
@@ -82098,7 +84045,8 @@
             "version": "8.15.0"
           },
           "description": "Supports returning text_expansion query results by sending in precomputed tokens with the query.",
-          "docId": "query-dsl-weighted-tokens-query",
+          "extDocId": "query-dsl-weighted-tokens-query",
+          "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/query-dsl-weighted-tokens-query.html",
           "name": "weighted_tokens",
           "required": false,
           "type": {
@@ -82122,8 +84070,8 @@
         },
         {
           "description": "Returns documents that contain terms matching a wildcard pattern.",
-          "docId": "query-dsl-wildcard-query",
-          "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/query-dsl-wildcard-query.html",
+          "extDocId": "query-dsl-wildcard-query",
+          "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/query-dsl-wildcard-query.html",
           "name": "wildcard",
           "required": false,
           "type": {
@@ -82147,8 +84095,8 @@
         },
         {
           "description": "A query that accepts any other query as base64 encoded string.",
-          "docId": "query-dsl-wrapper-query",
-          "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/query-dsl-wrapper-query.html",
+          "extDocId": "query-dsl-wrapper-query",
+          "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/query-dsl-wrapper-query.html",
           "name": "wrapper",
           "required": false,
           "type": {
@@ -82175,7 +84123,7 @@
           }
         }
       ],
-      "specLocation": "_types/query_dsl/abstractions.ts#L102-L427",
+      "specLocation": "_types/query_dsl/abstractions.ts#L103-L433",
       "variants": {
         "kind": "container",
         "nonExhaustive": true
@@ -82183,6 +84131,8 @@
     },
     {
       "kind": "interface",
+      "extDocId": "query-dsl-query-string-query",
+      "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/query-dsl-query-string-query.html",
       "inherits": {
         "type": {
           "name": "QueryBase",
@@ -82520,7 +84470,7 @@
           }
         }
       ],
-      "specLocation": "_types/query_dsl/fulltext.ts#L580-L700"
+      "specLocation": "_types/query_dsl/fulltext.ts#L598-L721"
     },
     {
       "kind": "interface",
@@ -82564,7 +84514,7 @@
           }
         }
       ],
-      "specLocation": "_types/query_dsl/compound.ts#L131-L134"
+      "specLocation": "_types/query_dsl/compound.ts#L144-L147"
     },
     {
       "kind": "type_alias",
@@ -82574,11 +84524,13 @@
         "number",
         "term"
       ],
+      "extDocId": "query-dsl-range-query",
+      "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/query-dsl-range-query.html",
       "name": {
         "name": "RangeQuery",
         "namespace": "_types.query_dsl"
       },
-      "specLocation": "_types/query_dsl/term.ts#L161-L170",
+      "specLocation": "_types/query_dsl/term.ts#L176-L186",
       "type": {
         "kind": "union_of",
         "items": [
@@ -82701,6 +84653,10 @@
           }
         },
         {
+          "deprecation": {
+            "description": "Use gte or gt instead",
+            "version": "8.16.0"
+          },
           "name": "from",
           "required": false,
           "type": {
@@ -82724,6 +84680,10 @@
           }
         },
         {
+          "deprecation": {
+            "description": "Use lte or lt instead",
+            "version": "8.16.0"
+          },
           "name": "to",
           "required": false,
           "type": {
@@ -82747,7 +84707,7 @@
           }
         }
       ],
-      "specLocation": "_types/query_dsl/term.ts#L109-L133"
+      "specLocation": "_types/query_dsl/term.ts#L122-L148"
     },
     {
       "kind": "enum",
@@ -82769,7 +84729,7 @@
         "name": "RangeRelation",
         "namespace": "_types.query_dsl"
       },
-      "specLocation": "_types/query_dsl/term.ts#L172-L185"
+      "specLocation": "_types/query_dsl/term.ts#L188-L201"
     },
     {
       "kind": "interface",
@@ -82778,7 +84738,7 @@
         "namespace": "_types.query_dsl"
       },
       "properties": [],
-      "specLocation": "_types/query_dsl/specialized.ts#L272-L272"
+      "specLocation": "_types/query_dsl/specialized.ts#L280-L280"
     },
     {
       "kind": "interface",
@@ -82793,7 +84753,7 @@
         "namespace": "_types.query_dsl"
       },
       "properties": [],
-      "specLocation": "_types/query_dsl/specialized.ts#L274-L274"
+      "specLocation": "_types/query_dsl/specialized.ts#L282-L282"
     },
     {
       "kind": "interface",
@@ -82821,7 +84781,7 @@
           }
         }
       ],
-      "specLocation": "_types/query_dsl/specialized.ts#L276-L281"
+      "specLocation": "_types/query_dsl/specialized.ts#L284-L289"
     },
     {
       "kind": "interface",
@@ -82849,7 +84809,7 @@
           }
         }
       ],
-      "specLocation": "_types/query_dsl/specialized.ts#L283-L288"
+      "specLocation": "_types/query_dsl/specialized.ts#L291-L296"
     },
     {
       "kind": "interface",
@@ -82889,10 +84849,12 @@
           }
         }
       ],
-      "specLocation": "_types/query_dsl/specialized.ts#L290-L299"
+      "specLocation": "_types/query_dsl/specialized.ts#L298-L307"
     },
     {
       "kind": "interface",
+      "extDocId": "query-dsl-rank-feature-query",
+      "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/query-dsl-rank-feature-query.html",
       "inherits": {
         "type": {
           "name": "QueryBase",
@@ -82965,10 +84927,12 @@
           }
         }
       ],
-      "specLocation": "_types/query_dsl/specialized.ts#L301-L324"
+      "specLocation": "_types/query_dsl/specialized.ts#L309-L335"
     },
     {
       "kind": "interface",
+      "extDocId": "query-dsl-regexp-query",
+      "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/query-dsl-regexp-query.html",
       "inherits": {
         "type": {
           "name": "QueryBase",
@@ -83056,10 +85020,12 @@
         }
       ],
       "shortcutProperty": "value",
-      "specLocation": "_types/query_dsl/term.ts#L187-L217"
+      "specLocation": "_types/query_dsl/term.ts#L203-L236"
     },
     {
       "kind": "interface",
+      "extDocId": "query-dsl-rule-query",
+      "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/query-dsl-rule-query.html",
       "inherits": {
         "type": {
           "name": "QueryBase",
@@ -83104,10 +85070,12 @@
           }
         }
       ],
-      "specLocation": "_types/query_dsl/specialized.ts#L380-L384"
+      "specLocation": "_types/query_dsl/specialized.ts#L398-L405"
     },
     {
       "kind": "interface",
+      "extDocId": "query-dsl-script-query",
+      "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/query-dsl-script-query.html",
       "inherits": {
         "type": {
           "name": "QueryBase",
@@ -83132,7 +85100,7 @@
           }
         }
       ],
-      "specLocation": "_types/query_dsl/specialized.ts#L326-L332"
+      "specLocation": "_types/query_dsl/specialized.ts#L337-L346"
     },
     {
       "kind": "interface",
@@ -83154,10 +85122,12 @@
           }
         }
       ],
-      "specLocation": "_types/query_dsl/compound.ts#L124-L129"
+      "specLocation": "_types/query_dsl/compound.ts#L137-L142"
     },
     {
       "kind": "interface",
+      "extDocId": "query-dsl-script-score-query",
+      "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/query-dsl-script-score-query.html",
       "inherits": {
         "type": {
           "name": "QueryBase",
@@ -83206,10 +85176,12 @@
           }
         }
       ],
-      "specLocation": "_types/query_dsl/specialized.ts#L334-L348"
+      "specLocation": "_types/query_dsl/specialized.ts#L348-L365"
     },
     {
       "kind": "interface",
+      "extDocId": "query-dsl-semantic-query",
+      "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/query-dsl-semantic-query.html",
       "inherits": {
         "type": {
           "name": "QueryBase",
@@ -83246,7 +85218,7 @@
           }
         }
       ],
-      "specLocation": "_types/query_dsl/SemanticQuery.ts#L22-L27"
+      "specLocation": "_types/query_dsl/SemanticQuery.ts#L22-L30"
     },
     {
       "kind": "interface",
@@ -83292,7 +85264,7 @@
           }
         }
       ],
-      "specLocation": "_types/query_dsl/specialized.ts#L365-L378"
+      "specLocation": "_types/query_dsl/specialized.ts#L383-L396"
     },
     {
       "kind": "interface",
@@ -83327,6 +85299,8 @@
           }
         }
       ],
+      "extDocId": "query-dsl-shape-query",
+      "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/query-dsl-shape-query.html",
       "inherits": {
         "type": {
           "name": "QueryBase",
@@ -83351,7 +85325,7 @@
           }
         }
       ],
-      "specLocation": "_types/query_dsl/specialized.ts#L350-L363"
+      "specLocation": "_types/query_dsl/specialized.ts#L367-L381"
     },
     {
       "kind": "enum",
@@ -83413,7 +85387,7 @@
         "name": "SimpleQueryStringFlag",
         "namespace": "_types.query_dsl"
       },
-      "specLocation": "_types/query_dsl/fulltext.ts#L708-L763"
+      "specLocation": "_types/query_dsl/fulltext.ts#L729-L784"
     },
     {
       "kind": "type_alias",
@@ -83424,7 +85398,7 @@
         "name": "SimpleQueryStringFlags",
         "namespace": "_types.query_dsl"
       },
-      "specLocation": "_types/query_dsl/fulltext.ts#L702-L706",
+      "specLocation": "_types/query_dsl/fulltext.ts#L723-L727",
       "type": {
         "kind": "instance_of",
         "generics": [
@@ -83444,6 +85418,8 @@
     },
     {
       "kind": "interface",
+      "extDocId": "query-dsl-simple-query-string-query",
+      "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/query-dsl-simple-query-string-query.html",
       "inherits": {
         "type": {
           "name": "QueryBase",
@@ -83626,10 +85602,12 @@
           }
         }
       ],
-      "specLocation": "_types/query_dsl/fulltext.ts#L765-L830"
+      "specLocation": "_types/query_dsl/fulltext.ts#L786-L854"
     },
     {
       "kind": "interface",
+      "extDocId": "query-dsl-span-containing-query",
+      "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/query-dsl-span-containing-query.html",
       "inherits": {
         "type": {
           "name": "QueryBase",
@@ -83666,10 +85644,12 @@
           }
         }
       ],
-      "specLocation": "_types/query_dsl/span.ts#L25-L36"
+      "specLocation": "_types/query_dsl/span.ts#L25-L39"
     },
     {
       "kind": "interface",
+      "extDocId": "query-dsl-span-field-masking-query",
+      "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/query-dsl-span-field-masking-query.html",
       "inherits": {
         "type": {
           "name": "QueryBase",
@@ -83704,10 +85684,12 @@
           }
         }
       ],
-      "specLocation": "_types/query_dsl/span.ts#L38-L41"
+      "specLocation": "_types/query_dsl/span.ts#L41-L47"
     },
     {
       "kind": "interface",
+      "extDocId": "query-dsl-span-first-query",
+      "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/query-dsl-span-first-query.html",
       "inherits": {
         "type": {
           "name": "QueryBase",
@@ -83744,7 +85726,7 @@
           }
         }
       ],
-      "specLocation": "_types/query_dsl/span.ts#L43-L52"
+      "specLocation": "_types/query_dsl/span.ts#L49-L61"
     },
     {
       "kind": "type_alias",
@@ -83753,7 +85735,7 @@
         "name": "SpanGapQuery",
         "namespace": "_types.query_dsl"
       },
-      "specLocation": "_types/query_dsl/span.ts#L54-L56",
+      "specLocation": "_types/query_dsl/span.ts#L63-L65",
       "type": {
         "kind": "dictionary_of",
         "key": {
@@ -83775,6 +85757,8 @@
     },
     {
       "kind": "interface",
+      "extDocId": "query-dsl-span-multi-term-query",
+      "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/query-dsl-span-multi-term-query.html",
       "inherits": {
         "type": {
           "name": "QueryBase",
@@ -83799,10 +85783,12 @@
           }
         }
       ],
-      "specLocation": "_types/query_dsl/span.ts#L58-L63"
+      "specLocation": "_types/query_dsl/span.ts#L67-L75"
     },
     {
       "kind": "interface",
+      "extDocId": "query-dsl-span-near-query",
+      "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/query-dsl-span-near-query.html",
       "inherits": {
         "type": {
           "name": "QueryBase",
@@ -83854,10 +85840,12 @@
           }
         }
       ],
-      "specLocation": "_types/query_dsl/span.ts#L65-L78"
+      "specLocation": "_types/query_dsl/span.ts#L77-L93"
     },
     {
       "kind": "interface",
+      "extDocId": "query-dsl-span-not-query",
+      "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/query-dsl-span-not-query.html",
       "inherits": {
         "type": {
           "name": "QueryBase",
@@ -83932,10 +85920,12 @@
           }
         }
       ],
-      "specLocation": "_types/query_dsl/span.ts#L80-L104"
+      "specLocation": "_types/query_dsl/span.ts#L95-L122"
     },
     {
       "kind": "interface",
+      "extDocId": "query-dsl-span-or-query",
+      "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/query-dsl-span-or-query.html",
       "inherits": {
         "type": {
           "name": "QueryBase",
@@ -83963,7 +85953,7 @@
           }
         }
       ],
-      "specLocation": "_types/query_dsl/span.ts#L106-L111"
+      "specLocation": "_types/query_dsl/span.ts#L124-L132"
     },
     {
       "kind": "interface",
@@ -84103,7 +86093,7 @@
           }
         }
       ],
-      "specLocation": "_types/query_dsl/span.ts#L131-L173",
+      "specLocation": "_types/query_dsl/span.ts#L158-L200",
       "variants": {
         "kind": "container",
         "nonExhaustive": true
@@ -84111,6 +86101,8 @@
     },
     {
       "kind": "interface",
+      "extDocId": "query-dsl-span-term-query",
+      "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/query-dsl-span-term-query.html",
       "inherits": {
         "type": {
           "name": "QueryBase",
@@ -84135,10 +86127,12 @@
         }
       ],
       "shortcutProperty": "value",
-      "specLocation": "_types/query_dsl/span.ts#L113-L116"
+      "specLocation": "_types/query_dsl/span.ts#L134-L140"
     },
     {
       "kind": "interface",
+      "extDocId": "query-dsl-span-within-query",
+      "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/query-dsl-span-within-query.html",
       "inherits": {
         "type": {
           "name": "QueryBase",
@@ -84175,10 +86169,12 @@
           }
         }
       ],
-      "specLocation": "_types/query_dsl/span.ts#L118-L129"
+      "specLocation": "_types/query_dsl/span.ts#L142-L156"
     },
     {
       "kind": "interface",
+      "extDocId": "query-dsl-sparse-vector-query",
+      "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/query-dsl-sparse-vector-query.html",
       "inherits": {
         "type": {
           "name": "QueryBase",
@@ -84296,13 +86292,15 @@
           }
         }
       ],
-      "specLocation": "_types/query_dsl/SparseVectorQuery.ts#L26-L79",
+      "specLocation": "_types/query_dsl/SparseVectorQuery.ts#L26-L80",
       "variants": {
         "kind": "container"
       }
     },
     {
       "kind": "interface",
+      "extDocId": "query-dsl-term-query",
+      "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/query-dsl-term-query.html",
       "inherits": {
         "type": {
           "name": "QueryBase",
@@ -84347,7 +86345,7 @@
         }
       ],
       "shortcutProperty": "value",
-      "specLocation": "_types/query_dsl/term.ts#L219-L233"
+      "specLocation": "_types/query_dsl/term.ts#L238-L255"
     },
     {
       "kind": "interface",
@@ -84371,7 +86369,7 @@
         "namespace": "_types.query_dsl"
       },
       "properties": [],
-      "specLocation": "_types/query_dsl/term.ts#L159-L159"
+      "specLocation": "_types/query_dsl/term.ts#L174-L174"
     },
     {
       "kind": "interface",
@@ -84425,7 +86423,7 @@
           }
         }
       ],
-      "specLocation": "_types/query_dsl/term.ts#L247-L252"
+      "specLocation": "_types/query_dsl/term.ts#L270-L275"
     },
     {
       "kind": "interface",
@@ -84460,6 +86458,8 @@
           }
         }
       ],
+      "extDocId": "query-dsl-terms-query",
+      "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/query-dsl-terms-query.html",
       "inherits": {
         "type": {
           "name": "QueryBase",
@@ -84471,7 +86471,7 @@
         "namespace": "_types.query_dsl"
       },
       "properties": [],
-      "specLocation": "_types/query_dsl/term.ts#L235-L240"
+      "specLocation": "_types/query_dsl/term.ts#L257-L263"
     },
     {
       "kind": "type_alias",
@@ -84483,7 +86483,7 @@
         "name": "TermsQueryField",
         "namespace": "_types.query_dsl"
       },
-      "specLocation": "_types/query_dsl/term.ts#L242-L245",
+      "specLocation": "_types/query_dsl/term.ts#L265-L268",
       "type": {
         "kind": "union_of",
         "items": [
@@ -84509,6 +86509,8 @@
     },
     {
       "kind": "interface",
+      "extDocId": "query-dsl-terms-set-query",
+      "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/query-dsl-terms-set-query.html",
       "inherits": {
         "type": {
           "name": "QueryBase",
@@ -84520,6 +86522,24 @@
         "namespace": "_types.query_dsl"
       },
       "properties": [
+        {
+          "availability": {
+            "serverless": {},
+            "stack": {
+              "since": "8.10.0"
+            }
+          },
+          "description": "Specification describing number of matching terms required to return a document.",
+          "name": "minimum_should_match",
+          "required": false,
+          "type": {
+            "kind": "instance_of",
+            "type": {
+              "name": "MinimumShouldMatch",
+              "namespace": "_types"
+            }
+          }
+        },
         {
           "description": "Numeric field containing the number of matching terms required to return a document.",
           "name": "minimum_should_match_field",
@@ -84560,10 +86580,12 @@
           }
         }
       ],
-      "specLocation": "_types/query_dsl/term.ts#L254-L267"
+      "specLocation": "_types/query_dsl/term.ts#L277-L299"
     },
     {
       "kind": "interface",
+      "extDocId": "query-dsl-text-expansion-query",
+      "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/query-dsl-text-expansion-query.html",
       "inherits": {
         "type": {
           "name": "QueryBase",
@@ -84621,7 +86643,7 @@
           }
         }
       ],
-      "specLocation": "_types/query_dsl/TextExpansionQuery.ts#L23-L33"
+      "specLocation": "_types/query_dsl/TextExpansionQuery.ts#L23-L36"
     },
     {
       "kind": "enum",
@@ -84655,7 +86677,7 @@
         "name": "TextQueryType",
         "namespace": "_types.query_dsl"
       },
-      "specLocation": "_types/query_dsl/fulltext.ts#L541-L567"
+      "specLocation": "_types/query_dsl/fulltext.ts#L559-L585"
     },
     {
       "kind": "interface",
@@ -84731,7 +86753,7 @@
           }
         }
       ],
-      "specLocation": "_types/query_dsl/term.ts#L269-L271"
+      "specLocation": "_types/query_dsl/term.ts#L301-L303"
     },
     {
       "kind": "interface",
@@ -84757,7 +86779,7 @@
         "namespace": "_types.query_dsl"
       },
       "properties": [],
-      "specLocation": "_types/query_dsl/compound.ts#L191-L194"
+      "specLocation": "_types/query_dsl/compound.ts#L204-L207"
     },
     {
       "kind": "interface",
@@ -84825,10 +86847,12 @@
           }
         }
       ],
-      "specLocation": "_types/query_dsl/term.ts#L135-L144"
+      "specLocation": "_types/query_dsl/term.ts#L150-L159"
     },
     {
       "kind": "interface",
+      "extDocId": "query-dsl-weighted-tokens-query",
+      "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/query-dsl-weighted-tokens-query.html",
       "inherits": {
         "type": {
           "name": "QueryBase",
@@ -84876,10 +86900,12 @@
           }
         }
       ],
-      "specLocation": "_types/query_dsl/WeightedTokensQuery.ts#L25-L30"
+      "specLocation": "_types/query_dsl/WeightedTokensQuery.ts#L25-L33"
     },
     {
       "kind": "interface",
+      "extDocId": "query-dsl-wildcard-query",
+      "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/query-dsl-wildcard-query.html",
       "inherits": {
         "type": {
           "name": "QueryBase",
@@ -84949,10 +86975,12 @@
         }
       ],
       "shortcutProperty": "value",
-      "specLocation": "_types/query_dsl/term.ts#L273-L290"
+      "specLocation": "_types/query_dsl/term.ts#L305-L325"
     },
     {
       "kind": "interface",
+      "extDocId": "query-dsl-wrapper-query",
+      "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/query-dsl-wrapper-query.html",
       "inherits": {
         "type": {
           "name": "QueryBase",
@@ -84977,7 +87005,7 @@
           }
         }
       ],
-      "specLocation": "_types/query_dsl/abstractions.ts#L501-L507"
+      "specLocation": "_types/query_dsl/abstractions.ts#L507-L516"
     },
     {
       "kind": "enum",
@@ -84995,7 +87023,7 @@
         "name": "ZeroTermsQuery",
         "namespace": "_types.query_dsl"
       },
-      "specLocation": "_types/query_dsl/fulltext.ts#L569-L578"
+      "specLocation": "_types/query_dsl/fulltext.ts#L587-L596"
     },
     {
       "kind": "interface",
@@ -85410,7 +87438,7 @@
       "body": {
         "kind": "no_body"
       },
-      "description": "Deletes an async search by identifier.\nIf the search is still running, the search request will be cancelled.\nOtherwise, the saved search results are deleted.\nIf the Elasticsearch security features are enabled, the deletion of a specific async search is restricted to: the authenticated user that submitted the original search request; users that have the `cancel_task` cluster privilege.",
+      "description": "Delete an async search.\n\nIf the asynchronous search is still running, it is cancelled.\nOtherwise, the saved search results are deleted.\nIf the Elasticsearch security features are enabled, the deletion of a specific async search is restricted to: the authenticated user that submitted the original search request; users that have the `cancel_task` cluster privilege.",
       "inherits": {
         "type": {
           "name": "RequestBase",
@@ -85436,7 +87464,7 @@
         }
       ],
       "query": [],
-      "specLocation": "async_search/delete/AsyncSearchDeleteRequest.ts#L23-L38"
+      "specLocation": "async_search/delete/AsyncSearchDeleteRequest.ts#L23-L40"
     },
     {
       "kind": "response",
@@ -85464,7 +87492,7 @@
       "body": {
         "kind": "no_body"
       },
-      "description": "Retrieves the results of a previously submitted async search request given its identifier.\nIf the Elasticsearch security features are enabled, access to the results of a specific async search is restricted to the user or API key that submitted it.",
+      "description": "Get async search results.\n\nRetrieve the results of a previously submitted asynchronous search request.\nIf the Elasticsearch security features are enabled, access to the results of a specific async search is restricted to the user or API key that submitted it.",
       "inherits": {
         "type": {
           "name": "RequestBase",
@@ -85527,7 +87555,7 @@
           }
         }
       ],
-      "specLocation": "async_search/get/AsyncSearchGetRequest.ts#L24-L54"
+      "specLocation": "async_search/get/AsyncSearchGetRequest.ts#L24-L57"
     },
     {
       "kind": "response",
@@ -85570,7 +87598,7 @@
       "body": {
         "kind": "no_body"
       },
-      "description": "Get async search status\nRetrieves the status of a previously submitted async search request given its identifier, without retrieving search results.\nIf the Elasticsearch security features are enabled, use of this API is restricted to the `monitoring_user` role.",
+      "description": "Get the async search status.\n\nGet the status of a previously submitted async search request given its identifier, without retrieving search results.\nIf the Elasticsearch security features are enabled, use of this API is restricted to the `monitoring_user` role.",
       "inherits": {
         "type": {
           "name": "RequestBase",
@@ -85595,8 +87623,22 @@
           }
         }
       ],
-      "query": [],
-      "specLocation": "async_search/status/AsyncSearchStatusRequest.ts#L23-L37"
+      "query": [
+        {
+          "description": "Specifies how long the async search needs to be available.\nOngoing async searches and any saved search results are deleted after this period.",
+          "name": "keep_alive",
+          "required": false,
+          "serverDefault": "5d",
+          "type": {
+            "kind": "instance_of",
+            "type": {
+              "name": "Duration",
+              "namespace": "_types"
+            }
+          }
+        }
+      ],
+      "specLocation": "async_search/status/AsyncSearchStatusRequest.ts#L24-L48"
     },
     {
       "kind": "response",
@@ -86151,7 +88193,7 @@
           }
         ]
       },
-      "description": "Runs a search request asynchronously.\nWhen the primary sort of the results is an indexed field, shards get sorted based on minimum and maximum value that they hold for that field, hence partial results become available following the sort criteria that was requested.\nWarning: Async search does not support scroll nor search requests that only include the suggest section.\nBy default, Elasticsearch doesn’t allow you to store an async search response larger than 10Mb and an attempt to do this results in an error.\nThe maximum allowed size for a stored async search response can be set by changing the `search.max_async_search_response_size` cluster level setting.",
+      "description": "Run an async search.\n\nWhen the primary sort of the results is an indexed field, shards get sorted based on minimum and maximum value that they hold for that field. Partial results become available following the sort criteria that was requested.\n\nWarning: Asynchronous search does not support scroll or search requests that include only the suggest section.\n\nBy default, Elasticsearch does not allow you to store an async search response larger than 10Mb and an attempt to do this results in an error.\nThe maximum allowed size for a stored async search response can be set by changing the `search.max_async_search_response_size` cluster level setting.",
       "inherits": {
         "type": {
           "name": "RequestBase",
@@ -86459,17 +88501,6 @@
             }
           }
         },
-        {
-          "name": "scroll",
-          "required": false,
-          "type": {
-            "kind": "instance_of",
-            "type": {
-              "name": "Duration",
-              "namespace": "_types"
-            }
-          }
-        },
         {
           "description": "Search operation type",
           "name": "search_type",
@@ -86752,7 +88783,7 @@
           }
         }
       ],
-      "specLocation": "async_search/submit/AsyncSearchSubmitRequest.ts#L55-L286"
+      "specLocation": "async_search/submit/AsyncSearchSubmitRequest.ts#L55-L291"
     },
     {
       "kind": "response",
@@ -86809,7 +88840,9 @@
           }
         },
         {
-          "description": "Decider settings",
+          "description": "Decider settings.",
+          "extDocId": "autoscaling-deciders",
+          "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/autoscaling-deciders.html",
           "name": "deciders",
           "required": true,
           "type": {
@@ -86828,7 +88861,7 @@
           }
         }
       ],
-      "specLocation": "autoscaling/_types/AutoscalingPolicy.ts#L23-L27"
+      "specLocation": "autoscaling/_types/AutoscalingPolicy.ts#L23-L30"
     },
     {
       "kind": "request",
@@ -86838,7 +88871,7 @@
       "body": {
         "kind": "no_body"
       },
-      "description": "Deletes an autoscaling policy. Designed for indirect use by ECE/ESS and ECK. Direct use is not supported.",
+      "description": "Delete an autoscaling policy.\n\nNOTE: This feature is designed for indirect use by Elasticsearch Service, Elastic Cloud Enterprise, and Elastic Cloud on Kubernetes. Direct use is not supported.",
       "inherits": {
         "type": {
           "name": "RequestBase",
@@ -86863,8 +88896,35 @@
           }
         }
       ],
-      "query": [],
-      "specLocation": "autoscaling/delete_autoscaling_policy/DeleteAutoscalingPolicyRequest.ts#L23-L32"
+      "query": [
+        {
+          "description": "Period to wait for a connection to the master node.\nIf no response is received before the timeout expires, the request fails and returns an error.",
+          "name": "master_timeout",
+          "required": false,
+          "serverDefault": "30s",
+          "type": {
+            "kind": "instance_of",
+            "type": {
+              "name": "Duration",
+              "namespace": "_types"
+            }
+          }
+        },
+        {
+          "description": "Period to wait for a response. If no response is received before the timeout expires, the request fails and returns an error.",
+          "name": "timeout",
+          "required": false,
+          "serverDefault": "30s",
+          "type": {
+            "kind": "instance_of",
+            "type": {
+              "name": "Duration",
+              "namespace": "_types"
+            }
+          }
+        }
+      ],
+      "specLocation": "autoscaling/delete_autoscaling_policy/DeleteAutoscalingPolicyRequest.ts#L24-L48"
     },
     {
       "kind": "response",
@@ -87084,7 +89144,7 @@
       "body": {
         "kind": "no_body"
       },
-      "description": "Gets the current autoscaling capacity based on the configured autoscaling policy. Designed for indirect use by ECE/ESS and ECK. Direct use is not supported.",
+      "description": "Get the autoscaling capacity.\n\nNOTE: This feature is designed for indirect use by Elasticsearch Service, Elastic Cloud Enterprise, and Elastic Cloud on Kubernetes. Direct use is not supported.\n\nThis API gets the current autoscaling capacity based on the configured autoscaling policy.\nIt will return information to size the cluster appropriately to the current workload.\n\nThe `required_capacity` is calculated as the maximum of the `required_capacity` result of all individual deciders that are enabled for the policy.\n\nThe operator should verify that the `current_nodes` match the operator’s knowledge of the cluster to avoid making autoscaling decisions based on stale or incomplete information.\n\nThe response contains decider-specific information you can use to diagnose how and why autoscaling determined a certain capacity was required.\nThis information is provided for diagnosis only.\nDo not use this information to make autoscaling decisions.",
       "inherits": {
         "type": {
           "name": "RequestBase",
@@ -87096,8 +89156,22 @@
         "namespace": "autoscaling.get_autoscaling_capacity"
       },
       "path": [],
-      "query": [],
-      "specLocation": "autoscaling/get_autoscaling_capacity/GetAutoscalingCapacityRequest.ts#L22-L27"
+      "query": [
+        {
+          "description": "Period to wait for a connection to the master node.\nIf no response is received before the timeout expires, the request fails and returns an error.",
+          "name": "master_timeout",
+          "required": false,
+          "serverDefault": "30s",
+          "type": {
+            "kind": "instance_of",
+            "type": {
+              "name": "Duration",
+              "namespace": "_types"
+            }
+          }
+        }
+      ],
+      "specLocation": "autoscaling/get_autoscaling_capacity/GetAutoscalingCapacityRequest.ts#L23-L51"
     },
     {
       "kind": "response",
@@ -87142,7 +89216,7 @@
       "body": {
         "kind": "no_body"
       },
-      "description": "Retrieves an autoscaling policy. Designed for indirect use by ECE/ESS and ECK. Direct use is not supported.",
+      "description": "Get an autoscaling policy.\n\nNOTE: This feature is designed for indirect use by Elasticsearch Service, Elastic Cloud Enterprise, and Elastic Cloud on Kubernetes. Direct use is not supported.",
       "inherits": {
         "type": {
           "name": "RequestBase",
@@ -87167,8 +89241,22 @@
           }
         }
       ],
-      "query": [],
-      "specLocation": "autoscaling/get_autoscaling_policy/GetAutoscalingPolicyRequest.ts#L23-L32"
+      "query": [
+        {
+          "description": "Period to wait for a connection to the master node.\nIf no response is received before the timeout expires, the request fails and returns an error.",
+          "name": "master_timeout",
+          "required": false,
+          "serverDefault": "30s",
+          "type": {
+            "kind": "instance_of",
+            "type": {
+              "name": "Duration",
+              "namespace": "_types"
+            }
+          }
+        }
+      ],
+      "specLocation": "autoscaling/get_autoscaling_policy/GetAutoscalingPolicyRequest.ts#L24-L44"
     },
     {
       "kind": "response",
@@ -87204,7 +89292,7 @@
           }
         }
       },
-      "description": "Creates a new autoscaling policy. Designed for indirect use by ECE/ESS and ECK. Direct use is not supported.",
+      "description": "Create or update an autoscaling policy.\n\nNOTE: This feature is designed for indirect use by Elasticsearch Service, Elastic Cloud Enterprise, and Elastic Cloud on Kubernetes. Direct use is not supported.",
       "inherits": {
         "type": {
           "name": "RequestBase",
@@ -87229,8 +89317,35 @@
           }
         }
       ],
-      "query": [],
-      "specLocation": "autoscaling/put_autoscaling_policy/PutAutoscalingPolicyRequest.ts#L24-L35"
+      "query": [
+        {
+          "description": "Period to wait for a connection to the master node.\nIf no response is received before the timeout expires, the request fails and returns an error.",
+          "name": "master_timeout",
+          "required": false,
+          "serverDefault": "30s",
+          "type": {
+            "kind": "instance_of",
+            "type": {
+              "name": "Duration",
+              "namespace": "_types"
+            }
+          }
+        },
+        {
+          "description": "Period to wait for a response. If no response is received before the timeout expires, the request fails and returns an error.",
+          "name": "timeout",
+          "required": false,
+          "serverDefault": "30s",
+          "type": {
+            "kind": "instance_of",
+            "type": {
+              "name": "Duration",
+              "namespace": "_types"
+            }
+          }
+        }
+      ],
+      "specLocation": "autoscaling/put_autoscaling_policy/PutAutoscalingPolicyRequest.ts#L25-L51"
     },
     {
       "kind": "response",
@@ -89115,11 +91230,23 @@
           "name": "version",
           "required": true,
           "type": {
-            "kind": "instance_of",
-            "type": {
-              "name": "string",
-              "namespace": "_builtins"
-            }
+            "kind": "union_of",
+            "items": [
+              {
+                "kind": "instance_of",
+                "type": {
+                  "name": "string",
+                  "namespace": "_builtins"
+                }
+              },
+              {
+                "kind": "instance_of",
+                "type": {
+                  "name": "null",
+                  "namespace": "_builtins"
+                }
+              }
+            ]
           }
         },
         {
@@ -103795,7 +105922,7 @@
           }
         ]
       },
-      "description": "Provides explanations for shard allocations in the cluster.",
+      "description": "Explain the shard allocations.\nGet explanations for shard allocations in the cluster.\nFor unassigned shards, it provides an explanation for why the shard is unassigned.\nFor assigned shards, it provides an explanation for why the shard is remaining on its current node and has not moved or rebalanced to another node.\nThis API can be very useful when attempting to diagnose why a shard is unassigned or why a shard continues to remain on its current node when you might expect otherwise.",
       "inherits": {
         "type": {
           "name": "RequestBase",
@@ -103835,7 +105962,7 @@
           }
         }
       ],
-      "specLocation": "cluster/allocation_explain/ClusterAllocationExplainRequest.ts#L24-L61"
+      "specLocation": "cluster/allocation_explain/ClusterAllocationExplainRequest.ts#L24-L66"
     },
     {
       "kind": "interface",
@@ -104427,7 +106554,7 @@
           }
         }
       ],
-      "specLocation": "cluster/delete_component_template/ClusterDeleteComponentTemplateRequest.ts#L24-L55"
+      "specLocation": "cluster/delete_component_template/ClusterDeleteComponentTemplateRequest.ts#L24-L56"
     },
     {
       "kind": "response",
@@ -104455,7 +106582,7 @@
       "body": {
         "kind": "no_body"
       },
-      "description": "Clears cluster voting config exclusions.",
+      "description": "Clear cluster voting config exclusions.\nRemove master-eligible nodes from the voting configuration exclusion list.",
       "inherits": {
         "type": {
           "name": "RequestBase",
@@ -104482,7 +106609,7 @@
           }
         }
       ],
-      "specLocation": "cluster/delete_voting_config_exclusions/ClusterDeleteVotingConfigExclusionsRequest.ts#L22-L40"
+      "specLocation": "cluster/delete_voting_config_exclusions/ClusterDeleteVotingConfigExclusionsRequest.ts#L22-L43"
     },
     {
       "kind": "response",
@@ -104556,7 +106683,7 @@
           }
         }
       ],
-      "specLocation": "cluster/exists_component_template/ClusterComponentTemplateExistsRequest.ts#L24-L55"
+      "specLocation": "cluster/exists_component_template/ClusterComponentTemplateExistsRequest.ts#L24-L56"
     },
     {
       "kind": "response",
@@ -104665,7 +106792,7 @@
           }
         }
       ],
-      "specLocation": "cluster/get_component_template/ClusterGetComponentTemplateRequest.ts#L24-L66"
+      "specLocation": "cluster/get_component_template/ClusterGetComponentTemplateRequest.ts#L24-L67"
     },
     {
       "kind": "response",
@@ -104702,7 +106829,7 @@
       "body": {
         "kind": "no_body"
       },
-      "description": "Returns cluster-wide settings.\nBy default, it returns only settings that have been explicitly defined.",
+      "description": "Get cluster-wide settings.\nBy default, it returns only settings that have been explicitly defined.",
       "inherits": {
         "type": {
           "name": "RequestBase",
@@ -105220,7 +107347,7 @@
       "body": {
         "kind": "no_body"
       },
-      "description": "The cluster health API returns a simple status on the health of the cluster. You can also use the API to get the health status of only specified data streams and indices. For data streams, the API retrieves the health status of the stream’s backing indices.\nThe cluster health status is: green, yellow or red. On the shard level, a red status indicates that the specific shard is not allocated in the cluster, yellow means that the primary shard is allocated but replicas are not, and green means that all shards are allocated. The index level status is controlled by the worst shard status. The cluster status is controlled by the worst index status.",
+      "description": "Get the cluster health status.\nYou can also use the API to get the health status of only specified data streams and indices.\nFor data streams, the API retrieves the health status of the stream’s backing indices.\n\nThe cluster health status is: green, yellow or red.\nOn the shard level, a red status indicates that the specific shard is not allocated in the cluster. Yellow means that the primary shard is allocated but replicas are not. Green means that all shards are allocated.\nThe index level status is controlled by the worst shard status.\n\nOne of the main benefits of the API is the ability to wait until the cluster reaches a certain high watermark health level.\nThe cluster status is controlled by the worst index status.",
       "inherits": {
         "type": {
           "name": "RequestBase",
@@ -105398,7 +107525,7 @@
           }
         }
       ],
-      "specLocation": "cluster/health/ClusterHealthRequest.ts#L32-L98"
+      "specLocation": "cluster/health/ClusterHealthRequest.ts#L32-L107"
     },
     {
       "kind": "response",
@@ -105736,7 +107863,7 @@
       "body": {
         "kind": "no_body"
       },
-      "description": "Returns cluster-level changes (such as create index, update mapping, allocate or fail shard) that have not yet been executed.\nNOTE: This API returns a list of any pending updates to the cluster state.\nThese are distinct from the tasks reported by the Task Management API which include periodic tasks and tasks initiated by the user, such as node stats, search queries, or create index requests.\nHowever, if a user-initiated task such as a create index command causes a cluster state update, the activity of this task might be reported by both task api and pending cluster tasks API.",
+      "description": "Get the pending cluster tasks.\nGet information about cluster-level changes (such as create index, update mapping, allocate or fail shard) that have not yet taken effect.\n\nNOTE: This API returns a list of any pending updates to the cluster state.\nThese are distinct from the tasks reported by the task management API which include periodic tasks and tasks initiated by the user, such as node stats, search queries, or create index requests.\nHowever, if a user-initiated task such as a create index command causes a cluster state update, the activity of this task might be reported by both task api and pending cluster tasks API.",
       "inherits": {
         "type": {
           "name": "RequestBase",
@@ -105776,7 +107903,7 @@
           }
         }
       ],
-      "specLocation": "cluster/pending_tasks/ClusterPendingTasksRequest.ts#L23-L48"
+      "specLocation": "cluster/pending_tasks/ClusterPendingTasksRequest.ts#L23-L50"
     },
     {
       "kind": "response",
@@ -105813,7 +107940,7 @@
       "body": {
         "kind": "no_body"
       },
-      "description": "Updates the cluster voting config exclusions by node ids or node names.",
+      "description": "Update voting configuration exclusions.\nUpdate the cluster voting config exclusions by node IDs or node names.\nBy default, if there are more than three master-eligible nodes in the cluster and you remove fewer than half of the master-eligible nodes in the cluster at once, the voting configuration automatically shrinks.\nIf you want to shrink the voting configuration to contain fewer than three nodes or to remove half or more of the master-eligible nodes in the cluster at once, use this API to remove departing nodes from the voting configuration manually.\nThe API adds an entry for each specified node to the cluster’s voting configuration exclusions list.\nIt then waits until the cluster has reconfigured its voting configuration to exclude the specified nodes.\n\nClusters should have no voting configuration exclusions in normal operation.\nOnce the excluded nodes have stopped, clear the voting configuration exclusions with `DELETE /_cluster/voting_config_exclusions`.\nThis API waits for the nodes to be fully removed from the cluster before it returns.\nIf your cluster has voting configuration exclusions for nodes that you no longer intend to remove, use `DELETE /_cluster/voting_config_exclusions?wait_for_removal=false` to clear the voting configuration exclusions without waiting for the nodes to leave the cluster.\n\nA response to `POST /_cluster/voting_config_exclusions` with an HTTP status code of 200 OK guarantees that the node has been removed from the voting configuration and will not be reinstated until the voting configuration exclusions are cleared by calling `DELETE /_cluster/voting_config_exclusions`.\nIf the call to `POST /_cluster/voting_config_exclusions` fails or returns a response with an HTTP status code other than 200 OK then the node may not have been removed from the voting configuration.\nIn that case, you may safely retry the call.\n\nNOTE: Voting exclusions are required only when you remove at least half of the master-eligible nodes from a cluster in a short time period.\nThey are not required when removing master-ineligible nodes or when removing fewer than half of the master-eligible nodes.",
       "inherits": {
         "type": {
           "name": "RequestBase",
@@ -105864,7 +107991,7 @@
           }
         }
       ],
-      "specLocation": "cluster/post_voting_config_exclusions/ClusterPostVotingConfigExclusionsRequest.ts#L24-L50"
+      "specLocation": "cluster/post_voting_config_exclusions/ClusterPostVotingConfigExclusionsRequest.ts#L24-L69"
     },
     {
       "kind": "response",
@@ -105988,7 +108115,7 @@
           }
         }
       ],
-      "specLocation": "cluster/put_component_template/ClusterPutComponentTemplateRequest.ts#L25-L94"
+      "specLocation": "cluster/put_component_template/ClusterPutComponentTemplateRequest.ts#L25-L95"
     },
     {
       "kind": "response",
@@ -106054,7 +108181,7 @@
           }
         ]
       },
-      "description": "Updates the cluster settings.",
+      "description": "Update the cluster settings.\nConfigure and update dynamic settings on a running cluster.\nYou can also configure dynamic settings locally on an unstarted or shut down node in `elasticsearch.yml`.\n\nUpdates made with this API can be persistent, which apply across cluster restarts, or transient, which reset after a cluster restart.\nYou can also reset transient or persistent settings by assigning them a null value.\n\nIf you configure the same setting using multiple methods, Elasticsearch applies the settings in following order of precedence: 1) Transient setting; 2) Persistent setting; 3) `elasticsearch.yml` setting; 4) Default setting value.\nFor example, you can apply a transient setting to override a persistent setting or `elasticsearch.yml` setting.\nHowever, a change to an `elasticsearch.yml` setting will not override a defined transient or persistent setting.\n\nTIP: In Elastic Cloud, use the user settings feature to configure all cluster settings. This method automatically rejects unsafe settings that could break your cluster.\nIf you run Elasticsearch on your own hardware, use this API to configure dynamic cluster settings.\nOnly use `elasticsearch.yml` for static cluster settings and node settings.\nThe API doesn’t require a restart and ensures a setting’s value is the same on all nodes.\n\nWARNING: Transient cluster settings are no longer recommended. Use persistent cluster settings instead.\nIf a cluster becomes unstable, transient settings can clear unexpectedly, resulting in a potentially undesired cluster configuration.",
       "inherits": {
         "type": {
           "name": "RequestBase",
@@ -106106,7 +108233,7 @@
           }
         }
       ],
-      "specLocation": "cluster/put_settings/ClusterPutSettingsRequest.ts#L25-L43"
+      "specLocation": "cluster/put_settings/ClusterPutSettingsRequest.ts#L25-L61"
     },
     {
       "kind": "response",
@@ -106389,7 +108516,7 @@
       "body": {
         "kind": "no_body"
       },
-      "description": "The cluster remote info API allows you to retrieve all of the configured\nremote cluster information. It returns connection and endpoint information\nkeyed by the configured remote cluster alias.",
+      "description": "Get remote cluster information.\nGet all of the configured remote cluster information.\nThis API returns connection and endpoint information keyed by the configured remote cluster alias.",
       "inherits": {
         "type": {
           "name": "RequestBase",
@@ -106738,7 +108865,7 @@
           }
         ]
       },
-      "description": "Allows to manually change the allocation of individual shards in the cluster.",
+      "description": "Reroute the cluster.\nManually change the allocation of individual shards in the cluster.\nFor example, a shard can be moved from one node to another explicitly, an allocation can be canceled, and an unassigned shard can be explicitly allocated to a specific node.\n\nIt is important to note that after processing any reroute commands Elasticsearch will perform rebalancing as normal (respecting the values of settings such as `cluster.routing.rebalance.enable`) in order to remain in a balanced state.\nFor example, if the requested allocation includes moving a shard from node1 to node2 then this may cause a shard to be moved from node2 back to node1 to even things out.\n\nThe cluster can be set to disable allocations using the `cluster.routing.allocation.enable` setting.\nIf allocations are disabled then the only allocations that will be performed are explicit ones given using the reroute command, and consequent allocations due to rebalancing.\n\nThe cluster will attempt to allocate a shard a maximum of `index.allocation.max_retries` times in a row (defaults to `5`), before giving up and leaving the shard unallocated.\nThis scenario can be caused by structural problems such as having an analyzer which refers to a stopwords file which doesn’t exist on all nodes.\n\nOnce the problem has been corrected, allocation can be manually retried by calling the reroute API with the `?retry_failed` URI query parameter, which will attempt a single retry round for these shards.",
       "inherits": {
         "type": {
           "name": "RequestBase",
@@ -106752,7 +108879,7 @@
       "path": [],
       "query": [
         {
-          "description": "If true, then the request simulates the operation only and returns the resulting state.",
+          "description": "If true, then the request simulates the operation.\nIt will calculate the result of applying the commands to the current cluster state and return the resulting cluster state after the commands (and rebalancing) have been applied; it will not actually perform the requested changes.",
           "name": "dry_run",
           "required": false,
           "serverDefault": false,
@@ -106765,7 +108892,7 @@
           }
         },
         {
-          "description": "If true, then the response contains an explanation of why the commands can or cannot be executed.",
+          "description": "If true, then the response contains an explanation of why the commands can or cannot run.",
           "name": "explain",
           "required": false,
           "serverDefault": false,
@@ -106830,7 +108957,7 @@
           }
         }
       ],
-      "specLocation": "cluster/reroute/ClusterRerouteRequest.ts#L25-L70"
+      "specLocation": "cluster/reroute/ClusterRerouteRequest.ts#L25-L85"
     },
     {
       "kind": "interface",
@@ -107051,7 +109178,7 @@
       "body": {
         "kind": "no_body"
       },
-      "description": "Returns a comprehensive information about the state of the cluster.",
+      "description": "Get the cluster state.\nGet comprehensive information about the state of the cluster.\n\nThe cluster state is an internal data structure which keeps track of a variety of information needed by every node, including the identity and attributes of the other nodes in the cluster; cluster-wide settings; index metadata, including the mapping and settings for each index; the location and status of every shard copy in the cluster.\n\nThe elected master node ensures that every node in the cluster has a copy of the same cluster state.\nThis API lets you retrieve a representation of this internal state for debugging or diagnostic purposes.\nYou may need to consult the Elasticsearch source code to determine the precise meaning of the response.\n\nBy default the API will route requests to the elected master node since this node is the authoritative source of cluster states.\nYou can also retrieve the cluster state held on the node handling the API request by adding the `?local=true` query parameter.\n\nElasticsearch may need to expend significant effort to compute a response to this API in larger clusters, and the response may comprise a very large quantity of data.\nIf you use this API repeatedly, your cluster may become unstable.\n\nWARNING: The response is a representation of an internal data structure.\nIts format is not subject to the same compatibility guarantees as other more stable APIs and may change from version to version.\nDo not query this API using external monitoring tools.\nInstead, obtain the information you require using other more stable cluster APIs.",
       "inherits": {
         "type": {
           "name": "RequestBase",
@@ -107191,7 +109318,7 @@
           }
         }
       ],
-      "specLocation": "cluster/state/ClusterStateRequest.ts#L29-L56"
+      "specLocation": "cluster/state/ClusterStateRequest.ts#L29-L75"
     },
     {
       "kind": "response",
@@ -109245,7 +111372,7 @@
       "body": {
         "kind": "no_body"
       },
-      "description": "Returns cluster statistics.\nIt returns basic index metrics (shard numbers, store size, memory usage) and information about the current nodes that form the cluster (number, roles, os, jvm versions, memory usage, cpu and installed plugins).",
+      "description": "Get cluster statistics.\nGet basic index metrics (shard numbers, store size, memory usage) and information about the current nodes that form the cluster (number, roles, os, jvm versions, memory usage, cpu and installed plugins).",
       "inherits": {
         "type": {
           "name": "RequestBase",
@@ -109272,8 +111399,8 @@
       ],
       "query": [
         {
-          "description": "If `true`, returns settings in flat format.",
-          "name": "flat_settings",
+          "description": "Include remote cluster data into the response",
+          "name": "include_remotes",
           "required": false,
           "serverDefault": false,
           "type": {
@@ -110797,18 +112924,7 @@
           "name": "value",
           "required": true,
           "type": {
-            "kind": "dictionary_of",
-            "key": {
-              "kind": "instance_of",
-              "type": {
-                "name": "string",
-                "namespace": "_builtins"
-              }
-            },
-            "singleKey": false,
-            "value": {
-              "kind": "user_defined_value"
-            }
+            "kind": "user_defined_value"
           }
         }
       ],
@@ -111671,7 +113787,7 @@
       "body": {
         "kind": "no_body"
       },
-      "description": "Updates the last_seen field in the connector, and sets it to current timestamp",
+      "description": "Check in a connector.\n\nUpdate the `last_seen` field in the connector and set it to the current timestamp.",
       "inherits": {
         "type": {
           "name": "RequestBase",
@@ -111697,7 +113813,7 @@
         }
       ],
       "query": [],
-      "specLocation": "connector/check_in/ConnectorCheckInRequest.ts#L22-L36"
+      "specLocation": "connector/check_in/ConnectorCheckInRequest.ts#L22-L38"
     },
     {
       "kind": "response",
@@ -111731,7 +113847,7 @@
       "body": {
         "kind": "no_body"
       },
-      "description": "Deletes a connector.",
+      "description": "Delete a connector.\n\nRemoves a connector and associated sync jobs.\nThis is a destructive action that is not recoverable.\nNOTE: This action doesn’t delete any API keys, ingest pipelines, or data indices associated with the connector.\nThese need to be removed manually.",
       "inherits": {
         "type": {
           "name": "RequestBase",
@@ -111770,7 +113886,7 @@
           }
         }
       ],
-      "specLocation": "connector/delete/ConnectorDeleteRequest.ts#L22-L42"
+      "specLocation": "connector/delete/ConnectorDeleteRequest.ts#L22-L47"
     },
     {
       "kind": "response",
@@ -111798,7 +113914,7 @@
       "body": {
         "kind": "no_body"
       },
-      "description": "Retrieves a connector.",
+      "description": "Get a connector.\n\nGet the details about a connector.",
       "inherits": {
         "type": {
           "name": "RequestBase",
@@ -111824,7 +113940,7 @@
         }
       ],
       "query": [],
-      "specLocation": "connector/get/ConnectorGetRequest.ts#L22-L36"
+      "specLocation": "connector/get/ConnectorGetRequest.ts#L22-L38"
     },
     {
       "kind": "response",
@@ -111982,7 +114098,7 @@
           }
         ]
       },
-      "description": "Updates last sync stats in the connector document",
+      "description": "Update the connector last sync stats.\n\nUpdate the fields related to the last sync of a connector.\nThis action is used for analytics and monitoring.",
       "inherits": {
         "type": {
           "name": "RequestBase",
@@ -112008,7 +114124,7 @@
         }
       ],
       "query": [],
-      "specLocation": "connector/last_sync/ConnectorUpdateLastSyncRequest.ts#L26-L57"
+      "specLocation": "connector/last_sync/ConnectorUpdateLastSyncRequest.ts#L26-L60"
     },
     {
       "kind": "response",
@@ -112042,7 +114158,7 @@
       "body": {
         "kind": "no_body"
       },
-      "description": "Returns existing connectors.",
+      "description": "Get all connectors.\n\nGet information about all connectors.",
       "inherits": {
         "type": {
           "name": "RequestBase",
@@ -112128,7 +114244,7 @@
           }
         }
       ],
-      "specLocation": "connector/list/ConnectorListRequest.ts#L23-L57"
+      "specLocation": "connector/list/ConnectorListRequest.ts#L23-L59"
     },
     {
       "kind": "response",
@@ -112244,7 +114360,7 @@
           }
         ]
       },
-      "description": "Creates a connector.",
+      "description": "Create a connector.\n\nConnectors are Elasticsearch integrations that bring content from third-party data sources, which can be deployed on Elastic Cloud or hosted on your own infrastructure.\nElastic managed connectors (Native connectors) are a managed service on Elastic Cloud.\nSelf-managed connectors (Connector clients) are self-managed on your infrastructure.",
       "inherits": {
         "type": {
           "name": "RequestBase",
@@ -112257,7 +114373,7 @@
       },
       "path": [],
       "query": [],
-      "specLocation": "connector/post/ConnectorPostRequest.ts#L22-L42"
+      "specLocation": "connector/post/ConnectorPostRequest.ts#L22-L46"
     },
     {
       "kind": "response",
@@ -112370,7 +114486,7 @@
           }
         ]
       },
-      "description": "Creates or updates a connector.",
+      "description": "Create or update a connector.",
       "inherits": {
         "type": {
           "name": "RequestBase",
@@ -112441,7 +114557,7 @@
       "body": {
         "kind": "no_body"
       },
-      "description": "Cancels a connector sync job.",
+      "description": "Cancel a connector sync job.\n\nCancel a connector sync job, which sets the status to cancelling and updates `cancellation_requested_at` to the current time.\nThe connector service is then responsible for setting the status of connector sync jobs to cancelled.",
       "inherits": {
         "type": {
           "name": "RequestBase",
@@ -112467,7 +114583,7 @@
         }
       ],
       "query": [],
-      "specLocation": "connector/sync_job_cancel/SyncJobCancelRequest.ts#L22-L36"
+      "specLocation": "connector/sync_job_cancel/SyncJobCancelRequest.ts#L22-L39"
     },
     {
       "kind": "response",
@@ -112501,7 +114617,7 @@
       "body": {
         "kind": "no_body"
       },
-      "description": "Deletes a connector sync job.",
+      "description": "Delete a connector sync job.\n\nRemove a connector sync job and its associated data.\nThis is a destructive action that is not recoverable.",
       "inherits": {
         "type": {
           "name": "RequestBase",
@@ -112527,7 +114643,7 @@
         }
       ],
       "query": [],
-      "specLocation": "connector/sync_job_delete/SyncJobDeleteRequest.ts#L22-L36"
+      "specLocation": "connector/sync_job_delete/SyncJobDeleteRequest.ts#L22-L39"
     },
     {
       "kind": "response",
@@ -112555,7 +114671,7 @@
       "body": {
         "kind": "no_body"
       },
-      "description": "Retrieves a connector sync job.",
+      "description": "Get a connector sync job.",
       "inherits": {
         "type": {
           "name": "RequestBase",
@@ -112609,7 +114725,7 @@
       "body": {
         "kind": "no_body"
       },
-      "description": "Lists connector sync jobs.",
+      "description": "Get all connector sync jobs.\n\nGet information about all stored connector sync jobs listed by their creation date in ascending order.",
       "inherits": {
         "type": {
           "name": "RequestBase",
@@ -112698,7 +114814,7 @@
           }
         }
       ],
-      "specLocation": "connector/sync_job_list/SyncJobListRequest.ts#L25-L55"
+      "specLocation": "connector/sync_job_list/SyncJobListRequest.ts#L25-L57"
     },
     {
       "kind": "response",
@@ -112782,7 +114898,7 @@
           }
         ]
       },
-      "description": "Creates a connector sync job.",
+      "description": "Create a connector sync job.\n\nCreate a connector sync job document in the internal index and initialize its counters and timestamps with default values.",
       "inherits": {
         "type": {
           "name": "RequestBase",
@@ -112795,7 +114911,7 @@
       },
       "path": [],
       "query": [],
-      "specLocation": "connector/sync_job_post/SyncJobPostRequest.ts#L23-L43"
+      "specLocation": "connector/sync_job_post/SyncJobPostRequest.ts#L23-L45"
     },
     {
       "kind": "response",
@@ -112829,7 +114945,7 @@
       "body": {
         "kind": "no_body"
       },
-      "description": "Activates the valid draft filtering for a connector.",
+      "description": "Activate the connector draft filter.\n\nActivates the valid draft filtering for a connector.",
       "inherits": {
         "type": {
           "name": "RequestBase",
@@ -112855,7 +114971,7 @@
         }
       ],
       "query": [],
-      "specLocation": "connector/update_active_filtering/ConnectorUpdateActiveFilteringRequest.ts#L22-L36"
+      "specLocation": "connector/update_active_filtering/ConnectorUpdateActiveFilteringRequest.ts#L22-L38"
     },
     {
       "kind": "response",
@@ -112913,7 +115029,7 @@
           }
         ]
       },
-      "description": "Updates the API key id in the connector document",
+      "description": "Update the connector API key ID.\n\nUpdate the `api_key_id` and `api_key_secret_id` fields of a connector.\nYou can specify the ID of the API key used for authorization and the ID of the connector secret where the API key is stored.\nThe connector secret ID is required only for Elastic managed (native) connectors.\nSelf-managed connectors (connector clients) do not use this field.",
       "inherits": {
         "type": {
           "name": "RequestBase",
@@ -112939,7 +115055,7 @@
         }
       ],
       "query": [],
-      "specLocation": "connector/update_api_key_id/ConnectorUpdateAPIKeyIDRequest.ts#L21-L42"
+      "specLocation": "connector/update_api_key_id/ConnectorUpdateAPIKeyIDRequest.ts#L21-L47"
     },
     {
       "kind": "response",
@@ -113004,7 +115120,7 @@
           }
         ]
       },
-      "description": "Updates the configuration field in the connector document",
+      "description": "Update the connector configuration.\n\nUpdate the configuration field in the connector document.",
       "inherits": {
         "type": {
           "name": "RequestBase",
@@ -113030,7 +115146,7 @@
         }
       ],
       "query": [],
-      "specLocation": "connector/update_configuration/ConnectorUpdateConfigurationRequest.ts#L25-L47"
+      "specLocation": "connector/update_configuration/ConnectorUpdateConfigurationRequest.ts#L25-L49"
     },
     {
       "kind": "response",
@@ -113086,7 +115202,7 @@
           }
         ]
       },
-      "description": "Updates the filtering field in the connector document",
+      "description": "Update the connector error field.\n\nSet the error field for the connector.\nIf the error provided in the request body is non-null, the connector’s status is updated to error.\nOtherwise, if the error is reset to null, the connector status is updated to connected.",
       "inherits": {
         "type": {
           "name": "RequestBase",
@@ -113112,7 +115228,7 @@
         }
       ],
       "query": [],
-      "specLocation": "connector/update_error/ConnectorUpdateErrorRequest.ts#L23-L44"
+      "specLocation": "connector/update_error/ConnectorUpdateErrorRequest.ts#L23-L48"
     },
     {
       "kind": "response",
@@ -113187,7 +115303,7 @@
           }
         ]
       },
-      "description": "Updates the filtering field in the connector document",
+      "description": "Update the connector filtering.\n\nUpdate the draft filtering configuration of a connector and marks the draft validation state as edited.\nThe filtering draft is activated once validated by the running Elastic connector service.\nThe filtering property is used to configure sync rules (both basic and advanced) for a connector.",
       "inherits": {
         "type": {
           "name": "RequestBase",
@@ -113213,7 +115329,7 @@
         }
       ],
       "query": [],
-      "specLocation": "connector/update_filtering/ConnectorUpdateFilteringRequest.ts#L27-L50"
+      "specLocation": "connector/update_filtering/ConnectorUpdateFilteringRequest.ts#L27-L54"
     },
     {
       "kind": "response",
@@ -113260,7 +115376,7 @@
           }
         ]
       },
-      "description": "Updates the draft filtering validation info for a connector.",
+      "description": "Update the connector draft filtering validation.\n\nUpdate the draft filtering validation info for a connector.",
       "inherits": {
         "type": {
           "name": "RequestBase",
@@ -113286,7 +115402,7 @@
         }
       ],
       "query": [],
-      "specLocation": "connector/update_filtering_validation/ConnectorUpdateFilteringValidationRequest.ts#L23-L40"
+      "specLocation": "connector/update_filtering_validation/ConnectorUpdateFilteringValidationRequest.ts#L23-L42"
     },
     {
       "kind": "response",
@@ -113342,7 +115458,7 @@
           }
         ]
       },
-      "description": "Updates the index_name in the connector document",
+      "description": "Update the connector index name.\n\nUpdate the `index_name` field of a connector, specifying the index where the data ingested by the connector is stored.",
       "inherits": {
         "type": {
           "name": "RequestBase",
@@ -113368,7 +115484,7 @@
         }
       ],
       "query": [],
-      "specLocation": "connector/update_index_name/ConnectorUpdateIndexNameRequest.ts#L23-L43"
+      "specLocation": "connector/update_index_name/ConnectorUpdateIndexNameRequest.ts#L23-L45"
     },
     {
       "kind": "response",
@@ -113426,7 +115542,7 @@
           }
         ]
       },
-      "description": "Updates the name and description fields in the connector document",
+      "description": "Update the connector name and description.",
       "inherits": {
         "type": {
           "name": "RequestBase",
@@ -113499,7 +115615,7 @@
           }
         ]
       },
-      "description": "Updates the is_native flag in the connector document",
+      "description": "Update the connector is_native flag.",
       "inherits": {
         "type": {
           "name": "RequestBase",
@@ -113572,7 +115688,7 @@
           }
         ]
       },
-      "description": "Updates the pipeline field in the connector document",
+      "description": "Update the connector pipeline.\n\nWhen you create a new connector, the configuration of an ingest pipeline is populated with default settings.",
       "inherits": {
         "type": {
           "name": "RequestBase",
@@ -113598,7 +115714,7 @@
         }
       ],
       "query": [],
-      "specLocation": "connector/update_pipeline/ConnectorUpdatePipelineRequest.ts#L23-L44"
+      "specLocation": "connector/update_pipeline/ConnectorUpdatePipelineRequest.ts#L23-L46"
     },
     {
       "kind": "response",
@@ -113645,7 +115761,7 @@
           }
         ]
       },
-      "description": "Updates the scheduling field in the connector document",
+      "description": "Update the connector scheduling.",
       "inherits": {
         "type": {
           "name": "RequestBase",
@@ -113718,7 +115834,7 @@
           }
         ]
       },
-      "description": "Updates the service type of the connector",
+      "description": "Update the connector service type.",
       "inherits": {
         "type": {
           "name": "RequestBase",
@@ -113791,7 +115907,7 @@
           }
         ]
       },
-      "description": "Updates the status of the connector",
+      "description": "Update the connector status.",
       "inherits": {
         "type": {
           "name": "RequestBase",
@@ -113851,7 +115967,7 @@
       "body": {
         "kind": "no_body"
       },
-      "description": "Deletes the specified dangling index",
+      "description": "Delete a dangling index.\n\nIf Elasticsearch encounters index data that is absent from the current cluster state, those indices are considered to be dangling.\nFor example, this can happen if you delete more than `cluster.indices.tombstones.size` indices while an Elasticsearch node is offline.",
       "inherits": {
         "type": {
           "name": "RequestBase",
@@ -113864,7 +115980,7 @@
       },
       "path": [
         {
-          "description": "The UUID of the dangling index",
+          "description": "The UUID of the index to delete. Use the get dangling indices API to find the UUID.",
           "name": "index_uuid",
           "required": true,
           "type": {
@@ -113878,7 +115994,7 @@
       ],
       "query": [
         {
-          "description": "Must be set to true in order to delete the dangling index",
+          "description": "This parameter must be set to true to acknowledge that it will no longer be possible to recove data from the dangling index.",
           "name": "accept_data_loss",
           "required": true,
           "type": {
@@ -113914,7 +116030,7 @@
           }
         }
       ],
-      "specLocation": "dangling_indices/delete_dangling_index/DeleteDanglingIndexRequest.ts#L24-L37"
+      "specLocation": "dangling_indices/delete_dangling_index/DeleteDanglingIndexRequest.ts#L24-L48"
     },
     {
       "kind": "response",
@@ -113942,7 +116058,7 @@
       "body": {
         "kind": "no_body"
       },
-      "description": "Imports the specified dangling index",
+      "description": "Import a dangling index.\n\nIf Elasticsearch encounters index data that is absent from the current cluster state, those indices are considered to be dangling.\nFor example, this can happen if you delete more than `cluster.indices.tombstones.size` indices while an Elasticsearch node is offline.",
       "inherits": {
         "type": {
           "name": "RequestBase",
@@ -113955,7 +116071,7 @@
       },
       "path": [
         {
-          "description": "The UUID of the dangling index",
+          "description": "The UUID of the index to import. Use the get dangling indices API to locate the UUID.",
           "name": "index_uuid",
           "required": true,
           "type": {
@@ -113969,7 +116085,7 @@
       ],
       "query": [
         {
-          "description": "Must be set to true in order to import the dangling index",
+          "description": "This parameter must be set to true to import a dangling index.\nBecause Elasticsearch cannot know where the dangling index data came from or determine which shard copies are fresh and which are stale, it cannot guarantee that the imported data represents the latest state of the index when it was last in the cluster.",
           "name": "accept_data_loss",
           "required": true,
           "type": {
@@ -114005,7 +116121,7 @@
           }
         }
       ],
-      "specLocation": "dangling_indices/import_dangling_index/ImportDanglingIndexRequest.ts#L24-L37"
+      "specLocation": "dangling_indices/import_dangling_index/ImportDanglingIndexRequest.ts#L24-L49"
     },
     {
       "kind": "response",
@@ -114096,7 +116212,7 @@
       "body": {
         "kind": "no_body"
       },
-      "description": "Returns all dangling indices.",
+      "description": "Get the dangling indices.\n\nIf Elasticsearch encounters index data that is absent from the current cluster state, those indices are considered to be dangling.\nFor example, this can happen if you delete more than `cluster.indices.tombstones.size` indices while an Elasticsearch node is offline.\n\nUse this API to list dangling indices, which you can then import or delete.",
       "inherits": {
         "type": {
           "name": "RequestBase",
@@ -114109,7 +116225,7 @@
       },
       "path": [],
       "query": [],
-      "specLocation": "dangling_indices/list_dangling_indices/ListDanglingIndicesRequest.ts#L22-L26"
+      "specLocation": "dangling_indices/list_dangling_indices/ListDanglingIndicesRequest.ts#L22-L33"
     },
     {
       "kind": "response",
@@ -114333,13 +116449,16 @@
         },
         {
           "name": "FAILED"
+        },
+        {
+          "name": "CANCELLED"
         }
       ],
       "name": {
         "name": "EnrichPolicyPhase",
         "namespace": "enrich.execute_policy"
       },
-      "specLocation": "enrich/execute_policy/types.ts#L24-L29"
+      "specLocation": "enrich/execute_policy/types.ts#L25-L31"
     },
     {
       "kind": "interface",
@@ -114358,9 +116477,20 @@
               "namespace": "enrich.execute_policy"
             }
           }
+        },
+        {
+          "name": "step",
+          "required": false,
+          "type": {
+            "kind": "instance_of",
+            "type": {
+              "name": "string",
+              "namespace": "_builtins"
+            }
+          }
         }
       ],
-      "specLocation": "enrich/execute_policy/types.ts#L20-L22"
+      "specLocation": "enrich/execute_policy/types.ts#L20-L23"
     },
     {
       "kind": "request",
@@ -114370,7 +116500,7 @@
       "body": {
         "kind": "no_body"
       },
-      "description": "Creates the enrich index for an existing enrich policy.",
+      "description": "Run an enrich policy.\nCreate the enrich index for an existing enrich policy.",
       "inherits": {
         "type": {
           "name": "RequestBase",
@@ -114410,7 +116540,7 @@
           }
         }
       ],
-      "specLocation": "enrich/execute_policy/ExecuteEnrichPolicyRequest.ts#L23-L44"
+      "specLocation": "enrich/execute_policy/ExecuteEnrichPolicyRequest.ts#L23-L45"
     },
     {
       "kind": "response",
@@ -114429,7 +116559,7 @@
             }
           },
           {
-            "name": "task_id",
+            "name": "task",
             "required": false,
             "type": {
               "kind": "instance_of",
@@ -115234,7 +117364,7 @@
       "body": {
         "kind": "no_body"
       },
-      "description": "Deletes an async EQL search or a stored synchronous EQL search.\nThe API also deletes results for the search.",
+      "description": "Delete an async EQL search.\nDelete an async EQL search or a stored synchronous EQL search.\nThe API also deletes results for the search.",
       "inherits": {
         "type": {
           "name": "RequestBase",
@@ -115260,7 +117390,7 @@
         }
       ],
       "query": [],
-      "specLocation": "eql/delete/EqlDeleteRequest.ts#L23-L39"
+      "specLocation": "eql/delete/EqlDeleteRequest.ts#L23-L40"
     },
     {
       "kind": "response",
@@ -115288,7 +117418,7 @@
       "body": {
         "kind": "no_body"
       },
-      "description": "Returns the current status and available results for an async EQL search or a stored synchronous EQL search.",
+      "description": "Get async EQL search results.\nGet the current status and available results for an async EQL search or a stored synchronous EQL search.",
       "inherits": {
         "type": {
           "name": "RequestBase",
@@ -115339,7 +117469,7 @@
           }
         }
       ],
-      "specLocation": "eql/get/EqlGetRequest.ts#L24-L50"
+      "specLocation": "eql/get/EqlGetRequest.ts#L24-L51"
     },
     {
       "kind": "response",
@@ -115382,7 +117512,7 @@
       "body": {
         "kind": "no_body"
       },
-      "description": "Returns the current status for an async EQL search or a stored synchronous EQL search without returning results.",
+      "description": "Get the async EQL status.\nGet the current status for an async EQL search or a stored synchronous EQL search without returning results.",
       "inherits": {
         "type": {
           "name": "RequestBase",
@@ -115408,7 +117538,7 @@
         }
       ],
       "query": [],
-      "specLocation": "eql/get_status/EqlGetStatusRequest.ts#L23-L35"
+      "specLocation": "eql/get_status/EqlGetStatusRequest.ts#L23-L36"
     },
     {
       "kind": "response",
@@ -115730,7 +117860,7 @@
           }
         ]
       },
-      "description": "Returns results matching a query expressed in Event Query Language (EQL)",
+      "description": "Get EQL search results.\nReturns search results for an Event Query Language (EQL) query.\nEQL assumes each document in a data stream or index corresponds to an event.",
       "inherits": {
         "type": {
           "name": "RequestBase",
@@ -115832,7 +117962,7 @@
           }
         }
       ],
-      "specLocation": "eql/search/EqlSearchRequest.ts#L28-L118"
+      "specLocation": "eql/search/EqlSearchRequest.ts#L28-L122"
     },
     {
       "kind": "response",
@@ -116106,7 +118236,7 @@
         "name": "EsqlFormat",
         "namespace": "esql.query"
       },
-      "specLocation": "esql/query/QueryRequest.ts#L91-L100"
+      "specLocation": "esql/query/QueryRequest.ts#L93-L102"
     },
     {
       "kind": "request",
@@ -116228,7 +118358,7 @@
           }
         ]
       },
-      "description": "Executes an ES|QL request",
+      "description": "Run an ES|QL query.\nGet search results for an ES|QL (Elasticsearch query language) query.",
       "inherits": {
         "type": {
           "name": "RequestBase",
@@ -116279,7 +118409,7 @@
           }
         }
       ],
-      "specLocation": "esql/query/QueryRequest.ts#L26-L89"
+      "specLocation": "esql/query/QueryRequest.ts#L26-L91"
     },
     {
       "kind": "response",
@@ -118515,7 +120645,7 @@
           }
         ]
       },
-      "description": "Extracts and summarizes information about the documents and terms in an Elasticsearch data stream or index.",
+      "description": "Explore graph analytics.\nExtract and summarize information about the documents and terms in an Elasticsearch data stream or index.\nThe easiest way to understand the behavior of this API is to use the Graph UI to explore connections.\nAn initial request to the `_explore` API contains a seed query that identifies the documents of interest and specifies the fields that define the vertices and connections you want to include in the graph.\nSubsequent requests enable you to spider out from one more vertices of interest.\nYou can exclude vertices that have already been returned.",
       "inherits": {
         "type": {
           "name": "RequestBase",
@@ -118566,7 +120696,7 @@
           }
         }
       ],
-      "specLocation": "graph/explore/GraphExploreRequest.ts#L28-L72"
+      "specLocation": "graph/explore/GraphExploreRequest.ts#L28-L78"
     },
     {
       "kind": "response",
@@ -119406,7 +121536,7 @@
       "body": {
         "kind": "no_body"
       },
-      "description": "Deletes the specified lifecycle policy definition. You cannot delete policies that are currently in use. If the policy is being used to manage any indices, the request fails and returns an error.",
+      "description": "Delete a lifecycle policy.\nYou cannot delete policies that are currently in use. If the policy is being used to manage any indices, the request fails and returns an error.",
       "inherits": {
         "type": {
           "name": "RequestBase",
@@ -119912,7 +122042,7 @@
       "body": {
         "kind": "no_body"
       },
-      "description": "Retrieves information about the index’s current lifecycle state, such as the currently executing phase, action, and step. Shows when the index entered each one, the definition of the running phase, and information about any failures.",
+      "description": "Explain the lifecycle state.\nGet the current lifecycle status for one or more indices.\nFor data streams, the API retrieves the current lifecycle status for the stream's backing indices.\n\nThe response indicates when the index entered each lifecycle state, provides the definition of the running phase, and information about any failures.",
       "inherits": {
         "type": {
           "name": "RequestBase",
@@ -119989,7 +122119,7 @@
           }
         }
       ],
-      "specLocation": "ilm/explain_lifecycle/ExplainLifecycleRequest.ts#L24-L58"
+      "specLocation": "ilm/explain_lifecycle/ExplainLifecycleRequest.ts#L24-L62"
     },
     {
       "kind": "response",
@@ -120077,7 +122207,7 @@
       "body": {
         "kind": "no_body"
       },
-      "description": "Retrieves a lifecycle policy.",
+      "description": "Get lifecycle policies.",
       "inherits": {
         "type": {
           "name": "RequestBase",
@@ -120170,7 +122300,7 @@
       "body": {
         "kind": "no_body"
       },
-      "description": "Retrieves the current index lifecycle management (ILM) status.",
+      "description": "Get the ILM status.\nGet the current index lifecycle management status.",
       "inherits": {
         "type": {
           "name": "RequestBase",
@@ -120183,7 +122313,7 @@
       },
       "path": [],
       "query": [],
-      "specLocation": "ilm/get_status/GetIlmStatusRequest.ts#L22-L26"
+      "specLocation": "ilm/get_status/GetIlmStatusRequest.ts#L22-L29"
     },
     {
       "kind": "response",
@@ -120241,7 +122371,7 @@
           }
         ]
       },
-      "description": "Switches the indices, ILM policies, and legacy, composable and component templates from using custom node attributes and\nattribute-based allocation filters to using data tiers, and optionally deletes one legacy index template.+\nUsing node roles enables ILM to automatically move the indices between data tiers.",
+      "description": "Migrate to data tiers routing.\nSwitch the indices, ILM policies, and legacy, composable, and component templates from using custom node attributes and attribute-based allocation filters to using data tiers.\nOptionally, delete one legacy index template.\nUsing node roles enables ILM to automatically move the indices between data tiers.\n\nMigrating away from custom node attributes routing can be manually performed.\nThis API provides an automated way of performing three out of the four manual steps listed in the migration guide:\n\n1. Stop setting the custom hot attribute on new indices.\n1. Remove custom allocation settings from existing ILM policies.\n1. Replace custom allocation settings from existing indices with the corresponding tier preference.\n\nILM must be stopped before performing the migration.\nUse the stop ILM and get ILM status APIs to wait until the reported operation mode is `STOPPED`.",
       "inherits": {
         "type": {
           "name": "RequestBase",
@@ -120268,7 +122398,7 @@
           }
         }
       ],
-      "specLocation": "ilm/migrate_to_data_tiers/Request.ts#L22-L43"
+      "specLocation": "ilm/migrate_to_data_tiers/Request.ts#L22-L54"
     },
     {
       "kind": "response",
@@ -120382,7 +122512,7 @@
         "properties": [
           {
             "name": "current_step",
-            "required": false,
+            "required": true,
             "type": {
               "kind": "instance_of",
               "type": {
@@ -120393,7 +122523,7 @@
           },
           {
             "name": "next_step",
-            "required": false,
+            "required": true,
             "type": {
               "kind": "instance_of",
               "type": {
@@ -120404,7 +122534,7 @@
           }
         ]
       },
-      "description": "Manually moves an index into the specified step and executes that step.",
+      "description": "Move to a lifecycle step.\nManually move an index into a specific step in the lifecycle policy and run that step.\n\nWARNING: This operation can result in the loss of data. Manually moving an index into a specific step runs that step even if it has already been performed. This is a potentially destructive action and this should be considered an expert level API.\n\nYou must specify both the current step and the step to be executed in the body of the request.\nThe request will fail if the current step does not match the step currently running for the index\nThis is to prevent the index from being moved from an unexpected step into the next step.\n\nWhen specifying the target (`next_step`) to which the index will be moved, either the name or both the action and name fields are optional.\nIf only the phase is specified, the index will move to the first step of the first action in the target phase.\nIf the phase and action are specified, the index will move to the first step of the specified action in the specified phase.\nOnly actions specified in the ILM policy are considered valid.\nAn index cannot move to a step that is not part of its policy.",
       "inherits": {
         "type": {
           "name": "RequestBase",
@@ -120430,7 +122560,7 @@
         }
       ],
       "query": [],
-      "specLocation": "ilm/move_to_step/MoveToStepRequest.ts#L24-L36"
+      "specLocation": "ilm/move_to_step/MoveToStepRequest.ts#L24-L51"
     },
     {
       "kind": "response",
@@ -120459,7 +122589,7 @@
       "properties": [
         {
           "name": "action",
-          "required": true,
+          "required": false,
           "type": {
             "kind": "instance_of",
             "type": {
@@ -120470,7 +122600,7 @@
         },
         {
           "name": "name",
-          "required": true,
+          "required": false,
           "type": {
             "kind": "instance_of",
             "type": {
@@ -120491,7 +122621,7 @@
           }
         }
       ],
-      "specLocation": "ilm/move_to_step/types.ts#L20-L24"
+      "specLocation": "ilm/move_to_step/types.ts#L20-L25"
     },
     {
       "kind": "request",
@@ -120514,7 +122644,7 @@
           }
         ]
       },
-      "description": "Creates a lifecycle policy. If the specified policy exists, the policy is replaced and the policy version is incremented.",
+      "description": "Create or update a lifecycle policy.\nIf the specified policy exists, it is replaced and the policy version is incremented.\n\nNOTE: Only the latest version of the policy is stored, you cannot revert to previous versions.",
       "inherits": {
         "type": {
           "name": "RequestBase",
@@ -120568,7 +122698,7 @@
           }
         }
       ],
-      "specLocation": "ilm/put_lifecycle/PutLifecycleRequest.ts#L25-L55"
+      "specLocation": "ilm/put_lifecycle/PutLifecycleRequest.ts#L25-L59"
     },
     {
       "kind": "response",
@@ -120596,7 +122726,7 @@
       "body": {
         "kind": "no_body"
       },
-      "description": "Removes the assigned lifecycle policy and stops managing the specified index",
+      "description": "Remove policies from an index.\nRemove the assigned lifecycle policies from an index or a data stream's backing indices.\nIt also stops managing the indices.",
       "inherits": {
         "type": {
           "name": "RequestBase",
@@ -120622,7 +122752,7 @@
         }
       ],
       "query": [],
-      "specLocation": "ilm/remove_policy/RemovePolicyRequest.ts#L23-L31"
+      "specLocation": "ilm/remove_policy/RemovePolicyRequest.ts#L23-L35"
     },
     {
       "kind": "response",
@@ -120670,7 +122800,7 @@
       "body": {
         "kind": "no_body"
       },
-      "description": "Retries executing the policy for an index that is in the ERROR step.",
+      "description": "Retry a policy.\nRetry running the lifecycle policy for an index that is in the ERROR step.\nThe API sets the policy back to the step where the error occurred and runs the step.\nUse the explain lifecycle state API to determine whether an index is in the ERROR step.",
       "inherits": {
         "type": {
           "name": "RequestBase",
@@ -120696,7 +122826,7 @@
         }
       ],
       "query": [],
-      "specLocation": "ilm/retry/RetryIlmRequest.ts#L23-L31"
+      "specLocation": "ilm/retry/RetryIlmRequest.ts#L23-L36"
     },
     {
       "kind": "response",
@@ -120724,7 +122854,7 @@
       "body": {
         "kind": "no_body"
       },
-      "description": "Start the index lifecycle management (ILM) plugin.",
+      "description": "Start the ILM plugin.\nStart the index lifecycle management plugin if it is currently stopped.\nILM is started automatically when the cluster is formed.\nRestarting ILM is necessary only when it has been stopped using the stop ILM API.",
       "inherits": {
         "type": {
           "name": "RequestBase",
@@ -120738,6 +122868,7 @@
       "path": [],
       "query": [
         {
+          "description": "Explicit operation timeout for connection to master node",
           "name": "master_timeout",
           "required": false,
           "type": {
@@ -120749,6 +122880,7 @@
           }
         },
         {
+          "description": "Explicit operation timeout",
           "name": "timeout",
           "required": false,
           "type": {
@@ -120760,7 +122892,7 @@
           }
         }
       ],
-      "specLocation": "ilm/start/StartIlmRequest.ts#L23-L32"
+      "specLocation": "ilm/start/StartIlmRequest.ts#L23-L37"
     },
     {
       "kind": "response",
@@ -120788,7 +122920,7 @@
       "body": {
         "kind": "no_body"
       },
-      "description": "Halts all lifecycle management operations and stops the index lifecycle management (ILM) plugin",
+      "description": "Stop the ILM plugin.\nHalt all lifecycle management operations and stop the index lifecycle management plugin.\nThis is useful when you are performing maintenance on the cluster and need to prevent ILM from performing any actions on your indices.\n\nThe API returns as soon as the stop request has been acknowledged, but the plugin might continue to run until in-progress operations complete and the plugin can be safely stopped.\nUse the get ILM status API to check whether ILM is running.",
       "inherits": {
         "type": {
           "name": "RequestBase",
@@ -120802,6 +122934,7 @@
       "path": [],
       "query": [
         {
+          "description": "Explicit operation timeout for connection to master node",
           "name": "master_timeout",
           "required": false,
           "type": {
@@ -120813,6 +122946,7 @@
           }
         },
         {
+          "description": "Explicit operation timeout",
           "name": "timeout",
           "required": false,
           "type": {
@@ -120824,7 +122958,7 @@
           }
         }
       ],
-      "specLocation": "ilm/stop/StopIlmRequest.ts#L23-L32"
+      "specLocation": "ilm/stop/StopIlmRequest.ts#L23-L39"
     },
     {
       "kind": "response",
@@ -121607,9 +123741,20 @@
               "namespace": "_builtins"
             }
           }
+        },
+        {
+          "name": "allow_custom_routing",
+          "required": false,
+          "type": {
+            "kind": "instance_of",
+            "type": {
+              "name": "boolean",
+              "namespace": "_builtins"
+            }
+          }
         }
       ],
-      "specLocation": "indices/_types/DataStream.ts#L159-L161"
+      "specLocation": "indices/_types/DataStream.ts#L159-L162"
     },
     {
       "kind": "interface",
@@ -123499,9 +125644,45 @@
               "namespace": "indices._types"
             }
           }
+        },
+        {
+          "availability": {
+            "serverless": {},
+            "stack": {
+              "since": "8.12.0"
+            }
+          },
+          "description": "Marks this index template as deprecated.\nWhen creating or updating a non-deprecated index template that uses deprecated components,\nElasticsearch will emit a deprecation warning.",
+          "name": "deprecated",
+          "required": false,
+          "type": {
+            "kind": "instance_of",
+            "type": {
+              "name": "boolean",
+              "namespace": "_builtins"
+            }
+          }
+        },
+        {
+          "availability": {
+            "serverless": {},
+            "stack": {
+              "since": "8.7.0"
+            }
+          },
+          "description": "A list of component template names that are allowed to be absent.",
+          "name": "ignore_missing_component_templates",
+          "required": false,
+          "type": {
+            "kind": "instance_of",
+            "type": {
+              "name": "Names",
+              "namespace": "_types"
+            }
+          }
         }
       ],
-      "specLocation": "indices/_types/IndexTemplate.ts#L28-L67"
+      "specLocation": "indices/_types/IndexTemplate.ts#L28-L81"
     },
     {
       "kind": "interface",
@@ -123537,7 +125718,7 @@
           }
         }
       ],
-      "specLocation": "indices/_types/IndexTemplate.ts#L69-L80"
+      "specLocation": "indices/_types/IndexTemplate.ts#L83-L94"
     },
     {
       "kind": "interface",
@@ -123614,7 +125795,7 @@
           }
         }
       ],
-      "specLocation": "indices/_types/IndexTemplate.ts#L82-L104"
+      "specLocation": "indices/_types/IndexTemplate.ts#L96-L118"
     },
     {
       "kind": "interface",
@@ -125916,7 +128097,7 @@
           }
         ]
       },
-      "description": "Performs analysis on a text string and returns the resulting tokens.",
+      "description": "Get tokens from text analysis.\nThe analyze API performs [analysis](https://www.elastic.co/guide/en/elasticsearch/reference/current/analysis.html) on a text string and returns the resulting tokens.",
       "inherits": {
         "type": {
           "name": "RequestBase",
@@ -125944,7 +128125,7 @@
         }
       ],
       "query": [],
-      "specLocation": "indices/analyze/IndicesAnalyzeRequest.ts#L27-L92"
+      "specLocation": "indices/analyze/IndicesAnalyzeRequest.ts#L27-L93"
     },
     {
       "kind": "response",
@@ -126846,7 +129027,7 @@
           }
         }
       ],
-      "specLocation": "indices/create_data_stream/IndicesCreateDataStreamRequest.ts#L24-L57"
+      "specLocation": "indices/create_data_stream/IndicesCreateDataStreamRequest.ts#L24-L58"
     },
     {
       "kind": "response",
@@ -126993,7 +129174,7 @@
           }
         }
       ],
-      "specLocation": "indices/data_streams_stats/IndicesDataStreamsStatsRequest.ts#L23-L48"
+      "specLocation": "indices/data_streams_stats/IndicesDataStreamsStatsRequest.ts#L23-L49"
     },
     {
       "kind": "response",
@@ -128028,6 +130209,10 @@
           }
         },
         {
+          "deprecation": {
+            "description": "",
+            "version": "8.12.0"
+          },
           "description": "If `true`, the request retrieves information from the local node only.",
           "name": "local",
           "required": false,
@@ -128041,7 +130226,7 @@
           }
         }
       ],
-      "specLocation": "indices/exists_alias/IndicesExistsAliasRequest.ts#L23-L68"
+      "specLocation": "indices/exists_alias/IndicesExistsAliasRequest.ts#L23-L69"
     },
     {
       "kind": "response",
@@ -128062,7 +130247,7 @@
       "body": {
         "kind": "no_body"
       },
-      "description": "Returns information about whether a particular index template exists.",
+      "description": "Check index templates.\nCheck whether index templates exist.",
       "inherits": {
         "type": {
           "name": "RequestBase",
@@ -128102,7 +130287,7 @@
           }
         }
       ],
-      "specLocation": "indices/exists_index_template/IndicesExistsIndexTemplateRequest.ts#L24-L41"
+      "specLocation": "indices/exists_index_template/IndicesExistsIndexTemplateRequest.ts#L24-L43"
     },
     {
       "kind": "response",
@@ -128334,7 +130519,7 @@
       "body": {
         "kind": "no_body"
       },
-      "description": "Get the status for a data stream lifecycle.\nRetrieves information about an index or data stream’s current data stream lifecycle status, such as time since index creation, time since rollover, the lifecycle configuration managing the index, or any errors encountered during lifecycle execution.",
+      "description": "Get the status for a data stream lifecycle.\nGet information about an index or data stream's current data stream lifecycle status, such as time since index creation, time since rollover, the lifecycle configuration managing the index, or any errors encountered during lifecycle execution.",
       "inherits": {
         "type": {
           "name": "RequestBase",
@@ -129562,6 +131747,10 @@
           }
         },
         {
+          "deprecation": {
+            "description": "",
+            "version": "8.12.0"
+          },
           "description": "If `true`, the request retrieves information from the local node only.",
           "name": "local",
           "required": false,
@@ -129575,7 +131764,7 @@
           }
         }
       ],
-      "specLocation": "indices/get_alias/IndicesGetAliasRequest.ts#L23-L71"
+      "specLocation": "indices/get_alias/IndicesGetAliasRequest.ts#L23-L72"
     },
     {
       "kind": "response",
@@ -129741,7 +131930,7 @@
           }
         }
       ],
-      "specLocation": "indices/get_data_lifecycle/IndicesGetDataLifecycleRequest.ts#L24-L59"
+      "specLocation": "indices/get_data_lifecycle/IndicesGetDataLifecycleRequest.ts#L24-L60"
     },
     {
       "kind": "response",
@@ -129866,7 +132055,7 @@
           }
         }
       ],
-      "specLocation": "indices/get_data_stream/IndicesGetDataStreamRequest.ts#L24-L65"
+      "specLocation": "indices/get_data_stream/IndicesGetDataStreamRequest.ts#L24-L66"
     },
     {
       "kind": "response",
@@ -130725,7 +132914,7 @@
           }
         }
       ],
-      "specLocation": "indices/migrate_to_data_stream/IndicesMigrateToDataStreamRequest.ts#L24-L58"
+      "specLocation": "indices/migrate_to_data_stream/IndicesMigrateToDataStreamRequest.ts#L24-L59"
     },
     {
       "kind": "response",
@@ -130854,7 +133043,7 @@
       },
       "path": [],
       "query": [],
-      "specLocation": "indices/modify_data_stream/IndicesModifyDataStreamRequest.ts#L23-L37"
+      "specLocation": "indices/modify_data_stream/IndicesModifyDataStreamRequest.ts#L23-L38"
     },
     {
       "kind": "response",
@@ -133863,7 +136052,7 @@
       "body": {
         "kind": "no_body"
       },
-      "description": "Resolves the specified name(s) and/or index patterns for indices, aliases, and data streams.\nMultiple patterns and remote clusters are supported.",
+      "description": "Resolve indices.\nResolve the names and/or index patterns for indices, aliases, and data streams.\nMultiple patterns and remote clusters are supported.",
       "inherits": {
         "type": {
           "name": "RequestBase",
@@ -133929,7 +136118,7 @@
           }
         }
       ],
-      "specLocation": "indices/resolve_index/ResolveIndexRequest.ts#L23-L60"
+      "specLocation": "indices/resolve_index/ResolveIndexRequest.ts#L23-L61"
     },
     {
       "kind": "interface",
@@ -138681,6 +140870,69 @@
         }
       }
     },
+    {
+      "kind": "interface",
+      "description": "Chunking configuration object",
+      "name": {
+        "name": "InferenceChunkingSettings",
+        "namespace": "inference._types"
+      },
+      "properties": [
+        {
+          "description": "Specifies the maximum size of a chunk in words\nThis value cannot be higher than `300` or lower than `20` (for `sentence` strategy) or `10` (for `word` strategy)",
+          "name": "max_chunk_size",
+          "required": false,
+          "serverDefault": 250,
+          "type": {
+            "kind": "instance_of",
+            "type": {
+              "name": "integer",
+              "namespace": "_types"
+            }
+          }
+        },
+        {
+          "description": "Specifies the number of overlapping words for chunks\nOnly for `word` chunking strategy\nThis value cannot be higher than the half of `max_chunk_size`",
+          "name": "overlap",
+          "required": false,
+          "serverDefault": 100,
+          "type": {
+            "kind": "instance_of",
+            "type": {
+              "name": "integer",
+              "namespace": "_types"
+            }
+          }
+        },
+        {
+          "description": "Specifies the number of overlapping sentences for chunks\nOnly for `sentence` chunking strategy\nIt can be either `1` or `0`",
+          "name": "sentence_overlap",
+          "required": false,
+          "serverDefault": 1,
+          "type": {
+            "kind": "instance_of",
+            "type": {
+              "name": "integer",
+              "namespace": "_types"
+            }
+          }
+        },
+        {
+          "description": "Specifies the chunking strategy\nIt could be either `sentence` or `word`",
+          "name": "strategy",
+          "required": false,
+          "serverDefault": "sentence",
+          "type": {
+            "kind": "instance_of",
+            "type": {
+              "name": "string",
+              "namespace": "_builtins"
+            }
+          }
+        }
+      ],
+      "specLocation": "inference/_types/Services.ts#L60-L90"
+    },
     {
       "kind": "interface",
       "description": "Configuration options when storing the inference endpoint",
@@ -138689,6 +140941,18 @@
         "namespace": "inference._types"
       },
       "properties": [
+        {
+          "description": "Chunking configuration object",
+          "name": "chunking_settings",
+          "required": false,
+          "type": {
+            "kind": "instance_of",
+            "type": {
+              "name": "InferenceChunkingSettings",
+              "namespace": "inference._types"
+            }
+          }
+        },
         {
           "description": "The service type",
           "name": "service",
@@ -138716,7 +140980,7 @@
         {
           "description": "Task settings specific to the service and task type",
           "name": "task_settings",
-          "required": true,
+          "required": false,
           "type": {
             "kind": "instance_of",
             "type": {
@@ -138726,7 +140990,7 @@
           }
         }
       ],
-      "specLocation": "inference/_types/Services.ts#L23-L39"
+      "specLocation": "inference/_types/Services.ts#L24-L44"
     },
     {
       "kind": "interface",
@@ -138767,7 +141031,7 @@
           }
         }
       ],
-      "specLocation": "inference/_types/Services.ts#L41-L53"
+      "specLocation": "inference/_types/Services.ts#L46-L58"
     },
     {
       "kind": "interface",
@@ -138903,7 +141167,7 @@
         "name": "ServiceSettings",
         "namespace": "inference._types"
       },
-      "specLocation": "inference/_types/Services.ts#L55-L55",
+      "specLocation": "inference/_types/Services.ts#L92-L92",
       "type": {
         "kind": "user_defined_value"
       }
@@ -138962,7 +141226,7 @@
         "name": "TaskSettings",
         "namespace": "inference._types"
       },
-      "specLocation": "inference/_types/Services.ts#L57-L57",
+      "specLocation": "inference/_types/Services.ts#L94-L94",
       "type": {
         "kind": "user_defined_value"
       }
@@ -139466,7 +141730,7 @@
           }
         }
       ],
-      "specLocation": "ingest/_types/Processors.ts#L291-L306"
+      "specLocation": "ingest/_types/Processors.ts#L328-L343"
     },
     {
       "kind": "interface",
@@ -139586,7 +141850,7 @@
           }
         }
       ],
-      "specLocation": "ingest/_types/Processors.ts#L308-L349"
+      "specLocation": "ingest/_types/Processors.ts#L345-L386"
     },
     {
       "kind": "interface",
@@ -139640,7 +141904,7 @@
           }
         }
       ],
-      "specLocation": "ingest/_types/Processors.ts#L482-L498"
+      "specLocation": "ingest/_types/Processors.ts#L555-L571"
     },
     {
       "kind": "interface",
@@ -139717,7 +141981,166 @@
           }
         }
       ],
-      "specLocation": "ingest/_types/Processors.ts#L500-L523"
+      "specLocation": "ingest/_types/Processors.ts#L573-L596"
+    },
+    {
+      "kind": "interface",
+      "inherits": {
+        "type": {
+          "name": "ProcessorBase",
+          "namespace": "ingest._types"
+        }
+      },
+      "name": {
+        "name": "CommunityIDProcessor",
+        "namespace": "ingest._types"
+      },
+      "properties": [
+        {
+          "description": "Field containing the source IP address.",
+          "name": "source_ip",
+          "required": false,
+          "serverDefault": "source.ip",
+          "type": {
+            "kind": "instance_of",
+            "type": {
+              "name": "Field",
+              "namespace": "_types"
+            }
+          }
+        },
+        {
+          "description": "Field containing the source port.",
+          "name": "source_port",
+          "required": false,
+          "serverDefault": "source.port",
+          "type": {
+            "kind": "instance_of",
+            "type": {
+              "name": "Field",
+              "namespace": "_types"
+            }
+          }
+        },
+        {
+          "description": "Field containing the destination IP address.",
+          "name": "destination_ip",
+          "required": false,
+          "serverDefault": "destination.ip",
+          "type": {
+            "kind": "instance_of",
+            "type": {
+              "name": "Field",
+              "namespace": "_types"
+            }
+          }
+        },
+        {
+          "description": "Field containing the destination port.",
+          "name": "destination_port",
+          "required": false,
+          "serverDefault": "destination.port",
+          "type": {
+            "kind": "instance_of",
+            "type": {
+              "name": "Field",
+              "namespace": "_types"
+            }
+          }
+        },
+        {
+          "description": "Field containing the IANA number.",
+          "name": "iana_number",
+          "required": false,
+          "serverDefault": "network.iana_number",
+          "type": {
+            "kind": "instance_of",
+            "type": {
+              "name": "Field",
+              "namespace": "_types"
+            }
+          }
+        },
+        {
+          "description": "Field containing the ICMP type.",
+          "name": "icmp_type",
+          "required": false,
+          "serverDefault": "icmp.type",
+          "type": {
+            "kind": "instance_of",
+            "type": {
+              "name": "Field",
+              "namespace": "_types"
+            }
+          }
+        },
+        {
+          "description": "Field containing the ICMP code.",
+          "name": "icmp_code",
+          "required": false,
+          "serverDefault": "icmp.code",
+          "type": {
+            "kind": "instance_of",
+            "type": {
+              "name": "Field",
+              "namespace": "_types"
+            }
+          }
+        },
+        {
+          "description": "Field containing the transport protocol name or number. Used only when the\niana_number field is not present. The following protocol names are currently\nsupported: eigrp, gre, icmp, icmpv6, igmp, ipv6-icmp, ospf, pim, sctp, tcp, udp",
+          "name": "transport",
+          "required": false,
+          "serverDefault": "network.transport",
+          "type": {
+            "kind": "instance_of",
+            "type": {
+              "name": "Field",
+              "namespace": "_types"
+            }
+          }
+        },
+        {
+          "description": "Output field for the community ID.",
+          "name": "target_field",
+          "required": false,
+          "serverDefault": "network.community_id",
+          "type": {
+            "kind": "instance_of",
+            "type": {
+              "name": "Field",
+              "namespace": "_types"
+            }
+          }
+        },
+        {
+          "description": "Seed for the community ID hash. Must be between 0 and 65535 (inclusive). The\nseed can prevent hash collisions between network domains, such as a staging\nand production network that use the same addressing scheme.",
+          "name": "seed",
+          "required": false,
+          "serverDefault": 0,
+          "type": {
+            "kind": "instance_of",
+            "type": {
+              "name": "integer",
+              "namespace": "_types"
+            }
+          }
+        },
+        {
+          "description": "If true and any required fields are missing, the processor quietly exits\nwithout modifying the document.",
+          "name": "ignore_missing",
+          "required": false,
+          "serverDefault": true,
+          "type": {
+            "kind": "instance_of",
+            "type": {
+              "name": "boolean",
+              "namespace": "_builtins"
+            }
+          }
+        }
+      ],
+      "specLocation": "ingest/_types/Processors.ts#L598-L659"
     },
     {
       "kind": "interface",
@@ -139783,7 +142206,7 @@
           }
         }
       ],
-      "specLocation": "ingest/_types/Processors.ts#L535-L555"
+      "specLocation": "ingest/_types/Processors.ts#L672-L692"
     },
     {
       "kind": "enum",
@@ -139794,17 +142217,20 @@
         {
           "name": "long"
         },
+        {
+          "name": "double"
+        },
         {
           "name": "float"
         },
         {
-          "name": "double"
+          "name": "boolean"
         },
         {
-          "name": "string"
+          "name": "ip"
         },
         {
-          "name": "boolean"
+          "name": "string"
         },
         {
           "name": "auto"
@@ -139814,7 +142240,7 @@
         "name": "ConvertType",
         "namespace": "ingest._types"
       },
-      "specLocation": "ingest/_types/Processors.ts#L525-L533"
+      "specLocation": "ingest/_types/Processors.ts#L661-L670"
     },
     {
       "kind": "interface",
@@ -139912,16 +142338,18 @@
           }
         }
       ],
-      "specLocation": "ingest/_types/Processors.ts#L557-L590"
+      "specLocation": "ingest/_types/Processors.ts#L694-L727"
     },
     {
       "kind": "interface",
+      "description": "The configuration necessary to identify which IP geolocation provider to use to download a database, as well as any provider-specific configuration necessary for such downloading.\nAt present, the only supported providers are maxmind and ipinfo, and the maxmind provider requires that an account_id (string) is configured.\nA provider (either maxmind or ipinfo) must be specified. The web and local providers can be returned as read only configurations.",
       "name": {
         "name": "DatabaseConfiguration",
         "namespace": "ingest._types"
       },
       "properties": [
         {
+          "containerProperty": true,
           "description": "The provider-assigned name of the IP geolocation database to download.",
           "name": "name",
           "required": true,
@@ -139934,9 +142362,78 @@
           }
         },
         {
-          "description": "The configuration necessary to identify which IP geolocation provider to use to download the database, as well as any provider-specific configuration necessary for such downloading.\nAt present, the only supported provider is maxmind, and the maxmind provider requires that an account_id (string) is configured.",
           "name": "maxmind",
+          "required": false,
+          "type": {
+            "kind": "instance_of",
+            "type": {
+              "name": "Maxmind",
+              "namespace": "ingest._types"
+            }
+          }
+        },
+        {
+          "name": "ipinfo",
+          "required": false,
+          "type": {
+            "kind": "instance_of",
+            "type": {
+              "name": "Ipinfo",
+              "namespace": "ingest._types"
+            }
+          }
+        }
+      ],
+      "specLocation": "ingest/_types/Database.ts#L22-L37",
+      "variants": {
+        "kind": "container"
+      }
+    },
+    {
+      "kind": "interface",
+      "name": {
+        "name": "DatabaseConfigurationFull",
+        "namespace": "ingest._types"
+      },
+      "properties": [
+        {
+          "name": "web",
+          "required": false,
+          "type": {
+            "kind": "instance_of",
+            "type": {
+              "name": "Web",
+              "namespace": "ingest._types"
+            }
+          }
+        },
+        {
+          "name": "local",
+          "required": false,
+          "type": {
+            "kind": "instance_of",
+            "type": {
+              "name": "Local",
+              "namespace": "ingest._types"
+            }
+          }
+        },
+        {
+          "containerProperty": true,
+          "description": "The provider-assigned name of the IP geolocation database to download.",
+          "name": "name",
           "required": true,
+          "type": {
+            "kind": "instance_of",
+            "type": {
+              "name": "Name",
+              "namespace": "_types"
+            }
+          }
+        },
+        {
+          "name": "maxmind",
+          "required": false,
           "type": {
             "kind": "instance_of",
             "type": {
@@ -139944,9 +142441,23 @@
               "namespace": "ingest._types"
             }
           }
+        },
+        {
+          "name": "ipinfo",
+          "required": false,
+          "type": {
+            "kind": "instance_of",
+            "type": {
+              "name": "Ipinfo",
+              "namespace": "ingest._types"
+            }
+          }
         }
       ],
-      "specLocation": "ingest/_types/Database.ts#L22-L29"
+      "specLocation": "ingest/_types/Database.ts#L39-L53",
+      "variants": {
+        "kind": "container"
+      }
     },
     {
       "kind": "interface",
@@ -140052,7 +142563,7 @@
           }
         }
       ],
-      "specLocation": "ingest/_types/Processors.ts#L592-L630"
+      "specLocation": "ingest/_types/Processors.ts#L729-L767"
     },
     {
       "kind": "interface",
@@ -140132,9 +142643,22 @@
               "namespace": "_builtins"
             }
           }
+        },
+        {
+          "description": "The format to use when writing the date to target_field. Must be a valid\njava time pattern.",
+          "name": "output_format",
+          "required": false,
+          "serverDefault": "yyyy-MM-dd'T'HH:mm:ss.SSSXXX",
+          "type": {
+            "kind": "instance_of",
+            "type": {
+              "name": "string",
+              "namespace": "_builtins"
+            }
+          }
         }
       ],
-      "specLocation": "ingest/_types/Processors.ts#L632-L659"
+      "specLocation": "ingest/_types/Processors.ts#L769-L802"
     },
     {
       "kind": "interface",
@@ -140200,7 +142724,7 @@
           }
         }
       ],
-      "specLocation": "ingest/_types/Processors.ts#L661-L680"
+      "specLocation": "ingest/_types/Processors.ts#L804-L823"
     },
     {
       "kind": "interface",
@@ -140253,7 +142777,7 @@
           }
         }
       ],
-      "specLocation": "ingest/_types/Processors.ts#L682-L700"
+      "specLocation": "ingest/_types/Processors.ts#L825-L843"
     },
     {
       "kind": "interface",
@@ -140268,7 +142792,7 @@
         "namespace": "ingest._types"
       },
       "properties": [],
-      "specLocation": "ingest/_types/Processors.ts#L702-L702"
+      "specLocation": "ingest/_types/Processors.ts#L845-L845"
     },
     {
       "kind": "interface",
@@ -140372,7 +142896,7 @@
           }
         }
       ],
-      "specLocation": "ingest/_types/Processors.ts#L704-L743"
+      "specLocation": "ingest/_types/Processors.ts#L847-L886"
     },
     {
       "kind": "interface",
@@ -140400,7 +142924,116 @@
           }
         }
       ],
-      "specLocation": "ingest/_types/Processors.ts#L745-L751"
+      "specLocation": "ingest/_types/Processors.ts#L888-L894"
+    },
+    {
+      "kind": "enum",
+      "members": [
+        {
+          "codegenName": "md5",
+          "name": "MD5"
+        },
+        {
+          "codegenName": "sha1",
+          "name": "SHA-1"
+        },
+        {
+          "codegenName": "sha256",
+          "name": "SHA-256"
+        },
+        {
+          "codegenName": "sha512",
+          "name": "SHA-512"
+        },
+        {
+          "codegenName": "murmurHash3",
+          "name": "MurmurHash3"
+        }
+      ],
+      "name": {
+        "name": "FingerprintDigest",
+        "namespace": "ingest._types"
+      },
+      "specLocation": "ingest/_types/Processors.ts#L896-L902"
+    },
+    {
+      "kind": "interface",
+      "inherits": {
+        "type": {
+          "name": "ProcessorBase",
+          "namespace": "ingest._types"
+        }
+      },
+      "name": {
+        "name": "FingerprintProcessor",
+        "namespace": "ingest._types"
+      },
+      "properties": [
+        {
+          "description": "Array of fields to include in the fingerprint. For objects, the processor\nhashes both the field key and value. For other fields, the processor hashes\nonly the field value.",
+          "name": "fields",
+          "required": true,
+          "type": {
+            "kind": "instance_of",
+            "type": {
+              "name": "Fields",
+              "namespace": "_types"
+            }
+          }
+        },
+        {
+          "description": "Output field for the fingerprint.",
+          "name": "target_field",
+          "required": false,
+          "serverDefault": "fingerprint",
+          "type": {
+            "kind": "instance_of",
+            "type": {
+              "name": "Field",
+              "namespace": "_types"
+            }
+          }
+        },
+        {
+          "description": "Salt value for the hash function.",
+          "name": "salt",
+          "required": false,
+          "type": {
+            "kind": "instance_of",
+            "type": {
+              "name": "string",
+              "namespace": "_builtins"
+            }
+          }
+        },
+        {
+          "description": "The hash method used to compute the fingerprint. Must be one of MD5, SHA-1,\nSHA-256, SHA-512, or MurmurHash3.",
+          "name": "method",
+          "required": false,
+          "serverDefault": "SHA-1",
+          "type": {
+            "kind": "instance_of",
+            "type": {
+              "name": "FingerprintDigest",
+              "namespace": "ingest._types"
+            }
+          }
+        },
+        {
+          "description": "If true, the processor ignores any missing fields. If all fields are\nmissing, the processor silently exits without modifying the document.",
+          "name": "ignore_missing",
+          "required": false,
+          "serverDefault": false,
+          "type": {
+            "kind": "instance_of",
+            "type": {
+              "name": "boolean",
+              "namespace": "_builtins"
+            }
+          }
+        }
+      ],
+      "specLocation": "ingest/_types/Processors.ts#L904-L932"
     },
     {
       "kind": "interface",
@@ -140453,7 +143086,7 @@
           }
         }
       ],
-      "specLocation": "ingest/_types/Processors.ts#L753-L767"
+      "specLocation": "ingest/_types/Processors.ts#L934-L948"
     },
     {
       "kind": "interface",
@@ -140580,7 +143213,7 @@
           }
         }
       ],
-      "specLocation": "ingest/_types/Processors.ts#L351-L392"
+      "specLocation": "ingest/_types/Processors.ts#L388-L429"
     },
     {
       "kind": "enum",
@@ -140596,7 +143229,7 @@
         "name": "GeoGridTargetFormat",
         "namespace": "ingest._types"
       },
-      "specLocation": "ingest/_types/Processors.ts#L400-L403"
+      "specLocation": "ingest/_types/Processors.ts#L437-L440"
     },
     {
       "kind": "enum",
@@ -140615,7 +143248,7 @@
         "name": "GeoGridTileType",
         "namespace": "ingest._types"
       },
-      "specLocation": "ingest/_types/Processors.ts#L394-L398"
+      "specLocation": "ingest/_types/Processors.ts#L431-L435"
     },
     {
       "kind": "interface",
@@ -140722,7 +143355,7 @@
           }
         }
       ],
-      "specLocation": "ingest/_types/Processors.ts#L405-L439"
+      "specLocation": "ingest/_types/Processors.ts#L442-L476"
     },
     {
       "kind": "interface",
@@ -140737,6 +143370,19 @@
         "namespace": "ingest._types"
       },
       "properties": [
+        {
+          "description": "Must be disabled or v1. If v1, the processor uses patterns with Elastic\nCommon Schema (ECS) field names.",
+          "name": "ecs_compatibility",
+          "required": false,
+          "serverDefault": "disabled",
+          "type": {
+            "kind": "instance_of",
+            "type": {
+              "name": "string",
+              "namespace": "_builtins"
+            }
+          }
+        },
         {
           "description": "The field to use for grok expression parsing.",
           "name": "field",
@@ -140814,7 +143460,7 @@
           }
         }
       ],
-      "specLocation": "ingest/_types/Processors.ts#L769-L794"
+      "specLocation": "ingest/_types/Processors.ts#L950-L981"
     },
     {
       "kind": "interface",
@@ -140892,7 +143538,7 @@
           }
         }
       ],
-      "specLocation": "ingest/_types/Processors.ts#L796-L820"
+      "specLocation": "ingest/_types/Processors.ts#L983-L1007"
     },
     {
       "kind": "interface",
@@ -140946,7 +143592,7 @@
           }
         }
       ],
-      "specLocation": "ingest/_types/Processors.ts#L822-L838"
+      "specLocation": "ingest/_types/Processors.ts#L1009-L1025"
     },
     {
       "kind": "interface",
@@ -140980,7 +143626,7 @@
           }
         }
       ],
-      "specLocation": "ingest/_types/Processors.ts#L861-L873",
+      "specLocation": "ingest/_types/Processors.ts#L1048-L1060",
       "variants": {
         "kind": "container"
       }
@@ -141057,7 +143703,7 @@
           }
         }
       ],
-      "specLocation": "ingest/_types/Processors.ts#L888-L914"
+      "specLocation": "ingest/_types/Processors.ts#L1075-L1101"
     },
     {
       "kind": "interface",
@@ -141093,7 +143739,7 @@
           }
         }
       ],
-      "specLocation": "ingest/_types/Processors.ts#L875-L886"
+      "specLocation": "ingest/_types/Processors.ts#L1062-L1073"
     },
     {
       "kind": "interface",
@@ -141165,7 +143811,123 @@
           }
         }
       ],
-      "specLocation": "ingest/_types/Processors.ts#L840-L859"
+      "specLocation": "ingest/_types/Processors.ts#L1027-L1046"
+    },
+    {
+      "kind": "interface",
+      "inherits": {
+        "type": {
+          "name": "ProcessorBase",
+          "namespace": "ingest._types"
+        }
+      },
+      "name": {
+        "name": "IpLocationProcessor",
+        "namespace": "ingest._types"
+      },
+      "properties": [
+        {
+          "description": "The database filename referring to a database the module ships with (GeoLite2-City.mmdb, GeoLite2-Country.mmdb, or GeoLite2-ASN.mmdb) or a custom database in the ingest-geoip config directory.",
+          "name": "database_file",
+          "required": false,
+          "serverDefault": "GeoLite2-City.mmdb",
+          "type": {
+            "kind": "instance_of",
+            "type": {
+              "name": "string",
+              "namespace": "_builtins"
+            }
+          }
+        },
+        {
+          "description": "The field to get the ip address from for the geographical lookup.",
+          "name": "field",
+          "required": true,
+          "type": {
+            "kind": "instance_of",
+            "type": {
+              "name": "Field",
+              "namespace": "_types"
+            }
+          }
+        },
+        {
+          "description": "If `true`, only the first found IP location data will be returned, even if the field contains an array.",
+          "name": "first_only",
+          "required": false,
+          "serverDefault": true,
+          "type": {
+            "kind": "instance_of",
+            "type": {
+              "name": "boolean",
+              "namespace": "_builtins"
+            }
+          }
+        },
+        {
+          "description": "If `true` and `field` does not exist, the processor quietly exits without modifying the document.",
+          "name": "ignore_missing",
+          "required": false,
+          "serverDefault": false,
+          "type": {
+            "kind": "instance_of",
+            "type": {
+              "name": "boolean",
+              "namespace": "_builtins"
+            }
+          }
+        },
+        {
+          "description": "Controls what properties are added to the `target_field` based on the IP location lookup.",
+          "name": "properties",
+          "required": false,
+          "type": {
+            "kind": "array_of",
+            "value": {
+              "kind": "instance_of",
+              "type": {
+                "name": "string",
+                "namespace": "_builtins"
+              }
+            }
+          }
+        },
+        {
+          "description": "The field that will hold the geographical information looked up from the MaxMind database.",
+          "name": "target_field",
+          "required": false,
+          "serverDefault": "geoip",
+          "type": {
+            "kind": "instance_of",
+            "type": {
+              "name": "Field",
+              "namespace": "_types"
+            }
+          }
+        },
+        {
+          "description": "If `true` (and if `ingest.geoip.downloader.eager.download` is `false`), the missing database is downloaded when the pipeline is created.\nElse, the download is triggered by when the pipeline is used as the `default_pipeline` or `final_pipeline` in an index.",
+          "name": "download_database_on_pipeline_creation",
+          "required": false,
+          "type": {
+            "kind": "instance_of",
+            "type": {
+              "name": "boolean",
+              "namespace": "_builtins"
+            }
+          }
+        }
+      ],
+      "specLocation": "ingest/_types/Processors.ts#L478-L512"
+    },
+    {
+      "kind": "interface",
+      "name": {
+        "name": "Ipinfo",
+        "namespace": "ingest._types"
+      },
+      "properties": [],
+      "specLocation": "ingest/_types/Database.ts#L59-L59"
     },
     {
       "kind": "interface",
@@ -141218,7 +143980,7 @@
           }
         }
       ],
-      "specLocation": "ingest/_types/Processors.ts#L916-L931"
+      "specLocation": "ingest/_types/Processors.ts#L1103-L1118"
     },
     {
       "kind": "interface",
@@ -141297,7 +144059,7 @@
           }
         }
       ],
-      "specLocation": "ingest/_types/Processors.ts#L933-L962"
+      "specLocation": "ingest/_types/Processors.ts#L1120-L1149"
     },
     {
       "kind": "enum",
@@ -141315,7 +144077,7 @@
         "name": "JsonProcessorConflictStrategy",
         "namespace": "ingest._types"
       },
-      "specLocation": "ingest/_types/Processors.ts#L964-L969"
+      "specLocation": "ingest/_types/Processors.ts#L1151-L1156"
     },
     {
       "kind": "interface",
@@ -141472,7 +144234,28 @@
           }
         }
       ],
-      "specLocation": "ingest/_types/Processors.ts#L971-L1023"
+      "specLocation": "ingest/_types/Processors.ts#L1158-L1210"
+    },
+    {
+      "kind": "interface",
+      "name": {
+        "name": "Local",
+        "namespace": "ingest._types"
+      },
+      "properties": [
+        {
+          "name": "type",
+          "required": true,
+          "type": {
+            "kind": "instance_of",
+            "type": {
+              "name": "string",
+              "namespace": "_builtins"
+            }
+          }
+        }
+      ],
+      "specLocation": "ingest/_types/Database.ts#L63-L65"
     },
     {
       "kind": "interface",
@@ -141526,7 +144309,7 @@
           }
         }
       ],
-      "specLocation": "ingest/_types/Processors.ts#L1025-L1041"
+      "specLocation": "ingest/_types/Processors.ts#L1212-L1228"
     },
     {
       "kind": "interface",
@@ -141547,7 +144330,102 @@
           }
         }
       ],
-      "specLocation": "ingest/_types/Database.ts#L31-L33"
+      "specLocation": "ingest/_types/Database.ts#L55-L57"
+    },
+    {
+      "kind": "interface",
+      "inherits": {
+        "type": {
+          "name": "ProcessorBase",
+          "namespace": "ingest._types"
+        }
+      },
+      "name": {
+        "name": "NetworkDirectionProcessor",
+        "namespace": "ingest._types"
+      },
+      "properties": [
+        {
+          "description": "Field containing the source IP address.",
+          "name": "source_ip",
+          "required": false,
+          "serverDefault": "source.ip",
+          "type": {
+            "kind": "instance_of",
+            "type": {
+              "name": "Field",
+              "namespace": "_types"
+            }
+          }
+        },
+        {
+          "description": "Field containing the destination IP address.",
+          "name": "destination_ip",
+          "required": false,
+          "serverDefault": "destination.ip",
+          "type": {
+            "kind": "instance_of",
+            "type": {
+              "name": "Field",
+              "namespace": "_types"
+            }
+          }
+        },
+        {
+          "description": "Output field for the network direction.",
+          "name": "target_field",
+          "required": false,
+          "serverDefault": "network.direction",
+          "type": {
+            "kind": "instance_of",
+            "type": {
+              "name": "Field",
+              "namespace": "_types"
+            }
+          }
+        },
+        {
+          "description": "List of internal networks. Supports IPv4 and IPv6 addresses and ranges in\nCIDR notation. Also supports the named ranges listed below. These may be\nconstructed with template snippets. Must specify only one of\ninternal_networks or internal_networks_field.",
+          "name": "internal_networks",
+          "required": false,
+          "type": {
+            "kind": "array_of",
+            "value": {
+              "kind": "instance_of",
+              "type": {
+                "name": "string",
+                "namespace": "_builtins"
+              }
+            }
+          }
+        },
+        {
+          "description": "A field on the given document to read the internal_networks configuration\nfrom.",
+          "name": "internal_networks_field",
+          "required": false,
+          "type": {
+            "kind": "instance_of",
+            "type": {
+              "name": "Field",
+              "namespace": "_types"
+            }
+          }
+        },
+        {
+          "description": "If true and any required fields are missing, the processor quietly exits\nwithout modifying the document.",
+          "name": "ignore_missing",
+          "required": false,
+          "serverDefault": true,
+          "type": {
+            "kind": "instance_of",
+            "type": {
+              "name": "boolean",
+              "namespace": "_builtins"
+            }
+          }
+        }
+      ],
+      "specLocation": "ingest/_types/Processors.ts#L1230-L1264"
     },
     {
       "kind": "interface",
@@ -141726,7 +144604,7 @@
           }
         }
       ],
-      "specLocation": "ingest/_types/Processors.ts#L1043-L1054"
+      "specLocation": "ingest/_types/Processors.ts#L1266-L1277"
     },
     {
       "kind": "interface",
@@ -141799,7 +144677,7 @@
           }
         }
       ],
-      "specLocation": "ingest/_types/Processors.ts#L266-L289"
+      "specLocation": "ingest/_types/Processors.ts#L303-L326"
     },
     {
       "kind": "interface",
@@ -141864,6 +144742,20 @@
             }
           }
         },
+        {
+          "description": "Computes the Community ID for network flow data as defined in the\nCommunity ID Specification. You can use a community ID to correlate network\nevents related to a single flow.",
+          "docId": "community-id-processor",
+          "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/community-id-processor.html",
+          "name": "community_id",
+          "required": false,
+          "type": {
+            "kind": "instance_of",
+            "type": {
+              "name": "CommunityIDProcessor",
+              "namespace": "ingest._types"
+            }
+          }
+        },
         {
           "description": "Converts a field in the currently ingested document to a different type, such as converting a string to an integer.\nIf the field value is an array, all members will be converted.",
           "docId": "convert-processor",
@@ -141990,6 +144882,20 @@
             }
           }
         },
+        {
+          "description": "Computes a hash of the document’s content. You can use this hash for\ncontent fingerprinting.",
+          "docId": "fingerprint-processor",
+          "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/fingerprint-processor.html",
+          "name": "fingerprint",
+          "required": false,
+          "type": {
+            "kind": "instance_of",
+            "type": {
+              "name": "FingerprintProcessor",
+              "namespace": "ingest._types"
+            }
+          }
+        },
         {
           "description": "Runs an ingest processor on each element of an array or object.",
           "docId": "foreach-processor",
@@ -142004,6 +144910,18 @@
             }
           }
         },
+        {
+          "description": "Currently an undocumented alias for GeoIP Processor.",
+          "name": "ip_location",
+          "required": false,
+          "type": {
+            "kind": "instance_of",
+            "type": {
+              "name": "IpLocationProcessor",
+              "namespace": "ingest._types"
+            }
+          }
+        },
         {
           "description": "Converts geo-grid definitions of grid tiles or cells to regular bounding boxes or polygons which describe their shape.\nThis is useful if there is a need to interact with the tile shapes as spatially indexable fields.",
           "docId": "geo-grid-processor",
@@ -142143,6 +145061,20 @@
             }
           }
         },
+        {
+          "description": "Calculates the network direction given a source IP address, destination IP\naddress, and a list of internal networks.",
+          "docId": "network-direction-processor",
+          "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/network-direction-processor.html",
+          "name": "network_direction",
+          "required": false,
+          "type": {
+            "kind": "instance_of",
+            "type": {
+              "name": "NetworkDirectionProcessor",
+              "namespace": "ingest._types"
+            }
+          }
+        },
         {
           "description": "Executes another pipeline.",
           "docId": "pipeline-processor",
@@ -142171,6 +145103,20 @@
             }
           }
         },
+        {
+          "description": "Extracts the registered domain (also known as the effective top-level\ndomain or eTLD), sub-domain, and top-level domain from a fully qualified\ndomain name (FQDN). Uses the registered domains defined in the Mozilla\nPublic Suffix List.",
+          "docId": "registered-domain-processor",
+          "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/registered-domain-processor.html",
+          "name": "registered_domain",
+          "required": false,
+          "type": {
+            "kind": "instance_of",
+            "type": {
+              "name": "RegisteredDomainProcessor",
+              "namespace": "ingest._types"
+            }
+          }
+        },
         {
           "description": "Removes existing fields.\nIf one field doesn’t exist, an exception will be thrown.",
           "docId": "remove-processor",
@@ -142283,6 +145229,20 @@
             }
           }
         },
+        {
+          "description": "Terminates the current ingest pipeline, causing no further processors to be run.\nThis will normally be executed conditionally, using the `if` option.",
+          "docId": "terminate-processor",
+          "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/terminate-processor.html",
+          "name": "terminate",
+          "required": false,
+          "type": {
+            "kind": "instance_of",
+            "type": {
+              "name": "TerminateProcessor",
+              "namespace": "ingest._types"
+            }
+          }
+        },
         {
           "description": "Trims whitespace from a field.\nIf the field is an array of strings, all members of the array will be trimmed.\nThis only works on leading and trailing whitespace.",
           "docId": "trim-processor",
@@ -142353,7 +145313,7 @@
           }
         }
       ],
-      "specLocation": "ingest/_types/Processors.ts#L27-L264",
+      "specLocation": "ingest/_types/Processors.ts#L27-L301",
       "variants": {
         "kind": "container",
         "nonExhaustive": true
@@ -142472,9 +145432,81 @@
               "namespace": "_builtins"
             }
           }
+        },
+        {
+          "availability": {
+            "serverless": {},
+            "stack": {
+              "since": "8.16.0"
+            }
+          },
+          "description": "If `true` then ingest metadata `_ingest._redact._is_redacted` is set to `true` if the document has been redacted",
+          "name": "trace_redact",
+          "required": false,
+          "serverDefault": false,
+          "type": {
+            "kind": "instance_of",
+            "type": {
+              "name": "boolean",
+              "namespace": "_builtins"
+            }
+          }
+        }
+      ],
+      "specLocation": "ingest/_types/Processors.ts#L1279-L1320"
+    },
+    {
+      "kind": "interface",
+      "inherits": {
+        "type": {
+          "name": "ProcessorBase",
+          "namespace": "ingest._types"
+        }
+      },
+      "name": {
+        "name": "RegisteredDomainProcessor",
+        "namespace": "ingest._types"
+      },
+      "properties": [
+        {
+          "description": "Field containing the source FQDN.",
+          "name": "field",
+          "required": true,
+          "type": {
+            "kind": "instance_of",
+            "type": {
+              "name": "Field",
+              "namespace": "_types"
+            }
+          }
+        },
+        {
+          "description": "Object field containing extracted domain components. If an empty string,\nthe processor adds components to the document’s root.",
+          "name": "target_field",
+          "required": false,
+          "type": {
+            "kind": "instance_of",
+            "type": {
+              "name": "Field",
+              "namespace": "_types"
+            }
+          }
+        },
+        {
+          "description": "If true and any required fields are missing, the processor quietly exits\nwithout modifying the document.",
+          "name": "ignore_missing",
+          "required": false,
+          "serverDefault": true,
+          "type": {
+            "kind": "instance_of",
+            "type": {
+              "name": "boolean",
+              "namespace": "_builtins"
+            }
+          }
         }
       ],
-      "specLocation": "ingest/_types/Processors.ts#L1056-L1090"
+      "specLocation": "ingest/_types/Processors.ts#L1322-L1338"
     },
     {
       "kind": "interface",
@@ -142527,7 +145559,7 @@
           }
         }
       ],
-      "specLocation": "ingest/_types/Processors.ts#L1092-L1106"
+      "specLocation": "ingest/_types/Processors.ts#L1340-L1354"
     },
     {
       "kind": "interface",
@@ -142580,7 +145612,7 @@
           }
         }
       ],
-      "specLocation": "ingest/_types/Processors.ts#L1108-L1124"
+      "specLocation": "ingest/_types/Processors.ts#L1356-L1372"
     },
     {
       "kind": "interface",
@@ -142662,7 +145694,7 @@
           }
         }
       ],
-      "specLocation": "ingest/_types/Processors.ts#L1126-L1154"
+      "specLocation": "ingest/_types/Processors.ts#L1374-L1402"
     },
     {
       "kind": "interface",
@@ -142734,7 +145766,7 @@
           }
         }
       ],
-      "specLocation": "ingest/_types/Processors.ts#L1156-L1176"
+      "specLocation": "ingest/_types/Processors.ts#L1404-L1424"
     },
     {
       "kind": "interface",
@@ -142820,7 +145852,7 @@
           }
         }
       ],
-      "specLocation": "ingest/_types/Processors.ts#L1178-L1212"
+      "specLocation": "ingest/_types/Processors.ts#L1426-L1460"
     },
     {
       "kind": "interface",
@@ -142863,7 +145895,7 @@
           }
         }
       ],
-      "specLocation": "ingest/_types/Processors.ts#L1214-L1223"
+      "specLocation": "ingest/_types/Processors.ts#L1462-L1471"
     },
     {
       "kind": "enum",
@@ -142879,7 +145911,7 @@
         "name": "ShapeType",
         "namespace": "ingest._types"
       },
-      "specLocation": "ingest/_types/Processors.ts#L1225-L1228"
+      "specLocation": "ingest/_types/Processors.ts#L1473-L1476"
     },
     {
       "kind": "interface",
@@ -142932,7 +145964,7 @@
           }
         }
       ],
-      "specLocation": "ingest/_types/Processors.ts#L1230-L1246"
+      "specLocation": "ingest/_types/Processors.ts#L1478-L1494"
     },
     {
       "kind": "interface",
@@ -143011,7 +146043,22 @@
           }
         }
       ],
-      "specLocation": "ingest/_types/Processors.ts#L1248-L1273"
+      "specLocation": "ingest/_types/Processors.ts#L1496-L1521"
+    },
+    {
+      "kind": "interface",
+      "inherits": {
+        "type": {
+          "name": "ProcessorBase",
+          "namespace": "ingest._types"
+        }
+      },
+      "name": {
+        "name": "TerminateProcessor",
+        "namespace": "ingest._types"
+      },
+      "properties": [],
+      "specLocation": "ingest/_types/Processors.ts#L1523-L1523"
     },
     {
       "kind": "interface",
@@ -143065,7 +146112,7 @@
           }
         }
       ],
-      "specLocation": "ingest/_types/Processors.ts#L1275-L1291"
+      "specLocation": "ingest/_types/Processors.ts#L1525-L1541"
     },
     {
       "kind": "interface",
@@ -143119,7 +146166,7 @@
           }
         }
       ],
-      "specLocation": "ingest/_types/Processors.ts#L1293-L1309"
+      "specLocation": "ingest/_types/Processors.ts#L1543-L1559"
     },
     {
       "kind": "interface",
@@ -143199,7 +146246,7 @@
           }
         }
       ],
-      "specLocation": "ingest/_types/Processors.ts#L1329-L1355"
+      "specLocation": "ingest/_types/Processors.ts#L1579-L1605"
     },
     {
       "kind": "interface",
@@ -143253,7 +146300,7 @@
           }
         }
       ],
-      "specLocation": "ingest/_types/Processors.ts#L1311-L1327"
+      "specLocation": "ingest/_types/Processors.ts#L1561-L1577"
     },
     {
       "kind": "interface",
@@ -143366,7 +146413,7 @@
           }
         }
       ],
-      "specLocation": "ingest/_types/Processors.ts#L441-L472"
+      "specLocation": "ingest/_types/Processors.ts#L514-L545"
     },
     {
       "kind": "enum",
@@ -143391,7 +146438,16 @@
         "name": "UserAgentProperty",
         "namespace": "ingest._types"
       },
-      "specLocation": "ingest/_types/Processors.ts#L474-L480"
+      "specLocation": "ingest/_types/Processors.ts#L547-L553"
+    },
+    {
+      "kind": "interface",
+      "name": {
+        "name": "Web",
+        "namespace": "ingest._types"
+      },
+      "properties": [],
+      "specLocation": "ingest/_types/Database.ts#L61-L61"
     },
     {
       "kind": "request",
@@ -143401,7 +146457,7 @@
       "body": {
         "kind": "no_body"
       },
-      "description": "Deletes a geoip database configuration.",
+      "description": "Delete GeoIP database configurations.\nDelete one or more IP geolocation database configurations.",
       "inherits": {
         "type": {
           "name": "RequestBase",
@@ -143454,7 +146510,7 @@
           }
         }
       ],
-      "specLocation": "ingest/delete_geoip_database/DeleteGeoipDatabaseRequest.ts#L24-L48"
+      "specLocation": "ingest/delete_geoip_database/DeleteGeoipDatabaseRequest.ts#L24-L49"
     },
     {
       "kind": "response",
@@ -143482,7 +146538,88 @@
       "body": {
         "kind": "no_body"
       },
-      "description": "Deletes one or more existing ingest pipeline.",
+      "description": "Deletes an IP location database configuration.",
+      "inherits": {
+        "type": {
+          "name": "RequestBase",
+          "namespace": "_types"
+        }
+      },
+      "name": {
+        "name": "Request",
+        "namespace": "ingest.delete_ip_location_database"
+      },
+      "path": [
+        {
+          "description": "A comma-separated list of IP location database configurations to delete",
+          "name": "id",
+          "required": true,
+          "type": {
+            "kind": "instance_of",
+            "type": {
+              "name": "Ids",
+              "namespace": "_types"
+            }
+          }
+        }
+      ],
+      "query": [
+        {
+          "description": "Period to wait for a connection to the master node.\nIf no response is received before the timeout expires, the request fails and returns an error.",
+          "name": "master_timeout",
+          "required": false,
+          "serverDefault": "30s",
+          "type": {
+            "kind": "instance_of",
+            "type": {
+              "name": "Duration",
+              "namespace": "_types"
+            }
+          }
+        },
+        {
+          "description": "Period to wait for a response. If no response is received before the timeout expires, the request fails and returns an error.",
+          "name": "timeout",
+          "required": false,
+          "serverDefault": "30s",
+          "type": {
+            "kind": "instance_of",
+            "type": {
+              "name": "Duration",
+              "namespace": "_types"
+            }
+          }
+        }
+      ],
+      "specLocation": "ingest/delete_ip_location_database/DeleteIpLocationDatabaseRequest.ts#L24-L48"
+    },
+    {
+      "kind": "response",
+      "body": {
+        "kind": "value",
+        "value": {
+          "kind": "instance_of",
+          "type": {
+            "name": "AcknowledgedResponseBase",
+            "namespace": "_types"
+          }
+        }
+      },
+      "name": {
+        "name": "Response",
+        "namespace": "ingest.delete_ip_location_database"
+      },
+      "specLocation": "ingest/delete_ip_location_database/DeleteIpLocationDatabaseResponse.ts#L22-L24"
+    },
+    {
+      "kind": "request",
+      "attachedBehaviors": [
+        "CommonQueryParameters"
+      ],
+      "body": {
+        "kind": "no_body"
+      },
+      "description": "Delete pipelines.\nDelete one or more ingest pipelines.",
       "inherits": {
         "type": {
           "name": "RequestBase",
@@ -143535,7 +146672,7 @@
           }
         }
       ],
-      "specLocation": "ingest/delete_pipeline/DeletePipelineRequest.ts#L24-L52"
+      "specLocation": "ingest/delete_pipeline/DeletePipelineRequest.ts#L24-L54"
     },
     {
       "kind": "response",
@@ -143717,7 +146854,7 @@
       "body": {
         "kind": "no_body"
       },
-      "description": "Gets download statistics for GeoIP2 databases used with the geoip processor.",
+      "description": "Get GeoIP statistics.\nGet download statistics for GeoIP2 databases that are used with the GeoIP processor.",
       "inherits": {
         "type": {
           "name": "RequestBase",
@@ -143730,7 +146867,7 @@
       },
       "path": [],
       "query": [],
-      "specLocation": "ingest/geo_ip_stats/IngestGeoIpStatsRequest.ts#L22-L29"
+      "specLocation": "ingest/geo_ip_stats/IngestGeoIpStatsRequest.ts#L22-L31"
     },
     {
       "kind": "response",
@@ -143851,7 +146988,7 @@
       "body": {
         "kind": "no_body"
       },
-      "description": "Returns information about one or more geoip database configurations.",
+      "description": "Get GeoIP database configurations.\nGet information about one or more IP geolocation database configurations.",
       "inherits": {
         "type": {
           "name": "RequestBase",
@@ -143891,7 +147028,7 @@
           }
         }
       ],
-      "specLocation": "ingest/get_geoip_database/GetGeoipDatabaseRequest.ts#L24-L46"
+      "specLocation": "ingest/get_geoip_database/GetGeoipDatabaseRequest.ts#L24-L47"
     },
     {
       "kind": "response",
@@ -143920,6 +147057,166 @@
       },
       "specLocation": "ingest/get_geoip_database/GetGeoipDatabaseResponse.ts#L25-L27"
     },
+    {
+      "kind": "interface",
+      "name": {
+        "name": "DatabaseConfigurationMetadata",
+        "namespace": "ingest.get_ip_location_database"
+      },
+      "properties": [
+        {
+          "name": "id",
+          "required": true,
+          "type": {
+            "kind": "instance_of",
+            "type": {
+              "name": "Id",
+              "namespace": "_types"
+            }
+          }
+        },
+        {
+          "name": "version",
+          "required": true,
+          "type": {
+            "kind": "instance_of",
+            "type": {
+              "name": "VersionNumber",
+              "namespace": "_types"
+            }
+          }
+        },
+        {
+          "name": "modified_date_millis",
+          "required": false,
+          "type": {
+            "kind": "instance_of",
+            "generics": [
+              {
+                "kind": "instance_of",
+                "type": {
+                  "name": "UnitMillis",
+                  "namespace": "_types"
+                }
+              }
+            ],
+            "type": {
+              "name": "EpochTime",
+              "namespace": "_types"
+            }
+          }
+        },
+        {
+          "name": "modified_date",
+          "required": false,
+          "type": {
+            "kind": "instance_of",
+            "generics": [
+              {
+                "kind": "instance_of",
+                "type": {
+                  "name": "UnitMillis",
+                  "namespace": "_types"
+                }
+              }
+            ],
+            "type": {
+              "name": "EpochTime",
+              "namespace": "_types"
+            }
+          }
+        },
+        {
+          "name": "database",
+          "required": true,
+          "type": {
+            "kind": "instance_of",
+            "type": {
+              "name": "DatabaseConfigurationFull",
+              "namespace": "ingest._types"
+            }
+          }
+        }
+      ],
+      "specLocation": "ingest/get_ip_location_database/GetIpLocationDatabaseResponse.ts#L28-L34"
+    },
+    {
+      "kind": "request",
+      "attachedBehaviors": [
+        "CommonQueryParameters"
+      ],
+      "body": {
+        "kind": "no_body"
+      },
+      "description": "Returns information about one or more IP location database configurations.",
+      "inherits": {
+        "type": {
+          "name": "RequestBase",
+          "namespace": "_types"
+        }
+      },
+      "name": {
+        "name": "Request",
+        "namespace": "ingest.get_ip_location_database"
+      },
+      "path": [
+        {
+          "description": "Comma-separated list of database configuration IDs to retrieve.\nWildcard (`*`) expressions are supported.\nTo get all database configurations, omit this parameter or use `*`.",
+          "name": "id",
+          "required": false,
+          "type": {
+            "kind": "instance_of",
+            "type": {
+              "name": "Ids",
+              "namespace": "_types"
+            }
+          }
+        }
+      ],
+      "query": [
+        {
+          "description": "Period to wait for a connection to the master node.\nIf no response is received before the timeout expires, the request fails and returns an error.",
+          "name": "master_timeout",
+          "required": false,
+          "serverDefault": "30s",
+          "type": {
+            "kind": "instance_of",
+            "type": {
+              "name": "Duration",
+              "namespace": "_types"
+            }
+          }
+        }
+      ],
+      "specLocation": "ingest/get_ip_location_database/GetIpLocationDatabaseRequest.ts#L24-L46"
+    },
+    {
+      "kind": "response",
+      "body": {
+        "kind": "properties",
+        "properties": [
+          {
+            "name": "databases",
+            "required": true,
+            "type": {
+              "kind": "array_of",
+              "value": {
+                "kind": "instance_of",
+                "type": {
+                  "name": "DatabaseConfigurationMetadata",
+                  "namespace": "ingest.get_ip_location_database"
+                }
+              }
+            }
+          }
+        ]
+      },
+      "name": {
+        "name": "Response",
+        "namespace": "ingest.get_ip_location_database"
+      },
+      "specLocation": "ingest/get_ip_location_database/GetIpLocationDatabaseResponse.ts#L24-L26"
+    },
     {
       "kind": "request",
       "attachedBehaviors": [
@@ -143928,7 +147225,7 @@
       "body": {
         "kind": "no_body"
       },
-      "description": "Returns information about one or more ingest pipelines.\nThis API returns a local reference of the pipeline.",
+      "description": "Get pipelines.\nGet information about one or more ingest pipelines.\nThis API returns a local reference of the pipeline.",
       "inherits": {
         "type": {
           "name": "RequestBase",
@@ -143981,7 +147278,7 @@
           }
         }
       ],
-      "specLocation": "ingest/get_pipeline/GetPipelineRequest.ts#L24-L50"
+      "specLocation": "ingest/get_pipeline/GetPipelineRequest.ts#L24-L52"
     },
     {
       "kind": "response",
@@ -144020,7 +147317,7 @@
       "body": {
         "kind": "no_body"
       },
-      "description": "Extracts structured fields out of a single text field within a document.\nYou choose which field to extract matched fields from, as well as the grok pattern you expect will match.\nA grok pattern is like a regular expression that supports aliased expressions that can be reused.",
+      "description": "Run a grok processor.\nExtract structured fields out of a single text field within a document.\nYou must choose which field to extract matched fields from, as well as the grok pattern you expect will match.\nA grok pattern is like a regular expression that supports aliased expressions that can be reused.",
       "inherits": {
         "type": {
           "name": "RequestBase",
@@ -144033,7 +147330,7 @@
       },
       "path": [],
       "query": [],
-      "specLocation": "ingest/processor_grok/GrokProcessorPatternsRequest.ts#L22-L31"
+      "specLocation": "ingest/processor_grok/GrokProcessorPatternsRequest.ts#L22-L33"
     },
     {
       "kind": "response",
@@ -144104,7 +147401,7 @@
           }
         ]
       },
-      "description": "Returns information about one or more geoip database configurations.",
+      "description": "Create or update GeoIP database configurations.\nCreate or update IP geolocation database configurations.",
       "inherits": {
         "type": {
           "name": "RequestBase",
@@ -144157,7 +147454,7 @@
           }
         }
       ],
-      "specLocation": "ingest/put_geoip_database/PutGeoipDatabaseRequest.ts#L25-L57"
+      "specLocation": "ingest/put_geoip_database/PutGeoipDatabaseRequest.ts#L25-L58"
     },
     {
       "kind": "response",
@@ -144177,6 +147474,95 @@
       },
       "specLocation": "ingest/put_geoip_database/PutGeoipDatabaseResponse.ts#L22-L24"
     },
+    {
+      "kind": "request",
+      "attachedBehaviors": [
+        "CommonQueryParameters"
+      ],
+      "body": {
+        "kind": "value",
+        "codegenName": "configuration",
+        "value": {
+          "kind": "instance_of",
+          "type": {
+            "name": "DatabaseConfiguration",
+            "namespace": "ingest._types"
+          }
+        }
+      },
+      "description": "Returns information about one or more IP location database configurations.",
+      "inherits": {
+        "type": {
+          "name": "RequestBase",
+          "namespace": "_types"
+        }
+      },
+      "name": {
+        "name": "Request",
+        "namespace": "ingest.put_ip_location_database"
+      },
+      "path": [
+        {
+          "description": "ID of the database configuration to create or update.",
+          "name": "id",
+          "required": true,
+          "type": {
+            "kind": "instance_of",
+            "type": {
+              "name": "Id",
+              "namespace": "_types"
+            }
+          }
+        }
+      ],
+      "query": [
+        {
+          "description": "Period to wait for a connection to the master node.\nIf no response is received before the timeout expires, the request fails and returns an error.",
+          "name": "master_timeout",
+          "required": false,
+          "serverDefault": "30s",
+          "type": {
+            "kind": "instance_of",
+            "type": {
+              "name": "Duration",
+              "namespace": "_types"
+            }
+          }
+        },
+        {
+          "description": "Period to wait for a response. If no response is received before the timeout expires, the request fails and returns an error.",
+          "name": "timeout",
+          "required": false,
+          "serverDefault": "30s",
+          "type": {
+            "kind": "instance_of",
+            "type": {
+              "name": "Duration",
+              "namespace": "_types"
+            }
+          }
+        }
+      ],
+      "specLocation": "ingest/put_ip_location_database/PutIpLocationDatabaseRequest.ts#L25-L51"
+    },
+    {
+      "kind": "response",
+      "body": {
+        "kind": "value",
+        "value": {
+          "kind": "instance_of",
+          "type": {
+            "name": "AcknowledgedResponseBase",
+            "namespace": "_types"
+          }
+        }
+      },
+      "name": {
+        "name": "Response",
+        "namespace": "ingest.put_ip_location_database"
+      },
+      "specLocation": "ingest/put_ip_location_database/PutIpLocationDatabaseResponse.ts#L22-L24"
+    },
     {
       "kind": "request",
       "attachedBehaviors": [
@@ -144266,7 +147652,7 @@
           }
         ]
       },
-      "description": "Creates or updates an ingest pipeline.\nChanges made using this API take effect immediately.",
+      "description": "Create or update a pipeline.\nChanges made using this API take effect immediately.",
       "inherits": {
         "type": {
           "name": "RequestBase",
@@ -144331,7 +147717,7 @@
           }
         }
       ],
-      "specLocation": "ingest/put_pipeline/PutPipelineRequest.ts#L25-L83"
+      "specLocation": "ingest/put_pipeline/PutPipelineRequest.ts#L25-L84"
     },
     {
       "kind": "response",
@@ -144391,7 +147777,7 @@
           }
         }
       ],
-      "specLocation": "ingest/simulate/types.ts#L50-L64"
+      "specLocation": "ingest/simulate/types.ts#L62-L76"
     },
     {
       "kind": "interface",
@@ -144531,7 +147917,7 @@
           }
         }
       ],
-      "specLocation": "ingest/simulate/types.ts#L66-L96"
+      "specLocation": "ingest/simulate/types.ts#L78-L108"
     },
     {
       "kind": "interface",
@@ -144540,6 +147926,23 @@
         "namespace": "ingest.simulate"
       },
       "properties": [
+        {
+          "availability": {
+            "serverless": {},
+            "stack": {
+              "since": "8.16.0"
+            }
+          },
+          "name": "_redact",
+          "required": false,
+          "type": {
+            "kind": "instance_of",
+            "type": {
+              "name": "Redact",
+              "namespace": "ingest.simulate"
+            }
+          }
+        },
         {
           "name": "timestamp",
           "required": true,
@@ -144563,7 +147966,7 @@
           }
         }
       ],
-      "specLocation": "ingest/simulate/types.ts#L29-L32"
+      "specLocation": "ingest/simulate/types.ts#L29-L37"
     },
     {
       "kind": "interface",
@@ -144650,7 +148053,29 @@
           }
         }
       ],
-      "specLocation": "ingest/simulate/types.ts#L40-L48"
+      "specLocation": "ingest/simulate/types.ts#L52-L60"
+    },
+    {
+      "kind": "interface",
+      "name": {
+        "name": "Redact",
+        "namespace": "ingest.simulate"
+      },
+      "properties": [
+        {
+          "description": "indicates if document has been redacted",
+          "name": "_is_redacted",
+          "required": true,
+          "type": {
+            "kind": "instance_of",
+            "type": {
+              "name": "boolean",
+              "namespace": "_builtins"
+            }
+          }
+        }
+      ],
+      "specLocation": "ingest/simulate/types.ts#L39-L44"
     },
     {
       "kind": "request",
@@ -144689,7 +148114,7 @@
           }
         ]
       },
-      "description": "Executes an ingest pipeline against a set of provided documents.",
+      "description": "Simulate a pipeline.\nRun an ingest pipeline against a set of provided documents.\nYou can either specify an existing pipeline to use with the provided documents or supply a pipeline definition in the body of the request.",
       "inherits": {
         "type": {
           "name": "RequestBase",
@@ -144728,7 +148153,7 @@
           }
         }
       ],
-      "specLocation": "ingest/simulate/SimulatePipelineRequest.ts#L25-L57"
+      "specLocation": "ingest/simulate/SimulatePipelineRequest.ts#L25-L59"
     },
     {
       "kind": "response",
@@ -144801,7 +148226,7 @@
           }
         }
       ],
-      "specLocation": "ingest/simulate/types.ts#L34-L38"
+      "specLocation": "ingest/simulate/types.ts#L46-L50"
     },
     {
       "kind": "interface",
@@ -146199,7 +149624,7 @@
       "properties": [
         {
           "name": "details",
-          "required": true,
+          "required": false,
           "type": {
             "kind": "instance_of",
             "type": {
@@ -146241,9 +149666,38 @@
               "namespace": "_builtins"
             }
           }
+        },
+        {
+          "name": "resolve_during_rolling_upgrade",
+          "required": true,
+          "type": {
+            "kind": "instance_of",
+            "type": {
+              "name": "boolean",
+              "namespace": "_builtins"
+            }
+          }
+        },
+        {
+          "name": "_meta",
+          "required": false,
+          "type": {
+            "kind": "dictionary_of",
+            "key": {
+              "kind": "instance_of",
+              "type": {
+                "name": "string",
+                "namespace": "_builtins"
+              }
+            },
+            "singleKey": false,
+            "value": {
+              "kind": "user_defined_value"
+            }
+          }
         }
       ],
-      "specLocation": "migration/deprecations/types.ts#L29-L35"
+      "specLocation": "migration/deprecations/types.ts#L32-L40"
     },
     {
       "kind": "enum",
@@ -146267,7 +149721,7 @@
         "name": "DeprecationLevel",
         "namespace": "migration.deprecations"
       },
-      "specLocation": "migration/deprecations/types.ts#L20-L27"
+      "specLocation": "migration/deprecations/types.ts#L23-L30"
     },
     {
       "kind": "request",
@@ -146650,6 +150104,49 @@
       },
       "specLocation": "migration/post_feature_upgrade/PostFeatureUpgradeResponse.ts#L20-L25"
     },
+    {
+      "kind": "interface",
+      "name": {
+        "name": "AdaptiveAllocationsSettings",
+        "namespace": "ml._types"
+      },
+      "properties": [
+        {
+          "name": "enabled",
+          "required": true,
+          "type": {
+            "kind": "instance_of",
+            "type": {
+              "name": "boolean",
+              "namespace": "_builtins"
+            }
+          }
+        },
+        {
+          "name": "min_number_of_allocations",
+          "required": false,
+          "type": {
+            "kind": "instance_of",
+            "type": {
+              "name": "integer",
+              "namespace": "_types"
+            }
+          }
+        },
+        {
+          "name": "max_number_of_allocations",
+          "required": false,
+          "type": {
+            "kind": "instance_of",
+            "type": {
+              "name": "integer",
+              "namespace": "_types"
+            }
+          }
+        }
+      ],
+      "specLocation": "ml/_types/TrainedModel.ts#L109-L113"
+    },
     {
       "kind": "interface",
       "name": {
@@ -147004,8 +150501,8 @@
           "type": {
             "kind": "instance_of",
             "type": {
-              "name": "string",
-              "namespace": "_builtins"
+              "name": "ByteSize",
+              "namespace": "_types"
             }
           }
         }
@@ -147371,7 +150868,7 @@
       "properties": [
         {
           "name": "actual",
-          "required": true,
+          "required": false,
           "type": {
             "kind": "array_of",
             "value": {
@@ -147385,7 +150882,7 @@
         },
         {
           "name": "by_field_name",
-          "required": true,
+          "required": false,
           "type": {
             "kind": "instance_of",
             "type": {
@@ -147396,7 +150893,7 @@
         },
         {
           "name": "by_field_value",
-          "required": true,
+          "required": false,
           "type": {
             "kind": "instance_of",
             "type": {
@@ -147407,7 +150904,7 @@
         },
         {
           "name": "correlated_by_field_value",
-          "required": true,
+          "required": false,
           "type": {
             "kind": "instance_of",
             "type": {
@@ -147418,7 +150915,7 @@
         },
         {
           "name": "field_name",
-          "required": true,
+          "required": false,
           "type": {
             "kind": "instance_of",
             "type": {
@@ -147429,7 +150926,7 @@
         },
         {
           "name": "function",
-          "required": true,
+          "required": false,
           "type": {
             "kind": "instance_of",
             "type": {
@@ -147440,7 +150937,7 @@
         },
         {
           "name": "function_description",
-          "required": true,
+          "required": false,
           "type": {
             "kind": "instance_of",
             "type": {
@@ -147449,9 +150946,20 @@
             }
           }
         },
+        {
+          "name": "geo_results",
+          "required": false,
+          "type": {
+            "kind": "instance_of",
+            "type": {
+              "name": "GeoResults",
+              "namespace": "ml._types"
+            }
+          }
+        },
         {
           "name": "influencers",
-          "required": true,
+          "required": false,
           "type": {
             "kind": "array_of",
             "value": {
@@ -147465,7 +150973,7 @@
         },
         {
           "name": "over_field_name",
-          "required": true,
+          "required": false,
           "type": {
             "kind": "instance_of",
             "type": {
@@ -147476,7 +150984,7 @@
         },
         {
           "name": "over_field_value",
-          "required": true,
+          "required": false,
           "type": {
             "kind": "instance_of",
             "type": {
@@ -147487,7 +150995,7 @@
         },
         {
           "name": "partition_field_name",
-          "required": true,
+          "required": false,
           "type": {
             "kind": "instance_of",
             "type": {
@@ -147498,7 +151006,7 @@
         },
         {
           "name": "partition_field_value",
-          "required": true,
+          "required": false,
           "type": {
             "kind": "instance_of",
             "type": {
@@ -147520,7 +151028,7 @@
         },
         {
           "name": "typical",
-          "required": true,
+          "required": false,
           "type": {
             "kind": "array_of",
             "value": {
@@ -147533,7 +151041,7 @@
           }
         }
       ],
-      "specLocation": "ml/_types/Anomaly.ts#L123-L138"
+      "specLocation": "ml/_types/Anomaly.ts#L123-L139"
     },
     {
       "kind": "interface",
@@ -147663,7 +151171,7 @@
           }
         }
       ],
-      "specLocation": "ml/_types/Anomaly.ts#L156-L197"
+      "specLocation": "ml/_types/Anomaly.ts#L157-L198"
     },
     {
       "kind": "interface",
@@ -148191,6 +151699,8 @@
         },
         {
           "description": "The name or definition of the tokenizer to use after character filters are applied. This property is compulsory if `categorization_analyzer` is specified as an object. Machine learning provides a tokenizer called `ml_standard` that tokenizes in a way that has been determined to produce good categorization results on a variety of log file formats for logs in English. If you want to use that tokenizer but change the character or token filters, specify \"tokenizer\": \"ml_standard\" in your `categorization_analyzer`. Additionally, the `ml_classic` tokenizer is available, which tokenizes in the same way as the non-customizable tokenizer in old versions of the product (before 6.2). `ml_classic` was the default categorization tokenizer in versions 6.2 to 7.13, so if you need categorization identical to the default for jobs created in these versions, specify \"tokenizer\": \"ml_classic\" in your `categorization_analyzer`.",
+          "extDocId": "analysis-tokenizers",
+          "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/analysis-tokenizers.html",
           "name": "tokenizer",
           "required": false,
           "type": {
@@ -148202,7 +151712,7 @@
           }
         }
       ],
-      "specLocation": "ml/_types/Analysis.ts#L184-L197"
+      "specLocation": "ml/_types/Analysis.ts#L184-L198"
     },
     {
       "kind": "enum",
@@ -148218,7 +151728,7 @@
         "name": "CategorizationStatus",
         "namespace": "ml._types"
       },
-      "specLocation": "ml/_types/Model.ts#L83-L86"
+      "specLocation": "ml/_types/Model.ts#L84-L87"
     },
     {
       "kind": "interface",
@@ -148434,7 +151944,7 @@
           }
         }
       ],
-      "specLocation": "ml/_types/Datafeed.ts#L238-L251"
+      "specLocation": "ml/_types/Datafeed.ts#L251-L264"
     },
     {
       "kind": "enum",
@@ -148453,7 +151963,7 @@
         "name": "ChunkingMode",
         "namespace": "ml._types"
       },
-      "specLocation": "ml/_types/Datafeed.ts#L232-L236"
+      "specLocation": "ml/_types/Datafeed.ts#L245-L249"
     },
     {
       "kind": "interface",
@@ -148526,7 +152036,82 @@
           }
         }
       ],
-      "specLocation": "ml/_types/inference.ts#L93-L108"
+      "specLocation": "ml/_types/inference.ts#L118-L133"
+    },
+    {
+      "kind": "interface",
+      "name": {
+        "name": "CommonTokenizationConfig",
+        "namespace": "ml._types"
+      },
+      "properties": [
+        {
+          "description": "Should the tokenizer lower case the text",
+          "name": "do_lower_case",
+          "required": false,
+          "serverDefault": false,
+          "type": {
+            "kind": "instance_of",
+            "type": {
+              "name": "boolean",
+              "namespace": "_builtins"
+            }
+          }
+        },
+        {
+          "description": "Maximum input sequence length for the model",
+          "name": "max_sequence_length",
+          "required": false,
+          "serverDefault": 512,
+          "type": {
+            "kind": "instance_of",
+            "type": {
+              "name": "integer",
+              "namespace": "_types"
+            }
+          }
+        },
+        {
+          "description": "Tokenization spanning options. Special value of -1 indicates no spanning takes place",
+          "name": "span",
+          "required": false,
+          "serverDefault": -1,
+          "type": {
+            "kind": "instance_of",
+            "type": {
+              "name": "integer",
+              "namespace": "_types"
+            }
+          }
+        },
+        {
+          "description": "Should tokenization input be automatically truncated before sending to the model for inference",
+          "name": "truncate",
+          "required": false,
+          "serverDefault": "first",
+          "type": {
+            "kind": "instance_of",
+            "type": {
+              "name": "TokenizationTruncate",
+              "namespace": "ml._types"
+            }
+          }
+        },
+        {
+          "description": "Is tokenization completed with special tokens",
+          "name": "with_special_tokens",
+          "required": false,
+          "serverDefault": true,
+          "type": {
+            "kind": "instance_of",
+            "type": {
+              "name": "boolean",
+              "namespace": "_builtins"
+            }
+          }
+        }
+      ],
+      "specLocation": "ml/_types/inference.ts#L160-L186"
     },
     {
       "kind": "enum",
@@ -148968,6 +152553,8 @@
           }
         },
         {
+          "extDocId": "query-dsl",
+          "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/query-dsl.html",
           "name": "query",
           "required": true,
           "type": {
@@ -149056,7 +152643,7 @@
           }
         }
       ],
-      "specLocation": "ml/_types/Datafeed.ts#L36-L57"
+      "specLocation": "ml/_types/Datafeed.ts#L37-L61"
     },
     {
       "kind": "interface",
@@ -149311,7 +152898,7 @@
           }
         }
       ],
-      "specLocation": "ml/_types/Datafeed.ts#L59-L116"
+      "specLocation": "ml/_types/Datafeed.ts#L63-L120"
     },
     {
       "kind": "interface",
@@ -149357,7 +152944,7 @@
           }
         }
       ],
-      "specLocation": "ml/_types/Datafeed.ts#L197-L211"
+      "specLocation": "ml/_types/Datafeed.ts#L210-L224"
     },
     {
       "kind": "enum",
@@ -149379,7 +152966,7 @@
         "name": "DatafeedState",
         "namespace": "ml._types"
       },
-      "specLocation": "ml/_types/Datafeed.ts#L132-L137"
+      "specLocation": "ml/_types/Datafeed.ts#L136-L141"
     },
     {
       "kind": "interface",
@@ -149422,7 +153009,7 @@
           "type": {
             "kind": "instance_of",
             "type": {
-              "name": "DiscoveryNode",
+              "name": "DiscoveryNodeCompact",
               "namespace": "ml._types"
             }
           }
@@ -149442,7 +153029,7 @@
         {
           "description": "An object that provides statistical information about timing aspect of this datafeed.",
           "name": "timing_stats",
-          "required": true,
+          "required": false,
           "type": {
             "kind": "instance_of",
             "type": {
@@ -149464,7 +153051,7 @@
           }
         }
       ],
-      "specLocation": "ml/_types/Datafeed.ts#L139-L168"
+      "specLocation": "ml/_types/Datafeed.ts#L143-L172"
     },
     {
       "kind": "interface",
@@ -149506,6 +153093,17 @@
             }
           }
         },
+        {
+          "name": "exponential_average_calculation_context",
+          "required": false,
+          "type": {
+            "kind": "instance_of",
+            "type": {
+              "name": "ExponentialAverageCalculationContext",
+              "namespace": "ml._types"
+            }
+          }
+        },
         {
           "description": "Identifier for the anomaly detection job.",
           "name": "job_id",
@@ -149573,7 +153171,7 @@
           }
         }
       ],
-      "specLocation": "ml/_types/Datafeed.ts#L170-L195"
+      "specLocation": "ml/_types/Datafeed.ts#L174-L202"
     },
     {
       "kind": "interface",
@@ -149808,7 +153406,7 @@
           }
         }
       ],
-      "specLocation": "ml/_types/DataframeAnalytics.ts#L133-L212"
+      "specLocation": "ml/_types/DataframeAnalytics.ts#L134-L213"
     },
     {
       "kind": "interface",
@@ -149849,7 +153447,7 @@
         }
       ],
       "shortcutProperty": "includes",
-      "specLocation": "ml/_types/DataframeAnalytics.ts#L237-L243"
+      "specLocation": "ml/_types/DataframeAnalytics.ts#L238-L244"
     },
     {
       "kind": "interface",
@@ -149889,7 +153487,7 @@
           }
         }
       ],
-      "specLocation": "ml/_types/DataframeAnalytics.ts#L226-L235"
+      "specLocation": "ml/_types/DataframeAnalytics.ts#L227-L236"
     },
     {
       "kind": "interface",
@@ -149941,7 +153539,7 @@
           }
         }
       ],
-      "specLocation": "ml/_types/DataframeAnalytics.ts#L83-L100",
+      "specLocation": "ml/_types/DataframeAnalytics.ts#L84-L101",
       "variants": {
         "kind": "container"
       }
@@ -150014,7 +153612,7 @@
           }
         }
       ],
-      "specLocation": "ml/_types/DataframeAnalytics.ts#L245-L257",
+      "specLocation": "ml/_types/DataframeAnalytics.ts#L246-L258",
       "variants": {
         "kind": "container"
       }
@@ -150073,7 +153671,7 @@
           }
         }
       ],
-      "specLocation": "ml/_types/DataframeAnalytics.ts#L259-L266"
+      "specLocation": "ml/_types/DataframeAnalytics.ts#L260-L267"
     },
     {
       "kind": "interface",
@@ -150098,7 +153696,7 @@
           }
         }
       ],
-      "specLocation": "ml/_types/DataframeAnalytics.ts#L268-L271"
+      "specLocation": "ml/_types/DataframeAnalytics.ts#L269-L272"
     },
     {
       "kind": "interface",
@@ -150182,7 +153780,7 @@
           }
         }
       ],
-      "specLocation": "ml/_types/DataframeAnalytics.ts#L273-L285"
+      "specLocation": "ml/_types/DataframeAnalytics.ts#L274-L286"
     },
     {
       "kind": "interface",
@@ -150216,7 +153814,7 @@
           }
         }
       ],
-      "specLocation": "ml/_types/DataframeAnalytics.ts#L287-L292"
+      "specLocation": "ml/_types/DataframeAnalytics.ts#L288-L293"
     },
     {
       "kind": "interface",
@@ -150281,7 +153879,7 @@
           }
         }
       ],
-      "specLocation": "ml/_types/DataframeAnalytics.ts#L294-L303"
+      "specLocation": "ml/_types/DataframeAnalytics.ts#L295-L304"
     },
     {
       "kind": "interface",
@@ -150367,7 +153965,7 @@
           }
         }
       ],
-      "specLocation": "ml/_types/DataframeAnalytics.ts#L102-L131"
+      "specLocation": "ml/_types/DataframeAnalytics.ts#L103-L132"
     },
     {
       "kind": "interface",
@@ -150408,7 +154006,7 @@
           }
         }
       ],
-      "specLocation": "ml/_types/DataframeAnalytics.ts#L214-L224"
+      "specLocation": "ml/_types/DataframeAnalytics.ts#L215-L225"
     },
     {
       "kind": "interface",
@@ -150520,7 +154118,7 @@
           }
         }
       ],
-      "specLocation": "ml/_types/DataframeAnalytics.ts#L323-L343"
+      "specLocation": "ml/_types/DataframeAnalytics.ts#L325-L345"
     },
     {
       "kind": "interface",
@@ -150603,7 +154201,7 @@
           }
         }
       ],
-      "specLocation": "ml/_types/DataframeAnalytics.ts#L76-L81"
+      "specLocation": "ml/_types/DataframeAnalytics.ts#L77-L82"
     },
     {
       "kind": "interface",
@@ -150688,7 +154286,7 @@
           }
         }
       ],
-      "specLocation": "ml/_types/DataframeAnalytics.ts#L54-L67"
+      "specLocation": "ml/_types/DataframeAnalytics.ts#L55-L68"
     },
     {
       "kind": "interface",
@@ -150722,7 +154320,7 @@
           }
         }
       ],
-      "specLocation": "ml/_types/DataframeAnalytics.ts#L69-L74"
+      "specLocation": "ml/_types/DataframeAnalytics.ts#L70-L75"
     },
     {
       "kind": "interface",
@@ -150782,7 +154380,7 @@
           }
         }
       ],
-      "specLocation": "ml/_types/DataframeAnalytics.ts#L38-L52"
+      "specLocation": "ml/_types/DataframeAnalytics.ts#L39-L53"
     },
     {
       "kind": "interface",
@@ -150828,7 +154426,7 @@
           }
         }
       ],
-      "specLocation": "ml/_types/DataframeAnalytics.ts#L372-L380",
+      "specLocation": "ml/_types/DataframeAnalytics.ts#L374-L382",
       "variants": {
         "kind": "container"
       }
@@ -150877,7 +154475,7 @@
           }
         }
       ],
-      "specLocation": "ml/_types/DataframeAnalytics.ts#L363-L370"
+      "specLocation": "ml/_types/DataframeAnalytics.ts#L365-L372"
     },
     {
       "kind": "interface",
@@ -150956,7 +154554,7 @@
           }
         }
       ],
-      "specLocation": "ml/_types/DataframeAnalytics.ts#L382-L401"
+      "specLocation": "ml/_types/DataframeAnalytics.ts#L384-L403"
     },
     {
       "kind": "interface",
@@ -151023,7 +154621,7 @@
           }
         }
       ],
-      "specLocation": "ml/_types/DataframeAnalytics.ts#L352-L361"
+      "specLocation": "ml/_types/DataframeAnalytics.ts#L354-L363"
     },
     {
       "kind": "interface",
@@ -151078,7 +154676,7 @@
           }
         }
       ],
-      "specLocation": "ml/_types/DataframeAnalytics.ts#L403-L416"
+      "specLocation": "ml/_types/DataframeAnalytics.ts#L405-L418"
     },
     {
       "kind": "interface",
@@ -151112,7 +154710,7 @@
           }
         }
       ],
-      "specLocation": "ml/_types/DataframeAnalytics.ts#L345-L350"
+      "specLocation": "ml/_types/DataframeAnalytics.ts#L347-L352"
     },
     {
       "kind": "interface",
@@ -151262,9 +154860,20 @@
               "namespace": "_types"
             }
           }
+        },
+        {
+          "name": "_meta",
+          "required": false,
+          "type": {
+            "kind": "instance_of",
+            "type": {
+              "name": "Metadata",
+              "namespace": "_types"
+            }
+          }
         }
       ],
-      "specLocation": "ml/_types/DataframeAnalytics.ts#L305-L321"
+      "specLocation": "ml/_types/DataframeAnalytics.ts#L306-L323"
     },
     {
       "kind": "interface",
@@ -151824,7 +155433,7 @@
           }
         }
       ],
-      "specLocation": "ml/_types/Datafeed.ts#L118-L129"
+      "specLocation": "ml/_types/Datafeed.ts#L122-L133"
     },
     {
       "kind": "enum",
@@ -151846,29 +155455,7 @@
         "name": "DeploymentAllocationState",
         "namespace": "ml._types"
       },
-      "specLocation": "ml/_types/TrainedModel.ts#L288-L301"
-    },
-    {
-      "kind": "enum",
-      "members": [
-        {
-          "name": "starting"
-        },
-        {
-          "name": "started"
-        },
-        {
-          "name": "stopping"
-        },
-        {
-          "name": "failed"
-        }
-      ],
-      "name": {
-        "name": "DeploymentAssignmentState",
-        "namespace": "ml._types"
-      },
-      "specLocation": "ml/_types/TrainedModel.ts#L303-L308"
+      "specLocation": "ml/_types/TrainedModel.ts#L319-L332"
     },
     {
       "kind": "enum",
@@ -151884,13 +155471,17 @@
         {
           "description": "The deployment is preparing to stop and deallocate the model from the relevant nodes.",
           "name": "stopping"
+        },
+        {
+          "description": "The deployment is on a failed state and must be re-deployed.",
+          "name": "failed"
         }
       ],
       "name": {
-        "name": "DeploymentState",
+        "name": "DeploymentAssignmentState",
         "namespace": "ml._types"
       },
-      "specLocation": "ml/_types/TrainedModel.ts#L273-L286"
+      "specLocation": "ml/_types/TrainedModel.ts#L334-L351"
     },
     {
       "kind": "interface",
@@ -152250,11 +155841,131 @@
     },
     {
       "kind": "interface",
+      "name": {
+        "name": "DetectorUpdate",
+        "namespace": "ml._types"
+      },
+      "properties": [
+        {
+          "description": "A unique identifier for the detector.\nThis identifier is based on the order of the detectors in the `analysis_config`, starting at zero.",
+          "name": "detector_index",
+          "required": true,
+          "type": {
+            "kind": "instance_of",
+            "type": {
+              "name": "integer",
+              "namespace": "_types"
+            }
+          }
+        },
+        {
+          "description": "A description of the detector.",
+          "name": "description",
+          "required": false,
+          "type": {
+            "kind": "instance_of",
+            "type": {
+              "name": "string",
+              "namespace": "_builtins"
+            }
+          }
+        },
+        {
+          "description": "An array of custom rule objects, which enable you to customize the way detectors operate.\nFor example, a rule may dictate to the detector conditions under which results should be skipped.\nKibana refers to custom rules as job rules.",
+          "name": "custom_rules",
+          "required": false,
+          "type": {
+            "kind": "array_of",
+            "value": {
+              "kind": "instance_of",
+              "type": {
+                "name": "DetectionRule",
+                "namespace": "ml._types"
+              }
+            }
+          }
+        }
+      ],
+      "specLocation": "ml/_types/Detector.ts#L127-L143"
+    },
+    {
+      "kind": "type_alias",
       "name": {
         "name": "DiscoveryNode",
         "namespace": "ml._types"
       },
+      "specLocation": "ml/_types/DiscoveryNode.ts#L25-L25",
+      "type": {
+        "kind": "dictionary_of",
+        "key": {
+          "kind": "instance_of",
+          "type": {
+            "name": "Id",
+            "namespace": "_types"
+          }
+        },
+        "singleKey": true,
+        "value": {
+          "kind": "instance_of",
+          "type": {
+            "name": "DiscoveryNodeContent",
+            "namespace": "ml._types"
+          }
+        }
+      }
+    },
+    {
+      "kind": "interface",
+      "description": "Alternative representation of DiscoveryNode used in ml.get_job_stats and ml.get_datafeed_stats",
+      "name": {
+        "name": "DiscoveryNodeCompact",
+        "namespace": "ml._types"
+      },
       "properties": [
+        {
+          "name": "name",
+          "required": true,
+          "type": {
+            "kind": "instance_of",
+            "type": {
+              "name": "Name",
+              "namespace": "_types"
+            }
+          }
+        },
+        {
+          "name": "ephemeral_id",
+          "required": true,
+          "type": {
+            "kind": "instance_of",
+            "type": {
+              "name": "Id",
+              "namespace": "_types"
+            }
+          }
+        },
+        {
+          "name": "id",
+          "required": true,
+          "type": {
+            "kind": "instance_of",
+            "type": {
+              "name": "Id",
+              "namespace": "_types"
+            }
+          }
+        },
+        {
+          "name": "transport_address",
+          "required": true,
+          "type": {
+            "kind": "instance_of",
+            "type": {
+              "name": "TransportAddress",
+              "namespace": "_types"
+            }
+          }
+        },
         {
           "name": "attributes",
           "required": true,
@@ -152276,6 +155987,27 @@
               }
             }
           }
+        }
+      ],
+      "specLocation": "ml/_types/DiscoveryNode.ts#L39-L48"
+    },
+    {
+      "kind": "interface",
+      "name": {
+        "name": "DiscoveryNodeContent",
+        "namespace": "ml._types"
+      },
+      "properties": [
+        {
+          "name": "name",
+          "required": false,
+          "type": {
+            "kind": "instance_of",
+            "type": {
+              "name": "Name",
+              "namespace": "_types"
+            }
+          }
         },
         {
           "name": "ephemeral_id",
@@ -152289,40 +156021,98 @@
           }
         },
         {
-          "name": "id",
+          "name": "transport_address",
           "required": true,
           "type": {
             "kind": "instance_of",
             "type": {
-              "name": "Id",
+              "name": "TransportAddress",
               "namespace": "_types"
             }
           }
         },
         {
-          "name": "name",
+          "name": "external_id",
           "required": true,
           "type": {
             "kind": "instance_of",
             "type": {
-              "name": "Name",
+              "name": "string",
+              "namespace": "_builtins"
+            }
+          }
+        },
+        {
+          "name": "attributes",
+          "required": true,
+          "type": {
+            "kind": "dictionary_of",
+            "key": {
+              "kind": "instance_of",
+              "type": {
+                "name": "string",
+                "namespace": "_builtins"
+              }
+            },
+            "singleKey": false,
+            "value": {
+              "kind": "instance_of",
+              "type": {
+                "name": "string",
+                "namespace": "_builtins"
+              }
+            }
+          }
+        },
+        {
+          "name": "roles",
+          "required": true,
+          "type": {
+            "kind": "array_of",
+            "value": {
+              "kind": "instance_of",
+              "type": {
+                "name": "string",
+                "namespace": "_builtins"
+              }
+            }
+          }
+        },
+        {
+          "name": "version",
+          "required": true,
+          "type": {
+            "kind": "instance_of",
+            "type": {
+              "name": "VersionString",
               "namespace": "_types"
             }
           }
         },
         {
-          "name": "transport_address",
+          "name": "min_index_version",
           "required": true,
           "type": {
             "kind": "instance_of",
             "type": {
-              "name": "TransportAddress",
+              "name": "integer",
+              "namespace": "_types"
+            }
+          }
+        },
+        {
+          "name": "max_index_version",
+          "required": true,
+          "type": {
+            "kind": "instance_of",
+            "type": {
+              "name": "integer",
               "namespace": "_types"
             }
           }
         }
       ],
-      "specLocation": "ml/_types/DiscoveryNode.ts#L24-L30"
+      "specLocation": "ml/_types/DiscoveryNode.ts#L27-L37"
     },
     {
       "kind": "enum",
@@ -152344,7 +156134,92 @@
         "name": "ExcludeFrequent",
         "namespace": "ml._types"
       },
-      "specLocation": "ml/_types/Detector.ts#L127-L132"
+      "specLocation": "ml/_types/Detector.ts#L145-L150"
+    },
+    {
+      "kind": "interface",
+      "name": {
+        "name": "ExponentialAverageCalculationContext",
+        "namespace": "ml._types"
+      },
+      "properties": [
+        {
+          "name": "incremental_metric_value_ms",
+          "required": true,
+          "type": {
+            "kind": "instance_of",
+            "generics": [
+              {
+                "kind": "instance_of",
+                "type": {
+                  "name": "UnitFloatMillis",
+                  "namespace": "_types"
+                }
+              }
+            ],
+            "type": {
+              "name": "DurationValue",
+              "namespace": "_types"
+            }
+          }
+        },
+        {
+          "name": "latest_timestamp",
+          "required": false,
+          "type": {
+            "kind": "instance_of",
+            "generics": [
+              {
+                "kind": "instance_of",
+                "type": {
+                  "name": "UnitMillis",
+                  "namespace": "_types"
+                }
+              }
+            ],
+            "type": {
+              "name": "EpochTime",
+              "namespace": "_types"
+            }
+          }
+        },
+        {
+          "name": "previous_exponential_average_ms",
+          "required": false,
+          "type": {
+            "kind": "instance_of",
+            "generics": [
+              {
+                "kind": "instance_of",
+                "type": {
+                  "name": "UnitFloatMillis",
+                  "namespace": "_types"
+                }
+              }
+            ],
+            "type": {
+              "name": "DurationValue",
+              "namespace": "_types"
+            }
+          }
+        }
+      ],
+      "specLocation": "ml/_types/Datafeed.ts#L204-L208"
+    },
+    {
+      "kind": "type_alias",
+      "name": {
+        "name": "FeatureExtractor",
+        "namespace": "ml._types"
+      },
+      "specLocation": "ml/_types/inference.ts#L93-L96",
+      "type": {
+        "kind": "instance_of",
+        "type": {
+          "name": "QueryFeatureExtractor",
+          "namespace": "ml._types"
+        }
+      }
     },
     {
       "kind": "interface",
@@ -152401,9 +156276,20 @@
               "namespace": "_builtins"
             }
           }
+        },
+        {
+          "name": "vocabulary",
+          "required": true,
+          "type": {
+            "kind": "instance_of",
+            "type": {
+              "name": "Vocabulary",
+              "namespace": "ml._types"
+            }
+          }
         }
       ],
-      "specLocation": "ml/_types/inference.ts#L266-L280"
+      "specLocation": "ml/_types/inference.ts#L284-L299"
     },
     {
       "kind": "interface",
@@ -152449,7 +156335,7 @@
           }
         }
       ],
-      "specLocation": "ml/_types/inference.ts#L411-L418"
+      "specLocation": "ml/_types/inference.ts#L430-L437"
     },
     {
       "kind": "interface",
@@ -152561,7 +156447,7 @@
         {
           "description": "The actual value for the bucket formatted as a `geo_point`.",
           "name": "actual_point",
-          "required": true,
+          "required": false,
           "type": {
             "kind": "instance_of",
             "type": {
@@ -152573,7 +156459,7 @@
         {
           "description": "The typical value for the bucket formatted as a `geo_point`.",
           "name": "typical_point",
-          "required": true,
+          "required": false,
           "type": {
             "kind": "instance_of",
             "type": {
@@ -152583,7 +156469,7 @@
           }
         }
       ],
-      "specLocation": "ml/_types/Anomaly.ts#L145-L154"
+      "specLocation": "ml/_types/Anomaly.ts#L146-L155"
     },
     {
       "kind": "interface",
@@ -152655,7 +156541,7 @@
           }
         }
       ],
-      "specLocation": "ml/_types/TrainedModel.ts#L216-L230"
+      "specLocation": "ml/_types/TrainedModel.ts#L262-L276"
     },
     {
       "kind": "interface",
@@ -152833,7 +156719,7 @@
           }
         }
       ],
-      "specLocation": "ml/_types/DataframeAnalytics.ts#L418-L524"
+      "specLocation": "ml/_types/DataframeAnalytics.ts#L420-L526"
     },
     {
       "kind": "enum",
@@ -152951,6 +156837,17 @@
             }
           }
         },
+        {
+          "name": "learning_to_rank",
+          "required": false,
+          "type": {
+            "kind": "instance_of",
+            "type": {
+              "name": "LearningToRankConfig",
+              "namespace": "ml._types"
+            }
+          }
+        },
         {
           "availability": {
             "serverless": {},
@@ -153042,7 +156939,7 @@
           }
         }
       ],
-      "specLocation": "ml/_types/inference.ts#L23-L80",
+      "specLocation": "ml/_types/inference.ts#L26-L85",
       "variants": {
         "kind": "container"
       }
@@ -153175,7 +157072,7 @@
           }
         }
       ],
-      "specLocation": "ml/_types/inference.ts#L296-L318",
+      "specLocation": "ml/_types/inference.ts#L315-L337",
       "variants": {
         "kind": "container"
       }
@@ -153320,7 +157217,7 @@
           }
         }
       ],
-      "specLocation": "ml/_types/inference.ts#L459-L507"
+      "specLocation": "ml/_types/inference.ts#L478-L526"
     },
     {
       "kind": "interface",
@@ -153355,7 +157252,7 @@
           }
         }
       ],
-      "specLocation": "ml/_types/Anomaly.ts#L140-L143"
+      "specLocation": "ml/_types/Anomaly.ts#L141-L144"
     },
     {
       "kind": "interface",
@@ -154326,7 +158223,7 @@
           "type": {
             "kind": "instance_of",
             "type": {
-              "name": "DiscoveryNode",
+              "name": "DiscoveryNodeCompact",
               "namespace": "ml._types"
             }
           }
@@ -154534,6 +158431,70 @@
       ],
       "specLocation": "ml/_types/Job.ts#L332-L341"
     },
+    {
+      "kind": "interface",
+      "name": {
+        "name": "LearningToRankConfig",
+        "namespace": "ml._types"
+      },
+      "properties": [
+        {
+          "name": "default_params",
+          "required": false,
+          "type": {
+            "kind": "dictionary_of",
+            "key": {
+              "kind": "instance_of",
+              "type": {
+                "name": "string",
+                "namespace": "_builtins"
+              }
+            },
+            "singleKey": false,
+            "value": {
+              "kind": "user_defined_value"
+            }
+          }
+        },
+        {
+          "name": "feature_extractors",
+          "required": false,
+          "type": {
+            "kind": "array_of",
+            "value": {
+              "kind": "dictionary_of",
+              "key": {
+                "kind": "instance_of",
+                "type": {
+                  "name": "string",
+                  "namespace": "_builtins"
+                }
+              },
+              "singleKey": false,
+              "value": {
+                "kind": "instance_of",
+                "type": {
+                  "name": "FeatureExtractor",
+                  "namespace": "ml._types"
+                }
+              }
+            }
+          }
+        },
+        {
+          "name": "num_top_feature_importance_values",
+          "required": true,
+          "type": {
+            "kind": "instance_of",
+            "type": {
+              "name": "integer",
+              "namespace": "_types"
+            }
+          }
+        }
+      ],
+      "specLocation": "ml/_types/inference.ts#L87-L91"
+    },
     {
       "kind": "enum",
       "members": [
@@ -154551,7 +158512,190 @@
         "name": "MemoryStatus",
         "namespace": "ml._types"
       },
-      "specLocation": "ml/_types/Model.ts#L88-L92"
+      "specLocation": "ml/_types/Model.ts#L89-L93"
+    },
+    {
+      "kind": "interface",
+      "name": {
+        "name": "ModelPackageConfig",
+        "namespace": "ml._types"
+      },
+      "properties": [
+        {
+          "name": "create_time",
+          "required": false,
+          "type": {
+            "kind": "instance_of",
+            "generics": [
+              {
+                "kind": "instance_of",
+                "type": {
+                  "name": "UnitMillis",
+                  "namespace": "_types"
+                }
+              }
+            ],
+            "type": {
+              "name": "EpochTime",
+              "namespace": "_types"
+            }
+          }
+        },
+        {
+          "name": "description",
+          "required": false,
+          "type": {
+            "kind": "instance_of",
+            "type": {
+              "name": "string",
+              "namespace": "_builtins"
+            }
+          }
+        },
+        {
+          "name": "inference_config",
+          "required": false,
+          "type": {
+            "kind": "dictionary_of",
+            "key": {
+              "kind": "instance_of",
+              "type": {
+                "name": "string",
+                "namespace": "_builtins"
+              }
+            },
+            "singleKey": false,
+            "value": {
+              "kind": "user_defined_value"
+            }
+          }
+        },
+        {
+          "name": "metadata",
+          "required": false,
+          "type": {
+            "kind": "instance_of",
+            "type": {
+              "name": "Metadata",
+              "namespace": "_types"
+            }
+          }
+        },
+        {
+          "name": "minimum_version",
+          "required": false,
+          "type": {
+            "kind": "instance_of",
+            "type": {
+              "name": "string",
+              "namespace": "_builtins"
+            }
+          }
+        },
+        {
+          "name": "model_repository",
+          "required": false,
+          "type": {
+            "kind": "instance_of",
+            "type": {
+              "name": "string",
+              "namespace": "_builtins"
+            }
+          }
+        },
+        {
+          "name": "model_type",
+          "required": false,
+          "type": {
+            "kind": "instance_of",
+            "type": {
+              "name": "string",
+              "namespace": "_builtins"
+            }
+          }
+        },
+        {
+          "name": "packaged_model_id",
+          "required": true,
+          "type": {
+            "kind": "instance_of",
+            "type": {
+              "name": "Id",
+              "namespace": "_types"
+            }
+          }
+        },
+        {
+          "name": "platform_architecture",
+          "required": false,
+          "type": {
+            "kind": "instance_of",
+            "type": {
+              "name": "string",
+              "namespace": "_builtins"
+            }
+          }
+        },
+        {
+          "name": "prefix_strings",
+          "required": false,
+          "type": {
+            "kind": "instance_of",
+            "type": {
+              "name": "TrainedModelPrefixStrings",
+              "namespace": "ml._types"
+            }
+          }
+        },
+        {
+          "name": "size",
+          "required": false,
+          "type": {
+            "kind": "instance_of",
+            "type": {
+              "name": "ByteSize",
+              "namespace": "_types"
+            }
+          }
+        },
+        {
+          "name": "sha256",
+          "required": false,
+          "type": {
+            "kind": "instance_of",
+            "type": {
+              "name": "string",
+              "namespace": "_builtins"
+            }
+          }
+        },
+        {
+          "name": "tags",
+          "required": false,
+          "type": {
+            "kind": "array_of",
+            "value": {
+              "kind": "instance_of",
+              "type": {
+                "name": "string",
+                "namespace": "_builtins"
+              }
+            }
+          }
+        },
+        {
+          "name": "vocabulary_file",
+          "required": false,
+          "type": {
+            "kind": "instance_of",
+            "type": {
+              "name": "string",
+              "namespace": "_builtins"
+            }
+          }
+        }
+      ],
+      "specLocation": "ml/_types/TrainedModel.ts#L245-L260"
     },
     {
       "kind": "interface",
@@ -154697,6 +158841,17 @@
             }
           }
         },
+        {
+          "name": "output_memory_allocator_bytes",
+          "required": false,
+          "type": {
+            "kind": "instance_of",
+            "type": {
+              "name": "ByteSize",
+              "namespace": "_types"
+            }
+          }
+        },
         {
           "name": "peak_model_bytes",
           "required": false,
@@ -154852,7 +159007,7 @@
           }
         }
       ],
-      "specLocation": "ml/_types/Model.ts#L59-L81"
+      "specLocation": "ml/_types/Model.ts#L59-L82"
     },
     {
       "kind": "interface",
@@ -155111,7 +159266,7 @@
           }
         }
       ],
-      "specLocation": "ml/_types/inference.ts#L255-L264"
+      "specLocation": "ml/_types/inference.ts#L273-L282"
     },
     {
       "kind": "interface",
@@ -155145,87 +159300,33 @@
           }
         }
       ],
-      "specLocation": "ml/_types/inference.ts#L404-L409"
+      "specLocation": "ml/_types/inference.ts#L423-L428"
     },
     {
       "kind": "interface",
       "description": "BERT and MPNet tokenization configuration options",
+      "inherits": {
+        "type": {
+          "name": "CommonTokenizationConfig",
+          "namespace": "ml._types"
+        }
+      },
       "name": {
         "name": "NlpBertTokenizationConfig",
         "namespace": "ml._types"
       },
-      "properties": [
-        {
-          "description": "Should the tokenizer lower case the text",
-          "name": "do_lower_case",
-          "required": false,
-          "serverDefault": false,
-          "type": {
-            "kind": "instance_of",
-            "type": {
-              "name": "boolean",
-              "namespace": "_builtins"
-            }
-          }
-        },
-        {
-          "description": "Is tokenization completed with special tokens",
-          "name": "with_special_tokens",
-          "required": false,
-          "serverDefault": true,
-          "type": {
-            "kind": "instance_of",
-            "type": {
-              "name": "boolean",
-              "namespace": "_builtins"
-            }
-          }
-        },
-        {
-          "description": "Maximum input sequence length for the model",
-          "name": "max_sequence_length",
-          "required": false,
-          "serverDefault": 512,
-          "type": {
-            "kind": "instance_of",
-            "type": {
-              "name": "integer",
-              "namespace": "_types"
-            }
-          }
-        },
-        {
-          "description": "Should tokenization input be automatically truncated before sending to the model for inference",
-          "name": "truncate",
-          "required": false,
-          "serverDefault": "first",
-          "type": {
-            "kind": "instance_of",
-            "type": {
-              "name": "TokenizationTruncate",
-              "namespace": "ml._types"
-            }
-          }
-        },
-        {
-          "description": "Tokenization spanning options. Special value of -1 indicates no spanning takes place",
-          "name": "span",
-          "required": false,
-          "serverDefault": -1,
-          "type": {
-            "kind": "instance_of",
-            "type": {
-              "name": "integer",
-              "namespace": "_types"
-            }
-          }
-        }
-      ],
-      "specLocation": "ml/_types/inference.ts#L131-L158"
+      "properties": [],
+      "specLocation": "ml/_types/inference.ts#L188-L189"
     },
     {
       "kind": "interface",
       "description": "RoBERTa tokenization configuration options",
+      "inherits": {
+        "type": {
+          "name": "CommonTokenizationConfig",
+          "namespace": "ml._types"
+        }
+      },
       "name": {
         "name": "NlpRobertaTokenizationConfig",
         "namespace": "ml._types"
@@ -155243,61 +159344,9 @@
               "namespace": "_builtins"
             }
           }
-        },
-        {
-          "description": "Is tokenization completed with special tokens",
-          "name": "with_special_tokens",
-          "required": false,
-          "serverDefault": true,
-          "type": {
-            "kind": "instance_of",
-            "type": {
-              "name": "boolean",
-              "namespace": "_builtins"
-            }
-          }
-        },
-        {
-          "description": "Maximum input sequence length for the model",
-          "name": "max_sequence_length",
-          "required": false,
-          "serverDefault": 512,
-          "type": {
-            "kind": "instance_of",
-            "type": {
-              "name": "integer",
-              "namespace": "_types"
-            }
-          }
-        },
-        {
-          "description": "Should tokenization input be automatically truncated before sending to the model for inference",
-          "name": "truncate",
-          "required": false,
-          "serverDefault": "first",
-          "type": {
-            "kind": "instance_of",
-            "type": {
-              "name": "TokenizationTruncate",
-              "namespace": "ml._types"
-            }
-          }
-        },
-        {
-          "description": "Tokenization spanning options. Special value of -1 indicates no spanning takes place",
-          "name": "span",
-          "required": false,
-          "serverDefault": -1,
-          "type": {
-            "kind": "instance_of",
-            "type": {
-              "name": "integer",
-              "namespace": "_types"
-            }
-          }
         }
       ],
-      "specLocation": "ml/_types/inference.ts#L160-L187"
+      "specLocation": "ml/_types/inference.ts#L191-L198"
     },
     {
       "kind": "interface",
@@ -155331,7 +159380,7 @@
           }
         }
       ],
-      "specLocation": "ml/_types/inference.ts#L356-L361"
+      "specLocation": "ml/_types/inference.ts#L375-L380"
     },
     {
       "kind": "interface",
@@ -155416,7 +159465,7 @@
           }
         }
       ],
-      "specLocation": "ml/_types/DataframeAnalytics.ts#L526-L560"
+      "specLocation": "ml/_types/DataframeAnalytics.ts#L528-L562"
     },
     {
       "kind": "interface",
@@ -155521,7 +159570,7 @@
         {
           "description": "The start time of the bucket for which these results were calculated.",
           "name": "timestamp_string",
-          "required": true,
+          "required": false,
           "type": {
             "kind": "instance_of",
             "type": {
@@ -155645,7 +159694,7 @@
           }
         }
       ],
-      "specLocation": "ml/_types/inference.ts#L224-L231"
+      "specLocation": "ml/_types/inference.ts#L239-L246"
     },
     {
       "kind": "interface",
@@ -155679,7 +159728,7 @@
           }
         }
       ],
-      "specLocation": "ml/_types/inference.ts#L385-L390"
+      "specLocation": "ml/_types/inference.ts#L404-L409"
     },
     {
       "kind": "interface",
@@ -155721,7 +159770,7 @@
         "name": "PredictedValue",
         "namespace": "ml._types"
       },
-      "specLocation": "ml/_types/inference.ts#L457-L457",
+      "specLocation": "ml/_types/inference.ts#L476-L476",
       "type": {
         "kind": "union_of",
         "items": [
@@ -155745,6 +159794,50 @@
         ]
       }
     },
+    {
+      "kind": "interface",
+      "name": {
+        "name": "QueryFeatureExtractor",
+        "namespace": "ml._types"
+      },
+      "properties": [
+        {
+          "name": "default_score",
+          "required": false,
+          "type": {
+            "kind": "instance_of",
+            "type": {
+              "name": "float",
+              "namespace": "_types"
+            }
+          }
+        },
+        {
+          "name": "feature_name",
+          "required": true,
+          "type": {
+            "kind": "instance_of",
+            "type": {
+              "name": "string",
+              "namespace": "_builtins"
+            }
+          }
+        },
+        {
+          "name": "query",
+          "required": true,
+          "type": {
+            "kind": "instance_of",
+            "type": {
+              "name": "QueryContainer",
+              "namespace": "_types.query_dsl"
+            }
+          }
+        }
+      ],
+      "specLocation": "ml/_types/inference.ts#L98-L105",
+      "variantName": "query_extractor"
+    },
     {
       "kind": "interface",
       "description": "Question answering inference options",
@@ -155802,7 +159895,7 @@
           }
         }
       ],
-      "specLocation": "ml/_types/inference.ts#L282-L292"
+      "specLocation": "ml/_types/inference.ts#L301-L311"
     },
     {
       "kind": "interface",
@@ -155872,7 +159965,7 @@
           }
         }
       ],
-      "specLocation": "ml/_types/inference.ts#L420-L431"
+      "specLocation": "ml/_types/inference.ts#L439-L450"
     },
     {
       "kind": "interface",
@@ -155909,7 +160002,7 @@
           }
         }
       ],
-      "specLocation": "ml/_types/inference.ts#L82-L91"
+      "specLocation": "ml/_types/inference.ts#L107-L116"
     },
     {
       "kind": "enum",
@@ -155939,7 +160032,7 @@
         "name": "RoutingState",
         "namespace": "ml._types"
       },
-      "specLocation": "ml/_types/TrainedModel.ts#L350-L371"
+      "specLocation": "ml/_types/TrainedModel.ts#L396-L417"
     },
     {
       "kind": "enum",
@@ -156079,7 +160172,7 @@
           }
         }
       ],
-      "specLocation": "ml/_types/Datafeed.ts#L213-L230"
+      "specLocation": "ml/_types/Datafeed.ts#L226-L243"
     },
     {
       "kind": "enum",
@@ -156101,7 +160194,7 @@
         "name": "SnapshotUpgradeState",
         "namespace": "ml._types"
       },
-      "specLocation": "ml/_types/Model.ts#L94-L99"
+      "specLocation": "ml/_types/Model.ts#L95-L100"
     },
     {
       "kind": "interface",
@@ -156161,9 +160254,20 @@
               }
             }
           }
+        },
+        {
+          "name": "vocabulary",
+          "required": false,
+          "type": {
+            "kind": "instance_of",
+            "type": {
+              "name": "Vocabulary",
+              "namespace": "ml._types"
+            }
+          }
         }
       ],
-      "specLocation": "ml/_types/inference.ts#L189-L199"
+      "specLocation": "ml/_types/inference.ts#L202-L214"
     },
     {
       "kind": "interface",
@@ -156224,7 +160328,7 @@
           }
         }
       ],
-      "specLocation": "ml/_types/inference.ts#L363-L372"
+      "specLocation": "ml/_types/inference.ts#L382-L391"
     },
     {
       "kind": "interface",
@@ -156269,77 +160373,99 @@
               "namespace": "_builtins"
             }
           }
-        }
-      ],
-      "specLocation": "ml/_types/inference.ts#L237-L245"
-    },
-    {
-      "kind": "interface",
-      "name": {
-        "name": "TextEmbeddingInferenceUpdateOptions",
-        "namespace": "ml._types"
-      },
-      "properties": [
-        {
-          "name": "tokenization",
-          "required": false,
-          "type": {
-            "kind": "instance_of",
-            "type": {
-              "name": "NlpTokenizationUpdateOptions",
-              "namespace": "ml._types"
-            }
-          }
         },
         {
-          "description": "The field that is added to incoming documents to contain the inference prediction. Defaults to predicted_value.",
-          "name": "results_field",
-          "required": false,
-          "type": {
-            "kind": "instance_of",
-            "type": {
-              "name": "string",
-              "namespace": "_builtins"
-            }
-          }
-        }
-      ],
-      "specLocation": "ml/_types/inference.ts#L392-L396"
-    },
-    {
-      "kind": "interface",
-      "description": "Text expansion inference options",
-      "name": {
-        "name": "TextExpansionInferenceOptions",
-        "namespace": "ml._types"
-      },
-      "properties": [
-        {
-          "description": "The tokenization options",
-          "name": "tokenization",
-          "required": false,
+          "name": "vocabulary",
+          "required": true,
+          "type": {
+            "kind": "instance_of",
+            "type": {
+              "name": "Vocabulary",
+              "namespace": "ml._types"
+            }
+          }
+        }
+      ],
+      "specLocation": "ml/_types/inference.ts#L252-L262"
+    },
+    {
+      "kind": "interface",
+      "name": {
+        "name": "TextEmbeddingInferenceUpdateOptions",
+        "namespace": "ml._types"
+      },
+      "properties": [
+        {
+          "name": "tokenization",
+          "required": false,
+          "type": {
+            "kind": "instance_of",
+            "type": {
+              "name": "NlpTokenizationUpdateOptions",
+              "namespace": "ml._types"
+            }
+          }
+        },
+        {
+          "description": "The field that is added to incoming documents to contain the inference prediction. Defaults to predicted_value.",
+          "name": "results_field",
+          "required": false,
+          "type": {
+            "kind": "instance_of",
+            "type": {
+              "name": "string",
+              "namespace": "_builtins"
+            }
+          }
+        }
+      ],
+      "specLocation": "ml/_types/inference.ts#L411-L415"
+    },
+    {
+      "kind": "interface",
+      "description": "Text expansion inference options",
+      "name": {
+        "name": "TextExpansionInferenceOptions",
+        "namespace": "ml._types"
+      },
+      "properties": [
+        {
+          "description": "The tokenization options",
+          "name": "tokenization",
+          "required": false,
+          "type": {
+            "kind": "instance_of",
+            "type": {
+              "name": "TokenizationConfigContainer",
+              "namespace": "ml._types"
+            }
+          }
+        },
+        {
+          "description": "The field that is added to incoming documents to contain the inference prediction. Defaults to predicted_value.",
+          "name": "results_field",
+          "required": false,
+          "type": {
+            "kind": "instance_of",
+            "type": {
+              "name": "string",
+              "namespace": "_builtins"
+            }
+          }
+        },
+        {
+          "name": "vocabulary",
+          "required": true,
           "type": {
             "kind": "instance_of",
             "type": {
-              "name": "TokenizationConfigContainer",
+              "name": "Vocabulary",
               "namespace": "ml._types"
             }
           }
-        },
-        {
-          "description": "The field that is added to incoming documents to contain the inference prediction. Defaults to predicted_value.",
-          "name": "results_field",
-          "required": false,
-          "type": {
-            "kind": "instance_of",
-            "type": {
-              "name": "string",
-              "namespace": "_builtins"
-            }
-          }
         }
       ],
-      "specLocation": "ml/_types/inference.ts#L247-L253"
+      "specLocation": "ml/_types/inference.ts#L264-L271"
     },
     {
       "kind": "interface",
@@ -156372,7 +160498,7 @@
           }
         }
       ],
-      "specLocation": "ml/_types/inference.ts#L398-L402"
+      "specLocation": "ml/_types/inference.ts#L417-L421"
     },
     {
       "kind": "interface",
@@ -156424,7 +160550,7 @@
           }
         }
       ],
-      "specLocation": "ml/_types/DataframeAnalytics.ts#L562-L567"
+      "specLocation": "ml/_types/DataframeAnalytics.ts#L564-L569"
     },
     {
       "kind": "interface",
@@ -156446,6 +160572,18 @@
             }
           }
         },
+        {
+          "description": "Indicates BERT Japanese tokenization and its options",
+          "name": "bert_ja",
+          "required": false,
+          "type": {
+            "kind": "instance_of",
+            "type": {
+              "name": "NlpBertTokenizationConfig",
+              "namespace": "ml._types"
+            }
+          }
+        },
         {
           "availability": {
             "serverless": {},
@@ -156481,9 +160619,20 @@
               "namespace": "ml._types"
             }
           }
+        },
+        {
+          "name": "xlm_roberta",
+          "required": false,
+          "type": {
+            "kind": "instance_of",
+            "type": {
+              "name": "XlmRobertaTokenizationConfig",
+              "namespace": "ml._types"
+            }
+          }
         }
       ],
-      "specLocation": "ml/_types/inference.ts#L110-L129",
+      "specLocation": "ml/_types/inference.ts#L135-L158",
       "variants": {
         "kind": "container"
       }
@@ -156505,7 +160654,7 @@
         "name": "TokenizationTruncate",
         "namespace": "ml._types"
       },
-      "specLocation": "ml/_types/inference.ts#L350-L354"
+      "specLocation": "ml/_types/inference.ts#L369-L373"
     },
     {
       "kind": "interface",
@@ -156548,7 +160697,7 @@
           }
         }
       ],
-      "specLocation": "ml/_types/inference.ts#L440-L444"
+      "specLocation": "ml/_types/inference.ts#L459-L463"
     },
     {
       "kind": "interface",
@@ -156600,7 +160749,7 @@
           }
         }
       ],
-      "specLocation": "ml/_types/TrainedModel.ts#L232-L239"
+      "specLocation": "ml/_types/TrainedModel.ts#L278-L285"
     },
     {
       "kind": "interface",
@@ -156637,7 +160786,7 @@
           }
         }
       ],
-      "specLocation": "ml/_types/TrainedModel.ts#L241-L246"
+      "specLocation": "ml/_types/TrainedModel.ts#L287-L292"
     },
     {
       "kind": "interface",
@@ -156683,7 +160832,7 @@
           }
         }
       ],
-      "specLocation": "ml/_types/TrainedModel.ts#L248-L255"
+      "specLocation": "ml/_types/TrainedModel.ts#L294-L301"
     },
     {
       "kind": "interface",
@@ -156692,6 +160841,29 @@
         "namespace": "ml._types"
       },
       "properties": [
+        {
+          "name": "adaptive_allocations",
+          "required": false,
+          "type": {
+            "kind": "union_of",
+            "items": [
+              {
+                "kind": "instance_of",
+                "type": {
+                  "name": "AdaptiveAllocationsSettings",
+                  "namespace": "ml._types"
+                }
+              },
+              {
+                "kind": "instance_of",
+                "type": {
+                  "name": "null",
+                  "namespace": "_builtins"
+                }
+              }
+            ]
+          }
+        },
         {
           "description": "The overall assignment state.",
           "name": "assignment_state",
@@ -156715,6 +160887,17 @@
             }
           }
         },
+        {
+          "name": "reason",
+          "required": false,
+          "type": {
+            "kind": "instance_of",
+            "type": {
+              "name": "string",
+              "namespace": "_builtins"
+            }
+          }
+        },
         {
           "description": "The allocation state for each node.",
           "name": "routing_table",
@@ -156762,7 +160945,7 @@
           }
         }
       ],
-      "specLocation": "ml/_types/TrainedModel.ts#L402-L417"
+      "specLocation": "ml/_types/TrainedModel.ts#L448-L465"
     },
     {
       "kind": "interface",
@@ -156774,7 +160957,7 @@
         {
           "description": "The reason for the current state. It is usually populated only when the\n`routing_state` is `failed`.",
           "name": "reason",
-          "required": true,
+          "required": false,
           "type": {
             "kind": "instance_of",
             "type": {
@@ -156820,7 +161003,7 @@
           }
         }
       ],
-      "specLocation": "ml/_types/TrainedModel.ts#L373-L391"
+      "specLocation": "ml/_types/TrainedModel.ts#L419-L437"
     },
     {
       "kind": "interface",
@@ -156836,7 +161019,7 @@
           "type": {
             "kind": "instance_of",
             "type": {
-              "name": "integer",
+              "name": "ByteSize",
               "namespace": "_types"
             }
           }
@@ -156874,7 +161057,7 @@
           },
           "description": "The size of the trained model cache.",
           "name": "cache_size",
-          "required": true,
+          "required": false,
           "type": {
             "kind": "instance_of",
             "type": {
@@ -156906,6 +161089,28 @@
             }
           }
         },
+        {
+          "name": "per_deployment_memory_bytes",
+          "required": true,
+          "type": {
+            "kind": "instance_of",
+            "type": {
+              "name": "ByteSize",
+              "namespace": "_types"
+            }
+          }
+        },
+        {
+          "name": "per_allocation_memory_bytes",
+          "required": true,
+          "type": {
+            "kind": "instance_of",
+            "type": {
+              "name": "ByteSize",
+              "namespace": "_types"
+            }
+          }
+        },
         {
           "description": "Number of inference requests are allowed in the queue at a time.",
           "name": "queue_capacity",
@@ -156931,7 +161136,7 @@
           }
         }
       ],
-      "specLocation": "ml/_types/TrainedModel.ts#L315-L348"
+      "specLocation": "ml/_types/TrainedModel.ts#L358-L394"
     },
     {
       "kind": "interface",
@@ -157156,6 +161361,17 @@
             }
           }
         },
+        {
+          "name": "model_package",
+          "required": false,
+          "type": {
+            "kind": "instance_of",
+            "type": {
+              "name": "ModelPackageConfig",
+              "namespace": "ml._types"
+            }
+          }
+        },
         {
           "name": "location",
           "required": false,
@@ -157167,6 +161383,17 @@
             }
           }
         },
+        {
+          "name": "platform_architecture",
+          "required": false,
+          "type": {
+            "kind": "instance_of",
+            "type": {
+              "name": "string",
+              "namespace": "_builtins"
+            }
+          }
+        },
         {
           "name": "prefix_strings",
           "required": false,
@@ -157179,7 +161406,7 @@
           }
         }
       ],
-      "specLocation": "ml/_types/TrainedModel.ts#L164-L199"
+      "specLocation": "ml/_types/TrainedModel.ts#L191-L228"
     },
     {
       "kind": "interface",
@@ -157204,7 +161431,7 @@
           }
         }
       ],
-      "specLocation": "ml/_types/TrainedModel.ts#L201-L204"
+      "specLocation": "ml/_types/TrainedModel.ts#L230-L233"
     },
     {
       "kind": "interface",
@@ -157281,7 +161508,7 @@
           }
         }
       ],
-      "specLocation": "ml/_types/TrainedModel.ts#L206-L214"
+      "specLocation": "ml/_types/TrainedModel.ts#L235-L243"
     },
     {
       "kind": "interface",
@@ -157327,7 +161554,7 @@
           }
         }
       ],
-      "specLocation": "ml/_types/TrainedModel.ts#L393-L400"
+      "specLocation": "ml/_types/TrainedModel.ts#L439-L446"
     },
     {
       "kind": "interface",
@@ -157339,7 +161566,48 @@
         {
           "description": "The average time for each inference call to complete on this node.",
           "name": "average_inference_time_ms",
-          "required": true,
+          "required": false,
+          "type": {
+            "kind": "instance_of",
+            "generics": [
+              {
+                "kind": "instance_of",
+                "type": {
+                  "name": "UnitFloatMillis",
+                  "namespace": "_types"
+                }
+              }
+            ],
+            "type": {
+              "name": "DurationValue",
+              "namespace": "_types"
+            }
+          }
+        },
+        {
+          "name": "average_inference_time_ms_last_minute",
+          "required": false,
+          "type": {
+            "kind": "instance_of",
+            "generics": [
+              {
+                "kind": "instance_of",
+                "type": {
+                  "name": "UnitFloatMillis",
+                  "namespace": "_types"
+                }
+              }
+            ],
+            "type": {
+              "name": "DurationValue",
+              "namespace": "_types"
+            }
+          }
+        },
+        {
+          "description": "The average time for each inference call to complete on this node, excluding cache",
+          "name": "average_inference_time_ms_excluding_cache_hits",
+          "required": false,
           "type": {
             "kind": "instance_of",
             "generics": [
@@ -157360,7 +161628,7 @@
         {
           "description": "The number of errors when evaluating the trained model.",
           "name": "error_count",
-          "required": true,
+          "required": false,
           "type": {
             "kind": "instance_of",
             "type": {
@@ -157372,11 +161640,33 @@
         {
           "description": "The total number of inference calls made against this node for this model.",
           "name": "inference_count",
-          "required": true,
+          "required": false,
           "type": {
             "kind": "instance_of",
             "type": {
-              "name": "integer",
+              "name": "long",
+              "namespace": "_types"
+            }
+          }
+        },
+        {
+          "name": "inference_cache_hit_count",
+          "required": false,
+          "type": {
+            "kind": "instance_of",
+            "type": {
+              "name": "long",
+              "namespace": "_types"
+            }
+          }
+        },
+        {
+          "name": "inference_cache_hit_count_last_minute",
+          "required": false,
+          "type": {
+            "kind": "instance_of",
+            "type": {
+              "name": "long",
               "namespace": "_types"
             }
           }
@@ -157384,11 +161674,20 @@
         {
           "description": "The epoch time stamp of the last inference call for the model on this node.",
           "name": "last_access",
-          "required": true,
+          "required": false,
           "type": {
             "kind": "instance_of",
+            "generics": [
+              {
+                "kind": "instance_of",
+                "type": {
+                  "name": "UnitMillis",
+                  "namespace": "_types"
+                }
+              }
+            ],
             "type": {
-              "name": "long",
+              "name": "EpochTime",
               "namespace": "_types"
             }
           }
@@ -157399,7 +161698,7 @@
           },
           "description": "Information pertaining to the node.",
           "name": "node",
-          "required": true,
+          "required": false,
           "type": {
             "kind": "instance_of",
             "type": {
@@ -157411,7 +161710,7 @@
         {
           "description": "The number of allocations assigned to this node.",
           "name": "number_of_allocations",
-          "required": true,
+          "required": false,
           "type": {
             "kind": "instance_of",
             "type": {
@@ -157423,7 +161722,7 @@
         {
           "description": "The number of inference requests queued to be processed.",
           "name": "number_of_pending_requests",
-          "required": true,
+          "required": false,
           "type": {
             "kind": "instance_of",
             "type": {
@@ -157432,10 +161731,21 @@
             }
           }
         },
+        {
+          "name": "peak_throughput_per_minute",
+          "required": true,
+          "type": {
+            "kind": "instance_of",
+            "type": {
+              "name": "long",
+              "namespace": "_types"
+            }
+          }
+        },
         {
           "description": "The number of inference requests that were not processed because the queue was full.",
           "name": "rejection_execution_count",
-          "required": true,
+          "required": false,
           "type": {
             "kind": "instance_of",
             "type": {
@@ -157459,7 +161769,7 @@
         {
           "description": "The epoch timestamp when the allocation started.",
           "name": "start_time",
-          "required": true,
+          "required": false,
           "type": {
             "kind": "instance_of",
             "generics": [
@@ -157480,6 +161790,17 @@
         {
           "description": "The number of threads used by each allocation during inference.",
           "name": "threads_per_allocation",
+          "required": false,
+          "type": {
+            "kind": "instance_of",
+            "type": {
+              "name": "integer",
+              "namespace": "_types"
+            }
+          }
+        },
+        {
+          "name": "throughput_last_minute",
           "required": true,
           "type": {
             "kind": "instance_of",
@@ -157492,7 +161813,7 @@
         {
           "description": "The number of inference requests that timed out before being processed.",
           "name": "timeout_count",
-          "required": true,
+          "required": false,
           "type": {
             "kind": "instance_of",
             "type": {
@@ -157502,7 +161823,7 @@
           }
         }
       ],
-      "specLocation": "ml/_types/TrainedModel.ts#L132-L162"
+      "specLocation": "ml/_types/TrainedModel.ts#L144-L189"
     },
     {
       "kind": "interface",
@@ -157511,10 +161832,21 @@
         "namespace": "ml._types"
       },
       "properties": [
+        {
+          "name": "adaptive_allocations",
+          "required": false,
+          "type": {
+            "kind": "instance_of",
+            "type": {
+              "name": "AdaptiveAllocationsSettings",
+              "namespace": "ml._types"
+            }
+          }
+        },
         {
           "description": "The detailed allocation status for the deployment.",
           "name": "allocation_status",
-          "required": true,
+          "required": false,
           "type": {
             "kind": "instance_of",
             "type": {
@@ -157549,7 +161881,7 @@
         {
           "description": "The sum of `error_count` for all nodes in the deployment.",
           "name": "error_count",
-          "required": true,
+          "required": false,
           "type": {
             "kind": "instance_of",
             "type": {
@@ -157561,7 +161893,7 @@
         {
           "description": "The sum of `inference_count` for all nodes in the deployment.",
           "name": "inference_count",
-          "required": true,
+          "required": false,
           "type": {
             "kind": "instance_of",
             "type": {
@@ -157600,7 +161932,7 @@
         {
           "description": "The number of allocations requested.",
           "name": "number_of_allocations",
-          "required": true,
+          "required": false,
           "type": {
             "kind": "instance_of",
             "type": {
@@ -157609,10 +161941,32 @@
             }
           }
         },
+        {
+          "name": "peak_throughput_per_minute",
+          "required": true,
+          "type": {
+            "kind": "instance_of",
+            "type": {
+              "name": "long",
+              "namespace": "_types"
+            }
+          }
+        },
+        {
+          "name": "priority",
+          "required": true,
+          "type": {
+            "kind": "instance_of",
+            "type": {
+              "name": "TrainingPriority",
+              "namespace": "ml._types"
+            }
+          }
+        },
         {
           "description": "The number of inference requests that can be queued before new requests are rejected.",
           "name": "queue_capacity",
-          "required": true,
+          "required": false,
           "type": {
             "kind": "instance_of",
             "type": {
@@ -157624,7 +161978,7 @@
         {
           "description": "The sum of `rejected_execution_count` for all nodes in the deployment.\nIndividual nodes reject an inference request if the inference queue is full.\nThe queue size is controlled by the `queue_capacity` setting in the start\ntrained model deployment API.",
           "name": "rejected_execution_count",
-          "required": true,
+          "required": false,
           "type": {
             "kind": "instance_of",
             "type": {
@@ -157636,7 +161990,7 @@
         {
           "description": "The reason for the current deployment state. Usually only populated when\nthe model is not deployed to a node.",
           "name": "reason",
-          "required": true,
+          "required": false,
           "type": {
             "kind": "instance_of",
             "type": {
@@ -157669,11 +162023,11 @@
         {
           "description": "The overall state of the deployment.",
           "name": "state",
-          "required": true,
+          "required": false,
           "type": {
             "kind": "instance_of",
             "type": {
-              "name": "DeploymentState",
+              "name": "DeploymentAssignmentState",
               "namespace": "ml._types"
             }
           }
@@ -157681,7 +162035,7 @@
         {
           "description": "The number of threads used be each allocation during inference.",
           "name": "threads_per_allocation",
-          "required": true,
+          "required": false,
           "type": {
             "kind": "instance_of",
             "type": {
@@ -157693,7 +162047,7 @@
         {
           "description": "The sum of `timeout_count` for all nodes in the deployment.",
           "name": "timeout_count",
-          "required": true,
+          "required": false,
           "type": {
             "kind": "instance_of",
             "type": {
@@ -157703,7 +162057,7 @@
           }
         }
       ],
-      "specLocation": "ml/_types/TrainedModel.ts#L61-L101"
+      "specLocation": "ml/_types/TrainedModel.ts#L62-L107"
     },
     {
       "kind": "interface",
@@ -157768,7 +162122,7 @@
           }
         }
       ],
-      "specLocation": "ml/_types/inference.ts#L433-L439"
+      "specLocation": "ml/_types/inference.ts#L452-L458"
     },
     {
       "kind": "interface",
@@ -157800,7 +162154,7 @@
           }
         }
       ],
-      "specLocation": "ml/_types/inference.ts#L446-L449"
+      "specLocation": "ml/_types/inference.ts#L465-L468"
     },
     {
       "kind": "interface",
@@ -157846,7 +162200,7 @@
           }
         }
       ],
-      "specLocation": "ml/_types/inference.ts#L451-L455"
+      "specLocation": "ml/_types/inference.ts#L470-L474"
     },
     {
       "kind": "interface",
@@ -157927,7 +162281,7 @@
           }
         }
       ],
-      "specLocation": "ml/_types/TrainedModel.ts#L103-L123"
+      "specLocation": "ml/_types/TrainedModel.ts#L115-L135"
     },
     {
       "kind": "interface",
@@ -157948,7 +162302,7 @@
           }
         }
       ],
-      "specLocation": "ml/_types/TrainedModel.ts#L419-L421"
+      "specLocation": "ml/_types/TrainedModel.ts#L467-L469"
     },
     {
       "kind": "interface",
@@ -157969,7 +162323,7 @@
           }
         }
       ],
-      "specLocation": "ml/_types/TrainedModel.ts#L423-L425"
+      "specLocation": "ml/_types/TrainedModel.ts#L471-L473"
     },
     {
       "kind": "interface",
@@ -158003,7 +162357,7 @@
           }
         }
       ],
-      "specLocation": "ml/_types/TrainedModel.ts#L427-L436"
+      "specLocation": "ml/_types/TrainedModel.ts#L475-L484"
     },
     {
       "kind": "interface",
@@ -158037,7 +162391,7 @@
           }
         }
       ],
-      "specLocation": "ml/_types/TrainedModel.ts#L125-L130"
+      "specLocation": "ml/_types/TrainedModel.ts#L137-L142"
     },
     {
       "kind": "interface",
@@ -158128,7 +162482,7 @@
           }
         }
       ],
-      "specLocation": "ml/_types/TrainedModel.ts#L41-L59"
+      "specLocation": "ml/_types/TrainedModel.ts#L42-L60"
     },
     {
       "kind": "enum",
@@ -158150,7 +162504,7 @@
         "name": "TrainedModelType",
         "namespace": "ml._types"
       },
-      "specLocation": "ml/_types/TrainedModel.ts#L257-L271"
+      "specLocation": "ml/_types/TrainedModel.ts#L303-L317"
     },
     {
       "kind": "enum",
@@ -158166,7 +162520,7 @@
         "name": "TrainingPriority",
         "namespace": "ml._types"
       },
-      "specLocation": "ml/_types/TrainedModel.ts#L310-L313"
+      "specLocation": "ml/_types/TrainedModel.ts#L353-L356"
     },
     {
       "kind": "interface",
@@ -158252,7 +162606,7 @@
           }
         }
       ],
-      "specLocation": "ml/_types/DataframeAnalytics.ts#L569-L574"
+      "specLocation": "ml/_types/DataframeAnalytics.ts#L571-L576"
     },
     {
       "kind": "interface",
@@ -158273,7 +162627,22 @@
           }
         }
       ],
-      "specLocation": "ml/_types/inference.ts#L233-L235"
+      "specLocation": "ml/_types/inference.ts#L248-L250"
+    },
+    {
+      "kind": "interface",
+      "inherits": {
+        "type": {
+          "name": "CommonTokenizationConfig",
+          "namespace": "ml._types"
+        }
+      },
+      "name": {
+        "name": "XlmRobertaTokenizationConfig",
+        "namespace": "ml._types"
+      },
+      "properties": [],
+      "specLocation": "ml/_types/inference.ts#L200-L200"
     },
     {
       "kind": "interface",
@@ -158364,7 +162733,7 @@
           }
         }
       ],
-      "specLocation": "ml/_types/inference.ts#L201-L222"
+      "specLocation": "ml/_types/inference.ts#L216-L237"
     },
     {
       "kind": "interface",
@@ -158425,7 +162794,7 @@
           }
         }
       ],
-      "specLocation": "ml/_types/inference.ts#L374-L383"
+      "specLocation": "ml/_types/inference.ts#L393-L402"
     },
     {
       "kind": "request",
@@ -158461,7 +162830,7 @@
         }
       ],
       "query": [],
-      "specLocation": "ml/clear_trained_model_deployment_cache/MlClearTrainedModelDeploymentCacheRequest.ts#L23-L41"
+      "specLocation": "ml/clear_trained_model_deployment_cache/MlClearTrainedModelDeploymentCacheRequest.ts#L23-L42"
     },
     {
       "kind": "response",
@@ -158602,7 +162971,7 @@
           }
         }
       ],
-      "specLocation": "ml/close_job/MlCloseJobRequest.ts#L24-L77"
+      "specLocation": "ml/close_job/MlCloseJobRequest.ts#L24-L78"
     },
     {
       "kind": "response",
@@ -158662,7 +163031,7 @@
         }
       ],
       "query": [],
-      "specLocation": "ml/delete_calendar/MlDeleteCalendarRequest.ts#L23-L37"
+      "specLocation": "ml/delete_calendar/MlDeleteCalendarRequest.ts#L23-L38"
     },
     {
       "kind": "response",
@@ -158728,7 +163097,7 @@
         }
       ],
       "query": [],
-      "specLocation": "ml/delete_calendar_event/MlDeleteCalendarEventRequest.ts#L23-L42"
+      "specLocation": "ml/delete_calendar_event/MlDeleteCalendarEventRequest.ts#L23-L43"
     },
     {
       "kind": "response",
@@ -158794,7 +163163,7 @@
         }
       ],
       "query": [],
-      "specLocation": "ml/delete_calendar_job/MlDeleteCalendarJobRequest.ts#L23-L43"
+      "specLocation": "ml/delete_calendar_job/MlDeleteCalendarJobRequest.ts#L23-L44"
     },
     {
       "kind": "response",
@@ -158906,7 +163275,7 @@
           }
         }
       ],
-      "specLocation": "ml/delete_data_frame_analytics/MlDeleteDataFrameAnalyticsRequest.ts#L24-L51"
+      "specLocation": "ml/delete_data_frame_analytics/MlDeleteDataFrameAnalyticsRequest.ts#L24-L52"
     },
     {
       "kind": "response",
@@ -158973,7 +163342,7 @@
           }
         }
       ],
-      "specLocation": "ml/delete_datafeed/MlDeleteDatafeedRequest.ts#L23-L48"
+      "specLocation": "ml/delete_datafeed/MlDeleteDatafeedRequest.ts#L23-L49"
     },
     {
       "kind": "response",
@@ -159080,7 +163449,7 @@
           }
         }
       ],
-      "specLocation": "ml/delete_expired_data/MlDeleteExpiredDataRequest.ts#L25-L72"
+      "specLocation": "ml/delete_expired_data/MlDeleteExpiredDataRequest.ts#L25-L73"
     },
     {
       "kind": "response",
@@ -159140,7 +163509,7 @@
         }
       ],
       "query": [],
-      "specLocation": "ml/delete_filter/MlDeleteFilterRequest.ts#L23-L39"
+      "specLocation": "ml/delete_filter/MlDeleteFilterRequest.ts#L23-L40"
     },
     {
       "kind": "response",
@@ -159233,7 +163602,7 @@
           }
         }
       ],
-      "specLocation": "ml/delete_forecast/MlDeleteForecastRequest.ts#L24-L65"
+      "specLocation": "ml/delete_forecast/MlDeleteForecastRequest.ts#L24-L66"
     },
     {
       "kind": "response",
@@ -159326,7 +163695,7 @@
           }
         }
       ],
-      "specLocation": "ml/delete_job/MlDeleteJobRequest.ts#L23-L63"
+      "specLocation": "ml/delete_job/MlDeleteJobRequest.ts#L23-L64"
     },
     {
       "kind": "response",
@@ -159392,7 +163761,7 @@
         }
       ],
       "query": [],
-      "specLocation": "ml/delete_model_snapshot/MlDeleteModelSnapshotRequest.ts#L23-L44"
+      "specLocation": "ml/delete_model_snapshot/MlDeleteModelSnapshotRequest.ts#L23-L45"
     },
     {
       "kind": "response",
@@ -159459,7 +163828,7 @@
           }
         }
       ],
-      "specLocation": "ml/delete_trained_model/MlDeleteTrainedModelRequest.ts#L23-L42"
+      "specLocation": "ml/delete_trained_model/MlDeleteTrainedModelRequest.ts#L23-L43"
     },
     {
       "kind": "response",
@@ -159525,7 +163894,7 @@
         }
       ],
       "query": [],
-      "specLocation": "ml/delete_trained_model_alias/MlDeleteTrainedModelAliasRequest.ts#L23-L44"
+      "specLocation": "ml/delete_trained_model_alias/MlDeleteTrainedModelAliasRequest.ts#L23-L45"
     },
     {
       "kind": "response",
@@ -159626,7 +163995,7 @@
       },
       "path": [],
       "query": [],
-      "specLocation": "ml/estimate_model_memory/MlEstimateModelMemoryRequest.ts#L26-L62"
+      "specLocation": "ml/estimate_model_memory/MlEstimateModelMemoryRequest.ts#L26-L63"
     },
     {
       "kind": "response",
@@ -160345,7 +164714,7 @@
       },
       "path": [],
       "query": [],
-      "specLocation": "ml/evaluate_data_frame/MlEvaluateDataFrameRequest.ts#L25-L52"
+      "specLocation": "ml/evaluate_data_frame/MlEvaluateDataFrameRequest.ts#L25-L53"
     },
     {
       "kind": "response",
@@ -160532,7 +164901,7 @@
         }
       ],
       "query": [],
-      "specLocation": "ml/explain_data_frame_analytics/MlExplainDataFrameAnalyticsRequest.ts#L30-L107"
+      "specLocation": "ml/explain_data_frame_analytics/MlExplainDataFrameAnalyticsRequest.ts#L30-L108"
     },
     {
       "kind": "response",
@@ -160731,7 +165100,7 @@
           }
         }
       ],
-      "specLocation": "ml/flush_job/MlFlushJobRequest.ts#L24-L99"
+      "specLocation": "ml/flush_job/MlFlushJobRequest.ts#L24-L100"
     },
     {
       "kind": "response",
@@ -160884,7 +165253,7 @@
           }
         }
       ],
-      "specLocation": "ml/forecast/MlForecastJobRequest.ts#L24-L87"
+      "specLocation": "ml/forecast/MlForecastJobRequest.ts#L24-L88"
     },
     {
       "kind": "response",
@@ -161189,7 +165558,7 @@
           }
         }
       ],
-      "specLocation": "ml/get_buckets/MlGetBucketsRequest.ts#L26-L133"
+      "specLocation": "ml/get_buckets/MlGetBucketsRequest.ts#L26-L134"
     },
     {
       "kind": "response",
@@ -161326,7 +165695,7 @@
           }
         }
       ],
-      "specLocation": "ml/get_calendar_events/MlGetCalendarEventsRequest.ts#L25-L53"
+      "specLocation": "ml/get_calendar_events/MlGetCalendarEventsRequest.ts#L25-L54"
     },
     {
       "kind": "response",
@@ -161490,7 +165859,7 @@
           }
         }
       ],
-      "specLocation": "ml/get_calendars/MlGetCalendarsRequest.ts#L25-L51"
+      "specLocation": "ml/get_calendars/MlGetCalendarsRequest.ts#L25-L52"
     },
     {
       "kind": "response",
@@ -161629,7 +165998,7 @@
           }
         }
       ],
-      "specLocation": "ml/get_categories/MlGetCategoriesRequest.ts#L25-L70"
+      "specLocation": "ml/get_categories/MlGetCategoriesRequest.ts#L25-L71"
     },
     {
       "kind": "response",
@@ -161756,7 +166125,7 @@
           }
         }
       ],
-      "specLocation": "ml/get_data_frame_analytics/MlGetDataFrameAnalyticsRequest.ts#L24-L77"
+      "specLocation": "ml/get_data_frame_analytics/MlGetDataFrameAnalyticsRequest.ts#L24-L78"
     },
     {
       "kind": "response",
@@ -161805,7 +166174,7 @@
       "body": {
         "kind": "no_body"
       },
-      "description": "Get data frame analytics jobs usage info.",
+      "description": "Get data frame analytics job stats.",
       "inherits": {
         "type": {
           "name": "RequestBase",
@@ -161884,7 +166253,7 @@
           }
         }
       ],
-      "specLocation": "ml/get_data_frame_analytics_stats/MlGetDataFrameAnalyticsStatsRequest.ts#L24-L72"
+      "specLocation": "ml/get_data_frame_analytics_stats/MlGetDataFrameAnalyticsStatsRequest.ts#L24-L73"
     },
     {
       "kind": "response",
@@ -161933,7 +166302,7 @@
       "body": {
         "kind": "no_body"
       },
-      "description": "Get datafeeds usage info.\nYou can get statistics for multiple datafeeds in a single API request by\nusing a comma-separated list of datafeeds or a wildcard expression. You can\nget statistics for all datafeeds by using `_all`, by specifying `*` as the\n`<feed_id>`, or by omitting the `<feed_id>`. If the datafeed is stopped, the\nonly information you receive is the `datafeed_id` and the `state`.\nThis API returns a maximum of 10,000 datafeeds.",
+      "description": "Get datafeeds stats.\nYou can get statistics for multiple datafeeds in a single API request by\nusing a comma-separated list of datafeeds or a wildcard expression. You can\nget statistics for all datafeeds by using `_all`, by specifying `*` as the\n`<feed_id>`, or by omitting the `<feed_id>`. If the datafeed is stopped, the\nonly information you receive is the `datafeed_id` and the `state`.\nThis API returns a maximum of 10,000 datafeeds.",
       "inherits": {
         "type": {
           "name": "RequestBase",
@@ -161972,7 +166341,7 @@
           }
         }
       ],
-      "specLocation": "ml/get_datafeed_stats/MlGetDatafeedStatsRequest.ts#L23-L60"
+      "specLocation": "ml/get_datafeed_stats/MlGetDatafeedStatsRequest.ts#L23-L61"
     },
     {
       "kind": "response",
@@ -162072,7 +166441,7 @@
           }
         }
       ],
-      "specLocation": "ml/get_datafeeds/MlGetDatafeedsRequest.ts#L23-L66"
+      "specLocation": "ml/get_datafeeds/MlGetDatafeedsRequest.ts#L23-L67"
     },
     {
       "kind": "response",
@@ -162173,7 +166542,7 @@
           }
         }
       ],
-      "specLocation": "ml/get_filters/MlGetFiltersRequest.ts#L24-L51"
+      "specLocation": "ml/get_filters/MlGetFiltersRequest.ts#L24-L52"
     },
     {
       "kind": "response",
@@ -162365,7 +166734,7 @@
           }
         }
       ],
-      "specLocation": "ml/get_influencers/MlGetInfluencersRequest.ts#L26-L97"
+      "specLocation": "ml/get_influencers/MlGetInfluencersRequest.ts#L26-L98"
     },
     {
       "kind": "response",
@@ -162414,7 +166783,7 @@
       "body": {
         "kind": "no_body"
       },
-      "description": "Get anomaly detection jobs usage info.",
+      "description": "Get anomaly detection job stats.",
       "inherits": {
         "type": {
           "name": "RequestBase",
@@ -162454,7 +166823,7 @@
           }
         }
       ],
-      "specLocation": "ml/get_job_stats/MlGetJobStatsRequest.ts#L23-L56"
+      "specLocation": "ml/get_job_stats/MlGetJobStatsRequest.ts#L23-L57"
     },
     {
       "kind": "response",
@@ -162555,7 +166924,7 @@
           }
         }
       ],
-      "specLocation": "ml/get_jobs/MlGetJobsRequest.ts#L23-L66"
+      "specLocation": "ml/get_jobs/MlGetJobsRequest.ts#L23-L67"
     },
     {
       "kind": "response",
@@ -163174,7 +167543,7 @@
           }
         }
       ],
-      "specLocation": "ml/get_model_snapshot_upgrade_stats/MlGetModelSnapshotUpgradeStatsRequest.ts#L23-L57"
+      "specLocation": "ml/get_model_snapshot_upgrade_stats/MlGetModelSnapshotUpgradeStatsRequest.ts#L23-L58"
     },
     {
       "kind": "response",
@@ -163398,7 +167767,7 @@
           }
         }
       ],
-      "specLocation": "ml/get_model_snapshots/MlGetModelSnapshotsRequest.ts#L26-L96"
+      "specLocation": "ml/get_model_snapshots/MlGetModelSnapshotsRequest.ts#L26-L97"
     },
     {
       "kind": "response",
@@ -163673,7 +168042,7 @@
           }
         }
       ],
-      "specLocation": "ml/get_overall_buckets/MlGetOverallBucketsRequest.ts#L25-L145"
+      "specLocation": "ml/get_overall_buckets/MlGetOverallBucketsRequest.ts#L25-L146"
     },
     {
       "kind": "response",
@@ -163944,7 +168313,7 @@
           }
         }
       ],
-      "specLocation": "ml/get_records/MlGetAnomalyRecordsRequest.ts#L26-L127"
+      "specLocation": "ml/get_records/MlGetAnomalyRecordsRequest.ts#L26-L128"
     },
     {
       "kind": "response",
@@ -164082,6 +168451,22 @@
             }
           }
         },
+        {
+          "deprecation": {
+            "description": "",
+            "version": "7.10.0"
+          },
+          "description": "parameter is deprecated! Use [include=definition] instead",
+          "name": "include_model_definition",
+          "required": false,
+          "type": {
+            "kind": "instance_of",
+            "type": {
+              "name": "boolean",
+              "namespace": "_builtins"
+            }
+          }
+        },
         {
           "description": "Specifies the maximum number of models to obtain.",
           "name": "size",
@@ -164123,7 +168508,7 @@
           }
         }
       ],
-      "specLocation": "ml/get_trained_models/MlGetTrainedModelRequest.ts#L25-L91"
+      "specLocation": "ml/get_trained_models/MlGetTrainedModelRequest.ts#L25-L99"
     },
     {
       "kind": "response",
@@ -164238,7 +168623,7 @@
           }
         }
       ],
-      "specLocation": "ml/get_trained_models_stats/MlGetTrainedModelStatsRequest.ts#L24-L65"
+      "specLocation": "ml/get_trained_models_stats/MlGetTrainedModelStatsRequest.ts#L24-L66"
     },
     {
       "kind": "response",
@@ -164364,7 +168749,7 @@
           }
         }
       ],
-      "specLocation": "ml/infer_trained_model/MlInferTrainedModelRequest.ts#L27-L59"
+      "specLocation": "ml/infer_trained_model/MlInferTrainedModelRequest.ts#L27-L60"
     },
     {
       "kind": "response",
@@ -164456,7 +168841,7 @@
           }
         }
       ],
-      "specLocation": "ml/info/types.ts#L44-L50"
+      "specLocation": "ml/info/types.ts#L46-L52"
     },
     {
       "kind": "interface",
@@ -164477,7 +168862,7 @@
           }
         }
       ],
-      "specLocation": "ml/info/types.ts#L40-L42"
+      "specLocation": "ml/info/types.ts#L42-L44"
     },
     {
       "kind": "interface",
@@ -164518,25 +168903,47 @@
         "namespace": "ml.info"
       },
       "properties": [
+        {
+          "name": "max_single_ml_node_processors",
+          "required": false,
+          "type": {
+            "kind": "instance_of",
+            "type": {
+              "name": "integer",
+              "namespace": "_types"
+            }
+          }
+        },
+        {
+          "name": "total_ml_processors",
+          "required": false,
+          "type": {
+            "kind": "instance_of",
+            "type": {
+              "name": "integer",
+              "namespace": "_types"
+            }
+          }
+        },
         {
           "name": "max_model_memory_limit",
           "required": false,
           "type": {
             "kind": "instance_of",
             "type": {
-              "name": "string",
-              "namespace": "_builtins"
+              "name": "ByteSize",
+              "namespace": "_types"
             }
           }
         },
         {
           "name": "effective_max_model_memory_limit",
-          "required": true,
+          "required": false,
           "type": {
             "kind": "instance_of",
             "type": {
-              "name": "string",
-              "namespace": "_builtins"
+              "name": "ByteSize",
+              "namespace": "_types"
             }
           }
         },
@@ -164546,13 +168953,13 @@
           "type": {
             "kind": "instance_of",
             "type": {
-              "name": "string",
-              "namespace": "_builtins"
+              "name": "ByteSize",
+              "namespace": "_types"
             }
           }
         }
       ],
-      "specLocation": "ml/info/types.ts#L34-L38"
+      "specLocation": "ml/info/types.ts#L34-L40"
     },
     {
       "kind": "interface",
@@ -164729,7 +169136,7 @@
           }
         }
       ],
-      "specLocation": "ml/open_job/MlOpenJobRequest.ts#L24-L58"
+      "specLocation": "ml/open_job/MlOpenJobRequest.ts#L24-L59"
     },
     {
       "kind": "response",
@@ -164818,7 +169225,7 @@
         }
       ],
       "query": [],
-      "specLocation": "ml/post_calendar_events/MlPostCalendarEventsRequest.ts#L24-L40"
+      "specLocation": "ml/post_calendar_events/MlPostCalendarEventsRequest.ts#L24-L41"
     },
     {
       "kind": "response",
@@ -164927,7 +169334,7 @@
           }
         }
       ],
-      "specLocation": "ml/post_data/MlPostJobDataRequest.ts#L24-L68"
+      "specLocation": "ml/post_data/MlPostJobDataRequest.ts#L24-L69"
     },
     {
       "kind": "response",
@@ -164935,18 +169342,18 @@
         "kind": "properties",
         "properties": [
           {
-            "name": "bucket_count",
+            "name": "job_id",
             "required": true,
             "type": {
               "kind": "instance_of",
               "type": {
-                "name": "long",
+                "name": "Id",
                 "namespace": "_types"
               }
             }
           },
           {
-            "name": "earliest_record_timestamp",
+            "name": "processed_record_count",
             "required": true,
             "type": {
               "kind": "instance_of",
@@ -164957,7 +169364,7 @@
             }
           },
           {
-            "name": "empty_bucket_count",
+            "name": "processed_field_count",
             "required": true,
             "type": {
               "kind": "instance_of",
@@ -164990,7 +169397,7 @@
             }
           },
           {
-            "name": "input_record_count",
+            "name": "invalid_date_count",
             "required": true,
             "type": {
               "kind": "instance_of",
@@ -165001,7 +169408,7 @@
             }
           },
           {
-            "name": "invalid_date_count",
+            "name": "missing_field_count",
             "required": true,
             "type": {
               "kind": "instance_of",
@@ -165012,29 +169419,29 @@
             }
           },
           {
-            "name": "job_id",
+            "name": "out_of_order_timestamp_count",
             "required": true,
             "type": {
               "kind": "instance_of",
               "type": {
-                "name": "Id",
+                "name": "long",
                 "namespace": "_types"
               }
             }
           },
           {
-            "name": "last_data_time",
+            "name": "empty_bucket_count",
             "required": true,
             "type": {
               "kind": "instance_of",
               "type": {
-                "name": "integer",
+                "name": "long",
                 "namespace": "_types"
               }
             }
           },
           {
-            "name": "latest_record_timestamp",
+            "name": "sparse_bucket_count",
             "required": true,
             "type": {
               "kind": "instance_of",
@@ -165045,7 +169452,7 @@
             }
           },
           {
-            "name": "missing_field_count",
+            "name": "bucket_count",
             "required": true,
             "type": {
               "kind": "instance_of",
@@ -165056,40 +169463,107 @@
             }
           },
           {
-            "name": "out_of_order_timestamp_count",
-            "required": true,
+            "name": "earliest_record_timestamp",
+            "required": false,
+            "type": {
+              "kind": "instance_of",
+              "generics": [
+                {
+                  "kind": "instance_of",
+                  "type": {
+                    "name": "UnitMillis",
+                    "namespace": "_types"
+                  }
+                }
+              ],
+              "type": {
+                "name": "EpochTime",
+                "namespace": "_types"
+              }
+            }
+          },
+          {
+            "name": "latest_record_timestamp",
+            "required": false,
             "type": {
               "kind": "instance_of",
+              "generics": [
+                {
+                  "kind": "instance_of",
+                  "type": {
+                    "name": "UnitMillis",
+                    "namespace": "_types"
+                  }
+                }
+              ],
               "type": {
-                "name": "long",
+                "name": "EpochTime",
                 "namespace": "_types"
               }
             }
           },
           {
-            "name": "processed_field_count",
-            "required": true,
+            "name": "last_data_time",
+            "required": false,
             "type": {
               "kind": "instance_of",
+              "generics": [
+                {
+                  "kind": "instance_of",
+                  "type": {
+                    "name": "UnitMillis",
+                    "namespace": "_types"
+                  }
+                }
+              ],
               "type": {
-                "name": "long",
+                "name": "EpochTime",
                 "namespace": "_types"
               }
             }
           },
           {
-            "name": "processed_record_count",
-            "required": true,
+            "name": "latest_empty_bucket_timestamp",
+            "required": false,
             "type": {
               "kind": "instance_of",
+              "generics": [
+                {
+                  "kind": "instance_of",
+                  "type": {
+                    "name": "UnitMillis",
+                    "namespace": "_types"
+                  }
+                }
+              ],
               "type": {
-                "name": "long",
+                "name": "EpochTime",
                 "namespace": "_types"
               }
             }
           },
           {
-            "name": "sparse_bucket_count",
+            "name": "latest_sparse_bucket_timestamp",
+            "required": false,
+            "type": {
+              "kind": "instance_of",
+              "generics": [
+                {
+                  "kind": "instance_of",
+                  "type": {
+                    "name": "UnitMillis",
+                    "namespace": "_types"
+                  }
+                }
+              ],
+              "type": {
+                "name": "EpochTime",
+                "namespace": "_types"
+              }
+            }
+          },
+          {
+            "name": "input_record_count",
             "required": true,
             "type": {
               "kind": "instance_of",
@@ -165098,6 +169572,26 @@
                 "namespace": "_types"
               }
             }
+          },
+          {
+            "name": "log_time",
+            "required": false,
+            "type": {
+              "kind": "instance_of",
+              "generics": [
+                {
+                  "kind": "instance_of",
+                  "type": {
+                    "name": "UnitMillis",
+                    "namespace": "_types"
+                  }
+                }
+              ],
+              "type": {
+                "name": "EpochTime",
+                "namespace": "_types"
+              }
+            }
           }
         ]
       },
@@ -165105,7 +169599,7 @@
         "name": "Response",
         "namespace": "ml.post_data"
       },
-      "specLocation": "ml/post_data/MlPostJobDataResponse.ts#L23-L41"
+      "specLocation": "ml/post_data/MlPostJobDataResponse.ts#L24-L45"
     },
     {
       "kind": "interface",
@@ -165222,7 +169716,7 @@
         }
       ],
       "query": [],
-      "specLocation": "ml/preview_data_frame_analytics/MlPreviewDataFrameAnalyticsRequest.ts#L24-L48"
+      "specLocation": "ml/preview_data_frame_analytics/MlPreviewDataFrameAnalyticsRequest.ts#L24-L49"
     },
     {
       "kind": "response",
@@ -165348,7 +169842,7 @@
           }
         }
       ],
-      "specLocation": "ml/preview_datafeed/MlPreviewDatafeedRequest.ts#L26-L69"
+      "specLocation": "ml/preview_datafeed/MlPreviewDatafeedRequest.ts#L26-L70"
     },
     {
       "kind": "response",
@@ -165440,7 +169934,7 @@
         }
       ],
       "query": [],
-      "specLocation": "ml/put_calendar/MlPutCalendarRequest.ts#L23-L43"
+      "specLocation": "ml/put_calendar/MlPutCalendarRequest.ts#L23-L44"
     },
     {
       "kind": "response",
@@ -165537,7 +170031,7 @@
         }
       ],
       "query": [],
-      "specLocation": "ml/put_calendar_job/MlPutCalendarJobRequest.ts#L23-L37"
+      "specLocation": "ml/put_calendar_job/MlPutCalendarJobRequest.ts#L23-L38"
     },
     {
       "kind": "response",
@@ -165672,6 +170166,17 @@
               }
             }
           },
+          {
+            "name": "_meta",
+            "required": false,
+            "type": {
+              "kind": "instance_of",
+              "type": {
+                "name": "Metadata",
+                "namespace": "_types"
+              }
+            }
+          },
           {
             "description": "The approximate maximum amount of memory resources that are permitted for\nanalytical processing. If your `elasticsearch.yml` file contains an\n`xpack.ml.max_model_memory_limit` setting, an error occurs when you try\nto create data frame analytics jobs that have `model_memory_limit` values\ngreater than that setting.",
             "name": "model_memory_limit",
@@ -165759,7 +170264,7 @@
         }
       ],
       "query": [],
-      "specLocation": "ml/put_data_frame_analytics/MlPutDataFrameAnalyticsRequest.ts#L30-L141"
+      "specLocation": "ml/put_data_frame_analytics/MlPutDataFrameAnalyticsRequest.ts#L30-L144"
     },
     {
       "kind": "response",
@@ -165874,6 +170379,17 @@
               }
             }
           },
+          {
+            "name": "_meta",
+            "required": false,
+            "type": {
+              "kind": "instance_of",
+              "type": {
+                "name": "Metadata",
+                "namespace": "_types"
+              }
+            }
+          },
           {
             "name": "model_memory_limit",
             "required": true,
@@ -165913,7 +170429,7 @@
         "name": "Response",
         "namespace": "ml.put_data_frame_analytics"
       },
-      "specLocation": "ml/put_data_frame_analytics/MlPutDataFrameAnalyticsResponse.ts#L31-L46"
+      "specLocation": "ml/put_data_frame_analytics/MlPutDataFrameAnalyticsResponse.ts#L31-L47"
     },
     {
       "kind": "request",
@@ -165924,6 +170440,9 @@
         "kind": "properties",
         "properties": [
           {
+            "aliases": [
+              "aggs"
+            ],
             "description": "If set, the datafeed performs aggregation searches.\nSupport for aggregations is limited and should be used only with low cardinality data.",
             "name": "aggregations",
             "required": false,
@@ -165986,7 +170505,7 @@
             "aliases": [
               "indexes"
             ],
-            "description": "An array of index names. Wildcards are supported. If any of the indices are in remote clusters, the machine\nlearning nodes must have the `remote_cluster_client` role.",
+            "description": "An array of index names. Wildcards are supported. If any of the indices are in remote clusters, the master\nnodes and the machine learning nodes must have the `remote_cluster_client` role.",
             "name": "indices",
             "required": false,
             "type": {
@@ -166208,7 +170727,7 @@
           }
         }
       ],
-      "specLocation": "ml/put_datafeed/MlPutDatafeedRequest.ts#L37-L172"
+      "specLocation": "ml/put_datafeed/MlPutDatafeedRequest.ts#L37-L175"
     },
     {
       "kind": "response",
@@ -166476,7 +170995,7 @@
         }
       ],
       "query": [],
-      "specLocation": "ml/put_filter/MlPutFilterRequest.ts#L23-L50"
+      "specLocation": "ml/put_filter/MlPutFilterRequest.ts#L23-L51"
     },
     {
       "kind": "response",
@@ -166645,6 +171164,18 @@
               }
             }
           },
+          {
+            "description": "The identifier for the anomaly detection job. This identifier can contain lowercase alphanumeric characters (a-z and 0-9), hyphens, and underscores. It must start and end with alphanumeric characters.",
+            "name": "job_id",
+            "required": false,
+            "type": {
+              "kind": "instance_of",
+              "type": {
+                "name": "Id",
+                "namespace": "_types"
+              }
+            }
+          },
           {
             "description": "A list of job groups. A job can belong to no groups or many.",
             "name": "groups",
@@ -166749,8 +171280,65 @@
           }
         }
       ],
-      "query": [],
-      "specLocation": "ml/put_job/MlPutJobRequest.ts#L30-L112"
+      "query": [
+        {
+          "description": "If `true`, wildcard indices expressions that resolve into no concrete indices are ignored. This includes the\n`_all` string or when no indices are specified.",
+          "name": "allow_no_indices",
+          "required": false,
+          "serverDefault": true,
+          "type": {
+            "kind": "instance_of",
+            "type": {
+              "name": "boolean",
+              "namespace": "_builtins"
+            }
+          }
+        },
+        {
+          "description": "Type of index that wildcard patterns can match. If the request can target data streams, this argument determines\nwhether wildcard expressions match hidden data streams. Supports comma-separated values. Valid values are:\n\n* `all`: Match any data stream or index, including hidden ones.\n* `closed`: Match closed, non-hidden indices. Also matches any non-hidden data stream. Data streams cannot be closed.\n* `hidden`: Match hidden data streams and hidden indices. Must be combined with `open`, `closed`, or both.\n* `none`: Wildcard patterns are not accepted.\n* `open`: Match open, non-hidden indices. Also matches any non-hidden data stream.",
+          "name": "expand_wildcards",
+          "required": false,
+          "serverDefault": "open",
+          "type": {
+            "kind": "instance_of",
+            "type": {
+              "name": "ExpandWildcards",
+              "namespace": "_types"
+            }
+          }
+        },
+        {
+          "deprecation": {
+            "description": "",
+            "version": "7.16.0"
+          },
+          "description": "If `true`, concrete, expanded or aliased indices are ignored when frozen.",
+          "name": "ignore_throttled",
+          "required": false,
+          "serverDefault": true,
+          "type": {
+            "kind": "instance_of",
+            "type": {
+              "name": "boolean",
+              "namespace": "_builtins"
+            }
+          }
+        },
+        {
+          "description": "If `true`, unavailable indices (missing or closed) are ignored.",
+          "name": "ignore_unavailable",
+          "required": false,
+          "serverDefault": false,
+          "type": {
+            "kind": "instance_of",
+            "type": {
+              "name": "boolean",
+              "namespace": "_builtins"
+            }
+          }
+        }
+      ],
+      "specLocation": "ml/put_job/MlPutJobRequest.ts#L30-L148"
     },
     {
       "kind": "response",
@@ -167528,7 +172116,7 @@
           }
         }
       ],
-      "specLocation": "ml/put_trained_model/MlPutTrainedModelRequest.ts#L31-L127"
+      "specLocation": "ml/put_trained_model/MlPutTrainedModelRequest.ts#L31-L128"
     },
     {
       "kind": "response",
@@ -167912,7 +172500,7 @@
           }
         }
       ],
-      "specLocation": "ml/put_trained_model_alias/MlPutTrainedModelAliasRequest.ts#L23-L66"
+      "specLocation": "ml/put_trained_model_alias/MlPutTrainedModelAliasRequest.ts#L23-L67"
     },
     {
       "kind": "response",
@@ -168016,7 +172604,7 @@
         }
       ],
       "query": [],
-      "specLocation": "ml/put_trained_model_definition_part/MlPutTrainedModelDefinitionPartRequest.ts#L24-L57"
+      "specLocation": "ml/put_trained_model_definition_part/MlPutTrainedModelDefinitionPartRequest.ts#L24-L58"
     },
     {
       "kind": "response",
@@ -168129,7 +172717,7 @@
         }
       ],
       "query": [],
-      "specLocation": "ml/put_trained_model_vocabulary/MlPutTrainedModelVocabularyRequest.ts#L24-L60"
+      "specLocation": "ml/put_trained_model_vocabulary/MlPutTrainedModelVocabularyRequest.ts#L24-L61"
     },
     {
       "kind": "response",
@@ -168210,7 +172798,7 @@
           }
         }
       ],
-      "specLocation": "ml/reset_job/MlResetJobRequest.ts#L23-L57"
+      "specLocation": "ml/reset_job/MlResetJobRequest.ts#L23-L58"
     },
     {
       "kind": "response",
@@ -168305,7 +172893,7 @@
           }
         }
       ],
-      "specLocation": "ml/revert_model_snapshot/MlRevertModelSnapshotRequest.ts#L23-L69"
+      "specLocation": "ml/revert_model_snapshot/MlRevertModelSnapshotRequest.ts#L23-L70"
     },
     {
       "kind": "response",
@@ -168447,7 +173035,7 @@
           }
         }
       ],
-      "specLocation": "ml/start_data_frame_analytics/MlStartDataFrameAnalyticsRequest.ts#L24-L60"
+      "specLocation": "ml/start_data_frame_analytics/MlStartDataFrameAnalyticsRequest.ts#L24-L61"
     },
     {
       "kind": "response",
@@ -168596,7 +173184,7 @@
           }
         }
       ],
-      "specLocation": "ml/start_datafeed/MlStartDatafeedRequest.ts#L24-L91"
+      "specLocation": "ml/start_datafeed/MlStartDatafeedRequest.ts#L24-L92"
     },
     {
       "kind": "response",
@@ -168776,7 +173364,7 @@
           }
         }
       ],
-      "specLocation": "ml/start_trained_model_deployment/MlStartTrainedModelDeploymentRequest.ts#L29-L93"
+      "specLocation": "ml/start_trained_model_deployment/MlStartTrainedModelDeploymentRequest.ts#L29-L94"
     },
     {
       "kind": "response",
@@ -168876,7 +173464,7 @@
           }
         }
       ],
-      "specLocation": "ml/stop_data_frame_analytics/MlStopDataFrameAnalyticsRequest.ts#L24-L70"
+      "specLocation": "ml/stop_data_frame_analytics/MlStopDataFrameAnalyticsRequest.ts#L24-L71"
     },
     {
       "kind": "response",
@@ -169017,7 +173605,7 @@
           }
         }
       ],
-      "specLocation": "ml/stop_datafeed/MlStopDatafeedRequest.ts#L24-L78"
+      "specLocation": "ml/stop_datafeed/MlStopDatafeedRequest.ts#L24-L79"
     },
     {
       "kind": "response",
@@ -169104,7 +173692,7 @@
           }
         }
       ],
-      "specLocation": "ml/stop_trained_model_deployment/MlStopTrainedModelDeploymentRequest.ts#L23-L53"
+      "specLocation": "ml/stop_trained_model_deployment/MlStopTrainedModelDeploymentRequest.ts#L23-L54"
     },
     {
       "kind": "response",
@@ -169221,7 +173809,7 @@
         }
       ],
       "query": [],
-      "specLocation": "ml/update_data_frame_analytics/MlUpdateDataFrameAnalyticsRequest.ts#L24-L72"
+      "specLocation": "ml/update_data_frame_analytics/MlUpdateDataFrameAnalyticsRequest.ts#L24-L73"
     },
     {
       "kind": "response",
@@ -169646,7 +174234,7 @@
           }
         }
       ],
-      "specLocation": "ml/update_datafeed/MlUpdateDatafeedRequest.ts#L31-L162"
+      "specLocation": "ml/update_datafeed/MlUpdateDatafeedRequest.ts#L31-L163"
     },
     {
       "kind": "response",
@@ -169929,7 +174517,7 @@
         }
       ],
       "query": [],
-      "specLocation": "ml/update_filter/MlUpdateFilterRequest.ts#L23-L52"
+      "specLocation": "ml/update_filter/MlUpdateFilterRequest.ts#L23-L53"
     },
     {
       "kind": "response",
@@ -170172,7 +174760,7 @@
               "value": {
                 "kind": "instance_of",
                 "type": {
-                  "name": "Detector",
+                  "name": "DetectorUpdate",
                   "namespace": "ml._types"
                 }
               }
@@ -170218,7 +174806,7 @@
         }
       ],
       "query": [],
-      "specLocation": "ml/update_job/MlUpdateJobRequest.ts#L33-L139"
+      "specLocation": "ml/update_job/MlUpdateJobRequest.ts#L33-L140"
     },
     {
       "kind": "response",
@@ -170569,7 +175157,7 @@
         }
       ],
       "query": [],
-      "specLocation": "ml/update_model_snapshot/MlUpdateModelSnapshotRequest.ts#L23-L55"
+      "specLocation": "ml/update_model_snapshot/MlUpdateModelSnapshotRequest.ts#L23-L56"
     },
     {
       "kind": "response",
@@ -170669,7 +175257,7 @@
           }
         }
       ],
-      "specLocation": "ml/update_trained_model_deployment/MlUpdateTrainedModelDeploymentRequest.ts#L24-L62"
+      "specLocation": "ml/update_trained_model_deployment/MlUpdateTrainedModelDeploymentRequest.ts#L24-L63"
     },
     {
       "kind": "response",
@@ -170768,7 +175356,7 @@
           }
         }
       ],
-      "specLocation": "ml/upgrade_job_snapshot/MlUpgradeJobSnapshotRequest.ts#L24-L64"
+      "specLocation": "ml/upgrade_job_snapshot/MlUpgradeJobSnapshotRequest.ts#L24-L65"
     },
     {
       "kind": "response",
@@ -175890,7 +180478,7 @@
       "body": {
         "kind": "no_body"
       },
-      "description": "You can use this API to clear the archived repositories metering information in the cluster.",
+      "description": "Clear the archived repositories metering.\nClear the archived repositories metering information in the cluster.",
       "inherits": {
         "type": {
           "name": "RequestBase",
@@ -175928,7 +180516,7 @@
         }
       ],
       "query": [],
-      "specLocation": "nodes/clear_repositories_metering_archive/ClearRepositoriesMeteringArchiveRequest.ts#L24-L43"
+      "specLocation": "nodes/clear_repositories_metering_archive/ClearRepositoriesMeteringArchiveRequest.ts#L24-L45"
     },
     {
       "kind": "response",
@@ -176007,7 +180595,7 @@
       "body": {
         "kind": "no_body"
       },
-      "description": "You can use the cluster repositories metering API to retrieve repositories metering information in a cluster.\nThis API exposes monotonically non-decreasing counters and it’s expected that clients would durably store the\ninformation needed to compute aggregations over a period of time. Additionally, the information exposed by this\nAPI is volatile, meaning that it won’t be present after node restarts.",
+      "description": "Get cluster repositories metering.\nGet repositories metering information for a cluster.\nThis API exposes monotonically non-decreasing counters and it is expected that clients would durably store the information needed to compute aggregations over a period of time.\nAdditionally, the information exposed by this API is volatile, meaning that it will not be present after node restarts.",
       "inherits": {
         "type": {
           "name": "RequestBase",
@@ -176033,7 +180621,7 @@
         }
       ],
       "query": [],
-      "specLocation": "nodes/get_repositories_metering_info/GetRepositoriesMeteringInfoRequest.ts#L23-L41"
+      "specLocation": "nodes/get_repositories_metering_info/GetRepositoriesMeteringInfoRequest.ts#L23-L42"
     },
     {
       "kind": "response",
@@ -176112,7 +180700,7 @@
       "body": {
         "kind": "no_body"
       },
-      "description": "This API yields a breakdown of the hot threads on each selected node in the cluster.\nThe output is plain text with a breakdown of each node’s top hot threads.",
+      "description": "Get the hot threads for nodes.\nGet a breakdown of the hot threads on each selected node in the cluster.\nThe output is plain text with a breakdown of the top hot threads for each node.",
       "inherits": {
         "type": {
           "name": "RequestBase",
@@ -176242,7 +180830,7 @@
           }
         }
       ],
-      "specLocation": "nodes/hot_threads/NodesHotThreadsRequest.ts#L25-L83"
+      "specLocation": "nodes/hot_threads/NodesHotThreadsRequest.ts#L25-L85"
     },
     {
       "kind": "response",
@@ -176830,7 +181418,7 @@
           }
         }
       ],
-      "specLocation": "nodes/info/types.ts#L306-L311"
+      "specLocation": "nodes/info/types.ts#L311-L316"
     },
     {
       "kind": "interface",
@@ -177037,7 +181625,7 @@
           }
         }
       ],
-      "specLocation": "nodes/info/types.ts#L313-L324"
+      "specLocation": "nodes/info/types.ts#L318-L329"
     },
     {
       "kind": "interface",
@@ -177069,7 +181657,7 @@
           }
         }
       ],
-      "specLocation": "nodes/info/types.ts#L326-L329"
+      "specLocation": "nodes/info/types.ts#L331-L334"
     },
     {
       "kind": "interface",
@@ -177101,7 +181689,7 @@
           }
         }
       ],
-      "specLocation": "nodes/info/types.ts#L331-L334"
+      "specLocation": "nodes/info/types.ts#L336-L339"
     },
     {
       "kind": "interface",
@@ -177144,7 +181732,7 @@
           }
         }
       ],
-      "specLocation": "nodes/info/types.ts#L336-L340"
+      "specLocation": "nodes/info/types.ts#L341-L345"
     },
     {
       "kind": "interface",
@@ -177242,7 +181830,7 @@
           }
         }
       ],
-      "specLocation": "nodes/info/types.ts#L342-L351"
+      "specLocation": "nodes/info/types.ts#L347-L356"
     },
     {
       "kind": "interface",
@@ -177291,14 +181879,26 @@
           "name": "data",
           "required": false,
           "type": {
-            "kind": "array_of",
-            "value": {
-              "kind": "instance_of",
-              "type": {
-                "name": "string",
-                "namespace": "_builtins"
+            "kind": "union_of",
+            "items": [
+              {
+                "kind": "instance_of",
+                "type": {
+                  "name": "string",
+                  "namespace": "_builtins"
+                }
+              },
+              {
+                "kind": "array_of",
+                "value": {
+                  "kind": "instance_of",
+                  "type": {
+                    "name": "string",
+                    "namespace": "_builtins"
+                  }
+                }
               }
-            }
+            ]
           }
         }
       ],
@@ -177376,7 +181976,7 @@
           }
         }
       ],
-      "specLocation": "nodes/info/types.ts#L284-L287"
+      "specLocation": "nodes/info/types.ts#L289-L292"
     },
     {
       "kind": "interface",
@@ -177397,7 +181997,7 @@
           }
         }
       ],
-      "specLocation": "nodes/info/types.ts#L289-L291"
+      "specLocation": "nodes/info/types.ts#L294-L296"
     },
     {
       "kind": "interface",
@@ -177418,7 +182018,7 @@
           }
         }
       ],
-      "specLocation": "nodes/info/types.ts#L293-L295"
+      "specLocation": "nodes/info/types.ts#L298-L300"
     },
     {
       "kind": "interface",
@@ -178185,11 +182785,26 @@
           "name": "host",
           "required": false,
           "type": {
-            "kind": "instance_of",
-            "type": {
-              "name": "Host",
-              "namespace": "_types"
-            }
+            "kind": "union_of",
+            "items": [
+              {
+                "kind": "instance_of",
+                "type": {
+                  "name": "Host",
+                  "namespace": "_types"
+                }
+              },
+              {
+                "kind": "array_of",
+                "value": {
+                  "kind": "instance_of",
+                  "type": {
+                    "name": "Host",
+                    "namespace": "_types"
+                  }
+                }
+              }
+            ]
           }
         }
       ],
@@ -178386,7 +183001,7 @@
           }
         }
       ],
-      "specLocation": "nodes/info/types.ts#L353-L357"
+      "specLocation": "nodes/info/types.ts#L358-L362"
     },
     {
       "kind": "interface",
@@ -178434,9 +183049,20 @@
               "kind": "user_defined_value"
             }
           }
+        },
+        {
+          "name": "ml",
+          "required": false,
+          "type": {
+            "kind": "instance_of",
+            "type": {
+              "name": "NodeInfoXpackMl",
+              "namespace": "nodes.info"
+            }
+          }
         }
       ],
-      "specLocation": "nodes/info/types.ts#L239-L243"
+      "specLocation": "nodes/info/types.ts#L239-L244"
     },
     {
       "kind": "interface",
@@ -178457,7 +183083,7 @@
           }
         }
       ],
-      "specLocation": "nodes/info/types.ts#L276-L278"
+      "specLocation": "nodes/info/types.ts#L281-L283"
     },
     {
       "kind": "interface",
@@ -178478,7 +183104,28 @@
           }
         }
       ],
-      "specLocation": "nodes/info/types.ts#L280-L282"
+      "specLocation": "nodes/info/types.ts#L285-L287"
+    },
+    {
+      "kind": "interface",
+      "name": {
+        "name": "NodeInfoXpackMl",
+        "namespace": "nodes.info"
+      },
+      "properties": [
+        {
+          "name": "use_auto_machine_memory_percent",
+          "required": false,
+          "type": {
+            "kind": "instance_of",
+            "type": {
+              "name": "boolean",
+              "namespace": "_builtins"
+            }
+          }
+        }
+      ],
+      "specLocation": "nodes/info/types.ts#L253-L255"
     },
     {
       "kind": "interface",
@@ -178489,7 +183136,7 @@
       "properties": [
         {
           "name": "http",
-          "required": true,
+          "required": false,
           "type": {
             "kind": "instance_of",
             "type": {
@@ -178532,7 +183179,7 @@
           }
         }
       ],
-      "specLocation": "nodes/info/types.ts#L245-L250"
+      "specLocation": "nodes/info/types.ts#L246-L251"
     },
     {
       "kind": "interface",
@@ -178543,7 +183190,7 @@
       "properties": [
         {
           "name": "realms",
-          "required": true,
+          "required": false,
           "type": {
             "kind": "instance_of",
             "type": {
@@ -178554,7 +183201,7 @@
         },
         {
           "name": "token",
-          "required": true,
+          "required": false,
           "type": {
             "kind": "instance_of",
             "type": {
@@ -178564,7 +183211,7 @@
           }
         }
       ],
-      "specLocation": "nodes/info/types.ts#L256-L259"
+      "specLocation": "nodes/info/types.ts#L261-L264"
     },
     {
       "kind": "interface",
@@ -178640,7 +183287,7 @@
           }
         }
       ],
-      "specLocation": "nodes/info/types.ts#L261-L265"
+      "specLocation": "nodes/info/types.ts#L266-L270"
     },
     {
       "kind": "interface",
@@ -178672,7 +183319,7 @@
           }
         }
       ],
-      "specLocation": "nodes/info/types.ts#L271-L274"
+      "specLocation": "nodes/info/types.ts#L276-L279"
     },
     {
       "kind": "interface",
@@ -178693,7 +183340,7 @@
           }
         }
       ],
-      "specLocation": "nodes/info/types.ts#L267-L269"
+      "specLocation": "nodes/info/types.ts#L272-L274"
     },
     {
       "kind": "interface",
@@ -178725,7 +183372,7 @@
           }
         }
       ],
-      "specLocation": "nodes/info/types.ts#L252-L254"
+      "specLocation": "nodes/info/types.ts#L257-L259"
     },
     {
       "kind": "interface",
@@ -178900,7 +183547,7 @@
           }
         }
       ],
-      "specLocation": "nodes/info/types.ts#L359-L373"
+      "specLocation": "nodes/info/types.ts#L364-L378"
     },
     {
       "kind": "interface",
@@ -179035,7 +183682,7 @@
           }
         }
       ],
-      "specLocation": "nodes/info/types.ts#L375-L392"
+      "specLocation": "nodes/info/types.ts#L380-L397"
     },
     {
       "kind": "interface",
@@ -179090,7 +183737,7 @@
           }
         }
       ],
-      "specLocation": "nodes/info/types.ts#L394-L401"
+      "specLocation": "nodes/info/types.ts#L399-L406"
     },
     {
       "kind": "interface",
@@ -179166,7 +183813,7 @@
           }
         }
       ],
-      "specLocation": "nodes/info/types.ts#L297-L304"
+      "specLocation": "nodes/info/types.ts#L302-L309"
     },
     {
       "kind": "request",
@@ -179176,7 +183823,7 @@
       "body": {
         "kind": "no_body"
       },
-      "description": "Returns cluster nodes information.",
+      "description": "Get node information.\nBy default, the API returns all attributes and core settings for cluster nodes.",
       "inherits": {
         "type": {
           "name": "RequestBase",
@@ -179254,7 +183901,7 @@
           }
         }
       ],
-      "specLocation": "nodes/info/NodesInfoRequest.ts#L24-L55"
+      "specLocation": "nodes/info/NodesInfoRequest.ts#L24-L57"
     },
     {
       "kind": "response",
@@ -179345,7 +183992,7 @@
           }
         ]
       },
-      "description": "Reloads the keystore on nodes in the cluster.",
+      "description": "Reload the keystore on nodes in the cluster.\n\nSecure settings are stored in an on-disk keystore. Certain of these settings are reloadable.\nThat is, you can change them on disk and reload them without restarting any nodes in the cluster.\nWhen you have updated reloadable secure settings in your keystore, you can use this API to reload those settings on each node.\n\nWhen the Elasticsearch keystore is password protected and not simply obfuscated, you must provide the password for the keystore when you reload the secure settings.\nReloading the settings for the whole cluster assumes that the keystores for all nodes are protected with the same password; this method is allowed only when inter-node communications are encrypted.\nAlternatively, you can reload the secure settings on each node by locally accessing the API and passing the node-specific Elasticsearch keystore password.",
       "inherits": {
         "type": {
           "name": "RequestBase",
@@ -179385,7 +184032,7 @@
           }
         }
       ],
-      "specLocation": "nodes/reload_secure_settings/ReloadSecureSettingsRequest.ts#L24-L50"
+      "specLocation": "nodes/reload_secure_settings/ReloadSecureSettingsRequest.ts#L24-L59"
     },
     {
       "kind": "response",
@@ -179462,7 +184109,7 @@
       "body": {
         "kind": "no_body"
       },
-      "description": "Returns cluster nodes statistics.",
+      "description": "Get node statistics.\nGet statistics for nodes in a cluster.\nBy default, all stats are returned. You can limit the returned information by using metrics.",
       "inherits": {
         "type": {
           "name": "RequestBase",
@@ -179640,7 +184287,7 @@
           }
         }
       ],
-      "specLocation": "nodes/stats/NodesStatsRequest.ts#L24-L75"
+      "specLocation": "nodes/stats/NodesStatsRequest.ts#L24-L78"
     },
     {
       "kind": "response",
@@ -179807,7 +184454,7 @@
       "body": {
         "kind": "no_body"
       },
-      "description": "Returns information on the usage of features.",
+      "description": "Get feature usage information.",
       "inherits": {
         "type": {
           "name": "RequestBase",
@@ -179859,7 +184506,7 @@
           }
         }
       ],
-      "specLocation": "nodes/usage/NodesUsageRequest.ts#L24-L49"
+      "specLocation": "nodes/usage/NodesUsageRequest.ts#L24-L50"
     },
     {
       "kind": "response",
@@ -180195,7 +184842,7 @@
       "body": {
         "kind": "no_body"
       },
-      "description": "Deletes a query rule within a query ruleset.",
+      "description": "Delete a query rule.\nDelete a query rule within a query ruleset.",
       "inherits": {
         "type": {
           "name": "RequestBase",
@@ -180233,7 +184880,7 @@
         }
       ],
       "query": [],
-      "specLocation": "query_rules/delete_rule/QueryRuleDeleteRequest.ts#L22-L40"
+      "specLocation": "query_rules/delete_rule/QueryRuleDeleteRequest.ts#L22-L41"
     },
     {
       "kind": "response",
@@ -180261,7 +184908,7 @@
       "body": {
         "kind": "no_body"
       },
-      "description": "Deletes a query ruleset.",
+      "description": "Delete a query ruleset.",
       "inherits": {
         "type": {
           "name": "RequestBase",
@@ -180315,7 +184962,7 @@
       "body": {
         "kind": "no_body"
       },
-      "description": "Returns the details about a query rule within a query ruleset",
+      "description": "Get a query rule.\nGet details about a query rule within a query ruleset.",
       "inherits": {
         "type": {
           "name": "RequestBase",
@@ -180353,7 +185000,7 @@
         }
       ],
       "query": [],
-      "specLocation": "query_rules/get_rule/QueryRuleGetRequest.ts#L22-L40"
+      "specLocation": "query_rules/get_rule/QueryRuleGetRequest.ts#L22-L42"
     },
     {
       "kind": "response",
@@ -180381,7 +185028,7 @@
       "body": {
         "kind": "no_body"
       },
-      "description": "Returns the details about a query ruleset",
+      "description": "Get a query ruleset.\nGet details about a query ruleset.",
       "inherits": {
         "type": {
           "name": "RequestBase",
@@ -180407,7 +185054,7 @@
         }
       ],
       "query": [],
-      "specLocation": "query_rules/get_ruleset/QueryRulesetGetRequest.ts#L22-L35"
+      "specLocation": "query_rules/get_ruleset/QueryRulesetGetRequest.ts#L22-L36"
     },
     {
       "kind": "response",
@@ -180459,7 +185106,7 @@
           }
         },
         {
-          "description": "A map of criteria type to the number of rules of that type",
+          "description": "A map of criteria type (e.g. exact) to the number of rules of that type",
           "name": "rule_criteria_types_counts",
           "required": true,
           "type": {
@@ -180480,9 +185127,32 @@
               }
             }
           }
+        },
+        {
+          "description": "A map of rule type (e.g. pinned) to the number of rules of that type",
+          "name": "rule_type_counts",
+          "required": true,
+          "type": {
+            "kind": "dictionary_of",
+            "key": {
+              "kind": "instance_of",
+              "type": {
+                "name": "string",
+                "namespace": "_builtins"
+              }
+            },
+            "singleKey": false,
+            "value": {
+              "kind": "instance_of",
+              "type": {
+                "name": "integer",
+                "namespace": "_types"
+              }
+            }
+          }
         }
       ],
-      "specLocation": "query_rules/list_rulesets/types.ts#L23-L37"
+      "specLocation": "query_rules/list_rulesets/types.ts#L23-L42"
     },
     {
       "kind": "request",
@@ -180492,7 +185162,7 @@
       "body": {
         "kind": "no_body"
       },
-      "description": "Returns summarized information about existing query rulesets.",
+      "description": "Get all query rulesets.\nGet summarized information about the query rulesets.",
       "inherits": {
         "type": {
           "name": "RequestBase",
@@ -180530,7 +185200,7 @@
           }
         }
       ],
-      "specLocation": "query_rules/list_rulesets/QueryRulesetListRequest.ts#L22-L39"
+      "specLocation": "query_rules/list_rulesets/QueryRulesetListRequest.ts#L22-L40"
     },
     {
       "kind": "response",
@@ -180639,7 +185309,7 @@
           }
         ]
       },
-      "description": "Creates or updates a query rule within a query ruleset.",
+      "description": "Create or update a query rule.\nCreate or update a query rule within a query ruleset.",
       "inherits": {
         "type": {
           "name": "RequestBase",
@@ -180677,7 +185347,7 @@
         }
       ],
       "query": [],
-      "specLocation": "query_rules/put_rule/QueryRulePutRequest.ts#L28-L56"
+      "specLocation": "query_rules/put_rule/QueryRulePutRequest.ts#L28-L57"
     },
     {
       "kind": "response",
@@ -180739,7 +185409,7 @@
           }
         ]
       },
-      "description": "Creates or updates a query ruleset.",
+      "description": "Create or update a query ruleset.",
       "inherits": {
         "type": {
           "name": "RequestBase",
@@ -180765,7 +185435,7 @@
         }
       ],
       "query": [],
-      "specLocation": "query_rules/put_ruleset/QueryRulesetPutRequest.ts#L23-L43"
+      "specLocation": "query_rules/put_ruleset/QueryRulesetPutRequest.ts#L23-L44"
     },
     {
       "kind": "response",
@@ -180791,6 +185461,134 @@
       },
       "specLocation": "query_rules/put_ruleset/QueryRulesetPutResponse.ts#L22-L26"
     },
+    {
+      "kind": "interface",
+      "name": {
+        "name": "QueryRulesetMatchedRule",
+        "namespace": "query_rules.test"
+      },
+      "properties": [
+        {
+          "description": "Ruleset unique identifier",
+          "name": "ruleset_id",
+          "required": true,
+          "type": {
+            "kind": "instance_of",
+            "type": {
+              "name": "Id",
+              "namespace": "_types"
+            }
+          }
+        },
+        {
+          "description": "Rule unique identifier within that ruleset",
+          "name": "rule_id",
+          "required": true,
+          "type": {
+            "kind": "instance_of",
+            "type": {
+              "name": "Id",
+              "namespace": "_types"
+            }
+          }
+        }
+      ],
+      "specLocation": "query_rules/test/QueryRulesetTestResponse.ts#L30-L39"
+    },
+    {
+      "kind": "request",
+      "attachedBehaviors": [
+        "CommonQueryParameters"
+      ],
+      "body": {
+        "kind": "properties",
+        "properties": [
+          {
+            "name": "match_criteria",
+            "required": true,
+            "type": {
+              "kind": "dictionary_of",
+              "key": {
+                "kind": "instance_of",
+                "type": {
+                  "name": "string",
+                  "namespace": "_builtins"
+                }
+              },
+              "singleKey": false,
+              "value": {
+                "kind": "user_defined_value"
+              }
+            }
+          }
+        ]
+      },
+      "description": "Test a query ruleset.\nEvaluate match criteria against a query ruleset to identify the rules that would match that criteria.",
+      "inherits": {
+        "type": {
+          "name": "RequestBase",
+          "namespace": "_types"
+        }
+      },
+      "name": {
+        "name": "Request",
+        "namespace": "query_rules.test"
+      },
+      "path": [
+        {
+          "description": "The unique identifier of the query ruleset to be created or updated",
+          "name": "ruleset_id",
+          "required": true,
+          "type": {
+            "kind": "instance_of",
+            "type": {
+              "name": "Id",
+              "namespace": "_types"
+            }
+          }
+        }
+      ],
+      "query": [],
+      "specLocation": "query_rules/test/QueryRulesetTestRequest.ts#L24-L45"
+    },
+    {
+      "kind": "response",
+      "body": {
+        "kind": "properties",
+        "properties": [
+          {
+            "name": "total_matched_rules",
+            "required": true,
+            "type": {
+              "kind": "instance_of",
+              "type": {
+                "name": "integer",
+                "namespace": "_types"
+              }
+            }
+          },
+          {
+            "name": "matched_rules",
+            "required": true,
+            "type": {
+              "kind": "array_of",
+              "value": {
+                "kind": "instance_of",
+                "type": {
+                  "name": "QueryRulesetMatchedRule",
+                  "namespace": "query_rules.test"
+                }
+              }
+            }
+          }
+        ]
+      },
+      "name": {
+        "name": "Response",
+        "namespace": "query_rules.test"
+      },
+      "specLocation": "query_rules/test/QueryRulesetTestResponse.ts#L23-L28"
+    },
     {
       "kind": "interface",
       "name": {
@@ -182651,7 +187449,7 @@
       "body": {
         "kind": "no_body"
       },
-      "description": "Deletes a search application.",
+      "description": "Delete a search application.\nRemove a search application and its associated alias. Indices attached to the search application are not removed.",
       "inherits": {
         "type": {
           "name": "RequestBase",
@@ -182677,7 +187475,7 @@
         }
       ],
       "query": [],
-      "specLocation": "search_application/delete/SearchApplicationsDeleteRequest.ts#L22-L35"
+      "specLocation": "search_application/delete/SearchApplicationsDeleteRequest.ts#L22-L36"
     },
     {
       "kind": "response",
@@ -182705,7 +187503,7 @@
       "body": {
         "kind": "no_body"
       },
-      "description": "Delete a behavioral analytics collection.",
+      "description": "Delete a behavioral analytics collection.\nThe associated data stream is also deleted.",
       "inherits": {
         "type": {
           "name": "RequestBase",
@@ -182731,7 +187529,7 @@
         }
       ],
       "query": [],
-      "specLocation": "search_application/delete_behavioral_analytics/BehavioralAnalyticsDeleteRequest.ts#L22-L35"
+      "specLocation": "search_application/delete_behavioral_analytics/BehavioralAnalyticsDeleteRequest.ts#L22-L37"
     },
     {
       "kind": "response",
@@ -182759,7 +187557,7 @@
       "body": {
         "kind": "no_body"
       },
-      "description": "Returns the details about a search application",
+      "description": "Get search application details.",
       "inherits": {
         "type": {
           "name": "RequestBase",
@@ -182813,7 +187611,7 @@
       "body": {
         "kind": "no_body"
       },
-      "description": "Returns the existing behavioral analytics collections.",
+      "description": "Get behavioral analytics collections.",
       "inherits": {
         "type": {
           "name": "RequestBase",
@@ -182842,7 +187640,7 @@
         }
       ],
       "query": [],
-      "specLocation": "search_application/get_behavioral_analytics/BehavioralAnalyticsGetRequest.ts#L22-L35"
+      "specLocation": "search_application/get_behavioral_analytics/BehavioralAnalyticsGetRequest.ts#L22-L36"
     },
     {
       "kind": "response",
@@ -183058,7 +187856,7 @@
           }
         }
       },
-      "description": "Creates or updates a search application.",
+      "description": "Create or update a search application.",
       "inherits": {
         "type": {
           "name": "RequestBase",
@@ -183160,7 +187958,7 @@
       "body": {
         "kind": "no_body"
       },
-      "description": "Creates a behavioral analytics collection.",
+      "description": "Create a behavioral analytics collection.",
       "inherits": {
         "type": {
           "name": "RequestBase",
@@ -183186,7 +187984,7 @@
         }
       ],
       "query": [],
-      "specLocation": "search_application/put_behavioral_analytics/BehavioralAnalyticsPutRequest.ts#L22-L35"
+      "specLocation": "search_application/put_behavioral_analytics/BehavioralAnalyticsPutRequest.ts#L22-L36"
     },
     {
       "kind": "response",
@@ -183235,7 +188033,7 @@
           }
         ]
       },
-      "description": "Perform a search against a search application.",
+      "description": "Run a search application search.\nGenerate and run an Elasticsearch query that uses the specified query parameteter and the search template associated with the search application or default template.\nUnspecified template parameters are assigned their default values if applicable.",
       "inherits": {
         "type": {
           "name": "RequestBase",
@@ -183281,7 +188079,7 @@
           }
         }
       ],
-      "specLocation": "search_application/search/SearchApplicationsSearchRequest.ts#L24-L52"
+      "specLocation": "search_application/search/SearchApplicationsSearchRequest.ts#L24-L54"
     },
     {
       "kind": "response",
@@ -183936,78 +188734,142 @@
     {
       "kind": "interface",
       "name": {
-        "name": "ApiKey",
+        "name": "Access",
         "namespace": "security._types"
       },
       "properties": [
         {
-          "description": "Creation time for the API key in milliseconds.",
-          "name": "creation",
+          "description": "A list of indices permission entries for cross-cluster replication.",
+          "name": "replication",
           "required": false,
           "type": {
-            "kind": "instance_of",
-            "type": {
-              "name": "long",
-              "namespace": "_types"
+            "kind": "array_of",
+            "value": {
+              "kind": "instance_of",
+              "type": {
+                "name": "ReplicationAccess",
+                "namespace": "security._types"
+              }
             }
           }
         },
         {
-          "description": "Expiration time for the API key in milliseconds.",
-          "name": "expiration",
+          "description": "A list of indices permission entries for cross-cluster search.",
+          "name": "search",
           "required": false,
+          "type": {
+            "kind": "array_of",
+            "value": {
+              "kind": "instance_of",
+              "type": {
+                "name": "SearchAccess",
+                "namespace": "security._types"
+              }
+            }
+          }
+        }
+      ],
+      "specLocation": "security/_types/Access.ts#L22-L31"
+    },
+    {
+      "kind": "interface",
+      "name": {
+        "name": "ApiKey",
+        "namespace": "security._types"
+      },
+      "properties": [
+        {
+          "description": "Id for the API key",
+          "name": "id",
+          "required": true,
           "type": {
             "kind": "instance_of",
             "type": {
-              "name": "long",
+              "name": "Id",
               "namespace": "_types"
             }
           }
         },
         {
-          "description": "Id for the API key",
-          "name": "id",
+          "description": "Name of the API key.",
+          "name": "name",
           "required": true,
           "type": {
             "kind": "instance_of",
             "type": {
-              "name": "Id",
+              "name": "Name",
               "namespace": "_types"
             }
           }
         },
         {
-          "description": "Invalidation status for the API key.\nIf the key has been invalidated, it has a value of `true`. Otherwise, it is `false`.",
-          "name": "invalidated",
-          "required": false,
+          "availability": {
+            "serverless": {},
+            "stack": {
+              "since": "8.10.0"
+            }
+          },
+          "description": "The type of the API key (e.g. `rest` or `cross_cluster`).",
+          "name": "type",
+          "required": true,
           "type": {
             "kind": "instance_of",
             "type": {
-              "name": "boolean",
-              "namespace": "_builtins"
+              "name": "ApiKeyType",
+              "namespace": "security._types"
             }
           }
         },
         {
-          "description": "Name of the API key.",
-          "name": "name",
+          "description": "Creation time for the API key in milliseconds.",
+          "name": "creation",
           "required": true,
           "type": {
             "kind": "instance_of",
+            "generics": [
+              {
+                "kind": "instance_of",
+                "type": {
+                  "name": "UnitMillis",
+                  "namespace": "_types"
+                }
+              }
+            ],
             "type": {
-              "name": "Name",
+              "name": "EpochTime",
               "namespace": "_types"
             }
           }
         },
         {
-          "description": "Realm name of the principal for which this API key was created.",
-          "name": "realm",
+          "description": "Expiration time for the API key in milliseconds.",
+          "name": "expiration",
           "required": false,
           "type": {
             "kind": "instance_of",
+            "generics": [
+              {
+                "kind": "instance_of",
+                "type": {
+                  "name": "UnitMillis",
+                  "namespace": "_types"
+                }
+              }
+            ],
             "type": {
-              "name": "string",
+              "name": "EpochTime",
+              "namespace": "_types"
+            }
+          }
+        },
+        {
+          "description": "Invalidation status for the API key.\nIf the key has been invalidated, it has a value of `true`. Otherwise, it is `false`.",
+          "name": "invalidated",
+          "required": true,
+          "type": {
+            "kind": "instance_of",
+            "type": {
+              "name": "boolean",
               "namespace": "_builtins"
             }
           }
@@ -184016,24 +188878,33 @@
           "availability": {
             "serverless": {},
             "stack": {
-              "since": "8.14.0"
+              "since": "8.12.0"
             }
           },
-          "description": "Realm type of the principal for which this API key was created",
-          "name": "realm_type",
+          "description": "If the key has been invalidated, invalidation time in milliseconds.",
+          "name": "invalidation",
           "required": false,
           "type": {
             "kind": "instance_of",
+            "generics": [
+              {
+                "kind": "instance_of",
+                "type": {
+                  "name": "UnitMillis",
+                  "namespace": "_types"
+                }
+              }
+            ],
             "type": {
-              "name": "string",
-              "namespace": "_builtins"
+              "name": "EpochTime",
+              "namespace": "_types"
             }
           }
         },
         {
           "description": "Principal for which this API key was created",
           "name": "username",
-          "required": false,
+          "required": true,
           "type": {
             "kind": "instance_of",
             "type": {
@@ -184042,6 +188913,18 @@
             }
           }
         },
+        {
+          "description": "Realm name of the principal for which this API key was created.",
+          "name": "realm",
+          "required": true,
+          "type": {
+            "kind": "instance_of",
+            "type": {
+              "name": "string",
+              "namespace": "_builtins"
+            }
+          }
+        },
         {
           "availability": {
             "serverless": {},
@@ -184049,8 +188932,8 @@
               "since": "8.14.0"
             }
           },
-          "description": "The profile uid for the API key owner principal, if requested and if it exists",
-          "name": "profile_uid",
+          "description": "Realm type of the principal for which this API key was created",
+          "name": "realm_type",
           "required": false,
           "type": {
             "kind": "instance_of",
@@ -184069,7 +188952,7 @@
           },
           "description": "Metadata of the API key",
           "name": "metadata",
-          "required": false,
+          "required": true,
           "type": {
             "kind": "instance_of",
             "type": {
@@ -184134,6 +189017,43 @@
           }
         },
         {
+          "availability": {
+            "serverless": {},
+            "stack": {
+              "since": "8.10.0"
+            }
+          },
+          "description": "The access granted to cross-cluster API keys.\nThe access is composed of permissions for cross cluster search and cross cluster replication.\nAt least one of them must be specified.\nWhen specified, the new access assignment fully replaces the previously assigned access.",
+          "name": "access",
+          "required": false,
+          "type": {
+            "kind": "instance_of",
+            "type": {
+              "name": "Access",
+              "namespace": "security._types"
+            }
+          }
+        },
+        {
+          "availability": {
+            "serverless": {},
+            "stack": {
+              "since": "8.14.0"
+            }
+          },
+          "description": "The profile uid for the API key owner principal, if requested and if it exists",
+          "name": "profile_uid",
+          "required": false,
+          "type": {
+            "kind": "instance_of",
+            "type": {
+              "name": "string",
+              "namespace": "_builtins"
+            }
+          }
+        },
+        {
+          "description": "Sorting values when using the `sort` parameter with the `security.query_api_keys` API.",
           "name": "_sort",
           "required": false,
           "type": {
@@ -184145,7 +189065,23 @@
           }
         }
       ],
-      "specLocation": "security/_types/ApiKey.ts#L26-L88"
+      "specLocation": "security/_types/ApiKey.ts#L27-L113"
+    },
+    {
+      "kind": "enum",
+      "members": [
+        {
+          "name": "rest"
+        },
+        {
+          "name": "cross_cluster"
+        }
+      ],
+      "name": {
+        "name": "ApiKeyType",
+        "namespace": "security._types"
+      },
+      "specLocation": "security/_types/ApiKey.ts#L115-L118"
     },
     {
       "kind": "interface",
@@ -184166,7 +189102,7 @@
           }
         }
       ],
-      "specLocation": "security/_types/Privileges.ts#L340-L342"
+      "specLocation": "security/_types/Privileges.ts#L372-L374"
     },
     {
       "kind": "interface",
@@ -184683,7 +189619,7 @@
           }
         }
       ],
-      "specLocation": "security/_types/Privileges.ts#L336-L338"
+      "specLocation": "security/_types/Privileges.ts#L368-L370"
     },
     {
       "kind": "enum",
@@ -184796,7 +189732,7 @@
         "name": "IndexPrivilege",
         "namespace": "security._types"
       },
-      "specLocation": "security/_types/Privileges.ts#L292-L334"
+      "specLocation": "security/_types/Privileges.ts#L324-L366"
     },
     {
       "kind": "interface",
@@ -184875,7 +189811,7 @@
           }
         }
       ],
-      "specLocation": "security/_types/Privileges.ts#L197-L221"
+      "specLocation": "security/_types/Privileges.ts#L198-L222"
     },
     {
       "kind": "type_alias",
@@ -184889,7 +189825,7 @@
         "name": "IndicesPrivilegesQuery",
         "namespace": "security._types"
       },
-      "specLocation": "security/_types/Privileges.ts#L247-L255",
+      "specLocation": "security/_types/Privileges.ts#L279-L287",
       "type": {
         "kind": "union_of",
         "items": [
@@ -184939,7 +189875,7 @@
           }
         }
       ],
-      "specLocation": "security/_types/Privileges.ts#L344-L346"
+      "specLocation": "security/_types/Privileges.ts#L376-L378"
     },
     {
       "kind": "interface",
@@ -184973,6 +189909,135 @@
       ],
       "specLocation": "security/_types/RealmInfo.ts#L22-L25"
     },
+    {
+      "kind": "interface",
+      "name": {
+        "name": "RemoteIndicesPrivileges",
+        "namespace": "security._types"
+      },
+      "properties": [
+        {
+          "description": "A list of cluster aliases to which the permissions in this entry apply.",
+          "name": "clusters",
+          "required": true,
+          "type": {
+            "kind": "instance_of",
+            "type": {
+              "name": "Names",
+              "namespace": "_types"
+            }
+          }
+        },
+        {
+          "description": "The document fields that the owners of the role have read access to.",
+          "docId": "field-and-document-access-control",
+          "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/field-and-document-access-control.html",
+          "name": "field_security",
+          "required": false,
+          "type": {
+            "kind": "instance_of",
+            "type": {
+              "name": "FieldSecurity",
+              "namespace": "security._types"
+            }
+          }
+        },
+        {
+          "description": "A list of indices (or index name patterns) to which the permissions in this entry apply.",
+          "name": "names",
+          "required": true,
+          "type": {
+            "kind": "instance_of",
+            "type": {
+              "name": "Indices",
+              "namespace": "_types"
+            }
+          }
+        },
+        {
+          "description": "The index level privileges that owners of the role have on the specified indices.",
+          "name": "privileges",
+          "required": true,
+          "type": {
+            "kind": "array_of",
+            "value": {
+              "kind": "instance_of",
+              "type": {
+                "name": "IndexPrivilege",
+                "namespace": "security._types"
+              }
+            }
+          }
+        },
+        {
+          "description": "A search query that defines the documents the owners of the role have access to. A document within the specified indices must match this query for it to be accessible by the owners of the role.",
+          "name": "query",
+          "required": false,
+          "type": {
+            "kind": "instance_of",
+            "type": {
+              "name": "IndicesPrivilegesQuery",
+              "namespace": "security._types"
+            }
+          }
+        },
+        {
+          "availability": {
+            "stack": {}
+          },
+          "description": "Set to `true` if using wildcard or regular expressions for patterns that cover restricted indices. Implicitly, restricted indices have limited privileges that can cause pattern tests to fail. If restricted indices are explicitly included in the `names` list, Elasticsearch checks privileges against these indices regardless of the value set for `allow_restricted_indices`.",
+          "name": "allow_restricted_indices",
+          "required": false,
+          "serverDefault": false,
+          "type": {
+            "kind": "instance_of",
+            "type": {
+              "name": "boolean",
+              "namespace": "_builtins"
+            }
+          }
+        }
+      ],
+      "specLocation": "security/_types/Privileges.ts#L225-L253"
+    },
+    {
+      "kind": "interface",
+      "name": {
+        "name": "ReplicationAccess",
+        "namespace": "security._types"
+      },
+      "properties": [
+        {
+          "description": "A list of indices (or index name patterns) to which the permissions in this entry apply.",
+          "name": "names",
+          "required": true,
+          "type": {
+            "kind": "array_of",
+            "value": {
+              "kind": "instance_of",
+              "type": {
+                "name": "IndexName",
+                "namespace": "_types"
+              }
+            }
+          }
+        },
+        {
+          "description": "This needs to be set to true if the patterns in the names field should cover system indices.",
+          "name": "allow_restricted_indices",
+          "required": false,
+          "serverDefault": false,
+          "type": {
+            "kind": "instance_of",
+            "type": {
+              "name": "boolean",
+              "namespace": "_builtins"
+            }
+          }
+        }
+      ],
+      "specLocation": "security/_types/Privileges.ts#L380-L390"
+    },
     {
       "kind": "interface",
       "name": {
@@ -185463,7 +190528,7 @@
         "name": "RoleTemplateInlineQuery",
         "namespace": "security._types"
       },
-      "specLocation": "security/_types/Privileges.ts#L289-L290",
+      "specLocation": "security/_types/Privileges.ts#L321-L322",
       "type": {
         "kind": "union_of",
         "items": [
@@ -185493,8 +190558,8 @@
       "properties": [
         {
           "description": "When you create a role, you can specify a query that defines the document level security permissions. You can optionally\nuse Mustache templates in the role query to insert the username of the current authenticated user into the role.\nLike other places in Elasticsearch that support templating or scripting, you can specify inline, stored, or file-based\ntemplates and define custom parameters. You access the details for the current authenticated user through the _user parameter.",
-          "docId": "templating-role-query",
-          "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/field-and-document-access-control.html#templating-role-query",
+          "extDocId": "templating-role-query",
+          "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/field-and-document-access-control.html#templating-role-query",
           "name": "template",
           "required": false,
           "type": {
@@ -185506,7 +190571,7 @@
           }
         }
       ],
-      "specLocation": "security/_types/Privileges.ts#L257-L267"
+      "specLocation": "security/_types/Privileges.ts#L289-L299"
     },
     {
       "kind": "interface",
@@ -185594,7 +190659,74 @@
         }
       ],
       "shortcutProperty": "source",
-      "specLocation": "security/_types/Privileges.ts#L269-L287"
+      "specLocation": "security/_types/Privileges.ts#L301-L319"
+    },
+    {
+      "kind": "interface",
+      "name": {
+        "name": "SearchAccess",
+        "namespace": "security._types"
+      },
+      "properties": [
+        {
+          "description": "The document fields that the owners of the role have read access to.",
+          "docId": "field-and-document-access-control",
+          "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/field-and-document-access-control.html",
+          "name": "field_security",
+          "required": false,
+          "type": {
+            "kind": "instance_of",
+            "type": {
+              "name": "FieldSecurity",
+              "namespace": "security._types"
+            }
+          }
+        },
+        {
+          "description": "A list of indices (or index name patterns) to which the permissions in this entry apply.",
+          "name": "names",
+          "required": true,
+          "type": {
+            "kind": "array_of",
+            "value": {
+              "kind": "instance_of",
+              "type": {
+                "name": "IndexName",
+                "namespace": "_types"
+              }
+            }
+          }
+        },
+        {
+          "description": "A search query that defines the documents the owners of the role have access to. A document within the specified indices must match this query for it to be accessible by the owners of the role.",
+          "name": "query",
+          "required": false,
+          "type": {
+            "kind": "instance_of",
+            "type": {
+              "name": "IndicesPrivilegesQuery",
+              "namespace": "security._types"
+            }
+          }
+        },
+        {
+          "availability": {
+            "stack": {}
+          },
+          "description": "Set to `true` if using wildcard or regular expressions for patterns that cover restricted indices. Implicitly, restricted indices have limited privileges that can cause pattern tests to fail. If restricted indices are explicitly included in the `names` list, Elasticsearch checks privileges against these indices regardless of the value set for `allow_restricted_indices`.",
+          "name": "allow_restricted_indices",
+          "required": false,
+          "serverDefault": false,
+          "type": {
+            "kind": "instance_of",
+            "type": {
+              "name": "boolean",
+              "namespace": "_builtins"
+            }
+          }
+        }
+      ],
+      "specLocation": "security/_types/Privileges.ts#L392-L412"
     },
     {
       "kind": "enum",
@@ -185805,7 +190937,7 @@
           }
         }
       ],
-      "specLocation": "security/_types/Privileges.ts#L223-L245"
+      "specLocation": "security/_types/Privileges.ts#L255-L277"
     },
     {
       "kind": "interface",
@@ -186128,7 +191260,7 @@
           }
         ]
       },
-      "description": "Creates or updates a user profile on behalf of another user.",
+      "description": "Activate a user profile.\n\nCreate or update a user profile on behalf of another user.",
       "inherits": {
         "type": {
           "name": "RequestBase",
@@ -186141,7 +191273,7 @@
       },
       "path": [],
       "query": [],
-      "specLocation": "security/activate_user_profile/Request.ts#L23-L37"
+      "specLocation": "security/activate_user_profile/Request.ts#L23-L39"
     },
     {
       "kind": "response",
@@ -186161,6 +191293,38 @@
       },
       "specLocation": "security/activate_user_profile/Response.ts#L22-L24"
     },
+    {
+      "kind": "interface",
+      "name": {
+        "name": "AuthenticateApiKey",
+        "namespace": "security.authenticate"
+      },
+      "properties": [
+        {
+          "name": "id",
+          "required": true,
+          "type": {
+            "kind": "instance_of",
+            "type": {
+              "name": "Id",
+              "namespace": "_types"
+            }
+          }
+        },
+        {
+          "name": "name",
+          "required": false,
+          "type": {
+            "kind": "instance_of",
+            "type": {
+              "name": "Name",
+              "namespace": "_types"
+            }
+          }
+        }
+      ],
+      "specLocation": "security/authenticate/SecurityAuthenticateResponse.ts#L44-L47"
+    },
     {
       "kind": "request",
       "attachedBehaviors": [
@@ -186169,7 +191333,7 @@
       "body": {
         "kind": "no_body"
       },
-      "description": "Authenticate a user.\nAuthenticates a user and returns information about the authenticated user.\nInclude the user information in a [basic auth header](https://en.wikipedia.org/wiki/Basic_access_authentication).\nA successful call returns a JSON structure that shows user information such as their username, the roles that are assigned to the user, any assigned metadata, and information about the realms that authenticated and authorized the user.\nIf the user cannot be authenticated, this API returns a 401 status code.",
+      "description": "Authenticate a user.\n\nAuthenticates a user and returns information about the authenticated user.\nInclude the user information in a [basic auth header](https://en.wikipedia.org/wiki/Basic_access_authentication).\nA successful call returns a JSON structure that shows user information such as their username, the roles that are assigned to the user, any assigned metadata, and information about the realms that authenticated and authorized the user.\nIf the user cannot be authenticated, this API returns a 401 status code.",
       "inherits": {
         "type": {
           "name": "RequestBase",
@@ -186182,7 +191346,7 @@
       },
       "path": [],
       "query": [],
-      "specLocation": "security/authenticate/SecurityAuthenticateRequest.ts#L22-L32"
+      "specLocation": "security/authenticate/SecurityAuthenticateRequest.ts#L22-L33"
     },
     {
       "kind": "response",
@@ -186195,8 +191359,8 @@
             "type": {
               "kind": "instance_of",
               "type": {
-                "name": "ApiKey",
-                "namespace": "security._types"
+                "name": "AuthenticateApiKey",
+                "namespace": "security.authenticate"
               }
             }
           },
@@ -186349,7 +191513,7 @@
         "name": "Response",
         "namespace": "security.authenticate"
       },
-      "specLocation": "security/authenticate/SecurityAuthenticateResponse.ts#L25-L43"
+      "specLocation": "security/authenticate/SecurityAuthenticateResponse.ts#L24-L42"
     },
     {
       "kind": "interface",
@@ -186414,7 +191578,7 @@
           }
         ]
       },
-      "description": "The role management APIs are generally the preferred way to manage roles, rather than using file-based role management.\nThe bulk delete roles API cannot delete roles that are defined in roles files.",
+      "description": "Bulk delete roles.\n\nThe role management APIs are generally the preferred way to manage roles, rather than using file-based role management.\nThe bulk delete roles API cannot delete roles that are defined in roles files.",
       "inherits": {
         "type": {
           "name": "RequestBase",
@@ -186440,7 +191604,7 @@
           }
         }
       ],
-      "specLocation": "security/bulk_delete_role/SecurityBulkDeleteRoleRequest.ts#L23-L41"
+      "specLocation": "security/bulk_delete_role/SecurityBulkDeleteRoleRequest.ts#L23-L43"
     },
     {
       "kind": "response",
@@ -186530,7 +191694,7 @@
           }
         ]
       },
-      "description": "The role management APIs are generally the preferred way to manage roles, rather than using file-based role management.\nThe bulk create or update roles API cannot update roles that are defined in roles files.",
+      "description": "Bulk create or update roles.\n\nThe role management APIs are generally the preferred way to manage roles, rather than using file-based role management.\nThe bulk create or update roles API cannot update roles that are defined in roles files.",
       "inherits": {
         "type": {
           "name": "RequestBase",
@@ -186556,7 +191720,7 @@
           }
         }
       ],
-      "specLocation": "security/bulk_put_role/SecurityBulkPutRoleRequest.ts#L25-L43"
+      "specLocation": "security/bulk_put_role/SecurityBulkPutRoleRequest.ts#L25-L45"
     },
     {
       "kind": "response",
@@ -186662,7 +191826,7 @@
           }
         ]
       },
-      "description": "Changes the passwords of users in the native realm and built-in users.",
+      "description": "Change passwords.\n\nChange the passwords of users in the native realm and built-in users.",
       "inherits": {
         "type": {
           "name": "RequestBase",
@@ -186701,7 +191865,7 @@
           }
         }
       ],
-      "specLocation": "security/change_password/SecurityChangePasswordRequest.ts#L23-L51"
+      "specLocation": "security/change_password/SecurityChangePasswordRequest.ts#L23-L54"
     },
     {
       "kind": "response",
@@ -186723,7 +191887,7 @@
       "body": {
         "kind": "no_body"
       },
-      "description": "Evicts a subset of all entries from the API key cache.\nThe cache is also automatically cleared on state changes of the security index.",
+      "description": "Clear the API key cache.\n\nEvict a subset of all entries from the API key cache.\nThe cache is also automatically cleared on state changes of the security index.",
       "inherits": {
         "type": {
           "name": "RequestBase",
@@ -186749,7 +191913,7 @@
         }
       ],
       "query": [],
-      "specLocation": "security/clear_api_key_cache/SecurityClearApiKeyCacheRequest.ts#L23-L40"
+      "specLocation": "security/clear_api_key_cache/SecurityClearApiKeyCacheRequest.ts#L23-L42"
     },
     {
       "kind": "response",
@@ -186817,7 +191981,7 @@
       "body": {
         "kind": "no_body"
       },
-      "description": "Evicts application privileges from the native application privileges cache.",
+      "description": "Clear the privileges cache.\n\nEvict privileges from the native application privilege cache.\nThe cache is also automatically cleared for applications that have their privileges updated.",
       "inherits": {
         "type": {
           "name": "RequestBase",
@@ -186843,7 +192007,7 @@
         }
       ],
       "query": [],
-      "specLocation": "security/clear_cached_privileges/SecurityClearCachedPrivilegesRequest.ts#L23-L32"
+      "specLocation": "security/clear_cached_privileges/SecurityClearCachedPrivilegesRequest.ts#L23-L36"
     },
     {
       "kind": "response",
@@ -186911,7 +192075,7 @@
       "body": {
         "kind": "no_body"
       },
-      "description": "Evicts users from the user cache. Can completely clear the cache or evict specific users.",
+      "description": "Clear the user cache.\n\nEvict users from the user cache. You can completely clear the cache or evict specific users.",
       "inherits": {
         "type": {
           "name": "RequestBase",
@@ -186953,7 +192117,7 @@
           }
         }
       ],
-      "specLocation": "security/clear_cached_realms/SecurityClearCachedRealmsRequest.ts#L23-L35"
+      "specLocation": "security/clear_cached_realms/SecurityClearCachedRealmsRequest.ts#L23-L38"
     },
     {
       "kind": "response",
@@ -187021,7 +192185,7 @@
       "body": {
         "kind": "no_body"
       },
-      "description": "Evicts roles from the native role cache.",
+      "description": "Clear the roles cache.\n\nEvict roles from the native role cache.",
       "inherits": {
         "type": {
           "name": "RequestBase",
@@ -187047,7 +192211,7 @@
         }
       ],
       "query": [],
-      "specLocation": "security/clear_cached_roles/ClearCachedRolesRequest.ts#L23-L32"
+      "specLocation": "security/clear_cached_roles/ClearCachedRolesRequest.ts#L23-L35"
     },
     {
       "kind": "response",
@@ -187115,7 +192279,7 @@
       "body": {
         "kind": "no_body"
       },
-      "description": "Evicts tokens from the service account token caches.",
+      "description": "Clear service account token caches.\n\nEvict a subset of all entries from the service account token caches.",
       "inherits": {
         "type": {
           "name": "RequestBase",
@@ -187165,7 +192329,7 @@
         }
       ],
       "query": [],
-      "specLocation": "security/clear_cached_service_tokens/ClearCachedServiceTokensRequest.ts#L23-L34"
+      "specLocation": "security/clear_cached_service_tokens/ClearCachedServiceTokensRequest.ts#L23-L38"
     },
     {
       "kind": "response",
@@ -187302,7 +192466,7 @@
           }
         ]
       },
-      "description": "Create an API key.\nCreates an API key for access without requiring basic authentication.\nA successful request returns a JSON structure that contains the API key, its unique id, and its name.\nIf applicable, it also returns expiration information for the API key in milliseconds.\nNOTE: By default, API keys never expire. You can specify expiration information when you create the API keys.",
+      "description": "Create an API key.\n\nCreate an API key for access without requiring basic authentication.\nA successful request returns a JSON structure that contains the API key, its unique id, and its name.\nIf applicable, it also returns expiration information for the API key in milliseconds.\nNOTE: By default, API keys never expire. You can specify expiration information when you create the API keys.",
       "inherits": {
         "type": {
           "name": "RequestBase",
@@ -187328,7 +192492,7 @@
           }
         }
       ],
-      "specLocation": "security/create_api_key/SecurityCreateApiKeyRequest.ts#L26-L59"
+      "specLocation": "security/create_api_key/SecurityCreateApiKeyRequest.ts#L26-L60"
     },
     {
       "kind": "response",
@@ -187409,6 +192573,161 @@
       },
       "specLocation": "security/create_api_key/SecurityCreateApiKeyResponse.ts#L23-L50"
     },
+    {
+      "kind": "request",
+      "attachedBehaviors": [
+        "CommonQueryParameters"
+      ],
+      "body": {
+        "kind": "properties",
+        "properties": [
+          {
+            "description": "The access to be granted to this API key.\nThe access is composed of permissions for cross-cluster search and cross-cluster replication.\nAt least one of them must be specified.\n\nNOTE: No explicit privileges should be specified for either search or replication access.\nThe creation process automatically converts the access specification to a role descriptor which has relevant privileges assigned accordingly.",
+            "name": "access",
+            "required": true,
+            "type": {
+              "kind": "instance_of",
+              "type": {
+                "name": "Access",
+                "namespace": "security._types"
+              }
+            }
+          },
+          {
+            "description": "Expiration time for the API key.\nBy default, API keys never expire.",
+            "name": "expiration",
+            "required": false,
+            "type": {
+              "kind": "instance_of",
+              "type": {
+                "name": "Duration",
+                "namespace": "_types"
+              }
+            }
+          },
+          {
+            "description": "Arbitrary metadata that you want to associate with the API key.\nIt supports nested data structure.\nWithin the metadata object, keys beginning with `_` are reserved for system usage.",
+            "name": "metadata",
+            "required": false,
+            "type": {
+              "kind": "instance_of",
+              "type": {
+                "name": "Metadata",
+                "namespace": "_types"
+              }
+            }
+          },
+          {
+            "description": "Specifies the name for this API key.",
+            "name": "name",
+            "required": true,
+            "type": {
+              "kind": "instance_of",
+              "type": {
+                "name": "Name",
+                "namespace": "_types"
+              }
+            }
+          }
+        ]
+      },
+      "description": "Create a cross-cluster API key.\n\nCreate an API key of the `cross_cluster` type for the API key based remote cluster access.\nA `cross_cluster` API key cannot be used to authenticate through the REST interface.\n\nIMPORTANT: To authenticate this request you must use a credential that is not an API key. Even if you use an API key that has the required privilege, the API returns an error.\n\nCross-cluster API keys are created by the Elasticsearch API key service, which is automatically enabled.\n\nNOTE: Unlike REST API keys, a cross-cluster API key does not capture permissions of the authenticated user. The API key’s effective permission is exactly as specified with the `access` property.\n\nA successful request returns a JSON structure that contains the API key, its unique ID, and its name. If applicable, it also returns expiration information for the API key in milliseconds.\n\nBy default, API keys never expire. You can specify expiration information when you create the API keys.\n\nCross-cluster API keys can only be updated with the update cross-cluster API key API.\nAttempting to update them with the update REST API key API or the bulk update REST API keys API will result in an error.",
+      "inherits": {
+        "type": {
+          "name": "RequestBase",
+          "namespace": "_types"
+        }
+      },
+      "name": {
+        "name": "Request",
+        "namespace": "security.create_cross_cluster_api_key"
+      },
+      "path": [],
+      "query": [],
+      "specLocation": "security/create_cross_cluster_api_key/CreateCrossClusterApiKeyRequest.ts#L25-L73"
+    },
+    {
+      "kind": "response",
+      "body": {
+        "kind": "properties",
+        "properties": [
+          {
+            "description": "Generated API key.",
+            "name": "api_key",
+            "required": true,
+            "type": {
+              "kind": "instance_of",
+              "type": {
+                "name": "string",
+                "namespace": "_builtins"
+              }
+            }
+          },
+          {
+            "description": "Expiration in milliseconds for the API key.",
+            "name": "expiration",
+            "required": false,
+            "type": {
+              "kind": "instance_of",
+              "generics": [
+                {
+                  "kind": "instance_of",
+                  "type": {
+                    "name": "UnitMillis",
+                    "namespace": "_types"
+                  }
+                }
+              ],
+              "type": {
+                "name": "DurationValue",
+                "namespace": "_types"
+              }
+            }
+          },
+          {
+            "description": "Unique ID for this API key.",
+            "name": "id",
+            "required": true,
+            "type": {
+              "kind": "instance_of",
+              "type": {
+                "name": "Id",
+                "namespace": "_types"
+              }
+            }
+          },
+          {
+            "description": "Specifies the name for this API key.",
+            "name": "name",
+            "required": true,
+            "type": {
+              "kind": "instance_of",
+              "type": {
+                "name": "Name",
+                "namespace": "_types"
+              }
+            }
+          },
+          {
+            "description": "API key credentials which is the base64-encoding of\nthe UTF-8 representation of `id` and `api_key` joined\nby a colon (`:`).",
+            "name": "encoded",
+            "required": true,
+            "type": {
+              "kind": "instance_of",
+              "type": {
+                "name": "string",
+                "namespace": "_builtins"
+              }
+            }
+          }
+        ]
+      },
+      "name": {
+        "name": "Response",
+        "namespace": "security.create_cross_cluster_api_key"
+      },
+      "specLocation": "security/create_cross_cluster_api_key/CreateCrossClusterApiKeyResponse.ts#L23-L48"
+    },
     {
       "kind": "request",
       "attachedBehaviors": [
@@ -187417,7 +192736,7 @@
       "body": {
         "kind": "no_body"
       },
-      "description": "Creates a service accounts token for access without requiring basic authentication.",
+      "description": "Create a service account token.\n\nCreate a service accounts token for access without requiring basic authentication.",
       "inherits": {
         "type": {
           "name": "RequestBase",
@@ -187480,7 +192799,7 @@
           }
         }
       ],
-      "specLocation": "security/create_service_token/CreateServiceTokenRequest.ts#L23-L38"
+      "specLocation": "security/create_service_token/CreateServiceTokenRequest.ts#L23-L41"
     },
     {
       "kind": "response",
@@ -187578,7 +192897,7 @@
       "body": {
         "kind": "no_body"
       },
-      "description": "Removes application privileges.",
+      "description": "Delete application privileges.",
       "inherits": {
         "type": {
           "name": "RequestBase",
@@ -187629,7 +192948,7 @@
           }
         }
       ],
-      "specLocation": "security/delete_privileges/SecurityDeletePrivilegesRequest.ts#L23-L36"
+      "specLocation": "security/delete_privileges/SecurityDeletePrivilegesRequest.ts#L23-L38"
     },
     {
       "kind": "response",
@@ -187679,7 +192998,7 @@
       "body": {
         "kind": "no_body"
       },
-      "description": "Removes roles in the native realm.",
+      "description": "Delete roles.\n\nDelete roles in the native realm.",
       "inherits": {
         "type": {
           "name": "RequestBase",
@@ -187718,7 +193037,7 @@
           }
         }
       ],
-      "specLocation": "security/delete_role/SecurityDeleteRoleRequest.ts#L23-L35"
+      "specLocation": "security/delete_role/SecurityDeleteRoleRequest.ts#L23-L38"
     },
     {
       "kind": "response",
@@ -187752,7 +193071,7 @@
       "body": {
         "kind": "no_body"
       },
-      "description": "Removes role mappings.",
+      "description": "Delete role mappings.",
       "inherits": {
         "type": {
           "name": "RequestBase",
@@ -187791,7 +193110,7 @@
           }
         }
       ],
-      "specLocation": "security/delete_role_mapping/SecurityDeleteRoleMappingRequest.ts#L23-L35"
+      "specLocation": "security/delete_role_mapping/SecurityDeleteRoleMappingRequest.ts#L23-L36"
     },
     {
       "kind": "response",
@@ -187825,7 +193144,7 @@
       "body": {
         "kind": "no_body"
       },
-      "description": "Deletes a service account token.",
+      "description": "Delete service account tokens.\n\nDelete service account tokens for a service in a specified namespace.",
       "inherits": {
         "type": {
           "name": "RequestBase",
@@ -187888,7 +193207,7 @@
           }
         }
       ],
-      "specLocation": "security/delete_service_token/DeleteServiceTokenRequest.ts#L23-L37"
+      "specLocation": "security/delete_service_token/DeleteServiceTokenRequest.ts#L23-L41"
     },
     {
       "kind": "response",
@@ -187922,7 +193241,7 @@
       "body": {
         "kind": "no_body"
       },
-      "description": "Deletes users from the native realm.",
+      "description": "Delete users.\n\nDelete users from the native realm.",
       "inherits": {
         "type": {
           "name": "RequestBase",
@@ -187961,7 +193280,7 @@
           }
         }
       ],
-      "specLocation": "security/delete_user/SecurityDeleteUserRequest.ts#L23-L34"
+      "specLocation": "security/delete_user/SecurityDeleteUserRequest.ts#L23-L37"
     },
     {
       "kind": "response",
@@ -187995,7 +193314,7 @@
       "body": {
         "kind": "no_body"
       },
-      "description": "Disables users in the native realm.",
+      "description": "Disable users.\n\nDisable users in the native realm.",
       "inherits": {
         "type": {
           "name": "RequestBase",
@@ -188034,7 +193353,7 @@
           }
         }
       ],
-      "specLocation": "security/disable_user/SecurityDisableUserRequest.ts#L23-L34"
+      "specLocation": "security/disable_user/SecurityDisableUserRequest.ts#L23-L37"
     },
     {
       "kind": "response",
@@ -188056,7 +193375,7 @@
       "body": {
         "kind": "no_body"
       },
-      "description": "Disables a user profile so it's not visible in user profile searches.",
+      "description": "Disable a user profile.\n\nDisable user profiles so that they are not visible in user profile searches.",
       "inherits": {
         "type": {
           "name": "RequestBase",
@@ -188096,7 +193415,7 @@
           }
         }
       ],
-      "specLocation": "security/disable_user_profile/Request.ts#L24-L47"
+      "specLocation": "security/disable_user_profile/Request.ts#L24-L49"
     },
     {
       "kind": "response",
@@ -188124,7 +193443,7 @@
       "body": {
         "kind": "no_body"
       },
-      "description": "Enables users in the native realm.",
+      "description": "Enable users.\n\nEnable users in the native realm.",
       "inherits": {
         "type": {
           "name": "RequestBase",
@@ -188163,7 +193482,7 @@
           }
         }
       ],
-      "specLocation": "security/enable_user/SecurityEnableUserRequest.ts#L23-L34"
+      "specLocation": "security/enable_user/SecurityEnableUserRequest.ts#L23-L37"
     },
     {
       "kind": "response",
@@ -188185,7 +193504,7 @@
       "body": {
         "kind": "no_body"
       },
-      "description": "Enables a user profile so it's visible in user profile searches.",
+      "description": "Enable a user profile.\n\nEnable user profiles to make them visible in user profile searches.",
       "inherits": {
         "type": {
           "name": "RequestBase",
@@ -188225,7 +193544,7 @@
           }
         }
       ],
-      "specLocation": "security/enable_user_profile/Request.ts#L24-L47"
+      "specLocation": "security/enable_user_profile/Request.ts#L24-L49"
     },
     {
       "kind": "response",
@@ -188253,7 +193572,7 @@
       "body": {
         "kind": "no_body"
       },
-      "description": "Enables a Kibana instance to configure itself for communication with a secured Elasticsearch cluster.",
+      "description": "Enroll Kibana.\n\nEnable a Kibana instance to configure itself for communication with a secured Elasticsearch cluster.",
       "inherits": {
         "type": {
           "name": "RequestBase",
@@ -188266,7 +193585,7 @@
       },
       "path": [],
       "query": [],
-      "specLocation": "security/enroll_kibana/Request.ts#L22-L27"
+      "specLocation": "security/enroll_kibana/Request.ts#L22-L29"
     },
     {
       "kind": "response",
@@ -188343,7 +193662,7 @@
       "body": {
         "kind": "no_body"
       },
-      "description": "Allows a new node to join an existing cluster with security features enabled.",
+      "description": "Enroll a node.\n\nEnroll a new node to allow it to join an existing cluster with security features enabled.",
       "inherits": {
         "type": {
           "name": "RequestBase",
@@ -188356,7 +193675,7 @@
       },
       "path": [],
       "query": [],
-      "specLocation": "security/enroll_node/Request.ts#L22-L27"
+      "specLocation": "security/enroll_node/Request.ts#L22-L29"
     },
     {
       "kind": "response",
@@ -188448,7 +193767,7 @@
       "body": {
         "kind": "no_body"
       },
-      "description": "Get API key information.\nRetrieves information for one or more API keys.\nNOTE: If you have only the `manage_own_api_key` privilege, this API returns only the API keys that you own.\nIf you have `read_security`, `manage_api_key` or greater privileges (including `manage_security`), this API returns all API keys regardless of ownership.",
+      "description": "Get API key information.\n\nRetrieves information for one or more API keys.\nNOTE: If you have only the `manage_own_api_key` privilege, this API returns only the API keys that you own.\nIf you have `read_security`, `manage_api_key` or greater privileges (including `manage_security`), this API returns all API keys regardless of ownership.",
       "inherits": {
         "type": {
           "name": "RequestBase",
@@ -188580,7 +193899,7 @@
           }
         }
       ],
-      "specLocation": "security/get_api_key/SecurityGetApiKeyRequest.ts#L23-L87"
+      "specLocation": "security/get_api_key/SecurityGetApiKeyRequest.ts#L23-L88"
     },
     {
       "kind": "response",
@@ -188617,7 +193936,7 @@
       "body": {
         "kind": "no_body"
       },
-      "description": "Retrieves the list of cluster privileges and index privileges that are available in this version of Elasticsearch.",
+      "description": "Get builtin privileges.\n\nGet the list of cluster privileges and index privileges that are available in this version of Elasticsearch.",
       "inherits": {
         "type": {
           "name": "RequestBase",
@@ -188630,7 +193949,7 @@
       },
       "path": [],
       "query": [],
-      "specLocation": "security/get_builtin_privileges/SecurityGetBuiltinPrivilegesRequest.ts#L22-L28"
+      "specLocation": "security/get_builtin_privileges/SecurityGetBuiltinPrivilegesRequest.ts#L22-L32"
     },
     {
       "kind": "response",
@@ -188678,7 +193997,7 @@
       "body": {
         "kind": "no_body"
       },
-      "description": "Retrieves application privileges.",
+      "description": "Get application privileges.",
       "inherits": {
         "type": {
           "name": "RequestBase",
@@ -188716,7 +194035,7 @@
         }
       ],
       "query": [],
-      "specLocation": "security/get_privileges/SecurityGetPrivilegesRequest.ts#L23-L33"
+      "specLocation": "security/get_privileges/SecurityGetPrivilegesRequest.ts#L23-L35"
     },
     {
       "kind": "response",
@@ -188766,7 +194085,7 @@
       "body": {
         "kind": "no_body"
       },
-      "description": "The role management APIs are generally the preferred way to manage roles, rather than using file-based role management.\nThe get roles API cannot retrieve roles that are defined in roles files.",
+      "description": "Get roles.\n\nGet roles in the native realm.\nThe role management APIs are generally the preferred way to manage roles, rather than using file-based role management.\nThe get roles API cannot retrieve roles that are defined in roles files.",
       "inherits": {
         "type": {
           "name": "RequestBase",
@@ -188792,7 +194111,7 @@
         }
       ],
       "query": [],
-      "specLocation": "security/get_role/SecurityGetRoleRequest.ts#L23-L38"
+      "specLocation": "security/get_role/SecurityGetRoleRequest.ts#L23-L41"
     },
     {
       "kind": "response",
@@ -188993,7 +194312,7 @@
       "body": {
         "kind": "no_body"
       },
-      "description": "Retrieves role mappings.",
+      "description": "Get role mappings.\n\nRole mappings define which roles are assigned to each user.\nThe role mapping APIs are generally the preferred way to manage role mappings rather than using role mapping files.\nThe get role mappings API cannot retrieve role mappings that are defined in role mapping files.",
       "inherits": {
         "type": {
           "name": "RequestBase",
@@ -189019,7 +194338,7 @@
         }
       ],
       "query": [],
-      "specLocation": "security/get_role_mapping/SecurityGetRoleMappingRequest.ts#L23-L36"
+      "specLocation": "security/get_role_mapping/SecurityGetRoleMappingRequest.ts#L23-L42"
     },
     {
       "kind": "response",
@@ -189058,7 +194377,7 @@
       "body": {
         "kind": "no_body"
       },
-      "description": "This API returns a list of service accounts that match the provided path parameter(s).",
+      "description": "Get service accounts.\n\nGet a list of service accounts that match the provided path parameters.",
       "inherits": {
         "type": {
           "name": "RequestBase",
@@ -189096,7 +194415,7 @@
         }
       ],
       "query": [],
-      "specLocation": "security/get_service_accounts/GetServiceAccountsRequest.ts#L23-L41"
+      "specLocation": "security/get_service_accounts/GetServiceAccountsRequest.ts#L23-L44"
     },
     {
       "kind": "response",
@@ -189225,7 +194544,7 @@
       "body": {
         "kind": "no_body"
       },
-      "description": "Retrieves information of all service credentials for a service account.",
+      "description": "Get service account credentials.",
       "inherits": {
         "type": {
           "name": "RequestBase",
@@ -189263,7 +194582,7 @@
         }
       ],
       "query": [],
-      "specLocation": "security/get_service_credentials/GetServiceCredentialsRequest.ts#L23-L39"
+      "specLocation": "security/get_service_credentials/GetServiceCredentialsRequest.ts#L23-L41"
     },
     {
       "kind": "response",
@@ -189524,7 +194843,7 @@
           }
         ]
       },
-      "description": "Creates a bearer token for access without requiring basic authentication.",
+      "description": "Get a token.\n\nCreate a bearer token for access without requiring basic authentication.",
       "inherits": {
         "type": {
           "name": "RequestBase",
@@ -189537,7 +194856,7 @@
       },
       "path": [],
       "query": [],
-      "specLocation": "security/get_token/GetUserAccessTokenRequest.ts#L25-L39"
+      "specLocation": "security/get_token/GetUserAccessTokenRequest.ts#L25-L42"
     },
     {
       "kind": "response",
@@ -189669,7 +194988,7 @@
       "body": {
         "kind": "no_body"
       },
-      "description": "Retrieves information about users in the native realm and built-in users.",
+      "description": "Get users.\n\nGet information about users in the native realm and built-in users.",
       "inherits": {
         "type": {
           "name": "RequestBase",
@@ -189730,7 +195049,7 @@
           }
         }
       ],
-      "specLocation": "security/get_user/SecurityGetUserRequest.ts#L23-L41"
+      "specLocation": "security/get_user/SecurityGetUserRequest.ts#L23-L44"
     },
     {
       "kind": "response",
@@ -189769,7 +195088,7 @@
       "body": {
         "kind": "no_body"
       },
-      "description": "Retrieves security privileges for the logged in user.",
+      "description": "Get user privileges.",
       "inherits": {
         "type": {
           "name": "RequestBase",
@@ -189830,7 +195149,7 @@
           }
         }
       ],
-      "specLocation": "security/get_user_privileges/SecurityGetUserPrivilegesRequest.ts#L23-L36"
+      "specLocation": "security/get_user_privileges/SecurityGetUserPrivilegesRequest.ts#L23-L37"
     },
     {
       "kind": "response",
@@ -189966,7 +195285,7 @@
       "body": {
         "kind": "no_body"
       },
-      "description": "Retrieves a user's profile using the unique profile ID.",
+      "description": "Get a user profile.\n\nGet a user's profile using the unique profile ID.",
       "inherits": {
         "type": {
           "name": "RequestBase",
@@ -190035,7 +195354,7 @@
           }
         }
       ],
-      "specLocation": "security/get_user_profile/Request.ts#L23-L46"
+      "specLocation": "security/get_user_profile/Request.ts#L23-L48"
     },
     {
       "kind": "response",
@@ -190267,7 +195586,7 @@
           }
         ]
       },
-      "description": "Creates an API key on behalf of another user.\nThis API is similar to Create API keys, however it creates the API key for a user that is different than the user that runs the API.\nThe caller must have authentication credentials (either an access token, or a username and password) for the user on whose behalf the API key will be created.\nIt is not possible to use this API to create an API key without that user’s credentials.\nThe user, for whom the authentication credentials is provided, can optionally \"run as\" (impersonate) another user.\nIn this case, the API key will be created on behalf of the impersonated user.\n\nThis API is intended be used by applications that need to create and manage API keys for end users, but cannot guarantee that those users have permission to create API keys on their own behalf.\n\nA successful grant API key API call returns a JSON structure that contains the API key, its unique id, and its name.\nIf applicable, it also returns expiration information for the API key in milliseconds.\n\nBy default, API keys never expire. You can specify expiration information when you create the API keys.",
+      "description": "Grant an API key.\n\nCreate an API key on behalf of another user.\nThis API is similar to the create API keys API, however it creates the API key for a user that is different than the user that runs the API.\nThe caller must have authentication credentials (either an access token, or a username and password) for the user on whose behalf the API key will be created.\nIt is not possible to use this API to create an API key without that user’s credentials.\nThe user, for whom the authentication credentials is provided, can optionally \"run as\" (impersonate) another user.\nIn this case, the API key will be created on behalf of the impersonated user.\n\nThis API is intended be used by applications that need to create and manage API keys for end users, but cannot guarantee that those users have permission to create API keys on their own behalf.\n\nA successful grant API key API call returns a JSON structure that contains the API key, its unique id, and its name.\nIf applicable, it also returns expiration information for the API key in milliseconds.\n\nBy default, API keys never expire. You can specify expiration information when you create the API keys.",
       "inherits": {
         "type": {
           "name": "RequestBase",
@@ -190280,7 +195599,7 @@
       },
       "path": [],
       "query": [],
-      "specLocation": "security/grant_api_key/SecurityGrantApiKeyRequest.ts#L24-L75"
+      "specLocation": "security/grant_api_key/SecurityGrantApiKeyRequest.ts#L24-L77"
     },
     {
       "kind": "response",
@@ -190565,7 +195884,7 @@
           }
         ]
       },
-      "description": "Check user privileges.\nDetermines whether the specified user has a specified list of privileges.",
+      "description": "Check user privileges.\n\nDetermine whether the specified user has a specified list of privileges.",
       "inherits": {
         "type": {
           "name": "RequestBase",
@@ -190591,7 +195910,7 @@
         }
       ],
       "query": [],
-      "specLocation": "security/has_privileges/SecurityHasPrivilegesRequest.ts#L25-L44"
+      "specLocation": "security/has_privileges/SecurityHasPrivilegesRequest.ts#L25-L46"
     },
     {
       "kind": "type_alias",
@@ -190841,7 +196160,7 @@
           }
         ]
       },
-      "description": "Determines whether the users associated with the specified profile IDs have all the requested privileges.",
+      "description": "Check user profile privileges.\n\nDetermine whether the users associated with the specified user profile IDs have all the requested privileges.",
       "inherits": {
         "type": {
           "name": "RequestBase",
@@ -190854,7 +196173,7 @@
       },
       "path": [],
       "query": [],
-      "specLocation": "security/has_privileges_user_profile/Request.ts#L24-L38"
+      "specLocation": "security/has_privileges_user_profile/Request.ts#L24-L42"
     },
     {
       "kind": "response",
@@ -190981,7 +196300,7 @@
           }
         ]
       },
-      "description": "Invalidate API keys.\nInvalidates one or more API keys.\nThe `manage_api_key` privilege allows deleting any API keys.\nThe `manage_own_api_key` only allows deleting API keys that are owned by the user.\nIn addition, with the `manage_own_api_key` privilege, an invalidation request must be issued in one of the three formats:\n- Set the parameter `owner=true`.\n- Or, set both `username` and `realm_name` to match the user’s identity.\n- Or, if the request is issued by an API key, i.e. an API key invalidates itself, specify its ID in the `ids` field.",
+      "description": "Invalidate API keys.\n\nThis API invalidates API keys created by the create API key or grant API key APIs.\nInvalidated API keys fail authentication, but they can still be viewed using the get API key information and query API key information APIs, for at least the configured retention period, until they are automatically deleted.\nThe `manage_api_key` privilege allows deleting any API keys.\nThe `manage_own_api_key` only allows deleting API keys that are owned by the user.\nIn addition, with the `manage_own_api_key` privilege, an invalidation request must be issued in one of the three formats:\n- Set the parameter `owner=true`.\n- Or, set both `username` and `realm_name` to match the user’s identity.\n- Or, if the request is issued by an API key, that is to say an API key invalidates itself, specify its ID in the `ids` field.",
       "inherits": {
         "type": {
           "name": "RequestBase",
@@ -190994,7 +196313,7 @@
       },
       "path": [],
       "query": [],
-      "specLocation": "security/invalidate_api_key/SecurityInvalidateApiKeyRequest.ts#L23-L67"
+      "specLocation": "security/invalidate_api_key/SecurityInvalidateApiKeyRequest.ts#L23-L69"
     },
     {
       "kind": "response",
@@ -191116,7 +196435,7 @@
           }
         ]
       },
-      "description": "Invalidates one or more access tokens or refresh tokens.",
+      "description": "Invalidate a token.\n\nThe access tokens returned by the get token API have a finite period of time for which they are valid.\nAfter that time period, they can no longer be used.\nThe time period is defined by the `xpack.security.authc.token.timeout` setting.\n\nThe refresh tokens returned by the get token API are only valid for 24 hours. They can also be used exactly once.\nIf you want to invalidate one or more access or refresh tokens immediately, use this invalidate token API.",
       "inherits": {
         "type": {
           "name": "RequestBase",
@@ -191129,7 +196448,7 @@
       },
       "path": [],
       "query": [],
-      "specLocation": "security/invalidate_token/SecurityInvalidateTokenRequest.ts#L23-L35"
+      "specLocation": "security/invalidate_token/SecurityInvalidateTokenRequest.ts#L23-L43"
     },
     {
       "kind": "response",
@@ -191286,7 +196605,7 @@
           }
         }
       },
-      "description": "Adds or updates application privileges.",
+      "description": "Create or update application privileges.",
       "inherits": {
         "type": {
           "name": "RequestBase",
@@ -191312,7 +196631,7 @@
           }
         }
       ],
-      "specLocation": "security/put_privileges/SecurityPutPrivilegesRequest.ts#L25-L37"
+      "specLocation": "security/put_privileges/SecurityPutPrivilegesRequest.ts#L25-L38"
     },
     {
       "kind": "response",
@@ -191429,6 +196748,26 @@
               }
             }
           },
+          {
+            "availability": {
+              "stack": {
+                "since": "8.14.0"
+              }
+            },
+            "description": "A list of remote indices permissions entries.",
+            "name": "remote_indices",
+            "required": false,
+            "type": {
+              "kind": "array_of",
+              "value": {
+                "kind": "instance_of",
+                "type": {
+                  "name": "RemoteIndicesPrivileges",
+                  "namespace": "security._types"
+                }
+              }
+            }
+          },
           {
             "description": "Optional metadata. Within the metadata object, keys that begin with an underscore (`_`) are reserved for system use.",
             "name": "metadata",
@@ -191491,7 +196830,7 @@
           }
         ]
       },
-      "description": "The role management APIs are generally the preferred way to manage roles, rather than using file-based role management.\nThe create or update roles API cannot update roles that are defined in roles files.",
+      "description": "Create or update roles.\n\nThe role management APIs are generally the preferred way to manage roles in the native realm, rather than using file-based role management.\nThe create or update roles API cannot update roles that are defined in roles files.\nFile-based role management is not available in Elastic Serverless.",
       "inherits": {
         "type": {
           "name": "RequestBase",
@@ -191530,7 +196869,7 @@
           }
         }
       ],
-      "specLocation": "security/put_role/SecurityPutRoleRequest.ts#L30-L84"
+      "specLocation": "security/put_role/SecurityPutRoleRequest.ts#L31-L95"
     },
     {
       "kind": "response",
@@ -191641,7 +196980,7 @@
           }
         ]
       },
-      "description": "Creates and updates role mappings.",
+      "description": "Create or update role mappings.\n\nRole mappings define which roles are assigned to each user.\nEach mapping has rules that identify users and a list of roles that are granted to those users.\nThe role mapping APIs are generally the preferred way to manage role mappings rather than using role mapping files. The create or update role mappings API cannot update role mappings that are defined in role mapping files.\n\nThis API does not create roles. Rather, it maps users to existing roles.\nRoles can be created by using the create or update roles API or roles files.",
       "inherits": {
         "type": {
           "name": "RequestBase",
@@ -191680,7 +197019,7 @@
           }
         }
       ],
-      "specLocation": "security/put_role_mapping/SecurityPutRoleMappingRequest.ts#L25-L47"
+      "specLocation": "security/put_role_mapping/SecurityPutRoleMappingRequest.ts#L25-L56"
     },
     {
       "kind": "response",
@@ -191842,7 +197181,7 @@
           }
         ]
       },
-      "description": "Adds and updates users in the native realm. These users are commonly referred to as native users.",
+      "description": "Create or update users.\n\nA password is required for adding a new user but is optional when updating an existing user.\nTo change a user’s password without updating any other fields, use the change password API.",
       "inherits": {
         "type": {
           "name": "RequestBase",
@@ -191881,7 +197220,7 @@
           }
         }
       ],
-      "specLocation": "security/put_user/SecurityPutUserRequest.ts#L23-L44"
+      "specLocation": "security/put_user/SecurityPutUserRequest.ts#L23-L48"
     },
     {
       "kind": "response",
@@ -192587,7 +197926,7 @@
           }
         ]
       },
-      "description": "Query API keys.\nRetrieves a paginated list of API keys and their information. You can optionally filter the results with a query.",
+      "description": "Find API keys with a query.\n\nGet a paginated list of API keys and their information. You can optionally filter the results with a query.",
       "inherits": {
         "type": {
           "name": "RequestBase",
@@ -192657,7 +197996,7 @@
           }
         }
       ],
-      "specLocation": "security/query_api_keys/QueryApiKeysRequest.ts#L26-L100"
+      "specLocation": "security/query_api_keys/QueryApiKeysRequest.ts#L26-L101"
     },
     {
       "kind": "response",
@@ -192847,7 +198186,7 @@
           }
         ]
       },
-      "description": "Retrieves roles in a paginated manner. You can optionally filter the results with a query.",
+      "description": "Find roles with a query.\n\nGet roles in a paginated manner. You can optionally filter the results with a query.",
       "inherits": {
         "type": {
           "name": "RequestBase",
@@ -192860,7 +198199,7 @@
       },
       "path": [],
       "query": [],
-      "specLocation": "security/query_role/QueryRolesRequest.ts#L25-L67"
+      "specLocation": "security/query_role/QueryRolesRequest.ts#L25-L69"
     },
     {
       "kind": "response",
@@ -193238,7 +198577,7 @@
           }
         ]
       },
-      "description": "Retrieves information for Users in a paginated manner. You can optionally filter the results with a query.",
+      "description": "Find users with a query.\n\nGet information for users in a paginated manner.\nYou can optionally filter the results with a query.",
       "inherits": {
         "type": {
           "name": "RequestBase",
@@ -193264,7 +198603,7 @@
           }
         }
       ],
-      "specLocation": "security/query_user/SecurityQueryUserRequest.ts#L25-L72"
+      "specLocation": "security/query_user/SecurityQueryUserRequest.ts#L25-L75"
     },
     {
       "kind": "response",
@@ -193587,7 +198926,7 @@
           }
         ]
       },
-      "description": "Submits a SAML Response message to Elasticsearch for consumption.",
+      "description": "Authenticate SAML.\n\nSubmits a SAML response message to Elasticsearch for consumption.",
       "inherits": {
         "type": {
           "name": "RequestBase",
@@ -193600,7 +198939,7 @@
       },
       "path": [],
       "query": [],
-      "specLocation": "security/saml_authenticate/Request.ts#L23-L38"
+      "specLocation": "security/saml_authenticate/Request.ts#L23-L40"
     },
     {
       "kind": "response",
@@ -193728,7 +199067,7 @@
           }
         ]
       },
-      "description": "Verifies the logout response sent from the SAML IdP.",
+      "description": "Logout of SAML completely.\n\nVerifies the logout response sent from the SAML IdP.",
       "inherits": {
         "type": {
           "name": "RequestBase",
@@ -193741,7 +199080,7 @@
       },
       "path": [],
       "query": [],
-      "specLocation": "security/saml_complete_logout/Request.ts#L23-L40"
+      "specLocation": "security/saml_complete_logout/Request.ts#L23-L42"
     },
     {
       "kind": "response",
@@ -193800,7 +199139,7 @@
           }
         ]
       },
-      "description": "Submits a SAML LogoutRequest message to Elasticsearch for consumption.",
+      "description": "Invalidate SAML.\n\nSubmits a SAML LogoutRequest message to Elasticsearch for consumption.",
       "inherits": {
         "type": {
           "name": "RequestBase",
@@ -193813,7 +199152,7 @@
       },
       "path": [],
       "query": [],
-      "specLocation": "security/saml_invalidate/Request.ts#L22-L43"
+      "specLocation": "security/saml_invalidate/Request.ts#L22-L45"
     },
     {
       "kind": "response",
@@ -193895,7 +199234,7 @@
           }
         ]
       },
-      "description": "Submits a request to invalidate an access token and refresh token.",
+      "description": "Logout of SAML.\n\nSubmits a request to invalidate an access token and refresh token.",
       "inherits": {
         "type": {
           "name": "RequestBase",
@@ -193908,7 +199247,7 @@
       },
       "path": [],
       "query": [],
-      "specLocation": "security/saml_logout/Request.ts#L22-L41"
+      "specLocation": "security/saml_logout/Request.ts#L22-L43"
     },
     {
       "kind": "response",
@@ -193980,7 +199319,7 @@
           }
         ]
       },
-      "description": "Creates a SAML authentication request (<AuthnRequest>) as a URL string, based on the configuration of the respective SAML realm in Elasticsearch.",
+      "description": "Prepare SAML authentication.\n\nCreates a SAML authentication request (`<AuthnRequest>`) as a URL string, based on the configuration of the respective SAML realm in Elasticsearch.",
       "inherits": {
         "type": {
           "name": "RequestBase",
@@ -193993,7 +199332,7 @@
       },
       "path": [],
       "query": [],
-      "specLocation": "security/saml_prepare_authentication/Request.ts#L22-L46"
+      "specLocation": "security/saml_prepare_authentication/Request.ts#L22-L48"
     },
     {
       "kind": "response",
@@ -194049,7 +199388,7 @@
       "body": {
         "kind": "no_body"
       },
-      "description": "Generate SAML metadata for a SAML 2.0 Service Provider.",
+      "description": "Create SAML service provider metadata.\n\nGenerate SAML metadata for a SAML 2.0 Service Provider.",
       "inherits": {
         "type": {
           "name": "RequestBase",
@@ -194075,7 +199414,7 @@
         }
       ],
       "query": [],
-      "specLocation": "security/saml_service_provider_metadata/Request.ts#L23-L34"
+      "specLocation": "security/saml_service_provider_metadata/Request.ts#L23-L36"
     },
     {
       "kind": "response",
@@ -194238,7 +199577,7 @@
           }
         ]
       },
-      "description": "Get suggestions for user profiles that match specified search criteria.",
+      "description": "Suggest a user profile.\n\nGet suggestions for user profiles that match specified search criteria.",
       "inherits": {
         "type": {
           "name": "RequestBase",
@@ -194279,7 +199618,7 @@
           }
         }
       ],
-      "specLocation": "security/suggest_user_profiles/Request.ts#L24-L66"
+      "specLocation": "security/suggest_user_profiles/Request.ts#L24-L68"
     },
     {
       "kind": "response",
@@ -194421,7 +199760,7 @@
           }
         ]
       },
-      "description": "Update an API key.\nUpdates attributes of an existing API key.\nUsers can only update API keys that they created or that were granted to them.\nUse this API to update API keys created by the create API Key or grant API Key APIs.\nIf you need to apply the same update to many API keys, you can use bulk update API Keys to reduce overhead.\nIt’s not possible to update expired API keys, or API keys that have been invalidated by invalidate API Key.\nThis API supports updates to an API key’s access scope and metadata.\nThe access scope of an API key is derived from the `role_descriptors` you specify in the request, and a snapshot of the owner user’s permissions at the time of the request.\nThe snapshot of the owner’s permissions is updated automatically on every call.\nIf you don’t specify `role_descriptors` in the request, a call to this API might still change the API key’s access scope.\nThis change can occur if the owner user’s permissions have changed since the API key was created or last modified.\nTo update another user’s API key, use the `run_as` feature to submit a request on behalf of another user.\nIMPORTANT: It’s not possible to use an API key as the authentication credential for this API.\nTo update an API key, the owner user’s credentials are required.",
+      "description": "Update an API key.\n\nUpdates attributes of an existing API key.\nUsers can only update API keys that they created or that were granted to them.\nUse this API to update API keys created by the create API Key or grant API Key APIs.\nIf you need to apply the same update to many API keys, you can use bulk update API Keys to reduce overhead.\nIt’s not possible to update expired API keys, or API keys that have been invalidated by invalidate API Key.\nThis API supports updates to an API key’s access scope and metadata.\nThe access scope of an API key is derived from the `role_descriptors` you specify in the request, and a snapshot of the owner user’s permissions at the time of the request.\nThe snapshot of the owner’s permissions is updated automatically on every call.\nIf you don’t specify `role_descriptors` in the request, a call to this API might still change the API key’s access scope.\nThis change can occur if the owner user’s permissions have changed since the API key was created or last modified.\nTo update another user’s API key, use the `run_as` feature to submit a request on behalf of another user.\nIMPORTANT: It’s not possible to use an API key as the authentication credential for this API.\nTo update an API key, the owner user’s credentials are required.",
       "inherits": {
         "type": {
           "name": "RequestBase",
@@ -194447,7 +199786,7 @@
         }
       ],
       "query": [],
-      "specLocation": "security/update_api_key/Request.ts#L26-L66"
+      "specLocation": "security/update_api_key/Request.ts#L26-L67"
     },
     {
       "kind": "response",
@@ -194474,6 +199813,105 @@
       },
       "specLocation": "security/update_api_key/Response.ts#L20-L28"
     },
+    {
+      "kind": "request",
+      "attachedBehaviors": [
+        "CommonQueryParameters"
+      ],
+      "body": {
+        "kind": "properties",
+        "properties": [
+          {
+            "description": "The access to be granted to this API key.\nThe access is composed of permissions for cross cluster search and cross cluster replication.\nAt least one of them must be specified.\nWhen specified, the new access assignment fully replaces the previously assigned access.",
+            "name": "access",
+            "required": true,
+            "type": {
+              "kind": "instance_of",
+              "type": {
+                "name": "Access",
+                "namespace": "security._types"
+              }
+            }
+          },
+          {
+            "description": "Expiration time for the API key.\nBy default, API keys never expire. This property can be omitted to leave the value unchanged.",
+            "name": "expiration",
+            "required": false,
+            "type": {
+              "kind": "instance_of",
+              "type": {
+                "name": "Duration",
+                "namespace": "_types"
+              }
+            }
+          },
+          {
+            "description": "Arbitrary metadata that you want to associate with the API key.\nIt supports nested data structure.\nWithin the metadata object, keys beginning with `_` are reserved for system usage.\nWhen specified, this information fully replaces metadata previously associated with the API key.",
+            "name": "metadata",
+            "required": false,
+            "type": {
+              "kind": "instance_of",
+              "type": {
+                "name": "Metadata",
+                "namespace": "_types"
+              }
+            }
+          }
+        ]
+      },
+      "description": "Update a cross-cluster API key.\n\nUpdate the attributes of an existing cross-cluster API key, which is used for API key based remote cluster access.",
+      "inherits": {
+        "type": {
+          "name": "RequestBase",
+          "namespace": "_types"
+        }
+      },
+      "name": {
+        "name": "Request",
+        "namespace": "security.update_cross_cluster_api_key"
+      },
+      "path": [
+        {
+          "description": "The ID of the cross-cluster API key to update.",
+          "name": "id",
+          "required": true,
+          "type": {
+            "kind": "instance_of",
+            "type": {
+              "name": "Id",
+              "namespace": "_types"
+            }
+          }
+        }
+      ],
+      "query": [],
+      "specLocation": "security/update_cross_cluster_api_key/UpdateCrossClusterApiKeyRequest.ts#L25-L61"
+    },
+    {
+      "kind": "response",
+      "body": {
+        "kind": "properties",
+        "properties": [
+          {
+            "description": "If `true`, the API key was updated.\nIf `false`, the API key didn’t change because no change was detected.",
+            "name": "updated",
+            "required": true,
+            "type": {
+              "kind": "instance_of",
+              "type": {
+                "name": "boolean",
+                "namespace": "_builtins"
+              }
+            }
+          }
+        ]
+      },
+      "name": {
+        "name": "Response",
+        "namespace": "security.update_cross_cluster_api_key"
+      },
+      "specLocation": "security/update_cross_cluster_api_key/UpdateCrossClusterApiKeyResponse.ts#L20-L28"
+    },
     {
       "kind": "request",
       "attachedBehaviors": [
@@ -194522,7 +199960,7 @@
           }
         ]
       },
-      "description": "Updates specific data for the user profile that's associated with the specified unique ID.",
+      "description": "Update user profile data.\n\nUpdate specific data for the user profile that is associated with a unique ID.",
       "inherits": {
         "type": {
           "name": "RequestBase",
@@ -194586,7 +200024,7 @@
           }
         }
       ],
-      "specLocation": "security/update_user_profile_data/Request.ts#L27-L70"
+      "specLocation": "security/update_user_profile_data/Request.ts#L27-L72"
     },
     {
       "kind": "response",
@@ -197770,6 +203208,17 @@
             }
           }
         },
+        {
+          "name": "index_uuid",
+          "required": true,
+          "type": {
+            "kind": "instance_of",
+            "type": {
+              "name": "Id",
+              "namespace": "_types"
+            }
+          }
+        },
         {
           "name": "status",
           "required": true,
@@ -197782,7 +203231,7 @@
           }
         }
       ],
-      "specLocation": "snapshot/_types/SnapshotShardFailure.ts#L22-L28"
+      "specLocation": "snapshot/_types/SnapshotShardFailure.ts#L22-L29"
     },
     {
       "kind": "interface",
@@ -199322,6 +204771,154 @@
       },
       "specLocation": "snapshot/get_repository/SnapshotGetRepositoryResponse.ts#L23-L25"
     },
+    {
+      "kind": "request",
+      "attachedBehaviors": [
+        "CommonQueryParameters"
+      ],
+      "body": {
+        "kind": "no_body"
+      },
+      "description": "Verifies the integrity of the contents of a snapshot repository",
+      "inherits": {
+        "type": {
+          "name": "RequestBase",
+          "namespace": "_types"
+        }
+      },
+      "name": {
+        "name": "Request",
+        "namespace": "snapshot.repository_verify_integrity"
+      },
+      "path": [
+        {
+          "codegenName": "name",
+          "description": "A repository name",
+          "name": "repository",
+          "required": true,
+          "type": {
+            "kind": "instance_of",
+            "type": {
+              "name": "Names",
+              "namespace": "_types"
+            }
+          }
+        }
+      ],
+      "query": [
+        {
+          "description": "Number of threads to use for reading metadata",
+          "name": "meta_thread_pool_concurrency",
+          "required": false,
+          "type": {
+            "kind": "instance_of",
+            "type": {
+              "name": "integer",
+              "namespace": "_types"
+            }
+          }
+        },
+        {
+          "description": "Number of threads to use for reading blob contents",
+          "name": "blob_thread_pool_concurrency",
+          "required": false,
+          "type": {
+            "kind": "instance_of",
+            "type": {
+              "name": "integer",
+              "namespace": "_types"
+            }
+          }
+        },
+        {
+          "description": "Number of snapshots to verify concurrently",
+          "name": "snapshot_verification_concurrency",
+          "required": false,
+          "type": {
+            "kind": "instance_of",
+            "type": {
+              "name": "integer",
+              "namespace": "_types"
+            }
+          }
+        },
+        {
+          "description": "Number of indices to verify concurrently",
+          "name": "index_verification_concurrency",
+          "required": false,
+          "type": {
+            "kind": "instance_of",
+            "type": {
+              "name": "integer",
+              "namespace": "_types"
+            }
+          }
+        },
+        {
+          "description": "Number of snapshots to verify concurrently within each index",
+          "name": "index_snapshot_verification_concurrency",
+          "required": false,
+          "type": {
+            "kind": "instance_of",
+            "type": {
+              "name": "integer",
+              "namespace": "_types"
+            }
+          }
+        },
+        {
+          "description": "Maximum permitted number of failed shard snapshots",
+          "name": "max_failed_shard_snapshots",
+          "required": false,
+          "type": {
+            "kind": "instance_of",
+            "type": {
+              "name": "integer",
+              "namespace": "_types"
+            }
+          }
+        },
+        {
+          "description": "Whether to verify the contents of individual blobs",
+          "name": "verify_blob_contents",
+          "required": false,
+          "type": {
+            "kind": "instance_of",
+            "type": {
+              "name": "boolean",
+              "namespace": "_builtins"
+            }
+          }
+        },
+        {
+          "description": "Rate limit for individual blob verification",
+          "name": "max_bytes_per_sec",
+          "required": false,
+          "type": {
+            "kind": "instance_of",
+            "type": {
+              "name": "string",
+              "namespace": "_builtins"
+            }
+          }
+        }
+      ],
+      "specLocation": "snapshot/repository_verify_integrity/SnapshotRepositoryVerifyIntegrityRequest.ts#L24-L43"
+    },
+    {
+      "kind": "response",
+      "body": {
+        "kind": "value",
+        "value": {
+          "kind": "user_defined_value"
+        }
+      },
+      "name": {
+        "name": "Response",
+        "namespace": "snapshot.repository_verify_integrity"
+      },
+      "specLocation": "snapshot/repository_verify_integrity/SnapshotRepositoryVerifyIntegrityResponse.ts#L22-L24"
+    },
     {
       "kind": "request",
       "attachedBehaviors": [
@@ -199518,9 +205115,20 @@
       "body": {
         "kind": "properties",
         "properties": [
+          {
+            "name": "accepted",
+            "required": false,
+            "type": {
+              "kind": "instance_of",
+              "type": {
+                "name": "boolean",
+                "namespace": "_builtins"
+              }
+            }
+          },
           {
             "name": "snapshot",
-            "required": true,
+            "required": false,
             "type": {
               "kind": "instance_of",
               "type": {
@@ -199535,7 +205143,7 @@
         "name": "Response",
         "namespace": "snapshot.restore"
       },
-      "specLocation": "snapshot/restore/SnapshotRestoreResponse.ts#L23-L25"
+      "specLocation": "snapshot/restore/SnapshotRestoreResponse.ts#L23-L28"
     },
     {
       "kind": "interface",
@@ -199581,7 +205189,7 @@
           }
         }
       ],
-      "specLocation": "snapshot/restore/SnapshotRestoreResponse.ts#L27-L31"
+      "specLocation": "snapshot/restore/SnapshotRestoreResponse.ts#L30-L34"
     },
     {
       "kind": "request",
@@ -199869,7 +205477,7 @@
           }
         ]
       },
-      "description": "Clears the SQL cursor",
+      "description": "Clear an SQL search cursor.",
       "inherits": {
         "type": {
           "name": "RequestBase",
@@ -199882,7 +205490,7 @@
       },
       "path": [],
       "query": [],
-      "specLocation": "sql/clear_cursor/ClearSqlCursorRequest.ts#L22-L34"
+      "specLocation": "sql/clear_cursor/ClearSqlCursorRequest.ts#L22-L35"
     },
     {
       "kind": "response",
@@ -199916,7 +205524,7 @@
       "body": {
         "kind": "no_body"
       },
-      "description": "Deletes an async SQL search or a stored synchronous SQL search. If the search is still running, the API cancels it.",
+      "description": "Delete an async SQL search.\nDelete an async SQL search or a stored synchronous SQL search.\nIf the search is still running, the API cancels it.",
       "inherits": {
         "type": {
           "name": "RequestBase",
@@ -199942,7 +205550,7 @@
         }
       ],
       "query": [],
-      "specLocation": "sql/delete_async/SqlDeleteAsyncRequest.ts#L23-L35"
+      "specLocation": "sql/delete_async/SqlDeleteAsyncRequest.ts#L23-L38"
     },
     {
       "kind": "response",
@@ -199970,7 +205578,7 @@
       "body": {
         "kind": "no_body"
       },
-      "description": "Returns the current status and available results for an async SQL search or stored synchronous SQL search",
+      "description": "Get async SQL search results.\nGet the current status and available results for an async SQL search or stored synchronous SQL search.",
       "inherits": {
         "type": {
           "name": "RequestBase",
@@ -200046,7 +205654,7 @@
           }
         }
       ],
-      "specLocation": "sql/get_async/SqlGetAsyncRequest.ts#L24-L58"
+      "specLocation": "sql/get_async/SqlGetAsyncRequest.ts#L24-L60"
     },
     {
       "kind": "response",
@@ -200147,7 +205755,7 @@
       "body": {
         "kind": "no_body"
       },
-      "description": "Returns the current status of an async SQL search or a stored synchronous SQL search",
+      "description": "Get the async SQL search status.\nGet the current status of an async SQL search or a stored synchronous SQL search.",
       "inherits": {
         "type": {
           "name": "RequestBase",
@@ -200173,7 +205781,7 @@
         }
       ],
       "query": [],
-      "specLocation": "sql/get_async_status/SqlGetAsyncStatusRequest.ts#L23-L35"
+      "specLocation": "sql/get_async_status/SqlGetAsyncStatusRequest.ts#L23-L37"
     },
     {
       "kind": "response",
@@ -200500,7 +206108,7 @@
           }
         ]
       },
-      "description": "Executes a SQL request",
+      "description": "Get SQL search results.\nRun an SQL request.",
       "inherits": {
         "type": {
           "name": "RequestBase",
@@ -200522,13 +206130,13 @@
           "type": {
             "kind": "instance_of",
             "type": {
-              "name": "string",
-              "namespace": "_builtins"
+              "name": "SqlFormat",
+              "namespace": "sql.query"
             }
           }
         }
       ],
-      "specLocation": "sql/query/QuerySqlRequest.ts#L28-L122"
+      "specLocation": "sql/query/QuerySqlRequest.ts#L28-L124"
     },
     {
       "kind": "response",
@@ -200621,6 +206229,37 @@
       },
       "specLocation": "sql/query/QuerySqlResponse.ts#L23-L60"
     },
+    {
+      "kind": "enum",
+      "members": [
+        {
+          "name": "csv"
+        },
+        {
+          "name": "json"
+        },
+        {
+          "name": "tsv"
+        },
+        {
+          "name": "txt"
+        },
+        {
+          "name": "yaml"
+        },
+        {
+          "name": "cbor"
+        },
+        {
+          "name": "smile"
+        }
+      ],
+      "name": {
+        "name": "SqlFormat",
+        "namespace": "sql.query"
+      },
+      "specLocation": "sql/query/QuerySqlRequest.ts#L126-L134"
+    },
     {
       "kind": "request",
       "attachedBehaviors": [
@@ -200685,7 +206324,7 @@
           }
         ]
       },
-      "description": "Translates SQL into Elasticsearch queries",
+      "description": "Translate SQL into Elasticsearch queries.\nTranslate an SQL search into a search API request containing Query DSL.",
       "inherits": {
         "type": {
           "name": "RequestBase",
@@ -200698,7 +206337,7 @@
       },
       "path": [],
       "query": [],
-      "specLocation": "sql/translate/TranslateSqlRequest.ts#L25-L54"
+      "specLocation": "sql/translate/TranslateSqlRequest.ts#L25-L56"
     },
     {
       "kind": "response",
@@ -200911,7 +206550,7 @@
       "body": {
         "kind": "no_body"
       },
-      "description": "Retrieves information about the X.509 certificates used to encrypt communications in the cluster.",
+      "description": "Get SSL certificates.\n\nGet information about the X.509 certificates that are used to encrypt communications in the cluster.\nThe API returns a list that includes certificates from all TLS contexts including:\n\n- Settings for transport and HTTP interfaces\n- TLS settings that are used within authentication realms\n- TLS settings for remote monitoring exporters\n\nThe list includes certificates that are used for configuring trust, such as those configured in the `xpack.security.transport.ssl.truststore` and `xpack.security.transport.ssl.certificate_authorities` settings.\nIt also includes certificates that are used for configuring server identity, such as `xpack.security.http.ssl.keystore` and `xpack.security.http.ssl.certificate settings`.\n\nThe list does not include certificates that are sourced from the default SSL context of the Java Runtime Environment (JRE), even if those certificates are in use within Elasticsearch.\n\nNOTE: When a PKCS#11 token is configured as the truststore of the JRE, the API returns all the certificates that are included in the PKCS#11 token irrespective of whether these are used in the Elasticsearch TLS configuration.\n\nIf Elasticsearch is configured to use a keystore or truststore, the API output includes all certificates in that store, even though some of the certificates might not be in active use within the cluster.",
       "inherits": {
         "type": {
           "name": "RequestBase",
@@ -200924,7 +206563,7 @@
       },
       "path": [],
       "query": [],
-      "specLocation": "ssl/certificates/GetCertificatesRequest.ts#L22-L27"
+      "specLocation": "ssl/certificates/GetCertificatesRequest.ts#L22-L45"
     },
     {
       "kind": "response",
@@ -201092,7 +206731,7 @@
       "body": {
         "kind": "no_body"
       },
-      "description": "Deletes a synonym set",
+      "description": "Delete a synonym set.",
       "inherits": {
         "type": {
           "name": "RequestBase",
@@ -201146,7 +206785,7 @@
       "body": {
         "kind": "no_body"
       },
-      "description": "Deletes a synonym rule in a synonym set",
+      "description": "Delete a synonym rule.\nDelete a synonym rule from a synonym set.",
       "inherits": {
         "type": {
           "name": "RequestBase",
@@ -201184,7 +206823,7 @@
         }
       ],
       "query": [],
-      "specLocation": "synonyms/delete_synonym_rule/SynonymRuleDeleteRequest.ts#L22-L40"
+      "specLocation": "synonyms/delete_synonym_rule/SynonymRuleDeleteRequest.ts#L22-L41"
     },
     {
       "kind": "response",
@@ -201212,7 +206851,7 @@
       "body": {
         "kind": "no_body"
       },
-      "description": "Retrieves a synonym set",
+      "description": "Get a synonym set.",
       "inherits": {
         "type": {
           "name": "RequestBase",
@@ -201313,7 +206952,7 @@
       "body": {
         "kind": "no_body"
       },
-      "description": "Retrieves a synonym rule from a synonym set",
+      "description": "Get a synonym rule.\nGet a synonym rule from a synonym set.",
       "inherits": {
         "type": {
           "name": "RequestBase",
@@ -201351,7 +206990,7 @@
         }
       ],
       "query": [],
-      "specLocation": "synonyms/get_synonym_rule/SynonymRuleGetRequest.ts#L22-L40"
+      "specLocation": "synonyms/get_synonym_rule/SynonymRuleGetRequest.ts#L22-L41"
     },
     {
       "kind": "response",
@@ -201379,7 +207018,7 @@
       "body": {
         "kind": "no_body"
       },
-      "description": "Retrieves a summary of all defined synonym sets",
+      "description": "Get all synonym sets.\nGet a summary of all defined synonym sets.",
       "inherits": {
         "type": {
           "name": "RequestBase",
@@ -201419,7 +207058,7 @@
           }
         }
       ],
-      "specLocation": "synonyms/get_synonyms_sets/SynonymsSetsGetRequest.ts#L22-L41"
+      "specLocation": "synonyms/get_synonyms_sets/SynonymsSetsGetRequest.ts#L22-L42"
     },
     {
       "kind": "response",
@@ -201530,7 +207169,7 @@
           }
         ]
       },
-      "description": "Creates or updates a synonym set.",
+      "description": "Create or update a synonym set.\nSynonyms sets are limited to a maximum of 10,000 synonym rules per set.\nIf you need to manage more synonym rules, you can create multiple synonym sets.",
       "inherits": {
         "type": {
           "name": "RequestBase",
@@ -201556,7 +207195,7 @@
         }
       ],
       "query": [],
-      "specLocation": "synonyms/put_synonym/SynonymsPutRequest.ts#L23-L42"
+      "specLocation": "synonyms/put_synonym/SynonymsPutRequest.ts#L23-L44"
     },
     {
       "kind": "response",
@@ -201614,7 +207253,7 @@
           }
         ]
       },
-      "description": "Creates or updates a synonym rule in a synonym set",
+      "description": "Create or update a synonym rule.\nCreate or update a synonym rule in a synonym set.",
       "inherits": {
         "type": {
           "name": "RequestBase",
@@ -201652,7 +207291,7 @@
         }
       ],
       "query": [],
-      "specLocation": "synonyms/put_synonym_rule/SynonymRulePutRequest.ts#L23-L47"
+      "specLocation": "synonyms/put_synonym_rule/SynonymRulePutRequest.ts#L23-L48"
     },
     {
       "kind": "response",
@@ -202445,16 +208084,13 @@
         },
         {
           "description": "Comma-separated list of node IDs or names used to limit returned information.",
-          "name": "node_id",
+          "name": "nodes",
           "required": false,
           "type": {
-            "kind": "array_of",
-            "value": {
-              "kind": "instance_of",
-              "type": {
-                "name": "string",
-                "namespace": "_builtins"
-              }
+            "kind": "instance_of",
+            "type": {
+              "name": "NodeIds",
+              "namespace": "_types"
             }
           }
         },
@@ -212127,7 +217763,7 @@
           }
         }
       ],
-      "specLocation": "xpack/info/types.ts#L77-L82"
+      "specLocation": "xpack/info/types.ts#L85-L90"
     },
     {
       "kind": "interface",
@@ -212170,8 +217806,8 @@
           }
         },
         {
-          "name": "data_frame",
-          "required": false,
+          "name": "data_streams",
+          "required": true,
           "type": {
             "kind": "instance_of",
             "type": {
@@ -212181,8 +217817,8 @@
           }
         },
         {
-          "name": "data_science",
-          "required": false,
+          "name": "data_tiers",
+          "required": true,
           "type": {
             "kind": "instance_of",
             "type": {
@@ -212192,7 +217828,7 @@
           }
         },
         {
-          "name": "data_streams",
+          "name": "enrich",
           "required": true,
           "type": {
             "kind": "instance_of",
@@ -212203,7 +217839,12 @@
           }
         },
         {
-          "name": "data_tiers",
+          "availability": {
+            "stack": {
+              "since": "8.8.0"
+            }
+          },
+          "name": "enterprise_search",
           "required": true,
           "type": {
             "kind": "instance_of",
@@ -212214,7 +217855,7 @@
           }
         },
         {
-          "name": "enrich",
+          "name": "eql",
           "required": true,
           "type": {
             "kind": "instance_of",
@@ -212225,7 +217866,12 @@
           }
         },
         {
-          "name": "eql",
+          "availability": {
+            "stack": {
+              "since": "8.14.0"
+            }
+          },
+          "name": "esql",
           "required": true,
           "type": {
             "kind": "instance_of",
@@ -212236,8 +217882,8 @@
           }
         },
         {
-          "name": "flattened",
-          "required": false,
+          "name": "frozen_indices",
+          "required": true,
           "type": {
             "kind": "instance_of",
             "type": {
@@ -212247,7 +217893,7 @@
           }
         },
         {
-          "name": "frozen_indices",
+          "name": "graph",
           "required": true,
           "type": {
             "kind": "instance_of",
@@ -212258,7 +217904,7 @@
           }
         },
         {
-          "name": "graph",
+          "name": "ilm",
           "required": true,
           "type": {
             "kind": "instance_of",
@@ -212269,7 +217915,7 @@
           }
         },
         {
-          "name": "ilm",
+          "name": "logstash",
           "required": true,
           "type": {
             "kind": "instance_of",
@@ -212280,7 +217926,7 @@
           }
         },
         {
-          "name": "logstash",
+          "name": "logsdb",
           "required": true,
           "type": {
             "kind": "instance_of",
@@ -212401,8 +218047,13 @@
           }
         },
         {
-          "name": "vectors",
-          "required": false,
+          "availability": {
+            "stack": {
+              "since": "8.7.0"
+            }
+          },
+          "name": "universal_profiling",
+          "required": true,
           "type": {
             "kind": "instance_of",
             "type": {
@@ -212435,7 +218086,6 @@
         },
         {
           "availability": {
-            "serverless": {},
             "stack": {
               "since": "8.2.0"
             }
@@ -212451,7 +218101,7 @@
           }
         }
       ],
-      "specLocation": "xpack/info/types.ts#L42-L75"
+      "specLocation": "xpack/info/types.ts#L42-L83"
     },
     {
       "kind": "interface",
@@ -212589,8 +218239,8 @@
             "value": {
               "kind": "instance_of",
               "type": {
-                "name": "string",
-                "namespace": "_builtins"
+                "name": "XPackCategory",
+                "namespace": "xpack.info"
               }
             }
           }
@@ -212680,6 +218330,25 @@
       },
       "specLocation": "xpack/info/XPackInfoResponse.ts#L22-L29"
     },
+    {
+      "kind": "enum",
+      "members": [
+        {
+          "name": "build"
+        },
+        {
+          "name": "features"
+        },
+        {
+          "name": "license"
+        }
+      ],
+      "name": {
+        "name": "XPackCategory",
+        "namespace": "xpack.info"
+      },
+      "specLocation": "xpack/info/XPackInfoRequest.ts#L44-L48"
+    },
     {
       "kind": "interface",
       "inherits": {
diff --git a/output/schema/validation-errors.json b/output/schema/validation-errors.json
index 081c20aa7b..0f3ef0556e 100644
--- a/output/schema/validation-errors.json
+++ b/output/schema/validation-errors.json
@@ -49,55 +49,20 @@
         "type_alias definition _global.search._types:Suggest - Expected 1 generic parameters but got 0"
       ]
     },
-    "async_search.status": {
-      "request": [
-        "Request: missing json spec query parameter 'keep_alive'"
-      ],
-      "response": []
-    },
     "async_search.submit": {
       "request": [
         "Request: query parameter 'ccs_minimize_roundtrips' does not exist in the json spec",
         "Request: query parameter 'min_compatible_shard_node' does not exist in the json spec",
         "Request: query parameter 'pre_filter_shard_size' does not exist in the json spec",
-        "Request: query parameter 'scroll' does not exist in the json spec",
         "Request: query parameter 'rest_total_hits_as_int' does not exist in the json spec",
         "interface definition _types:QueryVectorBuilder - Property text_embedding is a single-variant and must be required",
         "type_alias definition _spec_utils:PipeSeparatedFlags / union_of / instance_of - No type definition for '_spec_utils.PipeSeparatedFlags:T'"
       ],
       "response": []
     },
-    "autoscaling.delete_autoscaling_policy": {
-      "request": [
-        "Request: missing json spec query parameter 'master_timeout'",
-        "Request: missing json spec query parameter 'timeout'"
-      ],
-      "response": []
-    },
-    "autoscaling.get_autoscaling_capacity": {
-      "request": [
-        "Request: missing json spec query parameter 'master_timeout'"
-      ],
-      "response": []
-    },
-    "autoscaling.get_autoscaling_policy": {
-      "request": [
-        "Request: missing json spec query parameter 'master_timeout'"
-      ],
-      "response": []
-    },
-    "autoscaling.put_autoscaling_policy": {
-      "request": [
-        "Request: missing json spec query parameter 'master_timeout'",
-        "Request: missing json spec query parameter 'timeout'"
-      ],
-      "response": []
-    },
     "bulk": {
       "request": [
-        "Request: missing json spec query parameter 'type'",
-        "Request: missing json spec query parameter 'require_data_stream'",
-        "Request: missing json spec query parameter 'list_executed_pipelines'"
+        "Request: missing json spec query parameter 'type'"
       ],
       "response": []
     },
@@ -755,44 +720,8 @@
       ],
       "response": []
     },
-    "ilm.delete_lifecycle": {
-      "request": [
-        "Request: query parameter 'master_timeout' does not exist in the json spec",
-        "Request: query parameter 'timeout' does not exist in the json spec"
-      ],
-      "response": []
-    },
     "ilm.explain_lifecycle": {
       "request": [
-        "Request: query parameter 'master_timeout' does not exist in the json spec",
-        "Request: query parameter 'timeout' does not exist in the json spec"
-      ],
-      "response": []
-    },
-    "ilm.get_lifecycle": {
-      "request": [
-        "Request: query parameter 'master_timeout' does not exist in the json spec",
-        "Request: query parameter 'timeout' does not exist in the json spec"
-      ],
-      "response": []
-    },
-    "ilm.put_lifecycle": {
-      "request": [
-        "Request: query parameter 'master_timeout' does not exist in the json spec",
-        "Request: query parameter 'timeout' does not exist in the json spec"
-      ],
-      "response": []
-    },
-    "ilm.start": {
-      "request": [
-        "Request: query parameter 'master_timeout' does not exist in the json spec",
-        "Request: query parameter 'timeout' does not exist in the json spec"
-      ],
-      "response": []
-    },
-    "ilm.stop": {
-      "request": [
-        "Request: query parameter 'master_timeout' does not exist in the json spec",
         "Request: query parameter 'timeout' does not exist in the json spec"
       ],
       "response": []
@@ -868,10 +797,9 @@
       ],
       "response": []
     },
-    "ingest.delete_geoip_database": {
+    "inference.stream_inference": {
       "request": [
-        "Request: query parameter 'master_timeout' does not exist in the json spec",
-        "Request: query parameter 'timeout' does not exist in the json spec"
+        "Missing request & response"
       ],
       "response": []
     },
@@ -881,10 +809,9 @@
       ],
       "response": []
     },
-    "ingest.put_geoip_database": {
+    "ingest.get_ip_location_database": {
       "request": [
-        "Request: query parameter 'master_timeout' does not exist in the json spec",
-        "Request: query parameter 'timeout' does not exist in the json spec"
+        "Request: query parameter 'master_timeout' does not exist in the json spec"
       ],
       "response": []
     },
@@ -937,21 +864,6 @@
       ],
       "response": []
     },
-    "ml.get_trained_models": {
-      "request": [
-        "Request: missing json spec query parameter 'include_model_definition'"
-      ],
-      "response": []
-    },
-    "ml.put_job": {
-      "request": [
-        "Request: missing json spec query parameter 'ignore_unavailable'",
-        "Request: missing json spec query parameter 'allow_no_indices'",
-        "Request: missing json spec query parameter 'ignore_throttled'",
-        "Request: missing json spec query parameter 'expand_wildcards'"
-      ],
-      "response": []
-    },
     "ml.stop_datafeed": {
       "request": [
         "Request: missing json spec query parameter 'allow_no_datafeeds'"
@@ -1073,12 +985,6 @@
       ],
       "response": []
     },
-    "security.create_cross_cluster_api_key": {
-      "request": [
-        "Missing request & response"
-      ],
-      "response": []
-    },
     "security.get_settings": {
       "request": [
         "Missing request & response"
@@ -1117,12 +1023,6 @@
       ],
       "response": []
     },
-    "security.update_cross_cluster_api_key": {
-      "request": [
-        "Missing request & response"
-      ],
-      "response": []
-    },
     "security.update_settings": {
       "request": [
         "Missing request & response"
@@ -1155,10 +1055,45 @@
       ],
       "response": []
     },
-    "slm.put_lifecycle": {
+    "slm.delete_lifecycle": {
       "request": [
-        "Request: query parameter 'master_timeout' does not exist in the json spec",
-        "Request: query parameter 'timeout' does not exist in the json spec"
+        "Request: missing json spec query parameter 'master_timeout'",
+        "Request: missing json spec query parameter 'timeout'"
+      ],
+      "response": []
+    },
+    "slm.execute_lifecycle": {
+      "request": [
+        "Request: missing json spec query parameter 'master_timeout'",
+        "Request: missing json spec query parameter 'timeout'"
+      ],
+      "response": []
+    },
+    "slm.execute_retention": {
+      "request": [
+        "Request: missing json spec query parameter 'master_timeout'",
+        "Request: missing json spec query parameter 'timeout'"
+      ],
+      "response": []
+    },
+    "slm.get_lifecycle": {
+      "request": [
+        "Request: missing json spec query parameter 'master_timeout'",
+        "Request: missing json spec query parameter 'timeout'"
+      ],
+      "response": []
+    },
+    "slm.get_stats": {
+      "request": [
+        "Request: missing json spec query parameter 'master_timeout'",
+        "Request: missing json spec query parameter 'timeout'"
+      ],
+      "response": []
+    },
+    "slm.get_status": {
+      "request": [
+        "Request: missing json spec query parameter 'master_timeout'",
+        "Request: missing json spec query parameter 'timeout'"
       ],
       "response": []
     },
@@ -1196,9 +1131,7 @@
     },
     "tasks.list": {
       "request": [
-        "Request: query parameter 'node_id' does not exist in the json spec",
-        "Request: query parameter 'master_timeout' does not exist in the json spec",
-        "Request: missing json spec query parameter 'nodes'"
+        "Request: query parameter 'master_timeout' does not exist in the json spec"
       ],
       "response": []
     },
diff --git a/output/typescript/types.ts b/output/typescript/types.ts
index 2c88e9fae2..d401a9d68d 100644
--- a/output/typescript/types.ts
+++ b/output/typescript/types.ts
@@ -47,6 +47,7 @@ export type BulkOperationType = 'index' | 'create' | 'update' | 'delete'
 
 export interface BulkRequest<TDocument = unknown, TPartialDocument = unknown> extends RequestBase {
   index?: IndexName
+  list_executed_pipelines?: boolean
   pipeline?: string
   refresh?: Refresh
   routing?: Routing
@@ -56,6 +57,7 @@ export interface BulkRequest<TDocument = unknown, TPartialDocument = unknown> ex
   timeout?: Duration
   wait_for_active_shards?: WaitForActiveShards
   require_alias?: boolean
+  require_data_stream?: boolean
   body?: (BulkOperationContainer | BulkUpdateAction<TDocument, TPartialDocument> | TDocument)[]
 }
 
@@ -895,6 +897,7 @@ export interface OpenPointInTimeRequest extends RequestBase {
   preference?: string
   routing?: Routing
   expand_wildcards?: ExpandWildcards
+  allow_partial_search_results?: boolean
   body?: {
     index_filter?: QueryDslQueryContainer
   }
@@ -1325,6 +1328,10 @@ export interface SearchAggregationProfileDebug {
   segments_counted?: integer
   segments_collected?: integer
   map_reducer?: string
+  brute_force_used?: integer
+  dynamic_pruning_attempted?: integer
+  dynamic_pruning_used?: integer
+  skipped_due_to_no_data?: integer
 }
 
 export interface SearchAggregationProfileDelegateDebugFilter {
@@ -1377,6 +1384,39 @@ export interface SearchCompletionSuggester extends SearchSuggesterBase {
 
 export type SearchContext = string | GeoLocation
 
+export interface SearchDfsKnnProfile {
+  vector_operations_count?: long
+  query: SearchKnnQueryProfileResult[]
+  rewrite_time: long
+  collector: SearchKnnCollectorResult[]
+}
+
+export interface SearchDfsProfile {
+  statistics?: SearchDfsStatisticsProfile
+  knn?: SearchDfsKnnProfile[]
+}
+
+export interface SearchDfsStatisticsBreakdown {
+  collection_statistics: long
+  collection_statistics_count: long
+  create_weight: long
+  create_weight_count: long
+  rewrite: long
+  rewrite_count: long
+  term_statistics: long
+  term_statistics_count: long
+}
+
+export interface SearchDfsStatisticsProfile {
+  type: string
+  description: string
+  time?: Duration
+  time_in_nanos: DurationValue<UnitNanos>
+  breakdown: SearchDfsStatisticsBreakdown
+  debug?: Record<string, any>
+  children?: SearchDfsStatisticsProfile[]
+}
+
 export interface SearchDirectGenerator {
   field: Field
   max_edits?: integer
@@ -1484,10 +1524,10 @@ export interface SearchHit<TDocument = unknown> {
   fields?: Record<string, any>
   highlight?: Record<string, string[]>
   inner_hits?: Record<string, SearchInnerHitsResult>
-  matched_queries?: string[] | Record<string, double[]>
+  matched_queries?: string[] | Record<string, double>
   _nested?: SearchNestedIdentity
   _ignored?: string[]
-  ignored_field_values?: Record<string, string[]>
+  ignored_field_values?: Record<string, FieldValue[]>
   _shard?: string
   _node?: string
   _routing?: string
@@ -1528,6 +1568,47 @@ export interface SearchInnerHitsResult {
   hits: SearchHitsMetadata<any>
 }
 
+export interface SearchKnnCollectorResult {
+  name: string
+  reason: string
+  time?: Duration
+  time_in_nanos: DurationValue<UnitNanos>
+  children?: SearchKnnCollectorResult[]
+}
+
+export interface SearchKnnQueryProfileBreakdown {
+  advance: long
+  advance_count: long
+  build_scorer: long
+  build_scorer_count: long
+  compute_max_score: long
+  compute_max_score_count: long
+  count_weight: long
+  count_weight_count: long
+  create_weight: long
+  create_weight_count: long
+  match: long
+  match_count: long
+  next_doc: long
+  next_doc_count: long
+  score: long
+  score_count: long
+  set_min_competitive_score: long
+  set_min_competitive_score_count: long
+  shallow_advance: long
+  shallow_advance_count: long
+}
+
+export interface SearchKnnQueryProfileResult {
+  type: string
+  description: string
+  time?: Duration
+  time_in_nanos: DurationValue<UnitNanos>
+  breakdown: SearchKnnQueryProfileBreakdown
+  debug?: Record<string, any>
+  children?: SearchKnnQueryProfileResult[]
+}
+
 export interface SearchLaplaceSmoothingModel {
   alpha: double
 }
@@ -1618,6 +1699,8 @@ export interface SearchQueryBreakdown {
   score_count: long
   compute_max_score: long
   compute_max_score_count: long
+  count_weight: long
+  count_weight_count: long
   set_min_competitive_score: long
   set_min_competitive_score_count: long
 }
@@ -1658,9 +1741,14 @@ export interface SearchSearchProfile {
 
 export interface SearchShardProfile {
   aggregations: SearchAggregationProfile[]
+  cluster: string
+  dfs?: SearchDfsProfile
+  fetch?: SearchFetchProfile
   id: string
+  index: IndexName
+  node_id: NodeId
   searches: SearchSearchProfile[]
-  fetch?: SearchFetchProfile
+  shard_id: long
 }
 
 export interface SearchSmoothingModelContainer {
@@ -2088,7 +2176,6 @@ export interface BulkIndexByScrollFailure {
   id: Id
   index: IndexName
   status: integer
-  type: string
 }
 
 export interface BulkStats {
@@ -2612,12 +2699,14 @@ export interface Retries {
 
 export interface RetrieverBase {
   filter?: QueryDslQueryContainer | QueryDslQueryContainer[]
+  min_score?: float
 }
 
 export interface RetrieverContainer {
   standard?: StandardRetriever
   knn?: KnnRetriever
   rrf?: RRFRetriever
+  text_similarity_reranker?: TextSimilarityReranker
 }
 
 export type Routing = string
@@ -2745,7 +2834,7 @@ export interface ShardStatistics {
 }
 
 export interface ShardsOperationResponseBase {
-  _shards: ShardStatistics
+  _shards?: ShardStatistics
 }
 
 export interface SlicedScroll {
@@ -2782,7 +2871,6 @@ export interface StandardRetriever extends RetrieverBase {
   search_after?: SortResults
   terminate_after?: integer
   sort?: Sort
-  min_score?: float
   collapse?: SearchFieldCollapse
 }
 
@@ -2819,6 +2907,14 @@ export interface TextEmbedding {
   model_text: string
 }
 
+export interface TextSimilarityReranker extends RetrieverBase {
+  retriever: RetrieverContainer
+  rank_window_size?: integer
+  inference_id?: string
+  inference_text?: string
+  field?: string
+}
+
 export type ThreadType = 'cpu' | 'wait' | 'block' | 'gpu' | 'mem'
 
 export type TimeOfDay = string
@@ -3006,6 +3102,7 @@ export interface AggregationsAggregationContainer {
   rare_terms?: AggregationsRareTermsAggregation
   rate?: AggregationsRateAggregation
   reverse_nested?: AggregationsReverseNestedAggregation
+  random_sampler?: AggregationsRandomSamplerAggregation
   sampler?: AggregationsSamplerAggregation
   scripted_metric?: AggregationsScriptedMetricAggregation
   serial_diff?: AggregationsSerialDifferencingAggregation
@@ -3894,6 +3991,12 @@ export interface AggregationsPipelineAggregationBase extends AggregationsBucketP
   gap_policy?: AggregationsGapPolicy
 }
 
+export interface AggregationsRandomSamplerAggregation extends AggregationsBucketAggregationBase {
+  probability: double
+  seed?: integer
+  shard_seed?: integer
+}
+
 export interface AggregationsRangeAggregate extends AggregationsMultiBucketAggregateBase<AggregationsRangeBucket> {
 }
 
@@ -4498,8 +4601,8 @@ export interface AnalysisEdgeNGramTokenFilter extends AnalysisTokenFilterBase {
 export interface AnalysisEdgeNGramTokenizer extends AnalysisTokenizerBase {
   type: 'edge_ngram'
   custom_token_chars?: string
-  max_gram: integer
-  min_gram: integer
+  max_gram?: integer
+  min_gram?: integer
   token_chars?: AnalysisTokenChar[]
 }
 
@@ -4715,14 +4818,14 @@ export interface AnalysisKeywordAnalyzer {
 export interface AnalysisKeywordMarkerTokenFilter extends AnalysisTokenFilterBase {
   type: 'keyword_marker'
   ignore_case?: boolean
-  keywords?: string[]
+  keywords?: string | string[]
   keywords_path?: string
   keywords_pattern?: string
 }
 
 export interface AnalysisKeywordTokenizer extends AnalysisTokenizerBase {
   type: 'keyword'
-  buffer_size: integer
+  buffer_size?: integer
 }
 
 export interface AnalysisKuromojiAnalyzer {
@@ -4841,8 +4944,8 @@ export interface AnalysisNGramTokenFilter extends AnalysisTokenFilterBase {
 export interface AnalysisNGramTokenizer extends AnalysisTokenizerBase {
   type: 'ngram'
   custom_token_chars?: string
-  max_gram: integer
-  min_gram: integer
+  max_gram?: integer
+  min_gram?: integer
   token_chars?: AnalysisTokenChar[]
 }
 
@@ -5252,6 +5355,10 @@ export interface MappingBooleanProperty extends MappingDocValuesPropertyBase {
   fielddata?: IndicesNumericFielddata
   index?: boolean
   null_value?: boolean
+  ignore_malformed?: boolean
+  script?: Script | string
+  on_script_error?: MappingOnScriptError
+  time_series_dimension?: boolean
   type: 'boolean'
 }
 
@@ -5281,7 +5388,6 @@ export interface MappingConstantKeywordProperty extends MappingPropertyBase {
 
 export interface MappingCorePropertyBase extends MappingPropertyBase {
   copy_to?: Fields
-  similarity?: string
   store?: boolean
 }
 
@@ -5362,7 +5468,7 @@ export interface MappingDynamicProperty extends MappingDocValuesPropertyBase {
   index?: boolean
   index_options?: MappingIndexOptions
   index_phrases?: boolean
-  index_prefixes?: MappingTextIndexPrefixes
+  index_prefixes?: MappingTextIndexPrefixes | null
   norms?: boolean
   position_increment_gap?: integer
   search_analyzer?: string
@@ -5522,6 +5628,7 @@ export interface MappingKeywordProperty extends MappingDocValuesPropertyBase {
   normalizer?: string
   norms?: boolean
   null_value?: string
+  similarity?: string | null
   split_queries_on_whitespace?: boolean
   time_series_dimension?: boolean
   type: 'keyword'
@@ -5650,6 +5757,7 @@ export interface MappingSearchAsYouTypeProperty extends MappingCorePropertyBase
   norms?: boolean
   search_analyzer?: string
   search_quote_analyzer?: string
+  similarity?: string | null
   term_vector?: MappingTermVectorOption
   type: 'search_as_you_type'
 }
@@ -5715,11 +5823,12 @@ export interface MappingTextProperty extends MappingCorePropertyBase {
   index?: boolean
   index_options?: MappingIndexOptions
   index_phrases?: boolean
-  index_prefixes?: MappingTextIndexPrefixes
+  index_prefixes?: MappingTextIndexPrefixes | null
   norms?: boolean
   position_increment_gap?: integer
   search_analyzer?: string
   search_quote_analyzer?: string
+  similarity?: string | null
   term_vector?: MappingTermVectorOption
   type: 'text'
 }
@@ -5936,6 +6045,12 @@ export type QueryDslGeoDistanceQuery = QueryDslGeoDistanceQueryKeys
 
 export type QueryDslGeoExecution = 'memory' | 'indexed'
 
+export interface QueryDslGeoGridQuery extends QueryDslQueryBase {
+  geogrid?: GeoTile
+  geohash?: GeoHash
+  geohex?: GeoHexCell
+}
+
 export interface QueryDslGeoPolygonPoints {
   points: GeoLocation[]
 }
@@ -6231,6 +6346,7 @@ export interface QueryDslQueryContainer {
   fuzzy?: Partial<Record<Field, QueryDslFuzzyQuery | string | double | boolean>>
   geo_bounding_box?: QueryDslGeoBoundingBoxQuery
   geo_distance?: QueryDslGeoDistanceQuery
+  geo_grid?: Partial<Record<Field, QueryDslGeoGridQuery>>
   geo_polygon?: QueryDslGeoPolygonQuery
   geo_shape?: QueryDslGeoShapeQuery
   has_child?: QueryDslHasChildQuery
@@ -6515,6 +6631,7 @@ export type QueryDslTermsQuery = QueryDslTermsQueryKeys
 export type QueryDslTermsQueryField = FieldValue[] | QueryDslTermsLookup
 
 export interface QueryDslTermsSetQuery extends QueryDslQueryBase {
+  minimum_should_match?: MinimumShouldMatch
   minimum_should_match_field?: Field
   minimum_should_match_script?: Script | string
   terms: string[]
@@ -6619,6 +6736,7 @@ export type AsyncSearchGetResponse<TDocument = unknown> = AsyncSearchAsyncSearch
 
 export interface AsyncSearchStatusRequest extends RequestBase {
   id: Id
+  keep_alive?: Duration
 }
 
 export type AsyncSearchStatusResponse = AsyncSearchStatusStatusResponseBase
@@ -6654,7 +6772,6 @@ export interface AsyncSearchSubmitRequest extends RequestBase {
   pre_filter_shard_size?: long
   request_cache?: boolean
   routing?: Routing
-  scroll?: Duration
   search_type?: SearchType
   stats?: string[]
   stored_fields?: Fields
@@ -6723,6 +6840,8 @@ export interface AutoscalingAutoscalingPolicy {
 
 export interface AutoscalingDeleteAutoscalingPolicyRequest extends RequestBase {
   name: Name
+  master_timeout?: Duration
+  timeout?: Duration
 }
 
 export type AutoscalingDeleteAutoscalingPolicyResponse = AcknowledgedResponseBase
@@ -6755,6 +6874,7 @@ export interface AutoscalingGetAutoscalingCapacityAutoscalingResources {
 }
 
 export interface AutoscalingGetAutoscalingCapacityRequest extends RequestBase {
+  master_timeout?: Duration
 }
 
 export interface AutoscalingGetAutoscalingCapacityResponse {
@@ -6763,12 +6883,15 @@ export interface AutoscalingGetAutoscalingCapacityResponse {
 
 export interface AutoscalingGetAutoscalingPolicyRequest extends RequestBase {
   name: Name
+  master_timeout?: Duration
 }
 
 export type AutoscalingGetAutoscalingPolicyResponse = AutoscalingAutoscalingPolicy
 
 export interface AutoscalingPutAutoscalingPolicyRequest extends RequestBase {
   name: Name
+  master_timeout?: Duration
+  timeout?: Duration
   body?: AutoscalingAutoscalingPolicy
 }
 
@@ -6869,7 +6992,7 @@ export type CatAllocationResponse = CatAllocationAllocationRecord[]
 
 export interface CatComponentTemplatesComponentTemplate {
   name: string
-  version: string
+  version: string | null
   alias_count: string
   mapping_count: string
   settings_count: string
@@ -9483,7 +9606,7 @@ export interface ClusterStatsOperatingSystemMemoryInfo {
 
 export interface ClusterStatsRequest extends RequestBase {
   node_id?: NodeIds
-  flat_settings?: boolean
+  include_remotes?: boolean
   timeout?: Duration
 }
 
@@ -9637,7 +9760,7 @@ export interface ConnectorFeatureEnabled {
 export interface ConnectorFilteringAdvancedSnippet {
   created_at?: DateTime
   updated_at?: DateTime
-  value: Record<string, any>
+  value: any
 }
 
 export interface ConnectorFilteringConfig {
@@ -10079,10 +10202,11 @@ export interface EnrichDeletePolicyRequest extends RequestBase {
 
 export type EnrichDeletePolicyResponse = AcknowledgedResponseBase
 
-export type EnrichExecutePolicyEnrichPolicyPhase = 'SCHEDULED' | 'RUNNING' | 'COMPLETE' | 'FAILED'
+export type EnrichExecutePolicyEnrichPolicyPhase = 'SCHEDULED' | 'RUNNING' | 'COMPLETE' | 'FAILED' | 'CANCELLED'
 
 export interface EnrichExecutePolicyExecuteEnrichPolicyStatus {
   phase: EnrichExecutePolicyEnrichPolicyPhase
+  step?: string
 }
 
 export interface EnrichExecutePolicyRequest extends RequestBase {
@@ -10092,7 +10216,7 @@ export interface EnrichExecutePolicyRequest extends RequestBase {
 
 export interface EnrichExecutePolicyResponse {
   status?: EnrichExecutePolicyExecuteEnrichPolicyStatus
-  task_id?: TaskId
+  task?: TaskId
 }
 
 export interface EnrichGetPolicyRequest extends RequestBase {
@@ -10680,16 +10804,16 @@ export interface IlmMigrateToDataTiersResponse {
 export interface IlmMoveToStepRequest extends RequestBase {
   index: IndexName
   body?: {
-    current_step?: IlmMoveToStepStepKey
-    next_step?: IlmMoveToStepStepKey
+    current_step: IlmMoveToStepStepKey
+    next_step: IlmMoveToStepStepKey
   }
 }
 
 export type IlmMoveToStepResponse = AcknowledgedResponseBase
 
 export interface IlmMoveToStepStepKey {
-  action: string
-  name: string
+  action?: string
+  name?: string
   phase: string
 }
 
@@ -10817,6 +10941,7 @@ export interface IndicesDataStreamTimestampField {
 
 export interface IndicesDataStreamVisibility {
   hidden?: boolean
+  allow_custom_routing?: boolean
 }
 
 export interface IndicesDownsampleConfig {
@@ -10995,6 +11120,8 @@ export interface IndicesIndexTemplate {
   _meta?: Metadata
   allow_auto_create?: boolean
   data_stream?: IndicesIndexTemplateDataStreamConfiguration
+  deprecated?: boolean
+  ignore_missing_component_templates?: Names
 }
 
 export interface IndicesIndexTemplateDataStreamConfiguration {
@@ -12584,10 +12711,18 @@ export type InferenceDenseByteVector = byte[]
 
 export type InferenceDenseVector = float[]
 
+export interface InferenceInferenceChunkingSettings {
+  max_chunk_size?: integer
+  overlap?: integer
+  sentence_overlap?: integer
+  strategy?: string
+}
+
 export interface InferenceInferenceEndpoint {
+  chunking_settings?: InferenceInferenceChunkingSettings
   service: string
   service_settings: InferenceServiceSettings
-  task_settings: InferenceTaskSettings
+  task_settings?: InferenceTaskSettings
 }
 
 export interface InferenceInferenceEndpointInfo extends InferenceInferenceEndpoint {
@@ -12699,6 +12834,20 @@ export interface IngestCircleProcessor extends IngestProcessorBase {
   target_field?: Field
 }
 
+export interface IngestCommunityIDProcessor extends IngestProcessorBase {
+  source_ip?: Field
+  source_port?: Field
+  destination_ip?: Field
+  destination_port?: Field
+  iana_number?: Field
+  icmp_type?: Field
+  icmp_code?: Field
+  transport?: Field
+  target_field?: Field
+  seed?: integer
+  ignore_missing?: boolean
+}
+
 export interface IngestConvertProcessor extends IngestProcessorBase {
   field: Field
   ignore_missing?: boolean
@@ -12706,7 +12855,7 @@ export interface IngestConvertProcessor extends IngestProcessorBase {
   type: IngestConvertType
 }
 
-export type IngestConvertType = 'integer' | 'long' | 'float' | 'double' | 'string' | 'boolean' | 'auto'
+export type IngestConvertType = 'integer' | 'long' | 'double' | 'float' | 'boolean' | 'ip' | 'string' | 'auto'
 
 export interface IngestCsvProcessor extends IngestProcessorBase {
   empty_value?: any
@@ -12720,7 +12869,16 @@ export interface IngestCsvProcessor extends IngestProcessorBase {
 
 export interface IngestDatabaseConfiguration {
   name: Name
-  maxmind: IngestMaxmind
+  maxmind?: IngestMaxmind
+  ipinfo?: IngestIpinfo
+}
+
+export interface IngestDatabaseConfigurationFull {
+  web?: IngestWeb
+  local?: IngestLocal
+  name: Name
+  maxmind?: IngestMaxmind
+  ipinfo?: IngestIpinfo
 }
 
 export interface IngestDateIndexNameProcessor extends IngestProcessorBase {
@@ -12739,6 +12897,7 @@ export interface IngestDateProcessor extends IngestProcessorBase {
   locale?: string
   target_field?: Field
   timezone?: string
+  output_format?: string
 }
 
 export interface IngestDissectProcessor extends IngestProcessorBase {
@@ -12771,6 +12930,16 @@ export interface IngestFailProcessor extends IngestProcessorBase {
   message: string
 }
 
+export type IngestFingerprintDigest = 'MD5' | 'SHA-1' | 'SHA-256' | 'SHA-512' | 'MurmurHash3'
+
+export interface IngestFingerprintProcessor extends IngestProcessorBase {
+  fields: Fields
+  target_field?: Field
+  salt?: string
+  method?: IngestFingerprintDigest
+  ignore_missing?: boolean
+}
+
 export interface IngestForeachProcessor extends IngestProcessorBase {
   field: Field
   ignore_missing?: boolean
@@ -12804,6 +12973,7 @@ export interface IngestGeoIpProcessor extends IngestProcessorBase {
 }
 
 export interface IngestGrokProcessor extends IngestProcessorBase {
+  ecs_compatibility?: string
   field: Field
   ignore_missing?: boolean
   pattern_definitions?: Record<string, string>
@@ -12850,6 +13020,20 @@ export interface IngestInferenceProcessor extends IngestProcessorBase {
   inference_config?: IngestInferenceConfig
 }
 
+export interface IngestIpLocationProcessor extends IngestProcessorBase {
+  database_file?: string
+  field: Field
+  first_only?: boolean
+  ignore_missing?: boolean
+  properties?: string[]
+  target_field?: Field
+  download_database_on_pipeline_creation?: boolean
+}
+
+export interface IngestIpinfo {
+  [key: string]: never
+}
+
 export interface IngestJoinProcessor extends IngestProcessorBase {
   field: Field
   separator: string
@@ -12880,6 +13064,10 @@ export interface IngestKeyValueProcessor extends IngestProcessorBase {
   value_split: string
 }
 
+export interface IngestLocal {
+  type: string
+}
+
 export interface IngestLowercaseProcessor extends IngestProcessorBase {
   field: Field
   ignore_missing?: boolean
@@ -12890,6 +13078,15 @@ export interface IngestMaxmind {
   account_id: Id
 }
 
+export interface IngestNetworkDirectionProcessor extends IngestProcessorBase {
+  source_ip?: Field
+  destination_ip?: Field
+  target_field?: Field
+  internal_networks?: string[]
+  internal_networks_field?: Field
+  ignore_missing?: boolean
+}
+
 export interface IngestPipeline {
   description?: string
   on_failure?: IngestProcessorContainer[]
@@ -12923,6 +13120,7 @@ export interface IngestProcessorContainer {
   attachment?: IngestAttachmentProcessor
   bytes?: IngestBytesProcessor
   circle?: IngestCircleProcessor
+  community_id?: IngestCommunityIDProcessor
   convert?: IngestConvertProcessor
   csv?: IngestCsvProcessor
   date?: IngestDateProcessor
@@ -12932,7 +13130,9 @@ export interface IngestProcessorContainer {
   drop?: IngestDropProcessor
   enrich?: IngestEnrichProcessor
   fail?: IngestFailProcessor
+  fingerprint?: IngestFingerprintProcessor
   foreach?: IngestForeachProcessor
+  ip_location?: IngestIpLocationProcessor
   geo_grid?: IngestGeoGridProcessor
   geoip?: IngestGeoIpProcessor
   grok?: IngestGrokProcessor
@@ -12943,8 +13143,10 @@ export interface IngestProcessorContainer {
   json?: IngestJsonProcessor
   kv?: IngestKeyValueProcessor
   lowercase?: IngestLowercaseProcessor
+  network_direction?: IngestNetworkDirectionProcessor
   pipeline?: IngestPipelineProcessor
   redact?: IngestRedactProcessor
+  registered_domain?: IngestRegisteredDomainProcessor
   remove?: IngestRemoveProcessor
   rename?: IngestRenameProcessor
   reroute?: IngestRerouteProcessor
@@ -12953,6 +13155,7 @@ export interface IngestProcessorContainer {
   set_security_user?: IngestSetSecurityUserProcessor
   sort?: IngestSortProcessor
   split?: IngestSplitProcessor
+  terminate?: IngestTerminateProcessor
   trim?: IngestTrimProcessor
   uppercase?: IngestUppercaseProcessor
   urldecode?: IngestUrlDecodeProcessor
@@ -12968,6 +13171,13 @@ export interface IngestRedactProcessor extends IngestProcessorBase {
   suffix?: string
   ignore_missing?: boolean
   skip_if_unlicensed?: boolean
+  trace_redact?: boolean
+}
+
+export interface IngestRegisteredDomainProcessor extends IngestProcessorBase {
+  field: Field
+  target_field?: Field
+  ignore_missing?: boolean
 }
 
 export interface IngestRemoveProcessor extends IngestProcessorBase {
@@ -13025,6 +13235,9 @@ export interface IngestSplitProcessor extends IngestProcessorBase {
   target_field?: Field
 }
 
+export interface IngestTerminateProcessor extends IngestProcessorBase {
+}
+
 export interface IngestTrimProcessor extends IngestProcessorBase {
   field: Field
   ignore_missing?: boolean
@@ -13062,6 +13275,10 @@ export interface IngestUserAgentProcessor extends IngestProcessorBase {
 
 export type IngestUserAgentProperty = 'name' | 'os' | 'device' | 'original' | 'version'
 
+export interface IngestWeb {
+  [key: string]: never
+}
+
 export interface IngestDeleteGeoipDatabaseRequest extends RequestBase {
   id: Ids
   master_timeout?: Duration
@@ -13070,6 +13287,14 @@ export interface IngestDeleteGeoipDatabaseRequest extends RequestBase {
 
 export type IngestDeleteGeoipDatabaseResponse = AcknowledgedResponseBase
 
+export interface IngestDeleteIpLocationDatabaseRequest extends RequestBase {
+  id: Ids
+  master_timeout?: Duration
+  timeout?: Duration
+}
+
+export type IngestDeleteIpLocationDatabaseResponse = AcknowledgedResponseBase
+
 export interface IngestDeletePipelineRequest extends RequestBase {
   id: Id
   master_timeout?: Duration
@@ -13120,6 +13345,23 @@ export interface IngestGetGeoipDatabaseResponse {
   databases: IngestGetGeoipDatabaseDatabaseConfigurationMetadata[]
 }
 
+export interface IngestGetIpLocationDatabaseDatabaseConfigurationMetadata {
+  id: Id
+  version: VersionNumber
+  modified_date_millis?: EpochTime<UnitMillis>
+  modified_date?: EpochTime<UnitMillis>
+  database: IngestDatabaseConfigurationFull
+}
+
+export interface IngestGetIpLocationDatabaseRequest extends RequestBase {
+  id?: Ids
+  master_timeout?: Duration
+}
+
+export interface IngestGetIpLocationDatabaseResponse {
+  databases: IngestGetIpLocationDatabaseDatabaseConfigurationMetadata[]
+}
+
 export interface IngestGetPipelineRequest extends RequestBase {
   id?: Id
   master_timeout?: Duration
@@ -13147,6 +13389,15 @@ export interface IngestPutGeoipDatabaseRequest extends RequestBase {
 
 export type IngestPutGeoipDatabaseResponse = AcknowledgedResponseBase
 
+export interface IngestPutIpLocationDatabaseRequest extends RequestBase {
+  id: Id
+  master_timeout?: Duration
+  timeout?: Duration
+  body?: IngestDatabaseConfiguration
+}
+
+export type IngestPutIpLocationDatabaseResponse = AcknowledgedResponseBase
+
 export interface IngestPutPipelineRequest extends RequestBase {
   id: Id
   master_timeout?: Duration
@@ -13183,6 +13434,7 @@ export type IngestSimulateDocumentSimulation = IngestSimulateDocumentSimulationK
   & { [property: string]: string | Id | IndexName | IngestSimulateIngest | Record<string, any> | SpecUtilsStringified<VersionNumber> | VersionType }
 
 export interface IngestSimulateIngest {
+  _redact?: IngestSimulateRedact
   timestamp: DateTime
   pipeline?: Name
 }
@@ -13197,6 +13449,10 @@ export interface IngestSimulatePipelineSimulation {
   error?: ErrorCause
 }
 
+export interface IngestSimulateRedact {
+  _is_redacted: boolean
+}
+
 export interface IngestSimulateRequest extends RequestBase {
   id?: Id
   verbose?: boolean
@@ -13363,10 +13619,12 @@ export interface LogstashPutPipelineRequest extends RequestBase {
 export type LogstashPutPipelineResponse = boolean
 
 export interface MigrationDeprecationsDeprecation {
-  details: string
+  details?: string
   level: MigrationDeprecationsDeprecationLevel
   message: string
   url: string
+  resolve_during_rolling_upgrade: boolean
+  _meta?: Record<string, any>
 }
 
 export type MigrationDeprecationsDeprecationLevel = 'none' | 'info' | 'warning' | 'critical'
@@ -13417,6 +13675,12 @@ export interface MigrationPostFeatureUpgradeResponse {
   features: MigrationPostFeatureUpgradeMigrationFeature[]
 }
 
+export interface MlAdaptiveAllocationsSettings {
+  enabled: boolean
+  min_number_of_allocations?: integer
+  max_number_of_allocations?: integer
+}
+
 export interface MlAnalysisConfig {
   bucket_span?: Duration
   categorization_analyzer?: MlCategorizationAnalyzer
@@ -13447,7 +13711,7 @@ export interface MlAnalysisConfigRead {
 
 export interface MlAnalysisLimits {
   categorization_examples_limit?: long
-  model_memory_limit?: string
+  model_memory_limit?: ByteSize
 }
 
 export interface MlAnalysisMemoryLimit {
@@ -13482,20 +13746,21 @@ export interface MlAnomaly {
 }
 
 export interface MlAnomalyCause {
-  actual: double[]
-  by_field_name: Name
-  by_field_value: string
-  correlated_by_field_value: string
-  field_name: Field
-  function: string
-  function_description: string
-  influencers: MlInfluence[]
-  over_field_name: Name
-  over_field_value: string
-  partition_field_name: string
-  partition_field_value: string
+  actual?: double[]
+  by_field_name?: Name
+  by_field_value?: string
+  correlated_by_field_value?: string
+  field_name?: Field
+  function?: string
+  function_description?: string
+  geo_results?: MlGeoResults
+  influencers?: MlInfluence[]
+  over_field_name?: Name
+  over_field_value?: string
+  partition_field_name?: string
+  partition_field_value?: string
   probability: double
-  typical: double[]
+  typical?: double[]
 }
 
 export interface MlAnomalyExplanation {
@@ -13596,6 +13861,14 @@ export interface MlClassificationInferenceOptions {
   top_classes_results_field?: string
 }
 
+export interface MlCommonTokenizationConfig {
+  do_lower_case?: boolean
+  max_sequence_length?: integer
+  span?: integer
+  truncate?: MlTokenizationTruncate
+  with_special_tokens?: boolean
+}
+
 export type MlConditionOperator = 'gt' | 'gte' | 'lt' | 'lte'
 
 export type MlCustomSettings = any
@@ -13685,15 +13958,16 @@ export type MlDatafeedState = 'started' | 'stopped' | 'starting' | 'stopping'
 export interface MlDatafeedStats {
   assignment_explanation?: string
   datafeed_id: Id
-  node?: MlDiscoveryNode
+  node?: MlDiscoveryNodeCompact
   state: MlDatafeedState
-  timing_stats: MlDatafeedTimingStats
+  timing_stats?: MlDatafeedTimingStats
   running_state?: MlDatafeedRunningState
 }
 
 export interface MlDatafeedTimingStats {
   bucket_count: long
   exponential_average_search_time_per_hour_ms: DurationValue<UnitFloatMillis>
+  exponential_average_calculation_context?: MlExponentialAverageCalculationContext
   job_id: Id
   search_count: long
   total_search_time_ms: DurationValue<UnitFloatMillis>
@@ -13885,6 +14159,7 @@ export interface MlDataframeAnalyticsSummary {
   model_memory_limit?: string
   source: MlDataframeAnalyticsSource
   version?: VersionString
+  _meta?: Metadata
 }
 
 export interface MlDataframeEvaluationClassification {
@@ -13956,9 +14231,7 @@ export interface MlDelayedDataCheckConfig {
 
 export type MlDeploymentAllocationState = 'started' | 'starting' | 'fully_allocated'
 
-export type MlDeploymentAssignmentState = 'starting' | 'started' | 'stopping' | 'failed'
-
-export type MlDeploymentState = 'started' | 'starting' | 'stopping'
+export type MlDeploymentAssignmentState = 'started' | 'starting' | 'stopping' | 'failed'
 
 export interface MlDetectionRule {
   actions?: MlRuleAction[]
@@ -13992,21 +14265,50 @@ export interface MlDetectorRead {
   use_null?: boolean
 }
 
-export interface MlDiscoveryNode {
-  attributes: Record<string, string>
+export interface MlDetectorUpdate {
+  detector_index: integer
+  description?: string
+  custom_rules?: MlDetectionRule[]
+}
+
+export type MlDiscoveryNode = Partial<Record<Id, MlDiscoveryNodeContent>>
+
+export interface MlDiscoveryNodeCompact {
+  name: Name
   ephemeral_id: Id
   id: Id
-  name: Name
   transport_address: TransportAddress
+  attributes: Record<string, string>
+}
+
+export interface MlDiscoveryNodeContent {
+  name?: Name
+  ephemeral_id: Id
+  transport_address: TransportAddress
+  external_id: string
+  attributes: Record<string, string>
+  roles: string[]
+  version: VersionString
+  min_index_version: integer
+  max_index_version: integer
 }
 
 export type MlExcludeFrequent = 'all' | 'none' | 'by' | 'over'
 
+export interface MlExponentialAverageCalculationContext {
+  incremental_metric_value_ms: DurationValue<UnitFloatMillis>
+  latest_timestamp?: EpochTime<UnitMillis>
+  previous_exponential_average_ms?: DurationValue<UnitFloatMillis>
+}
+
+export type MlFeatureExtractor = MlQueryFeatureExtractor
+
 export interface MlFillMaskInferenceOptions {
   mask_token?: string
   num_top_classes?: integer
   tokenization?: MlTokenizationConfigContainer
   results_field?: string
+  vocabulary: MlVocabulary
 }
 
 export interface MlFillMaskInferenceUpdateOptions {
@@ -14029,8 +14331,8 @@ export interface MlFilterRef {
 export type MlFilterType = 'include' | 'exclude'
 
 export interface MlGeoResults {
-  actual_point: string
-  typical_point: string
+  actual_point?: string
+  typical_point?: string
 }
 
 export interface MlHyperparameter {
@@ -14066,6 +14368,7 @@ export interface MlInferenceConfigCreateContainer {
   text_classification?: MlTextClassificationInferenceOptions
   zero_shot_classification?: MlZeroShotClassificationInferenceOptions
   fill_mask?: MlFillMaskInferenceOptions
+  learning_to_rank?: MlLearningToRankConfig
   ner?: MlNerInferenceOptions
   pass_through?: MlPassThroughInferenceOptions
   text_embedding?: MlTextEmbeddingInferenceOptions
@@ -14194,7 +14497,7 @@ export interface MlJobStats {
   forecasts_stats: MlJobForecastStatistics
   job_id: string
   model_size_stats: MlModelSizeStats
-  node?: MlDiscoveryNode
+  node?: MlDiscoveryNodeCompact
   open_time?: DateTime
   state: MlJobState
   timing_stats: MlJobTimingStats
@@ -14212,8 +14515,31 @@ export interface MlJobTimingStats {
   minimum_bucket_processing_time_ms?: DurationValue<UnitFloatMillis>
 }
 
+export interface MlLearningToRankConfig {
+  default_params?: Record<string, any>
+  feature_extractors?: Record<string, MlFeatureExtractor>[]
+  num_top_feature_importance_values: integer
+}
+
 export type MlMemoryStatus = 'ok' | 'soft_limit' | 'hard_limit'
 
+export interface MlModelPackageConfig {
+  create_time?: EpochTime<UnitMillis>
+  description?: string
+  inference_config?: Record<string, any>
+  metadata?: Metadata
+  minimum_version?: string
+  model_repository?: string
+  model_type?: string
+  packaged_model_id: Id
+  platform_architecture?: string
+  prefix_strings?: MlTrainedModelPrefixStrings
+  size?: ByteSize
+  sha256?: string
+  tags?: string[]
+  vocabulary_file?: string
+}
+
 export interface MlModelPlotConfig {
   annotations_enabled?: boolean
   enabled?: boolean
@@ -14228,6 +14554,7 @@ export interface MlModelSizeStats {
   model_bytes: ByteSize
   model_bytes_exceeded?: ByteSize
   model_bytes_memory_limit?: ByteSize
+  output_memory_allocator_bytes?: ByteSize
   peak_model_bytes?: ByteSize
   assignment_memory_basis?: string
   result_type: string
@@ -14277,20 +14604,11 @@ export interface MlNerInferenceUpdateOptions {
   results_field?: string
 }
 
-export interface MlNlpBertTokenizationConfig {
-  do_lower_case?: boolean
-  with_special_tokens?: boolean
-  max_sequence_length?: integer
-  truncate?: MlTokenizationTruncate
-  span?: integer
+export interface MlNlpBertTokenizationConfig extends MlCommonTokenizationConfig {
 }
 
-export interface MlNlpRobertaTokenizationConfig {
+export interface MlNlpRobertaTokenizationConfig extends MlCommonTokenizationConfig {
   add_prefix_space?: boolean
-  with_special_tokens?: boolean
-  max_sequence_length?: integer
-  truncate?: MlTokenizationTruncate
-  span?: integer
 }
 
 export interface MlNlpTokenizationUpdateOptions {
@@ -14314,7 +14632,7 @@ export interface MlOverallBucket {
   overall_score: double
   result_type: string
   timestamp: EpochTime<UnitMillis>
-  timestamp_string: DateTime
+  timestamp_string?: DateTime
 }
 
 export interface MlOverallBucketJob {
@@ -14345,6 +14663,12 @@ export interface MlPerPartitionCategorization {
 
 export type MlPredictedValue = ScalarValue | ScalarValue[]
 
+export interface MlQueryFeatureExtractor {
+  default_score?: float
+  feature_name: string
+  query: QueryDslQueryContainer
+}
+
 export interface MlQuestionAnsweringInferenceOptions {
   num_top_classes?: integer
   tokenization?: MlTokenizationConfigContainer
@@ -14389,6 +14713,7 @@ export interface MlTextClassificationInferenceOptions {
   tokenization?: MlTokenizationConfigContainer
   results_field?: string
   classification_labels?: string[]
+  vocabulary?: MlVocabulary
 }
 
 export interface MlTextClassificationInferenceUpdateOptions {
@@ -14402,6 +14727,7 @@ export interface MlTextEmbeddingInferenceOptions {
   embedding_size?: integer
   tokenization?: MlTokenizationConfigContainer
   results_field?: string
+  vocabulary: MlVocabulary
 }
 
 export interface MlTextEmbeddingInferenceUpdateOptions {
@@ -14412,6 +14738,7 @@ export interface MlTextEmbeddingInferenceUpdateOptions {
 export interface MlTextExpansionInferenceOptions {
   tokenization?: MlTokenizationConfigContainer
   results_field?: string
+  vocabulary: MlVocabulary
 }
 
 export interface MlTextExpansionInferenceUpdateOptions {
@@ -14426,8 +14753,10 @@ export interface MlTimingStats {
 
 export interface MlTokenizationConfigContainer {
   bert?: MlNlpBertTokenizationConfig
+  bert_ja?: MlNlpBertTokenizationConfig
   mpnet?: MlNlpBertTokenizationConfig
   roberta?: MlNlpRobertaTokenizationConfig
+  xlm_roberta?: MlXlmRobertaTokenizationConfig
 }
 
 export type MlTokenizationTruncate = 'first' | 'second' | 'none'
@@ -14456,27 +14785,31 @@ export interface MlTotalFeatureImportanceStatistics {
 }
 
 export interface MlTrainedModelAssignment {
+  adaptive_allocations?: MlAdaptiveAllocationsSettings | null
   assignment_state: MlDeploymentAssignmentState
   max_assigned_allocations?: integer
+  reason?: string
   routing_table: Record<string, MlTrainedModelAssignmentRoutingTable>
   start_time: DateTime
   task_parameters: MlTrainedModelAssignmentTaskParameters
 }
 
 export interface MlTrainedModelAssignmentRoutingTable {
-  reason: string
+  reason?: string
   routing_state: MlRoutingState
   current_allocations: integer
   target_allocations: integer
 }
 
 export interface MlTrainedModelAssignmentTaskParameters {
-  model_bytes: integer
+  model_bytes: ByteSize
   model_id: Id
   deployment_id: Id
-  cache_size: ByteSize
+  cache_size?: ByteSize
   number_of_allocations: integer
   priority: MlTrainingPriority
+  per_deployment_memory_bytes: ByteSize
+  per_allocation_memory_bytes: ByteSize
   queue_capacity: integer
   threads_per_allocation: integer
 }
@@ -14499,7 +14832,9 @@ export interface MlTrainedModelConfig {
   license_level?: string
   metadata?: MlTrainedModelConfigMetadata
   model_size_bytes?: ByteSize
+  model_package?: MlModelPackageConfig
   location?: MlTrainedModelLocation
+  platform_architecture?: string
   prefix_strings?: MlTrainedModelPrefixStrings
 }
 
@@ -14521,36 +14856,45 @@ export interface MlTrainedModelDeploymentAllocationStatus {
 }
 
 export interface MlTrainedModelDeploymentNodesStats {
-  average_inference_time_ms: DurationValue<UnitFloatMillis>
-  error_count: integer
-  inference_count: integer
-  last_access: long
-  node: MlDiscoveryNode
-  number_of_allocations: integer
-  number_of_pending_requests: integer
-  rejection_execution_count: integer
+  average_inference_time_ms?: DurationValue<UnitFloatMillis>
+  average_inference_time_ms_last_minute?: DurationValue<UnitFloatMillis>
+  average_inference_time_ms_excluding_cache_hits?: DurationValue<UnitFloatMillis>
+  error_count?: integer
+  inference_count?: long
+  inference_cache_hit_count?: long
+  inference_cache_hit_count_last_minute?: long
+  last_access?: EpochTime<UnitMillis>
+  node?: MlDiscoveryNode
+  number_of_allocations?: integer
+  number_of_pending_requests?: integer
+  peak_throughput_per_minute: long
+  rejection_execution_count?: integer
   routing_state: MlTrainedModelAssignmentRoutingTable
-  start_time: EpochTime<UnitMillis>
-  threads_per_allocation: integer
-  timeout_count: integer
+  start_time?: EpochTime<UnitMillis>
+  threads_per_allocation?: integer
+  throughput_last_minute: integer
+  timeout_count?: integer
 }
 
 export interface MlTrainedModelDeploymentStats {
-  allocation_status: MlTrainedModelDeploymentAllocationStatus
+  adaptive_allocations?: MlAdaptiveAllocationsSettings
+  allocation_status?: MlTrainedModelDeploymentAllocationStatus
   cache_size?: ByteSize
   deployment_id: Id
-  error_count: integer
-  inference_count: integer
+  error_count?: integer
+  inference_count?: integer
   model_id: Id
   nodes: MlTrainedModelDeploymentNodesStats[]
-  number_of_allocations: integer
-  queue_capacity: integer
-  rejected_execution_count: integer
-  reason: string
+  number_of_allocations?: integer
+  peak_throughput_per_minute: long
+  priority: MlTrainingPriority
+  queue_capacity?: integer
+  rejected_execution_count?: integer
+  reason?: string
   start_time: EpochTime<UnitMillis>
-  state: MlDeploymentState
-  threads_per_allocation: integer
-  timeout_count: integer
+  state?: MlDeploymentAssignmentState
+  threads_per_allocation?: integer
+  timeout_count?: integer
 }
 
 export interface MlTrainedModelEntities {
@@ -14626,6 +14970,9 @@ export interface MlVocabulary {
   index: IndexName
 }
 
+export interface MlXlmRobertaTokenizationConfig extends MlCommonTokenizationConfig {
+}
+
 export interface MlZeroShotClassificationInferenceOptions {
   tokenization?: MlTokenizationConfigContainer
   hypothesis_template?: string
@@ -15249,6 +15596,7 @@ export interface MlGetTrainedModelsRequest extends RequestBase {
   exclude_generated?: boolean
   from?: integer
   include?: MlInclude
+  include_model_definition?: boolean
   size?: integer
   tags?: string | string[]
 }
@@ -15301,9 +15649,11 @@ export interface MlInfoDefaults {
 }
 
 export interface MlInfoLimits {
-  max_model_memory_limit?: string
-  effective_max_model_memory_limit: string
-  total_ml_memory: string
+  max_single_ml_node_processors?: integer
+  total_ml_processors?: integer
+  max_model_memory_limit?: ByteSize
+  effective_max_model_memory_limit?: ByteSize
+  total_ml_memory: ByteSize
 }
 
 export interface MlInfoNativeCode {
@@ -15353,21 +15703,24 @@ export interface MlPostDataRequest<TData = unknown> extends RequestBase {
 }
 
 export interface MlPostDataResponse {
-  bucket_count: long
-  earliest_record_timestamp: long
-  empty_bucket_count: long
+  job_id: Id
+  processed_record_count: long
+  processed_field_count: long
   input_bytes: long
   input_field_count: long
-  input_record_count: long
   invalid_date_count: long
-  job_id: Id
-  last_data_time: integer
-  latest_record_timestamp: long
   missing_field_count: long
   out_of_order_timestamp_count: long
-  processed_field_count: long
-  processed_record_count: long
+  empty_bucket_count: long
   sparse_bucket_count: long
+  bucket_count: long
+  earliest_record_timestamp?: EpochTime<UnitMillis>
+  latest_record_timestamp?: EpochTime<UnitMillis>
+  last_data_time?: EpochTime<UnitMillis>
+  latest_empty_bucket_timestamp?: EpochTime<UnitMillis>
+  latest_sparse_bucket_timestamp?: EpochTime<UnitMillis>
+  input_record_count: long
+  log_time?: EpochTime<UnitMillis>
 }
 
 export interface MlPreviewDataFrameAnalyticsDataframePreviewConfig {
@@ -15435,6 +15788,7 @@ export interface MlPutDataFrameAnalyticsRequest extends RequestBase {
     description?: string
     dest: MlDataframeAnalyticsDestination
     max_num_threads?: integer
+    _meta?: Metadata
     model_memory_limit?: string
     source: MlDataframeAnalyticsSource
     headers?: HttpHeaders
@@ -15452,6 +15806,7 @@ export interface MlPutDataFrameAnalyticsResponse {
   dest: MlDataframeAnalyticsDestination
   id: Id
   max_num_threads: integer
+  _meta?: Metadata
   model_memory_limit: string
   source: MlDataframeAnalyticsSource
   version: VersionString
@@ -15465,6 +15820,7 @@ export interface MlPutDatafeedRequest extends RequestBase {
   ignore_unavailable?: boolean
   body?: {
     aggregations?: Record<string, AggregationsAggregationContainer>
+    aggs?: Record<string, AggregationsAggregationContainer>
     chunking_config?: MlChunkingConfig
     delayed_data_check_config?: MlDelayedDataCheckConfig
     frequency?: Duration
@@ -15516,6 +15872,10 @@ export interface MlPutFilterResponse {
 
 export interface MlPutJobRequest extends RequestBase {
   job_id: Id
+  allow_no_indices?: boolean
+  expand_wildcards?: ExpandWildcards
+  ignore_throttled?: boolean
+  ignore_unavailable?: boolean
   body?: {
     allow_lazy_open?: boolean
     analysis_config: MlAnalysisConfig
@@ -15526,6 +15886,7 @@ export interface MlPutJobRequest extends RequestBase {
     data_description: MlDataDescription
     datafeed_config?: MlDatafeedConfig
     description?: string
+    job_id?: Id
     groups?: string[]
     model_plot_config?: MlModelPlotConfig
     model_snapshot_retention_days?: long
@@ -15893,7 +16254,7 @@ export interface MlUpdateJobRequest extends RequestBase {
     renormalization_window_days?: long
     results_retention_days?: long
     groups?: string[]
-    detectors?: MlDetector[]
+    detectors?: MlDetectorUpdate[]
     per_partition_categorization?: MlPerPartitionCategorization
   }
 }
@@ -16649,7 +17010,7 @@ export interface NodesInfoNodeInfoPath {
   logs?: string
   home?: string
   repo?: string[]
-  data?: string[]
+  data?: string | string[]
 }
 
 export interface NodesInfoNodeInfoRepositories {
@@ -16752,7 +17113,7 @@ export interface NodesInfoNodeInfoSettingsIngest {
 }
 
 export interface NodesInfoNodeInfoSettingsNetwork {
-  host?: Host
+  host?: Host | Host[]
 }
 
 export interface NodesInfoNodeInfoSettingsNode {
@@ -16785,6 +17146,7 @@ export interface NodesInfoNodeInfoXpack {
   license?: NodesInfoNodeInfoXpackLicense
   security: NodesInfoNodeInfoXpackSecurity
   notification?: Record<string, any>
+  ml?: NodesInfoNodeInfoXpackMl
 }
 
 export interface NodesInfoNodeInfoXpackLicense {
@@ -16795,16 +17157,20 @@ export interface NodesInfoNodeInfoXpackLicenseType {
   type: string
 }
 
+export interface NodesInfoNodeInfoXpackMl {
+  use_auto_machine_memory_percent?: boolean
+}
+
 export interface NodesInfoNodeInfoXpackSecurity {
-  http: NodesInfoNodeInfoXpackSecuritySsl
+  http?: NodesInfoNodeInfoXpackSecuritySsl
   enabled: string
   transport?: NodesInfoNodeInfoXpackSecuritySsl
   authc?: NodesInfoNodeInfoXpackSecurityAuthc
 }
 
 export interface NodesInfoNodeInfoXpackSecurityAuthc {
-  realms: NodesInfoNodeInfoXpackSecurityAuthcRealms
-  token: NodesInfoNodeInfoXpackSecurityAuthcToken
+  realms?: NodesInfoNodeInfoXpackSecurityAuthcRealms
+  token?: NodesInfoNodeInfoXpackSecurityAuthcToken
 }
 
 export interface NodesInfoNodeInfoXpackSecurityAuthcRealms {
@@ -17001,6 +17367,7 @@ export interface QueryRulesListRulesetsQueryRulesetListItem {
   ruleset_id: Id
   rule_total_count: integer
   rule_criteria_types_counts: Record<string, integer>
+  rule_type_counts: Record<string, integer>
 }
 
 export interface QueryRulesListRulesetsRequest extends RequestBase {
@@ -17039,6 +17406,23 @@ export interface QueryRulesPutRulesetResponse {
   result: Result
 }
 
+export interface QueryRulesTestQueryRulesetMatchedRule {
+  ruleset_id: Id
+  rule_id: Id
+}
+
+export interface QueryRulesTestRequest extends RequestBase {
+  ruleset_id: Id
+  body?: {
+    match_criteria: Record<string, any>
+  }
+}
+
+export interface QueryRulesTestResponse {
+  total_matched_rules: integer
+  matched_rules: QueryRulesTestQueryRulesetMatchedRule[]
+}
+
 export interface RollupDateHistogramGrouping {
   delay?: Duration
   field: Field
@@ -17392,22 +17776,32 @@ export interface SearchableSnapshotsStatsResponse {
   total: any
 }
 
+export interface SecurityAccess {
+  replication?: SecurityReplicationAccess[]
+  search?: SecuritySearchAccess[]
+}
+
 export interface SecurityApiKey {
-  creation?: long
-  expiration?: long
   id: Id
-  invalidated?: boolean
   name: Name
-  realm?: string
+  type: SecurityApiKeyType
+  creation: EpochTime<UnitMillis>
+  expiration?: EpochTime<UnitMillis>
+  invalidated: boolean
+  invalidation?: EpochTime<UnitMillis>
+  username: Username
+  realm: string
   realm_type?: string
-  username?: Username
-  profile_uid?: string
-  metadata?: Metadata
+  metadata: Metadata
   role_descriptors?: Record<string, SecurityRoleDescriptor>
   limited_by?: Record<string, SecurityRoleDescriptor>[]
+  access?: SecurityAccess
+  profile_uid?: string
   _sort?: SortResults
 }
 
+export type SecurityApiKeyType = 'rest' | 'cross_cluster'
+
 export interface SecurityApplicationGlobalUserPrivileges {
   manage: SecurityManageUserPrivileges
 }
@@ -17471,6 +17865,20 @@ export interface SecurityRealmInfo {
   type: string
 }
 
+export interface SecurityRemoteIndicesPrivileges {
+  clusters: Names
+  field_security?: SecurityFieldSecurity
+  names: Indices
+  privileges: SecurityIndexPrivilege[]
+  query?: SecurityIndicesPrivilegesQuery
+  allow_restricted_indices?: boolean
+}
+
+export interface SecurityReplicationAccess {
+  names: IndexName[]
+  allow_restricted_indices?: boolean
+}
+
 export interface SecurityRoleDescriptor {
   cluster?: SecurityClusterPrivilege[]
   indices?: SecurityIndicesPrivileges[]
@@ -17529,6 +17937,13 @@ export interface SecurityRoleTemplateScript {
   options?: Record<string, string>
 }
 
+export interface SecuritySearchAccess {
+  field_security?: SecurityFieldSecurity
+  names: IndexName[]
+  query?: SecurityIndicesPrivilegesQuery
+  allow_restricted_indices?: boolean
+}
+
 export type SecurityTemplateFormat = 'string' | 'json'
 
 export interface SecurityUser {
@@ -17589,11 +18004,16 @@ export interface SecurityActivateUserProfileRequest extends RequestBase {
 
 export type SecurityActivateUserProfileResponse = SecurityUserProfileWithMetadata
 
+export interface SecurityAuthenticateAuthenticateApiKey {
+  id: Id
+  name?: Name
+}
+
 export interface SecurityAuthenticateRequest extends RequestBase {
 }
 
 export interface SecurityAuthenticateResponse {
-  api_key?: SecurityApiKey
+  api_key?: SecurityAuthenticateAuthenticateApiKey
   authentication_realm: SecurityRealmInfo
   email?: string | null
   full_name?: Name | null
@@ -17721,6 +18141,23 @@ export interface SecurityCreateApiKeyResponse {
   encoded: string
 }
 
+export interface SecurityCreateCrossClusterApiKeyRequest extends RequestBase {
+  body?: {
+    access: SecurityAccess
+    expiration?: Duration
+    metadata?: Metadata
+    name: Name
+  }
+}
+
+export interface SecurityCreateCrossClusterApiKeyResponse {
+  api_key: string
+  expiration?: DurationValue<UnitMillis>
+  id: Id
+  name: Name
+  encoded: string
+}
+
 export interface SecurityCreateServiceTokenRequest extends RequestBase {
   namespace: Namespace
   service: Service
@@ -18146,6 +18583,7 @@ export interface SecurityPutRoleRequest extends RequestBase {
     cluster?: SecurityClusterPrivilege[]
     global?: Record<string, any>
     indices?: SecurityIndicesPrivileges[]
+    remote_indices?: SecurityRemoteIndicesPrivileges[]
     metadata?: Metadata
     run_as?: string[]
     description?: string
@@ -18437,6 +18875,19 @@ export interface SecurityUpdateApiKeyResponse {
   updated: boolean
 }
 
+export interface SecurityUpdateCrossClusterApiKeyRequest extends RequestBase {
+  id: Id
+  body?: {
+    access: SecurityAccess
+    expiration?: Duration
+    metadata?: Metadata
+  }
+}
+
+export interface SecurityUpdateCrossClusterApiKeyResponse {
+  updated: boolean
+}
+
 export interface SecurityUpdateUserProfileDataRequest extends RequestBase {
   uid: SecurityUserProfileId
   if_seq_no?: SequenceNumber
@@ -18803,6 +19254,7 @@ export interface SnapshotSnapshotShardFailure {
   node_id?: Id
   reason: string
   shard_id: Id
+  index_uuid: Id
   status: string
 }
 
@@ -18957,6 +19409,20 @@ export interface SnapshotGetRepositoryRequest extends RequestBase {
 
 export type SnapshotGetRepositoryResponse = Record<string, SnapshotRepository>
 
+export interface SnapshotRepositoryVerifyIntegrityRequest extends RequestBase {
+  name: Names
+  meta_thread_pool_concurrency?: integer
+  blob_thread_pool_concurrency?: integer
+  snapshot_verification_concurrency?: integer
+  index_verification_concurrency?: integer
+  index_snapshot_verification_concurrency?: integer
+  max_failed_shard_snapshots?: integer
+  verify_blob_contents?: boolean
+  max_bytes_per_sec?: string
+}
+
+export type SnapshotRepositoryVerifyIntegrityResponse = any
+
 export interface SnapshotRestoreRequest extends RequestBase {
   repository: Name
   snapshot: Name
@@ -18977,7 +19443,8 @@ export interface SnapshotRestoreRequest extends RequestBase {
 }
 
 export interface SnapshotRestoreResponse {
-  snapshot: SnapshotRestoreSnapshotRestore
+  accepted?: boolean
+  snapshot?: SnapshotRestoreSnapshotRestore
 }
 
 export interface SnapshotRestoreSnapshotRestore {
@@ -19065,7 +19532,7 @@ export interface SqlGetAsyncStatusResponse {
 }
 
 export interface SqlQueryRequest extends RequestBase {
-  format?: string
+  format?: SqlQuerySqlFormat
   body?: {
     catalog?: string
     columnar?: boolean
@@ -19095,6 +19562,8 @@ export interface SqlQueryResponse {
   rows: SqlRow[]
 }
 
+export type SqlQuerySqlFormat = 'csv' | 'json' | 'tsv' | 'txt' | 'yaml' | 'cbor' | 'smile'
+
 export interface SqlTranslateRequest extends RequestBase {
   body?: {
     fetch_size?: integer
@@ -19282,7 +19751,7 @@ export interface TasksListRequest extends RequestBase {
   actions?: string | string[]
   detailed?: boolean
   group_by?: TasksGroupBy
-  node_id?: string[]
+  nodes?: NodeIds
   parent_task_id?: Id
   master_timeout?: Duration
   timeout?: Duration
@@ -20363,17 +20832,17 @@ export interface XpackInfoFeatures {
   aggregate_metric: XpackInfoFeature
   analytics: XpackInfoFeature
   ccr: XpackInfoFeature
-  data_frame?: XpackInfoFeature
-  data_science?: XpackInfoFeature
   data_streams: XpackInfoFeature
   data_tiers: XpackInfoFeature
   enrich: XpackInfoFeature
+  enterprise_search: XpackInfoFeature
   eql: XpackInfoFeature
-  flattened?: XpackInfoFeature
+  esql: XpackInfoFeature
   frozen_indices: XpackInfoFeature
   graph: XpackInfoFeature
   ilm: XpackInfoFeature
   logstash: XpackInfoFeature
+  logsdb: XpackInfoFeature
   ml: XpackInfoFeature
   monitoring: XpackInfoFeature
   rollup: XpackInfoFeature
@@ -20384,7 +20853,7 @@ export interface XpackInfoFeatures {
   spatial: XpackInfoFeature
   sql: XpackInfoFeature
   transform: XpackInfoFeature
-  vectors?: XpackInfoFeature
+  universal_profiling: XpackInfoFeature
   voting_only: XpackInfoFeature
   watcher: XpackInfoFeature
   archive: XpackInfoFeature
@@ -20404,7 +20873,7 @@ export interface XpackInfoNativeCodeInformation {
 }
 
 export interface XpackInfoRequest extends RequestBase {
-  categories?: string[]
+  categories?: XpackInfoXPackCategory[]
   accept_enterprise?: boolean
   human?: boolean
 }
@@ -20416,6 +20885,8 @@ export interface XpackInfoResponse {
   tagline: string
 }
 
+export type XpackInfoXPackCategory = 'build' | 'features' | 'license'
+
 export interface XpackUsageAnalytics extends XpackUsageBase {
   stats: XpackUsageAnalyticsStatistics
 }
diff --git a/package-lock.json b/package-lock.json
index 1207f474d5..ce43361727 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -5,13 +5,14 @@
   "packages": {
     "": {
       "dependencies": {
-        "@stoplight/spectral-cli": "^6.11.1"
+        "@stoplight/spectral-cli": "^6.13.0"
       }
     },
     "node_modules/@asyncapi/specs": {
       "version": "4.3.1",
       "resolved": "https://registry.npmjs.org/@asyncapi/specs/-/specs-4.3.1.tgz",
       "integrity": "sha512-EfexhJu/lwF8OdQDm28NKLJHFkx0Gb6O+rcezhZYLPIoNYKXJMh2J1vFGpwmfAcTTh+ffK44Oc2Hs1Q4sLBp+A==",
+      "license": "Apache-2.0",
       "dependencies": {
         "@types/json-schema": "^7.0.11"
       }
@@ -74,6 +75,7 @@
       "version": "22.0.2",
       "resolved": "https://registry.npmjs.org/@rollup/plugin-commonjs/-/plugin-commonjs-22.0.2.tgz",
       "integrity": "sha512-//NdP6iIwPbMTcazYsiBMbJW7gfmpHom33u1beiIoHDEM0Q9clvtQB1T0efvMqHeKsGohiHo97BCPCkBXdscwg==",
+      "license": "MIT",
       "dependencies": {
         "@rollup/pluginutils": "^3.1.0",
         "commondir": "^1.0.1",
@@ -94,6 +96,7 @@
       "version": "3.1.0",
       "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-3.1.0.tgz",
       "integrity": "sha512-GksZ6pr6TpIjHm8h9lSQ8pi8BE9VeubNT0OMJ3B5uZJ8pz73NPiqOtCog/x2/QzM1ENChPKxMDhiQuRHsqc+lg==",
+      "license": "MIT",
       "dependencies": {
         "@types/estree": "0.0.39",
         "estree-walker": "^1.0.1",
@@ -109,7 +112,8 @@
     "node_modules/@rollup/pluginutils/node_modules/estree-walker": {
       "version": "1.0.1",
       "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-1.0.1.tgz",
-      "integrity": "sha512-1fMXF3YP4pZZVozF8j/ZLfvnR8NSIljt56UhbZ5PeeDmmGHpgpdwQt7ITlGvYaQukCvuBRMLEiKiYC+oeIg4cg=="
+      "integrity": "sha512-1fMXF3YP4pZZVozF8j/ZLfvnR8NSIljt56UhbZ5PeeDmmGHpgpdwQt7ITlGvYaQukCvuBRMLEiKiYC+oeIg4cg==",
+      "license": "MIT"
     },
     "node_modules/@stoplight/better-ajv-errors": {
       "version": "1.0.3",
@@ -196,9 +200,9 @@
       }
     },
     "node_modules/@stoplight/spectral-cli": {
-      "version": "6.11.1",
-      "resolved": "https://registry.npmjs.org/@stoplight/spectral-cli/-/spectral-cli-6.11.1.tgz",
-      "integrity": "sha512-1zqsQ0TOuVSnxxZ9mHBfC0IygV6ex7nAY6Mp59mLmw5fW103U9yPVK5ZcX9ZngCmr3PdteAnMDUIIaoDGso6nA==",
+      "version": "6.13.0",
+      "resolved": "https://registry.npmjs.org/@stoplight/spectral-cli/-/spectral-cli-6.13.0.tgz",
+      "integrity": "sha512-qofxmVN4czNNJdfq0OB8Qj1ihpIhyR0IgyQpJFda9FvWWn9vJqDuIsoGKWP7xIHwv3E31q3iviDIX3Ejy9tNcg==",
       "license": "Apache-2.0",
       "dependencies": {
         "@stoplight/json": "~3.21.0",
@@ -207,8 +211,8 @@
         "@stoplight/spectral-formatters": "^1.3.0",
         "@stoplight/spectral-parsers": "^1.0.3",
         "@stoplight/spectral-ref-resolver": "^1.0.4",
-        "@stoplight/spectral-ruleset-bundler": "^1.5.2",
-        "@stoplight/spectral-ruleset-migrator": "^1.9.5",
+        "@stoplight/spectral-ruleset-bundler": "^1.5.4",
+        "@stoplight/spectral-ruleset-migrator": "^1.9.6",
         "@stoplight/spectral-rulesets": ">=1",
         "@stoplight/spectral-runtime": "^1.1.2",
         "@stoplight/types": "^13.6.0",
@@ -272,9 +276,10 @@
       }
     },
     "node_modules/@stoplight/spectral-formats": {
-      "version": "1.6.0",
-      "resolved": "https://registry.npmjs.org/@stoplight/spectral-formats/-/spectral-formats-1.6.0.tgz",
-      "integrity": "sha512-X27qhUfNluiduH0u/QwJqhOd8Wk5YKdxVmKM03Aijlx0AH1H5mYt3l9r7t2L4iyJrsBaFPnMGt7UYJDGxszbNA==",
+      "version": "1.7.0",
+      "resolved": "https://registry.npmjs.org/@stoplight/spectral-formats/-/spectral-formats-1.7.0.tgz",
+      "integrity": "sha512-vJ1vIkA2s96fdJp0d3AJBGuPAW3sj8yMamyzR+dquEFO6ZAoYBo/BVsKKQskYzZi/nwljlRqUmGVmcf2PncIaA==",
+      "license": "Apache-2.0",
       "dependencies": {
         "@stoplight/json": "^3.17.0",
         "@stoplight/spectral-core": "^1.8.0",
@@ -307,16 +312,17 @@
       }
     },
     "node_modules/@stoplight/spectral-functions": {
-      "version": "1.8.0",
-      "resolved": "https://registry.npmjs.org/@stoplight/spectral-functions/-/spectral-functions-1.8.0.tgz",
-      "integrity": "sha512-ZrAkYA/ZGbuQ6EyG1gisF4yQ5nWP/+glcqVoGmS6kH6ekaynz2Yp6FL0oIamWj3rWedFUN7ppwTRUdo+9f/uCw==",
+      "version": "1.9.0",
+      "resolved": "https://registry.npmjs.org/@stoplight/spectral-functions/-/spectral-functions-1.9.0.tgz",
+      "integrity": "sha512-T+xl93ji8bpus4wUsTq8Qr2DSu2X9PO727rbxW61tTCG0s17CbsXOLYI+Ezjg5P6aaQlgXszGX8khtc57xk8Yw==",
+      "license": "Apache-2.0",
       "dependencies": {
         "@stoplight/better-ajv-errors": "1.0.3",
         "@stoplight/json": "^3.17.1",
         "@stoplight/spectral-core": "^1.7.0",
-        "@stoplight/spectral-formats": "^1.0.0",
+        "@stoplight/spectral-formats": "^1.7.0",
         "@stoplight/spectral-runtime": "^1.1.0",
-        "ajv": "^8.6.3",
+        "ajv": "^8.17.1",
         "ajv-draft-04": "~1.0.0",
         "ajv-errors": "~3.0.0",
         "ajv-formats": "~2.1.0",
@@ -369,18 +375,19 @@
       }
     },
     "node_modules/@stoplight/spectral-ruleset-bundler": {
-      "version": "1.5.2",
-      "resolved": "https://registry.npmjs.org/@stoplight/spectral-ruleset-bundler/-/spectral-ruleset-bundler-1.5.2.tgz",
-      "integrity": "sha512-4QUVUFAU+S7IQ9XeCu+0TQMYxKFpKnkOAfa9unRQ1iPL2cviaipEN6witpbAptdHJD3UUjx4OnwlX8WwmXSq9w==",
+      "version": "1.6.0",
+      "resolved": "https://registry.npmjs.org/@stoplight/spectral-ruleset-bundler/-/spectral-ruleset-bundler-1.6.0.tgz",
+      "integrity": "sha512-8CU7e4aEGdfU9ncVDtlnJSawg/6epzAHrQTjuNu1QfKAOoiwyG7oUk2XUTHWcvq6Q67iUctb0vjOokR+MPVg0Q==",
+      "license": "Apache-2.0",
       "dependencies": {
         "@rollup/plugin-commonjs": "~22.0.2",
         "@stoplight/path": "1.3.2",
         "@stoplight/spectral-core": ">=1",
-        "@stoplight/spectral-formats": ">=1",
+        "@stoplight/spectral-formats": "^1.7.0",
         "@stoplight/spectral-functions": ">=1",
         "@stoplight/spectral-parsers": ">=1",
-        "@stoplight/spectral-ref-resolver": ">=1",
-        "@stoplight/spectral-ruleset-migrator": "^1.7.4",
+        "@stoplight/spectral-ref-resolver": "^1.0.4",
+        "@stoplight/spectral-ruleset-migrator": "^1.9.6",
         "@stoplight/spectral-rulesets": ">=1",
         "@stoplight/spectral-runtime": "^1.1.0",
         "@stoplight/types": "^13.6.0",
@@ -395,9 +402,10 @@
       }
     },
     "node_modules/@stoplight/spectral-ruleset-migrator": {
-      "version": "1.9.5",
-      "resolved": "https://registry.npmjs.org/@stoplight/spectral-ruleset-migrator/-/spectral-ruleset-migrator-1.9.5.tgz",
-      "integrity": "sha512-76n/HETr3UinVl/xLNldrH9p0JNoD8Gz4K75J6E4OHp4xD0P+BA2e8+W30HjIvqm1LJdLU2BNma0ioy+q3B9RA==",
+      "version": "1.10.0",
+      "resolved": "https://registry.npmjs.org/@stoplight/spectral-ruleset-migrator/-/spectral-ruleset-migrator-1.10.0.tgz",
+      "integrity": "sha512-nDfkVfYeWWv0UvILC4TWZSnRqQ4rHgeOJO1/lHQ7XHeG5iONanQ639B1aK6ZS6vuUc8gwuyQsrPF67b4sHIyYw==",
+      "license": "Apache-2.0",
       "dependencies": {
         "@stoplight/json": "~3.21.0",
         "@stoplight/ordered-object-literal": "~1.0.4",
@@ -407,7 +415,7 @@
         "@stoplight/types": "^13.6.0",
         "@stoplight/yaml": "~4.2.3",
         "@types/node": "*",
-        "ajv": "^8.6.0",
+        "ajv": "^8.17.1",
         "ast-types": "0.14.2",
         "astring": "^1.7.5",
         "reserved": "0.1.2",
@@ -422,6 +430,7 @@
       "version": "4.2.3",
       "resolved": "https://registry.npmjs.org/@stoplight/yaml/-/yaml-4.2.3.tgz",
       "integrity": "sha512-Mx01wjRAR9C7yLMUyYFTfbUf5DimEpHMkRDQ1PKLe9dfNILbgdxyrncsOXM3vCpsQ1Hfj4bPiGl+u4u6e9Akqw==",
+      "license": "Apache-2.0",
       "dependencies": {
         "@stoplight/ordered-object-literal": "^1.0.1",
         "@stoplight/types": "^13.0.0",
@@ -435,23 +444,25 @@
     "node_modules/@stoplight/spectral-ruleset-migrator/node_modules/@stoplight/yaml-ast-parser": {
       "version": "0.0.48",
       "resolved": "https://registry.npmjs.org/@stoplight/yaml-ast-parser/-/yaml-ast-parser-0.0.48.tgz",
-      "integrity": "sha512-sV+51I7WYnLJnKPn2EMWgS4EUfoP4iWEbrWwbXsj0MZCB/xOK8j6+C9fntIdOM50kpx45ZLC3s6kwKivWuqvyg=="
+      "integrity": "sha512-sV+51I7WYnLJnKPn2EMWgS4EUfoP4iWEbrWwbXsj0MZCB/xOK8j6+C9fntIdOM50kpx45ZLC3s6kwKivWuqvyg==",
+      "license": "Apache-2.0"
     },
     "node_modules/@stoplight/spectral-rulesets": {
-      "version": "1.19.1",
-      "resolved": "https://registry.npmjs.org/@stoplight/spectral-rulesets/-/spectral-rulesets-1.19.1.tgz",
-      "integrity": "sha512-rfGK87Y1JJCEeLC8MVdLkjUkRH+Y6VnSF388D+UWihfU9xuq2eNB9phWpTFkG+AG4HLRyGx963BmO6PyM9dBag==",
+      "version": "1.20.2",
+      "resolved": "https://registry.npmjs.org/@stoplight/spectral-rulesets/-/spectral-rulesets-1.20.2.tgz",
+      "integrity": "sha512-7Y8orZuNyGyeHr9n50rMfysgUJ+/zzIEHMptt66jiy82GUWl+0nr865DkMuXdC5GryfDYhtjoRTUCVsXu80Nkg==",
+      "license": "Apache-2.0",
       "dependencies": {
         "@asyncapi/specs": "^4.1.0",
         "@stoplight/better-ajv-errors": "1.0.3",
         "@stoplight/json": "^3.17.0",
         "@stoplight/spectral-core": "^1.8.1",
-        "@stoplight/spectral-formats": "^1.5.0",
+        "@stoplight/spectral-formats": "^1.7.0",
         "@stoplight/spectral-functions": "^1.5.1",
         "@stoplight/spectral-runtime": "^1.1.1",
         "@stoplight/types": "^13.6.0",
         "@types/json-schema": "^7.0.7",
-        "ajv": "^8.12.0",
+        "ajv": "^8.17.1",
         "ajv-formats": "~2.1.0",
         "json-schema-traverse": "^1.0.0",
         "leven": "3.1.0",
@@ -545,7 +556,8 @@
     "node_modules/@types/estree": {
       "version": "0.0.39",
       "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.39.tgz",
-      "integrity": "sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw=="
+      "integrity": "sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw==",
+      "license": "MIT"
     },
     "node_modules/@types/json-schema": {
       "version": "7.0.15",
@@ -582,14 +594,15 @@
       }
     },
     "node_modules/ajv": {
-      "version": "8.16.0",
-      "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.16.0.tgz",
-      "integrity": "sha512-F0twR8U1ZU67JIEtekUcLkXkoO5mMMmgGD8sK/xUFzJ805jxHQl92hImFAqqXMyMYjSPOyUPAwHYhB72g5sTXw==",
+      "version": "8.17.1",
+      "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.17.1.tgz",
+      "integrity": "sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==",
+      "license": "MIT",
       "dependencies": {
         "fast-deep-equal": "^3.1.3",
+        "fast-uri": "^3.0.1",
         "json-schema-traverse": "^1.0.0",
-        "require-from-string": "^2.0.2",
-        "uri-js": "^4.4.1"
+        "require-from-string": "^2.0.2"
       },
       "funding": {
         "type": "github",
@@ -600,6 +613,7 @@
       "version": "1.0.0",
       "resolved": "https://registry.npmjs.org/ajv-draft-04/-/ajv-draft-04-1.0.0.tgz",
       "integrity": "sha512-mv00Te6nmYbRp5DCwclxtt7yV/joXJPGS7nM+97GdxvuttCOfgI3K4U25zboyeX0O+myI8ERluxQe5wljMmVIw==",
+      "license": "MIT",
       "peerDependencies": {
         "ajv": "^8.5.0"
       },
@@ -703,6 +717,7 @@
       "version": "0.14.2",
       "resolved": "https://registry.npmjs.org/ast-types/-/ast-types-0.14.2.tgz",
       "integrity": "sha512-O0yuUDnZeQDL+ncNGlJ78BiO4jnYI3bvMsD5prT0/nsgijG/LpNBIr63gTjVTNsiGkgQhiyCShTgxt8oXOrklA==",
+      "license": "MIT",
       "dependencies": {
         "tslib": "^2.0.1"
       },
@@ -760,7 +775,8 @@
     "node_modules/builtins": {
       "version": "1.0.3",
       "resolved": "https://registry.npmjs.org/builtins/-/builtins-1.0.3.tgz",
-      "integrity": "sha512-uYBjakWipfaO/bXI7E8rq6kpwHRZK5cNYrUv2OzZSI/FvmdMyXJ2tG9dKcjEC5YHmHpUAwsargWIZNWdxb/bnQ=="
+      "integrity": "sha512-uYBjakWipfaO/bXI7E8rq6kpwHRZK5cNYrUv2OzZSI/FvmdMyXJ2tG9dKcjEC5YHmHpUAwsargWIZNWdxb/bnQ==",
+      "license": "MIT"
     },
     "node_modules/call-bind": {
       "version": "1.0.7",
@@ -824,7 +840,8 @@
     "node_modules/commondir": {
       "version": "1.0.1",
       "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz",
-      "integrity": "sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg=="
+      "integrity": "sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==",
+      "license": "MIT"
     },
     "node_modules/concat-map": {
       "version": "0.0.1",
@@ -1079,7 +1096,8 @@
     "node_modules/estree-walker": {
       "version": "2.0.2",
       "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz",
-      "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w=="
+      "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==",
+      "license": "MIT"
     },
     "node_modules/event-target-shim": {
       "version": "5.0.1",
@@ -1114,6 +1132,12 @@
       "resolved": "https://registry.npmjs.org/fast-memoize/-/fast-memoize-2.5.2.tgz",
       "integrity": "sha512-Ue0LwpDYErFbmNnZSF0UH6eImUwDmogUO1jyE+JbN2gsQz/jICm1Ve7t9QT0rNSsfJt+Hs4/S3GnsDVjL4HVrw=="
     },
+    "node_modules/fast-uri": {
+      "version": "3.0.1",
+      "resolved": "https://registry.npmjs.org/fast-uri/-/fast-uri-3.0.1.tgz",
+      "integrity": "sha512-MWipKbbYiYI0UC7cl8m/i/IWTqfC8YXsqjzybjddLsFjStroQzsHXkc73JutMvBiXmOvapk+axIl79ig5t55Bw==",
+      "license": "MIT"
+    },
     "node_modules/fastq": {
       "version": "1.17.1",
       "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.17.1.tgz",
@@ -1157,7 +1181,22 @@
     "node_modules/fs.realpath": {
       "version": "1.0.0",
       "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz",
-      "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw=="
+      "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==",
+      "license": "ISC"
+    },
+    "node_modules/fsevents": {
+      "version": "2.3.3",
+      "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz",
+      "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==",
+      "hasInstallScript": true,
+      "license": "MIT",
+      "optional": true,
+      "os": [
+        "darwin"
+      ],
+      "engines": {
+        "node": "^8.16.0 || ^10.6.0 || >=11.0.0"
+      }
     },
     "node_modules/function-bind": {
       "version": "1.1.2",
@@ -1248,6 +1287,7 @@
       "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz",
       "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==",
       "deprecated": "Glob versions prior to v9 are no longer supported",
+      "license": "ISC",
       "dependencies": {
         "fs.realpath": "^1.0.0",
         "inflight": "^1.0.4",
@@ -1401,6 +1441,7 @@
       "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz",
       "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==",
       "deprecated": "This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful.",
+      "license": "ISC",
       "dependencies": {
         "once": "^1.3.0",
         "wrappy": "1"
@@ -1409,7 +1450,8 @@
     "node_modules/inherits": {
       "version": "2.0.4",
       "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
-      "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ=="
+      "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==",
+      "license": "ISC"
     },
     "node_modules/internal-slot": {
       "version": "1.0.7",
@@ -1477,9 +1519,10 @@
       }
     },
     "node_modules/is-core-module": {
-      "version": "2.14.0",
-      "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.14.0.tgz",
-      "integrity": "sha512-a5dFJih5ZLYlRtDc0dZWP7RiKr6xIKzmn/oAYCDvdLThadVgyJwlaoQPmRtMSpz+rk0OGAgIu+TcM9HUF0fk1A==",
+      "version": "2.15.1",
+      "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.15.1.tgz",
+      "integrity": "sha512-z0vtXSwucUJtANQWldhbtbt7BnL0vxiFjIdDLAatwhDYty2bad6s+rijD6Ri4YuYJubLzIJLUidCh09e1djEVQ==",
+      "license": "MIT",
       "dependencies": {
         "hasown": "^2.0.2"
       },
@@ -1582,6 +1625,7 @@
       "version": "1.2.1",
       "resolved": "https://registry.npmjs.org/is-reference/-/is-reference-1.2.1.tgz",
       "integrity": "sha512-U82MsXXiFIrjCK4otLT+o2NA2Cd2g5MLoOVXUZjIOhLurrRxpEXzI8O0KZHr3IjLvlAH1kTPYSuqer5T9ZVBKQ==",
+      "license": "MIT",
       "dependencies": {
         "@types/estree": "*"
       }
@@ -1740,6 +1784,7 @@
       "version": "0.25.9",
       "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.9.tgz",
       "integrity": "sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ==",
+      "license": "MIT",
       "dependencies": {
         "sourcemap-codec": "^1.4.8"
       }
@@ -1870,6 +1915,7 @@
       "version": "1.4.0",
       "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
       "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==",
+      "license": "ISC",
       "dependencies": {
         "wrappy": "1"
       }
@@ -1878,6 +1924,7 @@
       "version": "1.0.1",
       "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz",
       "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==",
+      "license": "MIT",
       "engines": {
         "node": ">=0.10.0"
       }
@@ -1885,7 +1932,8 @@
     "node_modules/path-parse": {
       "version": "1.0.7",
       "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz",
-      "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw=="
+      "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==",
+      "license": "MIT"
     },
     "node_modules/picomatch": {
       "version": "2.3.1",
@@ -1919,14 +1967,6 @@
       "resolved": "https://registry.npmjs.org/printable-characters/-/printable-characters-1.0.42.tgz",
       "integrity": "sha512-dKp+C4iXWK4vVYZmYSd0KBH5F/h1HoZRsbJ82AVKRO3PEo8L4lBS/vLwhVtpwwuYcoIsVY+1JYKR268yn480uQ=="
     },
-    "node_modules/punycode": {
-      "version": "2.3.1",
-      "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz",
-      "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==",
-      "engines": {
-        "node": ">=6"
-      }
-    },
     "node_modules/queue-microtask": {
       "version": "1.2.3",
       "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz",
@@ -1991,6 +2031,7 @@
       "version": "1.22.8",
       "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz",
       "integrity": "sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==",
+      "license": "MIT",
       "dependencies": {
         "is-core-module": "^2.13.0",
         "path-parse": "^1.0.7",
@@ -2016,6 +2057,7 @@
       "version": "2.79.1",
       "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.79.1.tgz",
       "integrity": "sha512-uKxbd0IhMZOhjAiD5oAFp7BqvkA4Dv47qpOCtaNvng4HBwdbWtdOh8f5nZNuk2rp51PMGk3bzfWu5oayNEuYnw==",
+      "license": "MIT",
       "bin": {
         "rollup": "dist/bin/rollup"
       },
@@ -2156,7 +2198,8 @@
       "version": "1.4.8",
       "resolved": "https://registry.npmjs.org/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz",
       "integrity": "sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==",
-      "deprecated": "Please use @jridgewell/sourcemap-codec instead"
+      "deprecated": "Please use @jridgewell/sourcemap-codec instead",
+      "license": "MIT"
     },
     "node_modules/stacktracey": {
       "version": "2.1.8",
@@ -2252,6 +2295,7 @@
       "version": "1.0.0",
       "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz",
       "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==",
+      "license": "MIT",
       "engines": {
         "node": ">= 0.4"
       },
@@ -2381,14 +2425,6 @@
         "node": ">= 10.0.0"
       }
     },
-    "node_modules/uri-js": {
-      "version": "4.4.1",
-      "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz",
-      "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==",
-      "dependencies": {
-        "punycode": "^2.1.0"
-      }
-    },
     "node_modules/urijs": {
       "version": "1.19.11",
       "resolved": "https://registry.npmjs.org/urijs/-/urijs-1.19.11.tgz",
@@ -2406,6 +2442,7 @@
       "version": "3.0.0",
       "resolved": "https://registry.npmjs.org/validate-npm-package-name/-/validate-npm-package-name-3.0.0.tgz",
       "integrity": "sha512-M6w37eVCMMouJ9V/sdPGnC5H4uDr73/+xdq0FBLO3TFFX1+7wiUY6Es328NN+y43tmY+doUdN9g9J21vqB7iLw==",
+      "license": "ISC",
       "dependencies": {
         "builtins": "^1.0.3"
       }
@@ -2476,7 +2513,8 @@
     "node_modules/wrappy": {
       "version": "1.0.2",
       "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
-      "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ=="
+      "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==",
+      "license": "ISC"
     },
     "node_modules/y18n": {
       "version": "5.0.8",
diff --git a/package.json b/package.json
index 91d8dd23da..e936d7f831 100644
--- a/package.json
+++ b/package.json
@@ -1,5 +1,5 @@
 {
   "dependencies": {
-    "@stoplight/spectral-cli": "^6.11.1"
+    "@stoplight/spectral-cli": "^6.13.0"
   }
 }
diff --git a/specification/_doc_ids/table.csv b/specification/_doc_ids/table.csv
index 8fcbc6072a..e2f4e2bba2 100644
--- a/specification/_doc_ids/table.csv
+++ b/specification/_doc_ids/table.csv
@@ -1,3 +1,4 @@
+add-nodes,https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/add-elasticsearch-nodes.html
 analysis-analyzers,https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/analysis-analyzers.html
 analysis-charfilters,https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/analysis-charfilters.html
 analysis-normalizers,https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/analysis-normalizers.html
@@ -10,6 +11,8 @@ api-date-math-index-names,https://www.elastic.co/guide/en/elasticsearch/referenc
 append-processor,https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/append-processor.html
 async-search,https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/async-search.html
 attachment,https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/attachment.html
+autoscaling,https://www.elastic.co/guide/en/cloud/current/ec-autoscaling.html
+autoscaling-deciders,https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/autoscaling-deciders.html
 autoscaling-delete-autoscaling-policy,https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/autoscaling-delete-autoscaling-policy.html
 autoscaling-get-autoscaling-capacity,https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/autoscaling-get-autoscaling-capacity.html
 autoscaling-get-autoscaling-policy,https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/autoscaling-get-autoscaling-policy.html
@@ -78,7 +81,9 @@ cluster-stats,https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/c
 cluster-update-settings,https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/cluster-update-settings.html
 cluster,https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/cluster.html
 common-options,https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/common-options.html
+community-id-processor,https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/community-id-processor.html
 connector-sync-job-cancel,https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/cancel-connector-sync-job-api.html
+collapse-search-results,https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/collapse-search-results.html
 connector-sync-job-delete,https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/delete-connector-sync-job-api.html
 connector-sync-job-get,https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/get-connector-sync-job-api.html
 connector-sync-job-post,https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/create-connector-sync-job-api.html
@@ -110,6 +115,7 @@ data-stream-path-param,https://www.elastic.co/guide/en/elasticsearch/reference/{
 data-streams,https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/data-streams.html
 date-index-name-processor,https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/date-index-name-processor.html
 dcg,https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/search-rank-eval.html#_discounted_cumulative_gain_dcg
+defining-roles,https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/defining-roles.html
 delete-async-sql-search-api,https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/delete-async-sql-search-api.html
 delete-enrich-policy-api,https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/delete-enrich-policy-api.html
 delete-license,https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/delete-license.html
@@ -146,6 +152,7 @@ eql-sequences,https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/e
 eql-missing-events,https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/eql-syntax.html#eql-missing-events
 eql-syntax,https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/eql-syntax.html
 eql,https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/eql.html
+esql,https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/esql.html
 esql-query,https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/esql-rest.html
 esql-query-params,https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/esql-rest.html#esql-rest-params
 esql-returning-localized-results,https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/esql-rest.html#esql-locale-param
@@ -157,6 +164,7 @@ fail-processor,https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/
 field-and-document-access-control,https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/field-and-document-access-control.html
 field-usage-stats,https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/field-usage-stats.html
 find-structure,https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/find-structure.html
+fingerprint-processor,https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/fingerprint-processor.html
 foreach-processor,https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/foreach-processor.html
 fuzziness,https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/common-options.html#fuzziness
 gap-policy,https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/search-aggregations-pipeline.html#gap-policy
@@ -181,6 +189,7 @@ get-trained-models,https://www.elastic.co/guide/en/elasticsearch/reference/{bran
 get-transform-stats,https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/get-transform-stats.html
 get-transform,https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/get-transform.html
 get-trial-status,https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/get-trial-status.html
+graph,https://www.elastic.co/guide/en/kibana/{branch}/xpack-graph.html
 graph-explore-api,https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/graph-explore-api.html
 grok-processor,https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/grok-processor.html
 gsub-processor,https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/gsub-processor.html
@@ -188,6 +197,7 @@ ilm-delete-lifecycle,https://www.elastic.co/guide/en/elasticsearch/reference/{br
 ilm-explain-lifecycle,https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/ilm-explain-lifecycle.html
 ilm-get-lifecycle,https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/ilm-get-lifecycle.html
 ilm-get-status,https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/ilm-get-status.html
+ilm-index-lifecycle,https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/ilm-index-lifecycle.html
 ilm-migrate-to-data-tiers,https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/ilm-migrate-to-data-tiers.html
 ilm-move-to-step,https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/ilm-move-to-step.html
 ilm-put-lifecycle,https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/ilm-put-lifecycle.html
@@ -256,11 +266,13 @@ lowercase-processor,https://www.elastic.co/guide/en/elasticsearch/reference/{bra
 mapping-date-format,https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/mapping-date-format.html
 mapping-meta-field,https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/mapping-meta-field.html
 mapping-metadata,https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/mapping-fields.html
+mapping-roles,https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/mapping-roles.html
 mapping-settings-limit,https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/mapping-settings-limit.html
 mapping-source-field,https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/mapping-source-field.html
 mapping,https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/mapping.html
 mapping,https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/mapping.html
 mean-reciprocal,https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/search-rank-eval.html#_mean_reciprocal_rank
+migrate-index-allocation-filters,https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/migrate-index-allocation-filters.html
 migration-api-deprecation,https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/migration-api-deprecation.html
 migration-api-feature-upgrade,https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/migration-api-feature-upgrade.html
 ml-apis,https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/ml-apis.html
@@ -329,6 +341,7 @@ modules-scripting,https://www.elastic.co/guide/en/elasticsearch/reference/{branc
 modules-snapshots,https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/modules-snapshots.html
 monitor-elasticsearch-cluster,https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/monitor-elasticsearch-cluster.html
 multi-fields,https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/multi-fields.html
+network-direction-processor,https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/network-direction-processor.html
 node-roles,https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/modules-node.html#node-roles
 paginate-search-results,https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/paginate-search-results.html
 painless-contexts,https://www.elastic.co/guide/en/elasticsearch/painless/{branch}/painless-contexts.html
@@ -356,6 +369,7 @@ query-dsl-function-score-query,https://www.elastic.co/guide/en/elasticsearch/ref
 query-dsl-fuzzy-query,https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/query-dsl-fuzzy-query.html
 query-dsl-geo-bounding-box-query,https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/query-dsl-geo-bounding-box-query.html
 query-dsl-geo-distance-query,https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/query-dsl-geo-distance-query.html
+query-dsl-geo-polygon-query,https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/query-dsl-geo-polygon-query.html
 query-dsl-geo-shape-query,https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/query-dsl-geo-shape-query.html
 query-dsl-has-child-query,https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/query-dsl-has-child-query.html
 query-dsl-has-parent-query,https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/query-dsl-has-parent-query.html
@@ -371,7 +385,6 @@ query-dsl-match-query,https://www.elastic.co/guide/en/elasticsearch/reference/{b
 query-dsl-minimum-should-match,https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/query-dsl-minimum-should-match.html
 query-dsl-minimum-should-match,https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/query-dsl-minimum-should-match.html
 query-dsl-mlt-query,https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/query-dsl-mlt-query.html
-query-dsl-mlt-query,https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/query-dsl-mlt-query.html
 query-dsl-multi-match-query,https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/query-dsl-multi-match-query.html
 query-dsl-multi-term-rewrite,https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/query-dsl-multi-term-rewrite.html
 query-dsl-nested-query,https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/query-dsl-nested-query.html
@@ -383,11 +396,12 @@ query-dsl-query-string-query,https://www.elastic.co/guide/en/elasticsearch/refer
 query-dsl-range-query,https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/query-dsl-range-query.html
 query-dsl-rank-feature-query,https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/query-dsl-rank-feature-query.html
 query-dsl-regexp-query,https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/query-dsl-regexp-query.html
+query-dsl-rule-query,https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/query-dsl-rule-query.html
 query-dsl-script-query,https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/query-dsl-script-query.html
 query-dsl-script-score-query,https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/query-dsl-script-score-query.html
+query-dsl-semantic-query,https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/query-dsl-semantic-query.html
 query-dsl-shape-query,https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/query-dsl-shape-query.html
 query-dsl-simple-query-string-query,https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/query-dsl-simple-query-string-query.html
-query-dsl-simple-query-string-query,https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/query-dsl-simple-query-string-query.html
 query-dsl-span-containing-query,https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/query-dsl-span-containing-query.html
 query-dsl-span-field-masking-query,https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/query-dsl-span-field-masking-query.html
 query-dsl-span-first-query,https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/query-dsl-span-first-query.html
@@ -401,13 +415,17 @@ query-dsl-term-query,https://www.elastic.co/guide/en/elasticsearch/reference/{br
 query-dsl-terms-query,https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/query-dsl-terms-query.html
 query-dsl-terms-set-query,https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/query-dsl-terms-set-query.html
 query-dsl-text-expansion-query,https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/query-dsl-text-expansion-query.html
+query-dsl-weighted-tokens-query,https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/query-dsl-weighted-tokens-query.html
 query-dsl-wildcard-query,https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/query-dsl-wildcard-query.html
 query-dsl-wrapper-query,https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/query-dsl-wrapper-query.html
 query-dsl,https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/query-dsl.html
+query-rule,https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/search-using-query-rules.html
 realtime,https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/docs-get.html#realtime
 redact-processor,https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/redact-processor.html
 regexp-syntax,https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/regexp-syntax.html
+registered-domain-processor,https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/registered-domain-processor.html
 remove-processor,https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/remove-processor.html
+remote-clusters-api-key,https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/remote-clusters-api-key.html
 rename-processor,https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/rename-processor.html
 reroute-processor,https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/reroute-processor.html
 render-search-template-api,https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/render-search-template-api.html
@@ -425,6 +443,7 @@ run-as-privilege,https://www.elastic.co/guide/en/elasticsearch/reference/{branch
 runtime-search-request,https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/runtime-search-request.html
 script-processor,https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/script-processor.html
 scroll-search-results,https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/paginate-search-results.html#scroll-search-results
+search-aggregations,https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/search-aggregations.html
 search-aggregations-bucket-adjacency-matrix-aggregation,https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/search-aggregations-bucket-adjacency-matrix-aggregation.html
 search-aggregations-bucket-autodatehistogram-aggregation,https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/search-aggregations-bucket-autodatehistogram-aggregation.html
 search-aggregations-bucket-categorize-text-aggregation,https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/search-aggregations-bucket-categorize-text-aggregation.html
@@ -446,6 +465,7 @@ search-aggregations-pipeline-bucket-path,https://www.elastic.co/guide/en/elastic
 search-aggregations-pipeline-bucket-script-aggregation,https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/search-aggregations-pipeline-bucket-script-aggregation.html
 search-aggregations-pipeline-bucket-selector-aggregation,https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/search-aggregations-pipeline-bucket-selector-aggregation.html
 search-aggregations-pipeline-bucket-sort-aggregation,https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/search-aggregations-pipeline-bucket-sort-aggregation.html
+search-aggregations-bucket-composite-aggregation,https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/search-aggregations-bucket-composite-aggregation.html
 search-aggregations-pipeline-cumulative-cardinality-aggregation,https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/search-aggregations-pipeline-cumulative-cardinality-aggregation.html
 search-aggregations-pipeline-cumulative-sum-aggregation,https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/search-aggregations-pipeline-cumulative-sum-aggregation.html
 search-aggregations-pipeline-derivative-aggregation,https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/search-aggregations-pipeline-derivative-aggregation.html
@@ -486,6 +506,7 @@ search-aggregations-bucket-rare-terms-aggregation,https://www.elastic.co/guide/e
 search-aggregations-metrics-rate-aggregation,https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/search-aggregations-metrics-rate-aggregation.html
 search-aggregations-bucket-reverse-nested-aggregation,https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/search-aggregations-bucket-reverse-nested-aggregation.html
 search-aggregations-bucket-sampler-aggregation,https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/search-aggregations-bucket-sampler-aggregation.html
+search-aggregations-random-sampler-aggregation,https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/search-aggregations-random-sampler-aggregation.html
 search-aggregations-metrics-scripted-metric-aggregation,https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/search-aggregations-metrics-scripted-metric-aggregation.html
 search-aggregations-pipeline-serialdiff-aggregation,https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/search-aggregations-pipeline-serialdiff-aggregation.html
 search-aggregations-bucket-significantterms-aggregation,https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/search-aggregations-bucket-significantterms-aggregation.html
@@ -519,6 +540,7 @@ search-validate,https://www.elastic.co/guide/en/elasticsearch/reference/{branch}
 search-vector-tile-api,https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/search-vector-tile-api.html
 searchable-snapshots-api-mount-snapshot,https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/searchable-snapshots-api-mount-snapshot.html
 searchable-snapshots-apis,https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/searchable-snapshots-apis.html
+search-templates,https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/search-template.html
 secure-settings,https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/secure-settings.html
 security-api-authenticate,https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/security-api-authenticate.html
 security-api-change-password,https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/security-api-change-password.html
@@ -564,6 +586,8 @@ security-api-saml-logout,https://www.elastic.co/guide/en/elasticsearch/reference
 security-api-saml-prepare-authentication,https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/security-api-saml-prepare-authentication.html
 security-api-saml-sp-metadata,https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/security-api-saml-sp-metadata.html
 security-api-ssl,https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/security-api-ssl.html
+security-privileges,https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/security-privileges.html
+service-accounts,https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/service-accounts.html
 set-processor,https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/set-processor.html
 shape,https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/shape.html
 simulate-pipeline-api,https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/simulate-pipeline-api.html
@@ -579,6 +603,7 @@ slm-api-stop,https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/sl
 sort-processor,https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/sort-processor.html
 sort-search-results,https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/sort-search-results.html
 sort-tiebreaker,https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/eql.html#eql-search-specify-a-sort-tiebreaker
+query-dsl-sparse-vector-query,https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/query-dsl-sparse-vector-query.html
 split-processor,https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/split-processor.html
 sql-rest-filtering,https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/sql-rest-filtering.html
 sql-rest-format,https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/sql-rest-format.html
@@ -595,6 +620,7 @@ stop-transform,https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/
 supported-flags,https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/query-dsl-simple-query-string-query.html#supported-flags
 tasks,https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/tasks.html
 templating-role-query,https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/field-and-document-access-control.html#templating-role-query
+terminate-processor,https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/terminate-processor.html
 time-value,https://github.com/elastic/elasticsearch/blob/{branch}/libs/core/src/main/java/org/elasticsearch/core/TimeValue.java
 trim-processor,https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/trim-processor.html
 unfreeze-index-api,https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/unfreeze-index-api.html
@@ -606,6 +632,7 @@ uppercase-processor,https://www.elastic.co/guide/en/elasticsearch/reference/{bra
 urldecode-processor,https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/urldecode-processor.html
 usage-api,https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/usage-api.html
 user-agent-processor,https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/user-agent-processor.html
+user-profile,https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/user-profile.html
 voting-config-exclusions,https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/voting-config-exclusions.html
 watcher-api-ack-watch,https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/watcher-api-ack-watch.html
 watcher-api-activate-watch,https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/watcher-api-activate-watch.html
diff --git a/specification/_global/bulk/BulkRequest.ts b/specification/_global/bulk/BulkRequest.ts
index 6814dd46ff..b53adf3779 100644
--- a/specification/_global/bulk/BulkRequest.ts
+++ b/specification/_global/bulk/BulkRequest.ts
@@ -37,6 +37,7 @@ import { OperationContainer, UpdateAction } from './types'
  * @availability stack stability=stable
  * @availability serverless stability=stable visibility=public
  * @doc_id docs-bulk
+ * @doc_tag document
  *
  */
 export interface Request<TDocument, TPartialDocument> extends RequestBase {
@@ -47,6 +48,11 @@ export interface Request<TDocument, TPartialDocument> extends RequestBase {
     index?: IndexName
   }
   query_parameters: {
+    /**
+     * If `true`, the response will include the ingest pipelines that were executed for each index or create.
+     * @server_default false
+     */
+    list_executed_pipelines?: boolean
     /**
      * ID of the pipeline to use to preprocess incoming documents.
      * If the index has a default ingest pipeline specified, then setting the value to `_none` disables the default ingest pipeline for this request.
@@ -91,6 +97,11 @@ export interface Request<TDocument, TPartialDocument> extends RequestBase {
      * @server_default false
      */
     require_alias?: boolean
+    /**
+     * If `true`, the request's actions must target a data stream (existing or to-be-created).
+     * @server_default false
+     */
+    require_data_stream?: boolean
   }
   /**
    * The request body contains a newline-delimited list of `create`, `delete`, `index`, and `update` actions and their associated source data.
diff --git a/specification/_global/clear_scroll/ClearScrollRequest.ts b/specification/_global/clear_scroll/ClearScrollRequest.ts
index 97c7d24735..1388e0a1fb 100644
--- a/specification/_global/clear_scroll/ClearScrollRequest.ts
+++ b/specification/_global/clear_scroll/ClearScrollRequest.ts
@@ -21,11 +21,14 @@ import { RequestBase } from '@_types/Base'
 import { ScrollIds } from '@_types/common'
 
 /**
- * Clears the search context and results for a scrolling search.
+ * Clear a scrolling search.
+ *
+ * Clear the search context and results for a scrolling search.
  * @rest_spec_name clear_scroll
  * @availability stack stability=stable
  * @availability serverless stability=stable visibility=public
  * @doc_id clear-scroll-api
+ * @doc_tag search
  */
 export interface Request extends RequestBase {
   path_parts: {
diff --git a/specification/_global/close_point_in_time/ClosePointInTimeRequest.ts b/specification/_global/close_point_in_time/ClosePointInTimeRequest.ts
index e37a6e0de1..d54897fd66 100644
--- a/specification/_global/close_point_in_time/ClosePointInTimeRequest.ts
+++ b/specification/_global/close_point_in_time/ClosePointInTimeRequest.ts
@@ -21,11 +21,17 @@ import { RequestBase } from '@_types/Base'
 import { Id } from '@_types/common'
 
 /**
- * Closes a point-in-time.
+ * Close a point in time.
+ *
+ * A point in time must be opened explicitly before being used in search requests.
+ * The `keep_alive` parameter tells Elasticsearch how long it should persist.
+ * A point in time is automatically closed when the `keep_alive` period has elapsed.
+ * However, keeping points in time has a cost; close them as soon as they are no longer required for search requests.
  * @rest_spec_name close_point_in_time
  * @availability stack since=7.10.0 stability=stable
  * @availability serverless stability=stable visibility=public
  * @doc_id point-in-time-api
+ * @doc_tag search
  */
 export interface Request extends RequestBase {
   body: {
diff --git a/specification/_global/count/CountRequest.ts b/specification/_global/count/CountRequest.ts
index 1bebd0c980..bd336a274a 100644
--- a/specification/_global/count/CountRequest.ts
+++ b/specification/_global/count/CountRequest.ts
@@ -24,9 +24,12 @@ import { QueryContainer } from '@_types/query_dsl/abstractions'
 import { Operator } from '@_types/query_dsl/Operator'
 
 /**
+ * Count search results.
+ * Get the number of documents matching a query.
  * @rest_spec_name count
  * @availability stack stability=stable
  * @availability serverless stability=stable visibility=public
+ * @doc_tag search
  */
 export interface Request extends RequestBase {
   path_parts: {
diff --git a/specification/_global/create/CreateRequest.ts b/specification/_global/create/CreateRequest.ts
index 5da39bc552..7ccb45e1ef 100644
--- a/specification/_global/create/CreateRequest.ts
+++ b/specification/_global/create/CreateRequest.ts
@@ -36,7 +36,7 @@ import { Duration } from '@_types/Time'
  * @rest_spec_name create
  * @availability stack since=5.0.0 stability=stable
  * @availability serverless stability=stable visibility=public
- *
+ * @doc_tag document
  */
 export interface Request<TDocument> extends RequestBase {
   path_parts: {
diff --git a/specification/_global/delete/DeleteRequest.ts b/specification/_global/delete/DeleteRequest.ts
index d07b026033..bef0fdd14b 100644
--- a/specification/_global/delete/DeleteRequest.ts
+++ b/specification/_global/delete/DeleteRequest.ts
@@ -37,6 +37,7 @@ import { Duration } from '@_types/Time'
  * @rest_spec_name delete
  * @availability stack stability=stable
  * @availability serverless stability=stable visibility=public
+ * @doc_tag document
  */
 export interface Request extends RequestBase {
   path_parts: {
diff --git a/specification/_global/delete_by_query/DeleteByQueryRequest.ts b/specification/_global/delete_by_query/DeleteByQueryRequest.ts
index d1691e6f19..bdf6f7f94a 100644
--- a/specification/_global/delete_by_query/DeleteByQueryRequest.ts
+++ b/specification/_global/delete_by_query/DeleteByQueryRequest.ts
@@ -39,6 +39,7 @@ import { Duration } from '@_types/Time'
  * @rest_spec_name delete_by_query
  * @availability stack since=5.0.0 stability=stable
  * @availability serverless stability=stable visibility=public
+ * @doc_tag document
  */
 export interface Request extends RequestBase {
   path_parts: {
diff --git a/specification/_global/delete_by_query_rethrottle/DeleteByQueryRethrottleRequest.ts b/specification/_global/delete_by_query_rethrottle/DeleteByQueryRethrottleRequest.ts
index defc8559cf..22f1cd171c 100644
--- a/specification/_global/delete_by_query_rethrottle/DeleteByQueryRethrottleRequest.ts
+++ b/specification/_global/delete_by_query_rethrottle/DeleteByQueryRethrottleRequest.ts
@@ -22,9 +22,14 @@ import { TaskId } from '@_types/common'
 import { float } from '@_types/Numeric'
 
 /**
+ * Throttle a delete by query operation.
+ *
+ * Change the number of requests per second for a particular delete by query operation.
+ * Rethrottling that speeds up the query takes effect immediately but rethrotting that slows down the query takes effect after completing the current batch to prevent scroll timeouts.
  * @rest_spec_name delete_by_query_rethrottle
  * @availability stack since=6.5.0 stability=stable
  * @availability serverless stability=stable visibility=private
+ * @doc_tag document
  */
 export interface Request extends RequestBase {
   path_parts: {
diff --git a/specification/_global/delete_script/DeleteScriptRequest.ts b/specification/_global/delete_script/DeleteScriptRequest.ts
index 209450bfab..bebddde62e 100644
--- a/specification/_global/delete_script/DeleteScriptRequest.ts
+++ b/specification/_global/delete_script/DeleteScriptRequest.ts
@@ -27,6 +27,7 @@ import { Duration } from '@_types/Time'
  * @rest_spec_name delete_script
  * @availability stack stability=stable
  * @availability serverless stability=stable visibility=public
+ * @doc_tag script
  */
 export interface Request extends RequestBase {
   path_parts: {
diff --git a/specification/_global/exists/DocumentExistsRequest.ts b/specification/_global/exists/DocumentExistsRequest.ts
index 8908bb9fbd..836d75e961 100644
--- a/specification/_global/exists/DocumentExistsRequest.ts
+++ b/specification/_global/exists/DocumentExistsRequest.ts
@@ -34,6 +34,7 @@ import {
  * @rest_spec_name exists
  * @availability stack stability=stable
  * @availability serverless stability=stable visibility=public
+ * @doc_tag document
  */
 export interface Request extends RequestBase {
   path_parts: {
diff --git a/specification/_global/exists_source/SourceExistsRequest.ts b/specification/_global/exists_source/SourceExistsRequest.ts
index 41755a033b..304dc6a20e 100644
--- a/specification/_global/exists_source/SourceExistsRequest.ts
+++ b/specification/_global/exists_source/SourceExistsRequest.ts
@@ -34,6 +34,7 @@ import {
  * @rest_spec_name exists_source
  * @availability stack since=5.4.0 stability=stable
  * @availability serverless stability=stable visibility=public
+ * @doc_tag document
  */
 export interface Request extends RequestBase {
   path_parts: {
diff --git a/specification/_global/explain/ExplainRequest.ts b/specification/_global/explain/ExplainRequest.ts
index 99874b0621..a17246cc3a 100644
--- a/specification/_global/explain/ExplainRequest.ts
+++ b/specification/_global/explain/ExplainRequest.ts
@@ -29,6 +29,7 @@ import { Operator } from '@_types/query_dsl/Operator'
  * @rest_spec_name explain
  * @availability stack stability=stable
  * @availability serverless stability=stable visibility=public
+ * @doc_tag search
  */
 export interface Request extends RequestBase {
   path_parts: {
diff --git a/specification/_global/field_caps/FieldCapabilitiesRequest.ts b/specification/_global/field_caps/FieldCapabilitiesRequest.ts
index 5952cfb181..44e17bba60 100644
--- a/specification/_global/field_caps/FieldCapabilitiesRequest.ts
+++ b/specification/_global/field_caps/FieldCapabilitiesRequest.ts
@@ -23,13 +23,18 @@ import { RuntimeFields } from '@_types/mapping/RuntimeFields'
 import { QueryContainer } from '@_types/query_dsl/abstractions'
 
 /**
- * The field capabilities API returns the information about the capabilities of fields among multiple indices.
- * The field capabilities API returns runtime fields like any other field. For example, a runtime field with a type
- * of keyword is returned as any other field that belongs to the `keyword` family.
+ * Get the field capabilities.
+ *
+ * Get information about the capabilities of fields among multiple indices.
+ *
+ * For data streams, the API returns field capabilities among the stream’s backing indices.
+ * It returns runtime fields like any other field.
+ * For example, a runtime field with a type of keyword is returned the same as any other field that belongs to the `keyword` family.
  * @rest_spec_name field_caps
  * @availability stack since=5.4.0 stability=stable
  * @availability serverless stability=stable visibility=public
  * @index_privileges view_index_metadata,read,manage
+ * @doc_tag search
  */
 export interface Request extends RequestBase {
   path_parts: {
diff --git a/specification/_global/get/GetRequest.ts b/specification/_global/get/GetRequest.ts
index 51880fca0e..a54dec0b4a 100644
--- a/specification/_global/get/GetRequest.ts
+++ b/specification/_global/get/GetRequest.ts
@@ -34,6 +34,7 @@ import {
  * @rest_spec_name get
  * @availability stack stability=stable
  * @availability serverless stability=stable visibility=public
+ * @doc_tag document
  */
 export interface Request extends RequestBase {
   path_parts: {
diff --git a/specification/_global/get_script/GetScriptRequest.ts b/specification/_global/get_script/GetScriptRequest.ts
index 1384917aff..ee41e806f0 100644
--- a/specification/_global/get_script/GetScriptRequest.ts
+++ b/specification/_global/get_script/GetScriptRequest.ts
@@ -27,6 +27,7 @@ import { Duration } from '@_types/Time'
  * @rest_spec_name get_script
  * @availability stack stability=stable
  * @availability serverless stability=stable visibility=public
+ * @doc_tag script
  */
 export interface Request extends RequestBase {
   path_parts: {
diff --git a/specification/_global/get_script_context/GetScriptContextRequest.ts b/specification/_global/get_script_context/GetScriptContextRequest.ts
index 6ba1361ed4..69df067f0b 100644
--- a/specification/_global/get_script_context/GetScriptContextRequest.ts
+++ b/specification/_global/get_script_context/GetScriptContextRequest.ts
@@ -20,7 +20,11 @@
 import { RequestBase } from '@_types/Base'
 
 /**
+ * Get script contexts.
+ *
+ * Get a list of supported script contexts and their methods.
  * @rest_spec_name get_script_context
  * @availability stack stability=stable
+ * @doc_tag script
  */
 export interface Request extends RequestBase {}
diff --git a/specification/_global/get_script_languages/GetScriptLanguagesRequest.ts b/specification/_global/get_script_languages/GetScriptLanguagesRequest.ts
index 67f459b545..11d3449b4a 100644
--- a/specification/_global/get_script_languages/GetScriptLanguagesRequest.ts
+++ b/specification/_global/get_script_languages/GetScriptLanguagesRequest.ts
@@ -20,7 +20,11 @@
 import { RequestBase } from '@_types/Base'
 
 /**
+ * Get script languages.
+ *
+ * Get a list of available script types, languages, and contexts.
  * @rest_spec_name get_script_languages
  * @availability stack stability=stable
+ * @doc_tag script
  */
 export interface Request extends RequestBase {}
diff --git a/specification/_global/get_source/SourceRequest.ts b/specification/_global/get_source/SourceRequest.ts
index 13f10fc493..9c2b305f6e 100644
--- a/specification/_global/get_source/SourceRequest.ts
+++ b/specification/_global/get_source/SourceRequest.ts
@@ -34,6 +34,7 @@ import {
  * @rest_spec_name get_source
  * @availability stack stability=stable
  * @availability serverless stability=stable visibility=public
+ * @doc_tag document
  */
 export interface Request extends RequestBase {
   path_parts: {
diff --git a/specification/_global/health_report/Request.ts b/specification/_global/health_report/Request.ts
index dad3fdb5ae..068267ecab 100644
--- a/specification/_global/health_report/Request.ts
+++ b/specification/_global/health_report/Request.ts
@@ -22,6 +22,24 @@ import { integer } from '@_types/Numeric'
 import { Duration } from '@_types/Time'
 
 /**
+ * Get the cluster health.
+ * Get a report with the health status of an Elasticsearch cluster.
+ * The report contains a list of indicators that compose Elasticsearch functionality.
+ *
+ * Each indicator has a health status of: green, unknown, yellow or red.
+ * The indicator will provide an explanation and metadata describing the reason for its current health status.
+ *
+ * The cluster’s status is controlled by the worst indicator status.
+ *
+ * In the event that an indicator’s status is non-green, a list of impacts may be present in the indicator result which detail the functionalities that are negatively affected by the health issue.
+ * Each impact carries with it a severity level, an area of the system that is affected, and a simple description of the impact on the system.
+ *
+ * Some health indicators can determine the root cause of a health problem and prescribe a set of steps that can be performed in order to improve the health of the system.
+ * The root cause and remediation steps are encapsulated in a diagnosis.
+ * A diagnosis contains a cause detailing a root cause analysis, an action containing a brief description of the steps to take to fix the problem, the list of affected resources (if applicable), and a detailed step-by-step troubleshooting guide to fix the diagnosed problem.
+ *
+ * NOTE: The health indicators perform root cause analysis of non-green health statuses. This can be computationally expensive when called frequently.
+ * When setting up automated polling of the API for health status, set verbose to false to disable the more expensive analysis logic.
  * @rest_spec_name health_report
  * @availability stack since=8.7.0 stability=stable
  * @availability serverless stability=stable visibility=private
diff --git a/specification/_global/index/IndexRequest.ts b/specification/_global/index/IndexRequest.ts
index afdb4f3d83..1edb606b28 100644
--- a/specification/_global/index/IndexRequest.ts
+++ b/specification/_global/index/IndexRequest.ts
@@ -39,6 +39,7 @@ import { Duration } from '@_types/Time'
  * @rest_spec_name index
  * @availability stack stability=stable
  * @availability serverless stability=stable visibility=public
+ * @doc_tag document
  */
 export interface Request<TDocument> extends RequestBase {
   path_parts: {
diff --git a/specification/_global/knn_search/KnnSearchRequest.ts b/specification/_global/knn_search/KnnSearchRequest.ts
index 1fb3ee01c6..c708a05440 100644
--- a/specification/_global/knn_search/KnnSearchRequest.ts
+++ b/specification/_global/knn_search/KnnSearchRequest.ts
@@ -24,9 +24,23 @@ import { FieldAndFormat, QueryContainer } from '@_types/query_dsl/abstractions'
 import { Query } from './_types/Knn'
 
 /**
+ * Run a knn search.
+ *
+ * NOTE: The kNN search API has been replaced by the `knn` option in the search API.
+ *
+ * Perform a k-nearest neighbor (kNN) search on a dense_vector field and return the matching documents.
+ * Given a query vector, the API finds the k closest vectors and returns those documents as search hits.
+ *
+ * Elasticsearch uses the HNSW algorithm to support efficient kNN search.
+ * Like most kNN algorithms, HNSW is an approximate method that sacrifices result accuracy for improved search speed.
+ * This means the results returned are not always the true k closest neighbors.
+ *
+ * The kNN search API supports restricting the search using a filter.
+ * The search will return the top k documents that also match the filter query.
  * @rest_spec_name knn_search
  * @availability stack since=8.0.0 stability=experimental
- * @deprecated 8.4.0
+ * @deprecated 8.4.0 The kNN search API has been replaced by the `knn` option in the search API.
+ * @doc_tag search
  */
 export interface Request extends RequestBase {
   path_parts: {
@@ -73,7 +87,10 @@ export interface Request extends RequestBase {
      * @availability serverless
      */
     filter?: QueryContainer | QueryContainer[]
-    /** kNN query to execute */
+    /**
+     * kNN query to execute
+     * @ext_doc_id query-dsl-knn-query
+     */
     knn: Query
   }
 }
diff --git a/specification/_global/mget/MultiGetRequest.ts b/specification/_global/mget/MultiGetRequest.ts
index 4b2271b3b4..a76d011a63 100644
--- a/specification/_global/mget/MultiGetRequest.ts
+++ b/specification/_global/mget/MultiGetRequest.ts
@@ -23,10 +23,16 @@ import { Fields, Ids, IndexName, Routing } from '@_types/common'
 import { Operation } from './types'
 
 /**
+ * Get multiple documents.
+ *
+ * Get multiple JSON documents by ID from one or more indices.
+ * If you specify an index in the request URI, you only need to specify the document IDs in the request body.
+ * To ensure fast responses, this multi get (mget) API responds with partial results if one or more shards fail.
  * @rest_spec_name mget
  * @availability stack since=1.3.0 stability=stable
  * @availability serverless stability=stable visibility=public
  * @index_privileges read
+ * @doc_tag document
  */
 export interface Request extends RequestBase {
   path_parts: {
diff --git a/specification/_global/msearch/MultiSearchRequest.ts b/specification/_global/msearch/MultiSearchRequest.ts
index 5c5aa55af4..8e396c271b 100644
--- a/specification/_global/msearch/MultiSearchRequest.ts
+++ b/specification/_global/msearch/MultiSearchRequest.ts
@@ -23,10 +23,28 @@ import { long } from '@_types/Numeric'
 import { RequestItem } from './types'
 
 /**
+ * Run multiple searches.
+ *
+ * The format of the request is similar to the bulk API format and makes use of the newline delimited JSON (NDJSON) format.
+ * The structure is as follows:
+ *
+ * ```
+ * header\n
+ * body\n
+ * header\n
+ * body\n
+ * ```
+ *
+ * This structure is specifically optimized to reduce parsing if a specific search ends up redirected to another node.
+ *
+ * IMPORTANT: The final line of data must end with a newline character `\n`.
+ * Each newline character may be preceded by a carriage return `\r`.
+ * When sending requests to this endpoint the `Content-Type` header should be set to `application/x-ndjson`.
  * @rest_spec_name msearch
  * @availability stack since=1.3.0 stability=stable
  * @availability serverless stability=stable visibility=public
  * @index_privileges read
+ * @doc_tag search
  */
 export interface Request extends RequestBase {
   path_parts: {
diff --git a/specification/_global/msearch/types.ts b/specification/_global/msearch/types.ts
index bfc20059ac..ec6efbf38b 100644
--- a/specification/_global/msearch/types.ts
+++ b/specification/_global/msearch/types.ts
@@ -68,7 +68,10 @@ export class MultisearchHeader {
 
 // We should keep this in sync with the normal search request body.
 export class MultisearchBody {
-  /** @aliases aggs */ // ES uses "aggregations" in serialization
+  /**
+   * @aliases aggs
+   * @ext_doc_id search-aggregations
+   */ // ES uses "aggregations" in serialization
   aggregations?: Dictionary<string, AggregationContainer>
   collapse?: FieldCollapse
   /**
diff --git a/specification/_global/msearch_template/MultiSearchTemplateRequest.ts b/specification/_global/msearch_template/MultiSearchTemplateRequest.ts
index e2ce4035e5..9c6552faf8 100644
--- a/specification/_global/msearch_template/MultiSearchTemplateRequest.ts
+++ b/specification/_global/msearch_template/MultiSearchTemplateRequest.ts
@@ -23,11 +23,13 @@ import { long } from '@_types/Numeric'
 import { RequestItem } from './types'
 
 /**
- * Runs multiple templated searches with a single request.
+ * Run multiple templated searches.
  * @rest_spec_name msearch_template
  * @availability stack since=5.0.0 stability=stable
  * @availability serverless stability=stable visibility=public
  * @index_privileges read
+ * @doc_tag search
+ * @ext_doc_id search-templates
  */
 export interface Request extends RequestBase {
   path_parts: {
diff --git a/specification/_global/mtermvectors/MultiTermVectorsRequest.ts b/specification/_global/mtermvectors/MultiTermVectorsRequest.ts
index e5a4e8d573..83a5ba4212 100644
--- a/specification/_global/mtermvectors/MultiTermVectorsRequest.ts
+++ b/specification/_global/mtermvectors/MultiTermVectorsRequest.ts
@@ -29,9 +29,16 @@ import {
 import { Operation } from './types'
 
 /**
+ * Get multiple term vectors.
+ *
+ * You can specify existing documents by index and ID or provide artificial documents in the body of the request.
+ * You can specify the index in the request body or request URI.
+ * The response contains a `docs` array with all the fetched termvectors.
+ * Each element has the structure provided by the termvectors API.
  * @rest_spec_name mtermvectors
  * @availability stack stability=stable
  * @availability serverless stability=stable visibility=public
+ * @doc_tag document
  */
 export interface Request extends RequestBase {
   path_parts: {
diff --git a/specification/_global/open_point_in_time/OpenPointInTimeRequest.ts b/specification/_global/open_point_in_time/OpenPointInTimeRequest.ts
index fed2c52fba..cc4b86d567 100644
--- a/specification/_global/open_point_in_time/OpenPointInTimeRequest.ts
+++ b/specification/_global/open_point_in_time/OpenPointInTimeRequest.ts
@@ -23,17 +23,23 @@ import { QueryContainer } from '@_types/query_dsl/abstractions'
 import { Duration } from '@_types/Time'
 
 /**
- * A search request by default executes against the most recent visible data of the target indices,
+ * Open a point in time.
+ *
+ * A search request by default runs against the most recent visible data of the target indices,
  * which is called point in time. Elasticsearch pit (point in time) is a lightweight view into the
  * state of the data as it existed when initiated. In some cases, it’s preferred to perform multiple
  * search requests using the same point in time. For example, if refreshes happen between
  * `search_after` requests, then the results of those requests might not be consistent as changes happening
  * between searches are only visible to the more recent point in time.
+ *
+ * A point in time must be opened explicitly before being used in search requests.
+ * The `keep_alive` parameter tells Elasticsearch how long it should persist.
  * @rest_spec_name open_point_in_time
  * @availability stack since=7.10.0 stability=stable
  * @availability serverless stability=stable visibility=public
  * @doc_id point-in-time-api
  * @index_privileges read
+ * @doc_tag search
  */
 export interface Request extends RequestBase {
   path_parts: {
@@ -65,6 +71,12 @@ export interface Request extends RequestBase {
      * @server_default open
      */
     expand_wildcards?: ExpandWildcards
+    /**
+     * If `false`, creating a point in time request when a shard is missing or unavailable will throw an exception.
+     * If `true`, the point in time will contain all the shards that are available at the time of the request.
+     * @server_default false
+     */
+    allow_partial_search_results?: boolean
   }
   body: {
     /**
diff --git a/specification/_global/ping/PingRequest.ts b/specification/_global/ping/PingRequest.ts
index e8033036f5..b4e05ae716 100644
--- a/specification/_global/ping/PingRequest.ts
+++ b/specification/_global/ping/PingRequest.ts
@@ -21,9 +21,10 @@ import { RequestBase } from '@_types/Base'
 
 /**
  * Ping the cluster.
- * Returns whether the cluster is running.
+ * Get information about whether the cluster is running.
  * @rest_spec_name ping
  * @availability stack stability=stable
  * @availability serverless stability=stable visibility=public
+ * @doc_tag cluster
  */
 export interface Request extends RequestBase {}
diff --git a/specification/_global/put_script/PutScriptRequest.ts b/specification/_global/put_script/PutScriptRequest.ts
index 0119f68d18..f57c75862d 100644
--- a/specification/_global/put_script/PutScriptRequest.ts
+++ b/specification/_global/put_script/PutScriptRequest.ts
@@ -28,6 +28,7 @@ import { Duration } from '@_types/Time'
  * @rest_spec_name put_script
  * @availability stack stability=stable
  * @availability serverless stability=stable visibility=public
+ * @doc_tag script
  */
 export interface Request extends RequestBase {
   path_parts: {
diff --git a/specification/_global/rank_eval/RankEvalRequest.ts b/specification/_global/rank_eval/RankEvalRequest.ts
index c54fd59be2..f93bd9da7a 100644
--- a/specification/_global/rank_eval/RankEvalRequest.ts
+++ b/specification/_global/rank_eval/RankEvalRequest.ts
@@ -22,11 +22,14 @@ import { ExpandWildcards, Indices } from '@_types/common'
 import { RankEvalMetric, RankEvalRequestItem } from './types'
 
 /**
- * Enables you to evaluate the quality of ranked search results over a set of typical search queries.
+ * Evaluate ranked search results.
+ *
+ * Evaluate the quality of ranked search results over a set of typical search queries.
  * @rest_spec_name rank_eval
  * @availability stack since=6.2.0 stability=stable
  * @availability serverless stability=stable visibility=public
  * @index_privileges read
+ * @doc_tag search
  */
 export interface Request extends RequestBase {
   path_parts: {
diff --git a/specification/_global/reindex/ReindexRequest.ts b/specification/_global/reindex/ReindexRequest.ts
index 1e90c2845c..090942ad02 100644
--- a/specification/_global/reindex/ReindexRequest.ts
+++ b/specification/_global/reindex/ReindexRequest.ts
@@ -30,6 +30,7 @@ import { Destination, Source } from './types'
  * @rest_spec_name reindex
  * @availability stack since=2.3.0 stability=stable
  * @availability serverless stability=stable visibility=public
+ * @doc_tag document
  */
 export interface Request extends RequestBase {
   query_parameters: {
diff --git a/specification/_global/reindex_rethrottle/ReindexRethrottleRequest.ts b/specification/_global/reindex_rethrottle/ReindexRethrottleRequest.ts
index 17be461f7f..8a2841b40e 100644
--- a/specification/_global/reindex_rethrottle/ReindexRethrottleRequest.ts
+++ b/specification/_global/reindex_rethrottle/ReindexRethrottleRequest.ts
@@ -22,10 +22,13 @@ import { Id } from '@_types/common'
 import { float } from '@_types/Numeric'
 
 /**
- * Copies documents from a source to a destination.
+ * Throttle a reindex operation.
+ *
+ * Change the number of requests per second for a particular reindex operation.
  * @rest_spec_name reindex_rethrottle
  * @availability stack since=2.4.0 stability=stable
  * @availability serverless stability=stable visibility=private
+ * @doc_tag document
  */
 export interface Request extends RequestBase {
   path_parts: {
diff --git a/specification/_global/render_search_template/RenderSearchTemplateRequest.ts b/specification/_global/render_search_template/RenderSearchTemplateRequest.ts
index 4d4f923868..42ebefb286 100644
--- a/specification/_global/render_search_template/RenderSearchTemplateRequest.ts
+++ b/specification/_global/render_search_template/RenderSearchTemplateRequest.ts
@@ -23,10 +23,13 @@ import { RequestBase } from '@_types/Base'
 import { Id } from '@_types/common'
 
 /**
- * Renders a search template as a search request body.
+ * Render a search template.
+ *
+ * Render a search template as a search request body.
  * @rest_spec_name render_search_template
  * @availability stack stability=stable
  * @availability serverless stability=stable visibility=public
+ * @doc_tag search
  */
 export interface Request extends RequestBase {
   path_parts: {
diff --git a/specification/_global/scripts_painless_execute/ExecutePainlessScriptRequest.ts b/specification/_global/scripts_painless_execute/ExecutePainlessScriptRequest.ts
index 136542af78..070690f65a 100644
--- a/specification/_global/scripts_painless_execute/ExecutePainlessScriptRequest.ts
+++ b/specification/_global/scripts_painless_execute/ExecutePainlessScriptRequest.ts
@@ -27,6 +27,7 @@ import { PainlessContextSetup } from './types'
  * @rest_spec_name scripts_painless_execute
  * @availability stack since=6.3.0 stability=experimental
  * @availability serverless stability=experimental visibility=public
+ * @doc_tag script
  */
 export interface Request extends RequestBase {
   body: {
diff --git a/specification/_global/scroll/ScrollRequest.ts b/specification/_global/scroll/ScrollRequest.ts
index 85c85bf6b6..6643e5884f 100644
--- a/specification/_global/scroll/ScrollRequest.ts
+++ b/specification/_global/scroll/ScrollRequest.ts
@@ -22,9 +22,25 @@ import { ScrollId } from '@_types/common'
 import { Duration } from '@_types/Time'
 
 /**
+ * Run a scrolling search.
+ *
+ * IMPORTANT: The scroll API is no longer recommend for deep pagination. If you need to preserve the index state while paging through more than 10,000 hits, use the `search_after` parameter with a point in time (PIT).
+ *
+ * The scroll API gets large sets of results from a single scrolling search request.
+ * To get the necessary scroll ID, submit a search API request that includes an argument for the `scroll` query parameter.
+ * The `scroll` parameter indicates how long Elasticsearch should retain the search context for the request.
+ * The search response returns a scroll ID in the `_scroll_id` response body parameter.
+ * You can then use the scroll ID with the scroll API to retrieve the next batch of results for the request.
+ * If the Elasticsearch security features are enabled, the access to the results of a specific scroll ID is restricted to the user or API key that submitted the search.
+ *
+ * You can also use the scroll API to specify a new scroll parameter that extends or shortens the retention period for the search context.
+ *
+ * IMPORTANT: Results from a scrolling search reflect the state of the index at the time of the initial search request. Subsequent indexing or document changes only affect later search and scroll requests.
  * @rest_spec_name scroll
  * @availability stack stability=stable
  * @availability serverless stability=stable visibility=public
+ * @doc_tag search
+ * @ext_doc_id scroll-search-results
  */
 export interface Request extends RequestBase {
   path_parts: {
diff --git a/specification/_global/search/SearchRequest.ts b/specification/_global/search/SearchRequest.ts
index 9fec2b244d..fe97005394 100644
--- a/specification/_global/search/SearchRequest.ts
+++ b/specification/_global/search/SearchRequest.ts
@@ -52,7 +52,9 @@ import { SourceConfig, SourceConfigParam } from './_types/SourceFilter'
 import { Suggester } from './_types/suggester'
 
 /**
- * Returns search hits that match the query defined in the request.
+ * Run a search.
+ *
+ * Get search hits that match the query defined in the request.
  * You can provide search queries using the `q` query string parameter or the request body.
  * If both are specified, only the query parameter is used.
  * @rest_spec_name search
@@ -428,8 +430,8 @@ export interface Request extends RequestBase {
     rescore?: Rescore | Rescore[]
     /**
      * A retriever is a specification to describe top documents returned from a search. A retriever replaces other elements of the search API that also return top documents such as query and knn.
-     * @availability stack since=8.14.0
-     * @availability serverless
+     * @availability stack since=8.14.0 stability=stable
+     * @availability serverless stability=stable
      */
     retriever?: RetrieverContainer
     /**
diff --git a/specification/_global/search/_types/FieldCollapse.ts b/specification/_global/search/_types/FieldCollapse.ts
index bc867ad4d8..2afdd7baee 100644
--- a/specification/_global/search/_types/FieldCollapse.ts
+++ b/specification/_global/search/_types/FieldCollapse.ts
@@ -21,6 +21,9 @@ import { Field } from '@_types/common'
 import { integer } from '@_types/Numeric'
 import { InnerHits } from './hits'
 
+/**
+ * @ext_doc_id collapse-search-results
+ */
 export class FieldCollapse {
   /**
    * The field to collapse the result set on
diff --git a/specification/_global/search/_types/hits.ts b/specification/_global/search/_types/hits.ts
index 20bae0341e..2ab7993d8f 100644
--- a/specification/_global/search/_types/hits.ts
+++ b/specification/_global/search/_types/hits.ts
@@ -23,6 +23,7 @@ import { UserDefinedValue } from '@spec_utils/UserDefinedValue'
 import {
   Field,
   Fields,
+  FieldValue,
   Id,
   IndexName,
   Name,
@@ -49,10 +50,10 @@ export class Hit<TDocument> {
   fields?: Dictionary<string, UserDefinedValue>
   highlight?: Dictionary<string, string[]>
   inner_hits?: Dictionary<string, InnerHitsResult>
-  matched_queries?: string[] | Dictionary<string, double[]>
+  matched_queries?: string[] | Dictionary<string, double>
   _nested?: NestedIdentity
   _ignored?: string[]
-  ignored_field_values?: Dictionary<string, string[]>
+  ignored_field_values?: Dictionary<string, FieldValue[]>
   _shard?: string
   _node?: string
   _routing?: string
diff --git a/specification/_global/search/_types/profile.ts b/specification/_global/search/_types/profile.ts
index 9cd9483d00..e987fb5326 100644
--- a/specification/_global/search/_types/profile.ts
+++ b/specification/_global/search/_types/profile.ts
@@ -17,8 +17,11 @@
  * under the License.
  */
 
+import { Dictionary } from '@spec_utils/Dictionary'
+import { UserDefinedValue } from '@spec_utils/UserDefinedValue'
+import { IndexName, NodeId } from '@_types/common'
 import { integer, long } from '@_types/Numeric'
-import { DurationValue, UnitNanos } from '@_types/Time'
+import { Duration, DurationValue, UnitNanos } from '@_types/Time'
 
 export class AggregationBreakdown {
   build_aggregation: long
@@ -65,6 +68,11 @@ export class AggregationProfileDebug {
   segments_counted?: integer
   segments_collected?: integer
   map_reducer?: string
+  // global ords cardinality aggregator
+  brute_force_used?: integer
+  dynamic_pruning_attempted?: integer
+  dynamic_pruning_used?: integer
+  skipped_due_to_no_data?: integer
 }
 
 export class AggregationProfileDelegateDebugFilter {
@@ -111,6 +119,8 @@ export class QueryBreakdown {
   score_count: long
   compute_max_score: long
   compute_max_score_count: long
+  count_weight: long
+  count_weight_count: long
   set_min_competitive_score: long
   set_min_competitive_score_count: long
 }
@@ -131,9 +141,90 @@ export class SearchProfile {
 
 export class ShardProfile {
   aggregations: AggregationProfile[]
+  cluster: string
+  dfs?: DfsProfile
+  fetch?: FetchProfile
   id: string
+  index: IndexName
+  node_id: NodeId
   searches: SearchProfile[]
-  fetch?: FetchProfile
+  shard_id: long
+}
+
+export class DfsProfile {
+  statistics?: DfsStatisticsProfile
+  knn?: DfsKnnProfile[]
+}
+
+export class DfsStatisticsProfile {
+  type: string
+  description: string
+  time?: Duration
+  time_in_nanos: DurationValue<UnitNanos>
+  breakdown: DfsStatisticsBreakdown
+  debug?: Dictionary<string, UserDefinedValue>
+  children?: DfsStatisticsProfile[]
+}
+
+// This is a Map<String, long> in ES. Below are the known fields.
+export class DfsStatisticsBreakdown {
+  collection_statistics: long
+  collection_statistics_count: long
+  create_weight: long
+  create_weight_count: long
+  rewrite: long
+  rewrite_count: long
+  term_statistics: long
+  term_statistics_count: long
+}
+
+export class DfsKnnProfile {
+  vector_operations_count?: long
+  query: KnnQueryProfileResult[]
+  rewrite_time: long
+  collector: KnnCollectorResult[]
+}
+
+export class KnnQueryProfileResult {
+  type: string
+  description: string
+  time?: Duration
+  time_in_nanos: DurationValue<UnitNanos>
+  breakdown: KnnQueryProfileBreakdown
+  debug?: Dictionary<string, UserDefinedValue>
+  children?: KnnQueryProfileResult[]
+}
+
+// This is a Map<String, long> in ES. Below are the known fields.
+export class KnnQueryProfileBreakdown {
+  advance: long
+  advance_count: long
+  build_scorer: long
+  build_scorer_count: long
+  compute_max_score: long
+  compute_max_score_count: long
+  count_weight: long
+  count_weight_count: long
+  create_weight: long
+  create_weight_count: long
+  match: long
+  match_count: long
+  next_doc: long
+  next_doc_count: long
+  score: long
+  score_count: long
+  set_min_competitive_score: long
+  set_min_competitive_score_count: long
+  shallow_advance: long
+  shallow_advance_count: long
+}
+
+export class KnnCollectorResult {
+  name: string
+  reason: string
+  time?: Duration
+  time_in_nanos: DurationValue<UnitNanos>
+  children?: KnnCollectorResult[]
 }
 
 export class FetchProfile {
diff --git a/specification/_global/search_mvt/SearchMvtRequest.ts b/specification/_global/search_mvt/SearchMvtRequest.ts
index 432e428e9c..d8db29efc2 100644
--- a/specification/_global/search_mvt/SearchMvtRequest.ts
+++ b/specification/_global/search_mvt/SearchMvtRequest.ts
@@ -32,10 +32,13 @@ import { ZoomLevel } from './_types/ZoomLevel'
 
 /**
  * Search a vector tile.
- * Searches a vector tile for geospatial values.
+ *
+ * Search a vector tile for geospatial values.
  * @rest_spec_name search_mvt
  * @availability stack since=7.15.0 stability=stable
  * @availability serverless stability=stable visibility=public
+ * @doc_tag search
+ *
  */
 export interface Request extends RequestBase {
   path_parts: {
diff --git a/specification/_global/search_shards/SearchShardsRequest.ts b/specification/_global/search_shards/SearchShardsRequest.ts
index c41937f824..55cfecbf64 100644
--- a/specification/_global/search_shards/SearchShardsRequest.ts
+++ b/specification/_global/search_shards/SearchShardsRequest.ts
@@ -21,8 +21,14 @@ import { RequestBase } from '@_types/Base'
 import { ExpandWildcards, Indices, Routing } from '@_types/common'
 
 /**
+ * Get the search shards.
+ *
+ * Get the indices and shards that a search request would be run against.
+ * This information can be useful for working out issues or planning optimizations with routing and shard preferences.
+ * When filtered aliases are used, the filter is returned as part of the indices section.
  * @rest_spec_name search_shards
  * @availability stack stability=stable
+ * @doc_tag search
  */
 export interface Request extends RequestBase {
   path_parts: {
diff --git a/specification/_global/search_template/SearchTemplateRequest.ts b/specification/_global/search_template/SearchTemplateRequest.ts
index 4d040db71f..8ef681d9c6 100644
--- a/specification/_global/search_template/SearchTemplateRequest.ts
+++ b/specification/_global/search_template/SearchTemplateRequest.ts
@@ -30,10 +30,12 @@ import {
 import { Duration } from '@_types/Time'
 
 /**
- * Runs a search with a search template.
+ * Run a search with a search template.
  * @rest_spec_name search_template
  * @availability stack since=2.0.0 stability=stable
  * @availability serverless stability=stable visibility=public
+ * @doc_tag search
+ * @ext_doc_id search-template
  */
 export interface Request extends RequestBase {
   path_parts: {
diff --git a/specification/_global/terms_enum/TermsEnumRequest.ts b/specification/_global/terms_enum/TermsEnumRequest.ts
index 68ffaa3fbf..c2aae9ee99 100644
--- a/specification/_global/terms_enum/TermsEnumRequest.ts
+++ b/specification/_global/terms_enum/TermsEnumRequest.ts
@@ -24,9 +24,19 @@ import { QueryContainer } from '@_types/query_dsl/abstractions'
 import { Duration } from '@_types/Time'
 
 /**
+ * Get terms in an index.
+ *
+ * Discover terms that match a partial string in an index.
+ * This "terms enum" API is designed for low-latency look-ups used in auto-complete scenarios.
+ *
+ * If the `complete` property in the response is false, the returned terms set may be incomplete and should be treated as approximate.
+ * This can occur due to a few reasons, such as a request timeout or a node error.
+ *
+ * NOTE: The terms enum API may return terms from deleted documents. Deleted documents are initially only marked as deleted. It is not until their segments are merged that documents are actually deleted. Until that happens, the terms enum API will return terms from these documents.
  * @rest_spec_name terms_enum
  * @availability stack since=7.14.0 stability=stable
  * @availability serverless stability=stable visibility=public
+ * @doc_tag search
  */
 export interface Request extends RequestBase {
   path_parts: {
diff --git a/specification/_global/termvectors/TermVectorsRequest.ts b/specification/_global/termvectors/TermVectorsRequest.ts
index f0285d63c9..50293fd046 100644
--- a/specification/_global/termvectors/TermVectorsRequest.ts
+++ b/specification/_global/termvectors/TermVectorsRequest.ts
@@ -32,10 +32,12 @@ import { Filter } from './types'
 
 /**
  * Get term vector information.
- * Returns information and statistics about terms in the fields of a particular document.
+ *
+ * Get information and statistics about terms in the fields of a particular document.
  * @rest_spec_name termvectors
  * @availability stack stability=stable
  * @availability serverless stability=stable visibility=public
+ * @doc_tag document
  */
 export interface Request<TDocument> extends RequestBase {
   path_parts: {
diff --git a/specification/_global/update/UpdateRequest.ts b/specification/_global/update/UpdateRequest.ts
index b969edb1c0..1f9ce904c8 100644
--- a/specification/_global/update/UpdateRequest.ts
+++ b/specification/_global/update/UpdateRequest.ts
@@ -41,6 +41,7 @@ import { Duration } from '@_types/Time'
  * @rest_spec_name update
  * @availability stack stability=stable
  * @availability serverless stability=stable visibility=public
+ * @doc_tag document
  */
 export interface Request<TDocument, TPartialDocument> extends RequestBase {
   path_parts: {
diff --git a/specification/_global/update_by_query/UpdateByQueryRequest.ts b/specification/_global/update_by_query/UpdateByQueryRequest.ts
index fca4277da3..e66b0b2206 100644
--- a/specification/_global/update_by_query/UpdateByQueryRequest.ts
+++ b/specification/_global/update_by_query/UpdateByQueryRequest.ts
@@ -41,6 +41,7 @@ import { Duration } from '@_types/Time'
  * @rest_spec_name update_by_query
  * @availability stack since=2.4.0 stability=stable
  * @availability serverless stability=stable visibility=public
+ * @doc_tag document
  */
 export interface Request extends RequestBase {
   path_parts: {
diff --git a/specification/_global/update_by_query_rethrottle/UpdateByQueryRethrottleRequest.ts b/specification/_global/update_by_query_rethrottle/UpdateByQueryRethrottleRequest.ts
index deddea2a59..abc6810490 100644
--- a/specification/_global/update_by_query_rethrottle/UpdateByQueryRethrottleRequest.ts
+++ b/specification/_global/update_by_query_rethrottle/UpdateByQueryRethrottleRequest.ts
@@ -22,9 +22,14 @@ import { Id } from '@_types/common'
 import { float } from '@_types/Numeric'
 
 /**
+ * Throttle an update by query operation.
+ *
+ * Change the number of requests per second for a particular update by query operation.
+ * Rethrottling that speeds up the query takes effect immediately but rethrotting that slows down the query takes effect after completing the current batch to prevent scroll timeouts.
  * @rest_spec_name update_by_query_rethrottle
  * @availability stack since=6.5.0 stability=stable
  * @availability serverless stability=stable visibility=private
+ * @doc_tag document
  */
 export interface Request extends RequestBase {
   path_parts: {
diff --git a/specification/_json_spec/cluster.stats.json b/specification/_json_spec/cluster.stats.json
index 5ee14e2095..993cc16d20 100644
--- a/specification/_json_spec/cluster.stats.json
+++ b/specification/_json_spec/cluster.stats.json
@@ -28,9 +28,9 @@
       ]
     },
     "params": {
-      "flat_settings": {
+      "include_remotes": {
         "type": "boolean",
-        "description": "Return settings in flat format (default: false)"
+        "description": "Include remote cluster data into the response (default: false)"
       },
       "timeout": {
         "type": "time",
diff --git a/specification/_json_spec/ilm.delete_lifecycle.json b/specification/_json_spec/ilm.delete_lifecycle.json
index d3e83b77b3..32f55522b0 100644
--- a/specification/_json_spec/ilm.delete_lifecycle.json
+++ b/specification/_json_spec/ilm.delete_lifecycle.json
@@ -23,6 +23,15 @@
         }
       ]
     },
-    "params": {}
+    "params": {
+      "master_timeout": {
+        "type": "time",
+        "description": "Explicit operation timeout for connection to master node"
+      },
+      "timeout": {
+        "type": "time",
+        "description": "Explicit operation timeout"
+      }
+    }
   }
 }
diff --git a/specification/_json_spec/ilm.explain_lifecycle.json b/specification/_json_spec/ilm.explain_lifecycle.json
index 993c9fc0c8..76a815e79b 100644
--- a/specification/_json_spec/ilm.explain_lifecycle.json
+++ b/specification/_json_spec/ilm.explain_lifecycle.json
@@ -31,6 +31,10 @@
       "only_errors": {
         "type": "boolean",
         "description": "filters the indices included in the response to ones in an ILM error state, implies only_managed"
+      },
+      "master_timeout": {
+        "type": "time",
+        "description": "Explicit operation timeout for connection to master node"
       }
     }
   }
diff --git a/specification/_json_spec/ilm.get_lifecycle.json b/specification/_json_spec/ilm.get_lifecycle.json
index 1e5037edb9..44c3ea878c 100644
--- a/specification/_json_spec/ilm.get_lifecycle.json
+++ b/specification/_json_spec/ilm.get_lifecycle.json
@@ -27,6 +27,15 @@
         }
       ]
     },
-    "params": {}
+    "params": {
+      "master_timeout": {
+        "type": "time",
+        "description": "Explicit operation timeout for connection to master node"
+      },
+      "timeout": {
+        "type": "time",
+        "description": "Explicit operation timeout"
+      }
+    }
   }
 }
diff --git a/specification/_json_spec/ilm.put_lifecycle.json b/specification/_json_spec/ilm.put_lifecycle.json
index 2ae9227811..381956a35c 100644
--- a/specification/_json_spec/ilm.put_lifecycle.json
+++ b/specification/_json_spec/ilm.put_lifecycle.json
@@ -24,7 +24,16 @@
         }
       ]
     },
-    "params": {},
+    "params": {
+      "master_timeout": {
+        "type": "time",
+        "description": "Explicit operation timeout for connection to master node"
+      },
+      "timeout": {
+        "type": "time",
+        "description": "Explicit operation timeout"
+      }
+    },
     "body": {
       "description": "The lifecycle policy definition to register"
     }
diff --git a/specification/_json_spec/ilm.start.json b/specification/_json_spec/ilm.start.json
index 722ad25ee2..893c8c98ba 100644
--- a/specification/_json_spec/ilm.start.json
+++ b/specification/_json_spec/ilm.start.json
@@ -17,6 +17,15 @@
         }
       ]
     },
-    "params": {}
+    "params": {
+      "master_timeout": {
+        "type": "time",
+        "description": "Explicit operation timeout for connection to master node"
+      },
+      "timeout": {
+        "type": "time",
+        "description": "Explicit operation timeout"
+      }
+    }
   }
 }
diff --git a/specification/_json_spec/ilm.stop.json b/specification/_json_spec/ilm.stop.json
index 7a9643962a..b60cd2223d 100644
--- a/specification/_json_spec/ilm.stop.json
+++ b/specification/_json_spec/ilm.stop.json
@@ -17,6 +17,15 @@
         }
       ]
     },
-    "params": {}
+    "params": {
+      "master_timeout": {
+        "type": "time",
+        "description": "Explicit operation timeout for connection to master node"
+      },
+      "timeout": {
+        "type": "time",
+        "description": "Explicit operation timeout"
+      }
+    }
   }
 }
diff --git a/specification/_json_spec/indices.delete_data_lifecycle.json b/specification/_json_spec/indices.delete_data_lifecycle.json
index 48311aed8d..94affa5502 100644
--- a/specification/_json_spec/indices.delete_data_lifecycle.json
+++ b/specification/_json_spec/indices.delete_data_lifecycle.json
@@ -4,7 +4,7 @@
       "url": "https://www.elastic.co/guide/en/elasticsearch/reference/master/data-streams-delete-lifecycle.html",
       "description": "Deletes the data stream lifecycle of the selected data streams."
     },
-    "stability": "experimental",
+    "stability": "stable",
     "visibility": "public",
     "headers": {
       "accept": ["application/json"]
diff --git a/specification/_json_spec/indices.explain_data_lifecycle.json b/specification/_json_spec/indices.explain_data_lifecycle.json
index 9f2b24a6f8..e61a497806 100644
--- a/specification/_json_spec/indices.explain_data_lifecycle.json
+++ b/specification/_json_spec/indices.explain_data_lifecycle.json
@@ -4,7 +4,7 @@
       "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/data-streams-explain-lifecycle.html",
       "description": "Retrieves information about the index's current data stream lifecycle, such as any potential encountered error, time since creation etc."
     },
-    "stability": "experimental",
+    "stability": "stable",
     "visibility": "public",
     "headers": {
       "accept": ["application/json"]
diff --git a/specification/_json_spec/indices.get_data_lifecycle.json b/specification/_json_spec/indices.get_data_lifecycle.json
index f356e91226..0aa050cb43 100644
--- a/specification/_json_spec/indices.get_data_lifecycle.json
+++ b/specification/_json_spec/indices.get_data_lifecycle.json
@@ -4,7 +4,7 @@
       "url": "https://www.elastic.co/guide/en/elasticsearch/reference/master/data-streams-get-lifecycle.html",
       "description": "Returns the data stream lifecycle of the selected data streams."
     },
-    "stability": "experimental",
+    "stability": "stable",
     "visibility": "public",
     "headers": {
       "accept": ["application/json"]
diff --git a/specification/_json_spec/indices.put_data_lifecycle.json b/specification/_json_spec/indices.put_data_lifecycle.json
index 5d96f47245..b92c9cc9ca 100644
--- a/specification/_json_spec/indices.put_data_lifecycle.json
+++ b/specification/_json_spec/indices.put_data_lifecycle.json
@@ -4,10 +4,11 @@
       "url": "https://www.elastic.co/guide/en/elasticsearch/reference/master/data-streams-put-lifecycle.html",
       "description": "Updates the data stream lifecycle of the selected data streams."
     },
-    "stability": "experimental",
+    "stability": "stable",
     "visibility": "public",
     "headers": {
-      "accept": ["application/json"]
+      "accept": ["application/json"],
+      "content_type": ["application/json"]
     },
     "url": {
       "paths": [
diff --git a/specification/_json_spec/inference.delete.json b/specification/_json_spec/inference.delete.json
index d9a0f0b0b6..bfd25b611d 100644
--- a/specification/_json_spec/inference.delete.json
+++ b/specification/_json_spec/inference.delete.json
@@ -4,7 +4,7 @@
       "url": "https://www.elastic.co/guide/en/elasticsearch/reference/master/delete-inference-api.html",
       "description": "Delete an inference endpoint"
     },
-    "stability": "experimental",
+    "stability": "stable",
     "visibility": "public",
     "headers": {
       "accept": ["application/json"]
diff --git a/specification/_json_spec/inference.get.json b/specification/_json_spec/inference.get.json
index 661f696f43..7f14d8babb 100644
--- a/specification/_json_spec/inference.get.json
+++ b/specification/_json_spec/inference.get.json
@@ -4,7 +4,7 @@
       "url": "https://www.elastic.co/guide/en/elasticsearch/reference/master/get-inference-api.html",
       "description": "Get an inference endpoint"
     },
-    "stability": "experimental",
+    "stability": "stable",
     "visibility": "public",
     "headers": {
       "accept": ["application/json"]
diff --git a/specification/_json_spec/inference.inference.json b/specification/_json_spec/inference.inference.json
index 6afa0a8ce6..bf1282dfaa 100644
--- a/specification/_json_spec/inference.inference.json
+++ b/specification/_json_spec/inference.inference.json
@@ -4,7 +4,7 @@
       "url": "https://www.elastic.co/guide/en/elasticsearch/reference/master/post-inference-api.html",
       "description": "Perform inference"
     },
-    "stability": "experimental",
+    "stability": "stable",
     "visibility": "public",
     "headers": {
       "accept": ["application/json"],
diff --git a/specification/_json_spec/inference.put.json b/specification/_json_spec/inference.put.json
index 2c7d3fbf14..d48b65cba6 100644
--- a/specification/_json_spec/inference.put.json
+++ b/specification/_json_spec/inference.put.json
@@ -4,7 +4,7 @@
       "url": "https://www.elastic.co/guide/en/elasticsearch/reference/master/put-inference-api.html",
       "description": "Configure an inference endpoint for use in the Inference API"
     },
-    "stability": "experimental",
+    "stability": "stable",
     "visibility": "public",
     "headers": {
       "accept": ["application/json"],
diff --git a/specification/_json_spec/inference.stream_inference.json b/specification/_json_spec/inference.stream_inference.json
new file mode 100644
index 0000000000..03fa95f2ce
--- /dev/null
+++ b/specification/_json_spec/inference.stream_inference.json
@@ -0,0 +1,45 @@
+{
+  "inference.stream_inference": {
+    "documentation": {
+      "url": "https://www.elastic.co/guide/en/elasticsearch/reference/master/post-stream-inference-api.html",
+      "description": "Perform streaming inference"
+    },
+    "stability": "stable",
+    "visibility": "public",
+    "headers": {
+      "accept": ["text/event-stream"],
+      "content_type": ["application/json"]
+    },
+    "url": {
+      "paths": [
+        {
+          "path": "/_inference/{inference_id}/_stream",
+          "methods": ["POST"],
+          "parts": {
+            "inference_id": {
+              "type": "string",
+              "description": "The inference Id"
+            }
+          }
+        },
+        {
+          "path": "/_inference/{task_type}/{inference_id}/_stream",
+          "methods": ["POST"],
+          "parts": {
+            "task_type": {
+              "type": "string",
+              "description": "The task type"
+            },
+            "inference_id": {
+              "type": "string",
+              "description": "The inference Id"
+            }
+          }
+        }
+      ]
+    },
+    "body": {
+      "description": "The inference payload"
+    }
+  }
+}
diff --git a/specification/_json_spec/ingest.delete_geoip_database.json b/specification/_json_spec/ingest.delete_geoip_database.json
index 54024bbe18..d56019cf4f 100644
--- a/specification/_json_spec/ingest.delete_geoip_database.json
+++ b/specification/_json_spec/ingest.delete_geoip_database.json
@@ -1,7 +1,7 @@
 {
   "ingest.delete_geoip_database": {
     "documentation": {
-      "url": "https://www.elastic.co/guide/en/elasticsearch/reference/master/TODO.html",
+      "url": "https://www.elastic.co/guide/en/elasticsearch/reference/master/delete-geoip-database-api.html",
       "description": "Deletes a geoip database configuration"
     },
     "stability": "stable",
@@ -23,6 +23,15 @@
         }
       ]
     },
-    "params": {}
+    "params": {
+      "master_timeout": {
+        "type": "time",
+        "description": "Explicit operation timeout for connection to master node"
+      },
+      "timeout": {
+        "type": "time",
+        "description": "Explicit operation timeout"
+      }
+    }
   }
 }
diff --git a/specification/_json_spec/ingest.delete_ip_location_database.json b/specification/_json_spec/ingest.delete_ip_location_database.json
new file mode 100644
index 0000000000..427cbe9817
--- /dev/null
+++ b/specification/_json_spec/ingest.delete_ip_location_database.json
@@ -0,0 +1,37 @@
+{
+  "ingest.delete_ip_location_database": {
+    "documentation": {
+      "url": "https://www.elastic.co/guide/en/elasticsearch/reference/master/delete-ip-location-database-api.html",
+      "description": "Deletes an ip location database configuration"
+    },
+    "stability": "stable",
+    "visibility": "public",
+    "headers": {
+      "accept": ["application/json"]
+    },
+    "url": {
+      "paths": [
+        {
+          "path": "/_ingest/ip_location/database/{id}",
+          "methods": ["DELETE"],
+          "parts": {
+            "id": {
+              "type": "list",
+              "description": "A comma-separated list of ip location database configurations to delete"
+            }
+          }
+        }
+      ]
+    },
+    "params": {
+      "master_timeout": {
+        "type": "time",
+        "description": "Explicit operation timeout for connection to master node"
+      },
+      "timeout": {
+        "type": "time",
+        "description": "Explicit operation timeout"
+      }
+    }
+  }
+}
diff --git a/specification/_json_spec/ingest.get_geoip_database.json b/specification/_json_spec/ingest.get_geoip_database.json
index 58c467faf3..db2e48a040 100644
--- a/specification/_json_spec/ingest.get_geoip_database.json
+++ b/specification/_json_spec/ingest.get_geoip_database.json
@@ -1,7 +1,7 @@
 {
   "ingest.get_geoip_database": {
     "documentation": {
-      "url": "https://www.elastic.co/guide/en/elasticsearch/reference/master/TODO.html",
+      "url": "https://www.elastic.co/guide/en/elasticsearch/reference/master/get-geoip-database-api.html",
       "description": "Returns geoip database configuration."
     },
     "stability": "stable",
diff --git a/specification/_json_spec/ingest.get_ip_location_database.json b/specification/_json_spec/ingest.get_ip_location_database.json
new file mode 100644
index 0000000000..d6dda6573b
--- /dev/null
+++ b/specification/_json_spec/ingest.get_ip_location_database.json
@@ -0,0 +1,32 @@
+{
+  "ingest.get_ip_location_database": {
+    "documentation": {
+      "url": "https://www.elastic.co/guide/en/elasticsearch/reference/master/get-ip-location-database-api.html",
+      "description": "Returns the specified ip location database configuration"
+    },
+    "stability": "stable",
+    "visibility": "public",
+    "headers": {
+      "accept": ["application/json"]
+    },
+    "url": {
+      "paths": [
+        {
+          "path": "/_ingest/ip_location/database",
+          "methods": ["GET"]
+        },
+        {
+          "path": "/_ingest/ip_location/database/{id}",
+          "methods": ["GET"],
+          "parts": {
+            "id": {
+              "type": "list",
+              "description": "A comma-separated list of ip location database configurations to get; use `*` to get all ip location database configurations"
+            }
+          }
+        }
+      ]
+    },
+    "params": {}
+  }
+}
diff --git a/specification/_json_spec/ingest.put_geoip_database.json b/specification/_json_spec/ingest.put_geoip_database.json
index 29a44f266c..c732652c34 100644
--- a/specification/_json_spec/ingest.put_geoip_database.json
+++ b/specification/_json_spec/ingest.put_geoip_database.json
@@ -1,7 +1,7 @@
 {
   "ingest.put_geoip_database": {
     "documentation": {
-      "url": "https://www.elastic.co/guide/en/elasticsearch/reference/master/TODO.html",
+      "url": "https://www.elastic.co/guide/en/elasticsearch/reference/master/put-geoip-database-api.html",
       "description": "Puts the configuration for a geoip database to be downloaded"
     },
     "stability": "stable",
@@ -24,7 +24,16 @@
         }
       ]
     },
-    "params": {},
+    "params": {
+      "master_timeout": {
+        "type": "time",
+        "description": "Explicit operation timeout for connection to master node"
+      },
+      "timeout": {
+        "type": "time",
+        "description": "Explicit operation timeout"
+      }
+    },
     "body": {
       "description": "The database configuration definition",
       "required": true
diff --git a/specification/_json_spec/ingest.put_ip_location_database.json b/specification/_json_spec/ingest.put_ip_location_database.json
new file mode 100644
index 0000000000..87a2adab72
--- /dev/null
+++ b/specification/_json_spec/ingest.put_ip_location_database.json
@@ -0,0 +1,42 @@
+{
+  "ingest.put_ip_location_database": {
+    "documentation": {
+      "url": "https://www.elastic.co/guide/en/elasticsearch/reference/master/put-ip-location-database-api.html",
+      "description": "Puts the configuration for a ip location database to be downloaded"
+    },
+    "stability": "stable",
+    "visibility": "public",
+    "headers": {
+      "accept": ["application/json"],
+      "content_type": ["application/json"]
+    },
+    "url": {
+      "paths": [
+        {
+          "path": "/_ingest/ip_location/database/{id}",
+          "methods": ["PUT"],
+          "parts": {
+            "id": {
+              "type": "string",
+              "description": "The id of the database configuration"
+            }
+          }
+        }
+      ]
+    },
+    "params": {
+      "master_timeout": {
+        "type": "time",
+        "description": "Explicit operation timeout for connection to master node"
+      },
+      "timeout": {
+        "type": "time",
+        "description": "Explicit operation timeout"
+      }
+    },
+    "body": {
+      "description": "The database configuration definition",
+      "required": true
+    }
+  }
+}
diff --git a/specification/_json_spec/open_point_in_time.json b/specification/_json_spec/open_point_in_time.json
index 34e9f4a4b6..3870c1f95f 100644
--- a/specification/_json_spec/open_point_in_time.json
+++ b/specification/_json_spec/open_point_in_time.json
@@ -47,6 +47,10 @@
         "type": "string",
         "description": "Specific the time to live for the point in time",
         "required": true
+      },
+      "allow_partial_search_results": {
+        "type": "boolean",
+        "description": "Specify whether to tolerate shards missing when creating the point-in-time, or otherwise throw an exception. (default: false)"
       }
     },
     "body": {
diff --git a/specification/_json_spec/query_rules.test.json b/specification/_json_spec/query_rules.test.json
new file mode 100644
index 0000000000..43167c765b
--- /dev/null
+++ b/specification/_json_spec/query_rules.test.json
@@ -0,0 +1,32 @@
+{
+  "query_rules.test": {
+    "documentation": {
+      "url": "https://www.elastic.co/guide/en/elasticsearch/reference/master/test-query-ruleset.html",
+      "description": "Tests a query ruleset to identify the rules that would match input criteria"
+    },
+    "stability": "experimental",
+    "visibility": "public",
+    "headers": {
+      "accept": ["application/json"],
+      "content_type": ["application/json"]
+    },
+    "url": {
+      "paths": [
+        {
+          "path": "/_query_rules/{ruleset_id}/_test",
+          "methods": ["POST"],
+          "parts": {
+            "ruleset_id": {
+              "type": "string",
+              "description": "The unique identifier of the ruleset to test."
+            }
+          }
+        }
+      ]
+    },
+    "body": {
+      "description": "The match criteria to test against the ruleset",
+      "required": true
+    }
+  }
+}
diff --git a/specification/_json_spec/slm.delete_lifecycle.json b/specification/_json_spec/slm.delete_lifecycle.json
index a27bc3e650..3017931873 100644
--- a/specification/_json_spec/slm.delete_lifecycle.json
+++ b/specification/_json_spec/slm.delete_lifecycle.json
@@ -23,6 +23,15 @@
         }
       ]
     },
-    "params": {}
+    "params": {
+      "master_timeout": {
+        "type": "time",
+        "description": "Explicit operation timeout for connection to master node"
+      },
+      "timeout": {
+        "type": "time",
+        "description": "Explicit operation timeout"
+      }
+    }
   }
 }
diff --git a/specification/_json_spec/slm.execute_lifecycle.json b/specification/_json_spec/slm.execute_lifecycle.json
index 181345955e..4625097a98 100644
--- a/specification/_json_spec/slm.execute_lifecycle.json
+++ b/specification/_json_spec/slm.execute_lifecycle.json
@@ -23,6 +23,15 @@
         }
       ]
     },
-    "params": {}
+    "params": {
+      "master_timeout": {
+        "type": "time",
+        "description": "Explicit operation timeout for connection to master node"
+      },
+      "timeout": {
+        "type": "time",
+        "description": "Explicit operation timeout"
+      }
+    }
   }
 }
diff --git a/specification/_json_spec/slm.execute_retention.json b/specification/_json_spec/slm.execute_retention.json
index ad0c65fefc..eb5c31c0f0 100644
--- a/specification/_json_spec/slm.execute_retention.json
+++ b/specification/_json_spec/slm.execute_retention.json
@@ -17,6 +17,15 @@
         }
       ]
     },
-    "params": {}
+    "params": {
+      "master_timeout": {
+        "type": "time",
+        "description": "Explicit operation timeout for connection to master node"
+      },
+      "timeout": {
+        "type": "time",
+        "description": "Explicit operation timeout"
+      }
+    }
   }
 }
diff --git a/specification/_json_spec/slm.get_lifecycle.json b/specification/_json_spec/slm.get_lifecycle.json
index b32057a5fc..6d71517825 100644
--- a/specification/_json_spec/slm.get_lifecycle.json
+++ b/specification/_json_spec/slm.get_lifecycle.json
@@ -27,6 +27,15 @@
         }
       ]
     },
-    "params": {}
+    "params": {
+      "master_timeout": {
+        "type": "time",
+        "description": "Explicit operation timeout for connection to master node"
+      },
+      "timeout": {
+        "type": "time",
+        "description": "Explicit operation timeout"
+      }
+    }
   }
 }
diff --git a/specification/_json_spec/slm.get_stats.json b/specification/_json_spec/slm.get_stats.json
index 92c27a4abe..2d9899c8e8 100644
--- a/specification/_json_spec/slm.get_stats.json
+++ b/specification/_json_spec/slm.get_stats.json
@@ -17,6 +17,15 @@
         }
       ]
     },
-    "params": {}
+    "params": {
+      "master_timeout": {
+        "type": "time",
+        "description": "Explicit operation timeout for connection to master node"
+      },
+      "timeout": {
+        "type": "time",
+        "description": "Explicit operation timeout"
+      }
+    }
   }
 }
diff --git a/specification/_json_spec/slm.get_status.json b/specification/_json_spec/slm.get_status.json
index 9617adc746..10b0c02a12 100644
--- a/specification/_json_spec/slm.get_status.json
+++ b/specification/_json_spec/slm.get_status.json
@@ -17,6 +17,15 @@
         }
       ]
     },
-    "params": {}
+    "params": {
+      "master_timeout": {
+        "type": "time",
+        "description": "Explicit operation timeout for connection to master node"
+      },
+      "timeout": {
+        "type": "time",
+        "description": "Explicit operation timeout"
+      }
+    }
   }
 }
diff --git a/specification/_json_spec/slm.put_lifecycle.json b/specification/_json_spec/slm.put_lifecycle.json
index f9037c4055..5a605362e8 100644
--- a/specification/_json_spec/slm.put_lifecycle.json
+++ b/specification/_json_spec/slm.put_lifecycle.json
@@ -24,7 +24,16 @@
         }
       ]
     },
-    "params": {},
+    "params": {
+      "master_timeout": {
+        "type": "time",
+        "description": "Explicit operation timeout for connection to master node"
+      },
+      "timeout": {
+        "type": "time",
+        "description": "Explicit operation timeout"
+      }
+    },
     "body": {
       "description": "The snapshot lifecycle policy definition to register"
     }
diff --git a/specification/_json_spec/snapshot.repository_verify_integrity.json b/specification/_json_spec/snapshot.repository_verify_integrity.json
new file mode 100644
index 0000000000..11af7355ac
--- /dev/null
+++ b/specification/_json_spec/snapshot.repository_verify_integrity.json
@@ -0,0 +1,61 @@
+{
+  "snapshot.repository_verify_integrity": {
+    "documentation": {
+      "url": "https://www.elastic.co/guide/en/elasticsearch/reference/master/modules-snapshots.html",
+      "description": "Verifies the integrity of the contents of a snapshot repository"
+    },
+    "stability": "experimental",
+    "visibility": "private",
+    "headers": {
+      "accept": ["application/json"]
+    },
+    "url": {
+      "paths": [
+        {
+          "path": "/_snapshot/{repository}/_verify_integrity",
+          "methods": ["POST"],
+          "parts": {
+            "repository": {
+              "type": "string",
+              "description": "A repository name"
+            }
+          }
+        }
+      ]
+    },
+    "params": {
+      "meta_thread_pool_concurrency": {
+        "type": "number",
+        "description": "Number of threads to use for reading metadata"
+      },
+      "blob_thread_pool_concurrency": {
+        "type": "number",
+        "description": "Number of threads to use for reading blob contents"
+      },
+      "snapshot_verification_concurrency": {
+        "type": "number",
+        "description": "Number of snapshots to verify concurrently"
+      },
+      "index_verification_concurrency": {
+        "type": "number",
+        "description": "Number of indices to verify concurrently"
+      },
+      "index_snapshot_verification_concurrency": {
+        "type": "number",
+        "description": "Number of snapshots to verify concurrently within each index"
+      },
+      "max_failed_shard_snapshots": {
+        "type": "number",
+        "description": "Maximum permitted number of failed shard snapshots"
+      },
+      "verify_blob_contents": {
+        "type": "boolean",
+        "description": "Whether to verify the contents of individual blobs"
+      },
+      "max_bytes_per_sec": {
+        "type": "string",
+        "description": "Rate limit for individual blob verification"
+      }
+    }
+  }
+}
diff --git a/specification/_types/Base.ts b/specification/_types/Base.ts
index 2ac27fe0c5..383dab96b3 100644
--- a/specification/_types/Base.ts
+++ b/specification/_types/Base.ts
@@ -89,7 +89,8 @@ export class IndicesResponseBase extends AcknowledgedResponseBase {
 }
 
 export class ShardsOperationResponseBase {
-  _shards: ShardStatistics
+  // _shards is always returned, but not when wait_for_completion is false in the request
+  _shards?: ShardStatistics
 }
 
 export class CustomResponseBuilderBase {}
diff --git a/specification/_types/Errors.ts b/specification/_types/Errors.ts
index ec5dd15215..382e8d8ea8 100644
--- a/specification/_types/Errors.ts
+++ b/specification/_types/Errors.ts
@@ -62,7 +62,6 @@ export class BulkIndexByScrollFailure {
   id: Id
   index: IndexName
   status: integer
-  type: string
 }
 
 export class TaskFailure {
diff --git a/specification/_types/Knn.ts b/specification/_types/Knn.ts
index 82f9170ce8..0735fb45bd 100644
--- a/specification/_types/Knn.ts
+++ b/specification/_types/Knn.ts
@@ -51,6 +51,9 @@ export interface KnnSearch {
   inner_hits?: InnerHits
 }
 
+/**
+ * @ext_doc_id query-dsl-knn-query
+ */
 export interface KnnQuery extends QueryBase {
   /** The name of the vector field to search against */
   field: Field
diff --git a/specification/_types/Retriever.ts b/specification/_types/Retriever.ts
index 5118033924..42d5c5f232 100644
--- a/specification/_types/Retriever.ts
+++ b/specification/_types/Retriever.ts
@@ -33,11 +33,15 @@ export class RetrieverContainer {
   knn?: KnnRetriever
   /** A retriever that produces top documents from reciprocal rank fusion (RRF). */
   rrf?: RRFRetriever
+  /** A retriever that reranks the top documents based on a reranking model using the InferenceAPI */
+  text_similarity_reranker?: TextSimilarityReranker
 }
 
 export class RetrieverBase {
   /** Query to filter the documents that can match. */
   filter?: QueryContainer | QueryContainer[]
+  /** Minimum _score for matching documents. Documents with a lower _score are not included in the top documents. */
+  min_score?: float
 }
 
 export class StandardRetriever extends RetrieverBase {
@@ -49,8 +53,6 @@ export class StandardRetriever extends RetrieverBase {
   terminate_after?: integer
   /** A sort object that that specifies the order of matching documents. */
   sort?: Sort
-  /** Minimum _score for matching documents. Documents with a lower _score are not included in the top documents. */
-  min_score?: float
   /** Collapses the top documents by a specified key into a single top document per key. */
   collapse?: FieldCollapse
 }
@@ -78,3 +80,16 @@ export class RRFRetriever extends RetrieverBase {
   /** This value determines the size of the individual result sets per query.  */
   rank_window_size?: integer
 }
+
+export class TextSimilarityReranker extends RetrieverBase {
+  /** The nested retriever which will produce the first-level results, that will later be used for reranking. */
+  retriever: RetrieverContainer
+  /** This value determines how many documents we will consider from the nested retriever.  */
+  rank_window_size?: integer
+  /** Unique identifier of the inference endpoint created using the inference API. */
+  inference_id?: string
+  /** The text snippet used as the basis for similarity comparison */
+  inference_text?: string
+  /** The document field to be used for text similarity comparisons. This field should contain the text that will be evaluated against the inference_text */
+  field?: string
+}
diff --git a/specification/_types/aggregations/Aggregate.ts b/specification/_types/aggregations/Aggregate.ts
index 36460d0540..a6327a0431 100644
--- a/specification/_types/aggregations/Aggregate.ts
+++ b/specification/_types/aggregations/Aggregate.ts
@@ -38,6 +38,7 @@ import { DurationLarge, EpochTime, UnitMillis } from '@_types/Time'
 /**
  * @variants external
  * @non_exhaustive
+ * @ext_doc_id search-aggregations
  */
 export type Aggregate =
   | CardinalityAggregate
@@ -195,37 +196,52 @@ export class SingleMetricAggregateBase extends AggregateBase {
 /** @variant name=median_absolute_deviation */
 export class MedianAbsoluteDeviationAggregate extends SingleMetricAggregateBase {}
 
-/** @variant name=min */
+/**
+ * @variant name=min
+ * @ext_doc_id search-aggregations-metrics-min-aggregation
+ */
 export class MinAggregate extends SingleMetricAggregateBase {}
 
-/** @variant name=max */
+/**
+ * @variant name=max
+ * @ext_doc_id search-aggregations-metrics-max-aggregation
+ */
 export class MaxAggregate extends SingleMetricAggregateBase {}
 
 /**
  * Sum aggregation result. `value` is always present and is zero if there were no values to process.
  * @variant name=sum
+ * @ext_doc_id search-aggregations-metrics-sum-aggregation
  */
 export class SumAggregate extends SingleMetricAggregateBase {}
 
-/** @variant name=avg */
+/**
+ * @variant name=avg
+ * @ext_doc_id search-aggregations-metrics-avg-aggregation
+ */
 export class AvgAggregate extends SingleMetricAggregateBase {}
 
 /**
  * Weighted average aggregation result. `value` is missing if the weight was set to zero.
  * @variant name=weighted_avg
+ * @ext_doc_id search-aggregations-metrics-weight-avg-aggregation
  */
 export class WeightedAvgAggregate extends SingleMetricAggregateBase {}
 
 /**
  * Value count aggregation result. `value` is always present.
  * @variant name=value_count
+ * @ext_doc_id search-aggregations-metrics-valuecount-aggregation
  */
 export class ValueCountAggregate extends SingleMetricAggregateBase {}
 
 /** @variant name=simple_value */
 export class SimpleValueAggregate extends SingleMetricAggregateBase {}
 
-/** @variant name=derivative */
+/**
+ * @variant name=derivative
+ * @ext_doc_id search-aggregations-pipeline-derivative-aggregation
+ */
 export class DerivativeAggregate extends SingleMetricAggregateBase {
   normalized_value?: double
   normalized_value_as_string?: string
@@ -242,6 +258,7 @@ export class BucketMetricValueAggregate extends SingleMetricAggregateBase {
  * Statistics aggregation result. `min`, `max` and `avg` are missing if there were no values to process
  * (`count` is zero).
  * @variant name=stats
+ * @ext_doc_id search-aggregations-metrics-stats-aggregation
  */
 export class StatsAggregate extends AggregateBase {
   count: long
@@ -255,7 +272,10 @@ export class StatsAggregate extends AggregateBase {
   sum_as_string?: string
 }
 
-/** @variant name=stats_bucket */
+/**
+ * @variant name=stats_bucket
+ * @ext_doc_id search-aggregations-pipeline-stats-bucket-aggregation
+ */
 export class StatsBucketAggregate extends StatsAggregate {}
 
 export class StandardDeviationBounds {
@@ -276,7 +296,10 @@ export class StandardDeviationBoundsAsString {
   lower_sampling: string
 }
 
-/** @variant name=extended_stats */
+/**
+ * @variant name=extended_stats
+ * @ext_doc_id search-aggregations-metrics-extendedstats-aggregation
+ */
 export class ExtendedStatsAggregate extends StatsAggregate {
   sum_of_squares: double | null
   variance: double | null
@@ -301,12 +324,18 @@ export class ExtendedStatsBucketAggregate extends ExtendedStatsAggregate {}
 
 //----- Geo
 
-/** @variant name=geo_bounds */
+/**
+ * @variant name=geo_bounds
+ * @ext_doc_id search-aggregations-metrics-geobounds-aggregation
+ */
 export class GeoBoundsAggregate extends AggregateBase {
   bounds?: GeoBounds
 }
 
-/** @variant name=geo_centroid */
+/**
+ * @variant name=geo_centroid
+ * @ext_doc_id search-aggregations-metrics-geocentroid-aggregation
+ */
 export class GeoCentroidAggregate extends AggregateBase {
   count: long
   location?: GeoLocation
@@ -340,7 +369,10 @@ export class MultiBucketBase
   doc_count: long
 }
 
-/** @variant name=histogram */
+/**
+ * @variant name=histogram
+ * @ext_doc_id search-aggregations-bucket-histogram-aggregation
+ */
 export class HistogramAggregate extends MultiBucketAggregateBase<HistogramBucket> {}
 
 export class HistogramBucket extends MultiBucketBase {
@@ -348,7 +380,9 @@ export class HistogramBucket extends MultiBucketBase {
   key: double
 }
 
-/** @variant name=date_histogram */
+/** @variant name=date_histogram
+ * @ext_doc_id search-aggregations-bucket-datehistogram-aggregation
+ */
 export class DateHistogramAggregate extends MultiBucketAggregateBase<DateHistogramBucket> {}
 
 export class DateHistogramBucket extends MultiBucketBase {
@@ -356,7 +390,10 @@ export class DateHistogramBucket extends MultiBucketBase {
   key: EpochTime<UnitMillis>
 }
 
-/** @variant name=auto_date_histogram */
+/**
+ * @variant name=auto_date_histogram
+ * @ext_doc_id search-aggregations-bucket-autodatehistogram-aggregation
+ */
 // Note: no keyed variant in `InternalAutoDateHistogram`
 export class AutoDateHistogramAggregate extends MultiBucketAggregateBase<DateHistogramBucket> {
   interval: DurationLarge
@@ -461,7 +498,10 @@ export class StringRareTermsBucket extends MultiBucketBase {
 // Since the buckets array is present but always empty, we use `Void` as the bucket type.
 export class UnmappedRareTermsAggregate extends MultiBucketAggregateBase<Void> {}
 
-/** @variant name=multi_terms */
+/**
+ * @variant name=multi_terms
+ * @ext_doc_id search-aggregations-bucket-multi-terms-aggregation
+ */
 // Note: no keyed variant
 export class MultiTermsAggregate extends TermsAggregateBase<MultiTermsBucket> {}
 
@@ -485,19 +525,34 @@ export class SingleBucketAggregateBase
   doc_count: long
 }
 
-/** @variant name=missing */
+/**
+ * @variant name=missing
+ * @ext_doc_id search-aggregations-bucket-missing-aggregation
+ */
 export class MissingAggregate extends SingleBucketAggregateBase {}
 
-/** @variant name=nested */
+/**
+ * @variant name=nested
+ * @ext_doc_id search-aggregations-bucket-nested-aggregation
+ */
 export class NestedAggregate extends SingleBucketAggregateBase {}
 
-/** @variant name=reverse_nested */
+/**
+ * @variant name=reverse_nested
+ * @ext_doc_id search-aggregations-bucket-reverse-nested-aggregation
+ */
 export class ReverseNestedAggregate extends SingleBucketAggregateBase {}
 
-/** @variant name=global */
+/**
+ * @variant name=global
+ * @ext_doc_id search-aggregations-bucket-global-aggregation
+ */
 export class GlobalAggregate extends SingleBucketAggregateBase {}
 
-/** @variant name=filter */
+/**
+ * @variant name=filter
+ * @ext_doc_id search-aggregations-bucket-filter-aggregation
+ */
 export class FilterAggregate extends SingleBucketAggregateBase {}
 
 /** @variant name=sampler */
@@ -516,7 +571,10 @@ export class GeoHashGridBucket extends MultiBucketBase {
   key: GeoHash
 }
 
-/** @variant name=geotile_grid */
+/**
+ * @variant name=geotile_grid
+ * @ext_doc_id search-aggregations-bucket-geotilegrid-aggregation
+ */
 // Note: no keyed variant in the `InternalGeoGrid` parent class
 export class GeoTileGridAggregate extends MultiBucketAggregateBase<GeoTileGridBucket> {}
 
@@ -533,7 +591,10 @@ export class GeoHexGridBucket extends MultiBucketBase {
 
 //----- Ranges
 
-/** @variant name=range */
+/**
+ * @variant name=range
+ * @ext_doc_id search-aggregations-bucket-range-aggregation
+ */
 export class RangeAggregate extends MultiBucketAggregateBase<RangeBucket> {}
 
 export class RangeBucket extends MultiBucketBase {
@@ -549,16 +610,21 @@ export class RangeBucket extends MultiBucketBase {
  * Result of a `date_range` aggregation. Same format as a for a `range` aggregation: `from` and `to`
  * in `buckets` are milliseconds since the Epoch, represented as a floating point number.
  * @variant name=date_range
+ * @ext_doc_id search-aggregations-bucket-daterange-aggregation
  */
 export class DateRangeAggregate extends RangeAggregate {}
 
 /**
  * Result of a `geo_distance` aggregation. The unit for `from` and `to` is meters by default.
  * @variant name=geo_distance
+ * @ext_doc_id search-aggregations-bucket-geodistance-aggregation
  */
 export class GeoDistanceAggregate extends RangeAggregate {}
 
-/** @variant name=ip_range */
+/**
+ * @variant name=ip_range
+ * @ext_doc_id search-aggregations-bucket-iprange-aggregation
+ */
 // ES: InternalBinaryRange
 export class IpRangeAggregate extends MultiBucketAggregateBase<IpRangeBucket> {}
 
@@ -570,12 +636,18 @@ export class IpRangeBucket extends MultiBucketBase {
 
 //----- Other multi-bucket
 
-/** @variant name=filters */
+/**
+ * @variant name=filters
+ * @ext_doc_id search-aggregations-bucket-filters-aggregation
+ */
 export class FiltersAggregate extends MultiBucketAggregateBase<FiltersBucket> {}
 
 export class FiltersBucket extends MultiBucketBase {}
 
-/** @variant name=adjacency_matrix */
+/**
+ * @variant name=adjacency_matrix
+ * @ext_doc_id search-aggregations-bucket-adjacency-matrix-aggregation
+ */
 // Note: no keyed variant in the `InternalAdjacencyMatrix`
 export class AdjacencyMatrixAggregate extends MultiBucketAggregateBase<AdjacencyMatrixBucket> {}
 
@@ -583,6 +655,9 @@ export class AdjacencyMatrixBucket extends MultiBucketBase {
   key: string
 }
 
+/**
+ * @ext_doc_id search-aggregations-bucket-significanttext-aggregation
+ */
 export class SignificantTermsAggregateBase<
   T
 > extends MultiBucketAggregateBase<T> {
@@ -631,7 +706,10 @@ export class CompositeBucket extends MultiBucketBase {
   key: CompositeAggregateKey
 }
 
-/** @variant name=ip_prefix */
+/**
+ * @variant name=ip_prefix
+ * @ext_doc_id search-aggregations-bucket-ipprefix-aggregation
+ */
 export class IpPrefixAggregate extends MultiBucketAggregateBase<IpPrefixBucket> {}
 
 export class IpPrefixBucket extends MultiBucketBase {
@@ -658,12 +736,18 @@ export class TimeSeriesBucket extends MultiBucketBase {
 
 //----- Misc
 
-/** @variant name=scripted_metric */
+/**
+ * @variant name=scripted_metric
+ * @ext_doc_id search-aggregations-metrics-scripted-metric-aggregation
+ */
 export class ScriptedMetricAggregate extends AggregateBase {
   value: UserDefinedValue
 }
 
-/** @variant name=top_hits */
+/**
+ * @variant name=top_hits
+ * @ext_doc_id search-aggregations-metrics-top-hits-aggregation
+ */
 export class TopHitsAggregate extends AggregateBase {
   hits: HitsMetadata<UserDefinedValue>
 }
@@ -671,6 +755,7 @@ export class TopHitsAggregate extends AggregateBase {
 /**
  * @variant name=inference
  * @behavior_meta AdditionalProperties fieldname=data description="Additional data"
+ * @ext_doc_id search-aggregations-pipeline-inference-bucket-aggregation
  */
 // This is a union with widely different fields, many of them being runtime-defined. We mimic below the few fields
 // present in `ParsedInference` with an additional properties spillover to not loose any data.
@@ -718,7 +803,10 @@ export class StringStatsAggregate extends AggregateBase {
   avg_length_as_string?: string
 }
 
-/** @variant name=boxplot */
+/**
+ * @variant name=boxplot
+ * @ext_doc_id search-aggregations-metrics-boxplot-aggregation
+ */
 export class BoxPlotAggregate extends AggregateBase {
   min: double
   max: double
@@ -747,13 +835,19 @@ export class TopMetrics {
   metrics: Dictionary<string, FieldValue | null>
 }
 
-/** @variant name=t_test */
+/**
+ * @variant name=t_test
+ * @ext_doc_id search-aggregations-metrics-ttest-aggregation
+ */
 export class TTestAggregate extends AggregateBase {
   value: double | null
   value_as_string?: string
 }
 
-/** @variant name=rate */
+/**
+ * @variant name=rate
+ * @ext_doc_id search-aggregations-metrics-rate-aggregation
+ */
 export class RateAggregate extends AggregateBase {
   value: double
   value_as_string?: string
@@ -769,7 +863,10 @@ export class CumulativeCardinalityAggregate extends AggregateBase {
   value_as_string?: string
 }
 
-/** @variant name=matrix_stats */
+/**
+ * @variant name=matrix_stats
+ * @ext_doc_id search-aggregations-matrix-stats-aggregation
+ */
 export class MatrixStatsAggregate extends AggregateBase {
   doc_count: long
   fields?: MatrixStatsFields[]
@@ -788,15 +885,24 @@ export class MatrixStatsFields {
 
 //----- Parent join plugin
 
-/** @variant name=children */
+/**
+ * @variant name=children
+ * @ext_doc_id search-aggregations-bucket-children-aggregation
+ */
 export class ChildrenAggregate extends SingleBucketAggregateBase {}
 
-/** @variant name=parent */
+/**
+ * @variant name=parent
+ * @ext_doc_id search-aggregations-bucket-parent-aggregation
+ */
 export class ParentAggregate extends SingleBucketAggregateBase {}
 
 //----- Spatial plugin
 
-/** @variant name=geo_line */
+/**
+ * @variant name=geo_line
+ * @ext_doc_id search-aggregations-metrics-geo-line
+ */
 export class GeoLineAggregate extends AggregateBase {
   type: string // should be "Feature"
   geometry: GeoLine
diff --git a/specification/_types/aggregations/AggregationContainer.ts b/specification/_types/aggregations/AggregationContainer.ts
index 84bec2d7aa..18cd51ab60 100644
--- a/specification/_types/aggregations/AggregationContainer.ts
+++ b/specification/_types/aggregations/AggregationContainer.ts
@@ -44,6 +44,7 @@ import {
   MultiTermsAggregation,
   NestedAggregation,
   ParentAggregation,
+  RandomSamplerAggregation,
   RangeAggregation,
   RareTermsAggregation,
   ReverseNestedAggregation,
@@ -124,74 +125,74 @@ export class AggregationContainer {
    * A bucket aggregation returning a form of adjacency matrix.
    * The request provides a collection of named filter expressions, similar to the `filters` aggregation.
    * Each bucket in the response represents a non-empty cell in the matrix of intersecting filters.
-   * @doc_id search-aggregations-bucket-adjacency-matrix-aggregation
+   * @ext_doc_id search-aggregations-bucket-adjacency-matrix-aggregation
    */
   adjacency_matrix?: AdjacencyMatrixAggregation
   /**
    * A multi-bucket aggregation similar to the date histogram, except instead of providing an interval to use as the width of each bucket, a target number of buckets is provided.
-   * @doc_id search-aggregations-bucket-autodatehistogram-aggregation
+   * @ext_doc_id search-aggregations-bucket-autodatehistogram-aggregation
    */
   auto_date_histogram?: AutoDateHistogramAggregation
   /**
    * A single-value metrics aggregation that computes the average of numeric values that are extracted from the aggregated documents.
-   * @doc_id search-aggregations-metrics-avg-aggregation
+   * @ext_doc_id search-aggregations-metrics-avg-aggregation
    */
   avg?: AverageAggregation
   /**
    * A sibling pipeline aggregation which calculates the mean value of a specified metric in a sibling aggregation.
    * The specified metric must be numeric and the sibling aggregation must be a multi-bucket aggregation.
-   * @doc_id search-aggregations-pipeline-avg-bucket-aggregation
+   * @ext_doc_id search-aggregations-pipeline-avg-bucket-aggregation
    */
   avg_bucket?: AverageBucketAggregation
   /**
    * A metrics aggregation that computes a box plot of numeric values extracted from the aggregated documents.
-   * @doc_id search-aggregations-metrics-boxplot-aggregation
+   * @ext_doc_id search-aggregations-metrics-boxplot-aggregation
    */
   boxplot?: BoxplotAggregation
   /**
    * A parent pipeline aggregation which runs a script which can perform per bucket computations on metrics in the parent multi-bucket aggregation.
-   * @doc_id search-aggregations-pipeline-bucket-script-aggregation
+   * @ext_doc_id search-aggregations-pipeline-bucket-script-aggregation
    */
   bucket_script?: BucketScriptAggregation
   /**
    * A parent pipeline aggregation which runs a script to determine whether the current bucket will be retained in the parent multi-bucket aggregation.
-   * @doc_id search-aggregations-pipeline-bucket-selector-aggregation
+   * @ext_doc_id search-aggregations-pipeline-bucket-selector-aggregation
    */
   bucket_selector?: BucketSelectorAggregation
   /**
    * A parent pipeline aggregation which sorts the buckets of its parent multi-bucket aggregation.
-   * @doc_id search-aggregations-pipeline-bucket-sort-aggregation
+   * @ext_doc_id search-aggregations-pipeline-bucket-sort-aggregation
    */
   bucket_sort?: BucketSortAggregation
   /**
    * A sibling pipeline aggregation which runs a two sample Kolmogorov–Smirnov test ("K-S test") against a provided distribution and the distribution implied by the documents counts in the configured sibling aggregation.
-   * @doc_id search-aggregations-bucket-count-ks-test-aggregation
+   * @ext_doc_id search-aggregations-bucket-count-ks-test-aggregation
    * @availability stack stability=experimental
    * @availability serverless stability=experimental
    */
   bucket_count_ks_test?: BucketKsAggregation
   /**
    * A sibling pipeline aggregation which runs a correlation function on the configured sibling multi-bucket aggregation.
-   * @doc_id search-aggregations-bucket-correlation-aggregation
+   * @ext_doc_id search-aggregations-bucket-correlation-aggregation
    * @availability stack stability=experimental
    * @availability serverless stability=experimental
    */
   bucket_correlation?: BucketCorrelationAggregation
   /**
    * A single-value metrics aggregation that calculates an approximate count of distinct values.
-   * @doc_id search-aggregations-metrics-cardinality-aggregation
+   * @ext_doc_id search-aggregations-metrics-cardinality-aggregation
    */
   cardinality?: CardinalityAggregation
   /**
    * A multi-bucket aggregation that groups semi-structured text into buckets.
-   * @doc_id search-aggregations-bucket-categorize-text-aggregation
+   * @ext_doc_id search-aggregations-bucket-categorize-text-aggregation
    * @availability stack stability=experimental
    * @availability serverless stability=experimental
    */
   categorize_text?: CategorizeTextAggregation
   /**
    * A single bucket aggregation that selects child documents that have the specified type, as defined in a `join` field.
-   * @doc_id search-aggregations-bucket-children-aggregation
+   * @ext_doc_id search-aggregations-bucket-children-aggregation
    */
   children?: ChildrenAggregation
   /**
@@ -201,323 +202,332 @@ export class AggregationContainer {
   composite?: CompositeAggregation
   /**
    * A parent pipeline aggregation which calculates the cumulative cardinality in a parent `histogram` or `date_histogram` aggregation.
-   * @doc_id search-aggregations-pipeline-cumulative-cardinality-aggregation
+   * @ext_doc_id search-aggregations-pipeline-cumulative-cardinality-aggregation
    */
   cumulative_cardinality?: CumulativeCardinalityAggregation
   /**
    * A parent pipeline aggregation which calculates the cumulative sum of a specified metric in a parent `histogram` or `date_histogram` aggregation.
-   * @doc_id search-aggregations-pipeline-cumulative-sum-aggregation
+   * @ext_doc_id search-aggregations-pipeline-cumulative-sum-aggregation
    */
   cumulative_sum?: CumulativeSumAggregation
   /**
    * A multi-bucket values source based aggregation that can be applied on date values or date range values extracted from the documents.
    * It dynamically builds fixed size (interval) buckets over the values.
-   * @doc_id search-aggregations-bucket-datehistogram-aggregation
+   * @ext_doc_id search-aggregations-bucket-datehistogram-aggregation
    */
   date_histogram?: DateHistogramAggregation
   /**
    * A multi-bucket value source based aggregation that enables the user to define a set of date ranges - each representing a bucket.
-   * @doc_id search-aggregations-bucket-daterange-aggregation
+   * @ext_doc_id search-aggregations-bucket-daterange-aggregation
    */
   date_range?: DateRangeAggregation
   /**
    * A parent pipeline aggregation which calculates the derivative of a specified metric in a parent `histogram` or `date_histogram` aggregation.
-   * @doc_id search-aggregations-pipeline-derivative-aggregation
+   * @ext_doc_id search-aggregations-pipeline-derivative-aggregation
    */
   derivative?: DerivativeAggregation
   /**
    * A filtering aggregation used to limit any sub aggregations' processing to a sample of the top-scoring documents.
    * Similar to the `sampler` aggregation, but adds the ability to limit the number of matches that share a common value.
-   * @doc_id search-aggregations-bucket-diversified-sampler-aggregation
+   * @ext_doc_id search-aggregations-bucket-diversified-sampler-aggregation
    */
   diversified_sampler?: DiversifiedSamplerAggregation
   /**
    * A multi-value metrics aggregation that computes stats over numeric values extracted from the aggregated documents.
-   * @doc_id search-aggregations-metrics-extendedstats-aggregation
+   * @ext_doc_id search-aggregations-metrics-extendedstats-aggregation
    */
   extended_stats?: ExtendedStatsAggregation
   /**
    * A sibling pipeline aggregation which calculates a variety of stats across all bucket of a specified metric in a sibling aggregation.
-   * @doc_id search-aggregations-pipeline-extended-stats-bucket-aggregation
+   * @ext_doc_id search-aggregations-pipeline-extended-stats-bucket-aggregation
    */
   extended_stats_bucket?: ExtendedStatsBucketAggregation
   /**
    * A bucket aggregation which finds frequent item sets, a form of association rules mining that identifies items that often occur together.
-   * @doc_id search-aggregations-bucket-frequent-item-sets-aggregation
+   * @ext_doc_id search-aggregations-bucket-frequent-item-sets-aggregation
    */
   frequent_item_sets?: FrequentItemSetsAggregation
   /**
    * A single bucket aggregation that narrows the set of documents to those that match a query.
-   * @doc_id search-aggregations-bucket-filter-aggregation
+   * @ext_doc_id search-aggregations-bucket-filter-aggregation
    */
   filter?: QueryContainer
   /**
    * A multi-bucket aggregation where each bucket contains the documents that match a query.
-   * @doc_id search-aggregations-bucket-filters-aggregation
+   * @ext_doc_id search-aggregations-bucket-filters-aggregation
    */
   filters?: FiltersAggregation
   /**
    * A metric aggregation that computes the geographic bounding box containing all values for a Geopoint or Geoshape field.
-   * @doc_id search-aggregations-metrics-geobounds-aggregation
+   * @ext_doc_id search-aggregations-metrics-geobounds-aggregation
    */
   geo_bounds?: GeoBoundsAggregation
   /**
    * A metric aggregation that computes the weighted centroid from all coordinate values for geo fields.
-   * @doc_id search-aggregations-metrics-geocentroid-aggregation
+   * @ext_doc_id search-aggregations-metrics-geocentroid-aggregation
    */
   geo_centroid?: GeoCentroidAggregation
   /**
    * A multi-bucket aggregation that works on `geo_point` fields.
    * Evaluates the distance of each document value from an origin point and determines the buckets it belongs to, based on ranges defined in the request.
-   * @doc_id search-aggregations-bucket-geodistance-aggregation
+   * @ext_doc_id search-aggregations-bucket-geodistance-aggregation
    */
   geo_distance?: GeoDistanceAggregation
   /**
    * A multi-bucket aggregation that groups `geo_point` and `geo_shape` values into buckets that represent a grid.
    * Each cell is labeled using a geohash which is of user-definable precision.
-   * @doc_id search-aggregations-bucket-geohashgrid-aggregation
+   * @ext_doc_id search-aggregations-bucket-geohashgrid-aggregation
    */
   geohash_grid?: GeoHashGridAggregation
   /**
    * Aggregates all `geo_point` values within a bucket into a `LineString` ordered by the chosen sort field.
-   * @doc_id search-aggregations-metrics-geo-line
+   * @ext_doc_id search-aggregations-metrics-geo-line
    */
   geo_line?: GeoLineAggregation
   /**
    * A multi-bucket aggregation that groups `geo_point` and `geo_shape` values into buckets that represent a grid.
    * Each cell corresponds to a map tile as used by many online map sites.
-   * @doc_id search-aggregations-bucket-geotilegrid-aggregation
+   * @ext_doc_id search-aggregations-bucket-geotilegrid-aggregation
    */
   geotile_grid?: GeoTileGridAggregation
   /**
    * A multi-bucket aggregation that groups `geo_point` and `geo_shape` values into buckets that represent a grid.
    * Each cell corresponds to a H3 cell index and is labeled using the H3Index representation.
-   * @doc_id search-aggregations-bucket-geohexgrid-aggregation
+   * @ext_doc_id search-aggregations-bucket-geohexgrid-aggregation
    */
   geohex_grid?: GeohexGridAggregation
   /**
    * Defines a single bucket of all the documents within the search execution context.
    * This context is defined by the indices and the document types you’re searching on, but is not influenced by the search query itself.
-   * @doc_id search-aggregations-bucket-global-aggregation
+   * @ext_doc_id search-aggregations-bucket-global-aggregation
    */
   global?: GlobalAggregation
   /**
    * A multi-bucket values source based aggregation that can be applied on numeric values or numeric range values extracted from the documents.
    * It dynamically builds fixed size (interval) buckets over the values.
-   * @doc_id search-aggregations-bucket-histogram-aggregation
+   * @ext_doc_id search-aggregations-bucket-histogram-aggregation
    */
   histogram?: HistogramAggregation
   /**
    * A multi-bucket value source based aggregation that enables the user to define a set of IP ranges - each representing a bucket.
-   * @doc_id search-aggregations-bucket-iprange-aggregation
+   * @ext_doc_id search-aggregations-bucket-iprange-aggregation
    */
   ip_range?: IpRangeAggregation
   /**
    * A bucket aggregation that groups documents based on the network or sub-network of an IP address.
-   * @doc_id search-aggregations-bucket-ipprefix-aggregation
+   * @ext_doc_id search-aggregations-bucket-ipprefix-aggregation
    */
   ip_prefix?: IpPrefixAggregation
   /**
    * A parent pipeline aggregation which loads a pre-trained model and performs inference on the collated result fields from the parent bucket aggregation.
-   * @doc_id search-aggregations-pipeline-inference-bucket-aggregation
+   * @ext_doc_id search-aggregations-pipeline-inference-bucket-aggregation
    */
   inference?: InferenceAggregation
   line?: GeoLineAggregation
   /**
    * A numeric aggregation that computes the following statistics over a set of document fields: `count`, `mean`, `variance`, `skewness`, `kurtosis`, `covariance`, and `covariance`.
-   * @doc_id search-aggregations-matrix-stats-aggregation
+   * @ext_doc_id search-aggregations-matrix-stats-aggregation
    */
   matrix_stats?: MatrixStatsAggregation
   /**
    * A single-value metrics aggregation that returns the maximum value among the numeric values extracted from the aggregated documents.
-   * @doc_id search-aggregations-metrics-max-aggregation
+   * @ext_doc_id search-aggregations-metrics-max-aggregation
    */
   max?: MaxAggregation
   /**
    * A sibling pipeline aggregation which identifies the bucket(s) with the maximum value of a specified metric in a sibling aggregation and outputs both the value and the key(s) of the bucket(s).
-   * @doc_id search-aggregations-pipeline-max-bucket-aggregation
+   * @ext_doc_id search-aggregations-pipeline-max-bucket-aggregation
    */
   max_bucket?: MaxBucketAggregation
   /**
    * A single-value aggregation that approximates the median absolute deviation of its search results.
-   * @doc_id search-aggregations-metrics-median-absolute-deviation-aggregation
+   * @ext_doc_id search-aggregations-metrics-median-absolute-deviation-aggregation
    */
   median_absolute_deviation?: MedianAbsoluteDeviationAggregation
   /**
    * A single-value metrics aggregation that returns the minimum value among numeric values extracted from the aggregated documents.
-   * @doc_id search-aggregations-metrics-min-aggregation
+   * @ext_doc_id search-aggregations-metrics-min-aggregation
    */
   min?: MinAggregation
   /**
    * A sibling pipeline aggregation which identifies the bucket(s) with the minimum value of a specified metric in a sibling aggregation and outputs both the value and the key(s) of the bucket(s).
-   * @doc_id search-aggregations-pipeline-min-bucket-aggregation
+   * @ext_doc_id search-aggregations-pipeline-min-bucket-aggregation
    */
   min_bucket?: MinBucketAggregation
   /**
    * A field data based single bucket aggregation, that creates a bucket of all documents in the current document set context that are missing a field value (effectively, missing a field or having the configured NULL value set).
-   * @doc_id search-aggregations-bucket-missing-aggregation
+   * @ext_doc_id search-aggregations-bucket-missing-aggregation
    */
   missing?: MissingAggregation
   moving_avg?: MovingAverageAggregation
   /**
    * Given an ordered series of percentiles, "slides" a window across those percentiles and computes cumulative percentiles.
-   * @doc_id search-aggregations-pipeline-moving-percentiles-aggregation
+   * @ext_doc_id search-aggregations-pipeline-moving-percentiles-aggregation
    */
   moving_percentiles?: MovingPercentilesAggregation
   /**
    * Given an ordered series of data, "slides" a window across the data and runs a custom script on each window of data.
    * For convenience, a number of common functions are predefined such as `min`, `max`, and moving averages.
-   * @doc_id search-aggregations-pipeline-movfn-aggregation
+   * @ext_doc_id search-aggregations-pipeline-movfn-aggregation
    */
   moving_fn?: MovingFunctionAggregation
   /**
    * A multi-bucket value source based aggregation where buckets are dynamically built - one per unique set of values.
-   * @doc_id search-aggregations-bucket-multi-terms-aggregation
+   * @ext_doc_id search-aggregations-bucket-multi-terms-aggregation
    */
   multi_terms?: MultiTermsAggregation
   /**
    * A special single bucket aggregation that enables aggregating nested documents.
-   * @doc_id search-aggregations-bucket-nested-aggregation
+   * @ext_doc_id search-aggregations-bucket-nested-aggregation
    */
   nested?: NestedAggregation
   /**
    * A parent pipeline aggregation which calculates the specific normalized/rescaled value for a specific bucket value.
-   * @doc_id search-aggregations-pipeline-normalize-aggregation
+   * @ext_doc_id search-aggregations-pipeline-normalize-aggregation
    */
   normalize?: NormalizeAggregation
   /**
    * A special single bucket aggregation that selects parent documents that have the specified type, as defined in a `join` field.
-   * @doc_id search-aggregations-bucket-parent-aggregation
+   * @ext_doc_id search-aggregations-bucket-parent-aggregation
    */
   parent?: ParentAggregation
   /**
    * A multi-value metrics aggregation that calculates one or more percentile ranks over numeric values extracted from the aggregated documents.
-   * @doc_id search-aggregations-metrics-percentile-rank-aggregation
+   * @ext_doc_id search-aggregations-metrics-percentile-rank-aggregation
    */
   percentile_ranks?: PercentileRanksAggregation
   /**
    * A multi-value metrics aggregation that calculates one or more percentiles over numeric values extracted from the aggregated documents.
-   * @doc_id search-aggregations-metrics-percentile-aggregation
+   * @ext_doc_id search-aggregations-metrics-percentile-aggregation
    */
   percentiles?: PercentilesAggregation
   /**
    * A sibling pipeline aggregation which calculates percentiles across all bucket of a specified metric in a sibling aggregation.
-   * @doc_id search-aggregations-pipeline-percentiles-bucket-aggregation
+   * @ext_doc_id search-aggregations-pipeline-percentiles-bucket-aggregation
    */
   percentiles_bucket?: PercentilesBucketAggregation
   /**
    * A multi-bucket value source based aggregation that enables the user to define a set of ranges - each representing a bucket.
-   * @doc_id search-aggregations-bucket-range-aggregation
+   * @ext_doc_id search-aggregations-bucket-range-aggregation
    */
   range?: RangeAggregation
   /**
    * A multi-bucket value source based aggregation which finds "rare" terms — terms that are at the long-tail of the distribution and are not frequent.
-   * @doc_id search-aggregations-bucket-rare-terms-aggregation
+   * @ext_doc_id search-aggregations-bucket-rare-terms-aggregation
    */
   rare_terms?: RareTermsAggregation
   /**
    * Calculates a rate of documents or a field in each bucket.
    * Can only be used inside a `date_histogram` or `composite` aggregation.
-   * @doc_id search-aggregations-metrics-rate-aggregation
+   * @ext_doc_id search-aggregations-metrics-rate-aggregation
    */
   rate?: RateAggregation
   /**
    * A special single bucket aggregation that enables aggregating on parent documents from nested documents.
    * Should only be defined inside a `nested` aggregation.
-   * @doc_id search-aggregations-bucket-reverse-nested-aggregation
+   * @ext_doc_id search-aggregations-bucket-reverse-nested-aggregation
    */
   reverse_nested?: ReverseNestedAggregation
+  /**
+   *
+   * A single bucket aggregation that randomly includes documents in the aggregated results.
+   * Sampling provides significant speed improvement at the cost of accuracy.
+   * @ext_doc_id search-aggregations-random-sampler-aggregation
+   * @availability stack since=8.1.0 stability=experimental
+
+   */
+  random_sampler?: RandomSamplerAggregation
   /**
    * A filtering aggregation used to limit any sub aggregations' processing to a sample of the top-scoring documents.
-   * @doc_id search-aggregations-bucket-sampler-aggregation
+   * @ext_doc_id search-aggregations-bucket-sampler-aggregation
    */
   sampler?: SamplerAggregation
   /**
    * A metric aggregation that uses scripts to provide a metric output.
-   * @doc_id search-aggregations-metrics-scripted-metric-aggregation
+   * @ext_doc_id search-aggregations-metrics-scripted-metric-aggregation
    */
   scripted_metric?: ScriptedMetricAggregation
   /**
    * An aggregation that subtracts values in a time series from themselves at different time lags or periods.
-   * @doc_id search-aggregations-pipeline-serialdiff-aggregation
+   * @ext_doc_id search-aggregations-pipeline-serialdiff-aggregation
    */
   serial_diff?: SerialDifferencingAggregation
   /**
    * Returns interesting or unusual occurrences of terms in a set.
-   * @doc_id search-aggregations-bucket-significantterms-aggregation
+   * @ext_doc_id search-aggregations-bucket-significantterms-aggregation
    */
   significant_terms?: SignificantTermsAggregation
   /**
    * Returns interesting or unusual occurrences of free-text terms in a set.
-   * @doc_id search-aggregations-bucket-significanttext-aggregation
+   * @ext_doc_id search-aggregations-bucket-significanttext-aggregation
    */
   significant_text?: SignificantTextAggregation
   /**
    * A multi-value metrics aggregation that computes stats over numeric values extracted from the aggregated documents.
-   * @doc_id search-aggregations-metrics-stats-aggregation
+   * @ext_doc_id search-aggregations-metrics-stats-aggregation
    */
   stats?: StatsAggregation
   /**
    * A sibling pipeline aggregation which calculates a variety of stats across all bucket of a specified metric in a sibling aggregation.
-   * @doc_id search-aggregations-pipeline-stats-bucket-aggregation
+   * @ext_doc_id search-aggregations-pipeline-stats-bucket-aggregation
    */
   stats_bucket?: StatsBucketAggregation
   /**
    * A multi-value metrics aggregation that computes statistics over string values extracted from the aggregated documents.
-   * @doc_id search-aggregations-metrics-string-stats-aggregation
+   * @ext_doc_id search-aggregations-metrics-string-stats-aggregation
    */
   string_stats?: StringStatsAggregation
   /**
    * A single-value metrics aggregation that sums numeric values that are extracted from the aggregated documents.
-   * @doc_id search-aggregations-metrics-sum-aggregation
+   * @ext_doc_id search-aggregations-metrics-sum-aggregation
    */
   sum?: SumAggregation
   /**
    * A sibling pipeline aggregation which calculates the sum of a specified metric across all buckets in a sibling aggregation.
-   * @doc_id search-aggregations-pipeline-sum-bucket-aggregation
+   * @ext_doc_id search-aggregations-pipeline-sum-bucket-aggregation
    */
   sum_bucket?: SumBucketAggregation
   /**
    * A multi-bucket value source based aggregation where buckets are dynamically built - one per unique value.
-   * @doc_id search-aggregations-bucket-terms-aggregation
+   * @ext_doc_id search-aggregations-bucket-terms-aggregation
    */
   terms?: TermsAggregation
   /**
    * The time series aggregation queries data created using a time series index.
    * This is typically data such as metrics or other data streams with a time component, and requires creating an index using the time series mode.
-   * @doc_id search-aggregations-bucket-time-series-aggregation
+   * @ext_doc_id search-aggregations-bucket-time-series-aggregation
    * @availability stack stability=experimental
    * @availability serverless stability=experimental
    */
   time_series?: TimeSeriesAggregation
   /**
    * A metric aggregation that returns the top matching documents per bucket.
-   * @doc_id search-aggregations-metrics-top-hits-aggregation
+   * @ext_doc_id search-aggregations-metrics-top-hits-aggregation
    */
   top_hits?: TopHitsAggregation
   /**
    * A metrics aggregation that performs a statistical hypothesis test in which the test statistic follows a Student’s t-distribution under the null hypothesis on numeric values extracted from the aggregated documents.
-   * @doc_id search-aggregations-metrics-ttest-aggregation
+   * @ext_doc_id search-aggregations-metrics-ttest-aggregation
    */
   t_test?: TTestAggregation
   /**
    * A metric aggregation that selects metrics from the document with the largest or smallest sort value.
-   * @doc_id search-aggregations-metrics-top-metrics
+   * @ext_doc_id search-aggregations-metrics-top-metrics
    */
   top_metrics?: TopMetricsAggregation
   /**
    * A single-value metrics aggregation that counts the number of values that are extracted from the aggregated documents.
-   * @doc_id search-aggregations-metrics-valuecount-aggregation
+   * @ext_doc_id search-aggregations-metrics-valuecount-aggregation
    */
   value_count?: ValueCountAggregation
   /**
    * A single-value metrics aggregation that computes the weighted average of numeric values that are extracted from the aggregated documents.
-   * @doc_id search-aggregations-metrics-weight-avg-aggregation
+   * @ext_doc_id search-aggregations-metrics-weight-avg-aggregation
    */
   weighted_avg?: WeightedAverageAggregation
   /**
    * A multi-bucket aggregation similar to the histogram, except instead of providing an interval to use as the width of each bucket, a target number of buckets is provided.
-   * @doc_id search-aggregations-bucket-variablewidthhistogram-aggregation
+   * @ext_doc_id search-aggregations-bucket-variablewidthhistogram-aggregation
    */
   variable_width_histogram?: VariableWidthHistogramAggregation
 }
diff --git a/specification/_types/aggregations/bucket.ts b/specification/_types/aggregations/bucket.ts
index d349ce7d2b..88c6238ca9 100644
--- a/specification/_types/aggregations/bucket.ts
+++ b/specification/_types/aggregations/bucket.ts
@@ -69,6 +69,9 @@ export class AdjacencyMatrixAggregation extends BucketAggregationBase {
   separator?: string
 }
 
+/**
+ * @ext_doc_id search-aggregations-bucket-autodatehistogram-aggregation
+ */
 export class AutoDateHistogramAggregation extends BucketAggregationBase {
   /**
    * The target number of buckets.
@@ -124,6 +127,9 @@ export class ChildrenAggregation extends BucketAggregationBase {
 
 export type CompositeAggregateKey = Dictionary<Field, FieldValue>
 
+/**
+ * @ext_doc_id search-aggregations-bucket-composite-aggregation
+ */
 export class CompositeAggregation extends BucketAggregationBase {
   // Must be consistent with CompositeAggregate.after_key
   /**
@@ -324,6 +330,9 @@ export class DateRangeExpression {
   to?: FieldDateMath
 }
 
+/**
+ * @ext_doc_id search-aggregations-bucket-diversified-sampler-aggregation
+ */
 export class DiversifiedSamplerAggregation extends BucketAggregationBase {
   /**
    * The type of value used for de-duplication.
@@ -409,6 +418,9 @@ export class GeoDistanceAggregation extends BucketAggregationBase {
   unit?: DistanceUnit
 }
 
+/**
+ * @ext_doc_id search-aggregations-bucket-geohashgrid-aggregation
+ */
 export class GeoHashGridAggregation extends BucketAggregationBase {
   /**
    * The bounding box to filter the points in each bucket.
@@ -691,6 +703,9 @@ export class AggregationRange {
   to?: double | null
 }
 
+/**
+ * @ext_doc_id search-aggregations-bucket-rare-terms-aggregation
+ */
 export class RareTermsAggregation extends BucketAggregationBase {
   /**
    * Terms that should be excluded from the aggregation.
@@ -731,6 +746,31 @@ export class ReverseNestedAggregation extends BucketAggregationBase {
   path?: Field
 }
 
+/**
+ * @ext_doc_id search-aggregations-random-sampler-aggregation
+ */
+export class RandomSamplerAggregation extends BucketAggregationBase {
+  /**
+   * The probability that a document will be included in the aggregated data.
+   * Must be greater than 0, less than 0.5, or exactly 1.
+   * The lower the probability, the fewer documents are matched.
+   */
+  probability: double
+  /**
+   * The seed to generate the random sampling of documents.
+   * When a seed is provided, the random subset of documents is the same between calls.
+   */
+  seed?: integer
+  /**
+   * When combined with seed, setting shard_seed ensures 100% consistent sampling over shards where data is exactly the same.
+   * @availability stack since=8.14.0
+   */
+  shard_seed?: integer
+}
+
+/**
+ * @ext_doc_id search-aggregations-bucket-sampler-aggregation
+ */
 export class SamplerAggregation extends BucketAggregationBase {
   /**
    * Limits how many top-scoring documents are collected in the sample processed on each shard.
@@ -774,6 +814,9 @@ export class ScriptedHeuristic {
   script: Script
 }
 
+/**
+ * @ext_doc_id search-aggregations-bucket-significanttext-aggregation
+ */
 export class SignificantTermsAggregation extends BucketAggregationBase {
   /**
    * A background filter that can be used to focus in on significant terms within a narrower context, instead of the entire index.
@@ -840,6 +883,9 @@ export class SignificantTermsAggregation extends BucketAggregationBase {
   size?: integer
 }
 
+/**
+ * @ext_doc_id search-aggregations-bucket-significanttext-aggregation
+ */
 export class SignificantTextAggregation extends BucketAggregationBase {
   /**
    * A background filter that can be used to focus in on significant terms within a narrower context, instead of the entire index.
@@ -914,6 +960,9 @@ export class SignificantTextAggregation extends BucketAggregationBase {
   source_fields?: Fields
 }
 
+/**
+ * @ext_doc_id search-aggregations-bucket-terms-aggregation
+ */
 export class TermsAggregation extends BucketAggregationBase {
   /**
    * Determines how child aggregations should be calculated: breadth-first or depth-first.
@@ -981,6 +1030,9 @@ export class TermsAggregation extends BucketAggregationBase {
   format?: string
 }
 
+/**
+ * @ext_doc_id search-aggregations-bucket-time-series-aggregation
+ */
 export class TimeSeriesAggregation extends BucketAggregationBase {
   /**
    * The maximum number of results to return.
@@ -1036,6 +1088,9 @@ export class TermsPartition {
   partition: long
 }
 
+/**
+ * @ext_doc_id search-aggregations-bucket-variablewidthhistogram-aggregation
+ */
 export class VariableWidthHistogramAggregation {
   /**
    * The name of the field.
@@ -1064,6 +1119,7 @@ export class VariableWidthHistogramAggregation {
  * field is re-analyzed using a custom analyzer. The resulting tokens are then categorized
  * creating buckets of similarly formatted text values. This aggregation works best with machine
  * generated text like system logs. Only the first 100 analyzed tokens are used to categorize the text.
+ * @ext_doc_id search-aggregations-bucket-categorize-text-aggregation
  */
 export class CategorizeTextAggregation extends Aggregation {
   /**
@@ -1181,6 +1237,9 @@ export class FrequentItemSetsField {
   include?: TermsInclude
 }
 
+/**
+ * @ext_doc_id search-aggregations-bucket-frequent-item-sets-aggregation
+ */
 export class FrequentItemSetsAggregation {
   /**
    * Fields to analyze.
diff --git a/specification/_types/aggregations/metric.ts b/specification/_types/aggregations/metric.ts
index 5b71de9118..3033bc6785 100644
--- a/specification/_types/aggregations/metric.ts
+++ b/specification/_types/aggregations/metric.ts
@@ -105,6 +105,9 @@ export class ExtendedStatsAggregation extends FormatMetricAggregationBase {
   sigma?: double
 }
 
+/**
+ * @ext_doc_id search-aggregations-metrics-geobounds-aggregation
+ */
 export class GeoBoundsAggregation extends MetricAggregationBase {
   /**
    * Specifies whether the bounding box should be allowed to overlap the international date line.
@@ -161,6 +164,9 @@ export class GeoLinePoint {
 
 export class MaxAggregation extends FormatMetricAggregationBase {}
 
+/**
+ * @ext_doc_id search-aggregations-metrics-median-absolute-deviation-aggregation
+ */
 export class MedianAbsoluteDeviationAggregation extends FormatMetricAggregationBase {
   /**
    * Limits the maximum number of nodes used by the underlying TDigest algorithm to `20 * compression`, enabling control of memory usage and approximation error.
@@ -171,6 +177,9 @@ export class MedianAbsoluteDeviationAggregation extends FormatMetricAggregationB
 
 export class MinAggregation extends FormatMetricAggregationBase {}
 
+/**
+ * @ext_doc_id search-aggregations-metrics-percentile-rank-aggregation
+ */
 export class PercentileRanksAggregation extends FormatMetricAggregationBase {
   /**
    * By default, the aggregation associates a unique string key with each bucket and returns the ranges as a hash rather than an array.
@@ -396,6 +405,9 @@ export class TopHitsAggregation extends MetricAggregationBase {
   seq_no_primary_term?: boolean
 }
 
+/**
+ * @ext_doc_id search-aggregations-metrics-top-metrics
+ */
 export class TopMetricsAggregation extends MetricAggregationBase {
   /**
    * The fields of the top document to return.
diff --git a/specification/_types/aggregations/pipeline.ts b/specification/_types/aggregations/pipeline.ts
index acefaa2b43..92d4df2f17 100644
--- a/specification/_types/aggregations/pipeline.ts
+++ b/specification/_types/aggregations/pipeline.ts
@@ -75,8 +75,14 @@ export enum GapPolicy {
   keep_values
 }
 
+/**
+ * @ext_doc_id search-aggregations-pipeline-avg-bucket-aggregation
+ */
 export class AverageBucketAggregation extends PipelineAggregationBase {}
 
+/**
+ * @ext_doc_id search-aggregations-pipeline-bucket-script-aggregation
+ */
 export class BucketScriptAggregation extends PipelineAggregationBase {
   /**
    * The script to run for this aggregation.
@@ -84,6 +90,9 @@ export class BucketScriptAggregation extends PipelineAggregationBase {
   script?: Script
 }
 
+/**
+ * @ext_doc_id search-aggregations-pipeline-bucket-selector-aggregation
+ */
 export class BucketSelectorAggregation extends PipelineAggregationBase {
   /**
    * The script to run for this aggregation.
@@ -101,6 +110,7 @@ export class BucketSelectorAggregation extends PipelineAggregationBase {
  * of the documents. A natural use case is if the sibling aggregation range aggregation nested in a
  * terms aggregation, in which case one compares the overall distribution of metric to its restriction
  * to each term.
+ * @ext_doc_id search-aggregations-bucket-count-ks-test-aggregation
  */
 export class BucketKsAggregation extends BucketPathAggregation {
   /**
@@ -128,6 +138,7 @@ export class BucketKsAggregation extends BucketPathAggregation {
 
 /**
  * A sibling pipeline aggregation which executes a correlation function on the configured sibling multi-bucket aggregation.
+ * @ext_doc_id search-aggregations-bucket-correlation-aggregation
  */
 export class BucketCorrelationAggregation extends BucketPathAggregation {
   /** The correlation function to execute. */
@@ -166,6 +177,9 @@ export class BucketCorrelationFunctionCountCorrelationIndicator {
   fractions?: double[]
 }
 
+/**
+ * @ext_doc_id search-aggregations-pipeline-bucket-sort-aggregation
+ */
 export class BucketSortAggregation extends Aggregation {
   /**
    * Buckets in positions prior to `from` will be truncated.
@@ -189,8 +203,14 @@ export class BucketSortAggregation extends Aggregation {
   sort?: Sort
 }
 
+/**
+ * @ext_doc_id search-aggregations-pipeline-cumulative-cardinality-aggregation
+ */
 export class CumulativeCardinalityAggregation extends PipelineAggregationBase {}
 
+/**
+ * @ext_doc_id search-aggregations-pipeline-cumulative-sum-aggregation
+ */
 export class CumulativeSumAggregation extends PipelineAggregationBase {}
 
 export class DerivativeAggregation extends PipelineAggregationBase {}
@@ -221,8 +241,14 @@ class InferenceConfigContainer {
   classification?: ClassificationInferenceOptions
 }
 
+/**
+ * @ext_doc_id search-aggregations-pipeline-max-bucket-aggregation
+ */
 export class MaxBucketAggregation extends PipelineAggregationBase {}
 
+/**
+ * @ext_doc_id search-aggregations-pipeline-min-bucket-aggregation
+ */
 export class MinBucketAggregation extends PipelineAggregationBase {}
 
 /** @variants internal tag=model */
@@ -285,6 +311,9 @@ export enum HoltWintersType {
   Multiplicative = 'mult'
 }
 
+/**
+ * @ext_doc_id search-aggregations-pipeline-movfn-aggregation
+ */
 export class MovingFunctionAggregation extends PipelineAggregationBase {
   /**
    * The script that should be executed on each window of data.
@@ -302,6 +331,9 @@ export class MovingFunctionAggregation extends PipelineAggregationBase {
   window?: integer
 }
 
+/**
+ * @ext_doc_id search-aggregations-pipeline-moving-percentiles-aggregation
+ */
 export class MovingPercentilesAggregation extends PipelineAggregationBase {
   /**
    * The size of window to "slide" across the histogram.
@@ -316,6 +348,9 @@ export class MovingPercentilesAggregation extends PipelineAggregationBase {
   keyed?: boolean
 }
 
+/**
+ * @ext_doc_id search-aggregations-pipeline-normalize-aggregation
+ */
 export class NormalizeAggregation extends PipelineAggregationBase {
   /**
    * The specific method to apply.
@@ -351,6 +386,9 @@ export enum NormalizeMethod {
   softmax
 }
 
+/**
+ * @ext_doc_id search-aggregations-pipeline-percentiles-bucket-aggregation
+ */
 export class PercentilesBucketAggregation extends PipelineAggregationBase {
   /**
    * The list of percentiles to calculate.
@@ -358,6 +396,9 @@ export class PercentilesBucketAggregation extends PipelineAggregationBase {
   percents?: double[]
 }
 
+/**
+ * @ext_doc_id search-aggregations-pipeline-serialdiff-aggregation
+ */
 export class SerialDifferencingAggregation extends PipelineAggregationBase {
   /**
    * The historical bucket to subtract from the current value.
@@ -368,4 +409,7 @@ export class SerialDifferencingAggregation extends PipelineAggregationBase {
 
 export class StatsBucketAggregation extends PipelineAggregationBase {}
 
+/**
+ * @ext_doc_id search-aggregations-pipeline-sum-bucket-aggregation
+ */
 export class SumBucketAggregation extends PipelineAggregationBase {}
diff --git a/specification/_types/analysis/char_filters.ts b/specification/_types/analysis/char_filters.ts
index e139070596..0ac9af9810 100644
--- a/specification/_types/analysis/char_filters.ts
+++ b/specification/_types/analysis/char_filters.ts
@@ -25,7 +25,10 @@ export class CharFilterBase {
   version?: VersionString
 }
 
-/** @codegen_names name, definition */
+/**
+ * @codegen_names name, definition
+ * @ext_doc_id analysis-charfilters
+ */
 // ES: NameOrDefinition, used everywhere charfilter, tokenfilter or tokenizer is used
 export type CharFilter = string | CharFilterDefinition
 
diff --git a/specification/_types/analysis/token_filters.ts b/specification/_types/analysis/token_filters.ts
index b812415666..5035e5680b 100644
--- a/specification/_types/analysis/token_filters.ts
+++ b/specification/_types/analysis/token_filters.ts
@@ -232,7 +232,7 @@ export class KeepWordsTokenFilter extends TokenFilterBase {
 export class KeywordMarkerTokenFilter extends TokenFilterBase {
   type: 'keyword_marker'
   ignore_case?: boolean
-  keywords?: string[]
+  keywords?: string | string[]
   keywords_path?: string
   keywords_pattern?: string
 }
@@ -342,7 +342,10 @@ export class UppercaseTokenFilter extends TokenFilterBase {
   type: 'uppercase'
 }
 
-/** @codegen_names name, definition */
+/**
+ * @codegen_names name, definition
+ * @ext_doc_id analysis-tokenfilters
+ */
 // ES: NameOrDefinition, used everywhere charfilter, tokenfilter or tokenizer is used
 export type TokenFilter = string | TokenFilterDefinition
 
diff --git a/specification/_types/analysis/tokenizers.ts b/specification/_types/analysis/tokenizers.ts
index 38308bcbee..2d520ad425 100644
--- a/specification/_types/analysis/tokenizers.ts
+++ b/specification/_types/analysis/tokenizers.ts
@@ -48,8 +48,8 @@ export class ClassicTokenizer extends TokenizerBase {
 export class EdgeNGramTokenizer extends TokenizerBase {
   type: 'edge_ngram'
   custom_token_chars?: string
-  max_gram: integer
-  min_gram: integer
+  max_gram?: integer
+  min_gram?: integer
   /**
    * @server_default []
    */
@@ -67,7 +67,10 @@ export enum TokenChar {
 
 export class KeywordTokenizer extends TokenizerBase {
   type: 'keyword'
-  buffer_size: integer
+  /**
+   * @server_default 256
+   */
+  buffer_size?: integer
 }
 
 export class LetterTokenizer extends TokenizerBase {
@@ -81,8 +84,8 @@ export class LowercaseTokenizer extends TokenizerBase {
 export class NGramTokenizer extends TokenizerBase {
   type: 'ngram'
   custom_token_chars?: string
-  max_gram: integer
-  min_gram: integer
+  max_gram?: integer
+  min_gram?: integer
   /**
    * @server_default []
    */
@@ -134,7 +137,10 @@ export class WhitespaceTokenizer extends TokenizerBase {
   max_token_length?: integer
 }
 
-/** @codegen_names name, definition */
+/**
+ * @codegen_names name, definition
+ * @ext_doc_id analysis-tokenizers
+ */
 // ES: NameOrDefinition, used everywhere charfilter, tokenfilter or tokenizer is used
 export type Tokenizer = string | TokenizerDefinition
 
diff --git a/specification/_types/mapping/core.ts b/specification/_types/mapping/core.ts
index 6653e212d3..985c7f8e2b 100644
--- a/specification/_types/mapping/core.ts
+++ b/specification/_types/mapping/core.ts
@@ -44,7 +44,6 @@ import { TimeSeriesMetricType } from './TimeSeriesMetricType'
 
 export class CorePropertyBase extends PropertyBase {
   copy_to?: Fields
-  similarity?: string
   store?: boolean
 }
 
@@ -61,6 +60,15 @@ export class BooleanProperty extends DocValuesPropertyBase {
   fielddata?: NumericFielddata
   index?: boolean
   null_value?: boolean
+  ignore_malformed?: boolean
+  script?: Script
+  on_script_error?: OnScriptError
+  /**
+   * For internal use by Elastic only. Marks the field as a time series dimension. Defaults to false.
+   * @availability stack stability=experimental
+   * @availability serverless stability=experimental
+   */
+  time_series_dimension?: boolean
   type: 'boolean'
 }
 
@@ -102,6 +110,7 @@ export class KeywordProperty extends DocValuesPropertyBase {
   normalizer?: string
   norms?: boolean
   null_value?: string
+  similarity?: string | null
   split_queries_on_whitespace?: boolean
   /**
    * For internal use by Elastic only. Marks the field as a time series dimension. Defaults to false.
@@ -217,6 +226,7 @@ export class SearchAsYouTypeProperty extends CorePropertyBase {
   norms?: boolean
   search_analyzer?: string
   search_quote_analyzer?: string
+  similarity?: string | null
   term_vector?: TermVectorOption
   type: 'search_as_you_type'
 }
@@ -275,11 +285,12 @@ export class TextProperty extends CorePropertyBase {
   index?: boolean
   index_options?: IndexOptions
   index_phrases?: boolean
-  index_prefixes?: TextIndexPrefixes
+  index_prefixes?: TextIndexPrefixes | null
   norms?: boolean
   position_increment_gap?: integer
   search_analyzer?: string
   search_quote_analyzer?: string
+  similarity?: string | null
   term_vector?: TermVectorOption
   type: 'text'
 }
@@ -317,7 +328,7 @@ export class DynamicProperty extends DocValuesPropertyBase {
   index?: boolean
   index_options?: IndexOptions
   index_phrases?: boolean
-  index_prefixes?: TextIndexPrefixes
+  index_prefixes?: TextIndexPrefixes | null
   norms?: boolean
   position_increment_gap?: integer
   search_analyzer?: string
diff --git a/specification/_types/query_dsl/MatchAllQuery.ts b/specification/_types/query_dsl/MatchAllQuery.ts
index b7a8a77a8c..49152d21d7 100644
--- a/specification/_types/query_dsl/MatchAllQuery.ts
+++ b/specification/_types/query_dsl/MatchAllQuery.ts
@@ -19,4 +19,7 @@
 
 import { QueryBase } from './abstractions'
 
+/**
+ * @ext_doc_id query-dsl-match-all-query
+ */
 export class MatchAllQuery extends QueryBase {}
diff --git a/specification/_types/query_dsl/MatchNoneQuery.ts b/specification/_types/query_dsl/MatchNoneQuery.ts
index 90e4721e62..8ab48ca1a2 100644
--- a/specification/_types/query_dsl/MatchNoneQuery.ts
+++ b/specification/_types/query_dsl/MatchNoneQuery.ts
@@ -19,4 +19,7 @@
 
 import { QueryBase } from './abstractions'
 
+/**
+ * @ext_doc_id query-dsl-match-none-query
+ */
 export class MatchNoneQuery extends QueryBase {}
diff --git a/specification/_types/query_dsl/SemanticQuery.ts b/specification/_types/query_dsl/SemanticQuery.ts
index 0ae32c644b..0f4cfb7954 100644
--- a/specification/_types/query_dsl/SemanticQuery.ts
+++ b/specification/_types/query_dsl/SemanticQuery.ts
@@ -19,6 +19,9 @@
 
 import { QueryBase } from './abstractions'
 
+/**
+ * @ext_doc_id query-dsl-semantic-query
+ */
 export class SemanticQuery extends QueryBase {
   /** The field to query, which must be a semantic_text field type */
   field: string
diff --git a/specification/_types/query_dsl/SparseVectorQuery.ts b/specification/_types/query_dsl/SparseVectorQuery.ts
index ea57fb6ccc..be8630ac74 100644
--- a/specification/_types/query_dsl/SparseVectorQuery.ts
+++ b/specification/_types/query_dsl/SparseVectorQuery.ts
@@ -25,6 +25,7 @@ import { TokenPruningConfig } from './TokenPruningConfig'
 
 /**
  * @variants container
+ * @ext_doc_id query-dsl-sparse-vector-query
  */
 export class SparseVectorQuery extends QueryBase {
   /**
diff --git a/specification/_types/query_dsl/TextExpansionQuery.ts b/specification/_types/query_dsl/TextExpansionQuery.ts
index 674ec9ba04..238c079349 100644
--- a/specification/_types/query_dsl/TextExpansionQuery.ts
+++ b/specification/_types/query_dsl/TextExpansionQuery.ts
@@ -20,6 +20,9 @@
 import { QueryBase } from './abstractions'
 import { TokenPruningConfig } from './TokenPruningConfig'
 
+/**
+ * @ext_doc_id query-dsl-text-expansion-query
+ */
 export class TextExpansionQuery extends QueryBase {
   /** The text expansion NLP model to use */
   model_id: string
diff --git a/specification/_types/query_dsl/WeightedTokensQuery.ts b/specification/_types/query_dsl/WeightedTokensQuery.ts
index 927780c6b3..1dabf656a4 100644
--- a/specification/_types/query_dsl/WeightedTokensQuery.ts
+++ b/specification/_types/query_dsl/WeightedTokensQuery.ts
@@ -22,6 +22,9 @@ import { float } from '@_types/Numeric'
 import { QueryBase } from './abstractions'
 import { TokenPruningConfig } from './TokenPruningConfig'
 
+/**
+ * @ext_doc_id query-dsl-weighted-tokens-query
+ */
 export class WeightedTokensQuery extends QueryBase {
   /** The tokens representing this query */
   tokens: Dictionary<string, float>
diff --git a/specification/_types/query_dsl/abstractions.ts b/specification/_types/query_dsl/abstractions.ts
index 713854c23b..b5c7834bff 100644
--- a/specification/_types/query_dsl/abstractions.ts
+++ b/specification/_types/query_dsl/abstractions.ts
@@ -48,6 +48,7 @@ import {
 import {
   GeoBoundingBoxQuery,
   GeoDistanceQuery,
+  GeoGridQuery,
   GeoPolygonQuery,
   GeoShapeQuery
 } from './geo'
@@ -102,208 +103,213 @@ import { WeightedTokensQuery } from './WeightedTokensQuery'
 /**
  * @variants container
  * @non_exhaustive
- * @doc_id query-dsl
+ * @ext_doc_id query-dsl
  */
 export class QueryContainer {
   /**
    * matches documents matching boolean combinations of other queries.
-   * @doc_id query-dsl-bool-query
+   * @ext_doc_id query-dsl-bool-query
    */
   bool?: BoolQuery
   /**
    * Returns documents matching a `positive` query while reducing the relevance score of documents that also match a `negative` query.
-   * @doc_id query-dsl-boosting-query
+   * @ext_doc_id query-dsl-boosting-query
    */
   boosting?: BoostingQuery
   /** @deprecated 7.3.0 */
   common?: SingleKeyDictionary<Field, CommonTermsQuery>
   /**
    * The `combined_fields` query supports searching multiple text fields as if their contents had been indexed into one combined field.
-   * @doc_id query-dsl-combined-fields-query
+   * @ext_doc_id query-dsl-combined-fields-query
    * @availability stack since=7.13.0
    * @availability serverless
    */
   combined_fields?: CombinedFieldsQuery
   /**
    * Wraps a filter query and returns every matching document with a relevance score equal to the `boost` parameter value.
-   * @doc_id query-dsl-constant-score-query
+   * @ext_doc_id query-dsl-constant-score-query
    */
   constant_score?: ConstantScoreQuery
   /**
    * Returns documents matching one or more wrapped queries, called query clauses or clauses.
    * If a returned document matches multiple query clauses, the `dis_max` query assigns the document the highest relevance score from any matching clause, plus a tie breaking increment for any additional matching subqueries.
-   * @doc_id query-dsl-dis-max-query
+   * @ext_doc_id query-dsl-dis-max-query
    */
   dis_max?: DisMaxQuery
   /**
    * Boosts the relevance score of documents closer to a provided origin date or point.
    * For example, you can use this query to give more weight to documents closer to a certain date or location.
-   * @doc_id query-dsl-distance-feature-query
+   * @ext_doc_id query-dsl-distance-feature-query
    */
   distance_feature?: DistanceFeatureQuery
   /**
    * Returns documents that contain an indexed value for a field.
-   * @doc_id query-dsl-exists-query
+   * @ext_doc_id query-dsl-exists-query
    */
   exists?: ExistsQuery
   /**
    * The `function_score` enables you to modify the score of documents that are retrieved by a query.
-   * @doc_id query-dsl-function-score-query
+   * @ext_doc_id query-dsl-function-score-query
    */
   function_score?: FunctionScoreQuery
   /**
    * Returns documents that contain terms similar to the search term, as measured by a Levenshtein edit distance.
-   * @doc_id query-dsl-fuzzy-query
+   * @ext_doc_id query-dsl-fuzzy-query
    */
   fuzzy?: SingleKeyDictionary<Field, FuzzyQuery>
   /**
    * Matches geo_point and geo_shape values that intersect a bounding box.
-   * @doc_id query-dsl-geo-bounding-box-query
+   * @ext_doc_id query-dsl-geo-bounding-box-query
    */
   geo_bounding_box?: GeoBoundingBoxQuery
   /**
    * Matches `geo_point` and `geo_shape` values within a given distance of a geopoint.
-   * @doc_id query-dsl-geo-distance-query
+   * @ext_doc_id query-dsl-geo-distance-query
    */
   geo_distance?: GeoDistanceQuery
+
+  /**
+   * Matches `geo_point` and `geo_shape` values that intersect a grid cell from a GeoGrid aggregation.
+   */
+  geo_grid?: SingleKeyDictionary<Field, GeoGridQuery>
   /**
    * @deprecated 7.12.0 Use geo-shape instead.
    */
   geo_polygon?: GeoPolygonQuery
   /**
    * Filter documents indexed using either the `geo_shape` or the `geo_point` type.
-   * @doc_id query-dsl-geo-shape-query
+   * @ext_doc_id query-dsl-geo-shape-query
    */
   geo_shape?: GeoShapeQuery
   /**
    * Returns parent documents whose joined child documents match a provided query.
-   * @doc_id query-dsl-has-child-query
+   * @ext_doc_id query-dsl-has-child-query
    */
   has_child?: HasChildQuery
   /**
    * Returns child documents whose joined parent document matches a provided query.
-   * @doc_id query-dsl-has-parent-query
+   * @ext_doc_id query-dsl-has-parent-query
    */
   has_parent?: HasParentQuery
   /**
    * Returns documents based on their IDs.
    * This query uses document IDs stored in the `_id` field.
-   * @doc_id query-dsl-ids-query
+   * @ext_doc_id query-dsl-ids-query
    */
   ids?: IdsQuery
   /**
    * Returns documents based on the order and proximity of matching terms.
-   * @doc_id query-dsl-intervals-query
+   * @ext_doc_id query-dsl-intervals-query
    */
   intervals?: SingleKeyDictionary<Field, IntervalsQuery>
   /**
    * Finds the k nearest vectors to a query vector, as measured by a similarity
    * metric. knn query finds nearest vectors through approximate search on indexed
    * dense_vectors.
-   * @doc_id query-dsl-knn-query
+   * @ext_doc_id query-dsl-knn-query
    */
   knn?: KnnQuery
   /**
    * Returns documents that match a provided text, number, date or boolean value.
    * The provided text is analyzed before matching.
-   * @doc_id query-dsl-match-query
+   * @ext_doc_id query-dsl-match-query
    */
   match?: SingleKeyDictionary<Field, MatchQuery>
   /**
    * Matches all documents, giving them all a `_score` of 1.0.
-   * @doc_id query-dsl-match-all-query
+   * @ext_doc_id query-dsl-match-all-query
    */
   match_all?: MatchAllQuery
   /**
    * Analyzes its input and constructs a `bool` query from the terms.
    * Each term except the last is used in a `term` query.
    * The last term is used in a prefix query.
-   * @doc_id query-dsl-match-bool-prefix-query
+   * @ext_doc_id query-dsl-match-bool-prefix-query
    */
   match_bool_prefix?: SingleKeyDictionary<Field, MatchBoolPrefixQuery>
   /**
    * Matches no documents.
-   * @doc_id query-dsl-match-none-query
+   * @ext_doc_id query-dsl-match-none-query
    */
   match_none?: MatchNoneQuery
   /**
    * Analyzes the text and creates a phrase query out of the analyzed text.
-   * @doc_id query-dsl-match-query-phrase
+   * @ext_doc_id query-dsl-match-query-phrase
    */
   match_phrase?: SingleKeyDictionary<Field, MatchPhraseQuery>
   /**
    * Returns documents that contain the words of a provided text, in the same order as provided.
    * The last term of the provided text is treated as a prefix, matching any words that begin with that term.
-   * @doc_id query-dsl-match-query-phrase-prefix
+   * @ext_doc_id query-dsl-match-query-phrase-prefix
    */
   match_phrase_prefix?: SingleKeyDictionary<Field, MatchPhrasePrefixQuery>
   /**
    * Returns documents that are "like" a given set of documents.
-   * @doc_id query-dsl-mlt-query
+   * @ext_doc_id query-dsl-mlt-query
    */
   more_like_this?: MoreLikeThisQuery
   /**
    * Enables you to search for a provided text, number, date or boolean value across multiple fields.
    * The provided text is analyzed before matching.
-   * @doc_id query-dsl-multi-match-query
+   * @ext_doc_id query-dsl-multi-match-query
    */
   multi_match?: MultiMatchQuery
   /**
    * Wraps another query to search nested fields.
    * If an object matches the search, the nested query returns the root parent document.
-   * @doc_id query-dsl-nested-query
+   * @ext_doc_id query-dsl-nested-query
    */
   nested?: NestedQuery
   /**
    * Returns child documents joined to a specific parent document.
-   * @doc_id query-dsl-parent-id-query
+   * @ext_doc_id query-dsl-parent-id-query
    */
   parent_id?: ParentIdQuery
   /**
    * Matches queries stored in an index.
-   * @doc_id query-dsl-percolate-query
+   * @ext_doc_id query-dsl-percolate-query
    */
   percolate?: PercolateQuery
   /**
    * Promotes selected documents to rank higher than those matching a given query.
-   * @doc_id query-dsl-pinned-query
+   * @ext_doc_id query-dsl-pinned-query
    */
   pinned?: PinnedQuery
   /**
    * Returns documents that contain a specific prefix in a provided field.
-   * @doc_id query-dsl-prefix-query
+   * @ext_doc_id query-dsl-prefix-query
    */
   prefix?: SingleKeyDictionary<Field, PrefixQuery>
   /**
    * Returns documents based on a provided query string, using a parser with a strict syntax.
-   * @doc_id query-dsl-query-string-query
+   * @ext_doc_id query-dsl-query-string-query
    */
   query_string?: QueryStringQuery
   /**
    * Returns documents that contain terms within a provided range.
-   * @doc_id query-dsl-range-query
+   * @ext_doc_id query-dsl-range-query
    */
   range?: SingleKeyDictionary<Field, RangeQuery>
   /**
    * Boosts the relevance score of documents based on the numeric value of a `rank_feature` or `rank_features` field.
-   * @doc_id query-dsl-rank-feature-query
+   * @ext_doc_id query-dsl-rank-feature-query
    */
   rank_feature?: RankFeatureQuery
   /**
    * Returns documents that contain terms matching a regular expression.
-   * @doc_id query-dsl-regexp-query
+   * @ext_doc_id query-dsl-regexp-query
    */
   regexp?: SingleKeyDictionary<Field, RegexpQuery>
   rule?: RuleQuery
   /**
    * Filters documents based on a provided script.
    * The script query is typically used in a filter context.
-   * @doc_id query-dsl-script-query
+   * @ext_doc_id query-dsl-script-query
    */
   script?: ScriptQuery
   /**
    * Uses a script to provide a custom score for returned documents.
-   * @doc_id query-dsl-script-score-query
+   * @ext_doc_id query-dsl-script-score-query
    */
   script_score?: ScriptScoreQuery
   /**
@@ -314,90 +320,90 @@ export class QueryContainer {
   semantic?: SemanticQuery
   /**
    * Queries documents that contain fields indexed using the `shape` type.
-   * @doc_id query-dsl-shape-query
+   * @ext_doc_id query-dsl-shape-query
    */
   shape?: ShapeQuery
   /**
    * Returns documents based on a provided query string, using a parser with a limited but fault-tolerant syntax.
-   * @doc_id query-dsl-simple-query-string-query
+   * @ext_doc_id query-dsl-simple-query-string-query
    */
   simple_query_string?: SimpleQueryStringQuery
   /**
    * Returns matches which enclose another span query.
-   * @doc_id query-dsl-span-containing-query
+   * @ext_doc_id query-dsl-span-containing-query
    */
   span_containing?: SpanContainingQuery
   /**
    * Wrapper to allow span queries to participate in composite single-field span queries by _lying_ about their search field.
-   * @doc_id query-dsl-span-field-masking-query
+   * @ext_doc_id query-dsl-span-field-masking-query
    */
   span_field_masking?: SpanFieldMaskingQuery
   /**
    * Matches spans near the beginning of a field.
-   * @doc_id query-dsl-span-first-query
+   * @ext_doc_id query-dsl-span-first-query
    */
   span_first?: SpanFirstQuery
   /**
    * Allows you to wrap a multi term query (one of `wildcard`, `fuzzy`, `prefix`, `range`, or `regexp` query) as a `span` query, so it can be nested.
-   * @doc_id query-dsl-span-multi-term-query
+   * @ext_doc_id query-dsl-span-multi-term-query
    */
   span_multi?: SpanMultiTermQuery
   /**
    * Matches spans which are near one another.
    * You can specify `slop`, the maximum number of intervening unmatched positions, as well as whether matches are required to be in-order.
-   * @doc_id query-dsl-span-near-query
+   * @ext_doc_id query-dsl-span-near-query
    */
   span_near?: SpanNearQuery
   /**
    * Removes matches which overlap with another span query or which are within x tokens before (controlled by the parameter `pre`) or y tokens after (controlled by the parameter `post`) another span query.
-   * @doc_id query-dsl-span-not-query
+   * @ext_doc_id query-dsl-span-not-query
    */
   span_not?: SpanNotQuery
   /**
    * Matches the union of its span clauses.
-   * @doc_id query-dsl-span-or-query
+   * @ext_doc_id query-dsl-span-or-query
    */
   span_or?: SpanOrQuery
   /**
    * Matches spans containing a term.
-   * @doc_id query-dsl-span-term-query
+   * @ext_doc_id query-dsl-span-term-query
    */
   span_term?: SingleKeyDictionary<Field, SpanTermQuery>
   /**
    * Returns matches which are enclosed inside another span query.
-   * @doc_id query-dsl-span-within-query
+   * @ext_doc_id query-dsl-span-within-query
    */
   span_within?: SpanWithinQuery
   /**
    * Using input query vectors or a natural language processing model to convert a query into a list of token-weight pairs, queries against a sparse vector field.
    * @availability stack since=8.15.0
    * @availability serverless
-   * @doc_id query-dsl-sparse-vector-query
+   * @ext_doc_id query-dsl-sparse-vector-query
    */
   sparse_vector?: SparseVectorQuery
   /**
    * Returns documents that contain an exact term in a provided field.
    * To return a document, the query term must exactly match the queried field's value, including whitespace and capitalization.
-   * @doc_id query-dsl-term-query
+   * @ext_doc_id query-dsl-term-query
    */
   term?: SingleKeyDictionary<Field, TermQuery>
   /**
    * Returns documents that contain one or more exact terms in a provided field.
    * To return a document, one or more terms must exactly match a field value, including whitespace and capitalization.
-   * @doc_id query-dsl-terms-query
+   * @ext_doc_id query-dsl-terms-query
    */
   terms?: TermsQuery
   /**
    * Returns documents that contain a minimum number of exact terms in a provided field.
    * To return a document, a required number of terms must exactly match the field values, including whitespace and capitalization.
-   * @doc_id query-dsl-terms-set-query
+   * @ext_doc_id query-dsl-terms-set-query
    */
   terms_set?: SingleKeyDictionary<Field, TermsSetQuery>
   /**
    * Uses a natural language processing model to convert the query text into a list of token-weight pairs which are then used in a query against a sparse vector or rank features field.
    * @availability stack since=8.8.0
    * @availability serverless
-   * @doc_id query-dsl-text-expansion-query
+   * @ext_doc_id query-dsl-text-expansion-query
    * @deprecated 8.15.0
    */
   text_expansion?: SingleKeyDictionary<Field, TextExpansionQuery>
@@ -405,18 +411,18 @@ export class QueryContainer {
    * Supports returning text_expansion query results by sending in precomputed tokens with the query.
    * @availability stack since=8.13.0
    * @availability serverless
-   * @doc_id query-dsl-weighted-tokens-query
+   * @ext_doc_id query-dsl-weighted-tokens-query
    * @deprecated 8.15.0
    */
   weighted_tokens?: SingleKeyDictionary<Field, WeightedTokensQuery>
   /**
    * Returns documents that contain terms matching a wildcard pattern.
-   * @doc_id query-dsl-wildcard-query
+   * @ext_doc_id query-dsl-wildcard-query
    */
   wildcard?: SingleKeyDictionary<Field, WildcardQuery>
   /**
    * A query that accepts any other query as base64 encoded string.
-   * @doc_id query-dsl-wrapper-query
+   * @ext_doc_id query-dsl-wrapper-query
    */
   wrapper?: WrapperQuery
 
@@ -487,7 +493,7 @@ export class CombinedFieldsQuery extends QueryBase {
 
   /**
    * Minimum number of clauses that must match for a document to be returned.
-   * @doc_id query-dsl-minimum-should-match
+   * @ext_doc_id query-dsl-minimum-should-match
    */
   minimum_should_match?: MinimumShouldMatch
 
@@ -498,6 +504,9 @@ export class CombinedFieldsQuery extends QueryBase {
   zero_terms_query?: CombinedFieldsZeroTerms
 }
 
+/**
+ * @ext_doc_id query-dsl-wrapper-query
+ */
 export class WrapperQuery extends QueryBase {
   /**
    * A base64 encoded query.
diff --git a/specification/_types/query_dsl/compound.ts b/specification/_types/query_dsl/compound.ts
index 9fcc8906aa..6a634ea059 100644
--- a/specification/_types/query_dsl/compound.ts
+++ b/specification/_types/query_dsl/compound.ts
@@ -26,6 +26,9 @@ import { Script } from '@_types/Scripting'
 import { DateMath, Duration } from '@_types/Time'
 import { QueryBase, QueryContainer } from './abstractions'
 
+/**
+ * @ext_doc_id query-dsl-bool-query
+ */
 export class BoolQuery extends QueryBase {
   /**
    * The clause (query) must appear in matching documents.
@@ -52,6 +55,9 @@ export class BoolQuery extends QueryBase {
   should?: QueryContainer | QueryContainer[]
 }
 
+/**
+ * @ext_doc_id query-dsl-boosting-query
+ */
 export class BoostingQuery extends QueryBase {
   /**
    * Floating point number between 0 and 1.0 used to decrease the relevance scores of documents matching the `negative` query.
@@ -67,6 +73,9 @@ export class BoostingQuery extends QueryBase {
   positive: QueryContainer
 }
 
+/**
+ * @ext_doc_id query-dsl-constant-score-query
+ */
 export class ConstantScoreQuery extends QueryBase {
   /**
    * Filter query you wish to run. Any returned documents must match this query.
@@ -76,6 +85,9 @@ export class ConstantScoreQuery extends QueryBase {
   filter: QueryContainer
 }
 
+/**
+ * @ext_doc_id query-dsl-dis-max-query
+ */
 export class DisMaxQuery extends QueryBase {
   /**
    * One or more query clauses.
@@ -92,6 +104,7 @@ export class DisMaxQuery extends QueryBase {
 
 /**
  * @shortcut_property functions
+ * @ext_doc_id query-dsl-function-score-query
  */
 export class FunctionScoreQuery extends QueryBase {
   /**
diff --git a/specification/_types/query_dsl/fulltext.ts b/specification/_types/query_dsl/fulltext.ts
index eff60ea4c9..a03ff6ed38 100644
--- a/specification/_types/query_dsl/fulltext.ts
+++ b/specification/_types/query_dsl/fulltext.ts
@@ -232,7 +232,10 @@ export class IntervalsPrefix {
   use_field?: Field
 }
 
-/** @variants container */
+/**
+ * @variants container
+ * @ext_doc_id query-dsl-intervals-query
+ */
 // Note: similar to IntervalsContainer, but has to be duplicated because of the QueryBase parent class
 export class IntervalsQuery extends QueryBase {
   /**
@@ -279,7 +282,10 @@ export class IntervalsWildcard {
   use_field?: Field
 }
 
-/** @shortcut_property query */
+/**
+ * @shortcut_property query
+ * @ext_doc_id query-dsl-match-query
+ */
 export class MatchQuery extends QueryBase {
   /**
    * Analyzer used to convert the text in the query value into tokens.
@@ -346,7 +352,10 @@ export class MatchQuery extends QueryBase {
   zero_terms_query?: ZeroTermsQuery
 }
 
-/** @shortcut_property query */
+/**
+ * @shortcut_property query
+ * @ext_doc_id query-dsl-match-bool-prefix-query
+ */
 export class MatchBoolPrefixQuery extends QueryBase {
   /**
    * Analyzer used to convert the text in the query value into tokens.
@@ -402,7 +411,10 @@ export class MatchBoolPrefixQuery extends QueryBase {
   query: string
 }
 
-/** @shortcut_property query */
+/**
+ * @shortcut_property query
+ * @ext_doc_id query-dsl-match-query-phrase
+ */
 export class MatchPhraseQuery extends QueryBase {
   /**
    * Analyzer used to convert the text in the query value into tokens.
@@ -425,7 +437,10 @@ export class MatchPhraseQuery extends QueryBase {
   zero_terms_query?: ZeroTermsQuery
 }
 
-/** @shortcut_property query */
+/**
+ * @shortcut_property query
+ * @ext_doc_id query-dsl-match-query-phrase-prefix
+ */
 export class MatchPhrasePrefixQuery extends QueryBase {
   /**
    * Analyzer used to convert text in the query value into tokens.
@@ -453,6 +468,9 @@ export class MatchPhrasePrefixQuery extends QueryBase {
   zero_terms_query?: ZeroTermsQuery
 }
 
+/**
+ * @ext_doc_id query-dsl-multi-match-query
+ */
 export class MultiMatchQuery extends QueryBase {
   /**
    * Analyzer used to convert the text in the query value into tokens.
@@ -577,6 +595,9 @@ export enum ZeroTermsQuery {
   none
 }
 
+/**
+ * @ext_doc_id query-dsl-query-string-query
+ */
 export class QueryStringQuery extends QueryBase {
   /**
    * If `true`, the wildcard characters `*` and `?` are allowed as the first character of the query string.
@@ -762,6 +783,9 @@ export enum SimpleQueryStringFlag {
   ALL
 }
 
+/**
+ * @ext_doc_id query-dsl-simple-query-string-query
+ */
 export class SimpleQueryStringQuery extends QueryBase {
   /**
    * Analyzer used to convert text in the query string into tokens.
diff --git a/specification/_types/query_dsl/geo.ts b/specification/_types/query_dsl/geo.ts
index 941a48e0f9..d73e6327e3 100644
--- a/specification/_types/query_dsl/geo.ts
+++ b/specification/_types/query_dsl/geo.ts
@@ -23,14 +23,18 @@ import {
   Distance,
   GeoBounds,
   GeoDistanceType,
+  GeoHash,
+  GeoHexCell,
   GeoLocation,
   GeoShape,
-  GeoShapeRelation
+  GeoShapeRelation,
+  GeoTile
 } from '@_types/Geo'
 import { FieldLookup, QueryBase } from './abstractions'
 
 /**
  * @behavior_meta AdditionalProperty key=field value=bounding_box
+ * @ext_doc_id query-dsl-geo-bounding-box-query
  */
 export class GeoBoundingBoxQuery
   extends QueryBase
@@ -59,6 +63,7 @@ export enum GeoExecution {
 
 /**
  * @behavior_meta AdditionalProperty key=field value=location
+ * @ext_doc_id query-dsl-geo-distance-query
  */
 export class GeoDistanceQuery
   extends QueryBase
@@ -90,6 +95,13 @@ export class GeoDistanceQuery
   ignore_unmapped?: boolean
 }
 
+/** @variants container */
+export class GeoGridQuery extends QueryBase {
+  geogrid?: GeoTile
+  geohash?: GeoHash
+  geohex?: GeoHexCell
+}
+
 export class GeoPolygonPoints {
   points: GeoLocation[]
 }
@@ -97,6 +109,7 @@ export class GeoPolygonPoints {
 /**
  * @deprecated 7.12.0 Use geo-shape instead.
  * @behavior_meta AdditionalProperty key=field value=polygon
+ * @ext_doc_id query-dsl-geo-polygon-query
  */
 export class GeoPolygonQuery
   extends QueryBase
@@ -127,6 +140,7 @@ export class GeoShapeFieldQuery {
 
 /**
  * @behavior_meta AdditionalProperty key=field value=shape
+ * @ext_doc_id query-dsl-geo-shape-query
  */
 // GeoShape query doesn't follow the common pattern of having a single field-name property
 // holding also the query base fields (boost and _name)
diff --git a/specification/_types/query_dsl/joining.ts b/specification/_types/query_dsl/joining.ts
index d5454b6559..d9789691ff 100644
--- a/specification/_types/query_dsl/joining.ts
+++ b/specification/_types/query_dsl/joining.ts
@@ -38,6 +38,9 @@ export enum ChildScoreMode {
   min
 }
 
+/**
+ * @ext_doc_id query-dsl-has-child-query
+ */
 export class HasChildQuery extends QueryBase {
   /**
    * Indicates whether to ignore an unmapped `type` and not return any documents instead of an error.
@@ -75,6 +78,9 @@ export class HasChildQuery extends QueryBase {
   type: RelationName
 }
 
+/**
+ * @ext_doc_id query-dsl-has-parent-query
+ */
 export class HasParentQuery extends QueryBase {
   /**
    * Indicates whether to ignore an unmapped `parent_type` and not return any documents instead of an error.
@@ -103,6 +109,9 @@ export class HasParentQuery extends QueryBase {
   score?: boolean
 }
 
+/**
+ * @ext_doc_id query-dsl-nested-query
+ */
 export class NestedQuery extends QueryBase {
   /**
    * Indicates whether to ignore an unmapped path and not return any documents instead of an error.
@@ -129,6 +138,9 @@ export class NestedQuery extends QueryBase {
   score_mode?: ChildScoreMode
 }
 
+/**
+ * @ext_doc_id query-dsl-parent-id-query
+ */
 export class ParentIdQuery extends QueryBase {
   /**
    * ID of the parent document.
diff --git a/specification/_types/query_dsl/span.ts b/specification/_types/query_dsl/span.ts
index 38bc90dbbf..1ca61e1ed2 100644
--- a/specification/_types/query_dsl/span.ts
+++ b/specification/_types/query_dsl/span.ts
@@ -22,6 +22,9 @@ import { Field } from '@_types/common'
 import { integer } from '@_types/Numeric'
 import { QueryBase, QueryContainer } from './abstractions'
 
+/**
+ * @ext_doc_id query-dsl-span-containing-query
+ */
 export class SpanContainingQuery extends QueryBase {
   /**
    * Can be any span query.
@@ -35,11 +38,17 @@ export class SpanContainingQuery extends QueryBase {
   little: SpanQuery
 }
 
+/**
+ * @ext_doc_id query-dsl-span-field-masking-query
+ */
 export class SpanFieldMaskingQuery extends QueryBase {
   field: Field
   query: SpanQuery
 }
 
+/**
+ * @ext_doc_id query-dsl-span-first-query
+ */
 export class SpanFirstQuery extends QueryBase {
   /**
    * Controls the maximum end position permitted in a match.
@@ -55,6 +64,9 @@ export class SpanFirstQuery extends QueryBase {
 // The integer value is the span width
 export type SpanGapQuery = SingleKeyDictionary<Field, integer>
 
+/**
+ * @ext_doc_id query-dsl-span-multi-term-query
+ */
 export class SpanMultiTermQuery extends QueryBase {
   /**
    * Should be a multi term query (one of `wildcard`, `fuzzy`, `prefix`, `range`, or `regexp` query).
@@ -62,6 +74,9 @@ export class SpanMultiTermQuery extends QueryBase {
   match: QueryContainer
 }
 
+/**
+ * @ext_doc_id query-dsl-span-near-query
+ */
 export class SpanNearQuery extends QueryBase {
   /**
    * Array of one or more other span type queries.
@@ -77,6 +92,9 @@ export class SpanNearQuery extends QueryBase {
   slop?: integer
 }
 
+/**
+ * @ext_doc_id query-dsl-span-not-query
+ */
 export class SpanNotQuery extends QueryBase {
   /**
    * The number of tokens from within the include span that can’t have overlap with the exclude span.
@@ -103,6 +121,9 @@ export class SpanNotQuery extends QueryBase {
   pre?: integer
 }
 
+/**
+ * @ext_doc_id query-dsl-span-or-query
+ */
 export class SpanOrQuery extends QueryBase {
   /**
    * Array of one or more other span type queries.
@@ -110,11 +131,17 @@ export class SpanOrQuery extends QueryBase {
   clauses: SpanQuery[]
 }
 
-/** @shortcut_property value */
+/**
+ * @shortcut_property value
+ * @ext_doc_id query-dsl-span-term-query
+ */
 export class SpanTermQuery extends QueryBase {
   value: string
 }
 
+/**
+ * @ext_doc_id query-dsl-span-within-query
+ */
 export class SpanWithinQuery extends QueryBase {
   /**
    * Can be any span query.
diff --git a/specification/_types/query_dsl/specialized.ts b/specification/_types/query_dsl/specialized.ts
index 8bcddda313..52dd48edf4 100644
--- a/specification/_types/query_dsl/specialized.ts
+++ b/specification/_types/query_dsl/specialized.ts
@@ -76,6 +76,7 @@ export class DateDistanceFeatureQuery extends DistanceFeatureQueryBase<
 /**
  * @codegen_names untyped, geo, date
  * @variants untagged untyped=_types.query_dsl.UntypedDistanceFeatureQuery
+ * @ext_doc_id query-dsl-distance-feature-query
  */
 // Note: deserialization depends on value types
 export type DistanceFeatureQuery =
@@ -83,11 +84,14 @@ export type DistanceFeatureQuery =
   | GeoDistanceFeatureQuery
   | DateDistanceFeatureQuery
 
+/**
+ * @ext_doc_id query-dsl-mlt-query
+ */
 export class MoreLikeThisQuery extends QueryBase {
   /**
    * The analyzer that is used to analyze the free form text.
    * Defaults to the analyzer associated with the first field in fields.
-   * @doc_id analysis
+   * @ext_doc_id analysis
    */
   analyzer?: string
   /**
@@ -198,6 +202,9 @@ export class LikeDocument {
  */
 export type Like = string | LikeDocument
 
+/**
+ * @ext_doc_id query-dsl-percolate-query
+ */
 export class PercolateQuery extends QueryBase {
   /**
    * The source of the document being percolated.
@@ -239,6 +246,7 @@ export class PercolateQuery extends QueryBase {
 
 /**
  * @variants container
+ * @ext_doc_id query-dsl-pinned-query
  */
 export class PinnedQuery extends QueryBase {
   /**
@@ -298,6 +306,9 @@ export class RankFeatureFunctionSigmoid extends RankFeatureFunction {
   exponent: float
 }
 
+/**
+ * @ext_doc_id query-dsl-rank-feature-query
+ */
 export class RankFeatureQuery extends QueryBase {
   /**
    * `rank_feature` or `rank_features` field used to boost relevance scores.
@@ -323,6 +334,9 @@ export class RankFeatureQuery extends QueryBase {
   sigmoid?: RankFeatureFunctionSigmoid
 }
 
+/**
+ * @ext_doc_id query-dsl-script-query
+ */
 export class ScriptQuery extends QueryBase {
   /**
    * Contains a script to run as a query.
@@ -331,6 +345,9 @@ export class ScriptQuery extends QueryBase {
   script: Script
 }
 
+/**
+ * @ext_doc_id query-dsl-script-score-query
+ */
 export class ScriptScoreQuery extends QueryBase {
   /**
    * Documents with a score lower than this floating point number are excluded from the search results.
@@ -349,6 +366,7 @@ export class ScriptScoreQuery extends QueryBase {
 
 /**
  * @behavior_meta AdditionalProperty key=field value=shape
+ * @ext_doc_id query-dsl-shape-query
  */
 // Shape query doesn't follow the common pattern of having a single field-name property
 // holding also the query base fields (boost and _name)
@@ -377,6 +395,9 @@ export class ShapeFieldQuery {
   shape?: GeoShape
 }
 
+/**
+ * @ext_doc_id query-dsl-rule-query
+ */
 export class RuleQuery extends QueryBase {
   organic: QueryContainer
   ruleset_ids: Id[]
diff --git a/specification/_types/query_dsl/term.ts b/specification/_types/query_dsl/term.ts
index 0860dda2f5..8a7b4e2281 100644
--- a/specification/_types/query_dsl/term.ts
+++ b/specification/_types/query_dsl/term.ts
@@ -26,6 +26,7 @@ import {
   Id,
   Ids,
   IndexName,
+  MinimumShouldMatch,
   MultiTermQueryRewrite,
   Routing
 } from '@_types/common'
@@ -34,6 +35,9 @@ import { Script } from '@_types/Scripting'
 import { DateFormat, DateMath, TimeZone } from '@_types/Time'
 import { QueryBase } from './abstractions'
 
+/**
+ * @ext_doc_id query-dsl-exists-query
+ */
 export class ExistsQuery extends QueryBase {
   /**
    * Name of the field you wish to search.
@@ -41,7 +45,10 @@ export class ExistsQuery extends QueryBase {
   field: Field
 }
 
-/** @shortcut_property value */
+/**
+ * @shortcut_property value
+ * @ext_doc_id query-dsl-fuzzy-query
+ */
 export class FuzzyQuery extends QueryBase {
   /**
    * Maximum number of variations created.
@@ -78,6 +85,9 @@ export class FuzzyQuery extends QueryBase {
   value: string | double | boolean
 }
 
+/**
+ * @ext_doc_id query-dsl-ids-query
+ */
 export class IdsQuery extends QueryBase {
   /**
    * An array of document IDs.
@@ -85,7 +95,10 @@ export class IdsQuery extends QueryBase {
   values?: Ids
 }
 
-/** @shortcut_property value */
+/**
+ * @shortcut_property value
+ * @ext_doc_id query-dsl-prefix-query
+ */
 export class PrefixQuery extends QueryBase {
   /**
    * Method used to rewrite the query.
@@ -128,7 +141,9 @@ export class RangeQueryBase<T> extends QueryBase {
    * Less than or equal to.
    */
   lte?: T
+  /** @deprecated 8.16.0 Use gte or gt instead */
   from?: T | null
+  /** @deprecated 8.16.0 Use lte or lt instead */
   to?: T | null
 }
 
@@ -161,6 +176,7 @@ export class TermRangeQuery extends RangeQueryBase<string> {}
 /**
  * @codegen_names untyped, date, number, term
  * @variants untagged untyped=_types.query_dsl.UntypedRangeQuery
+ * @ext_doc_id query-dsl-range-query
  */
 // Note: deserialization depends on value types
 export type RangeQuery =
@@ -184,7 +200,10 @@ export enum RangeRelation {
   intersects
 }
 
-/** @shortcut_property value */
+/**
+ * @shortcut_property value
+ * @ext_doc_id query-dsl-regexp-query
+ */
 export class RegexpQuery extends QueryBase {
   /**
    *  Allows case insensitive matching of the regular expression value with the indexed field values when set to `true`.
@@ -216,7 +235,10 @@ export class RegexpQuery extends QueryBase {
   value: string
 }
 
-/** @shortcut_property value */
+/**
+ * @shortcut_property value
+ * @ext_doc_id query-dsl-term-query
+ */
 export class TermQuery extends QueryBase {
   /**
    * Term you wish to find in the provided field.
@@ -234,6 +256,7 @@ export class TermQuery extends QueryBase {
 
 /**
  * @behavior_meta AdditionalProperty key=field value=term
+ * @ext_doc_id query-dsl-terms-query
  */
 export class TermsQuery
   extends QueryBase
@@ -251,7 +274,16 @@ export class TermsLookup {
   routing?: Routing
 }
 
+/**
+ * @ext_doc_id query-dsl-terms-set-query
+ */
 export class TermsSetQuery extends QueryBase {
+  /**
+   * Specification describing number of matching terms required to return a document.
+   * @availability stack since=8.10.0
+   * @availability serverless
+   */
+  minimum_should_match?: MinimumShouldMatch
   /**
    * Numeric field containing the number of matching terms required to return a document.
    */
@@ -270,7 +302,10 @@ export class TypeQuery extends QueryBase {
   value: string
 }
 
-/** @shortcut_property value */
+/**
+ * @shortcut_property value
+ * @ext_doc_id query-dsl-wildcard-query
+ */
 export class WildcardQuery extends QueryBase {
   /**
    * Allows case insensitive matching of the pattern with the indexed field values when set to true. Default is false which means the case sensitivity of matching depends on the underlying field’s mapping.
diff --git a/specification/async_search/delete/AsyncSearchDeleteRequest.ts b/specification/async_search/delete/AsyncSearchDeleteRequest.ts
index 84d8299b77..daf827e8f3 100644
--- a/specification/async_search/delete/AsyncSearchDeleteRequest.ts
+++ b/specification/async_search/delete/AsyncSearchDeleteRequest.ts
@@ -21,14 +21,16 @@ import { RequestBase } from '@_types/Base'
 import { Id } from '@_types/common'
 
 /**
- * Deletes an async search by identifier.
- * If the search is still running, the search request will be cancelled.
+ * Delete an async search.
+ *
+ * If the asynchronous search is still running, it is cancelled.
  * Otherwise, the saved search results are deleted.
  * If the Elasticsearch security features are enabled, the deletion of a specific async search is restricted to: the authenticated user that submitted the original search request; users that have the `cancel_task` cluster privilege.
  * @rest_spec_name async_search.delete
  * @availability stack since=7.7.0 stability=stable
  * @availability serverless stability=stable visibility=public
  * @doc_id async-search
+ * @doc_tag search
  */
 export interface Request extends RequestBase {
   path_parts: {
diff --git a/specification/async_search/get/AsyncSearchGetRequest.ts b/specification/async_search/get/AsyncSearchGetRequest.ts
index 6ac4d2e349..66dd3b49be 100644
--- a/specification/async_search/get/AsyncSearchGetRequest.ts
+++ b/specification/async_search/get/AsyncSearchGetRequest.ts
@@ -22,12 +22,15 @@ import { Id } from '@_types/common'
 import { Duration } from '@_types/Time'
 
 /**
- * Retrieves the results of a previously submitted async search request given its identifier.
+ * Get async search results.
+ *
+ * Retrieve the results of a previously submitted asynchronous search request.
  * If the Elasticsearch security features are enabled, access to the results of a specific async search is restricted to the user or API key that submitted it.
  * @rest_spec_name async_search.get
  * @availability stack since=7.7.0 stability=stable
  * @availability serverless stability=stable visibility=public
  * @doc_id async-search
+ * @doc_tag search
  */
 export interface Request extends RequestBase {
   path_parts: {
diff --git a/specification/async_search/status/AsyncSearchStatusRequest.ts b/specification/async_search/status/AsyncSearchStatusRequest.ts
index cf416214d6..e8b09d88b5 100644
--- a/specification/async_search/status/AsyncSearchStatusRequest.ts
+++ b/specification/async_search/status/AsyncSearchStatusRequest.ts
@@ -19,19 +19,30 @@
 
 import { RequestBase } from '@_types/Base'
 import { Id } from '@_types/common'
+import { Duration } from '@_types/Time'
 
 /**
- * Get async search status
- * Retrieves the status of a previously submitted async search request given its identifier, without retrieving search results.
+ * Get the async search status.
+ *
+ * Get the status of a previously submitted async search request given its identifier, without retrieving search results.
  * If the Elasticsearch security features are enabled, use of this API is restricted to the `monitoring_user` role.
  * @rest_spec_name async_search.status
  * @availability stack since=7.11.0 stability=stable
  * @availability serverless stability=stable visibility=public
  * @doc_id async-search
+ * @doc_tag search
  */
 export interface Request extends RequestBase {
   path_parts: {
     /** A unique identifier for the async search. */
     id: Id
   }
+  query_parameters: {
+    /**
+     * Specifies how long the async search needs to be available.
+     * Ongoing async searches and any saved search results are deleted after this period.
+     * @server_default 5d
+     */
+    keep_alive?: Duration
+  }
 }
diff --git a/specification/async_search/submit/AsyncSearchSubmitRequest.ts b/specification/async_search/submit/AsyncSearchSubmitRequest.ts
index c2a059fa4f..28798b2ee5 100644
--- a/specification/async_search/submit/AsyncSearchSubmitRequest.ts
+++ b/specification/async_search/submit/AsyncSearchSubmitRequest.ts
@@ -53,17 +53,23 @@ import { Sort, SortResults } from '@_types/sort'
 import { Duration } from '@_types/Time'
 
 /**
- * Runs a search request asynchronously.
- * When the primary sort of the results is an indexed field, shards get sorted based on minimum and maximum value that they hold for that field, hence partial results become available following the sort criteria that was requested.
- * Warning: Async search does not support scroll nor search requests that only include the suggest section.
- * By default, Elasticsearch doesn’t allow you to store an async search response larger than 10Mb and an attempt to do this results in an error.
+ * Run an async search.
+ *
+ * When the primary sort of the results is an indexed field, shards get sorted based on minimum and maximum value that they hold for that field. Partial results become available following the sort criteria that was requested.
+ *
+ * Warning: Asynchronous search does not support scroll or search requests that include only the suggest section.
+ *
+ * By default, Elasticsearch does not allow you to store an async search response larger than 10Mb and an attempt to do this results in an error.
  * The maximum allowed size for a stored async search response can be set by changing the `search.max_async_search_response_size` cluster level setting.
  * @rest_spec_name async_search.submit
  * @availability stack since=7.7.0 stability=stable
  * @availability serverless stability=stable visibility=public
  * @doc_id async-search
+ * @doc_tag search
  */
-// NOTE: this is a SearchRequest with 3 added parameters: wait_for_completion_timeout, keep_on_completion and keep_alive
+// NOTE: this is a SearchRequest with:
+//  * 3 added parameters: wait_for_completion_timeout, keep_on_completion and keep_alive
+//  * 1 removed parameters: scroll
 export interface Request extends RequestBase {
   path_parts: {
     index?: Indices
@@ -120,7 +126,6 @@ export interface Request extends RequestBase {
     /** @server_default true */
     request_cache?: boolean
     routing?: Routing
-    scroll?: Duration
     search_type?: SearchType
     stats?: string[]
     stored_fields?: Fields
diff --git a/specification/autoscaling/_types/AutoscalingPolicy.ts b/specification/autoscaling/_types/AutoscalingPolicy.ts
index 00e34f87af..73b2abf3a6 100644
--- a/specification/autoscaling/_types/AutoscalingPolicy.ts
+++ b/specification/autoscaling/_types/AutoscalingPolicy.ts
@@ -22,6 +22,9 @@ import { UserDefinedValue } from '@spec_utils/UserDefinedValue'
 
 export class AutoscalingPolicy {
   roles: string[]
-  /** Decider settings */
+  /**
+   * Decider settings.
+   * @ext_doc_id autoscaling-deciders
+   */
   deciders: Dictionary<string, UserDefinedValue>
 }
diff --git a/specification/autoscaling/delete_autoscaling_policy/DeleteAutoscalingPolicyRequest.ts b/specification/autoscaling/delete_autoscaling_policy/DeleteAutoscalingPolicyRequest.ts
index 0b99c541ce..e196824d24 100644
--- a/specification/autoscaling/delete_autoscaling_policy/DeleteAutoscalingPolicyRequest.ts
+++ b/specification/autoscaling/delete_autoscaling_policy/DeleteAutoscalingPolicyRequest.ts
@@ -19,14 +19,30 @@
 
 import { RequestBase } from '@_types/Base'
 import { Name } from '@_types/common'
+import { Duration } from '@_types/Time'
 
 /**
+ * Delete an autoscaling policy.
+ *
+ * NOTE: This feature is designed for indirect use by Elasticsearch Service, Elastic Cloud Enterprise, and Elastic Cloud on Kubernetes. Direct use is not supported.
  * @rest_spec_name autoscaling.delete_autoscaling_policy
  * @availability stack since=7.11.0 stability=stable
  * @doc_id autoscaling-delete-autoscaling-policy
+ * @ext_doc_id autoscaling
  */
 export interface Request extends RequestBase {
   path_parts: {
     name: Name
   }
+  query_parameters: {
+    /**
+     * Period to wait for a connection to the master node.
+     * If no response is received before the timeout expires, the request fails and returns an error.
+     * @server_default 30s */
+    master_timeout?: Duration
+    /**
+     * Period to wait for a response. If no response is received before the timeout expires, the request fails and returns an error.
+     * @server_default 30s */
+    timeout?: Duration
+  }
 }
diff --git a/specification/autoscaling/delete_autoscaling_policy/autoscalingApisDeleteAutoscalingPolicyResponseExample1.json b/specification/autoscaling/delete_autoscaling_policy/autoscalingApisDeleteAutoscalingPolicyResponseExample1.json
deleted file mode 100644
index 38e84a9444..0000000000
--- a/specification/autoscaling/delete_autoscaling_policy/autoscalingApisDeleteAutoscalingPolicyResponseExample1.json
+++ /dev/null
@@ -1,7 +0,0 @@
-{
-  "summary": "A successful response of deleting one or more autoscaling policy.",
-  "description": "This may be a respons to either `DELETE /_autoscaling/policy/my_autoscaling_policy` or `DELETE /_autoscaling/policy/*`.",
-  "type": "response",
-  "response_code": 200,
-  "value": "{\n  \"acknowledged\": true\n}"
-}
diff --git a/specification/autoscaling/delete_autoscaling_policy/autoscalingApisDeleteAutoscalingPolicyResponseExample1.yaml b/specification/autoscaling/delete_autoscaling_policy/autoscalingApisDeleteAutoscalingPolicyResponseExample1.yaml
new file mode 100644
index 0000000000..7ee291eec5
--- /dev/null
+++ b/specification/autoscaling/delete_autoscaling_policy/autoscalingApisDeleteAutoscalingPolicyResponseExample1.yaml
@@ -0,0 +1,6 @@
+summary: A successful response of deleting one or more autoscaling policy.
+description: >
+  This may be a response to either `DELETE /_autoscaling/policy/my_autoscaling_policy` or `DELETE /_autoscaling/policy/*`.
+# type: "response"
+# response_code: 200
+value: "{\n  \"acknowledged\": true\n}"
diff --git a/specification/autoscaling/get_autoscaling_capacity/GetAutoscalingCapacityRequest.ts b/specification/autoscaling/get_autoscaling_capacity/GetAutoscalingCapacityRequest.ts
index 6f64d2c261..866ef4fff1 100644
--- a/specification/autoscaling/get_autoscaling_capacity/GetAutoscalingCapacityRequest.ts
+++ b/specification/autoscaling/get_autoscaling_capacity/GetAutoscalingCapacityRequest.ts
@@ -18,10 +18,34 @@
  */
 
 import { RequestBase } from '@_types/Base'
+import { Duration } from '@_types/Time'
 
 /**
+ * Get the autoscaling capacity.
+ *
+ * NOTE: This feature is designed for indirect use by Elasticsearch Service, Elastic Cloud Enterprise, and Elastic Cloud on Kubernetes. Direct use is not supported.
+ *
+ * This API gets the current autoscaling capacity based on the configured autoscaling policy.
+ * It will return information to size the cluster appropriately to the current workload.
+ *
+ * The `required_capacity` is calculated as the maximum of the `required_capacity` result of all individual deciders that are enabled for the policy.
+ *
+ * The operator should verify that the `current_nodes` match the operator’s knowledge of the cluster to avoid making autoscaling decisions based on stale or incomplete information.
+ *
+ * The response contains decider-specific information you can use to diagnose how and why autoscaling determined a certain capacity was required.
+ * This information is provided for diagnosis only.
+ * Do not use this information to make autoscaling decisions.
  * @rest_spec_name autoscaling.get_autoscaling_capacity
  * @availability stack since=7.11.0 stability=stable
  * @doc_id autoscaling-get-autoscaling-capacity
+ * @ext_doc_id autoscaling
  */
-export interface Request extends RequestBase {}
+export interface Request extends RequestBase {
+  query_parameters: {
+    /**
+     * Period to wait for a connection to the master node.
+     * If no response is received before the timeout expires, the request fails and returns an error.
+     * @server_default 30s */
+    master_timeout?: Duration
+  }
+}
diff --git a/specification/autoscaling/get_autoscaling_capacity/autoscalingApisGetAutoscalingCapacityResponseExample1.json b/specification/autoscaling/get_autoscaling_capacity/autoscalingApisGetAutoscalingCapacityResponseExample1.json
deleted file mode 100644
index 04a9e9098f..0000000000
--- a/specification/autoscaling/get_autoscaling_capacity/autoscalingApisGetAutoscalingCapacityResponseExample1.json
+++ /dev/null
@@ -1,7 +0,0 @@
-{
-  "summary": "A successful response for retrieving the current autoscaling capacity.",
-  "description": "This may be a response to `GET /_autoscaling/capacity`.",
-  "type": "response",
-  "response_code": 200,
-  "value": "{\n  policies: {}\n}"
-}
diff --git a/specification/autoscaling/get_autoscaling_capacity/autoscalingApisGetAutoscalingCapacityResponseExample1.yaml b/specification/autoscaling/get_autoscaling_capacity/autoscalingApisGetAutoscalingCapacityResponseExample1.yaml
new file mode 100644
index 0000000000..62cfb5d82c
--- /dev/null
+++ b/specification/autoscaling/get_autoscaling_capacity/autoscalingApisGetAutoscalingCapacityResponseExample1.yaml
@@ -0,0 +1,5 @@
+summary: 'A successful response for retrieving the current autoscaling capacity.'
+description: 'This may be a response to `GET /_autoscaling/capacity`.'
+# type: "response"
+# response_code: 200
+value: "{\n  policies: {}\n}"
diff --git a/specification/autoscaling/get_autoscaling_policy/GetAutoscalingPolicyRequest.ts b/specification/autoscaling/get_autoscaling_policy/GetAutoscalingPolicyRequest.ts
index 10981b5661..610fa96825 100644
--- a/specification/autoscaling/get_autoscaling_policy/GetAutoscalingPolicyRequest.ts
+++ b/specification/autoscaling/get_autoscaling_policy/GetAutoscalingPolicyRequest.ts
@@ -19,14 +19,26 @@
 
 import { RequestBase } from '@_types/Base'
 import { Name } from '@_types/common'
+import { Duration } from '@_types/Time'
 
 /**
+ * Get an autoscaling policy.
+ *
+ * NOTE: This feature is designed for indirect use by Elasticsearch Service, Elastic Cloud Enterprise, and Elastic Cloud on Kubernetes. Direct use is not supported.
  * @rest_spec_name autoscaling.get_autoscaling_policy
  * @availability stack since=7.11.0 stability=stable
  * @doc_id autoscaling-get-autoscaling-capacity
+ * @ext_doc_id autoscaling
  */
 export interface Request extends RequestBase {
   path_parts: {
     name: Name
   }
+  query_parameters: {
+    /**
+     * Period to wait for a connection to the master node.
+     * If no response is received before the timeout expires, the request fails and returns an error.
+     * @server_default 30s */
+    master_timeout?: Duration
+  }
 }
diff --git a/specification/autoscaling/get_autoscaling_policy/autoscalingApisGetAutoscalingPolicyResponseExample1.json b/specification/autoscaling/get_autoscaling_policy/autoscalingApisGetAutoscalingPolicyResponseExample1.json
deleted file mode 100644
index 418325e902..0000000000
--- a/specification/autoscaling/get_autoscaling_policy/autoscalingApisGetAutoscalingPolicyResponseExample1.json
+++ /dev/null
@@ -1,7 +0,0 @@
-{
-  "summary": "A successful response for retrieving an autoscaling policy.",
-  "description": "This may be a response to `GET /_autoscaling/policy/my_autoscaling_policy`.",
-  "type": "response",
-  "response_code": 200,
-  "value": "{\n   \"roles\": <roles>,\n   \"deciders\": <deciders>\n}"
-}
diff --git a/specification/autoscaling/get_autoscaling_policy/autoscalingApisGetAutoscalingPolicyResponseExample1.yaml b/specification/autoscaling/get_autoscaling_policy/autoscalingApisGetAutoscalingPolicyResponseExample1.yaml
new file mode 100644
index 0000000000..4e435653c2
--- /dev/null
+++ b/specification/autoscaling/get_autoscaling_policy/autoscalingApisGetAutoscalingPolicyResponseExample1.yaml
@@ -0,0 +1,5 @@
+summary: 'A successful response for retrieving an autoscaling policy.'
+description: 'This may be a response to `GET /_autoscaling/policy/my_autoscaling_policy`.'
+# type: "response"
+# response_code: 200
+value: "{\n   \"roles\": <roles>,\n   \"deciders\": <deciders>\n}"
diff --git a/specification/autoscaling/put_autoscaling_policy/PutAutoscalingPolicyRequest.ts b/specification/autoscaling/put_autoscaling_policy/PutAutoscalingPolicyRequest.ts
index 6cfd9fe0cb..85c0bb0220 100644
--- a/specification/autoscaling/put_autoscaling_policy/PutAutoscalingPolicyRequest.ts
+++ b/specification/autoscaling/put_autoscaling_policy/PutAutoscalingPolicyRequest.ts
@@ -20,16 +20,32 @@
 import { AutoscalingPolicy } from '@autoscaling/_types/AutoscalingPolicy'
 import { RequestBase } from '@_types/Base'
 import { Name } from '@_types/common'
+import { Duration } from '@_types/Time'
 
 /**
+ * Create or update an autoscaling policy.
+ *
+ * NOTE: This feature is designed for indirect use by Elasticsearch Service, Elastic Cloud Enterprise, and Elastic Cloud on Kubernetes. Direct use is not supported.
  * @rest_spec_name autoscaling.put_autoscaling_policy
  * @availability stack since=7.11.0 stability=stable
  * @doc_id autoscaling-put-autoscaling-policy
+ * @ext_doc_id autoscaling
  */
 export interface Request extends RequestBase {
   path_parts: {
     name: Name
   }
+  query_parameters: {
+    /**
+     * Period to wait for a connection to the master node.
+     * If no response is received before the timeout expires, the request fails and returns an error.
+     * @server_default 30s */
+    master_timeout?: Duration
+    /**
+     * Period to wait for a response. If no response is received before the timeout expires, the request fails and returns an error.
+     * @server_default 30s */
+    timeout?: Duration
+  }
   /** @codegen_name policy */
   body: AutoscalingPolicy
 }
diff --git a/specification/autoscaling/put_autoscaling_policy/autoscalingApisPutAutoscalingPolicyRequestExample1.json b/specification/autoscaling/put_autoscaling_policy/autoscalingApisPutAutoscalingPolicyRequestExample1.json
deleted file mode 100644
index 64bd4cb34c..0000000000
--- a/specification/autoscaling/put_autoscaling_policy/autoscalingApisPutAutoscalingPolicyRequestExample1.json
+++ /dev/null
@@ -1,7 +0,0 @@
-{
-  "summary": "Creates or updates an autoscaling policy.",
-  "method_request": "PUT /_autoscaling/policy/<name>",
-  "description": "",
-  "type": "request",
-  "value": "{\n  \"roles\": [],\n  \"deciders\": {\n    \"fixed\": {\n    }\n  }\n}"
-}
diff --git a/specification/autoscaling/put_autoscaling_policy/autoscalingApisPutAutoscalingPolicyRequestExample1.yaml b/specification/autoscaling/put_autoscaling_policy/autoscalingApisPutAutoscalingPolicyRequestExample1.yaml
new file mode 100644
index 0000000000..2e8447645d
--- /dev/null
+++ b/specification/autoscaling/put_autoscaling_policy/autoscalingApisPutAutoscalingPolicyRequestExample1.yaml
@@ -0,0 +1,5 @@
+summary: 'Creates or updates an autoscaling policy.'
+# method_request: "PUT /_autoscaling/policy/<name>"
+# description: ""
+# type: "request"
+value: "{\n  \"roles\": [],\n  \"deciders\": {\n    \"fixed\": {\n    }\n  }\n}"
diff --git a/specification/autoscaling/put_autoscaling_policy/autoscalingApisPutAutoscalingPolicyRequestExample2.json b/specification/autoscaling/put_autoscaling_policy/autoscalingApisPutAutoscalingPolicyRequestExample2.json
deleted file mode 100644
index 3e64f1618d..0000000000
--- a/specification/autoscaling/put_autoscaling_policy/autoscalingApisPutAutoscalingPolicyRequestExample2.json
+++ /dev/null
@@ -1,7 +0,0 @@
-{
-  "summary": "Creates an autoscaling policy.",
-  "method_request": "PUT /_autoscaling/policy/my_autoscaling_policy",
-  "description": "The API method and path for this request: `PUT /_autoscaling/policy/my_autoscaling_policy`. It creates `my_autoscaling_policy` using the fixed autoscaling decider, applying to the set of nodes having (only) the `data_hot` role.",
-  "type": "request",
-  "value": "{\n  \"roles\" : [ \"data_hot\" ],\n  \"deciders\": {\n    \"fixed\": {\n    }\n  }\n}"
-}
diff --git a/specification/autoscaling/put_autoscaling_policy/autoscalingApisPutAutoscalingPolicyRequestExample2.yaml b/specification/autoscaling/put_autoscaling_policy/autoscalingApisPutAutoscalingPolicyRequestExample2.yaml
new file mode 100644
index 0000000000..4cd9e5be04
--- /dev/null
+++ b/specification/autoscaling/put_autoscaling_policy/autoscalingApisPutAutoscalingPolicyRequestExample2.yaml
@@ -0,0 +1,5 @@
+summary: 'Creates an autoscaling policy.'
+# method_request: "PUT /_autoscaling/policy/my_autoscaling_policy"
+description: 'The API method and path for this request: `PUT /_autoscaling/policy/my_autoscaling_policy`. It creates `my_autoscaling_policy` using the fixed autoscaling decider, applying to the set of nodes having (only) the `data_hot` role.'
+# type: "request"
+value: "{\n  \"roles\" : [ \"data_hot\" ],\n  \"deciders\": {\n    \"fixed\": {\n    }\n  }\n}"
diff --git a/specification/autoscaling/put_autoscaling_policy/autoscalingApisPutAutoscalingPolicyResponseExample1.yaml b/specification/autoscaling/put_autoscaling_policy/autoscalingApisPutAutoscalingPolicyResponseExample1.yaml
new file mode 100644
index 0000000000..b1ecfe7a30
--- /dev/null
+++ b/specification/autoscaling/put_autoscaling_policy/autoscalingApisPutAutoscalingPolicyResponseExample1.yaml
@@ -0,0 +1,5 @@
+summary: 'A successful response when creating an autoscaling policy.'
+# description: "",
+# type: "response",
+# response_code: 200,
+value: "{\n  \"acknowledged\": true\n}"
diff --git a/specification/cat/component_templates/types.ts b/specification/cat/component_templates/types.ts
index fcad97e423..27bd124e2d 100644
--- a/specification/cat/component_templates/types.ts
+++ b/specification/cat/component_templates/types.ts
@@ -19,7 +19,7 @@
 
 export class ComponentTemplate {
   name: string
-  version: string
+  version: string | null
   alias_count: string
   mapping_count: string
   settings_count: string
diff --git a/specification/cluster/allocation_explain/ClusterAllocationExplainRequest.ts b/specification/cluster/allocation_explain/ClusterAllocationExplainRequest.ts
index 41eca0b1e0..f38a39db22 100644
--- a/specification/cluster/allocation_explain/ClusterAllocationExplainRequest.ts
+++ b/specification/cluster/allocation_explain/ClusterAllocationExplainRequest.ts
@@ -22,6 +22,11 @@ import { IndexName } from '@_types/common'
 import { integer } from '@_types/Numeric'
 
 /**
+ * Explain the shard allocations.
+ * Get explanations for shard allocations in the cluster.
+ * For unassigned shards, it provides an explanation for why the shard is unassigned.
+ * For assigned shards, it provides an explanation for why the shard is remaining on its current node and has not moved or rebalanced to another node.
+ * This API can be very useful when attempting to diagnose why a shard is unassigned or why a shard continues to remain on its current node when you might expect otherwise.
  * @rest_spec_name cluster.allocation_explain
  * @availability stack since=5.0.0 stability=stable
  * @availability serverless stability=stable visibility=private
diff --git a/specification/cluster/allocation_explain/clusterAllocationExplainRequestExample1.json b/specification/cluster/allocation_explain/clusterAllocationExplainRequestExample1.json
new file mode 100644
index 0000000000..028ed4e818
--- /dev/null
+++ b/specification/cluster/allocation_explain/clusterAllocationExplainRequestExample1.json
@@ -0,0 +1,7 @@
+{
+  "summary": "Provides an explanation for a shard’s current allocation.",
+  "method_request": "GET _cluster/allocation/explain",
+  "description": "",
+  "type": "request",
+  "value": "{\n  \"index\": \"my-index-000001\",\n  \"shard\": 0,\n  \"primary\": false,\n  \"current_node\": \"my-node\"\n}"
+}
diff --git a/specification/cluster/delete_component_template/ClusterDeleteComponentTemplateRequest.ts b/specification/cluster/delete_component_template/ClusterDeleteComponentTemplateRequest.ts
index f0bfd02836..7828bd2f37 100644
--- a/specification/cluster/delete_component_template/ClusterDeleteComponentTemplateRequest.ts
+++ b/specification/cluster/delete_component_template/ClusterDeleteComponentTemplateRequest.ts
@@ -30,6 +30,7 @@ import { Duration } from '@_types/Time'
  * @availability serverless stability=stable visibility=public
  * @doc_id indices-component-template
  * @cluster_privileges manage_index_templates
+ * @doc_tag indices
  */
 export interface Request extends RequestBase {
   path_parts: {
diff --git a/specification/cluster/delete_voting_config_exclusions/ClusterDeleteVotingConfigExclusionsRequest.ts b/specification/cluster/delete_voting_config_exclusions/ClusterDeleteVotingConfigExclusionsRequest.ts
index 20c8df67cf..3f181de67e 100644
--- a/specification/cluster/delete_voting_config_exclusions/ClusterDeleteVotingConfigExclusionsRequest.ts
+++ b/specification/cluster/delete_voting_config_exclusions/ClusterDeleteVotingConfigExclusionsRequest.ts
@@ -20,9 +20,12 @@
 import { RequestBase } from '@_types/Base'
 
 /**
+ * Clear cluster voting config exclusions.
+ * Remove master-eligible nodes from the voting configuration exclusion list.
  * @rest_spec_name cluster.delete_voting_config_exclusions
  * @availability stack since=7.0.0 stability=stable
  * @doc_id voting-config-exclusions
+ * @ext_doc_id add-nodes
  */
 export interface Request extends RequestBase {
   query_parameters: {
diff --git a/specification/cluster/exists_component_template/ClusterComponentTemplateExistsRequest.ts b/specification/cluster/exists_component_template/ClusterComponentTemplateExistsRequest.ts
index 426586fe82..0446d8f511 100644
--- a/specification/cluster/exists_component_template/ClusterComponentTemplateExistsRequest.ts
+++ b/specification/cluster/exists_component_template/ClusterComponentTemplateExistsRequest.ts
@@ -28,6 +28,7 @@ import { Duration } from '@_types/Time'
  * @availability stack since=7.8.0 stability=stable
  * @availability serverless stability=stable visibility=public
  * @doc_id indices-component-template
+ * @doc_tag indices
  */
 export interface Request extends RequestBase {
   path_parts: {
diff --git a/specification/cluster/get_component_template/ClusterGetComponentTemplateRequest.ts b/specification/cluster/get_component_template/ClusterGetComponentTemplateRequest.ts
index 1318dc53fe..d70614bae0 100644
--- a/specification/cluster/get_component_template/ClusterGetComponentTemplateRequest.ts
+++ b/specification/cluster/get_component_template/ClusterGetComponentTemplateRequest.ts
@@ -29,6 +29,7 @@ import { Duration } from '@_types/Time'
  * @availability serverless stability=stable visibility=public
  * @cluster_privileges manage_index_templates
  * @doc_id indices-component-template
+ * @doc_tag indices
  */
 export interface Request extends RequestBase {
   path_parts: {
diff --git a/specification/cluster/get_settings/ClusterGetSettingsRequest.ts b/specification/cluster/get_settings/ClusterGetSettingsRequest.ts
index 8a608fb3eb..1ef75c0a03 100644
--- a/specification/cluster/get_settings/ClusterGetSettingsRequest.ts
+++ b/specification/cluster/get_settings/ClusterGetSettingsRequest.ts
@@ -21,7 +21,7 @@ import { RequestBase } from '@_types/Base'
 import { Duration } from '@_types/Time'
 
 /**
- * Returns cluster-wide settings.
+ * Get cluster-wide settings.
  * By default, it returns only settings that have been explicitly defined.
  * @rest_spec_name cluster.get_settings
  * @availability stack stability=stable
diff --git a/specification/cluster/health/ClusterHealthRequest.ts b/specification/cluster/health/ClusterHealthRequest.ts
index 9f39081ff4..47db3c8aeb 100644
--- a/specification/cluster/health/ClusterHealthRequest.ts
+++ b/specification/cluster/health/ClusterHealthRequest.ts
@@ -30,13 +30,22 @@ import { integer } from '@_types/Numeric'
 import { Duration } from '@_types/Time'
 
 /**
- * The cluster health API returns a simple status on the health of the cluster. You can also use the API to get the health status of only specified data streams and indices. For data streams, the API retrieves the health status of the stream’s backing indices.
- * The cluster health status is: green, yellow or red. On the shard level, a red status indicates that the specific shard is not allocated in the cluster, yellow means that the primary shard is allocated but replicas are not, and green means that all shards are allocated. The index level status is controlled by the worst shard status. The cluster status is controlled by the worst index status.
+ * Get the cluster health status.
+ * You can also use the API to get the health status of only specified data streams and indices.
+ * For data streams, the API retrieves the health status of the stream’s backing indices.
+ *
+ * The cluster health status is: green, yellow or red.
+ * On the shard level, a red status indicates that the specific shard is not allocated in the cluster. Yellow means that the primary shard is allocated but replicas are not. Green means that all shards are allocated.
+ * The index level status is controlled by the worst shard status.
+ *
+ * One of the main benefits of the API is the ability to wait until the cluster reaches a certain high watermark health level.
+ * The cluster status is controlled by the worst index status.
  * @rest_spec_name cluster.health
  * @availability stack since=1.3.0 stability=stable
  * @availability serverless stability=stable visibility=private
  * @cluster_privileges monitor, manage
  * @doc_id cluster-health
+ * @doc_tag cluster
  */
 export interface Request extends RequestBase {
   path_parts: {
diff --git a/specification/cluster/health/clusterHealthResponseExample1.json b/specification/cluster/health/clusterHealthResponseExample1.json
new file mode 100644
index 0000000000..fbf688b042
--- /dev/null
+++ b/specification/cluster/health/clusterHealthResponseExample1.json
@@ -0,0 +1,7 @@
+{
+  "summary": "A successful response when requesting the health status of a cluster.",
+  "description": "This is the API response in case of a quiet single node cluster with a single index with one shard and one replica.",
+  "type": "response",
+  "response_code": 200,
+  "value": "{\n  \"cluster_name\" : \"testcluster\",\n  \"status\" : \"yellow\",\n  \"timed_out\" : false,\n  \"number_of_nodes\" : 1,\n  \"number_of_data_nodes\" : 1,\n  \"active_primary_shards\" : 1,\n  \"active_shards\" : 1,\n  \"relocating_shards\" : 0,\n  \"initializing_shards\" : 0,\n  \"unassigned_shards\" : 1,\n  \"delayed_unassigned_shards\": 0,\n  \"number_of_pending_tasks\" : 0,\n  \"number_of_in_flight_fetch\": 0,\n  \"task_max_waiting_in_queue_millis\": 0,\n  \"active_shards_percent_as_number\": 50.0\n}"
+}
diff --git a/specification/cluster/pending_tasks/ClusterPendingTasksRequest.ts b/specification/cluster/pending_tasks/ClusterPendingTasksRequest.ts
index a6bbb197e2..3e1b6c128f 100644
--- a/specification/cluster/pending_tasks/ClusterPendingTasksRequest.ts
+++ b/specification/cluster/pending_tasks/ClusterPendingTasksRequest.ts
@@ -21,9 +21,11 @@ import { RequestBase } from '@_types/Base'
 import { Duration } from '@_types/Time'
 
 /**
- * Returns cluster-level changes (such as create index, update mapping, allocate or fail shard) that have not yet been executed.
+ * Get the pending cluster tasks.
+ * Get information about cluster-level changes (such as create index, update mapping, allocate or fail shard) that have not yet taken effect.
+ *
  * NOTE: This API returns a list of any pending updates to the cluster state.
- * These are distinct from the tasks reported by the Task Management API which include periodic tasks and tasks initiated by the user, such as node stats, search queries, or create index requests.
+ * These are distinct from the tasks reported by the task management API which include periodic tasks and tasks initiated by the user, such as node stats, search queries, or create index requests.
  * However, if a user-initiated task such as a create index command causes a cluster state update, the activity of this task might be reported by both task api and pending cluster tasks API.
  * @rest_spec_name cluster.pending_tasks
  * @availability stack stability=stable
diff --git a/specification/cluster/post_voting_config_exclusions/ClusterPostVotingConfigExclusionsRequest.ts b/specification/cluster/post_voting_config_exclusions/ClusterPostVotingConfigExclusionsRequest.ts
index a581419d87..67421889c0 100644
--- a/specification/cluster/post_voting_config_exclusions/ClusterPostVotingConfigExclusionsRequest.ts
+++ b/specification/cluster/post_voting_config_exclusions/ClusterPostVotingConfigExclusionsRequest.ts
@@ -22,9 +22,28 @@ import { Ids, Names } from '@_types/common'
 import { Duration } from '@_types/Time'
 
 /**
+ * Update voting configuration exclusions.
+ * Update the cluster voting config exclusions by node IDs or node names.
+ * By default, if there are more than three master-eligible nodes in the cluster and you remove fewer than half of the master-eligible nodes in the cluster at once, the voting configuration automatically shrinks.
+ * If you want to shrink the voting configuration to contain fewer than three nodes or to remove half or more of the master-eligible nodes in the cluster at once, use this API to remove departing nodes from the voting configuration manually.
+ * The API adds an entry for each specified node to the cluster’s voting configuration exclusions list.
+ * It then waits until the cluster has reconfigured its voting configuration to exclude the specified nodes.
+ *
+ * Clusters should have no voting configuration exclusions in normal operation.
+ * Once the excluded nodes have stopped, clear the voting configuration exclusions with `DELETE /_cluster/voting_config_exclusions`.
+ * This API waits for the nodes to be fully removed from the cluster before it returns.
+ * If your cluster has voting configuration exclusions for nodes that you no longer intend to remove, use `DELETE /_cluster/voting_config_exclusions?wait_for_removal=false` to clear the voting configuration exclusions without waiting for the nodes to leave the cluster.
+ *
+ * A response to `POST /_cluster/voting_config_exclusions` with an HTTP status code of 200 OK guarantees that the node has been removed from the voting configuration and will not be reinstated until the voting configuration exclusions are cleared by calling `DELETE /_cluster/voting_config_exclusions`.
+ * If the call to `POST /_cluster/voting_config_exclusions` fails or returns a response with an HTTP status code other than 200 OK then the node may not have been removed from the voting configuration.
+ * In that case, you may safely retry the call.
+ *
+ * NOTE: Voting exclusions are required only when you remove at least half of the master-eligible nodes from a cluster in a short time period.
+ * They are not required when removing master-ineligible nodes or when removing fewer than half of the master-eligible nodes.
  * @rest_spec_name cluster.post_voting_config_exclusions
  * @availability stack since=7.0.0 stability=stable
  * @doc_id voting-config-exclusions
+ * @ext_doc_id add-nodes
  */
 export interface Request extends RequestBase {
   query_parameters: {
diff --git a/specification/cluster/put_component_template/ClusterPutComponentTemplateRequest.ts b/specification/cluster/put_component_template/ClusterPutComponentTemplateRequest.ts
index 2b94fa3eb2..0f45d9ee64 100644
--- a/specification/cluster/put_component_template/ClusterPutComponentTemplateRequest.ts
+++ b/specification/cluster/put_component_template/ClusterPutComponentTemplateRequest.ts
@@ -44,6 +44,7 @@ import { Duration } from '@_types/Time'
  * @availability serverless stability=stable visibility=public
  * @cluster_privileges manage_index_templates
  * @doc_id indices-component-template
+ * @doc_tag indices
  */
 export interface Request extends RequestBase {
   path_parts: {
diff --git a/specification/cluster/put_settings/ClusterPutSettingsRequest.ts b/specification/cluster/put_settings/ClusterPutSettingsRequest.ts
index 19bc33b4a1..c2f9bfc1e3 100644
--- a/specification/cluster/put_settings/ClusterPutSettingsRequest.ts
+++ b/specification/cluster/put_settings/ClusterPutSettingsRequest.ts
@@ -23,6 +23,24 @@ import { RequestBase } from '@_types/Base'
 import { Duration } from '@_types/Time'
 
 /**
+ * Update the cluster settings.
+ * Configure and update dynamic settings on a running cluster.
+ * You can also configure dynamic settings locally on an unstarted or shut down node in `elasticsearch.yml`.
+ *
+ * Updates made with this API can be persistent, which apply across cluster restarts, or transient, which reset after a cluster restart.
+ * You can also reset transient or persistent settings by assigning them a null value.
+ *
+ * If you configure the same setting using multiple methods, Elasticsearch applies the settings in following order of precedence: 1) Transient setting; 2) Persistent setting; 3) `elasticsearch.yml` setting; 4) Default setting value.
+ * For example, you can apply a transient setting to override a persistent setting or `elasticsearch.yml` setting.
+ * However, a change to an `elasticsearch.yml` setting will not override a defined transient or persistent setting.
+ *
+ * TIP: In Elastic Cloud, use the user settings feature to configure all cluster settings. This method automatically rejects unsafe settings that could break your cluster.
+ * If you run Elasticsearch on your own hardware, use this API to configure dynamic cluster settings.
+ * Only use `elasticsearch.yml` for static cluster settings and node settings.
+ * The API doesn’t require a restart and ensures a setting’s value is the same on all nodes.
+ *
+ * WARNING: Transient cluster settings are no longer recommended. Use persistent cluster settings instead.
+ * If a cluster becomes unstable, transient settings can clear unexpectedly, resulting in a potentially undesired cluster configuration.
  * @rest_spec_name cluster.put_settings
  * @availability stack stability=stable
  * @availability serverless stability=stable visibility=private
diff --git a/specification/cluster/put_settings/clusterPutSettingsRequestExample1.json b/specification/cluster/put_settings/clusterPutSettingsRequestExample1.json
new file mode 100644
index 0000000000..45cba7ab50
--- /dev/null
+++ b/specification/cluster/put_settings/clusterPutSettingsRequestExample1.json
@@ -0,0 +1,7 @@
+{
+  "summary": "Configures dynamic cluster settings.",
+  "method_request": "PUT /_cluster/settings",
+  "description": "An example of a persistent update.",
+  "type": "request",
+  "value": "{\n  \"persistent\" : {\n    \"indices.recovery.max_bytes_per_sec\" : \"50mb\"\n  }\n}"
+}
diff --git a/specification/cluster/remote_info/ClusterRemoteInfoRequest.ts b/specification/cluster/remote_info/ClusterRemoteInfoRequest.ts
index a81800ec0b..218077a6e6 100644
--- a/specification/cluster/remote_info/ClusterRemoteInfoRequest.ts
+++ b/specification/cluster/remote_info/ClusterRemoteInfoRequest.ts
@@ -20,9 +20,9 @@
 import { RequestBase } from '@_types/Base'
 
 /**
- * The cluster remote info API allows you to retrieve all of the configured
- * remote cluster information. It returns connection and endpoint information
- * keyed by the configured remote cluster alias.
+ * Get remote cluster information.
+ * Get all of the configured remote cluster information.
+ * This API returns connection and endpoint information keyed by the configured remote cluster alias.
  * @rest_spec_name cluster.remote_info
  * @availability stack since=6.1.0 stability=stable
  * @doc_id cluster-remote-info
diff --git a/specification/cluster/reroute/ClusterRerouteRequest.ts b/specification/cluster/reroute/ClusterRerouteRequest.ts
index 1b07ae501a..cac1dea4f7 100644
--- a/specification/cluster/reroute/ClusterRerouteRequest.ts
+++ b/specification/cluster/reroute/ClusterRerouteRequest.ts
@@ -23,6 +23,20 @@ import { Duration } from '@_types/Time'
 import { Command } from './types'
 
 /**
+ * Reroute the cluster.
+ * Manually change the allocation of individual shards in the cluster.
+ * For example, a shard can be moved from one node to another explicitly, an allocation can be canceled, and an unassigned shard can be explicitly allocated to a specific node.
+ *
+ * It is important to note that after processing any reroute commands Elasticsearch will perform rebalancing as normal (respecting the values of settings such as `cluster.routing.rebalance.enable`) in order to remain in a balanced state.
+ * For example, if the requested allocation includes moving a shard from node1 to node2 then this may cause a shard to be moved from node2 back to node1 to even things out.
+ *
+ * The cluster can be set to disable allocations using the `cluster.routing.allocation.enable` setting.
+ * If allocations are disabled then the only allocations that will be performed are explicit ones given using the reroute command, and consequent allocations due to rebalancing.
+ *
+ * The cluster will attempt to allocate a shard a maximum of `index.allocation.max_retries` times in a row (defaults to `5`), before giving up and leaving the shard unallocated.
+ * This scenario can be caused by structural problems such as having an analyzer which refers to a stopwords file which doesn’t exist on all nodes.
+ *
+ * Once the problem has been corrected, allocation can be manually retried by calling the reroute API with the `?retry_failed` URI query parameter, which will attempt a single retry round for these shards.
  * @rest_spec_name cluster.reroute
  * @availability stack since=5.0.0 stability=stable
  * @availability serverless stability=stable visibility=private
@@ -31,12 +45,13 @@ import { Command } from './types'
 export interface Request extends RequestBase {
   query_parameters: {
     /**
-     * If true, then the request simulates the operation only and returns the resulting state.
+     * If true, then the request simulates the operation.
+     * It will calculate the result of applying the commands to the current cluster state and return the resulting cluster state after the commands (and rebalancing) have been applied; it will not actually perform the requested changes.
      * @server_default false
      */
     dry_run?: boolean
     /**
-     * If true, then the response contains an explanation of why the commands can or cannot be executed.
+     * If true, then the response contains an explanation of why the commands can or cannot run.
      * @server_default false
      */
     explain?: boolean
diff --git a/specification/cluster/reroute/clusterRerouteRequestExample1.json b/specification/cluster/reroute/clusterRerouteRequestExample1.json
new file mode 100644
index 0000000000..a5210c6f83
--- /dev/null
+++ b/specification/cluster/reroute/clusterRerouteRequestExample1.json
@@ -0,0 +1,7 @@
+{
+  "summary": "Changes the allocation of shards in a cluster.",
+  "method_request": "POST /_cluster/reroute?metric=none",
+  "description": "",
+  "type": "request",
+  "value": "{\n  \"commands\": [\n    {\n      \"move\": {\n        \"index\": \"test\", \"shard\": 0,\n        \"from_node\": \"node1\", \"to_node\": \"node2\"\n      }\n    },\n    {\n      \"allocate_replica\": {\n        \"index\": \"test\", \"shard\": 1,\n        \"node\": \"node3\"\n      }\n    }\n  ]\n}"
+}
diff --git a/specification/cluster/state/ClusterStateRequest.ts b/specification/cluster/state/ClusterStateRequest.ts
index 70f8d93a36..3b35cb1e13 100644
--- a/specification/cluster/state/ClusterStateRequest.ts
+++ b/specification/cluster/state/ClusterStateRequest.ts
@@ -27,6 +27,25 @@ import {
 import { Duration } from '@_types/Time'
 
 /**
+ * Get the cluster state.
+ * Get comprehensive information about the state of the cluster.
+ *
+ * The cluster state is an internal data structure which keeps track of a variety of information needed by every node, including the identity and attributes of the other nodes in the cluster; cluster-wide settings; index metadata, including the mapping and settings for each index; the location and status of every shard copy in the cluster.
+ *
+ * The elected master node ensures that every node in the cluster has a copy of the same cluster state.
+ * This API lets you retrieve a representation of this internal state for debugging or diagnostic purposes.
+ * You may need to consult the Elasticsearch source code to determine the precise meaning of the response.
+ *
+ * By default the API will route requests to the elected master node since this node is the authoritative source of cluster states.
+ * You can also retrieve the cluster state held on the node handling the API request by adding the `?local=true` query parameter.
+ *
+ * Elasticsearch may need to expend significant effort to compute a response to this API in larger clusters, and the response may comprise a very large quantity of data.
+ * If you use this API repeatedly, your cluster may become unstable.
+ *
+ * WARNING: The response is a representation of an internal data structure.
+ * Its format is not subject to the same compatibility guarantees as other more stable APIs and may change from version to version.
+ * Do not query this API using external monitoring tools.
+ * Instead, obtain the information you require using other more stable cluster APIs.
  * @rest_spec_name cluster.state
  * @availability stack since=1.3.0 stability=stable
  * @availability serverless stability=stable visibility=private
diff --git a/specification/cluster/stats/ClusterStatsRequest.ts b/specification/cluster/stats/ClusterStatsRequest.ts
index 171c78ee52..23cb647e9f 100644
--- a/specification/cluster/stats/ClusterStatsRequest.ts
+++ b/specification/cluster/stats/ClusterStatsRequest.ts
@@ -22,8 +22,8 @@ import { NodeIds } from '@_types/common'
 import { Duration } from '@_types/Time'
 
 /**
- * Returns cluster statistics.
- * It returns basic index metrics (shard numbers, store size, memory usage) and information about the current nodes that form the cluster (number, roles, os, jvm versions, memory usage, cpu and installed plugins).
+ * Get cluster statistics.
+ * Get basic index metrics (shard numbers, store size, memory usage) and information about the current nodes that form the cluster (number, roles, os, jvm versions, memory usage, cpu and installed plugins).
  * @rest_spec_name cluster.stats
  * @availability stack since=1.3.0 stability=stable
  * @availability serverless stability=stable visibility=private
@@ -37,10 +37,10 @@ export interface Request extends RequestBase {
   }
   query_parameters: {
     /**
-     * If `true`, returns settings in flat format.
+     * Include remote cluster data into the response
      * @server_default false
      */
-    flat_settings?: boolean
+    include_remotes?: boolean
     /**
      * Period to wait for each node to respond.
      * If a node does not respond before its timeout expires, the response does not include its stats.
diff --git a/specification/connector/_types/Connector.ts b/specification/connector/_types/Connector.ts
index 6bc7cffa65..59c721dc08 100644
--- a/specification/connector/_types/Connector.ts
+++ b/specification/connector/_types/Connector.ts
@@ -192,7 +192,7 @@ enum FilteringValidationState {
 export interface FilteringAdvancedSnippet {
   created_at?: DateTime
   updated_at?: DateTime
-  value: Dictionary<string, UserDefinedValue>
+  value: UserDefinedValue
 }
 
 export interface FilteringRulesValidation {
diff --git a/specification/connector/check_in/ConnectorCheckInRequest.ts b/specification/connector/check_in/ConnectorCheckInRequest.ts
index 4c29b9c956..8a7e0628b8 100644
--- a/specification/connector/check_in/ConnectorCheckInRequest.ts
+++ b/specification/connector/check_in/ConnectorCheckInRequest.ts
@@ -20,7 +20,9 @@ import { RequestBase } from '@_types/Base'
 import { Id } from '@_types/common'
 
 /**
- * Updates the last_seen field in the connector, and sets it to current timestamp
+ * Check in a connector.
+ *
+ * Update the `last_seen` field in the connector and set it to the current timestamp.
  * @rest_spec_name connector.check_in
  * @availability stack since=8.12.0 stability=experimental
  * @availability serverless stability=experimental visibility=public
diff --git a/specification/connector/delete/ConnectorDeleteRequest.ts b/specification/connector/delete/ConnectorDeleteRequest.ts
index b3a9e6965e..d64153139b 100644
--- a/specification/connector/delete/ConnectorDeleteRequest.ts
+++ b/specification/connector/delete/ConnectorDeleteRequest.ts
@@ -20,7 +20,12 @@ import { RequestBase } from '@_types/Base'
 import { Id } from '@_types/common'
 
 /**
- * Deletes a connector.
+ * Delete a connector.
+ *
+ * Removes a connector and associated sync jobs.
+ * This is a destructive action that is not recoverable.
+ * NOTE: This action doesn’t delete any API keys, ingest pipelines, or data indices associated with the connector.
+ * These need to be removed manually.
  * @rest_spec_name connector.delete
  * @availability stack since=8.12.0 stability=beta
  * @availability serverless stability=beta visibility=public
diff --git a/specification/connector/get/ConnectorGetRequest.ts b/specification/connector/get/ConnectorGetRequest.ts
index 23a3caf040..e357985489 100644
--- a/specification/connector/get/ConnectorGetRequest.ts
+++ b/specification/connector/get/ConnectorGetRequest.ts
@@ -20,7 +20,9 @@ import { RequestBase } from '@_types/Base'
 import { Id } from '@_types/common'
 
 /**
- * Retrieves a connector.
+ * Get a connector.
+ *
+ * Get the details about a connector.
  * @rest_spec_name connector.get
  * @availability stack since=8.12.0 stability=beta
  * @availability serverless stability=beta visibility=public
diff --git a/specification/connector/last_sync/ConnectorUpdateLastSyncRequest.ts b/specification/connector/last_sync/ConnectorUpdateLastSyncRequest.ts
index d243b5770e..701a621539 100644
--- a/specification/connector/last_sync/ConnectorUpdateLastSyncRequest.ts
+++ b/specification/connector/last_sync/ConnectorUpdateLastSyncRequest.ts
@@ -24,7 +24,10 @@ import { DateTime } from '@_types/Time'
 import { SyncStatus } from '../_types/Connector'
 
 /**
- * Updates last sync stats in the connector document
+ * Update the connector last sync stats.
+ *
+ * Update the fields related to the last sync of a connector.
+ * This action is used for analytics and monitoring.
  * @rest_spec_name connector.last_sync
  * @availability stack since=8.12.0 stability=experimental visibility=private
  * @availability serverless stability=experimental visibility=private
diff --git a/specification/connector/list/ConnectorListRequest.ts b/specification/connector/list/ConnectorListRequest.ts
index ea44fe6e11..ca818c84b8 100644
--- a/specification/connector/list/ConnectorListRequest.ts
+++ b/specification/connector/list/ConnectorListRequest.ts
@@ -21,7 +21,9 @@ import { Indices, Names } from '@_types/common'
 import { integer } from '@_types/Numeric'
 
 /**
- * Returns existing connectors.
+ * Get all connectors.
+ *
+ * Get information about all connectors.
  * @rest_spec_name connector.list
  * @availability stack since=8.12.0 stability=beta
  * @availability serverless stability=beta visibility=public
diff --git a/specification/connector/post/ConnectorPostRequest.ts b/specification/connector/post/ConnectorPostRequest.ts
index c9d2d0816d..5062c10df5 100644
--- a/specification/connector/post/ConnectorPostRequest.ts
+++ b/specification/connector/post/ConnectorPostRequest.ts
@@ -20,7 +20,11 @@ import { RequestBase } from '@_types/Base'
 import { IndexName } from '@_types/common'
 
 /**
- * Creates a connector.
+ * Create a connector.
+ *
+ * Connectors are Elasticsearch integrations that bring content from third-party data sources, which can be deployed on Elastic Cloud or hosted on your own infrastructure.
+ * Elastic managed connectors (Native connectors) are a managed service on Elastic Cloud.
+ * Self-managed connectors (Connector clients) are self-managed on your infrastructure.
  * @rest_spec_name connector.post
  * @availability stack since=8.12.0 stability=beta
  * @availability serverless stability=beta visibility=public
diff --git a/specification/connector/put/ConnectorPutRequest.ts b/specification/connector/put/ConnectorPutRequest.ts
index 10ce3fb8e9..579f47b31f 100644
--- a/specification/connector/put/ConnectorPutRequest.ts
+++ b/specification/connector/put/ConnectorPutRequest.ts
@@ -20,7 +20,7 @@ import { RequestBase } from '@_types/Base'
 import { Id, IndexName } from '@_types/common'
 
 /**
- * Creates or updates a connector.
+ * Create or update a connector.
  * @rest_spec_name connector.put
  * @availability stack since=8.12.0 stability=beta
  * @availability serverless stability=beta visibility=public
diff --git a/specification/connector/sync_job_cancel/SyncJobCancelRequest.ts b/specification/connector/sync_job_cancel/SyncJobCancelRequest.ts
index 27a89047a6..ec5841760f 100644
--- a/specification/connector/sync_job_cancel/SyncJobCancelRequest.ts
+++ b/specification/connector/sync_job_cancel/SyncJobCancelRequest.ts
@@ -20,7 +20,10 @@ import { RequestBase } from '@_types/Base'
 import { Id } from '@_types/common'
 
 /**
- * Cancels a connector sync job.
+ * Cancel a connector sync job.
+ *
+ * Cancel a connector sync job, which sets the status to cancelling and updates `cancellation_requested_at` to the current time.
+ * The connector service is then responsible for setting the status of connector sync jobs to cancelled.
  * @rest_spec_name connector.sync_job_cancel
  * @availability stack since=8.12.0 stability=beta
  * @availability serverless stability=beta visibility=public
diff --git a/specification/connector/sync_job_delete/SyncJobDeleteRequest.ts b/specification/connector/sync_job_delete/SyncJobDeleteRequest.ts
index 19aad70b22..49b0edd1a2 100644
--- a/specification/connector/sync_job_delete/SyncJobDeleteRequest.ts
+++ b/specification/connector/sync_job_delete/SyncJobDeleteRequest.ts
@@ -20,7 +20,10 @@ import { RequestBase } from '@_types/Base'
 import { Id } from '@_types/common'
 
 /**
- * Deletes a connector sync job.
+ * Delete a connector sync job.
+ *
+ * Remove a connector sync job and its associated data.
+ * This is a destructive action that is not recoverable.
  * @rest_spec_name connector.sync_job_delete
  * @availability stack since=8.12.0 stability=beta
  * @availability serverless stability=beta visibility=public
diff --git a/specification/connector/sync_job_get/SyncJobGetRequest.ts b/specification/connector/sync_job_get/SyncJobGetRequest.ts
index cf2753871b..2310a95b57 100644
--- a/specification/connector/sync_job_get/SyncJobGetRequest.ts
+++ b/specification/connector/sync_job_get/SyncJobGetRequest.ts
@@ -20,7 +20,7 @@ import { RequestBase } from '@_types/Base'
 import { Id } from '@_types/common'
 
 /**
- * Retrieves a connector sync job.
+ * Get a connector sync job.
  * @rest_spec_name connector.sync_job_get
  * @availability stack since=8.12.0 stability=beta
  * @availability serverless stability=beta visibility=public
diff --git a/specification/connector/sync_job_list/SyncJobListRequest.ts b/specification/connector/sync_job_list/SyncJobListRequest.ts
index ab2637233e..1693640a2d 100644
--- a/specification/connector/sync_job_list/SyncJobListRequest.ts
+++ b/specification/connector/sync_job_list/SyncJobListRequest.ts
@@ -23,7 +23,9 @@ import { SyncStatus } from '../_types/Connector'
 import { SyncJobType } from '../_types/SyncJob'
 
 /**
- * Lists connector sync jobs.
+ * Get all connector sync jobs.
+ *
+ * Get information about all stored connector sync jobs listed by their creation date in ascending order.
  * @rest_spec_name connector.sync_job_list
  * @availability stack since=8.12.0 stability=beta
  * @availability serverless stability=beta visibility=public
diff --git a/specification/connector/sync_job_post/SyncJobPostRequest.ts b/specification/connector/sync_job_post/SyncJobPostRequest.ts
index be386dbbb0..27b9bfca50 100644
--- a/specification/connector/sync_job_post/SyncJobPostRequest.ts
+++ b/specification/connector/sync_job_post/SyncJobPostRequest.ts
@@ -21,7 +21,9 @@ import { Id } from '@_types/common'
 import { SyncJobTriggerMethod, SyncJobType } from '../_types/SyncJob'
 
 /**
- * Creates a connector sync job.
+ * Create a connector sync job.
+ *
+ * Create a connector sync job document in the internal index and initialize its counters and timestamps with default values.
  * @rest_spec_name connector.sync_job_post
  * @availability stack since=8.12.0 stability=beta
  * @availability serverless stability=beta visibility=public
diff --git a/specification/connector/update_active_filtering/ConnectorUpdateActiveFilteringRequest.ts b/specification/connector/update_active_filtering/ConnectorUpdateActiveFilteringRequest.ts
index a92fb2b7bc..d82acff0bb 100644
--- a/specification/connector/update_active_filtering/ConnectorUpdateActiveFilteringRequest.ts
+++ b/specification/connector/update_active_filtering/ConnectorUpdateActiveFilteringRequest.ts
@@ -20,6 +20,8 @@ import { RequestBase } from '@_types/Base'
 import { Id } from '@_types/common'
 
 /**
+ * Activate the connector draft filter.
+ *
  * Activates the valid draft filtering for a connector.
  * @rest_spec_name connector.update_active_filtering
  * @availability stack since=8.12.0 stability=experimental
diff --git a/specification/connector/update_api_key_id/ConnectorUpdateAPIKeyIDRequest.ts b/specification/connector/update_api_key_id/ConnectorUpdateAPIKeyIDRequest.ts
index e7305bbc2d..6ef8fc506b 100644
--- a/specification/connector/update_api_key_id/ConnectorUpdateAPIKeyIDRequest.ts
+++ b/specification/connector/update_api_key_id/ConnectorUpdateAPIKeyIDRequest.ts
@@ -19,7 +19,12 @@
 import { RequestBase } from '@_types/Base'
 import { Id } from '@_types/common'
 /**
- * Updates the API key id in the connector document
+ * Update the connector API key ID.
+ *
+ * Update the `api_key_id` and `api_key_secret_id` fields of a connector.
+ * You can specify the ID of the API key used for authorization and the ID of the connector secret where the API key is stored.
+ * The connector secret ID is required only for Elastic managed (native) connectors.
+ * Self-managed connectors (connector clients) do not use this field.
  * @rest_spec_name connector.update_api_key_id
  * @availability stack since=8.12.0 stability=beta
  * @availability serverless stability=beta visibility=public
diff --git a/specification/connector/update_configuration/ConnectorUpdateConfigurationRequest.ts b/specification/connector/update_configuration/ConnectorUpdateConfigurationRequest.ts
index 06a2febc8f..531c8812d4 100644
--- a/specification/connector/update_configuration/ConnectorUpdateConfigurationRequest.ts
+++ b/specification/connector/update_configuration/ConnectorUpdateConfigurationRequest.ts
@@ -23,7 +23,9 @@ import { Id } from '@_types/common'
 import { ConnectorConfiguration } from '../_types/Connector'
 
 /**
- * Updates the configuration field in the connector document
+ * Update the connector configuration.
+ *
+ * Update the configuration field in the connector document.
  * @rest_spec_name connector.update_configuration
  * @availability stack since=8.12.0 stability=beta
  * @availability serverless stability=beta visibility=public
diff --git a/specification/connector/update_error/ConnectorUpdateErrorRequest.ts b/specification/connector/update_error/ConnectorUpdateErrorRequest.ts
index a7b81e52ea..99d268d026 100644
--- a/specification/connector/update_error/ConnectorUpdateErrorRequest.ts
+++ b/specification/connector/update_error/ConnectorUpdateErrorRequest.ts
@@ -21,7 +21,11 @@ import { RequestBase } from '@_types/Base'
 import { Id } from '@_types/common'
 
 /**
- * Updates the filtering field in the connector document
+ * Update the connector error field.
+ *
+ * Set the error field for the connector.
+ * If the error provided in the request body is non-null, the connector’s status is updated to error.
+ * Otherwise, if the error is reset to null, the connector status is updated to connected.
  * @rest_spec_name connector.update_error
  * @availability stack since=8.12.0 stability=experimental
  * @availability serverless stability=experimental visibility=public
diff --git a/specification/connector/update_filtering/ConnectorUpdateFilteringRequest.ts b/specification/connector/update_filtering/ConnectorUpdateFilteringRequest.ts
index 198bb87320..db09904c15 100644
--- a/specification/connector/update_filtering/ConnectorUpdateFilteringRequest.ts
+++ b/specification/connector/update_filtering/ConnectorUpdateFilteringRequest.ts
@@ -25,7 +25,11 @@ import {
 } from '../_types/Connector'
 
 /**
- * Updates the filtering field in the connector document
+ * Update the connector filtering.
+ *
+ * Update the draft filtering configuration of a connector and marks the draft validation state as edited.
+ * The filtering draft is activated once validated by the running Elastic connector service.
+ * The filtering property is used to configure sync rules (both basic and advanced) for a connector.
  * @rest_spec_name connector.update_filtering
  * @availability stack since=8.12.0 stability=beta
  * @availability serverless stability=beta visibility=public
diff --git a/specification/connector/update_filtering_validation/ConnectorUpdateFilteringValidationRequest.ts b/specification/connector/update_filtering_validation/ConnectorUpdateFilteringValidationRequest.ts
index bbdb80f4ac..4fe343e682 100644
--- a/specification/connector/update_filtering_validation/ConnectorUpdateFilteringValidationRequest.ts
+++ b/specification/connector/update_filtering_validation/ConnectorUpdateFilteringValidationRequest.ts
@@ -21,7 +21,9 @@ import { Id } from '@_types/common'
 import { FilteringRulesValidation } from 'connector/_types/Connector'
 
 /**
- * Updates the draft filtering validation info for a connector.
+ * Update the connector draft filtering validation.
+ *
+ * Update the draft filtering validation info for a connector.
  * @rest_spec_name connector.update_filtering_validation
  * @availability stack since=8.12.0 stability=experimental
  * @availability serverless stability=experimental visibility=public
diff --git a/specification/connector/update_index_name/ConnectorUpdateIndexNameRequest.ts b/specification/connector/update_index_name/ConnectorUpdateIndexNameRequest.ts
index 74dc1ca0bf..8e7b48593a 100644
--- a/specification/connector/update_index_name/ConnectorUpdateIndexNameRequest.ts
+++ b/specification/connector/update_index_name/ConnectorUpdateIndexNameRequest.ts
@@ -21,7 +21,9 @@ import { RequestBase } from '@_types/Base'
 import { Id, IndexName } from '@_types/common'
 
 /**
- * Updates the index_name in the connector document
+ * Update the connector index name.
+ *
+ * Update the `index_name` field of a connector, specifying the index where the data ingested by the connector is stored.
  * @rest_spec_name connector.update_index_name
  * @availability stack since=8.12.0 stability=beta
  * @availability serverless stability=beta visibility=public
diff --git a/specification/connector/update_name/ConnectorUpdateNameRequest.ts b/specification/connector/update_name/ConnectorUpdateNameRequest.ts
index a50fbd06ea..b381fc4d3c 100644
--- a/specification/connector/update_name/ConnectorUpdateNameRequest.ts
+++ b/specification/connector/update_name/ConnectorUpdateNameRequest.ts
@@ -20,7 +20,7 @@ import { RequestBase } from '@_types/Base'
 import { Id } from '@_types/common'
 
 /**
- * Updates the name and description fields in the connector document
+ * Update the connector name and description.
  * @rest_spec_name connector.update_name
  * @availability stack since=8.12.0 stability=beta
  * @availability serverless stability=beta visibility=public
diff --git a/specification/connector/update_native/ConnectorUpdateNativeRequest.ts b/specification/connector/update_native/ConnectorUpdateNativeRequest.ts
index 0c180055ca..0f9bbfb54c 100644
--- a/specification/connector/update_native/ConnectorUpdateNativeRequest.ts
+++ b/specification/connector/update_native/ConnectorUpdateNativeRequest.ts
@@ -20,7 +20,7 @@ import { RequestBase } from '@_types/Base'
 import { Id } from '@_types/common'
 
 /**
- * Updates the is_native flag in the connector document
+ * Update the connector is_native flag.
  * @rest_spec_name connector.update_native
  * @availability stack since=8.12.0 stability=beta
  * @availability serverless stability=beta visibility=public
diff --git a/specification/connector/update_pipeline/ConnectorUpdatePipelineRequest.ts b/specification/connector/update_pipeline/ConnectorUpdatePipelineRequest.ts
index bcd7f80638..cdeb6e8c1c 100644
--- a/specification/connector/update_pipeline/ConnectorUpdatePipelineRequest.ts
+++ b/specification/connector/update_pipeline/ConnectorUpdatePipelineRequest.ts
@@ -21,7 +21,9 @@ import { Id } from '@_types/common'
 import { IngestPipelineParams } from '../_types/Connector'
 
 /**
- * Updates the pipeline field in the connector document
+ * Update the connector pipeline.
+ *
+ * When you create a new connector, the configuration of an ingest pipeline is populated with default settings.
  * @rest_spec_name connector.update_pipeline
  * @availability stack since=8.12.0 stability=beta
  * @availability serverless stability=beta visibility=public
diff --git a/specification/connector/update_scheduling/ConnectorUpdateSchedulingRequest.ts b/specification/connector/update_scheduling/ConnectorUpdateSchedulingRequest.ts
index dfc368c874..2eba24d783 100644
--- a/specification/connector/update_scheduling/ConnectorUpdateSchedulingRequest.ts
+++ b/specification/connector/update_scheduling/ConnectorUpdateSchedulingRequest.ts
@@ -21,7 +21,7 @@ import { Id } from '@_types/common'
 import { SchedulingConfiguration } from '../_types/Connector'
 
 /**
- * Updates the scheduling field in the connector document
+ * Update the connector scheduling.
  * @rest_spec_name connector.update_scheduling
  * @availability stack since=8.12.0 stability=beta
  * @availability serverless stability=beta visibility=public
diff --git a/specification/connector/update_service_type/ConnectorUpdateServiceTypeRequest.ts b/specification/connector/update_service_type/ConnectorUpdateServiceTypeRequest.ts
index 565c3821af..e8b29ea071 100644
--- a/specification/connector/update_service_type/ConnectorUpdateServiceTypeRequest.ts
+++ b/specification/connector/update_service_type/ConnectorUpdateServiceTypeRequest.ts
@@ -20,7 +20,7 @@ import { RequestBase } from '@_types/Base'
 import { Id } from '@_types/common'
 
 /**
- * Updates the service type of the connector
+ * Update the connector service type.
  * @rest_spec_name connector.update_service_type
  * @availability stack since=8.12.0 stability=beta
  * @availability serverless stability=beta visibility=public
diff --git a/specification/connector/update_status/ConnectorUpdateStatusRequest.ts b/specification/connector/update_status/ConnectorUpdateStatusRequest.ts
index e1242c0e47..9d4cc8dd7b 100644
--- a/specification/connector/update_status/ConnectorUpdateStatusRequest.ts
+++ b/specification/connector/update_status/ConnectorUpdateStatusRequest.ts
@@ -21,7 +21,7 @@ import { Id } from '@_types/common'
 import { ConnectorStatus } from '../_types/Connector'
 
 /**
- * Updates the status of the connector
+ * Update the connector status.
  * @rest_spec_name connector.update_status
  * @availability stack since=8.12.0 stability=experimental
  * @availability serverless stability=experimental visibility=public
diff --git a/specification/dangling_indices/delete_dangling_index/DeleteDanglingIndexRequest.ts b/specification/dangling_indices/delete_dangling_index/DeleteDanglingIndexRequest.ts
index 914457e8c4..ae4135c600 100644
--- a/specification/dangling_indices/delete_dangling_index/DeleteDanglingIndexRequest.ts
+++ b/specification/dangling_indices/delete_dangling_index/DeleteDanglingIndexRequest.ts
@@ -22,14 +22,25 @@ import { Uuid } from '@_types/common'
 import { Duration } from '@_types/Time'
 
 /**
+ * Delete a dangling index.
+ *
+ * If Elasticsearch encounters index data that is absent from the current cluster state, those indices are considered to be dangling.
+ * For example, this can happen if you delete more than `cluster.indices.tombstones.size` indices while an Elasticsearch node is offline.
  * @rest_spec_name dangling_indices.delete_dangling_index
  * @availability stack since=7.9.0 stability=stable
+ * @doc_tag indices
  */
 export interface Request extends RequestBase {
   path_parts: {
+    /**
+     * The UUID of the index to delete. Use the get dangling indices API to find the UUID.
+     */
     index_uuid: Uuid
   }
   query_parameters: {
+    /**
+     * This parameter must be set to true to acknowledge that it will no longer be possible to recove data from the dangling index.
+     */
     accept_data_loss: boolean
     master_timeout?: Duration
     timeout?: Duration
diff --git a/specification/dangling_indices/import_dangling_index/ImportDanglingIndexRequest.ts b/specification/dangling_indices/import_dangling_index/ImportDanglingIndexRequest.ts
index 25503373b8..559280bf85 100644
--- a/specification/dangling_indices/import_dangling_index/ImportDanglingIndexRequest.ts
+++ b/specification/dangling_indices/import_dangling_index/ImportDanglingIndexRequest.ts
@@ -22,14 +22,26 @@ import { Uuid } from '@_types/common'
 import { Duration } from '@_types/Time'
 
 /**
+ * Import a dangling index.
+ *
+ * If Elasticsearch encounters index data that is absent from the current cluster state, those indices are considered to be dangling.
+ * For example, this can happen if you delete more than `cluster.indices.tombstones.size` indices while an Elasticsearch node is offline.
  * @rest_spec_name dangling_indices.import_dangling_index
  * @availability stack since=7.9.0 stability=stable
+ * @doc_tag indices
  */
 export interface Request extends RequestBase {
   path_parts: {
+    /**
+     * The UUID of the index to import. Use the get dangling indices API to locate the UUID.
+     */
     index_uuid: Uuid
   }
   query_parameters: {
+    /**
+     * This parameter must be set to true to import a dangling index.
+     * Because Elasticsearch cannot know where the dangling index data came from or determine which shard copies are fresh and which are stale, it cannot guarantee that the imported data represents the latest state of the index when it was last in the cluster.
+     */
     accept_data_loss: boolean
     master_timeout?: Duration
     timeout?: Duration
diff --git a/specification/dangling_indices/list_dangling_indices/ListDanglingIndicesRequest.ts b/specification/dangling_indices/list_dangling_indices/ListDanglingIndicesRequest.ts
index 9d4479fe2e..1a99461891 100644
--- a/specification/dangling_indices/list_dangling_indices/ListDanglingIndicesRequest.ts
+++ b/specification/dangling_indices/list_dangling_indices/ListDanglingIndicesRequest.ts
@@ -20,7 +20,14 @@
 import { RequestBase } from '@_types/Base'
 
 /**
+ * Get the dangling indices.
+ *
+ * If Elasticsearch encounters index data that is absent from the current cluster state, those indices are considered to be dangling.
+ * For example, this can happen if you delete more than `cluster.indices.tombstones.size` indices while an Elasticsearch node is offline.
+ *
+ * Use this API to list dangling indices, which you can then import or delete.
  * @rest_spec_name dangling_indices.list_dangling_indices
  * @availability stack since=7.9.0 stability=stable
+ * @doc_tag indices
  */
 export interface Request extends RequestBase {}
diff --git a/specification/enrich/execute_policy/ExecuteEnrichPolicyRequest.ts b/specification/enrich/execute_policy/ExecuteEnrichPolicyRequest.ts
index c4149f7196..32095c8f3e 100644
--- a/specification/enrich/execute_policy/ExecuteEnrichPolicyRequest.ts
+++ b/specification/enrich/execute_policy/ExecuteEnrichPolicyRequest.ts
@@ -21,7 +21,8 @@ import { RequestBase } from '@_types/Base'
 import { Name } from '@_types/common'
 
 /**
- * Creates the enrich index for an existing enrich policy.
+ * Run an enrich policy.
+ * Create the enrich index for an existing enrich policy.
  * @doc_id execute-enrich-policy-api
  * @rest_spec_name enrich.execute_policy
  * @availability stack since=7.5.0 stability=stable
diff --git a/specification/enrich/execute_policy/ExecuteEnrichPolicyResponse.ts b/specification/enrich/execute_policy/ExecuteEnrichPolicyResponse.ts
index 493d063a6e..41f54272ac 100644
--- a/specification/enrich/execute_policy/ExecuteEnrichPolicyResponse.ts
+++ b/specification/enrich/execute_policy/ExecuteEnrichPolicyResponse.ts
@@ -23,6 +23,6 @@ import { ExecuteEnrichPolicyStatus } from './types'
 export class Response {
   body: {
     status?: ExecuteEnrichPolicyStatus
-    task_id?: TaskId
+    task?: TaskId
   }
 }
diff --git a/specification/enrich/execute_policy/types.ts b/specification/enrich/execute_policy/types.ts
index 9a9a21b011..0ed4f57189 100644
--- a/specification/enrich/execute_policy/types.ts
+++ b/specification/enrich/execute_policy/types.ts
@@ -19,11 +19,13 @@
 
 export class ExecuteEnrichPolicyStatus {
   phase: EnrichPolicyPhase
+  step?: string
 }
 
 export enum EnrichPolicyPhase {
   SCHEDULED,
   RUNNING,
   COMPLETE,
-  FAILED
+  FAILED,
+  CANCELLED
 }
diff --git a/specification/eql/delete/EqlDeleteRequest.ts b/specification/eql/delete/EqlDeleteRequest.ts
index a25a673f7b..98178c64d2 100644
--- a/specification/eql/delete/EqlDeleteRequest.ts
+++ b/specification/eql/delete/EqlDeleteRequest.ts
@@ -21,7 +21,8 @@ import { RequestBase } from '@_types/Base'
 import { Id } from '@_types/common'
 
 /**
- * Deletes an async EQL search or a stored synchronous EQL search.
+ * Delete an async EQL search.
+ * Delete an async EQL search or a stored synchronous EQL search.
  * The API also deletes results for the search.
  * @rest_spec_name eql.delete
  * @availability stack since=7.9.0 stability=stable
diff --git a/specification/eql/get/EqlGetRequest.ts b/specification/eql/get/EqlGetRequest.ts
index 9e492feeff..40210d77bf 100644
--- a/specification/eql/get/EqlGetRequest.ts
+++ b/specification/eql/get/EqlGetRequest.ts
@@ -22,7 +22,8 @@ import { Id } from '@_types/common'
 import { Duration } from '@_types/Time'
 
 /**
- * Returns the current status and available results for an async EQL search or a stored synchronous EQL search.
+ * Get async EQL search results.
+ * Get the current status and available results for an async EQL search or a stored synchronous EQL search.
  * @doc_id eql-async-search-api
  * @rest_spec_name eql.get
  * @availability stack since=7.9.0 stability=stable
diff --git a/specification/eql/get_status/EqlGetStatusRequest.ts b/specification/eql/get_status/EqlGetStatusRequest.ts
index 8195defc13..2510f61214 100644
--- a/specification/eql/get_status/EqlGetStatusRequest.ts
+++ b/specification/eql/get_status/EqlGetStatusRequest.ts
@@ -21,7 +21,8 @@ import { RequestBase } from '@_types/Base'
 import { Id } from '@_types/common'
 
 /**
- * Returns the current status for an async EQL search or a stored synchronous EQL search without returning results.
+ * Get the async EQL status.
+ * Get the current status for an async EQL search or a stored synchronous EQL search without returning results.
  * @doc_id eql-async-search-status-api
  * @rest_spec_name eql.get_status
  * @availability stack since=7.9.0 stability=stable
diff --git a/specification/eql/get_status/EqlGetStatusResponseExample1.json b/specification/eql/get_status/EqlGetStatusResponseExample1.json
new file mode 100644
index 0000000000..fba73dce2e
--- /dev/null
+++ b/specification/eql/get_status/EqlGetStatusResponseExample1.json
@@ -0,0 +1,7 @@
+{
+  "summary": "A successful response for getting status information for an async EQL search.",
+  "description": "",
+  "type": "response",
+  "response_code": 200,
+  "value": "{\n  \"id\" : \"FmNJRUZ1YWZCU3dHY1BIOUhaenVSRkEaaXFlZ3h4c1RTWFNocDdnY2FSaERnUTozNDE=\",\n  \"is_running\" : true,\n  \"is_partial\" : true,\n  \"start_time_in_millis\" : 1611690235000,\n  \"expiration_time_in_millis\" : 1611690295000\n\n}"
+}
diff --git a/specification/eql/search/EqlSearchRequest.ts b/specification/eql/search/EqlSearchRequest.ts
index 99d661d673..87c5c3293f 100644
--- a/specification/eql/search/EqlSearchRequest.ts
+++ b/specification/eql/search/EqlSearchRequest.ts
@@ -26,9 +26,13 @@ import { Duration } from '@_types/Time'
 import { ResultPosition } from './types'
 
 /**
+ * Get EQL search results.
+ * Returns search results for an Event Query Language (EQL) query.
+ * EQL assumes each document in a data stream or index corresponds to an event.
  * @rest_spec_name eql.search
  * @availability stack since=7.9.0 stability=stable
  * @availability serverless stability=stable visibility=public
+ * @ext_doc_id eql
  */
 export interface Request extends RequestBase {
   path_parts: {
diff --git a/specification/eql/search/EqlSearchRequestExample1.json b/specification/eql/search/EqlSearchRequestExample1.json
new file mode 100644
index 0000000000..c70b89e3da
--- /dev/null
+++ b/specification/eql/search/EqlSearchRequestExample1.json
@@ -0,0 +1,7 @@
+{
+  "summary": "Returns search results for an EQL query.",
+  "method_request": "GET /my-data-stream/_eql/search",
+  "description": "",
+  "type": "request",
+  "value": "{\n  \"query\": \"\"\"\n    process where process.name == \"regsvr32.exe\"\n  \"\"\"\n}"
+}
diff --git a/specification/eql/search/EqlSearchRequestExample2.json b/specification/eql/search/EqlSearchRequestExample2.json
new file mode 100644
index 0000000000..cdc83203bf
--- /dev/null
+++ b/specification/eql/search/EqlSearchRequestExample2.json
@@ -0,0 +1,7 @@
+{
+  "summary": "Returns search results for an EQL query",
+  "method_request": "GET /my-data-stream/_eql/search",
+  "description": "",
+  "type": "request",
+  "value": "{\n  \"query\": \"\"\"\n    process where (process.name == \"cmd.exe\" and process.pid != 2013)\n  \"\"\"\n}"
+}
diff --git a/specification/eql/search/EqlSearchResponseExample2.json b/specification/eql/search/EqlSearchResponseExample2.json
new file mode 100644
index 0000000000..e35c6b3b1c
--- /dev/null
+++ b/specification/eql/search/EqlSearchResponseExample2.json
@@ -0,0 +1,7 @@
+{
+  "summary": "A successful response for performing search with an EQL query.",
+  "description": "",
+  "type": "response",
+  "response_code": 200,
+  "value": "{\n  \"is_partial\": false,\n  \"is_running\": false,\n  \"took\": 6,\n  \"timed_out\": false,\n  \"hits\": {\n    \"total\": {\n      \"value\": 1,\n      \"relation\": \"eq\"\n    },\n    \"sequences\": [\n      {\n        \"join_keys\": [\n          2012\n        ],\n        \"events\": [\n          {\n            \"_index\": \".ds-my-data-stream-2099.12.07-000001\",\n            \"_id\": \"AtOJ4UjUBAAx3XR5kcCM\",\n            \"_source\": {\n              \"@timestamp\": \"2099-12-06T11:04:07.000Z\",\n              \"event\": {\n                \"category\": \"file\",\n                \"id\": \"dGCHwoeS\",\n                \"sequence\": 2\n              },\n              \"file\": {\n                \"accessed\": \"2099-12-07T11:07:08.000Z\",\n                \"name\": \"cmd.exe\",\n                \"path\": \"C:\\\\Windows\\\\System32\\\\cmd.exe\",\n                \"type\": \"file\",\n                \"size\": 16384\n              },\n              \"process\": {\n                \"pid\": 2012,\n                \"name\": \"cmd.exe\",\n                \"executable\": \"C:\\\\Windows\\\\System32\\\\cmd.exe\"\n              }\n            }\n          },\n          {\n            \"_index\": \".ds-my-data-stream-2099.12.07-000001\",\n            \"_id\": \"OQmfCaduce8zoHT93o4H\",\n            \"_source\": {\n              \"@timestamp\": \"2099-12-07T11:07:09.000Z\",\n              \"event\": {\n                \"category\": \"process\",\n                \"id\": \"aR3NWVOs\",\n                \"sequence\": 4\n              },\n              \"process\": {\n                \"pid\": 2012,\n                \"name\": \"regsvr32.exe\",\n                \"command_line\": \"regsvr32.exe  /s /u /i:https://...RegSvr32.sct scrobj.dll\",\n                \"executable\": \"C:\\\\Windows\\\\System32\\\\regsvr32.exe\"\n              }\n            }\n          }\n        ]\n      }\n    ]\n  }\n}"
+}
diff --git a/specification/esql/query/EsqlQueryApiRequestExample1.json b/specification/esql/query/EsqlQueryApiRequestExample1.json
new file mode 100644
index 0000000000..40668e4211
--- /dev/null
+++ b/specification/esql/query/EsqlQueryApiRequestExample1.json
@@ -0,0 +1,7 @@
+{
+  "summary": "Returns results for an ES|QL query.",
+  "method_request": "POST /_query",
+  "description": "",
+  "type": "request",
+  "value": "{\n  \"query\": \"\"\"\n    FROM library\n    | EVAL year = DATE_TRUNC(1 YEARS, release_date)\n    | STATS MAX(page_count) BY year\n    | SORT year\n    | LIMIT 5\n  \"\"\"\n}"
+}
diff --git a/specification/esql/query/QueryRequest.ts b/specification/esql/query/QueryRequest.ts
index 44ba0d0953..2c56dc5914 100644
--- a/specification/esql/query/QueryRequest.ts
+++ b/specification/esql/query/QueryRequest.ts
@@ -24,11 +24,13 @@ import { FieldValue } from '@_types/common'
 import { QueryContainer } from '@_types/query_dsl/abstractions'
 
 /**
- * Executes an ES|QL request
+ * Run an ES|QL query.
+ * Get search results for an ES|QL (Elasticsearch query language) query.
  * @rest_spec_name esql.query
  * @availability stack since=8.11.0
  * @availability serverless
  * @doc_id esql-query
+ * @ext_doc_id esql
  */
 export interface Request extends RequestBase {
   query_parameters: {
diff --git a/specification/features/get_features/FeaturesApiResponseExample1.json b/specification/features/get_features/FeaturesApiResponseExample1.json
new file mode 100644
index 0000000000..74d1988e48
--- /dev/null
+++ b/specification/features/get_features/FeaturesApiResponseExample1.json
@@ -0,0 +1,7 @@
+{
+  "summary": "A successful response for retrieving a list of feature states that can be included when taking a snapshot.",
+  "description": "",
+  "type": "response",
+  "response_code": 200,
+  "value": "{\n    \"features\": [\n        {\n            \"name\": \"tasks\",\n            \"description\": \"Manages task results\"\n        },\n        {\n            \"name\": \"kibana\",\n            \"description\": \"Manages Kibana configuration and reports\"\n        }\n    ]\n}"
+}
diff --git a/specification/features/reset_features/ResetFeaturesResponseExample1.json b/specification/features/reset_features/ResetFeaturesResponseExample1.json
new file mode 100644
index 0000000000..cb4a805e69
--- /dev/null
+++ b/specification/features/reset_features/ResetFeaturesResponseExample1.json
@@ -0,0 +1,7 @@
+{
+  "summary": "A successful response for clearing state information stored in system indices by Elasticsearch features.",
+  "description": "",
+  "type": "response",
+  "response_code": 200,
+  "value": "{\n  \"features\" : [\n    {\n      \"feature_name\" : \"security\",\n      \"status\" : \"SUCCESS\"\n    },\n    {\n      \"feature_name\" : \"tasks\",\n      \"status\" : \"SUCCESS\"\n    }\n  ]\n}"
+}
diff --git a/specification/graph/explore/GraphExploreRequest.ts b/specification/graph/explore/GraphExploreRequest.ts
index c3c4393c73..797cd5b371 100644
--- a/specification/graph/explore/GraphExploreRequest.ts
+++ b/specification/graph/explore/GraphExploreRequest.ts
@@ -26,11 +26,17 @@ import { ExploreControls } from '../_types/ExploreControls'
 import { Hop } from '../_types/Hop'
 
 /**
- * Extracts and summarizes information about the documents and terms in an Elasticsearch data stream or index.
+ * Explore graph analytics.
+ * Extract and summarize information about the documents and terms in an Elasticsearch data stream or index.
+ * The easiest way to understand the behavior of this API is to use the Graph UI to explore connections.
+ * An initial request to the `_explore` API contains a seed query that identifies the documents of interest and specifies the fields that define the vertices and connections you want to include in the graph.
+ * Subsequent requests enable you to spider out from one more vertices of interest.
+ * You can exclude vertices that have already been returned.
  * @doc_id graph-explore-api
  * @rest_spec_name graph.explore
  * @availability stack stability=stable
  * @availability serverless stability=stable visibility=public
+ * @ext_doc_id graph
  */
 export interface Request extends RequestBase {
   path_parts: {
diff --git a/specification/graph/explore/graphExploreRequestExample1.json b/specification/graph/explore/graphExploreRequestExample1.json
new file mode 100644
index 0000000000..2d0a7f7632
--- /dev/null
+++ b/specification/graph/explore/graphExploreRequestExample1.json
@@ -0,0 +1,7 @@
+{
+  "summary": "An initial graph explore query to identify strongly related terms.",
+  "method_request": "POST clicklogs/_graph/explore",
+  "description": "",
+  "type": "request",
+  "value": "{\n  \"query\": {\n    \"match\": {\n      \"query.raw\": \"midi\"\n    }\n  },\n  \"vertices\": [\n    {\n      \"field\": \"product\"\n    }\n  ],\n  \"connections\": {\n    \"vertices\": [\n      {\n        \"field\": \"query.raw\"\n      }\n    ]\n  }\n}"
+}
diff --git a/specification/ilm/delete_lifecycle/DeleteLifecycleRequest.ts b/specification/ilm/delete_lifecycle/DeleteLifecycleRequest.ts
index 42832e44d0..90b4136d16 100644
--- a/specification/ilm/delete_lifecycle/DeleteLifecycleRequest.ts
+++ b/specification/ilm/delete_lifecycle/DeleteLifecycleRequest.ts
@@ -22,8 +22,8 @@ import { Name } from '@_types/common'
 import { Duration } from '@_types/Time'
 
 /**
- * Deletes the specified lifecycle policy definition. You cannot delete policies that are currently in use. If the policy is being used to manage any indices, the request fails and returns an error.
- *
+ * Delete a lifecycle policy.
+ * You cannot delete policies that are currently in use. If the policy is being used to manage any indices, the request fails and returns an error.
  * @rest_spec_name ilm.delete_lifecycle
  * @availability stack since=6.6.0 stability=stable
  * @cluster_privileges manage_ilm
diff --git a/specification/autoscaling/put_autoscaling_policy/autoscalingApisPutAutoscalingPolicyResponseExample1.json b/specification/ilm/delete_lifecycle/DeleteLifecycleResponseExample1.json
similarity index 60%
rename from specification/autoscaling/put_autoscaling_policy/autoscalingApisPutAutoscalingPolicyResponseExample1.json
rename to specification/ilm/delete_lifecycle/DeleteLifecycleResponseExample1.json
index 5bcdde84b9..e1475de8c1 100644
--- a/specification/autoscaling/put_autoscaling_policy/autoscalingApisPutAutoscalingPolicyResponseExample1.json
+++ b/specification/ilm/delete_lifecycle/DeleteLifecycleResponseExample1.json
@@ -1,5 +1,5 @@
 {
-  "summary": "A successful response when creating an autoscaling policy.",
+  "summary": "A successful response when deleting a lifecycle policy.",
   "description": "",
   "type": "response",
   "response_code": 200,
diff --git a/specification/ilm/explain_lifecycle/ExplainLifecycleRequest.ts b/specification/ilm/explain_lifecycle/ExplainLifecycleRequest.ts
index d981a4f62c..7eacbdaf41 100644
--- a/specification/ilm/explain_lifecycle/ExplainLifecycleRequest.ts
+++ b/specification/ilm/explain_lifecycle/ExplainLifecycleRequest.ts
@@ -22,7 +22,11 @@ import { IndexName } from '@_types/common'
 import { Duration } from '@_types/Time'
 
 /**
- * Retrieves information about the index’s current lifecycle state, such as the currently executing phase, action, and step. Shows when the index entered each one, the definition of the running phase, and information about any failures.
+ * Explain the lifecycle state.
+ * Get the current lifecycle status for one or more indices.
+ * For data streams, the API retrieves the current lifecycle status for the stream's backing indices.
+ *
+ * The response indicates when the index entered each lifecycle state, provides the definition of the running phase, and information about any failures.
  * @rest_spec_name ilm.explain_lifecycle
  * @availability stack since=6.6.0 stability=stable
  * @index_privileges view_index_metadata,manage_ilm
diff --git a/specification/ilm/explain_lifecycle/ExplainLifecycleResponseExample1.json b/specification/ilm/explain_lifecycle/ExplainLifecycleResponseExample1.json
new file mode 100644
index 0000000000..88df4c82b3
--- /dev/null
+++ b/specification/ilm/explain_lifecycle/ExplainLifecycleResponseExample1.json
@@ -0,0 +1,7 @@
+{
+  "summary": "A successful response when retrieving the current ILM status for an index.",
+  "description": "",
+  "type": "response",
+  "response_code": 200,
+  "value": "{\n  \"indices\": {\n    \"my-index-000001\": {\n      \"index\": \"my-index-000001\",\n      \"index_creation_date_millis\": 1538475653281,\n      \"index_creation_date\": \"2018-10-15T13:45:21.981Z\",\n      \"time_since_index_creation\": \"15s\",\n      \"managed\": true,\n      \"policy\": \"my_policy\",\n      \"lifecycle_date_millis\": 1538475653281,\n      \"lifecycle_date\": \"2018-10-15T13:45:21.981Z\",\n      \"age\": \"15s\",\n      \"phase\": \"new\",\n      \"phase_time_millis\": 1538475653317,\n      \"phase_time\": \"2018-10-15T13:45:22.577Z\",\n      \"action\": \"complete\"\n      \"action_time_millis\": 1538475653317,\n      \"action_time\": \"2018-10-15T13:45:22.577Z\",\n      \"step\": \"complete\",\n      \"step_time_millis\": 1538475653317,\n      \"step_time\": \"2018-10-15T13:45:22.577Z\"\n    }\n  }\n}"
+}
diff --git a/specification/ilm/get_lifecycle/GetLifecycleRequest.ts b/specification/ilm/get_lifecycle/GetLifecycleRequest.ts
index b5cd8e8d03..8af57f8f35 100644
--- a/specification/ilm/get_lifecycle/GetLifecycleRequest.ts
+++ b/specification/ilm/get_lifecycle/GetLifecycleRequest.ts
@@ -22,7 +22,7 @@ import { Name } from '@_types/common'
 import { Duration } from '@_types/Time'
 
 /**
- * Retrieves a lifecycle policy.
+ * Get lifecycle policies.
  * @rest_spec_name ilm.get_lifecycle
  * @availability stack since=6.6.0 stability=stable
  * @cluster_privileges manage_ilm, read_ilm
diff --git a/specification/ilm/get_lifecycle/GetLifecycleResponseExample1.json b/specification/ilm/get_lifecycle/GetLifecycleResponseExample1.json
new file mode 100644
index 0000000000..a532955ccd
--- /dev/null
+++ b/specification/ilm/get_lifecycle/GetLifecycleResponseExample1.json
@@ -0,0 +1,7 @@
+{
+  "summary": "A successful response when retrieving a lifecycle policy.",
+  "description": "",
+  "type": "response",
+  "response_code": 200,
+  "value": "{\n  \"my_policy\": {\n    \"version\": 1,\n    \"modified_date\": 82392349,\n    \"policy\": {\n      \"phases\": {\n        \"warm\": {\n          \"min_age\": \"10d\",\n          \"actions\": {\n            \"forcemerge\": {\n              \"max_num_segments\": 1\n            }\n          }\n        },\n        \"delete\": {\n          \"min_age\": \"30d\",\n          \"actions\": {\n            \"delete\": {\n              \"delete_searchable_snapshot\": true\n            }\n          }\n        }\n      }\n    },\n    \"in_use_by\" : {\n      \"indices\" : [],\n      \"data_streams\" : [],\n      \"composable_templates\" : []\n    }\n  }\n}"
+}
diff --git a/specification/ilm/get_status/GetILMStatusResponseExample1.json b/specification/ilm/get_status/GetILMStatusResponseExample1.json
new file mode 100644
index 0000000000..6625442df4
--- /dev/null
+++ b/specification/ilm/get_status/GetILMStatusResponseExample1.json
@@ -0,0 +1,7 @@
+{
+  "summary": "A successful response when retrieving the current ILM status.",
+  "description": "",
+  "type": "response",
+  "response_code": 200,
+  "value": "{\n  \"operation_mode\": \"RUNNING\"\n}"
+}
diff --git a/specification/ilm/get_status/GetIlmStatusRequest.ts b/specification/ilm/get_status/GetIlmStatusRequest.ts
index 4cc990cd6b..6c6866bf7a 100644
--- a/specification/ilm/get_status/GetIlmStatusRequest.ts
+++ b/specification/ilm/get_status/GetIlmStatusRequest.ts
@@ -20,7 +20,10 @@
 import { RequestBase } from '@_types/Base'
 
 /**
+ * Get the ILM status.
+ * Get the current index lifecycle management status.
  * @rest_spec_name ilm.get_status
  * @availability stack since=6.6.0 stability=stable
+ * @cluster_privileges read_ilm
  */
 export interface Request extends RequestBase {}
diff --git a/specification/ilm/migrate_to_data_tiers/MigrateToDataTiersRequestExample1.json b/specification/ilm/migrate_to_data_tiers/MigrateToDataTiersRequestExample1.json
new file mode 100644
index 0000000000..d9c927ccbc
--- /dev/null
+++ b/specification/ilm/migrate_to_data_tiers/MigrateToDataTiersRequestExample1.json
@@ -0,0 +1,7 @@
+{
+  "summary": "Migrates indices, ILM policies, and templates from using custom node attributes to using data tiers.",
+  "method_request": "POST /_ilm/migrate_to_data_tiers",
+  "description": "The example migrates the indices, ILM policies, legacy templates, composable, and component templates away from defining custom allocation filtering using the custom_attribute_name node attribute, and deletes the legacy template with name global-template if it exists in the system.",
+  "type": "request",
+  "value": "{\n  \"legacy_template_to_delete\": \"global-template\",\n  \"node_attribute\": \"custom_attribute_name\"\n}"
+}
diff --git a/specification/ilm/migrate_to_data_tiers/MigrateToDataTiersResponseExample1.json b/specification/ilm/migrate_to_data_tiers/MigrateToDataTiersResponseExample1.json
new file mode 100644
index 0000000000..967358c543
--- /dev/null
+++ b/specification/ilm/migrate_to_data_tiers/MigrateToDataTiersResponseExample1.json
@@ -0,0 +1,7 @@
+{
+  "summary": "A successful response when migrating indices, ILMs, and templates from custom node attributes to data tiers.",
+  "description": "",
+  "type": "response",
+  "response_code": 200,
+  "value": "{\n  \"dry_run\": false,\n  \"removed_legacy_template\":\"global-template\",\n  \"migrated_ilm_policies\":[\"policy_with_allocate_action\"],\n  \"migrated_indices\":[\"warm-index-to-migrate-000001\"],\n  \"migrated_legacy_templates\":[\"a-legacy-template\"],\n  \"migrated_composable_templates\":[\"a-composable-template\"],\n  \"migrated_component_templates\":[\"a-component-template\"]\n}"
+}
diff --git a/specification/ilm/migrate_to_data_tiers/Request.ts b/specification/ilm/migrate_to_data_tiers/Request.ts
index e1a0016a53..163630bea8 100644
--- a/specification/ilm/migrate_to_data_tiers/Request.ts
+++ b/specification/ilm/migrate_to_data_tiers/Request.ts
@@ -20,12 +20,23 @@
 import { RequestBase } from '@_types/Base'
 
 /**
- * Switches the indices, ILM policies, and legacy, composable and component templates from using custom node attributes and
- * attribute-based allocation filters to using data tiers, and optionally deletes one legacy index template.+
+ * Migrate to data tiers routing.
+ * Switch the indices, ILM policies, and legacy, composable, and component templates from using custom node attributes and attribute-based allocation filters to using data tiers.
+ * Optionally, delete one legacy index template.
  * Using node roles enables ILM to automatically move the indices between data tiers.
  *
+ * Migrating away from custom node attributes routing can be manually performed.
+ * This API provides an automated way of performing three out of the four manual steps listed in the migration guide:
+ *
+ * 1. Stop setting the custom hot attribute on new indices.
+ * 1. Remove custom allocation settings from existing ILM policies.
+ * 1. Replace custom allocation settings from existing indices with the corresponding tier preference.
+ *
+ * ILM must be stopped before performing the migration.
+ * Use the stop ILM and get ILM status APIs to wait until the reported operation mode is `STOPPED`.
  * @rest_spec_name ilm.migrate_to_data_tiers
  * @availability stack since=7.14.0 stability=stable
+ * @ext_doc_id migrate-index-allocation-filters
  */
 export interface Request extends RequestBase {
   query_parameters: {
diff --git a/specification/ilm/move_to_step/MoveToStepRequest.ts b/specification/ilm/move_to_step/MoveToStepRequest.ts
index 3005e5f99b..6c29091798 100644
--- a/specification/ilm/move_to_step/MoveToStepRequest.ts
+++ b/specification/ilm/move_to_step/MoveToStepRequest.ts
@@ -22,15 +22,30 @@ import { IndexName } from '@_types/common'
 import { StepKey } from './types'
 
 /**
+ * Move to a lifecycle step.
+ * Manually move an index into a specific step in the lifecycle policy and run that step.
+ *
+ * WARNING: This operation can result in the loss of data. Manually moving an index into a specific step runs that step even if it has already been performed. This is a potentially destructive action and this should be considered an expert level API.
+ *
+ * You must specify both the current step and the step to be executed in the body of the request.
+ * The request will fail if the current step does not match the step currently running for the index
+ * This is to prevent the index from being moved from an unexpected step into the next step.
+ *
+ * When specifying the target (`next_step`) to which the index will be moved, either the name or both the action and name fields are optional.
+ * If only the phase is specified, the index will move to the first step of the first action in the target phase.
+ * If the phase and action are specified, the index will move to the first step of the specified action in the specified phase.
+ * Only actions specified in the ILM policy are considered valid.
+ * An index cannot move to a step that is not part of its policy.
  * @rest_spec_name ilm.move_to_step
  * @availability stack since=6.6.0 stability=stable
+ * @index_privileges manage_ilm
  */
 export interface Request extends RequestBase {
   path_parts: {
     index: IndexName
   }
   body: {
-    current_step?: StepKey
-    next_step?: StepKey
+    current_step: StepKey
+    next_step: StepKey
   }
 }
diff --git a/specification/ilm/move_to_step/MoveToStepRequestExample1.json b/specification/ilm/move_to_step/MoveToStepRequestExample1.json
new file mode 100644
index 0000000000..62c1f2cf57
--- /dev/null
+++ b/specification/ilm/move_to_step/MoveToStepRequestExample1.json
@@ -0,0 +1,7 @@
+{
+  "summary": "Triggers execution of a specific step in a lifecycle policy.",
+  "method_request": "POST _ilm/move/my-index-000001",
+  "description": "",
+  "type": "request",
+  "value": "{\n  \"current_step\": {\n    \"phase\": \"new\",\n    \"action\": \"complete\",\n    \"name\": \"complete\"\n  },\n  \"next_step\": {\n    \"phase\": \"warm\",\n    \"action\": \"forcemerge\",\n    \"name\": \"forcemerge\"\n  }\n}"
+}
diff --git a/specification/ilm/move_to_step/MoveToStepResponseExample1.json b/specification/ilm/move_to_step/MoveToStepResponseExample1.json
new file mode 100644
index 0000000000..917e9b0d6b
--- /dev/null
+++ b/specification/ilm/move_to_step/MoveToStepResponseExample1.json
@@ -0,0 +1,7 @@
+{
+  "summary": "A successful response when triggering execution of a specific step in a lifecycle policy.",
+  "description": "",
+  "type": "response",
+  "response_code": 200,
+  "value": "{\n  \"acknowledged\": true\n}"
+}
diff --git a/specification/ilm/move_to_step/types.ts b/specification/ilm/move_to_step/types.ts
index 01d8fca691..f15c0df8fd 100644
--- a/specification/ilm/move_to_step/types.ts
+++ b/specification/ilm/move_to_step/types.ts
@@ -18,7 +18,8 @@
  */
 
 export class StepKey {
-  action: string
-  name: string
+  // action and name are optional in case they are used in next_step
+  action?: string
+  name?: string
   phase: string
 }
diff --git a/specification/ilm/put_lifecycle/PutLifecycleRequest.ts b/specification/ilm/put_lifecycle/PutLifecycleRequest.ts
index 3247d4921c..b9c2e24caa 100644
--- a/specification/ilm/put_lifecycle/PutLifecycleRequest.ts
+++ b/specification/ilm/put_lifecycle/PutLifecycleRequest.ts
@@ -23,11 +23,15 @@ import { Name } from '@_types/common'
 import { Duration } from '@_types/Time'
 
 /**
- * Creates a lifecycle policy. If the specified policy exists, the policy is replaced and the policy version is incremented.
+ * Create or update a lifecycle policy.
+ * If the specified policy exists, it is replaced and the policy version is incremented.
+ *
+ * NOTE: Only the latest version of the policy is stored, you cannot revert to previous versions.
  * @rest_spec_name ilm.put_lifecycle
  * @availability stack since=6.6.0 stability=stable
  * @cluster_privileges manage_ilm
  * @index_privileges manage
+ * @ext_doc_id ilm-index-lifecycle
  */
 export interface Request extends RequestBase {
   path_parts: {
diff --git a/specification/ilm/put_lifecycle/PutLifecycleRequestExample1.json b/specification/ilm/put_lifecycle/PutLifecycleRequestExample1.json
new file mode 100644
index 0000000000..02a9c357cc
--- /dev/null
+++ b/specification/ilm/put_lifecycle/PutLifecycleRequestExample1.json
@@ -0,0 +1,7 @@
+{
+  "summary": "Creates a lifecycle policy.",
+  "method_request": "PUT _ilm/policy/my_policy",
+  "description": "",
+  "type": "request",
+  "value": "{\n  \"policy\": {\n    \"_meta\": {\n      \"description\": \"used for nginx log\",\n      \"project\": {\n        \"name\": \"myProject\",\n        \"department\": \"myDepartment\"\n      }\n    },\n    \"phases\": {\n      \"warm\": {\n        \"min_age\": \"10d\",\n        \"actions\": {\n          \"forcemerge\": {\n            \"max_num_segments\": 1\n          }\n        }\n      },\n      \"delete\": {\n        \"min_age\": \"30d\",\n        \"actions\": {\n          \"delete\": {}\n        }\n      }\n    }\n  }\n}"
+}
diff --git a/specification/ilm/put_lifecycle/PutLifecycleResponseExample1.json b/specification/ilm/put_lifecycle/PutLifecycleResponseExample1.json
new file mode 100644
index 0000000000..2814c68c17
--- /dev/null
+++ b/specification/ilm/put_lifecycle/PutLifecycleResponseExample1.json
@@ -0,0 +1,7 @@
+{
+  "summary": "A successful response when creating a new lifecycle policy.",
+  "description": "",
+  "type": "response",
+  "response_code": 200,
+  "value": "{\n  \"acknowledged\": true\n}"
+}
diff --git a/specification/ilm/remove_policy/RemovePolicyRequest.ts b/specification/ilm/remove_policy/RemovePolicyRequest.ts
index 3731e71d7a..f22a56823b 100644
--- a/specification/ilm/remove_policy/RemovePolicyRequest.ts
+++ b/specification/ilm/remove_policy/RemovePolicyRequest.ts
@@ -21,8 +21,12 @@ import { RequestBase } from '@_types/Base'
 import { IndexName } from '@_types/common'
 
 /**
+ * Remove policies from an index.
+ * Remove the assigned lifecycle policies from an index or a data stream's backing indices.
+ * It also stops managing the indices.
  * @rest_spec_name ilm.remove_policy
  * @availability stack since=6.6.0 stability=stable
+ * @index_privileges manage_ilm
  */
 export interface Request extends RequestBase {
   path_parts: {
diff --git a/specification/ilm/remove_policy/RemovePolicyResponseExample1.json b/specification/ilm/remove_policy/RemovePolicyResponseExample1.json
new file mode 100644
index 0000000000..233c103bd9
--- /dev/null
+++ b/specification/ilm/remove_policy/RemovePolicyResponseExample1.json
@@ -0,0 +1,7 @@
+{
+  "summary": "A successful response when removing a lifecycle policy from an index.",
+  "description": "",
+  "type": "response",
+  "response_code": 200,
+  "value": "{\n  \"has_failures\" : false,\n  \"failed_indexes\" : []\n}"
+}
diff --git a/specification/ilm/retry/RetryIlmRequest.ts b/specification/ilm/retry/RetryIlmRequest.ts
index e79c91827a..0dddce7d28 100644
--- a/specification/ilm/retry/RetryIlmRequest.ts
+++ b/specification/ilm/retry/RetryIlmRequest.ts
@@ -21,8 +21,13 @@ import { RequestBase } from '@_types/Base'
 import { IndexName } from '@_types/common'
 
 /**
+ * Retry a policy.
+ * Retry running the lifecycle policy for an index that is in the ERROR step.
+ * The API sets the policy back to the step where the error occurred and runs the step.
+ * Use the explain lifecycle state API to determine whether an index is in the ERROR step.
  * @rest_spec_name ilm.retry
  * @availability stack since=6.6.0 stability=stable
+ * @index_privileges manage_ilm
  */
 export interface Request extends RequestBase {
   path_parts: {
diff --git a/specification/ilm/start/StartILMResponseExample1.json b/specification/ilm/start/StartILMResponseExample1.json
new file mode 100644
index 0000000000..78c44e5db1
--- /dev/null
+++ b/specification/ilm/start/StartILMResponseExample1.json
@@ -0,0 +1,7 @@
+{
+  "summary": "A successful response when stating the ILM plugin.",
+  "description": "",
+  "type": "response",
+  "response_code": 200,
+  "value": "{\n  \"acknowledged\": true\n}"
+}
diff --git a/specification/ilm/start/StartIlmRequest.ts b/specification/ilm/start/StartIlmRequest.ts
index d99341e69b..aaa44be924 100644
--- a/specification/ilm/start/StartIlmRequest.ts
+++ b/specification/ilm/start/StartIlmRequest.ts
@@ -21,8 +21,13 @@ import { RequestBase } from '@_types/Base'
 import { Duration } from '@_types/Time'
 
 /**
+ * Start the ILM plugin.
+ * Start the index lifecycle management plugin if it is currently stopped.
+ * ILM is started automatically when the cluster is formed.
+ * Restarting ILM is necessary only when it has been stopped using the stop ILM API.
  * @rest_spec_name ilm.start
  * @availability stack since=6.6.0 stability=stable
+ * @cluster_privileges manage_ilm
  */
 export interface Request extends RequestBase {
   query_parameters: {
diff --git a/specification/ilm/stop/StopILMResponseExample1.json b/specification/ilm/stop/StopILMResponseExample1.json
new file mode 100644
index 0000000000..eda703fcd7
--- /dev/null
+++ b/specification/ilm/stop/StopILMResponseExample1.json
@@ -0,0 +1,7 @@
+{
+  "summary": "A successful response when stopping the ILM plugin.",
+  "description": "",
+  "type": "response",
+  "response_code": 200,
+  "value": "{\n  \"acknowledged\": true\n}"
+}
diff --git a/specification/ilm/stop/StopIlmRequest.ts b/specification/ilm/stop/StopIlmRequest.ts
index 10b24b699c..3f20ae5795 100644
--- a/specification/ilm/stop/StopIlmRequest.ts
+++ b/specification/ilm/stop/StopIlmRequest.ts
@@ -21,8 +21,15 @@ import { RequestBase } from '@_types/Base'
 import { Duration } from '@_types/Time'
 
 /**
+ * Stop the ILM plugin.
+ * Halt all lifecycle management operations and stop the index lifecycle management plugin.
+ * This is useful when you are performing maintenance on the cluster and need to prevent ILM from performing any actions on your indices.
+ *
+ * The API returns as soon as the stop request has been acknowledged, but the plugin might continue to run until in-progress operations complete and the plugin can be safely stopped.
+ * Use the get ILM status API to check whether ILM is running.
  * @rest_spec_name ilm.stop
  * @availability stack since=6.6.0 stability=stable
+ * @cluster_privileges manage_ilm
  */
 export interface Request extends RequestBase {
   query_parameters: {
diff --git a/specification/indices/_types/DataStream.ts b/specification/indices/_types/DataStream.ts
index 73c47d95c6..b416ef5383 100644
--- a/specification/indices/_types/DataStream.ts
+++ b/specification/indices/_types/DataStream.ts
@@ -158,4 +158,5 @@ export class DataStreamIndex {
 
 export class DataStreamVisibility {
   hidden?: boolean
+  allow_custom_routing?: boolean
 }
diff --git a/specification/indices/_types/IndexTemplate.ts b/specification/indices/_types/IndexTemplate.ts
index 3d759530be..f0fe9dad47 100644
--- a/specification/indices/_types/IndexTemplate.ts
+++ b/specification/indices/_types/IndexTemplate.ts
@@ -64,6 +64,20 @@ export class IndexTemplate {
    * Data streams require a matching index template with a `data_stream` object.
    */
   data_stream?: IndexTemplateDataStreamConfiguration
+  /**
+   * Marks this index template as deprecated.
+   * When creating or updating a non-deprecated index template that uses deprecated components,
+   * Elasticsearch will emit a deprecation warning.
+   * @availability stack since=8.12.0
+   * @availability serverless
+   */
+  deprecated?: boolean
+  /**
+   * A list of component template names that are allowed to be absent.
+   * @availability stack since=8.7.0
+   * @availability serverless
+   */
+  ignore_missing_component_templates?: Names
 }
 
 export class IndexTemplateDataStreamConfiguration {
diff --git a/specification/indices/add_block/IndicesAddBlockResponseExample1.yaml b/specification/indices/add_block/IndicesAddBlockResponseExample1.yaml
new file mode 100644
index 0000000000..fec4fafd17
--- /dev/null
+++ b/specification/indices/add_block/IndicesAddBlockResponseExample1.yaml
@@ -0,0 +1,7 @@
+# summary: ''
+description: 'A successful response for adding an index block to an index.'
+# type: response
+# response_code: 200
+value:
+  "{\n  \"acknowledged\" : true,\n  \"shards_acknowledged\" : true,\n  \"indices\"\
+  \ : [ {\n    \"name\" : \"my-index-000001\",\n    \"blocked\" : true\n  } ]\n}"
diff --git a/specification/indices/analyze/IndicesAnalyzeRequest.ts b/specification/indices/analyze/IndicesAnalyzeRequest.ts
index b15790bb1a..934e31ed63 100644
--- a/specification/indices/analyze/IndicesAnalyzeRequest.ts
+++ b/specification/indices/analyze/IndicesAnalyzeRequest.ts
@@ -25,7 +25,8 @@ import { Field, IndexName } from '@_types/common'
 import { TextToAnalyze } from './types'
 
 /**
- * Performs analysis on a text string and returns the resulting tokens.
+ * Get tokens from text analysis.
+ * The analyze API performs [analysis](https://www.elastic.co/guide/en/elasticsearch/reference/current/analysis.html) on a text string and returns the resulting tokens.
  * @doc_id indices-analyze
  * @rest_spec_name indices.analyze
  * @availability stack stability=stable
diff --git a/specification/indices/analyze/indicesAnalyzeRequestExample1.yaml b/specification/indices/analyze/indicesAnalyzeRequestExample1.yaml
new file mode 100644
index 0000000000..4b6f322b7a
--- /dev/null
+++ b/specification/indices/analyze/indicesAnalyzeRequestExample1.yaml
@@ -0,0 +1,5 @@
+summary: Perform analysis on a text string and returns the resulting tokens.
+method_request: GET /_analyze
+# description: ''
+# type: request
+value: "{\n  \"analyzer\" : \"standard\",\n  \"text\" : \"Quick Brown Foxes!\"\n}"
diff --git a/specification/indices/clone/indicesCloneRequestExample1.yaml b/specification/indices/clone/indicesCloneRequestExample1.yaml
new file mode 100644
index 0000000000..6578cc0db6
--- /dev/null
+++ b/specification/indices/clone/indicesCloneRequestExample1.yaml
@@ -0,0 +1,8 @@
+summary: Clone an existing index.
+# method_request: POST /my_source_index/_clone/my_target_index
+description: >
+  Clone `my_source_index` into a new index called `my_target_index` with `POST /my_source_index/_clone/my_target_index`. The API accepts `settings` and `aliases` parameters for the target index.
+# type: request
+value:
+  "{\n  \"settings\": {\n    \"index.number_of_shards\": 5\n  },\n  \"aliases\"\
+  : {\n    \"my_search_indices\": {}\n  }\n}"
diff --git a/specification/indices/close/indicesCloseResponseExample1.yaml b/specification/indices/close/indicesCloseResponseExample1.yaml
new file mode 100644
index 0000000000..bd3bcd0dc7
--- /dev/null
+++ b/specification/indices/close/indicesCloseResponseExample1.yaml
@@ -0,0 +1,7 @@
+# summary: ''
+description: A successful response for closing an index.
+# type: response
+# response_code: 200
+value:
+  "{\n  \"acknowledged\": true,\n  \"shards_acknowledged\": true,\n  \"indices\"\
+  : {\n    \"my-index-000001\": {\n      \"closed\": true\n    }\n  }\n}"
diff --git a/specification/indices/create/indicesCreateRequestExample1.yaml b/specification/indices/create/indicesCreateRequestExample1.yaml
new file mode 100644
index 0000000000..21a40348d1
--- /dev/null
+++ b/specification/indices/create/indicesCreateRequestExample1.yaml
@@ -0,0 +1,7 @@
+summary: Creates an index.
+# method_request: PUT /my-index-000001
+description: This request specifies the `number_of_shards` and `number_of_replicas`.
+# type: request
+value:
+  "{\n  \"settings\": {\n    \"number_of_shards\": 3,\n    \"number_of_replicas\"\
+  : 2\n  }\n}"
diff --git a/specification/indices/create/indicesCreateRequestExample2.yaml b/specification/indices/create/indicesCreateRequestExample2.yaml
new file mode 100644
index 0000000000..a64d16b63f
--- /dev/null
+++ b/specification/indices/create/indicesCreateRequestExample2.yaml
@@ -0,0 +1,7 @@
+summary: Creates an index with mapping.
+# method_request: PUT /test
+description: You can provide mapping definitions in the create index API requests.
+# type: request
+value:
+  "{\n  \"settings\": {\n    \"number_of_shards\": 1\n  },\n  \"mappings\": {\n\
+  \    \"properties\": {\n      \"field1\": { \"type\": \"text\" }\n    }\n  }\n}"
diff --git a/specification/indices/create_data_stream/IndicesCreateDataStreamRequest.ts b/specification/indices/create_data_stream/IndicesCreateDataStreamRequest.ts
index c52129519a..9a22677a50 100644
--- a/specification/indices/create_data_stream/IndicesCreateDataStreamRequest.ts
+++ b/specification/indices/create_data_stream/IndicesCreateDataStreamRequest.ts
@@ -29,6 +29,7 @@ import { Duration } from '@_types/Time'
  * @availability stack since=7.9.0 stability=stable
  * @availability serverless stability=stable visibility=public
  * @index_privileges create_index
+ * @doc_tag data stream
  */
 export interface Request extends RequestBase {
   path_parts: {
diff --git a/specification/indices/data_streams_stats/IndicesDataStreamsStatsRequest.ts b/specification/indices/data_streams_stats/IndicesDataStreamsStatsRequest.ts
index 45b0ceac6b..6a6e9ab0b0 100644
--- a/specification/indices/data_streams_stats/IndicesDataStreamsStatsRequest.ts
+++ b/specification/indices/data_streams_stats/IndicesDataStreamsStatsRequest.ts
@@ -27,6 +27,7 @@ import { ExpandWildcards, IndexName } from '@_types/common'
  * @availability stack since=7.9.0 stability=stable
  * @availability serverless stability=stable visibility=public
  * @index_privileges monitor
+ * @doc_tag data stream
  */
 export interface Request extends RequestBase {
   path_parts: {
diff --git a/specification/indices/data_streams_stats/indicesDataStreamStatsResponseExample1.yaml b/specification/indices/data_streams_stats/indicesDataStreamStatsResponseExample1.yaml
new file mode 100644
index 0000000000..9f2a04a082
--- /dev/null
+++ b/specification/indices/data_streams_stats/indicesDataStreamStatsResponseExample1.yaml
@@ -0,0 +1,13 @@
+# summary: ''
+description: A successful response for retrieving statistics for a data stream.
+# type: response
+# response_code: 200
+value:
+  "{\n  \"_shards\": {\n    \"total\": 10,\n    \"successful\": 5,\n    \"failed\"\
+  : 0\n  },\n  \"data_stream_count\": 2,\n  \"backing_indices\": 5,\n  \"total_store_size\"\
+  : \"7kb\",\n  \"total_store_size_bytes\": 7268,\n  \"data_streams\": [\n    {\n\
+  \      \"data_stream\": \"my-data-stream\",\n      \"backing_indices\": 3,\n   \
+  \   \"store_size\": \"3.7kb\",\n      \"store_size_bytes\": 3772,\n      \"maximum_timestamp\"\
+  : 1607512028000\n    },\n    {\n      \"data_stream\": \"my-data-stream-two\",\n\
+  \      \"backing_indices\": 2,\n      \"store_size\": \"3.4kb\",\n      \"store_size_bytes\"\
+  : 3496,\n      \"maximum_timestamp\": 1607425567000\n    }\n  ]\n}"
diff --git a/specification/indices/delete_data_lifecycle/IndicesDeleteDataLifecycleResponseExample1.yaml b/specification/indices/delete_data_lifecycle/IndicesDeleteDataLifecycleResponseExample1.yaml
new file mode 100644
index 0000000000..2a7ab3248b
--- /dev/null
+++ b/specification/indices/delete_data_lifecycle/IndicesDeleteDataLifecycleResponseExample1.yaml
@@ -0,0 +1,5 @@
+# summary: ''
+description: A successful response for deleting a data stream lifecycle.
+# type: response
+# response_code: 200
+value: "{\n  \"acknowledged\": true\n}"
diff --git a/specification/indices/exists_alias/IndicesExistsAliasRequest.ts b/specification/indices/exists_alias/IndicesExistsAliasRequest.ts
index 4af9d5897c..0b7a6b1085 100644
--- a/specification/indices/exists_alias/IndicesExistsAliasRequest.ts
+++ b/specification/indices/exists_alias/IndicesExistsAliasRequest.ts
@@ -62,6 +62,7 @@ export interface Request extends RequestBase {
     /**
      * If `true`, the request retrieves information from the local node only.
      * @server_default false
+     * @deprecated 8.12.0
      */
     local?: boolean
   }
diff --git a/specification/indices/exists_index_template/IndicesExistsIndexTemplateRequest.ts b/specification/indices/exists_index_template/IndicesExistsIndexTemplateRequest.ts
index 823cb15db6..9db02487a6 100644
--- a/specification/indices/exists_index_template/IndicesExistsIndexTemplateRequest.ts
+++ b/specification/indices/exists_index_template/IndicesExistsIndexTemplateRequest.ts
@@ -22,6 +22,8 @@ import { Name } from '@_types/common'
 import { Duration } from '@_types/Time'
 
 /**
+ * Check index templates.
+ * Check whether index templates exist.
  * @rest_spec_name indices.exists_index_template
  * @availability stack stability=stable
  * @availability serverless stability=stable visibility=public
diff --git a/specification/indices/explain_data_lifecycle/IndicesExplainDataLifecycleRequest.ts b/specification/indices/explain_data_lifecycle/IndicesExplainDataLifecycleRequest.ts
index afb8dd1f8b..299f7ab3b6 100644
--- a/specification/indices/explain_data_lifecycle/IndicesExplainDataLifecycleRequest.ts
+++ b/specification/indices/explain_data_lifecycle/IndicesExplainDataLifecycleRequest.ts
@@ -23,7 +23,7 @@ import { Duration } from '@_types/Time'
 
 /**
  * Get the status for a data stream lifecycle.
- * Retrieves information about an index or data stream’s current data stream lifecycle status, such as time since index creation, time since rollover, the lifecycle configuration managing the index, or any errors encountered during lifecycle execution.
+ * Get information about an index or data stream's current data stream lifecycle status, such as time since index creation, time since rollover, the lifecycle configuration managing the index, or any errors encountered during lifecycle execution.
  * @rest_spec_name indices.explain_data_lifecycle
  * @availability stack since=8.11.0 stability=stable
  * @availability serverless stability=stable visibility=public
diff --git a/specification/indices/explain_data_lifecycle/IndicesExplainDataLifecycleResponseExample1.yaml b/specification/indices/explain_data_lifecycle/IndicesExplainDataLifecycleResponseExample1.yaml
new file mode 100644
index 0000000000..33e6bc7cdf
--- /dev/null
+++ b/specification/indices/explain_data_lifecycle/IndicesExplainDataLifecycleResponseExample1.yaml
@@ -0,0 +1,11 @@
+# summary: ''
+description: A successful response for retrieving data stream lifecycle status for a data stream backing index.
+# type: response
+# response_code: 200
+value:
+  "{\n  \"indices\": {\n    \".ds-metrics-2023.03.22-000001\": {\n      \"index\"\
+  \ : \".ds-metrics-2023.03.22-000001\",\n      \"managed_by_lifecycle\" : true,\n\
+  \      \"index_creation_date_millis\" : 1679475563571,\n      \"time_since_index_creation\"\
+  \ : \"843ms\",\n      \"rollover_date_millis\" : 1679475564293,\n      \"time_since_rollover\"\
+  \ : \"121ms\",\n      \"lifecycle\" : { },\n      \"generation_time\" : \"121ms\"\
+  \n  }\n}"
diff --git a/specification/indices/get_alias/IndicesGetAliasRequest.ts b/specification/indices/get_alias/IndicesGetAliasRequest.ts
index d8aed94949..a8d5ee8de5 100644
--- a/specification/indices/get_alias/IndicesGetAliasRequest.ts
+++ b/specification/indices/get_alias/IndicesGetAliasRequest.ts
@@ -65,6 +65,7 @@ export interface Request extends RequestBase {
     /**
      * If `true`, the request retrieves information from the local node only.
      * @server_default false
+     * @deprecated 8.12.0
      */
     local?: boolean
   }
diff --git a/specification/indices/get_data_lifecycle/IndicesGetDataLifecycleRequest.ts b/specification/indices/get_data_lifecycle/IndicesGetDataLifecycleRequest.ts
index 3ffef02fdf..7ae864357c 100644
--- a/specification/indices/get_data_lifecycle/IndicesGetDataLifecycleRequest.ts
+++ b/specification/indices/get_data_lifecycle/IndicesGetDataLifecycleRequest.ts
@@ -27,6 +27,7 @@ import { Duration } from '@_types/Time'
  * @rest_spec_name indices.get_data_lifecycle
  * @availability stack since=8.11.0 stability=stable
  * @availability serverless stability=stable visibility=public
+ * @doc_tag data stream
  */
 export interface Request extends RequestBase {
   path_parts: {
diff --git a/specification/indices/get_data_lifecycle/IndicesGetDataLifecycleResponseExample1.yaml b/specification/indices/get_data_lifecycle/IndicesGetDataLifecycleResponseExample1.yaml
new file mode 100644
index 0000000000..b50b49f023
--- /dev/null
+++ b/specification/indices/get_data_lifecycle/IndicesGetDataLifecycleResponseExample1.yaml
@@ -0,0 +1,10 @@
+# summary:
+description: A successful response of getting the lifecycle of a set of data streams.
+# type: response
+# response_code: 200
+value:
+  "{\n  \"data_streams\": [\n    {\n      \"name\": \"my-data-stream-1\",\n \
+  \     \"lifecycle\": {\n        \"enabled\": true,\n        \"data_retention\":\
+  \ \"7d\"\n      }\n    },\n    {\n      \"name\": \"my-data-stream-2\",\n      \"\
+  lifecycle\": {\n        \"enabled\": true,\n        \"data_retention\": \"7d\"\n\
+  \      }\n    }\n  ]\n}"
diff --git a/specification/indices/get_data_stream/IndicesGetDataStreamRequest.ts b/specification/indices/get_data_stream/IndicesGetDataStreamRequest.ts
index 1818f3d71e..53a3741b7d 100644
--- a/specification/indices/get_data_stream/IndicesGetDataStreamRequest.ts
+++ b/specification/indices/get_data_stream/IndicesGetDataStreamRequest.ts
@@ -28,6 +28,7 @@ import { Duration } from '@_types/Time'
  * @availability stack since=7.9.0 stability=stable
  * @availability serverless stability=stable visibility=public
  * @index_privileges view_index_metadata
+ * @doc_tag data stream
  */
 export interface Request extends RequestBase {
   path_parts: {
diff --git a/specification/indices/get_data_stream/indicesGetDataStreamResponseExample1.yaml b/specification/indices/get_data_stream/indicesGetDataStreamResponseExample1.yaml
new file mode 100644
index 0000000000..0b992d9afb
--- /dev/null
+++ b/specification/indices/get_data_stream/indicesGetDataStreamResponseExample1.yaml
@@ -0,0 +1,32 @@
+# summary:
+description: A successful response for retrieving information about a data stream.
+# type: response
+# response_code: 200
+value:
+  "{\n  \"data_streams\": [\n    {\n      \"name\": \"my-data-stream\",\n   \
+  \   \"timestamp_field\": {\n        \"name\": \"@timestamp\"\n      },\n      \"\
+  indices\": [\n        {\n          \"index_name\": \".ds-my-data-stream-2099.03.07-000001\"\
+  ,\n          \"index_uuid\": \"xCEhwsp8Tey0-FLNFYVwSg\",\n          \"prefer_ilm\"\
+  : true,\n          \"ilm_policy\": \"my-lifecycle-policy\",\n          \"managed_by\"\
+  : \"Index Lifecycle Management\"\n        },\n        {\n          \"index_name\"\
+  : \".ds-my-data-stream-2099.03.08-000002\",\n          \"index_uuid\": \"PA_JquKGSiKcAKBA8DJ5gw\"\
+  ,\n          \"prefer_ilm\": true,\n          \"ilm_policy\": \"my-lifecycle-policy\"\
+  ,\n          \"managed_by\": \"Index Lifecycle Management\"\n        }\n      ],\n\
+  \      \"generation\": 2,\n      \"_meta\": {\n        \"my-meta-field\": \"foo\"\
+  \n      },\n      \"status\": \"GREEN\",\n      \"next_generation_managed_by\":\
+  \ \"Index Lifecycle Management\",\n      \"prefer_ilm\": true,\n      \"template\"\
+  : \"my-index-template\",\n      \"ilm_policy\": \"my-lifecycle-policy\",\n     \
+  \ \"hidden\": false,\n      \"system\": false,\n      \"allow_custom_routing\":\
+  \ false,\n      \"replicated\": false,\n      \"rollover_on_write\": false\n   \
+  \ },\n    {\n      \"name\": \"my-data-stream-two\",\n      \"timestamp_field\"\
+  : {\n        \"name\": \"@timestamp\"\n      },\n      \"indices\": [\n        {\n\
+  \          \"index_name\": \".ds-my-data-stream-two-2099.03.08-000001\",\n     \
+  \     \"index_uuid\": \"3liBu2SYS5axasRt6fUIpA\",\n          \"prefer_ilm\": true,\n\
+  \          \"ilm_policy\": \"my-lifecycle-policy\",\n          \"managed_by\": \"\
+  Index Lifecycle Management\"\n        }\n      ],\n      \"generation\": 1,\n  \
+  \    \"_meta\": {\n        \"my-meta-field\": \"foo\"\n      },\n      \"status\"\
+  : \"YELLOW\",\n      \"next_generation_managed_by\": \"Index Lifecycle Management\"\
+  ,\n      \"prefer_ilm\": true,\n      \"template\": \"my-index-template\",\n   \
+  \   \"ilm_policy\": \"my-lifecycle-policy\",\n      \"hidden\": false,\n      \"\
+  system\": false,\n      \"allow_custom_routing\": false,\n      \"replicated\":\
+  \ false,\n      \"rollover_on_write\": false\n    }\n  ]\n}"
diff --git a/specification/indices/migrate_to_data_stream/IndicesMigrateToDataStreamRequest.ts b/specification/indices/migrate_to_data_stream/IndicesMigrateToDataStreamRequest.ts
index b4e5b18105..10cdb3ffff 100644
--- a/specification/indices/migrate_to_data_stream/IndicesMigrateToDataStreamRequest.ts
+++ b/specification/indices/migrate_to_data_stream/IndicesMigrateToDataStreamRequest.ts
@@ -37,6 +37,7 @@ import { Duration } from '@_types/Time'
  * @availability stack since=7.9.0 stability=stable
  * @availability serverless stability=stable visibility=public
  * @index_privileges manage
+ * @doc_tag data stream
  */
 export interface Request extends RequestBase {
   path_parts: {
diff --git a/specification/indices/modify_data_stream/IndicesModifyDataStreamRequest.ts b/specification/indices/modify_data_stream/IndicesModifyDataStreamRequest.ts
index 7ac5c20d30..8e83938418 100644
--- a/specification/indices/modify_data_stream/IndicesModifyDataStreamRequest.ts
+++ b/specification/indices/modify_data_stream/IndicesModifyDataStreamRequest.ts
@@ -26,6 +26,7 @@ import { Action } from './types'
  * @rest_spec_name indices.modify_data_stream
  * @availability stack since=7.16.0 stability=stable
  * @availability serverless stability=stable visibility=public
+ * @doc_tag data stream
  */
 export interface Request extends RequestBase {
   body: {
diff --git a/specification/indices/open/indicesOpenResponseExample1.yaml b/specification/indices/open/indicesOpenResponseExample1.yaml
new file mode 100644
index 0000000000..10eb656f86
--- /dev/null
+++ b/specification/indices/open/indicesOpenResponseExample1.yaml
@@ -0,0 +1,5 @@
+# summary:
+description: A successful response for opening an index.
+# type: response
+# response_code: 200
+value: "{\n  \"acknowledged\" : true,\n  \"shards_acknowledged\" : true\n}"
diff --git a/specification/indices/put_data_lifecycle/IndicesPutDataLifecycleRequestExample1.yaml b/specification/indices/put_data_lifecycle/IndicesPutDataLifecycleRequestExample1.yaml
new file mode 100644
index 0000000000..86309ad5a5
--- /dev/null
+++ b/specification/indices/put_data_lifecycle/IndicesPutDataLifecycleRequestExample1.yaml
@@ -0,0 +1,5 @@
+summary: Set the data stream lifecycle retention
+# method_request: PUT _data_stream/my-data-stream/_lifecycle
+# description: Sets the lifecycle of a data stream.
+# type: request
+value: "{\n  \"data_retention\": \"7d\"\n}"
diff --git a/specification/indices/put_data_lifecycle/IndicesPutDataLifecycleRequestExample2.yaml b/specification/indices/put_data_lifecycle/IndicesPutDataLifecycleRequestExample2.yaml
new file mode 100644
index 0000000000..1b318274b1
--- /dev/null
+++ b/specification/indices/put_data_lifecycle/IndicesPutDataLifecycleRequestExample2.yaml
@@ -0,0 +1,8 @@
+summary: Set the data stream lifecycle downsampling
+# method_request: PUT _data_stream/my-weather-sensor-data-stream/_lifecycle
+description: This example configures two downsampling rounds.
+# type: request
+value:
+  "{\n    \"downsampling\": [\n      {\n        \"after\": \"1d\",\n        \"\
+  fixed_interval\": \"10m\"\n      },\n      {\n        \"after\": \"7d\",\n     \
+  \   \"fixed_interval\": \"1d\"\n      }\n    ]\n}"
diff --git a/specification/indices/put_data_lifecycle/IndicesPutDataLifecycleResponseExample1.yaml b/specification/indices/put_data_lifecycle/IndicesPutDataLifecycleResponseExample1.yaml
new file mode 100644
index 0000000000..02815ba8ec
--- /dev/null
+++ b/specification/indices/put_data_lifecycle/IndicesPutDataLifecycleResponseExample1.yaml
@@ -0,0 +1,5 @@
+# summary:
+description: A successful response for configuring a data stream lifecycle.
+# type: response
+# response_code: 200
+value: "{\n  \"acknowledged\": true\n}"
diff --git a/specification/indices/resolve_index/ResolveIndexRequest.ts b/specification/indices/resolve_index/ResolveIndexRequest.ts
index 2ea7bc8570..a456eb5e2c 100644
--- a/specification/indices/resolve_index/ResolveIndexRequest.ts
+++ b/specification/indices/resolve_index/ResolveIndexRequest.ts
@@ -21,7 +21,8 @@ import { RequestBase } from '@_types/Base'
 import { ExpandWildcards, Names } from '@_types/common'
 
 /**
- * Resolves the specified name(s) and/or index patterns for indices, aliases, and data streams.
+ * Resolve indices.
+ * Resolve the names and/or index patterns for indices, aliases, and data streams.
  * Multiple patterns and remote clusters are supported.
  * @rest_spec_name indices.resolve_index
  * @availability stack since=7.9.0 stability=stable
diff --git a/specification/inference/_types/Services.ts b/specification/inference/_types/Services.ts
index 827d542d80..f687175091 100644
--- a/specification/inference/_types/Services.ts
+++ b/specification/inference/_types/Services.ts
@@ -18,12 +18,17 @@
  */
 
 import { UserDefinedValue } from '@spec_utils/UserDefinedValue'
+import { integer } from '@_types/Numeric'
 import { TaskType } from '../_types/TaskType'
 
 /**
  * Configuration options when storing the inference endpoint
  */
 export class InferenceEndpoint {
+  /**
+   * Chunking configuration object
+   */
+  chunking_settings?: InferenceChunkingSettings
   /**
    * The service type
    */
@@ -35,7 +40,7 @@ export class InferenceEndpoint {
   /**
    * Task settings specific to the service and task type
    */
-  task_settings: TaskSettings
+  task_settings?: TaskSettings
 }
 
 /**
@@ -52,6 +57,38 @@ export class InferenceEndpointInfo extends InferenceEndpoint {
   task_type: TaskType
 }
 
+/**
+ * Chunking configuration object
+ */
+export class InferenceChunkingSettings {
+  /**
+   * Specifies the maximum size of a chunk in words
+   * This value cannot be higher than `300` or lower than `20` (for `sentence` strategy) or `10` (for `word` strategy)
+   * @server_default 250
+   */
+  max_chunk_size?: integer
+  /**
+   * Specifies the number of overlapping words for chunks
+   * Only for `word` chunking strategy
+   * This value cannot be higher than the half of `max_chunk_size`
+   * @server_default 100
+   */
+  overlap?: integer
+  /**
+   * Specifies the number of overlapping sentences for chunks
+   * Only for `sentence` chunking strategy
+   * It can be either `1` or `0`
+   * @server_default 1
+   */
+  sentence_overlap?: integer
+  /**
+   * Specifies the chunking strategy
+   * It could be either `sentence` or `word`
+   * @server_default sentence
+   */
+  strategy?: string
+}
+
 export type ServiceSettings = UserDefinedValue
 
 export type TaskSettings = UserDefinedValue
diff --git a/specification/inference/delete/DeleteRequest.ts b/specification/inference/delete/DeleteRequest.ts
index e6ee9719e6..1a0d6c88bb 100644
--- a/specification/inference/delete/DeleteRequest.ts
+++ b/specification/inference/delete/DeleteRequest.ts
@@ -24,8 +24,8 @@ import { Id } from '@_types/common'
 /**
  * Delete an inference endpoint
  * @rest_spec_name inference.delete
- * @availability stack since=8.11.0 stability=experimental visibility=public
- * @availability serverless stability=experimental visibility=public
+ * @availability stack since=8.11.0 stability=stable visibility=public
+ * @availability serverless stability=stable visibility=public
  */
 export interface Request extends RequestBase {
   path_parts: {
diff --git a/specification/inference/get/GetRequest.ts b/specification/inference/get/GetRequest.ts
index b9d1d7b805..e3267babb3 100644
--- a/specification/inference/get/GetRequest.ts
+++ b/specification/inference/get/GetRequest.ts
@@ -24,8 +24,8 @@ import { Id } from '@_types/common'
 /**
  * Get an inference endpoint
  * @rest_spec_name inference.get
- * @availability stack since=8.11.0 stability=experimental visibility=public
- * @availability serverless stability=experimental visibility=public
+ * @availability stack since=8.11.0 stability=stable visibility=public
+ * @availability serverless stability=stable visibility=public
  */
 export interface Request extends RequestBase {
   path_parts: {
diff --git a/specification/inference/inference/InferenceRequest.ts b/specification/inference/inference/InferenceRequest.ts
index 297f419be5..1baf2cea39 100644
--- a/specification/inference/inference/InferenceRequest.ts
+++ b/specification/inference/inference/InferenceRequest.ts
@@ -26,8 +26,8 @@ import { Duration } from '@_types/Time'
 /**
  * Perform inference on the service
  * @rest_spec_name inference.inference
- * @availability stack since=8.11.0 stability=experimental visibility=public
- * @availability serverless stability=experimental visibility=public
+ * @availability stack since=8.11.0 stability=stable visibility=public
+ * @availability serverless stability=stable visibility=public
  */
 export interface Request extends RequestBase {
   path_parts: {
diff --git a/specification/inference/put/PutRequest.ts b/specification/inference/put/PutRequest.ts
index a3d23a93a1..be83f3ace8 100644
--- a/specification/inference/put/PutRequest.ts
+++ b/specification/inference/put/PutRequest.ts
@@ -25,8 +25,8 @@ import { Id } from '@_types/common'
 /**
  * Create an inference endpoint
  * @rest_spec_name inference.put
- * @availability stack since=8.11.0 stability=experimental visibility=public
- * @availability serverless stability=experimental visibility=public
+ * @availability stack since=8.11.0 stability=stable visibility=public
+ * @availability serverless stability=stable visibility=public
  */
 export interface Request extends RequestBase {
   path_parts: {
diff --git a/specification/ingest/_types/Database.ts b/specification/ingest/_types/Database.ts
index 8c20e3b871..bb3a9e4475 100644
--- a/specification/ingest/_types/Database.ts
+++ b/specification/ingest/_types/Database.ts
@@ -19,15 +19,47 @@
 
 import { Id, Name } from '@_types/common'
 
+/**
+ * The configuration necessary to identify which IP geolocation provider to use to download a database, as well as any provider-specific configuration necessary for such downloading.
+ * At present, the only supported providers are maxmind and ipinfo, and the maxmind provider requires that an account_id (string) is configured.
+ * A provider (either maxmind or ipinfo) must be specified. The web and local providers can be returned as read only configurations.
+ * @variants container
+ */
 export class DatabaseConfiguration {
-  /** The provider-assigned name of the IP geolocation database to download. */
+  /**
+   * The provider-assigned name of the IP geolocation database to download.
+   * @variant container_property
+   */
   name: Name
-  /** The configuration necessary to identify which IP geolocation provider to use to download the database, as well as any provider-specific configuration necessary for such downloading.
-   * At present, the only supported provider is maxmind, and the maxmind provider requires that an account_id (string) is configured.
+
+  maxmind?: Maxmind
+  ipinfo?: Ipinfo
+}
+
+/**
+ * @variants container
+ */
+export class DatabaseConfigurationFull {
+  web?: Web
+  local?: Local
+  /**
+   * The provider-assigned name of the IP geolocation database to download.
+   * @variant container_property
    */
-  maxmind: Maxmind
+  name: Name
+
+  maxmind?: Maxmind
+  ipinfo?: Ipinfo
 }
 
 export class Maxmind {
   account_id: Id
 }
+
+export class Ipinfo {}
+
+export class Web {}
+
+export class Local {
+  type: string
+}
diff --git a/specification/ingest/_types/Processors.ts b/specification/ingest/_types/Processors.ts
index 33212aeaf9..b507d6deec 100644
--- a/specification/ingest/_types/Processors.ts
+++ b/specification/ingest/_types/Processors.ts
@@ -55,6 +55,13 @@ export class ProcessorContainer {
    * @doc_id ingest-circle-processor
    */
   circle?: CircleProcessor
+  /**
+   * Computes the Community ID for network flow data as defined in the
+   * Community ID Specification. You can use a community ID to correlate network
+   * events related to a single flow.
+   * @doc_id community-id-processor
+   */
+  community_id?: CommunityIDProcessor
   /**
    * Converts a field in the currently ingested document to a different type, such as converting a string to an integer.
    * If the field value is an array, all members will be converted.
@@ -106,11 +113,21 @@ export class ProcessorContainer {
    * @doc_id fail-processor
    */
   fail?: FailProcessor
+  /**
+   * Computes a hash of the document’s content. You can use this hash for
+   * content fingerprinting.
+   * @doc_id fingerprint-processor
+   */
+  fingerprint?: FingerprintProcessor
   /**
    * Runs an ingest processor on each element of an array or object.
    * @doc_id foreach-processor
    */
   foreach?: ForeachProcessor
+  /**
+   * Currently an undocumented alias for GeoIP Processor.
+   */
+  ip_location?: IpLocationProcessor
   /**
    * Converts geo-grid definitions of grid tiles or cells to regular bounding boxes or polygons which describe their shape.
    * This is useful if there is a need to interact with the tile shapes as spatially indexable fields.
@@ -169,6 +186,12 @@ export class ProcessorContainer {
    * @doc_id lowercase-processor
    */
   lowercase?: LowercaseProcessor
+  /**
+   * Calculates the network direction given a source IP address, destination IP
+   * address, and a list of internal networks.
+   * @doc_id network-direction-processor
+   */
+  network_direction?: NetworkDirectionProcessor
   /**
    * Executes another pipeline.
    * @doc_id pipeline-processor
@@ -181,6 +204,14 @@ export class ProcessorContainer {
    * @doc_id redact-processor
    */
   redact?: RedactProcessor
+  /**
+   * Extracts the registered domain (also known as the effective top-level
+   * domain or eTLD), sub-domain, and top-level domain from a fully qualified
+   * domain name (FQDN). Uses the registered domains defined in the Mozilla
+   * Public Suffix List.
+   * @doc_id registered-domain-processor
+   */
+  registered_domain?: RegisteredDomainProcessor
   /**
    * Removes existing fields.
    * If one field doesn’t exist, an exception will be thrown.
@@ -230,6 +261,12 @@ export class ProcessorContainer {
    * @doc_id split-processor
    */
   split?: SplitProcessor
+  /**
+   * Terminates the current ingest pipeline, causing no further processors to be run.
+   * This will normally be executed conditionally, using the `if` option.
+   * @doc_id terminate-processor
+   */
+  terminate?: TerminateProcessor
   /**
    * Trims whitespace from a field.
    * If the field is an array of strings, all members of the array will be trimmed.
@@ -438,6 +475,42 @@ export class GeoIpProcessor extends ProcessorBase {
   download_database_on_pipeline_creation?: boolean
 }
 
+export class IpLocationProcessor extends ProcessorBase {
+  /**
+   * The database filename referring to a database the module ships with (GeoLite2-City.mmdb, GeoLite2-Country.mmdb, or GeoLite2-ASN.mmdb) or a custom database in the ingest-geoip config directory.
+   * @server_default GeoLite2-City.mmdb
+   */
+  database_file?: string
+  /**
+   * The field to get the ip address from for the geographical lookup.
+   */
+  field: Field
+  /**
+   * If `true`, only the first found IP location data will be returned, even if the field contains an array.
+   * @server_default true
+   */
+  first_only?: boolean
+  /**
+   * If `true` and `field` does not exist, the processor quietly exits without modifying the document.
+   * @server_default false
+   */
+  ignore_missing?: boolean
+  /**
+   * Controls what properties are added to the `target_field` based on the IP location lookup.
+   */
+  properties?: string[]
+  /**
+   * The field that will hold the geographical information looked up from the MaxMind database.
+   * @server_default geoip
+   */
+  target_field?: Field
+  /**
+   * If `true` (and if `ingest.geoip.downloader.eager.download` is `false`), the missing database is downloaded when the pipeline is created.
+   * Else, the download is triggered by when the pipeline is used as the `default_pipeline` or `final_pipeline` in an index.
+   */
+  download_database_on_pipeline_creation?: boolean
+}
+
 export class UserAgentProcessor extends ProcessorBase {
   /**
    * The field containing the user agent string.
@@ -522,13 +595,77 @@ export class CircleProcessor extends ProcessorBase {
   target_field?: Field
 }
 
+export class CommunityIDProcessor extends ProcessorBase {
+  /**
+   * Field containing the source IP address.
+   * @server_default source.ip
+   */
+  source_ip?: Field
+  /**
+   * Field containing the source port.
+   * @server_default source.port
+   */
+  source_port?: Field
+  /**
+   * Field containing the destination IP address.
+   * @server_default destination.ip
+   */
+  destination_ip?: Field
+  /**
+   * Field containing the destination port.
+   * @server_default destination.port
+   */
+  destination_port?: Field
+  /**
+   * Field containing the IANA number.
+   * @server_default network.iana_number
+   */
+  iana_number?: Field
+  /**
+   * Field containing the ICMP type.
+   * @server_default icmp.type
+   */
+  icmp_type?: Field
+  /**
+   * Field containing the ICMP code.
+   * @server_default icmp.code
+   */
+  icmp_code?: Field
+  /**
+   * Field containing the transport protocol name or number. Used only when the
+   * iana_number field is not present. The following protocol names are currently
+   * supported: eigrp, gre, icmp, icmpv6, igmp, ipv6-icmp, ospf, pim, sctp, tcp, udp
+   * @server_default network.transport
+   */
+  transport?: Field
+  /**
+   * Output field for the community ID.
+   * @server_default network.community_id
+   */
+  target_field?: Field
+  /**
+   * Seed for the community ID hash. Must be between 0 and 65535 (inclusive). The
+   * seed can prevent hash collisions between network domains, such as a staging
+   * and production network that use the same addressing scheme.
+   * @server_default 0
+   */
+  seed?: integer
+  /**
+   * If true and any required fields are missing, the processor quietly exits
+   * without modifying the document.
+   * @server_default true
+   */
+  ignore_missing?: boolean
+}
+
 export enum ConvertType {
   integer,
   long,
-  float,
   double,
-  string,
+  float,
   boolean,
+  ip,
+  string,
   auto
 }
 
@@ -656,6 +793,12 @@ export class DateProcessor extends ProcessorBase {
    * @server_default UTC
    */
   timezone?: string
+  /**
+   * The format to use when writing the date to target_field. Must be a valid
+   * java time pattern.
+   * @server_default yyyy-MM-dd'T'HH:mm:ss.SSSXXX
+   */
+  output_format?: string
 }
 
 export class DissectProcessor extends ProcessorBase {
@@ -750,6 +893,44 @@ export class FailProcessor extends ProcessorBase {
   message: string
 }
 
+export enum FingerprintDigest {
+  md5 = 'MD5',
+  sha1 = 'SHA-1',
+  sha256 = 'SHA-256',
+  sha512 = 'SHA-512',
+  murmurHash3 = 'MurmurHash3'
+}
+
+export class FingerprintProcessor extends ProcessorBase {
+  /**
+   * Array of fields to include in the fingerprint. For objects, the processor
+   * hashes both the field key and value. For other fields, the processor hashes
+   * only the field value.
+   */
+  fields: Fields
+  /**
+   * Output field for the fingerprint.
+   * @server_default fingerprint
+   */
+  target_field?: Field
+  /**
+   * Salt value for the hash function.
+   */
+  salt?: string
+  /**
+   * The hash method used to compute the fingerprint. Must be one of MD5, SHA-1,
+   * SHA-256, SHA-512, or MurmurHash3.
+   * @server_default SHA-1
+   */
+  method?: FingerprintDigest
+  /**
+   * If true, the processor ignores any missing fields. If all fields are
+   * missing, the processor silently exits without modifying the document.
+   * @server_default false
+   */
+  ignore_missing?: boolean
+}
+
 export class ForeachProcessor extends ProcessorBase {
   /**
    * Field containing array or object values.
@@ -767,6 +948,12 @@ export class ForeachProcessor extends ProcessorBase {
 }
 
 export class GrokProcessor extends ProcessorBase {
+  /**
+   * Must be disabled or v1. If v1, the processor uses patterns with Elastic
+   * Common Schema (ECS) field names.
+   * @server_default disabled
+   */
+  ecs_compatibility?: string
   /**
    * The field to use for grok expression parsing.
    */
@@ -1040,6 +1227,42 @@ export class LowercaseProcessor extends ProcessorBase {
   target_field?: Field
 }
 
+export class NetworkDirectionProcessor extends ProcessorBase {
+  /**
+   * Field containing the source IP address.
+   * @server_default source.ip
+   */
+  source_ip?: Field
+  /**
+   * Field containing the destination IP address.
+   * @server_default destination.ip
+   */
+  destination_ip?: Field
+  /**
+   * Output field for the network direction.
+   * @server_default network.direction
+   */
+  target_field?: Field
+  /**
+   * List of internal networks. Supports IPv4 and IPv6 addresses and ranges in
+   * CIDR notation. Also supports the named ranges listed below. These may be
+   * constructed with template snippets. Must specify only one of
+   * internal_networks or internal_networks_field.
+   */
+  internal_networks?: string[]
+  /**
+   * A field on the given document to read the internal_networks configuration
+   * from.
+   */
+  internal_networks_field?: Field
+  /**
+   * If true and any required fields are missing, the processor quietly exits
+   * without modifying the document.
+   * @server_default true
+   */
+  ignore_missing?: boolean
+}
+
 export class PipelineProcessor extends ProcessorBase {
   /**
    * The name of the pipeline to execute.
@@ -1087,6 +1310,31 @@ export class RedactProcessor extends ProcessorBase {
    * @server_default false
    */
   skip_if_unlicensed?: boolean
+  /**
+   * If `true` then ingest metadata `_ingest._redact._is_redacted` is set to `true` if the document has been redacted
+   * @availability stack since=8.16.0
+   * @availability serverless
+   * @server_default false
+   */
+  trace_redact?: boolean
+}
+
+export class RegisteredDomainProcessor extends ProcessorBase {
+  /**
+   * Field containing the source FQDN.
+   */
+  field: Field
+  /**
+   * Object field containing extracted domain components. If an empty string,
+   * the processor adds components to the document’s root.
+   */
+  target_field?: Field
+  /**
+   * If true and any required fields are missing, the processor quietly exits
+   * without modifying the document.
+   * @server_default true
+   */
+  ignore_missing?: boolean
 }
 
 export class RemoveProcessor extends ProcessorBase {
@@ -1272,6 +1520,8 @@ export class SplitProcessor extends ProcessorBase {
   target_field?: Field
 }
 
+export class TerminateProcessor extends ProcessorBase {}
+
 export class TrimProcessor extends ProcessorBase {
   /**
    * The string-valued field to trim whitespace from.
diff --git a/specification/ingest/delete_geoip_database/DeleteGeoipDatabaseRequest.ts b/specification/ingest/delete_geoip_database/DeleteGeoipDatabaseRequest.ts
index 3ca4b49c63..0c9c193bec 100644
--- a/specification/ingest/delete_geoip_database/DeleteGeoipDatabaseRequest.ts
+++ b/specification/ingest/delete_geoip_database/DeleteGeoipDatabaseRequest.ts
@@ -22,7 +22,8 @@ import { Ids } from '@_types/common'
 import { Duration } from '@_types/Time'
 
 /**
- * Deletes a geoip database configuration.
+ * Delete GeoIP database configurations.
+ * Delete one or more IP geolocation database configurations.
  * @rest_spec_name ingest.delete_geoip_database
  * @availability stack since=8.15.0 stability=stable
  * @availability serverless visibility=private
diff --git a/specification/ingest/delete_ip_location_database/DeleteIpLocationDatabaseRequest.ts b/specification/ingest/delete_ip_location_database/DeleteIpLocationDatabaseRequest.ts
new file mode 100644
index 0000000000..e582550a23
--- /dev/null
+++ b/specification/ingest/delete_ip_location_database/DeleteIpLocationDatabaseRequest.ts
@@ -0,0 +1,48 @@
+/*
+ * Licensed to Elasticsearch B.V. under one or more contributor
+ * license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright
+ * ownership. Elasticsearch B.V. licenses this file to you under
+ * the Apache License, Version 2.0 (the "License"); you may
+ * not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *    http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+import { RequestBase } from '@_types/Base'
+import { Ids } from '@_types/common'
+import { Duration } from '@_types/Time'
+
+/**
+ * Deletes an IP location database configuration.
+ * @rest_spec_name ingest.delete_ip_location_database
+ * @availability stack since=8.15.0 stability=stable
+ * @availability serverless visibility=private
+ */
+export interface Request extends RequestBase {
+  path_parts: {
+    /**
+     * A comma-separated list of IP location database configurations to delete
+     */
+    id: Ids
+  }
+  query_parameters: {
+    /**
+     * Period to wait for a connection to the master node.
+     * If no response is received before the timeout expires, the request fails and returns an error.
+     * @server_default 30s */
+    master_timeout?: Duration
+    /**
+     * Period to wait for a response. If no response is received before the timeout expires, the request fails and returns an error.
+     * @server_default 30s */
+    timeout?: Duration
+  }
+}
diff --git a/specification/ingest/delete_ip_location_database/DeleteIpLocationDatabaseResponse.ts b/specification/ingest/delete_ip_location_database/DeleteIpLocationDatabaseResponse.ts
new file mode 100644
index 0000000000..7374da4a4c
--- /dev/null
+++ b/specification/ingest/delete_ip_location_database/DeleteIpLocationDatabaseResponse.ts
@@ -0,0 +1,24 @@
+/*
+ * Licensed to Elasticsearch B.V. under one or more contributor
+ * license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright
+ * ownership. Elasticsearch B.V. licenses this file to you under
+ * the Apache License, Version 2.0 (the "License"); you may
+ * not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *    http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+import { AcknowledgedResponseBase } from '@_types/Base'
+
+export class Response {
+  body: AcknowledgedResponseBase
+}
diff --git a/specification/ingest/delete_pipeline/DeletePipelineRequest.ts b/specification/ingest/delete_pipeline/DeletePipelineRequest.ts
index c5b59f07ec..f2110d39ac 100644
--- a/specification/ingest/delete_pipeline/DeletePipelineRequest.ts
+++ b/specification/ingest/delete_pipeline/DeletePipelineRequest.ts
@@ -22,10 +22,12 @@ import { Id } from '@_types/common'
 import { Duration } from '@_types/Time'
 
 /**
- * Deletes one or more existing ingest pipeline.
+ * Delete pipelines.
+ * Delete one or more ingest pipelines.
  * @rest_spec_name ingest.delete_pipeline
  * @availability stack since=5.0.0 stability=stable
  * @availability serverless stability=stable visibility=public
+ * @ext_doc_id ingest
  */
 export interface Request extends RequestBase {
   path_parts: {
diff --git a/specification/ingest/geo_ip_stats/IngestGeoIpStatsRequest.ts b/specification/ingest/geo_ip_stats/IngestGeoIpStatsRequest.ts
index bda5f2b039..a7f47d2e14 100644
--- a/specification/ingest/geo_ip_stats/IngestGeoIpStatsRequest.ts
+++ b/specification/ingest/geo_ip_stats/IngestGeoIpStatsRequest.ts
@@ -20,10 +20,12 @@
 import { RequestBase } from '@_types/Base'
 
 /**
- * Gets download statistics for GeoIP2 databases used with the geoip processor.
+ * Get GeoIP statistics.
+ * Get download statistics for GeoIP2 databases that are used with the GeoIP processor.
  * @doc_id geoip-processor
  * @rest_spec_name ingest.geo_ip_stats
  * @availability stack since=7.13.0 stability=stable
  * @availability serverless stability=stable visibility=private
+ * @ext_doc_id geoip-processor
  */
 export interface Request extends RequestBase {}
diff --git a/specification/ingest/get_geoip_database/GetGeoipDatabaseRequest.ts b/specification/ingest/get_geoip_database/GetGeoipDatabaseRequest.ts
index 341705ad9f..a3780949ae 100644
--- a/specification/ingest/get_geoip_database/GetGeoipDatabaseRequest.ts
+++ b/specification/ingest/get_geoip_database/GetGeoipDatabaseRequest.ts
@@ -22,7 +22,8 @@ import { Ids } from '@_types/common'
 import { Duration } from '@_types/Time'
 
 /**
- * Returns information about one or more geoip database configurations.
+ * Get GeoIP database configurations.
+ * Get information about one or more IP geolocation database configurations.
  * @rest_spec_name ingest.get_geoip_database
  * @availability stack since=8.15.0 stability=stable
  * @availability serverless visibility=private
diff --git a/specification/ingest/get_ip_location_database/GetIpLocationDatabaseRequest.ts b/specification/ingest/get_ip_location_database/GetIpLocationDatabaseRequest.ts
new file mode 100644
index 0000000000..41e4700f37
--- /dev/null
+++ b/specification/ingest/get_ip_location_database/GetIpLocationDatabaseRequest.ts
@@ -0,0 +1,46 @@
+/*
+ * Licensed to Elasticsearch B.V. under one or more contributor
+ * license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright
+ * ownership. Elasticsearch B.V. licenses this file to you under
+ * the Apache License, Version 2.0 (the "License"); you may
+ * not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *    http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+import { RequestBase } from '@_types/Base'
+import { Ids } from '@_types/common'
+import { Duration } from '@_types/Time'
+
+/**
+ * Returns information about one or more IP location database configurations.
+ * @rest_spec_name ingest.get_ip_location_database
+ * @availability stack since=8.15.0 stability=stable
+ * @availability serverless visibility=private
+ */
+export interface Request extends RequestBase {
+  path_parts: {
+    /**
+     * Comma-separated list of database configuration IDs to retrieve.
+     * Wildcard (`*`) expressions are supported.
+     * To get all database configurations, omit this parameter or use `*`.
+     */
+    id?: Ids
+  }
+  query_parameters: {
+    /**
+     * Period to wait for a connection to the master node.
+     * If no response is received before the timeout expires, the request fails and returns an error.
+     * @server_default 30s */
+    master_timeout?: Duration
+  }
+}
diff --git a/specification/ingest/get_ip_location_database/GetIpLocationDatabaseResponse.ts b/specification/ingest/get_ip_location_database/GetIpLocationDatabaseResponse.ts
new file mode 100644
index 0000000000..6f194ba8bb
--- /dev/null
+++ b/specification/ingest/get_ip_location_database/GetIpLocationDatabaseResponse.ts
@@ -0,0 +1,34 @@
+/*
+ * Licensed to Elasticsearch B.V. under one or more contributor
+ * license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright
+ * ownership. Elasticsearch B.V. licenses this file to you under
+ * the Apache License, Version 2.0 (the "License"); you may
+ * not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *    http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+import { DatabaseConfigurationFull } from '@ingest/_types/Database'
+import { Id, VersionNumber } from '@_types/common'
+import { EpochTime, UnitMillis } from '@_types/Time'
+
+export class Response {
+  body: { databases: DatabaseConfigurationMetadata[] }
+}
+
+class DatabaseConfigurationMetadata {
+  id: Id
+  version: VersionNumber
+  modified_date_millis?: EpochTime<UnitMillis>
+  modified_date?: EpochTime<UnitMillis>
+  database: DatabaseConfigurationFull
+}
diff --git a/specification/ingest/get_pipeline/GetPipelineRequest.ts b/specification/ingest/get_pipeline/GetPipelineRequest.ts
index 2561c9d72f..c81a99699c 100644
--- a/specification/ingest/get_pipeline/GetPipelineRequest.ts
+++ b/specification/ingest/get_pipeline/GetPipelineRequest.ts
@@ -22,11 +22,13 @@ import { Id } from '@_types/common'
 import { Duration } from '@_types/Time'
 
 /**
- * Returns information about one or more ingest pipelines.
+ * Get pipelines.
+ * Get information about one or more ingest pipelines.
  * This API returns a local reference of the pipeline.
  * @rest_spec_name ingest.get_pipeline
  * @availability stack since=5.0.0 stability=stable
  * @availability serverless stability=stable visibility=public
+ * @ext_doc_id ingest
  */
 export interface Request extends RequestBase {
   path_parts: {
diff --git a/specification/ingest/processor_grok/GrokProcessorPatternsRequest.ts b/specification/ingest/processor_grok/GrokProcessorPatternsRequest.ts
index 7a44513679..0b1fa53570 100644
--- a/specification/ingest/processor_grok/GrokProcessorPatternsRequest.ts
+++ b/specification/ingest/processor_grok/GrokProcessorPatternsRequest.ts
@@ -20,12 +20,14 @@
 import { RequestBase } from '@_types/Base'
 
 /**
- * Extracts structured fields out of a single text field within a document.
- * You choose which field to extract matched fields from, as well as the grok pattern you expect will match.
+ * Run a grok processor.
+ * Extract structured fields out of a single text field within a document.
+ * You must choose which field to extract matched fields from, as well as the grok pattern you expect will match.
  * A grok pattern is like a regular expression that supports aliased expressions that can be reused.
  * @doc_id grok-processor
  * @rest_spec_name ingest.processor_grok
  * @availability stack since=6.1.0 stability=stable
  * @availability serverless stability=stable visibility=public
+ * @ext_doc_id grok-processor
  */
 export interface Request extends RequestBase {}
diff --git a/specification/ingest/put_geoip_database/PutGeoipDatabaseRequest.ts b/specification/ingest/put_geoip_database/PutGeoipDatabaseRequest.ts
index 7cc987f98d..9816b2fb7b 100644
--- a/specification/ingest/put_geoip_database/PutGeoipDatabaseRequest.ts
+++ b/specification/ingest/put_geoip_database/PutGeoipDatabaseRequest.ts
@@ -23,7 +23,8 @@ import { Id, Name } from '@_types/common'
 import { Duration } from '@_types/Time'
 
 /**
- * Returns information about one or more geoip database configurations.
+ * Create or update GeoIP database configurations.
+ * Create or update IP geolocation database configurations.
  * @rest_spec_name ingest.put_geoip_database
  * @availability stack since=8.15.0 stability=stable
  * @availability serverless visibility=private
diff --git a/specification/ingest/put_ip_location_database/PutIpLocationDatabaseRequest.ts b/specification/ingest/put_ip_location_database/PutIpLocationDatabaseRequest.ts
new file mode 100644
index 0000000000..e27b6ac5c4
--- /dev/null
+++ b/specification/ingest/put_ip_location_database/PutIpLocationDatabaseRequest.ts
@@ -0,0 +1,51 @@
+/*
+ * Licensed to Elasticsearch B.V. under one or more contributor
+ * license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright
+ * ownership. Elasticsearch B.V. licenses this file to you under
+ * the Apache License, Version 2.0 (the "License"); you may
+ * not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *    http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+import { DatabaseConfiguration } from '@ingest/_types/Database'
+import { RequestBase } from '@_types/Base'
+import { Id } from '@_types/common'
+import { Duration } from '@_types/Time'
+
+/**
+ * Returns information about one or more IP location database configurations.
+ * @rest_spec_name ingest.put_ip_location_database
+ * @availability stack since=8.15.0 stability=stable
+ * @availability serverless visibility=private
+ */
+export interface Request extends RequestBase {
+  path_parts: {
+    /**
+     * ID of the database configuration to create or update.
+     */
+    id: Id
+  }
+  query_parameters: {
+    /**
+     * Period to wait for a connection to the master node.
+     * If no response is received before the timeout expires, the request fails and returns an error.
+     * @server_default 30s */
+    master_timeout?: Duration
+    /**
+     * Period to wait for a response. If no response is received before the timeout expires, the request fails and returns an error.
+     * @server_default 30s */
+    timeout?: Duration
+  }
+  /** @codegen_name configuration */
+  body: DatabaseConfiguration
+}
diff --git a/specification/ingest/put_ip_location_database/PutIpLocationDatabaseResponse.ts b/specification/ingest/put_ip_location_database/PutIpLocationDatabaseResponse.ts
new file mode 100644
index 0000000000..7374da4a4c
--- /dev/null
+++ b/specification/ingest/put_ip_location_database/PutIpLocationDatabaseResponse.ts
@@ -0,0 +1,24 @@
+/*
+ * Licensed to Elasticsearch B.V. under one or more contributor
+ * license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright
+ * ownership. Elasticsearch B.V. licenses this file to you under
+ * the Apache License, Version 2.0 (the "License"); you may
+ * not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *    http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+import { AcknowledgedResponseBase } from '@_types/Base'
+
+export class Response {
+  body: AcknowledgedResponseBase
+}
diff --git a/specification/ingest/put_pipeline/PutPipelineRequest.ts b/specification/ingest/put_pipeline/PutPipelineRequest.ts
index 5f066cd2c8..71738084d6 100644
--- a/specification/ingest/put_pipeline/PutPipelineRequest.ts
+++ b/specification/ingest/put_pipeline/PutPipelineRequest.ts
@@ -23,12 +23,13 @@ import { Id, Metadata, VersionNumber } from '@_types/common'
 import { Duration } from '@_types/Time'
 
 /**
- * Creates or updates an ingest pipeline.
+ * Create or update a pipeline.
  * Changes made using this API take effect immediately.
  * @doc_id ingest
  * @rest_spec_name ingest.put_pipeline
  * @availability stack since=5.0.0 stability=stable
  * @availability serverless stability=stable visibility=public
+ * @ext_doc_id ingest
  */
 export interface Request extends RequestBase {
   path_parts: {
diff --git a/specification/ingest/simulate/SimulatePipelineRequest.ts b/specification/ingest/simulate/SimulatePipelineRequest.ts
index 00709586ae..ba29c492d5 100644
--- a/specification/ingest/simulate/SimulatePipelineRequest.ts
+++ b/specification/ingest/simulate/SimulatePipelineRequest.ts
@@ -23,7 +23,9 @@ import { Id } from '@_types/common'
 import { Document } from './types'
 
 /**
- * Executes an ingest pipeline against a set of provided documents.
+ * Simulate a pipeline.
+ * Run an ingest pipeline against a set of provided documents.
+ * You can either specify an existing pipeline to use with the provided documents or supply a pipeline definition in the body of the request.
  * @rest_spec_name ingest.simulate
  * @availability stack since=5.0.0 stability=stable
  * @availability serverless stability=stable visibility=public
diff --git a/specification/ingest/simulate/types.ts b/specification/ingest/simulate/types.ts
index 50b113ff08..601377f7ac 100644
--- a/specification/ingest/simulate/types.ts
+++ b/specification/ingest/simulate/types.ts
@@ -27,10 +27,22 @@ import { ErrorCause } from '@_types/Errors'
 import { DateTime } from '@_types/Time'
 
 export class Ingest {
+  /**
+   * @availability stack since=8.16.0
+   * @availability serverless
+   */
+  _redact?: Redact
   timestamp: DateTime
   pipeline?: Name
 }
 
+export class Redact {
+  /**
+   * indicates if document has been redacted
+   */
+  _is_redacted: boolean
+}
+
 export class SimulateDocumentResult {
   doc?: DocumentSimulation
   error?: ErrorCause
diff --git a/specification/migration/deprecations/types.ts b/specification/migration/deprecations/types.ts
index bc42d1ece4..4bf5fc7e07 100644
--- a/specification/migration/deprecations/types.ts
+++ b/specification/migration/deprecations/types.ts
@@ -17,6 +17,9 @@
  * under the License.
  */
 
+import { Dictionary } from '@spec_utils/Dictionary'
+import { UserDefinedValue } from '@spec_utils/UserDefinedValue'
+
 export enum DeprecationLevel {
   none,
   info,
@@ -27,9 +30,11 @@ export enum DeprecationLevel {
 }
 
 export class Deprecation {
-  details: string
+  details?: string
   /** The level property describes the significance of the issue. */
   level: DeprecationLevel
   message: string
   url: string
+  resolve_during_rolling_upgrade: boolean
+  _meta?: Dictionary<string, UserDefinedValue>
 }
diff --git a/specification/ml/_types/Analysis.ts b/specification/ml/_types/Analysis.ts
index d8474adc30..9239b5cd47 100644
--- a/specification/ml/_types/Analysis.ts
+++ b/specification/ml/_types/Analysis.ts
@@ -21,7 +21,7 @@ import { OverloadOf } from '@spec_utils/behaviors'
 import { CharFilter } from '@_types/analysis/char_filters'
 import { Tokenizer } from '@_types/analysis/tokenizers'
 import { TokenFilter } from '@_types/analysis/token_filters'
-import { Field } from '@_types/common'
+import { ByteSize, Field } from '@_types/common'
 import { long } from '@_types/Numeric'
 import { Duration } from '@_types/Time'
 import { Detector, DetectorRead } from './Detector'
@@ -168,7 +168,7 @@ export class AnalysisLimits {
    * The approximate maximum amount of memory resources that are required for analytical processing. Once this limit is approached, data pruning becomes more aggressive. Upon exceeding this limit, new entities are not modeled. If the `xpack.ml.max_model_memory_limit` setting has a value greater than 0 and less than 1024mb, that value is used instead of the default. The default value is relatively small to ensure that high resource usage is a conscious decision. If you have jobs that are expected to analyze high cardinality fields, you will likely need to use a higher value. If you specify a number instead of a string, the units are assumed to be MiB. Specifying a string is recommended for clarity. If you specify a byte size unit of `b` or `kb` and the number does not equate to a discrete number of megabytes, it is rounded down to the closest MiB. The minimum valid value is 1 MiB. If you specify a value less than 1 MiB, an error occurs. If you specify a value for the `xpack.ml.max_model_memory_limit` setting, an error occurs when you try to create jobs that have `model_memory_limit` values greater than that setting value.
    * @server_default 1024mb
    */
-  model_memory_limit?: string
+  model_memory_limit?: ByteSize
 }
 
 export class AnalysisMemoryLimit {
@@ -192,6 +192,7 @@ export class CategorizationAnalyzerDefinition {
   filter?: Array<TokenFilter>
   /**
    * The name or definition of the tokenizer to use after character filters are applied. This property is compulsory if `categorization_analyzer` is specified as an object. Machine learning provides a tokenizer called `ml_standard` that tokenizes in a way that has been determined to produce good categorization results on a variety of log file formats for logs in English. If you want to use that tokenizer but change the character or token filters, specify "tokenizer": "ml_standard" in your `categorization_analyzer`. Additionally, the `ml_classic` tokenizer is available, which tokenizes in the same way as the non-customizable tokenizer in old versions of the product (before 6.2). `ml_classic` was the default categorization tokenizer in versions 6.2 to 7.13, so if you need categorization identical to the default for jobs created in these versions, specify "tokenizer": "ml_classic" in your `categorization_analyzer`.
+   * @ext_doc_id analysis-tokenizers
    */
   tokenizer?: Tokenizer
 }
diff --git a/specification/ml/_types/Anomaly.ts b/specification/ml/_types/Anomaly.ts
index f0d95dff1c..dc2bd477b2 100644
--- a/specification/ml/_types/Anomaly.ts
+++ b/specification/ml/_types/Anomaly.ts
@@ -121,20 +121,21 @@ export class Anomaly {
 }
 
 export class AnomalyCause {
-  actual: double[]
-  by_field_name: Name
-  by_field_value: string
-  correlated_by_field_value: string
-  field_name: Field
-  function: string
-  function_description: string
-  influencers: Influence[]
-  over_field_name: Name
-  over_field_value: string
-  partition_field_name: string
-  partition_field_value: string
+  actual?: double[]
+  by_field_name?: Name
+  by_field_value?: string
+  correlated_by_field_value?: string
+  field_name?: Field
+  function?: string
+  function_description?: string
+  geo_results?: GeoResults
+  influencers?: Influence[]
+  over_field_name?: Name
+  over_field_value?: string
+  partition_field_name?: string
+  partition_field_value?: string
   probability: double
-  typical: double[]
+  typical?: double[]
 }
 
 export class Influence {
@@ -146,11 +147,11 @@ export class GeoResults {
   /**
    * The actual value for the bucket formatted as a `geo_point`.
    */
-  actual_point: string
+  actual_point?: string
   /**
    * The typical value for the bucket formatted as a `geo_point`.
    */
-  typical_point: string
+  typical_point?: string
 }
 
 export class AnomalyExplanation {
diff --git a/specification/ml/_types/Bucket.ts b/specification/ml/_types/Bucket.ts
index cde8cd2836..0f7eb5013d 100644
--- a/specification/ml/_types/Bucket.ts
+++ b/specification/ml/_types/Bucket.ts
@@ -140,7 +140,7 @@ export class OverallBucket {
   /** The start time of the bucket for which these results were calculated. */
   timestamp: EpochTime<UnitMillis>
   /** The start time of the bucket for which these results were calculated. */
-  timestamp_string: DateTime
+  timestamp_string?: DateTime
 }
 export class OverallBucketJob {
   job_id: Id
diff --git a/specification/ml/_types/Datafeed.ts b/specification/ml/_types/Datafeed.ts
index 5d66e38594..e9e63ee692 100644
--- a/specification/ml/_types/Datafeed.ts
+++ b/specification/ml/_types/Datafeed.ts
@@ -28,10 +28,11 @@ import { ScriptField } from '@_types/Scripting'
 import {
   Duration,
   DurationValue,
+  EpochTime,
   UnitFloatMillis,
   UnitMillis
 } from '@_types/Time'
-import { DiscoveryNode } from './DiscoveryNode'
+import { DiscoveryNodeCompact } from './DiscoveryNode'
 
 export class Datafeed {
   /** @aliases aggs */
@@ -47,6 +48,9 @@ export class Datafeed {
   indexes?: string[]
   job_id: Id
   max_empty_searches?: integer
+  /**
+   * @ext_doc_id query-dsl
+   */
   query: QueryContainer
   query_delay?: Duration
   script_fields?: Dictionary<string, ScriptField>
@@ -151,7 +155,7 @@ export class DatafeedStats {
    * For started datafeeds only, this information pertains to the node upon which the datafeed is started.
    * @availability stack
    */
-  node?: DiscoveryNode
+  node?: DiscoveryNodeCompact
   /**
    * The status of the datafeed, which can be one of the following values: `starting`, `started`, `stopping`, `stopped`.
    */
@@ -159,7 +163,7 @@ export class DatafeedStats {
   /**
    * An object that provides statistical information about timing aspect of this datafeed.
    */
-  timing_stats: DatafeedTimingStats
+  timing_stats?: DatafeedTimingStats
   /**
    * An object containing the running state for this datafeed.
    * It is only provided if the datafeed is started.
@@ -176,6 +180,9 @@ export class DatafeedTimingStats {
    * The exponential average search time per hour, in milliseconds.
    */
   exponential_average_search_time_per_hour_ms: DurationValue<UnitFloatMillis>
+
+  exponential_average_calculation_context?: ExponentialAverageCalculationContext
+
   /**
    * Identifier for the anomaly detection job.
    */
@@ -194,6 +201,12 @@ export class DatafeedTimingStats {
   average_search_time_per_bucket_ms?: DurationValue<UnitFloatMillis>
 }
 
+export class ExponentialAverageCalculationContext {
+  incremental_metric_value_ms: DurationValue<UnitFloatMillis>
+  latest_timestamp?: EpochTime<UnitMillis>
+  previous_exponential_average_ms?: DurationValue<UnitFloatMillis>
+}
+
 export class DatafeedRunningState {
   /**
    * Indicates if the datafeed is "real-time"; meaning that the datafeed has no configured `end` time.
diff --git a/specification/ml/_types/DataframeAnalytics.ts b/specification/ml/_types/DataframeAnalytics.ts
index fbafef44ae..95d4b3e9db 100644
--- a/specification/ml/_types/DataframeAnalytics.ts
+++ b/specification/ml/_types/DataframeAnalytics.ts
@@ -25,6 +25,7 @@ import {
   Id,
   IndexName,
   Indices,
+  Metadata,
   Name,
   VersionString
 } from '@_types/common'
@@ -318,6 +319,7 @@ export class DataframeAnalyticsSummary {
   model_memory_limit?: string
   source: DataframeAnalyticsSource
   version?: VersionString
+  _meta?: Metadata
 }
 
 export class DataframeAnalytics {
diff --git a/specification/ml/_types/Detector.ts b/specification/ml/_types/Detector.ts
index 205031d14d..849ac84410 100644
--- a/specification/ml/_types/Detector.ts
+++ b/specification/ml/_types/Detector.ts
@@ -124,6 +124,24 @@ export class DetectorRead implements OverloadOf<Detector> {
   use_null?: boolean
 }
 
+export class DetectorUpdate {
+  /**
+   * A unique identifier for the detector.
+   * This identifier is based on the order of the detectors in the `analysis_config`, starting at zero.
+   */
+  detector_index: integer
+  /**
+   * A description of the detector.
+   */
+  description?: string
+  /**
+   * An array of custom rule objects, which enable you to customize the way detectors operate.
+   * For example, a rule may dictate to the detector conditions under which results should be skipped.
+   * Kibana refers to custom rules as job rules.
+   */
+  custom_rules?: DetectionRule[]
+}
+
 export enum ExcludeFrequent {
   all,
   none,
diff --git a/specification/ml/_types/DiscoveryNode.ts b/specification/ml/_types/DiscoveryNode.ts
index 5c213f3b0a..578179f9cb 100644
--- a/specification/ml/_types/DiscoveryNode.ts
+++ b/specification/ml/_types/DiscoveryNode.ts
@@ -17,14 +17,32 @@
  * under the License.
  */
 
-import { Dictionary } from '@spec_utils/Dictionary'
-import { Id, Name } from '@_types/common'
+import { Dictionary, SingleKeyDictionary } from '@spec_utils/Dictionary'
+import { Id, Name, VersionString } from '@_types/common'
 import { TransportAddress } from '@_types/Networking'
+import { integer } from '@_types/Numeric'
 
-export class DiscoveryNode {
+export type DiscoveryNode = SingleKeyDictionary<Id, DiscoveryNodeContent>
+
+export class DiscoveryNodeContent {
+  name?: Name
+  ephemeral_id: Id
+  transport_address: TransportAddress
+  external_id: string
   attributes: Dictionary<string, string>
+  roles: string[]
+  version: VersionString
+  min_index_version: integer
+  max_index_version: integer
+}
+
+/**
+ * Alternative representation of DiscoveryNode used in ml.get_job_stats and ml.get_datafeed_stats
+ */
+export class DiscoveryNodeCompact {
+  name: Name
   ephemeral_id: Id
   id: Id
-  name: Name
   transport_address: TransportAddress
+  attributes: Dictionary<string, string>
 }
diff --git a/specification/ml/_types/Job.ts b/specification/ml/_types/Job.ts
index b15656ac05..2eed0dcf4d 100644
--- a/specification/ml/_types/Job.ts
+++ b/specification/ml/_types/Job.ts
@@ -30,7 +30,7 @@ import {
   DurationValue,
   UnitFloatMillis
 } from '@_types/Time'
-import { DiscoveryNode } from './DiscoveryNode'
+import { DiscoveryNodeCompact } from './DiscoveryNode'
 import { ModelSizeStats } from './Model'
 
 export enum JobState {
@@ -310,7 +310,7 @@ export class JobStats {
    * This information is available only for open jobs.
    * @availability stack
    */
-  node?: DiscoveryNode
+  node?: DiscoveryNodeCompact
   /**
    * For open jobs only, the elapsed time for which the job has been open.
    */
diff --git a/specification/ml/_types/Model.ts b/specification/ml/_types/Model.ts
index 806d14faf2..5ad5eb0e38 100644
--- a/specification/ml/_types/Model.ts
+++ b/specification/ml/_types/Model.ts
@@ -64,6 +64,7 @@ export class ModelSizeStats {
   model_bytes: ByteSize
   model_bytes_exceeded?: ByteSize
   model_bytes_memory_limit?: ByteSize
+  output_memory_allocator_bytes?: ByteSize
   peak_model_bytes?: ByteSize
   assignment_memory_basis?: string
   result_type: string
diff --git a/specification/ml/_types/TrainedModel.ts b/specification/ml/_types/TrainedModel.ts
index e781e4a166..49ffdd8fbd 100644
--- a/specification/ml/_types/TrainedModel.ts
+++ b/specification/ml/_types/TrainedModel.ts
@@ -24,6 +24,7 @@ import {
   Field,
   Id,
   IndexName,
+  Metadata,
   Name,
   VersionString
 } from '@_types/common'
@@ -59,15 +60,16 @@ export class TrainedModelStats {
 }
 
 export class TrainedModelDeploymentStats {
+  adaptive_allocations?: AdaptiveAllocationsSettings
   /** The detailed allocation status for the deployment. */
-  allocation_status: TrainedModelDeploymentAllocationStatus
+  allocation_status?: TrainedModelDeploymentAllocationStatus
   cache_size?: ByteSize
   /** The unique identifier for the trained model deployment. */
   deployment_id: Id
   /** The sum of `error_count` for all nodes in the deployment. */
-  error_count: integer
+  error_count?: integer
   /** The sum of `inference_count` for all nodes in the deployment. */
-  inference_count: integer
+  inference_count?: integer
   /** The unique identifier for the trained model. */
   model_id: Id
   /**
@@ -76,28 +78,38 @@ export class TrainedModelDeploymentStats {
    */
   nodes: TrainedModelDeploymentNodesStats[]
   /** The number of allocations requested. */
-  number_of_allocations: integer
+  number_of_allocations?: integer
+
+  peak_throughput_per_minute: long
+
+  priority: TrainingPriority
   /** The number of inference requests that can be queued before new requests are rejected. */
-  queue_capacity: integer
+  queue_capacity?: integer
   /**
    * The sum of `rejected_execution_count` for all nodes in the deployment.
    * Individual nodes reject an inference request if the inference queue is full.
    * The queue size is controlled by the `queue_capacity` setting in the start
    * trained model deployment API.
    */
-  rejected_execution_count: integer
+  rejected_execution_count?: integer
   /** The reason for the current deployment state. Usually only populated when
    * the model is not deployed to a node.
    */
-  reason: string
+  reason?: string
   /** The epoch timestamp when the deployment started. */
   start_time: EpochTime<UnitMillis>
   /** The overall state of the deployment. */
-  state: DeploymentState
+  state?: DeploymentAssignmentState
   /** The number of threads used be each allocation during inference. */
-  threads_per_allocation: integer
+  threads_per_allocation?: integer
   /** The sum of `timeout_count` for all nodes in the deployment. */
-  timeout_count: integer
+  timeout_count?: integer
+}
+
+export class AdaptiveAllocationsSettings {
+  enabled: boolean
+  min_number_of_allocations?: integer
+  max_number_of_allocations?: integer
 }
 
 export class TrainedModelInferenceStats {
@@ -131,34 +143,49 @@ export class TrainedModelSizeStats {
 
 export class TrainedModelDeploymentNodesStats {
   /** The average time for each inference call to complete on this node. */
-  average_inference_time_ms: DurationValue<UnitFloatMillis>
+  average_inference_time_ms?: DurationValue<UnitFloatMillis>
+
+  average_inference_time_ms_last_minute?: DurationValue<UnitFloatMillis>
+
+  /** The average time for each inference call to complete on this node, excluding cache */
+  average_inference_time_ms_excluding_cache_hits?: DurationValue<UnitFloatMillis>
+
   /** The number of errors when evaluating the trained model. */
-  error_count: integer
+  error_count?: integer
   /** The total number of inference calls made against this node for this model. */
-  inference_count: integer
+  inference_count?: long
+
+  inference_cache_hit_count?: long
+
+  inference_cache_hit_count_last_minute?: long
+
   /** The epoch time stamp of the last inference call for the model on this node. */
-  last_access: long
+  last_access?: EpochTime<UnitMillis>
   /**
    * Information pertaining to the node.
    * @availability stack
    */
-  node: DiscoveryNode
+  node?: DiscoveryNode
   /**
    * The number of allocations assigned to this node.
    */
-  number_of_allocations: integer
+  number_of_allocations?: integer
   /** The number of inference requests queued to be processed. */
-  number_of_pending_requests: integer
+  number_of_pending_requests?: integer
+
+  peak_throughput_per_minute: long
   /** The number of inference requests that were not processed because the queue was full. */
-  rejection_execution_count: integer
+  rejection_execution_count?: integer
   /** The current routing state and reason for the current routing state for this allocation. */
   routing_state: TrainedModelAssignmentRoutingTable
   /** The epoch timestamp when the allocation started. */
-  start_time: EpochTime<UnitMillis>
+  start_time?: EpochTime<UnitMillis>
   /** The number of threads used by each allocation during inference. */
-  threads_per_allocation: integer
+  threads_per_allocation?: integer
+
+  throughput_last_minute: integer
   /** The number of inference requests that timed out before being processed. */
-  timeout_count: integer
+  timeout_count?: integer
 }
 
 export class TrainedModelConfig {
@@ -194,7 +221,9 @@ export class TrainedModelConfig {
   /** An object containing metadata about the trained model. For example, models created by data frame analytics contain analysis_config and input objects. */
   metadata?: TrainedModelConfigMetadata
   model_size_bytes?: ByteSize
+  model_package?: ModelPackageConfig
   location?: TrainedModelLocation
+  platform_architecture?: string
   prefix_strings?: TrainedModelPrefixStrings
 }
 
@@ -213,6 +242,23 @@ export class TrainedModelConfigMetadata {
   total_feature_importance?: TotalFeatureImportance[]
 }
 
+export class ModelPackageConfig {
+  create_time?: EpochTime<UnitMillis>
+  description?: string
+  inference_config?: Dictionary<string, UserDefinedValue>
+  metadata?: Metadata
+  minimum_version?: string
+  model_repository?: string
+  model_type?: string
+  packaged_model_id: Id
+  platform_architecture?: string
+  prefix_strings?: TrainedModelPrefixStrings
+  size?: ByteSize
+  sha256?: string
+  tags?: string[]
+  vocabulary_file?: string
+}
+
 export class Hyperparameter {
   /**
    * A positive number showing how much the parameter influences the variation of the loss function. For hyperparameters with values that are not specified by the user but tuned during hyperparameter optimization.
@@ -270,40 +316,37 @@ export enum TrainedModelType {
   pytorch
 }
 
-export enum DeploymentState {
+export enum DeploymentAllocationState {
   /**
-   * The deployment is usable; at least one node has the model allocated.
+   * The trained model is started on at least one node.
    */
   started,
   /**
-   * The deployment has recently started but is not yet usable; the model is not allocated on any nodes.
+   * Trained model deployment is starting but it is not yet deployed on any nodes.
    */
   starting,
   /**
-   * The deployment is preparing to stop and deallocate the model from the relevant nodes.
+   * Trained model deployment has started on all valid nodes.
    */
-  stopping
+  fully_allocated
 }
 
-export enum DeploymentAllocationState {
+export enum DeploymentAssignmentState {
   /**
-   * The trained model is started on at least one node.
+   * The deployment is usable; at least one node has the model allocated.
    */
   started,
   /**
-   * Trained model deployment is starting but it is not yet deployed on any nodes.
+   * The deployment has recently started but is not yet usable; the model is not allocated on any nodes.
    */
   starting,
   /**
-   * Trained model deployment has started on all valid nodes.
+   * The deployment is preparing to stop and deallocate the model from the relevant nodes.
    */
-  fully_allocated
-}
-
-export enum DeploymentAssignmentState {
-  starting,
-  started,
   stopping,
+  /**
+   * The deployment is on a failed state and must be re-deployed.
+   */
   failed
 }
 
@@ -316,7 +359,7 @@ export class TrainedModelAssignmentTaskParameters {
   /**
    * The size of the trained model in bytes.
    */
-  model_bytes: integer
+  model_bytes: ByteSize
   /**
    * The unique identifier for the trained model.
    */
@@ -330,13 +373,16 @@ export class TrainedModelAssignmentTaskParameters {
    * @availability stack since=8.4.0
    * @availability serverless
    */
-  cache_size: ByteSize
+  cache_size?: ByteSize
   /**
    * The total number of allocations this model is assigned across ML nodes.
    */
   number_of_allocations: integer
   priority: TrainingPriority
 
+  per_deployment_memory_bytes: ByteSize
+  per_allocation_memory_bytes: ByteSize
+
   /**
    * Number of inference requests are allowed in the queue at a time.
    */
@@ -375,7 +421,7 @@ export class TrainedModelAssignmentRoutingTable {
    * The reason for the current state. It is usually populated only when the
    * `routing_state` is `failed`.
    */
-  reason: string
+  reason?: string
   /**
    * The current routing state.
    */
@@ -400,11 +446,13 @@ export class TrainedModelDeploymentAllocationStatus {
 }
 
 export class TrainedModelAssignment {
+  adaptive_allocations?: AdaptiveAllocationsSettings | null
   /**
    * The overall assignment state.
    */
   assignment_state: DeploymentAssignmentState
   max_assigned_allocations?: integer
+  reason?: string
   /**
    * The allocation state for each node.
    */
diff --git a/specification/ml/_types/inference.ts b/specification/ml/_types/inference.ts
index 5da1fe821c..1cc539dc27 100644
--- a/specification/ml/_types/inference.ts
+++ b/specification/ml/_types/inference.ts
@@ -17,8 +17,11 @@
  * under the License.
  */
 
+import { Dictionary } from '@spec_utils/Dictionary'
+import { UserDefinedValue } from '@spec_utils/UserDefinedValue'
 import { Field, IndexName, ScalarValue } from '@_types/common'
-import { double, integer } from '@_types/Numeric'
+import { double, float, integer } from '@_types/Numeric'
+import { QueryContainer } from '@_types/query_dsl/abstractions'
 
 /**
  * Inference configuration provided when storing the model config
@@ -47,6 +50,8 @@ export class InferenceConfigCreateContainer {
    * @availability serverless
    */
   fill_mask?: FillMaskInferenceOptions
+
+  learning_to_rank?: LearningToRankConfig
   /**
    * Named entity recognition configuration for inference.
    * @availability stack since=8.0.0
@@ -79,6 +84,26 @@ export class InferenceConfigCreateContainer {
   question_answering?: QuestionAnsweringInferenceOptions
 }
 
+export class LearningToRankConfig {
+  default_params?: Dictionary<string, UserDefinedValue>
+  feature_extractors?: Dictionary<string, FeatureExtractor>[]
+  num_top_feature_importance_values: integer
+}
+
+/**
+ * @variants external
+ */
+export type FeatureExtractor = QueryFeatureExtractor
+
+/**
+ * @variant name=query_extractor
+ */
+export class QueryFeatureExtractor {
+  default_score?: float
+  feature_name: string
+  query: QueryContainer
+}
+
 export class RegressionInferenceOptions {
   /** The field that is added to incoming documents to contain the inference prediction. Defaults to predicted_value. */
   results_field?: Field
@@ -114,6 +139,8 @@ export class ClassificationInferenceOptions {
 export class TokenizationConfigContainer {
   /** Indicates BERT tokenization and its options */
   bert?: NlpBertTokenizationConfig
+  /** Indicates BERT Japanese tokenization and its options */
+  bert_ja?: NlpBertTokenizationConfig
   /**
    * Indicates MPNET tokenization and its options
    * @availability stack since=8.1.0
@@ -126,66 +153,52 @@ export class TokenizationConfigContainer {
    * @availability serverless
    * */
   roberta?: NlpRobertaTokenizationConfig
+
+  xlm_roberta?: XlmRobertaTokenizationConfig
 }
 
-/** BERT and MPNet tokenization configuration options */
-export class NlpBertTokenizationConfig {
+export class CommonTokenizationConfig {
   /**
    * Should the tokenizer lower case the text
    * @server_default false
    */
   do_lower_case?: boolean
-  /**
-   * Is tokenization completed with special tokens
-   * @server_default true
-   */
-  with_special_tokens?: boolean
   /**
    * Maximum input sequence length for the model
    * @server_default 512
    */
   max_sequence_length?: integer
+  /**
+   * Tokenization spanning options. Special value of -1 indicates no spanning takes place
+   * @server_default -1
+   */
+  span?: integer
   /**
    * Should tokenization input be automatically truncated before sending to the model for inference
    * @server_default first
    */
   truncate?: TokenizationTruncate
   /**
-   * Tokenization spanning options. Special value of -1 indicates no spanning takes place
-   * @server_default -1
+   * Is tokenization completed with special tokens
+   * @server_default true
    */
-  span?: integer
+  with_special_tokens?: boolean
 }
 
+/** BERT and MPNet tokenization configuration options */
+export class NlpBertTokenizationConfig extends CommonTokenizationConfig {}
+
 /** RoBERTa tokenization configuration options */
-export class NlpRobertaTokenizationConfig {
+export class NlpRobertaTokenizationConfig extends CommonTokenizationConfig {
   /**
    * Should the tokenizer prefix input with a space character
    * @server_default false
    */
   add_prefix_space?: boolean
-  /**
-   * Is tokenization completed with special tokens
-   * @server_default true
-   */
-  with_special_tokens?: boolean
-  /**
-   * Maximum input sequence length for the model
-   * @server_default 512
-   */
-  max_sequence_length?: integer
-  /**
-   * Should tokenization input be automatically truncated before sending to the model for inference
-   * @server_default first
-   */
-  truncate?: TokenizationTruncate
-  /**
-   * Tokenization spanning options. Special value of -1 indicates no spanning takes place
-   * @server_default -1
-   */
-  span?: integer
 }
 
+export class XlmRobertaTokenizationConfig extends CommonTokenizationConfig {}
+
 /** Text classification configuration options */
 export class TextClassificationInferenceOptions {
   /** Specifies the number of top class predictions to return. Defaults to 0. */
@@ -196,6 +209,8 @@ export class TextClassificationInferenceOptions {
   results_field?: string
   /** Classification labels to apply other than the stored labels. Must have the same deminsions as the default configured labels */
   classification_labels?: string[]
+
+  vocabulary?: Vocabulary
 }
 
 /** Zero shot classification configuration options */
@@ -242,6 +257,8 @@ export class TextEmbeddingInferenceOptions {
   tokenization?: TokenizationConfigContainer
   /** The field that is added to incoming documents to contain the inference prediction. Defaults to predicted_value. */
   results_field?: string
+
+  vocabulary: Vocabulary
 }
 
 /** Text expansion inference options */
@@ -250,6 +267,7 @@ export class TextExpansionInferenceOptions {
   tokenization?: TokenizationConfigContainer
   /** The field that is added to incoming documents to contain the inference prediction. Defaults to predicted_value. */
   results_field?: string
+  vocabulary: Vocabulary
 }
 
 /** Named entity recognition options */
@@ -277,6 +295,7 @@ export class FillMaskInferenceOptions {
   tokenization?: TokenizationConfigContainer
   /** The field that is added to incoming documents to contain the inference prediction. Defaults to predicted_value. */
   results_field?: string
+  vocabulary: Vocabulary
 }
 
 /** Question answering inference options */
diff --git a/specification/ml/clear_trained_model_deployment_cache/MlClearTrainedModelDeploymentCacheRequest.ts b/specification/ml/clear_trained_model_deployment_cache/MlClearTrainedModelDeploymentCacheRequest.ts
index 9791c59f1f..7123f9d478 100644
--- a/specification/ml/clear_trained_model_deployment_cache/MlClearTrainedModelDeploymentCacheRequest.ts
+++ b/specification/ml/clear_trained_model_deployment_cache/MlClearTrainedModelDeploymentCacheRequest.ts
@@ -30,6 +30,7 @@ import { Id } from '@_types/common'
  * @availability stack since=8.5.0 stability=stable
  * @availability serverless stability=stable visibility=private
  * @cluster_privileges manage_ml
+ * @doc_tag ml trained model
  */
 export interface Request extends RequestBase {
   path_parts: {
diff --git a/specification/ml/close_job/MlCloseJobRequest.ts b/specification/ml/close_job/MlCloseJobRequest.ts
index 4808f1d6bc..9362cb5d52 100644
--- a/specification/ml/close_job/MlCloseJobRequest.ts
+++ b/specification/ml/close_job/MlCloseJobRequest.ts
@@ -32,6 +32,7 @@ import { Duration } from '@_types/Time'
  * @availability serverless stability=stable visibility=public
  * @cluster_privileges manage_ml
  * @doc_id ml-close-job
+ * @doc_tag ml anomaly
  */
 export interface Request extends RequestBase {
   path_parts: {
diff --git a/specification/ml/delete_calendar/MlDeleteCalendarRequest.ts b/specification/ml/delete_calendar/MlDeleteCalendarRequest.ts
index a295812a75..2d2ef2cef4 100644
--- a/specification/ml/delete_calendar/MlDeleteCalendarRequest.ts
+++ b/specification/ml/delete_calendar/MlDeleteCalendarRequest.ts
@@ -28,6 +28,7 @@ import { Id } from '@_types/common'
  * @availability serverless stability=stable visibility=public
  * @cluster_privileges manage_ml
  * @doc_id ml-delete-calendar
+ * @doc_tag ml anomaly
  */
 export interface Request extends RequestBase {
   path_parts: {
diff --git a/specification/ml/delete_calendar_event/MlDeleteCalendarEventRequest.ts b/specification/ml/delete_calendar_event/MlDeleteCalendarEventRequest.ts
index 1b8c79bdb3..c2a1af0b49 100644
--- a/specification/ml/delete_calendar_event/MlDeleteCalendarEventRequest.ts
+++ b/specification/ml/delete_calendar_event/MlDeleteCalendarEventRequest.ts
@@ -26,6 +26,7 @@ import { Id } from '@_types/common'
  * @availability stack since=6.2.0 stability=stable
  * @availability serverless stability=stable visibility=public
  * @doc_id ml-delete-calendar-event
+ * @doc_tag ml anomaly
  */
 export interface Request extends RequestBase {
   path_parts: {
diff --git a/specification/ml/delete_calendar_job/MlDeleteCalendarJobRequest.ts b/specification/ml/delete_calendar_job/MlDeleteCalendarJobRequest.ts
index 6562502b8c..ff16394fe1 100644
--- a/specification/ml/delete_calendar_job/MlDeleteCalendarJobRequest.ts
+++ b/specification/ml/delete_calendar_job/MlDeleteCalendarJobRequest.ts
@@ -27,6 +27,7 @@ import { Id, Ids } from '@_types/common'
  * @availability serverless stability=stable visibility=public
  * @cluster_privileges manage_ml
  * @doc_id ml-delete-calendar-job
+ * @doc_tag ml anomaly
  */
 export interface Request extends RequestBase {
   path_parts: {
diff --git a/specification/ml/delete_data_frame_analytics/MlDeleteDataFrameAnalyticsRequest.ts b/specification/ml/delete_data_frame_analytics/MlDeleteDataFrameAnalyticsRequest.ts
index b43ed22cc7..c32679f38c 100644
--- a/specification/ml/delete_data_frame_analytics/MlDeleteDataFrameAnalyticsRequest.ts
+++ b/specification/ml/delete_data_frame_analytics/MlDeleteDataFrameAnalyticsRequest.ts
@@ -28,6 +28,7 @@ import { Duration } from '@_types/Time'
  * @availability serverless stability=stable visibility=public
  * @cluster_privileges manage_ml
  * @doc_id ml-delete-dfanalytics
+ * @doc_tag ml data frame
  */
 export interface Request extends RequestBase {
   path_parts: {
diff --git a/specification/ml/delete_datafeed/MlDeleteDatafeedRequest.ts b/specification/ml/delete_datafeed/MlDeleteDatafeedRequest.ts
index 9f84f4280b..17a5e3cd8d 100644
--- a/specification/ml/delete_datafeed/MlDeleteDatafeedRequest.ts
+++ b/specification/ml/delete_datafeed/MlDeleteDatafeedRequest.ts
@@ -27,6 +27,7 @@ import { Id } from '@_types/common'
  * @availability serverless stability=stable visibility=public
  * @cluster_privileges manage_ml
  * @doc_id ml-delete-datafeed
+ * @doc_tag ml anomaly
  */
 export interface Request extends RequestBase {
   path_parts: {
diff --git a/specification/ml/delete_expired_data/MlDeleteExpiredDataRequest.ts b/specification/ml/delete_expired_data/MlDeleteExpiredDataRequest.ts
index 912b25ed8c..d7f36fd3fc 100644
--- a/specification/ml/delete_expired_data/MlDeleteExpiredDataRequest.ts
+++ b/specification/ml/delete_expired_data/MlDeleteExpiredDataRequest.ts
@@ -36,6 +36,7 @@ import { Duration } from '@_types/Time'
  * @availability stack since=5.4.0 stability=stable
  * @availability serverless stability=stable visibility=private
  * @cluster_privileges manage_ml
+ * @doc_tag ml anomaly
  */
 export interface Request extends RequestBase {
   path_parts: {
diff --git a/specification/ml/delete_filter/MlDeleteFilterRequest.ts b/specification/ml/delete_filter/MlDeleteFilterRequest.ts
index 8edc3f08b5..b49d2e8364 100644
--- a/specification/ml/delete_filter/MlDeleteFilterRequest.ts
+++ b/specification/ml/delete_filter/MlDeleteFilterRequest.ts
@@ -28,6 +28,7 @@ import { Id } from '@_types/common'
  * @availability stack since=5.4.0 stability=stable
  * @availability serverless stability=stable visibility=public
  * @cluster_privileges manage_ml
+ * @doc_tag ml anomaly
  */
 export interface Request extends RequestBase {
   path_parts: {
diff --git a/specification/ml/delete_forecast/MlDeleteForecastRequest.ts b/specification/ml/delete_forecast/MlDeleteForecastRequest.ts
index 724142789d..6e7b1f0f6d 100644
--- a/specification/ml/delete_forecast/MlDeleteForecastRequest.ts
+++ b/specification/ml/delete_forecast/MlDeleteForecastRequest.ts
@@ -31,6 +31,7 @@ import { Duration } from '@_types/Time'
  * @availability stack since=6.5.0 stability=stable
  * @availability serverless stability=stable visibility=private
  * @cluster_privileges manage_ml
+ * @doc_tag ml anomaly
  */
 export interface Request extends RequestBase {
   path_parts: {
diff --git a/specification/ml/delete_job/MlDeleteJobRequest.ts b/specification/ml/delete_job/MlDeleteJobRequest.ts
index 6560a531ef..41fd895de6 100644
--- a/specification/ml/delete_job/MlDeleteJobRequest.ts
+++ b/specification/ml/delete_job/MlDeleteJobRequest.ts
@@ -32,6 +32,7 @@ import { Id } from '@_types/common'
  * @availability stack since=5.4.0 stability=stable
  * @availability serverless stability=stable visibility=public
  * @cluster_privileges manage_ml
+ * @doc_tag ml anomaly
  */
 export interface Request extends RequestBase {
   path_parts: {
diff --git a/specification/ml/delete_model_snapshot/MlDeleteModelSnapshotRequest.ts b/specification/ml/delete_model_snapshot/MlDeleteModelSnapshotRequest.ts
index 0a26eaae1f..011753aa16 100644
--- a/specification/ml/delete_model_snapshot/MlDeleteModelSnapshotRequest.ts
+++ b/specification/ml/delete_model_snapshot/MlDeleteModelSnapshotRequest.ts
@@ -29,6 +29,7 @@ import { Id } from '@_types/common'
  * @availability stack since=5.4.0 stability=stable
  * @availability serverless stability=stable visibility=private
  * @cluster_privileges manage_ml
+ * @doc_tag ml anomaly
  */
 export interface Request extends RequestBase {
   path_parts: {
diff --git a/specification/ml/delete_trained_model/MlDeleteTrainedModelRequest.ts b/specification/ml/delete_trained_model/MlDeleteTrainedModelRequest.ts
index 36d2112542..4fe1de2ce7 100644
--- a/specification/ml/delete_trained_model/MlDeleteTrainedModelRequest.ts
+++ b/specification/ml/delete_trained_model/MlDeleteTrainedModelRequest.ts
@@ -27,6 +27,7 @@ import { Id } from '@_types/common'
  * @availability stack since=7.10.0 stability=stable
  * @availability serverless stability=stable visibility=public
  * @cluster_privileges manage_ml
+ * @doc_tag ml trained model
  */
 export interface Request extends RequestBase {
   path_parts: {
diff --git a/specification/ml/delete_trained_model_alias/MlDeleteTrainedModelAliasRequest.ts b/specification/ml/delete_trained_model_alias/MlDeleteTrainedModelAliasRequest.ts
index 767f6b9b03..acfa7ce507 100644
--- a/specification/ml/delete_trained_model_alias/MlDeleteTrainedModelAliasRequest.ts
+++ b/specification/ml/delete_trained_model_alias/MlDeleteTrainedModelAliasRequest.ts
@@ -29,6 +29,7 @@ import { Id, Name } from '@_types/common'
  * @availability stack since=7.13.0 stability=stable
  * @availability serverless stability=stable visibility=public
  * @cluster_privileges manage_ml
+ * @doc_tag ml trained model
  */
 export interface Request extends RequestBase {
   path_parts: {
diff --git a/specification/ml/estimate_model_memory/MlEstimateModelMemoryRequest.ts b/specification/ml/estimate_model_memory/MlEstimateModelMemoryRequest.ts
index b661a76b13..a91cfe64c2 100644
--- a/specification/ml/estimate_model_memory/MlEstimateModelMemoryRequest.ts
+++ b/specification/ml/estimate_model_memory/MlEstimateModelMemoryRequest.ts
@@ -32,6 +32,7 @@ import { long } from '@_types/Numeric'
  * @availability stack since=7.7.0 stability=stable
  * @availability serverless stability=stable visibility=public
  * @cluster_privileges manage_ml
+ * @doc_tag ml anomaly
  */
 export interface Request extends RequestBase {
   body: {
diff --git a/specification/ml/evaluate_data_frame/MlEvaluateDataFrameRequest.ts b/specification/ml/evaluate_data_frame/MlEvaluateDataFrameRequest.ts
index fdf966da16..734c5d2547 100644
--- a/specification/ml/evaluate_data_frame/MlEvaluateDataFrameRequest.ts
+++ b/specification/ml/evaluate_data_frame/MlEvaluateDataFrameRequest.ts
@@ -32,6 +32,7 @@ import { QueryContainer } from '@_types/query_dsl/abstractions'
  * @availability stack since=7.3.0 stability=stable
  * @availability serverless stability=stable visibility=public
  * @cluster_privileges monitor_ml
+ * @doc_tag ml data frame
  */
 export interface Request extends RequestBase {
   body: {
diff --git a/specification/ml/explain_data_frame_analytics/MlExplainDataFrameAnalyticsRequest.ts b/specification/ml/explain_data_frame_analytics/MlExplainDataFrameAnalyticsRequest.ts
index 26570afdde..aa29c02258 100644
--- a/specification/ml/explain_data_frame_analytics/MlExplainDataFrameAnalyticsRequest.ts
+++ b/specification/ml/explain_data_frame_analytics/MlExplainDataFrameAnalyticsRequest.ts
@@ -39,6 +39,7 @@ import { integer } from '@_types/Numeric'
  * @availability stack since=7.3.0 stability=stable
  * @availability serverless stability=stable visibility=private
  * @cluster_privileges monitor_ml
+ * @doc_tag ml data frame
  */
 export interface Request extends RequestBase {
   path_parts: {
diff --git a/specification/ml/flush_job/MlFlushJobRequest.ts b/specification/ml/flush_job/MlFlushJobRequest.ts
index f4dc0f88fb..e67479e792 100644
--- a/specification/ml/flush_job/MlFlushJobRequest.ts
+++ b/specification/ml/flush_job/MlFlushJobRequest.ts
@@ -35,6 +35,7 @@ import { DateTime } from '@_types/Time'
  * @availability stack since=5.4.0 stability=stable
  * @availability serverless stability=stable visibility=public
  * @cluster_privileges manage_ml
+ * @doc_tag ml anomaly
  */
 export interface Request extends RequestBase {
   path_parts: {
diff --git a/specification/ml/forecast/MlForecastJobRequest.ts b/specification/ml/forecast/MlForecastJobRequest.ts
index ee702ffa1e..28e98634f4 100644
--- a/specification/ml/forecast/MlForecastJobRequest.ts
+++ b/specification/ml/forecast/MlForecastJobRequest.ts
@@ -33,6 +33,7 @@ import { Duration } from '@_types/Time'
  * @availability stack since=6.1.0 stability=stable
  * @availability serverless stability=stable visibility=private
  * @cluster_privileges manage_ml
+ * @doc_tag ml anomaly
  */
 export interface Request extends RequestBase {
   path_parts: {
diff --git a/specification/ml/get_buckets/MlGetBucketsRequest.ts b/specification/ml/get_buckets/MlGetBucketsRequest.ts
index ab7cd973e1..0d03d7a2d6 100644
--- a/specification/ml/get_buckets/MlGetBucketsRequest.ts
+++ b/specification/ml/get_buckets/MlGetBucketsRequest.ts
@@ -30,6 +30,7 @@ import { DateTime } from '@_types/Time'
  * @availability stack since=5.4.0 stability=stable
  * @availability serverless stability=stable visibility=private
  * @cluster_privileges monitor_ml
+ * @doc_tag ml anomaly
  */
 export interface Request extends RequestBase {
   path_parts: {
diff --git a/specification/ml/get_calendar_events/MlGetCalendarEventsRequest.ts b/specification/ml/get_calendar_events/MlGetCalendarEventsRequest.ts
index 6d3582f0da..6e36a53bb0 100644
--- a/specification/ml/get_calendar_events/MlGetCalendarEventsRequest.ts
+++ b/specification/ml/get_calendar_events/MlGetCalendarEventsRequest.ts
@@ -28,6 +28,7 @@ import { DateTime } from '@_types/Time'
  * @availability stack since=6.2.0 stability=stable
  * @availability serverless stability=stable visibility=public
  * @cluster_privileges monitor_ml
+ * @doc_tag ml anomaly
  */
 export interface Request extends RequestBase {
   path_parts: {
diff --git a/specification/ml/get_calendars/MlGetCalendarsRequest.ts b/specification/ml/get_calendars/MlGetCalendarsRequest.ts
index e50affc81f..6022dea3ca 100644
--- a/specification/ml/get_calendars/MlGetCalendarsRequest.ts
+++ b/specification/ml/get_calendars/MlGetCalendarsRequest.ts
@@ -28,6 +28,7 @@ import { integer } from '@_types/Numeric'
  * @availability stack since=6.2.0 stability=stable
  * @availability serverless stability=stable visibility=public
  * @cluster_privileges monitor_ml
+ * @doc_tag ml anomaly
  */
 export interface Request extends RequestBase {
   path_parts: {
diff --git a/specification/ml/get_categories/MlGetCategoriesRequest.ts b/specification/ml/get_categories/MlGetCategoriesRequest.ts
index a721d0879e..a480084629 100644
--- a/specification/ml/get_categories/MlGetCategoriesRequest.ts
+++ b/specification/ml/get_categories/MlGetCategoriesRequest.ts
@@ -28,6 +28,7 @@ import { integer } from '@_types/Numeric'
  * @availability stack since=5.4.0 stability=stable
  * @availability serverless stability=stable visibility=private
  * @cluster_privileges monitor_ml
+ * @doc_tag ml anomaly
  */
 export interface Request extends RequestBase {
   path_parts: {
diff --git a/specification/ml/get_data_frame_analytics/MlGetDataFrameAnalyticsRequest.ts b/specification/ml/get_data_frame_analytics/MlGetDataFrameAnalyticsRequest.ts
index 8329aefe9c..a0248dd472 100644
--- a/specification/ml/get_data_frame_analytics/MlGetDataFrameAnalyticsRequest.ts
+++ b/specification/ml/get_data_frame_analytics/MlGetDataFrameAnalyticsRequest.ts
@@ -30,6 +30,7 @@ import { integer } from '@_types/Numeric'
  * @availability stack since=7.3.0 stability=stable
  * @availability serverless stability=stable visibility=public
  * @cluster_privileges monitor_ml
+ * @doc_tag ml data frame
  */
 export interface Request extends RequestBase {
   path_parts: {
diff --git a/specification/ml/get_data_frame_analytics_stats/MlGetDataFrameAnalyticsStatsRequest.ts b/specification/ml/get_data_frame_analytics_stats/MlGetDataFrameAnalyticsStatsRequest.ts
index 1ed18fd7a4..a80585763c 100644
--- a/specification/ml/get_data_frame_analytics_stats/MlGetDataFrameAnalyticsStatsRequest.ts
+++ b/specification/ml/get_data_frame_analytics_stats/MlGetDataFrameAnalyticsStatsRequest.ts
@@ -22,11 +22,12 @@ import { Id } from '@_types/common'
 import { integer } from '@_types/Numeric'
 
 /**
- * Get data frame analytics jobs usage info.
+ * Get data frame analytics job stats.
  * @rest_spec_name ml.get_data_frame_analytics_stats
  * @availability stack since=7.3.0 stability=stable
  * @availability serverless stability=stable visibility=public
  * @cluster_privileges monitor_ml
+ * @doc_tag ml data frame
  */
 export interface Request extends RequestBase {
   path_parts: {
diff --git a/specification/ml/get_datafeed_stats/MlGetDatafeedStatsRequest.ts b/specification/ml/get_datafeed_stats/MlGetDatafeedStatsRequest.ts
index 0e41438549..24e005e5d5 100644
--- a/specification/ml/get_datafeed_stats/MlGetDatafeedStatsRequest.ts
+++ b/specification/ml/get_datafeed_stats/MlGetDatafeedStatsRequest.ts
@@ -21,7 +21,7 @@ import { RequestBase } from '@_types/Base'
 import { Ids } from '@_types/common'
 
 /**
- * Get datafeeds usage info.
+ * Get datafeeds stats.
  * You can get statistics for multiple datafeeds in a single API request by
  * using a comma-separated list of datafeeds or a wildcard expression. You can
  * get statistics for all datafeeds by using `_all`, by specifying `*` as the
@@ -32,6 +32,7 @@ import { Ids } from '@_types/common'
  * @availability stack since=5.5.0 stability=stable
  * @availability serverless stability=stable visibility=public
  * @cluster_privileges monitor_ml
+ * @doc_tag ml anomaly
  */
 export interface Request extends RequestBase {
   path_parts: {
diff --git a/specification/ml/get_datafeeds/MlGetDatafeedsRequest.ts b/specification/ml/get_datafeeds/MlGetDatafeedsRequest.ts
index f4204ae14e..de4d909dba 100644
--- a/specification/ml/get_datafeeds/MlGetDatafeedsRequest.ts
+++ b/specification/ml/get_datafeeds/MlGetDatafeedsRequest.ts
@@ -31,6 +31,7 @@ import { Ids } from '@_types/common'
  * @availability stack since=5.5.0 stability=stable
  * @availability serverless stability=stable visibility=public
  * @cluster_privileges monitor_ml
+ * @doc_tag ml anomaly
  */
 export interface Request extends RequestBase {
   path_parts: {
diff --git a/specification/ml/get_filters/MlGetFiltersRequest.ts b/specification/ml/get_filters/MlGetFiltersRequest.ts
index 65c78dc4f7..45a736b562 100644
--- a/specification/ml/get_filters/MlGetFiltersRequest.ts
+++ b/specification/ml/get_filters/MlGetFiltersRequest.ts
@@ -28,6 +28,7 @@ import { integer } from '@_types/Numeric'
  * @availability stack since=5.5.0 stability=stable
  * @availability serverless stability=stable visibility=public
  * @cluster_privileges manage_ml
+ * @doc_tag ml anomaly
  */
 export interface Request extends RequestBase {
   path_parts: {
diff --git a/specification/ml/get_influencers/MlGetInfluencersRequest.ts b/specification/ml/get_influencers/MlGetInfluencersRequest.ts
index c2bd06f2fb..50ee4cbf7e 100644
--- a/specification/ml/get_influencers/MlGetInfluencersRequest.ts
+++ b/specification/ml/get_influencers/MlGetInfluencersRequest.ts
@@ -32,6 +32,7 @@ import { DateTime } from '@_types/Time'
  * @availability stack since=5.4.0 stability=stable
  * @availability serverless stability=stable visibility=private
  * @cluster_privileges monitor_ml
+ * @doc_tag ml anomaly
  */
 export interface Request extends RequestBase {
   path_parts: {
diff --git a/specification/ml/get_job_stats/MlGetJobStatsRequest.ts b/specification/ml/get_job_stats/MlGetJobStatsRequest.ts
index 52d1c71628..64b87d1295 100644
--- a/specification/ml/get_job_stats/MlGetJobStatsRequest.ts
+++ b/specification/ml/get_job_stats/MlGetJobStatsRequest.ts
@@ -21,11 +21,12 @@ import { RequestBase } from '@_types/Base'
 import { Id } from '@_types/common'
 
 /**
- * Get anomaly detection jobs usage info.
+ * Get anomaly detection job stats.
  * @rest_spec_name ml.get_job_stats
  * @availability stack since=5.5.0 stability=stable
  * @availability serverless stability=stable visibility=public
  * @cluster_privileges monitor_ml
+ * @doc_tag ml anomaly
  */
 export interface Request extends RequestBase {
   path_parts: {
diff --git a/specification/ml/get_jobs/MlGetJobsRequest.ts b/specification/ml/get_jobs/MlGetJobsRequest.ts
index 98761ac0ec..49c7e34d5c 100644
--- a/specification/ml/get_jobs/MlGetJobsRequest.ts
+++ b/specification/ml/get_jobs/MlGetJobsRequest.ts
@@ -30,6 +30,7 @@ import { Ids } from '@_types/common'
  * @availability stack since=5.5.0 stability=stable
  * @availability serverless stability=stable visibility=public
  * @cluster_privileges monitor_ml
+ * @doc_tag ml anomaly
  */
 export interface Request extends RequestBase {
   path_parts: {
diff --git a/specification/ml/get_model_snapshot_upgrade_stats/MlGetModelSnapshotUpgradeStatsRequest.ts b/specification/ml/get_model_snapshot_upgrade_stats/MlGetModelSnapshotUpgradeStatsRequest.ts
index b535ae4254..91c9ebc009 100644
--- a/specification/ml/get_model_snapshot_upgrade_stats/MlGetModelSnapshotUpgradeStatsRequest.ts
+++ b/specification/ml/get_model_snapshot_upgrade_stats/MlGetModelSnapshotUpgradeStatsRequest.ts
@@ -26,6 +26,7 @@ import { Id } from '@_types/common'
  * @availability stack since=7.16.0 stability=stable
  * @availability serverless stability=stable visibility=private
  * @cluster_privileges monitor_ml
+ * @doc_tag ml anomaly
  */
 export interface Request extends RequestBase {
   path_parts: {
diff --git a/specification/ml/get_model_snapshots/MlGetModelSnapshotsRequest.ts b/specification/ml/get_model_snapshots/MlGetModelSnapshotsRequest.ts
index a6a2a8db1b..8422e1fd5f 100644
--- a/specification/ml/get_model_snapshots/MlGetModelSnapshotsRequest.ts
+++ b/specification/ml/get_model_snapshots/MlGetModelSnapshotsRequest.ts
@@ -29,6 +29,7 @@ import { DateTime } from '@_types/Time'
  * @availability stack since=5.4.0 stability=stable
  * @availability serverless stability=stable visibility=private
  * @cluster_privileges monitor_ml
+ * @doc_tag ml anomaly
  */
 export interface Request extends RequestBase {
   path_parts: {
diff --git a/specification/ml/get_overall_buckets/MlGetOverallBucketsRequest.ts b/specification/ml/get_overall_buckets/MlGetOverallBucketsRequest.ts
index e5a21287fc..ac13f8fde4 100644
--- a/specification/ml/get_overall_buckets/MlGetOverallBucketsRequest.ts
+++ b/specification/ml/get_overall_buckets/MlGetOverallBucketsRequest.ts
@@ -46,6 +46,7 @@ import { DateTime, Duration } from '@_types/Time'
  * @availability stack since=6.1.0 stability=stable
  * @availability serverless stability=stable visibility=public
  * @cluster_privileges monitor_ml
+ * @doc_tag ml anomaly
  */
 export interface Request extends RequestBase {
   path_parts: {
diff --git a/specification/ml/get_records/MlGetAnomalyRecordsRequest.ts b/specification/ml/get_records/MlGetAnomalyRecordsRequest.ts
index 277a562a8d..0b6c6352cc 100644
--- a/specification/ml/get_records/MlGetAnomalyRecordsRequest.ts
+++ b/specification/ml/get_records/MlGetAnomalyRecordsRequest.ts
@@ -39,6 +39,7 @@ import { DateTime } from '@_types/Time'
  * @availability stack since=5.4.0 stability=stable
  * @availability serverless stability=stable visibility=private
  * @cluster_privileges monitor_ml
+ * @doc_tag ml anomaly
  */
 export interface Request extends RequestBase {
   path_parts: {
diff --git a/specification/ml/get_trained_models/MlGetTrainedModelRequest.ts b/specification/ml/get_trained_models/MlGetTrainedModelRequest.ts
index 232858925e..d4bce525e7 100644
--- a/specification/ml/get_trained_models/MlGetTrainedModelRequest.ts
+++ b/specification/ml/get_trained_models/MlGetTrainedModelRequest.ts
@@ -28,6 +28,7 @@ import { integer } from '@_types/Numeric'
  * @availability stack since=7.10.0 stability=stable
  * @availability serverless stability=stable visibility=public
  * @cluster_privileges monitor_ml
+ * @doc_tag ml trained model
  */
 export interface Request extends RequestBase {
   path_parts: {
@@ -76,6 +77,13 @@ export interface Request extends RequestBase {
      * body.
      */
     include?: Include
+
+    /**
+     * parameter is deprecated! Use [include=definition] instead
+     * @deprecated 7.10.0
+     */
+    include_model_definition?: boolean
+
     /**
      * Specifies the maximum number of models to obtain.
      * @server_default 100
diff --git a/specification/ml/get_trained_models_stats/MlGetTrainedModelStatsRequest.ts b/specification/ml/get_trained_models_stats/MlGetTrainedModelStatsRequest.ts
index ad11fedff7..e4bdcf5153 100644
--- a/specification/ml/get_trained_models_stats/MlGetTrainedModelStatsRequest.ts
+++ b/specification/ml/get_trained_models_stats/MlGetTrainedModelStatsRequest.ts
@@ -29,6 +29,7 @@ import { integer } from '@_types/Numeric'
  * @availability stack since=7.10.0 stability=stable
  * @availability serverless stability=stable visibility=public
  * @cluster_privileges monitor_ml
+ * @doc_tag ml trained model
  */
 export interface Request extends RequestBase {
   path_parts: {
diff --git a/specification/ml/infer_trained_model/MlInferTrainedModelRequest.ts b/specification/ml/infer_trained_model/MlInferTrainedModelRequest.ts
index 220eece706..27333354d0 100644
--- a/specification/ml/infer_trained_model/MlInferTrainedModelRequest.ts
+++ b/specification/ml/infer_trained_model/MlInferTrainedModelRequest.ts
@@ -29,6 +29,7 @@ import { Duration } from '@_types/Time'
  * @rest_spec_name ml.infer_trained_model
  * @availability stack since=8.3.0 stability=stable
  * @availability serverless stability=stable visibility=public
+ * @doc_tag ml trained model
  */
 export interface Request extends RequestBase {
   path_parts: {
diff --git a/specification/ml/info/types.ts b/specification/ml/info/types.ts
index 0fd3132f31..e1f7567656 100644
--- a/specification/ml/info/types.ts
+++ b/specification/ml/info/types.ts
@@ -18,7 +18,7 @@
  */
 
 import { CategorizationAnalyzer } from '@ml/_types/Analysis'
-import { VersionString } from '@_types/common'
+import { ByteSize, VersionString } from '@_types/common'
 import { integer } from '@_types/Numeric'
 
 export class Defaults {
@@ -32,9 +32,11 @@ export class NativeCode {
 }
 
 export class Limits {
-  max_model_memory_limit?: string
-  effective_max_model_memory_limit: string
-  total_ml_memory: string
+  max_single_ml_node_processors?: integer
+  total_ml_processors?: integer
+  max_model_memory_limit?: ByteSize
+  effective_max_model_memory_limit?: ByteSize
+  total_ml_memory: ByteSize
 }
 
 export class Datafeeds {
diff --git a/specification/ml/open_job/MlOpenJobRequest.ts b/specification/ml/open_job/MlOpenJobRequest.ts
index b2cfa93aaf..0865698096 100644
--- a/specification/ml/open_job/MlOpenJobRequest.ts
+++ b/specification/ml/open_job/MlOpenJobRequest.ts
@@ -33,6 +33,7 @@ import { Duration } from '@_types/Time'
  * @availability stack since=5.4.0 stability=stable
  * @availability serverless stability=stable visibility=public
  * @cluster_privileges manage_ml
+ * @doc_tag ml anomaly
  */
 export interface Request extends RequestBase {
   path_parts: {
diff --git a/specification/ml/post_calendar_events/MlPostCalendarEventsRequest.ts b/specification/ml/post_calendar_events/MlPostCalendarEventsRequest.ts
index 7fdcb4d63a..ebe6c42857 100644
--- a/specification/ml/post_calendar_events/MlPostCalendarEventsRequest.ts
+++ b/specification/ml/post_calendar_events/MlPostCalendarEventsRequest.ts
@@ -27,6 +27,7 @@ import { CalendarEvent } from '../_types/CalendarEvent'
  * @availability stack since=6.2.0 stability=stable
  * @availability serverless stability=stable visibility=public
  * @cluster_privileges manage_ml
+ * @doc_tag ml anomaly
  */
 export interface Request extends RequestBase {
   path_parts: {
diff --git a/specification/ml/post_data/MlPostJobDataRequest.ts b/specification/ml/post_data/MlPostJobDataRequest.ts
index fe6bdc1c8d..3d39177c3d 100644
--- a/specification/ml/post_data/MlPostJobDataRequest.ts
+++ b/specification/ml/post_data/MlPostJobDataRequest.ts
@@ -30,6 +30,7 @@ import { DateTime } from '@_types/Time'
  * @availability stack since=5.4.0 stability=stable
  * @deprecated 7.11.0 Posting data directly to anomaly detection jobs is deprecated, in a future major version a datafeed will be required.
  * @cluster_privileges manage_ml
+ * @doc_tag ml anomaly
  */
 export interface Request<TData> extends RequestBase {
   path_parts: {
diff --git a/specification/ml/post_data/MlPostJobDataResponse.ts b/specification/ml/post_data/MlPostJobDataResponse.ts
index 55a530ff43..d6fb5a9de7 100644
--- a/specification/ml/post_data/MlPostJobDataResponse.ts
+++ b/specification/ml/post_data/MlPostJobDataResponse.ts
@@ -18,24 +18,28 @@
  */
 
 import { Id } from '@_types/common'
-import { integer, long } from '@_types/Numeric'
+import { long } from '@_types/Numeric'
+import { EpochTime, UnitMillis } from '@_types/Time'
 
 export class Response {
   body: {
-    bucket_count: long
-    earliest_record_timestamp: long
-    empty_bucket_count: long
+    job_id: Id
+    processed_record_count: long
+    processed_field_count: long
     input_bytes: long
     input_field_count: long
-    input_record_count: long
     invalid_date_count: long
-    job_id: Id
-    last_data_time: integer
-    latest_record_timestamp: long
     missing_field_count: long
     out_of_order_timestamp_count: long
-    processed_field_count: long
-    processed_record_count: long
+    empty_bucket_count: long
     sparse_bucket_count: long
+    bucket_count: long
+    earliest_record_timestamp?: EpochTime<UnitMillis>
+    latest_record_timestamp?: EpochTime<UnitMillis>
+    last_data_time?: EpochTime<UnitMillis>
+    latest_empty_bucket_timestamp?: EpochTime<UnitMillis>
+    latest_sparse_bucket_timestamp?: EpochTime<UnitMillis>
+    input_record_count: long
+    log_time?: EpochTime<UnitMillis>
   }
 }
diff --git a/specification/ml/preview_data_frame_analytics/MlPreviewDataFrameAnalyticsRequest.ts b/specification/ml/preview_data_frame_analytics/MlPreviewDataFrameAnalyticsRequest.ts
index 8ba0c0ca15..883fc98883 100644
--- a/specification/ml/preview_data_frame_analytics/MlPreviewDataFrameAnalyticsRequest.ts
+++ b/specification/ml/preview_data_frame_analytics/MlPreviewDataFrameAnalyticsRequest.ts
@@ -28,6 +28,7 @@ import { DataframePreviewConfig } from './types'
  * @availability stack since=7.13.0 stability=stable
  * @availability serverless stability=stable visibility=public
  * @cluster_privileges monitor_ml
+ * @doc_tag ml data frame
  */
 export interface Request extends RequestBase {
   path_parts: {
diff --git a/specification/ml/preview_datafeed/MlPreviewDatafeedRequest.ts b/specification/ml/preview_datafeed/MlPreviewDatafeedRequest.ts
index de8696aed9..5097589db1 100644
--- a/specification/ml/preview_datafeed/MlPreviewDatafeedRequest.ts
+++ b/specification/ml/preview_datafeed/MlPreviewDatafeedRequest.ts
@@ -38,6 +38,7 @@ import { DateTime } from '@_types/Time'
  * @availability serverless stability=stable visibility=public
  * @index_privileges read
  * @cluster_privileges manage_ml
+ * @doc_tag ml anomaly
  */
 export interface Request extends RequestBase {
   path_parts: {
diff --git a/specification/ml/put_calendar/MlPutCalendarRequest.ts b/specification/ml/put_calendar/MlPutCalendarRequest.ts
index 41879b6bc1..3e1fceb491 100644
--- a/specification/ml/put_calendar/MlPutCalendarRequest.ts
+++ b/specification/ml/put_calendar/MlPutCalendarRequest.ts
@@ -26,6 +26,7 @@ import { Id } from '@_types/common'
  * @availability stack since=6.2.0 stability=stable
  * @availability serverless stability=stable visibility=public
  * @cluster_privileges manage_ml
+ * @doc_tag ml anomaly
  */
 export interface Request extends RequestBase {
   path_parts: {
diff --git a/specification/ml/put_calendar_job/MlPutCalendarJobRequest.ts b/specification/ml/put_calendar_job/MlPutCalendarJobRequest.ts
index 6b9a713c24..30b2a13306 100644
--- a/specification/ml/put_calendar_job/MlPutCalendarJobRequest.ts
+++ b/specification/ml/put_calendar_job/MlPutCalendarJobRequest.ts
@@ -26,6 +26,7 @@ import { Id, Ids } from '@_types/common'
  * @availability stack since=6.2.0 stability=stable
  * @availability serverless stability=stable visibility=public
  * @cluster_privileges manage_ml
+ * @doc_tag ml anomaly
  */
 export interface Request extends RequestBase {
   path_parts: {
diff --git a/specification/ml/put_data_frame_analytics/MlPutDataFrameAnalyticsRequest.ts b/specification/ml/put_data_frame_analytics/MlPutDataFrameAnalyticsRequest.ts
index dc9cf21434..cd36199e18 100644
--- a/specification/ml/put_data_frame_analytics/MlPutDataFrameAnalyticsRequest.ts
+++ b/specification/ml/put_data_frame_analytics/MlPutDataFrameAnalyticsRequest.ts
@@ -24,7 +24,7 @@ import {
   DataframeAnalyticsSource
 } from '@ml/_types/DataframeAnalytics'
 import { RequestBase } from '@_types/Base'
-import { HttpHeaders, Id, VersionString } from '@_types/common'
+import { HttpHeaders, Id, Metadata, VersionString } from '@_types/common'
 import { integer } from '@_types/Numeric'
 
 /**
@@ -37,6 +37,7 @@ import { integer } from '@_types/Numeric'
  * @cluster_privileges manage_ml
  * @index_privileges create_index, index, manage, read, view_index_metadata
  * @doc_id put-dfanalytics
+ * @doc_tag ml data frame
  */
 export interface Request extends RequestBase {
   path_parts: {
@@ -114,6 +115,8 @@ export interface Request extends RequestBase {
      * @server_default 1
      */
     max_num_threads?: integer
+
+    _meta?: Metadata
     /**
      * The approximate maximum amount of memory resources that are permitted for
      * analytical processing. If your `elasticsearch.yml` file contains an
diff --git a/specification/ml/put_data_frame_analytics/MlPutDataFrameAnalyticsResponse.ts b/specification/ml/put_data_frame_analytics/MlPutDataFrameAnalyticsResponse.ts
index 2a308e8eee..be7ec033d3 100644
--- a/specification/ml/put_data_frame_analytics/MlPutDataFrameAnalyticsResponse.ts
+++ b/specification/ml/put_data_frame_analytics/MlPutDataFrameAnalyticsResponse.ts
@@ -24,7 +24,7 @@ import {
   DataframeAnalyticsDestination,
   DataframeAnalyticsSource
 } from '@ml/_types/DataframeAnalytics'
-import { Id, VersionString } from '@_types/common'
+import { Id, Metadata, VersionString } from '@_types/common'
 import { integer } from '@_types/Numeric'
 import { EpochTime, UnitMillis } from '@_types/Time'
 
@@ -39,6 +39,7 @@ export class Response {
     dest: DataframeAnalyticsDestination
     id: Id
     max_num_threads: integer
+    _meta?: Metadata
     model_memory_limit: string
     source: DataframeAnalyticsSource
     version: VersionString
diff --git a/specification/ml/put_datafeed/MlPutDatafeedRequest.ts b/specification/ml/put_datafeed/MlPutDatafeedRequest.ts
index c3e656d966..f3c7644a89 100644
--- a/specification/ml/put_datafeed/MlPutDatafeedRequest.ts
+++ b/specification/ml/put_datafeed/MlPutDatafeedRequest.ts
@@ -50,6 +50,7 @@ import { Duration } from '@_types/Time'
  * @availability serverless stability=stable visibility=public
  * @index_privileges read
  * @cluster_privileges manage_ml
+ * @doc_tag ml anomaly
  */
 export interface Request extends RequestBase {
   path_parts: {
@@ -86,8 +87,10 @@ export interface Request extends RequestBase {
     ignore_unavailable?: boolean
   }
   body: {
-    /** If set, the datafeed performs aggregation searches.
+    /**
+     * If set, the datafeed performs aggregation searches.
      * Support for aggregations is limited and should be used only with low cardinality data.
+     * @aliases aggs
      */
     aggregations?: Dictionary<string, AggregationContainer>
     /**
@@ -114,8 +117,8 @@ export interface Request extends RequestBase {
      */
     frequency?: Duration
     /**
-     * An array of index names. Wildcards are supported. If any of the indices are in remote clusters, the machine
-     * learning nodes must have the `remote_cluster_client` role.
+     * An array of index names. Wildcards are supported. If any of the indices are in remote clusters, the master
+     * nodes and the machine learning nodes must have the `remote_cluster_client` role.
      * @aliases indexes
      * */
     indices?: Indices
diff --git a/specification/ml/put_filter/MlPutFilterRequest.ts b/specification/ml/put_filter/MlPutFilterRequest.ts
index 3bf02fd54c..6ad65ee4a7 100644
--- a/specification/ml/put_filter/MlPutFilterRequest.ts
+++ b/specification/ml/put_filter/MlPutFilterRequest.ts
@@ -28,6 +28,7 @@ import { Id } from '@_types/common'
  * @availability stack since=5.4.0 stability=stable
  * @availability serverless stability=stable visibility=public
  * @cluster_privileges manage_ml
+ * @doc_tag ml anomaly
  */
 export interface Request extends RequestBase {
   path_parts: {
diff --git a/specification/ml/put_job/MlPutJobRequest.ts b/specification/ml/put_job/MlPutJobRequest.ts
index 0391075377..c15eb15c9c 100644
--- a/specification/ml/put_job/MlPutJobRequest.ts
+++ b/specification/ml/put_job/MlPutJobRequest.ts
@@ -23,7 +23,7 @@ import { DataDescription } from '@ml/_types/Job'
 import { ModelPlotConfig } from '@ml/_types/ModelPlot'
 import { CustomSettings } from '@ml/_types/Settings'
 import { RequestBase } from '@_types/Base'
-import { Id, IndexName } from '@_types/common'
+import { ExpandWildcards, Id, IndexName } from '@_types/common'
 import { long } from '@_types/Numeric'
 import { Duration } from '@_types/Time'
 
@@ -35,6 +35,7 @@ import { Duration } from '@_types/Time'
  * @availability serverless stability=stable visibility=public
  * @index_privileges read
  * @cluster_privileges manage_ml
+ * @doc_tag ml anomaly
  */
 export interface Request extends RequestBase {
   path_parts: {
@@ -43,6 +44,37 @@ export interface Request extends RequestBase {
      */
     job_id: Id
   }
+  query_parameters: {
+    /**
+     * If `true`, wildcard indices expressions that resolve into no concrete indices are ignored. This includes the
+     * `_all` string or when no indices are specified.
+     * @server_default true
+     */
+    allow_no_indices?: boolean
+    /**
+     * Type of index that wildcard patterns can match. If the request can target data streams, this argument determines
+     * whether wildcard expressions match hidden data streams. Supports comma-separated values. Valid values are:
+     *
+     * * `all`: Match any data stream or index, including hidden ones.
+     * * `closed`: Match closed, non-hidden indices. Also matches any non-hidden data stream. Data streams cannot be closed.
+     * * `hidden`: Match hidden data streams and hidden indices. Must be combined with `open`, `closed`, or both.
+     * * `none`: Wildcard patterns are not accepted.
+     * * `open`: Match open, non-hidden indices. Also matches any non-hidden data stream.
+     * @server_default open
+     */
+    expand_wildcards?: ExpandWildcards
+    /**
+     * If `true`, concrete, expanded or aliased indices are ignored when frozen.
+     * @server_default true
+     * @deprecated 7.16.0
+     */
+    ignore_throttled?: boolean
+    /**
+     * If `true`, unavailable indices (missing or closed) are ignored.
+     * @server_default false
+     */
+    ignore_unavailable?: boolean
+  }
   body: {
     /**
      * Advanced configuration option. Specifies whether this job can open when there is insufficient machine learning node capacity for it to be immediately assigned to a node. By default, if a machine learning node with capacity to run the job cannot immediately be found, the open anomaly detection jobs API returns an error. However, this is also subject to the cluster-wide `xpack.ml.max_lazy_ml_nodes` setting. If this option is set to true, the open anomaly detection jobs API does not return an error and the job waits in the opening state until sufficient machine learning node capacity is available.
@@ -82,6 +114,10 @@ export interface Request extends RequestBase {
      *  A description of the job.
      */
     description?: string
+    /**
+     * The identifier for the anomaly detection job. This identifier can contain lowercase alphanumeric characters (a-z and 0-9), hyphens, and underscores. It must start and end with alphanumeric characters.
+     */
+    job_id?: Id
     /**
      * A list of job groups. A job can belong to no groups or many.
      */
diff --git a/specification/ml/put_trained_model/MlPutTrainedModelRequest.ts b/specification/ml/put_trained_model/MlPutTrainedModelRequest.ts
index 1488ac9bea..afe30a34bf 100644
--- a/specification/ml/put_trained_model/MlPutTrainedModelRequest.ts
+++ b/specification/ml/put_trained_model/MlPutTrainedModelRequest.ts
@@ -35,6 +35,7 @@ import { Definition, Input } from './types'
  * @availability stack since=7.10.0 stability=stable
  * @availability serverless stability=stable visibility=public
  * @cluster_privileges manage_ml
+ * @doc_tag ml trained model
  */
 export interface Request extends RequestBase {
   path_parts: {
diff --git a/specification/ml/put_trained_model_alias/MlPutTrainedModelAliasRequest.ts b/specification/ml/put_trained_model_alias/MlPutTrainedModelAliasRequest.ts
index bff6f1d490..86d5efeacf 100644
--- a/specification/ml/put_trained_model_alias/MlPutTrainedModelAliasRequest.ts
+++ b/specification/ml/put_trained_model_alias/MlPutTrainedModelAliasRequest.ts
@@ -42,6 +42,7 @@ import { Id, Name } from '@_types/common'
  * @availability stack since=7.13.0 stability=stable
  * @availability serverless stability=stable visibility=public
  * @cluster_privileges manage_ml
+ * @doc_tag ml trained model
  */
 export interface Request extends RequestBase {
   path_parts: {
diff --git a/specification/ml/put_trained_model_definition_part/MlPutTrainedModelDefinitionPartRequest.ts b/specification/ml/put_trained_model_definition_part/MlPutTrainedModelDefinitionPartRequest.ts
index 842ab4d282..34e6a555ef 100644
--- a/specification/ml/put_trained_model_definition_part/MlPutTrainedModelDefinitionPartRequest.ts
+++ b/specification/ml/put_trained_model_definition_part/MlPutTrainedModelDefinitionPartRequest.ts
@@ -27,6 +27,7 @@ import { integer, long } from '@_types/Numeric'
  * @availability stack since=8.0.0 stability=stable
  * @availability serverless stability=stable visibility=public
  * @cluster_privileges manage_ml
+ * @doc_tag ml trained model
  */
 export interface Request extends RequestBase {
   path_parts: {
diff --git a/specification/ml/put_trained_model_vocabulary/MlPutTrainedModelVocabularyRequest.ts b/specification/ml/put_trained_model_vocabulary/MlPutTrainedModelVocabularyRequest.ts
index 3c77f1149e..7c62aac592 100644
--- a/specification/ml/put_trained_model_vocabulary/MlPutTrainedModelVocabularyRequest.ts
+++ b/specification/ml/put_trained_model_vocabulary/MlPutTrainedModelVocabularyRequest.ts
@@ -29,6 +29,7 @@ import { double } from '@_types/Numeric'
  * @availability stack since=8.0.0 stability=stable
  * @availability serverless stability=stable visibility=public
  * @cluster_privileges manage_ml
+ * @doc_tag ml trained model
  */
 export interface Request extends RequestBase {
   path_parts: {
diff --git a/specification/ml/reset_job/MlResetJobRequest.ts b/specification/ml/reset_job/MlResetJobRequest.ts
index 3e5379aa4a..42ca10f880 100644
--- a/specification/ml/reset_job/MlResetJobRequest.ts
+++ b/specification/ml/reset_job/MlResetJobRequest.ts
@@ -30,6 +30,7 @@ import { Id } from '@_types/common'
  * @availability stack since=7.14.0 stability=stable
  * @availability serverless stability=stable visibility=public
  * @cluster_privileges manage_ml
+ * @doc_tag ml anomaly
  */
 export interface Request extends RequestBase {
   path_parts: {
diff --git a/specification/ml/revert_model_snapshot/MlRevertModelSnapshotRequest.ts b/specification/ml/revert_model_snapshot/MlRevertModelSnapshotRequest.ts
index 7295273451..3b23f88854 100644
--- a/specification/ml/revert_model_snapshot/MlRevertModelSnapshotRequest.ts
+++ b/specification/ml/revert_model_snapshot/MlRevertModelSnapshotRequest.ts
@@ -33,6 +33,7 @@ import { Id } from '@_types/common'
  * @availability stack since=5.4.0 stability=stable
  * @availability serverless stability=stable visibility=private
  * @cluster_privileges manage_ml
+ * @doc_tag ml anomaly
  */
 export interface Request extends RequestBase {
   path_parts: {
diff --git a/specification/ml/start_data_frame_analytics/MlStartDataFrameAnalyticsRequest.ts b/specification/ml/start_data_frame_analytics/MlStartDataFrameAnalyticsRequest.ts
index a8dbcac412..5a51f1ca40 100644
--- a/specification/ml/start_data_frame_analytics/MlStartDataFrameAnalyticsRequest.ts
+++ b/specification/ml/start_data_frame_analytics/MlStartDataFrameAnalyticsRequest.ts
@@ -39,6 +39,7 @@ import { Duration } from '@_types/Time'
  * @availability serverless stability=stable visibility=public
  * @cluster_privileges manage_ml
  * @index_privileges create_index, index, manage, read, view_index_metadata
+ * @doc_tag ml data frame
  */
 export interface Request extends RequestBase {
   path_parts: {
diff --git a/specification/ml/start_datafeed/MlStartDatafeedRequest.ts b/specification/ml/start_datafeed/MlStartDatafeedRequest.ts
index 3f96f593a2..d9505d7f83 100644
--- a/specification/ml/start_datafeed/MlStartDatafeedRequest.ts
+++ b/specification/ml/start_datafeed/MlStartDatafeedRequest.ts
@@ -39,6 +39,7 @@ import { DateTime, Duration } from '@_types/Time'
  * @availability stack since=5.5.0 stability=stable
  * @availability serverless stability=stable visibility=public
  * @cluster_privileges manage_ml
+ * @doc_tag ml anomaly
  */
 export interface Request extends RequestBase {
   path_parts: {
diff --git a/specification/ml/start_trained_model_deployment/MlStartTrainedModelDeploymentRequest.ts b/specification/ml/start_trained_model_deployment/MlStartTrainedModelDeploymentRequest.ts
index 0ea1d7f3ce..16d358a266 100644
--- a/specification/ml/start_trained_model_deployment/MlStartTrainedModelDeploymentRequest.ts
+++ b/specification/ml/start_trained_model_deployment/MlStartTrainedModelDeploymentRequest.ts
@@ -33,6 +33,7 @@ import {
  * @availability stack since=8.0.0 stability=stable
  * @availability serverless stability=stable visibility=public
  * @cluster_privileges manage_ml
+ * @doc_tag ml trained model
  */
 export interface Request extends RequestBase {
   path_parts: {
diff --git a/specification/ml/stop_data_frame_analytics/MlStopDataFrameAnalyticsRequest.ts b/specification/ml/stop_data_frame_analytics/MlStopDataFrameAnalyticsRequest.ts
index 82655335e8..27dcebeee7 100644
--- a/specification/ml/stop_data_frame_analytics/MlStopDataFrameAnalyticsRequest.ts
+++ b/specification/ml/stop_data_frame_analytics/MlStopDataFrameAnalyticsRequest.ts
@@ -29,6 +29,7 @@ import { Duration } from '@_types/Time'
  * @availability stack since=7.3.0 stability=stable
  * @availability serverless stability=stable visibility=public
  * @cluster_privileges manage_ml
+ * @doc_tag ml data frame
  */
 export interface Request extends RequestBase {
   path_parts: {
diff --git a/specification/ml/stop_datafeed/MlStopDatafeedRequest.ts b/specification/ml/stop_datafeed/MlStopDatafeedRequest.ts
index d73da165f4..8c2f647cac 100644
--- a/specification/ml/stop_datafeed/MlStopDatafeedRequest.ts
+++ b/specification/ml/stop_datafeed/MlStopDatafeedRequest.ts
@@ -29,6 +29,7 @@ import { Duration } from '@_types/Time'
  * @availability stack since=5.4.0 stability=stable
  * @availability serverless stability=stable visibility=public
  * @cluster_privileges manage_ml
+ * @doc_tag ml anomaly
  */
 export interface Request extends RequestBase {
   path_parts: {
diff --git a/specification/ml/stop_trained_model_deployment/MlStopTrainedModelDeploymentRequest.ts b/specification/ml/stop_trained_model_deployment/MlStopTrainedModelDeploymentRequest.ts
index 7e4abf90a2..05da43ec33 100644
--- a/specification/ml/stop_trained_model_deployment/MlStopTrainedModelDeploymentRequest.ts
+++ b/specification/ml/stop_trained_model_deployment/MlStopTrainedModelDeploymentRequest.ts
@@ -26,6 +26,7 @@ import { Id } from '@_types/common'
  * @availability stack since=8.0.0 stability=stable
  * @availability serverless stability=stable visibility=public
  * @cluster_privileges manage_ml
+ * @doc_tag ml trained model
  */
 export interface Request extends RequestBase {
   path_parts: {
diff --git a/specification/ml/update_data_frame_analytics/MlUpdateDataFrameAnalyticsRequest.ts b/specification/ml/update_data_frame_analytics/MlUpdateDataFrameAnalyticsRequest.ts
index cd0a53c19d..6e930b9775 100644
--- a/specification/ml/update_data_frame_analytics/MlUpdateDataFrameAnalyticsRequest.ts
+++ b/specification/ml/update_data_frame_analytics/MlUpdateDataFrameAnalyticsRequest.ts
@@ -28,6 +28,7 @@ import { integer } from '@_types/Numeric'
  * @availability serverless stability=stable visibility=public
  * @cluster_privileges manage_ml
  * @index_privileges read, create_index, manage, index, view_index_metadata
+ * @doc_tag ml data frame
  */
 export interface Request extends RequestBase {
   path_parts: {
diff --git a/specification/ml/update_datafeed/MlUpdateDatafeedRequest.ts b/specification/ml/update_datafeed/MlUpdateDatafeedRequest.ts
index dcc15c90cb..113c6d2dac 100644
--- a/specification/ml/update_datafeed/MlUpdateDatafeedRequest.ts
+++ b/specification/ml/update_datafeed/MlUpdateDatafeedRequest.ts
@@ -38,6 +38,7 @@ import { Duration } from '@_types/Time'
  * @availability stack since=6.4.0 stability=stable
  * @availability serverless stability=stable visibility=public
  * @cluster_privileges manage_ml
+ * @doc_tag ml anomaly
  */
 export interface Request extends RequestBase {
   path_parts: {
diff --git a/specification/ml/update_filter/MlUpdateFilterRequest.ts b/specification/ml/update_filter/MlUpdateFilterRequest.ts
index af5d3951ac..fd78812c03 100644
--- a/specification/ml/update_filter/MlUpdateFilterRequest.ts
+++ b/specification/ml/update_filter/MlUpdateFilterRequest.ts
@@ -27,6 +27,7 @@ import { Id } from '@_types/common'
  * @availability stack since=6.4.0 stability=stable
  * @availability serverless stability=stable visibility=public
  * @cluster_privileges manage_ml
+ * @doc_tag ml anomaly
  */
 export interface Request extends RequestBase {
   path_parts: {
diff --git a/specification/ml/update_job/MlUpdateJobRequest.ts b/specification/ml/update_job/MlUpdateJobRequest.ts
index 1644550f19..da51d765a0 100644
--- a/specification/ml/update_job/MlUpdateJobRequest.ts
+++ b/specification/ml/update_job/MlUpdateJobRequest.ts
@@ -21,7 +21,7 @@ import {
   AnalysisMemoryLimit,
   PerPartitionCategorization
 } from '@ml/_types/Analysis'
-import { Detector } from '@ml/_types/Detector'
+import { DetectorUpdate } from '@ml/_types/Detector'
 import { ModelPlotConfig } from '@ml/_types/ModelPlot'
 import { Dictionary } from '@spec_utils/Dictionary'
 import { UserDefinedValue } from '@spec_utils/UserDefinedValue'
@@ -37,6 +37,7 @@ import { Duration } from '@_types/Time'
  * @availability stack since=5.5.0 stability=stable
  * @availability serverless stability=stable visibility=public
  * @cluster_privileges manage_ml
+ * @doc_tag ml anomaly
  */
 export interface Request extends RequestBase {
   path_parts: {
@@ -130,7 +131,7 @@ export interface Request extends RequestBase {
     /**
      * An array of detector update objects.
      */
-    detectors?: Detector[]
+    detectors?: DetectorUpdate[]
     /**
      * Settings related to how categorization interacts with partition fields.
      */
diff --git a/specification/ml/update_model_snapshot/MlUpdateModelSnapshotRequest.ts b/specification/ml/update_model_snapshot/MlUpdateModelSnapshotRequest.ts
index 75f8facf9a..4571358926 100644
--- a/specification/ml/update_model_snapshot/MlUpdateModelSnapshotRequest.ts
+++ b/specification/ml/update_model_snapshot/MlUpdateModelSnapshotRequest.ts
@@ -27,6 +27,7 @@ import { Id } from '@_types/common'
  * @availability stack since=5.4.0 stability=stable
  * @availability serverless stability=stable visibility=private
  * @cluster_privileges manage_ml
+ * @doc_tag ml anomaly
  */
 export interface Request extends RequestBase {
   path_parts: {
diff --git a/specification/ml/update_trained_model_deployment/MlUpdateTrainedModelDeploymentRequest.ts b/specification/ml/update_trained_model_deployment/MlUpdateTrainedModelDeploymentRequest.ts
index 5e2407f350..b61a856a4a 100644
--- a/specification/ml/update_trained_model_deployment/MlUpdateTrainedModelDeploymentRequest.ts
+++ b/specification/ml/update_trained_model_deployment/MlUpdateTrainedModelDeploymentRequest.ts
@@ -27,6 +27,7 @@ import { integer } from '@_types/Numeric'
  * @availability stack since=8.6.0 stability=stable
  * @availability serverless stability=beta visibility=public
  * @cluster_privileges manage_ml
+ * @doc_tag ml trained model
  */
 export interface Request extends RequestBase {
   path_parts: {
diff --git a/specification/ml/upgrade_job_snapshot/MlUpgradeJobSnapshotRequest.ts b/specification/ml/upgrade_job_snapshot/MlUpgradeJobSnapshotRequest.ts
index d3ad1666d9..559fbc2566 100644
--- a/specification/ml/upgrade_job_snapshot/MlUpgradeJobSnapshotRequest.ts
+++ b/specification/ml/upgrade_job_snapshot/MlUpgradeJobSnapshotRequest.ts
@@ -36,6 +36,7 @@ import { Duration } from '@_types/Time'
  * @availability stack since=5.4.0 stability=stable
  * @availability serverless stability=stable visibility=private
  * @cluster_privileges manage_ml
+ * @doc_tag ml anomaly
  */
 export interface Request extends RequestBase {
   path_parts: {
diff --git a/specification/nodes/clear_repositories_metering_archive/ClearRepositoriesMeteringArchiveRequest.ts b/specification/nodes/clear_repositories_metering_archive/ClearRepositoriesMeteringArchiveRequest.ts
index 2fd9a97560..cccf463f54 100644
--- a/specification/nodes/clear_repositories_metering_archive/ClearRepositoriesMeteringArchiveRequest.ts
+++ b/specification/nodes/clear_repositories_metering_archive/ClearRepositoriesMeteringArchiveRequest.ts
@@ -22,11 +22,13 @@ import { NodeIds } from '@_types/common'
 import { long } from '@_types/Numeric'
 
 /**
- * You can use this API to clear the archived repositories metering information in the cluster.
+ * Clear the archived repositories metering.
+ * Clear the archived repositories metering information in the cluster.
  * @rest_spec_name nodes.clear_repositories_metering_archive
  * @availability stack since=7.16.0 stability=experimental
  * @availability serverless stability=experimental visibility=private
  * @cluster_privileges monitor, manage
+ * @doc_tag cluster
  */
 export interface Request extends RequestBase {
   path_parts: {
diff --git a/specification/nodes/get_repositories_metering_info/GetRepositoriesMeteringInfoRequest.ts b/specification/nodes/get_repositories_metering_info/GetRepositoriesMeteringInfoRequest.ts
index 0590503ce1..ddc35edb75 100644
--- a/specification/nodes/get_repositories_metering_info/GetRepositoriesMeteringInfoRequest.ts
+++ b/specification/nodes/get_repositories_metering_info/GetRepositoriesMeteringInfoRequest.ts
@@ -21,14 +21,15 @@ import { RequestBase } from '@_types/Base'
 import { NodeIds } from '@_types/common'
 
 /**
- * You can use the cluster repositories metering API to retrieve repositories metering information in a cluster.
- * This API exposes monotonically non-decreasing counters and it’s expected that clients would durably store the
- * information needed to compute aggregations over a period of time. Additionally, the information exposed by this
- * API is volatile, meaning that it won’t be present after node restarts.
+ * Get cluster repositories metering.
+ * Get repositories metering information for a cluster.
+ * This API exposes monotonically non-decreasing counters and it is expected that clients would durably store the information needed to compute aggregations over a period of time.
+ * Additionally, the information exposed by this API is volatile, meaning that it will not be present after node restarts.
  * @rest_spec_name nodes.get_repositories_metering_info
  * @availability stack since=7.16.0 stability=experimental
  * @availability serverless stability=experimental visibility=private
  * @cluster_privileges monitor, manage
+ * @doc_tag cluster
  */
 export interface Request extends RequestBase {
   path_parts: {
diff --git a/specification/nodes/hot_threads/NodesHotThreadsRequest.ts b/specification/nodes/hot_threads/NodesHotThreadsRequest.ts
index abcd41d7d5..46ef45bb17 100644
--- a/specification/nodes/hot_threads/NodesHotThreadsRequest.ts
+++ b/specification/nodes/hot_threads/NodesHotThreadsRequest.ts
@@ -23,13 +23,15 @@ import { long } from '@_types/Numeric'
 import { Duration } from '@_types/Time'
 
 /**
- * This API yields a breakdown of the hot threads on each selected node in the cluster.
- * The output is plain text with a breakdown of each node’s top hot threads.
+ * Get the hot threads for nodes.
+ * Get a breakdown of the hot threads on each selected node in the cluster.
+ * The output is plain text with a breakdown of the top hot threads for each node.
  * @rest_spec_name nodes.hot_threads
  * @availability stack stability=stable
  * @availability serverless stability=stable visibility=private
  * @cluster_privileges monitor,manage
  * @doc_id cluster-nodes-hot-threads
+ * @doc_tag cluster
  */
 export interface Request extends RequestBase {
   path_parts: {
diff --git a/specification/nodes/info/NodesInfoRequest.ts b/specification/nodes/info/NodesInfoRequest.ts
index bb1f8301d3..88c20e3b5e 100644
--- a/specification/nodes/info/NodesInfoRequest.ts
+++ b/specification/nodes/info/NodesInfoRequest.ts
@@ -22,11 +22,13 @@ import { Metrics, NodeIds } from '@_types/common'
 import { Duration } from '@_types/Time'
 
 /**
- * Returns cluster nodes information.
+ * Get node information.
+ * By default, the API returns all attributes and core settings for cluster nodes.
  * @rest_spec_name nodes.info
  * @availability stack since=1.3.0 stability=stable
  * @availability serverless stability=stable visibility=private
  * @doc_id cluster-nodes-info
+ * @doc_tag cluster
  */
 export interface Request extends RequestBase {
   path_parts: {
diff --git a/specification/nodes/info/nodesInfoResponseExample1.json b/specification/nodes/info/nodesInfoResponseExample1.json
new file mode 100644
index 0000000000..04ace45464
--- /dev/null
+++ b/specification/nodes/info/nodesInfoResponseExample1.json
@@ -0,0 +1,7 @@
+{
+  "summary": "A successful response when requesting cluster nodes information.",
+  "description": "",
+  "type": "response",
+  "response_code": 200,
+  "value": "{\n  \"_nodes\": \"...\",\n  \"cluster_name\": \"elasticsearch\",\n  \"nodes\": {\n    \"USpTGYaBSIKbgSUJR2Z9lg\": {\n      \"name\": \"node-0\",\n      \"transport_address\": \"192.168.17:9300\",\n      \"host\": \"node-0.elastic.co\",\n      \"ip\": \"192.168.17\",\n      \"version\": \"{version}\",\n      \"transport_version\": 100000298,\n      \"index_version\": 100000074,\n      \"component_versions\": {\n        \"ml_config_version\": 100000162,\n        \"transform_config_version\": 100000096\n      },\n      \"build_flavor\": \"default\",\n      \"build_type\": \"{build_type}\",\n      \"build_hash\": \"587409e\",\n      \"roles\": [\n        \"master\",\n        \"data\",\n        \"ingest\"\n      ],\n      \"attributes\": {},\n      \"plugins\": [\n        {\n          \"name\": \"analysis-icu\",\n          \"version\": \"{version}\",\n          \"description\": \"The ICU Analysis plugin integrates Lucene ICU module into elasticsearch, adding ICU relates analysis components.\",\n          \"classname\": \"org.elasticsearch.plugin.analysis.icu.AnalysisICUPlugin\",\n          \"has_native_controller\": false\n        }\n      ],\n      \"modules\": [\n        {\n          \"name\": \"lang-painless\",\n          \"version\": \"{version}\",\n          \"description\": \"An easy, safe and fast scripting language for Elasticsearch\",\n          \"classname\": \"org.elasticsearch.painless.PainlessPlugin\",\n          \"has_native_controller\": false\n        }\n      ]\n    }\n  }\n}"
+}
diff --git a/specification/nodes/info/nodesInfoResponseExample1.yaml b/specification/nodes/info/nodesInfoResponseExample1.yaml
new file mode 100644
index 0000000000..408f338c02
--- /dev/null
+++ b/specification/nodes/info/nodesInfoResponseExample1.yaml
@@ -0,0 +1,5 @@
+summary: 200 Successful response
+description: A successful response when requesting cluster nodes information.
+# type: response
+# response_code: 200
+value: "{\n  \"_nodes\": \"...\",\n  \"cluster_name\": \"elasticsearch\",\n  \"nodes\": {\n    \"USpTGYaBSIKbgSUJR2Z9lg\": {\n      \"name\": \"node-0\",\n      \"transport_address\": \"192.168.17:9300\",\n      \"host\": \"node-0.elastic.co\",\n      \"ip\": \"192.168.17\",\n      \"version\": \"{version}\",\n      \"transport_version\": 100000298,\n      \"index_version\": 100000074,\n      \"component_versions\": {\n        \"ml_config_version\": 100000162,\n        \"transform_config_version\": 100000096\n      },\n      \"build_flavor\": \"default\",\n      \"build_type\": \"{build_type}\",\n      \"build_hash\": \"587409e\",\n      \"roles\": [\n        \"master\",\n        \"data\",\n        \"ingest\"\n      ],\n      \"attributes\": {},\n      \"plugins\": [\n        {\n          \"name\": \"analysis-icu\",\n          \"version\": \"{version}\",\n          \"description\": \"The ICU Analysis plugin integrates Lucene ICU module into elasticsearch, adding ICU relates analysis components.\",\n          \"classname\": \"org.elasticsearch.plugin.analysis.icu.AnalysisICUPlugin\",\n          \"has_native_controller\": false\n        }\n      ],\n      \"modules\": [\n        {\n          \"name\": \"lang-painless\",\n          \"version\": \"{version}\",\n          \"description\": \"An easy, safe and fast scripting language for Elasticsearch\",\n          \"classname\": \"org.elasticsearch.painless.PainlessPlugin\",\n          \"has_native_controller\": false\n        }\n      ]\n    }\n  }\n}"
diff --git a/specification/nodes/info/types.ts b/specification/nodes/info/types.ts
index ac103115f1..1d47901284 100644
--- a/specification/nodes/info/types.ts
+++ b/specification/nodes/info/types.ts
@@ -159,7 +159,7 @@ export class NodeInfoPath {
   logs?: string
   home?: string
   repo?: string[]
-  data?: string[]
+  data?: string | string[]
 }
 
 export class NodeInfoRepositories {
@@ -221,7 +221,7 @@ export class NodeInfoSettingsTransportFeatures {
 }
 
 export class NodeInfoSettingsNetwork {
-  host?: Host
+  host?: Host | Host[]
 }
 
 export class NodeInfoIngest {
@@ -240,22 +240,27 @@ export class NodeInfoXpack {
   license?: NodeInfoXpackLicense
   security: NodeInfoXpackSecurity
   notification?: Dictionary<string, UserDefinedValue>
+  ml?: NodeInfoXpackMl
 }
 
 export class NodeInfoXpackSecurity {
-  http: NodeInfoXpackSecuritySsl
+  http?: NodeInfoXpackSecuritySsl
   enabled: string
   transport?: NodeInfoXpackSecuritySsl
   authc?: NodeInfoXpackSecurityAuthc
 }
 
+export class NodeInfoXpackMl {
+  use_auto_machine_memory_percent?: boolean
+}
+
 export class NodeInfoXpackSecuritySsl {
   ssl: Dictionary<string, string>
 }
 
 export class NodeInfoXpackSecurityAuthc {
-  realms: NodeInfoXpackSecurityAuthcRealms
-  token: NodeInfoXpackSecurityAuthcToken
+  realms?: NodeInfoXpackSecurityAuthcRealms
+  token?: NodeInfoXpackSecurityAuthcToken
 }
 
 export class NodeInfoXpackSecurityAuthcRealms {
diff --git a/specification/nodes/reload_secure_settings/ReloadSecureSettingsRequest.ts b/specification/nodes/reload_secure_settings/ReloadSecureSettingsRequest.ts
index 4bb5b2864b..bf1dce910a 100644
--- a/specification/nodes/reload_secure_settings/ReloadSecureSettingsRequest.ts
+++ b/specification/nodes/reload_secure_settings/ReloadSecureSettingsRequest.ts
@@ -22,9 +22,18 @@ import { NodeIds, Password } from '@_types/common'
 import { Duration } from '@_types/Time'
 
 /**
- * Reloads the keystore on nodes in the cluster.
+ * Reload the keystore on nodes in the cluster.
+ *
+ * Secure settings are stored in an on-disk keystore. Certain of these settings are reloadable.
+ * That is, you can change them on disk and reload them without restarting any nodes in the cluster.
+ * When you have updated reloadable secure settings in your keystore, you can use this API to reload those settings on each node.
+ *
+ * When the Elasticsearch keystore is password protected and not simply obfuscated, you must provide the password for the keystore when you reload the secure settings.
+ * Reloading the settings for the whole cluster assumes that the keystores for all nodes are protected with the same password; this method is allowed only when inter-node communications are encrypted.
+ * Alternatively, you can reload the secure settings on each node by locally accessing the API and passing the node-specific Elasticsearch keystore password.
  * @rest_spec_name nodes.reload_secure_settings
  * @availability stack since=6.5.0 stability=stable
+ * @doc_tag cluster
  */
 export interface Request extends RequestBase {
   path_parts: {
diff --git a/specification/nodes/reload_secure_settings/clusterNodesReloadSecureSettingsRequestExample1.json b/specification/nodes/reload_secure_settings/clusterNodesReloadSecureSettingsRequestExample1.json
new file mode 100644
index 0000000000..07744936fa
--- /dev/null
+++ b/specification/nodes/reload_secure_settings/clusterNodesReloadSecureSettingsRequestExample1.json
@@ -0,0 +1,7 @@
+{
+  "summary": "Reloads the keystore on nodes in the cluster.",
+  "method_request": "POST _nodes/reload_secure_settings",
+  "description": "",
+  "type": "request",
+  "value": "{\n  \"secure_settings_password\":\"keystore-password\"\n}"
+}
diff --git a/specification/nodes/reload_secure_settings/clusterNodesReloadSecureSettingsResponseExample1.json b/specification/nodes/reload_secure_settings/clusterNodesReloadSecureSettingsResponseExample1.json
new file mode 100644
index 0000000000..935831d6ac
--- /dev/null
+++ b/specification/nodes/reload_secure_settings/clusterNodesReloadSecureSettingsResponseExample1.json
@@ -0,0 +1,7 @@
+{
+  "summary": "A successful response when reloading keystore on nodes in your cluster.",
+  "description": "",
+  "type": "response",
+  "response_code": 200,
+  "value": "{\n  \"_nodes\": {\n    \"total\": 1,\n    \"successful\": 1,\n    \"failed\": 0\n  },\n  \"cluster_name\": \"my_cluster\",\n  \"nodes\": {\n    \"pQHNt5rXTTWNvUgOrdynKg\": {\n      \"name\": \"node-0\"\n    }\n  }\n}"
+}
diff --git a/specification/nodes/stats/NodesStatsRequest.ts b/specification/nodes/stats/NodesStatsRequest.ts
index 13b27f3031..d349a4df7d 100644
--- a/specification/nodes/stats/NodesStatsRequest.ts
+++ b/specification/nodes/stats/NodesStatsRequest.ts
@@ -22,12 +22,15 @@ import { Fields, Level, Metrics, NodeIds } from '@_types/common'
 import { Duration } from '@_types/Time'
 
 /**
- * Returns cluster nodes statistics.
+ * Get node statistics.
+ * Get statistics for nodes in a cluster.
+ * By default, all stats are returned. You can limit the returned information by using metrics.
  * @rest_spec_name nodes.stats
  * @availability stack stability=stable
  * @availability serverless stability=stable visibility=private
  * @doc_id cluster-nodes-stats
  * @cluster_privileges monitor,manage
+ * @doc_tag cluster
  */
 export interface Request extends RequestBase {
   path_parts: {
diff --git a/specification/nodes/usage/NodesUsageRequest.ts b/specification/nodes/usage/NodesUsageRequest.ts
index e9dfdf1a87..1b9a15ad03 100644
--- a/specification/nodes/usage/NodesUsageRequest.ts
+++ b/specification/nodes/usage/NodesUsageRequest.ts
@@ -22,12 +22,13 @@ import { Metrics, NodeIds } from '@_types/common'
 import { Duration } from '@_types/Time'
 
 /**
- * Returns information on the usage of features.
+ * Get feature usage information.
  * @rest_spec_name nodes.usage
  * @availability stack since=6.0.0 stability=stable
  * @availability serverless stability=stable visibility=private
  * @doc_id cluster-nodes-usage
  * @cluster_privileges monitor,manage
+ * @doc_tag cluster
  */
 export interface Request extends RequestBase {
   path_parts: {
diff --git a/specification/query_rules/delete_rule/QueryRuleDeleteRequest.ts b/specification/query_rules/delete_rule/QueryRuleDeleteRequest.ts
index 33398e41d2..df745da4ab 100644
--- a/specification/query_rules/delete_rule/QueryRuleDeleteRequest.ts
+++ b/specification/query_rules/delete_rule/QueryRuleDeleteRequest.ts
@@ -20,7 +20,8 @@ import { RequestBase } from '@_types/Base'
 import { Id } from '@_types/common'
 
 /**
- * Deletes a query rule within a query ruleset.
+ * Delete a query rule.
+ * Delete a query rule within a query ruleset.
  * @rest_spec_name query_rules.delete_rule
  * @availability stack since=8.15.0 stability=stable
  * @availability serverless stability=stable visibility=public
diff --git a/specification/query_rules/delete_ruleset/QueryRulesetDeleteRequest.ts b/specification/query_rules/delete_ruleset/QueryRulesetDeleteRequest.ts
index 21dd9bf92a..3698895120 100644
--- a/specification/query_rules/delete_ruleset/QueryRulesetDeleteRequest.ts
+++ b/specification/query_rules/delete_ruleset/QueryRulesetDeleteRequest.ts
@@ -20,7 +20,7 @@ import { RequestBase } from '@_types/Base'
 import { Id } from '@_types/common'
 
 /**
- * Deletes a query ruleset.
+ * Delete a query ruleset.
  * @rest_spec_name query_rules.delete_ruleset
  * @availability stack since=8.10.0 stability=stable
  * @availability serverless stability=stable visibility=public
diff --git a/specification/query_rules/get_rule/QueryRuleGetRequest.ts b/specification/query_rules/get_rule/QueryRuleGetRequest.ts
index 7aa110fdc3..de16f7ff86 100644
--- a/specification/query_rules/get_rule/QueryRuleGetRequest.ts
+++ b/specification/query_rules/get_rule/QueryRuleGetRequest.ts
@@ -20,10 +20,12 @@ import { RequestBase } from '@_types/Base'
 import { Id } from '@_types/common'
 
 /**
- * Returns the details about a query rule within a query ruleset
+ * Get a query rule.
+ * Get details about a query rule within a query ruleset.
  * @rest_spec_name query_rules.get_rule
  * @availability stack since=8.15.0 stability=stable
  * @availability serverless stability=stable visibility=public
+ * @ext_doc_id query-rule
  */
 export interface Request extends RequestBase {
   path_parts: {
diff --git a/specification/query_rules/get_ruleset/QueryRulesetGetRequest.ts b/specification/query_rules/get_ruleset/QueryRulesetGetRequest.ts
index 7ec6faffd1..bbc3118e70 100644
--- a/specification/query_rules/get_ruleset/QueryRulesetGetRequest.ts
+++ b/specification/query_rules/get_ruleset/QueryRulesetGetRequest.ts
@@ -20,7 +20,8 @@ import { RequestBase } from '@_types/Base'
 import { Id } from '@_types/common'
 
 /**
- * Returns the details about a query ruleset
+ * Get a query ruleset.
+ * Get details about a query ruleset.
  * @rest_spec_name query_rules.get_ruleset
  * @availability stack since=8.10.0 stability=stable
  * @availability serverless stability=stable visibility=public
diff --git a/specification/query_rules/list_rulesets/QueryRulesetListRequest.ts b/specification/query_rules/list_rulesets/QueryRulesetListRequest.ts
index 3a71d2761e..f98ee4a6b5 100644
--- a/specification/query_rules/list_rulesets/QueryRulesetListRequest.ts
+++ b/specification/query_rules/list_rulesets/QueryRulesetListRequest.ts
@@ -20,7 +20,8 @@ import { RequestBase } from '@_types/Base'
 import { integer } from '@_types/Numeric'
 
 /**
- * Returns summarized information about existing query rulesets.
+ * Get all query rulesets.
+ * Get summarized information about the query rulesets.
  * @rest_spec_name query_rules.list_rulesets
  * @availability stack since=8.10.0 stability=stable
  * @availability serverless stability=stable visibility=public
diff --git a/specification/query_rules/list_rulesets/types.ts b/specification/query_rules/list_rulesets/types.ts
index fd50af5c33..1441eb6af6 100644
--- a/specification/query_rules/list_rulesets/types.ts
+++ b/specification/query_rules/list_rulesets/types.ts
@@ -31,7 +31,12 @@ export class QueryRulesetListItem {
   rule_total_count: integer
 
   /**
-   * A map of criteria type to the number of rules of that type
+   * A map of criteria type (e.g. exact) to the number of rules of that type
    */
   rule_criteria_types_counts: Dictionary<string, integer>
+
+  /**
+   * A map of rule type (e.g. pinned) to the number of rules of that type
+   */
+  rule_type_counts: Dictionary<string, integer>
 }
diff --git a/specification/query_rules/put_rule/QueryRulePutRequest.ts b/specification/query_rules/put_rule/QueryRulePutRequest.ts
index 506f3b2b97..e3c1f5aefe 100644
--- a/specification/query_rules/put_rule/QueryRulePutRequest.ts
+++ b/specification/query_rules/put_rule/QueryRulePutRequest.ts
@@ -26,7 +26,8 @@ import {
 } from '../_types/QueryRuleset'
 
 /**
- * Creates or updates a query rule within a query ruleset.
+ * Create or update a query rule.
+ * Create or update a query rule within a query ruleset.
  * @rest_spec_name query_rules.put_rule
  * @availability stack since=8.15.0 stability=stable
  * @availability serverless stability=stable visibility=public
diff --git a/specification/query_rules/put_ruleset/QueryRulesetPutRequest.ts b/specification/query_rules/put_ruleset/QueryRulesetPutRequest.ts
index 1b9f22f27e..06d244fe1c 100644
--- a/specification/query_rules/put_ruleset/QueryRulesetPutRequest.ts
+++ b/specification/query_rules/put_ruleset/QueryRulesetPutRequest.ts
@@ -21,10 +21,11 @@ import { Id } from '@_types/common'
 import { QueryRule } from '../_types/QueryRuleset'
 
 /**
- * Creates or updates a query ruleset.
+ * Create or update a query ruleset.
  * @rest_spec_name query_rules.put_ruleset
  * @availability stack since=8.10.0 stability=stable
  * @availability serverless stability=stable visibility=public
+ * @ext_doc_id query-rule
  */
 export interface Request extends RequestBase {
   path_parts: {
diff --git a/specification/query_rules/test/QueryRulesetTestRequest.ts b/specification/query_rules/test/QueryRulesetTestRequest.ts
new file mode 100644
index 0000000000..6ce634de10
--- /dev/null
+++ b/specification/query_rules/test/QueryRulesetTestRequest.ts
@@ -0,0 +1,45 @@
+/*
+ * Licensed to Elasticsearch B.V. under one or more contributor
+ * license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright
+ * ownership. Elasticsearch B.V. licenses this file to you under
+ * the Apache License, Version 2.0 (the "License"); you may
+ * not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *    http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+import { Dictionary } from '@spec_utils/Dictionary'
+import { UserDefinedValue } from '@spec_utils/UserDefinedValue'
+import { RequestBase } from '@_types/Base'
+import { Id } from '@_types/common'
+
+/**
+ * Test a query ruleset.
+ * Evaluate match criteria against a query ruleset to identify the rules that would match that criteria.
+ * @rest_spec_name query_rules.test
+ * @availability stack since=8.10.0 stability=stable
+ * @availability serverless stability=stable visibility=public
+ */
+export interface Request extends RequestBase {
+  path_parts: {
+    /**
+     * The unique identifier of the query ruleset to be created or updated
+     */
+    ruleset_id: Id
+  }
+  /**
+   * The criteria we're testing for
+   */
+  /** @codegen_name match_criteria */
+  body: {
+    match_criteria: Dictionary<string, UserDefinedValue>
+  }
+}
diff --git a/specification/query_rules/test/QueryRulesetTestResponse.ts b/specification/query_rules/test/QueryRulesetTestResponse.ts
new file mode 100644
index 0000000000..2423da3078
--- /dev/null
+++ b/specification/query_rules/test/QueryRulesetTestResponse.ts
@@ -0,0 +1,39 @@
+/*
+ * Licensed to Elasticsearch B.V. under one or more contributor
+ * license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright
+ * ownership. Elasticsearch B.V. licenses this file to you under
+ * the Apache License, Version 2.0 (the "License"); you may
+ * not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *    http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+import { Id } from '@_types/common'
+import { integer } from '@_types/Numeric'
+
+export class Response {
+  body: {
+    total_matched_rules: integer
+    matched_rules: QueryRulesetMatchedRule[]
+  }
+}
+
+export class QueryRulesetMatchedRule {
+  /**
+   * Ruleset unique identifier
+   */
+  ruleset_id: Id
+  /**
+   * Rule unique identifier within that ruleset
+   */
+  rule_id: Id
+}
diff --git a/specification/search_application/delete/SearchApplicationsDeleteRequest.ts b/specification/search_application/delete/SearchApplicationsDeleteRequest.ts
index 83dfdc7ae9..c0ec929057 100644
--- a/specification/search_application/delete/SearchApplicationsDeleteRequest.ts
+++ b/specification/search_application/delete/SearchApplicationsDeleteRequest.ts
@@ -20,7 +20,8 @@ import { RequestBase } from '@_types/Base'
 import { Name } from '@_types/common'
 
 /**
- * Deletes a search application.
+ * Delete a search application.
+ * Remove a search application and its associated alias. Indices attached to the search application are not removed.
  * @rest_spec_name search_application.delete
  * @availability stack since=8.8.0 stability=beta
  * @availability serverless stability=beta visibility=public
diff --git a/specification/search_application/delete_behavioral_analytics/BehavioralAnalyticsDeleteRequest.ts b/specification/search_application/delete_behavioral_analytics/BehavioralAnalyticsDeleteRequest.ts
index 4b34a48578..ae871c848c 100644
--- a/specification/search_application/delete_behavioral_analytics/BehavioralAnalyticsDeleteRequest.ts
+++ b/specification/search_application/delete_behavioral_analytics/BehavioralAnalyticsDeleteRequest.ts
@@ -21,9 +21,11 @@ import { Name } from '@_types/common'
 
 /**
  * Delete a behavioral analytics collection.
+ * The associated data stream is also deleted.
  * @rest_spec_name search_application.delete_behavioral_analytics
  * @availability stack since=8.8.0 stability=experimental
  * @availability serverless stability=experimental visibility=public
+ * @doc_tag analytics
  */
 export interface Request extends RequestBase {
   path_parts: {
diff --git a/specification/search_application/get/SearchApplicationsGetRequest.ts b/specification/search_application/get/SearchApplicationsGetRequest.ts
index 77ef2d4bb2..f9a7ed3378 100644
--- a/specification/search_application/get/SearchApplicationsGetRequest.ts
+++ b/specification/search_application/get/SearchApplicationsGetRequest.ts
@@ -20,7 +20,7 @@ import { RequestBase } from '@_types/Base'
 import { Name } from '@_types/common'
 
 /**
- * Returns the details about a search application
+ * Get search application details.
  * @rest_spec_name search_application.get
  * @availability stack since=8.8.0 stability=beta
  * @availability serverless stability=beta visibility=public
diff --git a/specification/search_application/get_behavioral_analytics/BehavioralAnalyticsGetRequest.ts b/specification/search_application/get_behavioral_analytics/BehavioralAnalyticsGetRequest.ts
index fbeb0553f4..c59e52858f 100644
--- a/specification/search_application/get_behavioral_analytics/BehavioralAnalyticsGetRequest.ts
+++ b/specification/search_application/get_behavioral_analytics/BehavioralAnalyticsGetRequest.ts
@@ -20,10 +20,11 @@ import { RequestBase } from '@_types/Base'
 import { Name } from '@_types/common'
 
 /**
- * Returns the existing behavioral analytics collections.
+ * Get behavioral analytics collections.
  * @rest_spec_name search_application.get_behavioral_analytics
  * @availability stack since=8.8.0 stability=experimental
  * @availability serverless stability=experimental visibility=public
+ * @doc_tag analytics
  */
 export interface Request extends RequestBase {
   path_parts: {
diff --git a/specification/search_application/put/SearchApplicationsPutRequest.ts b/specification/search_application/put/SearchApplicationsPutRequest.ts
index a062f082a2..df5efd5ff0 100644
--- a/specification/search_application/put/SearchApplicationsPutRequest.ts
+++ b/specification/search_application/put/SearchApplicationsPutRequest.ts
@@ -21,7 +21,7 @@ import { Name } from '@_types/common'
 import { SearchApplication } from '../_types/SearchApplication'
 
 /**
- * Creates or updates a search application.
+ * Create or update a search application.
  * @rest_spec_name search_application.put
  * @availability stack since=8.8.0 stability=beta
  * @availability serverless stability=beta visibility=public
diff --git a/specification/search_application/put_behavioral_analytics/BehavioralAnalyticsPutRequest.ts b/specification/search_application/put_behavioral_analytics/BehavioralAnalyticsPutRequest.ts
index 01db6bd546..32c77aab68 100644
--- a/specification/search_application/put_behavioral_analytics/BehavioralAnalyticsPutRequest.ts
+++ b/specification/search_application/put_behavioral_analytics/BehavioralAnalyticsPutRequest.ts
@@ -20,10 +20,11 @@ import { RequestBase } from '@_types/Base'
 import { Name } from '@_types/common'
 
 /**
- * Creates a behavioral analytics collection.
+ * Create a behavioral analytics collection.
  * @rest_spec_name search_application.put_behavioral_analytics
  * @availability stack since=8.8.0 stability=experimental
  * @availability serverless stability=experimental visibility=public
+ * @doc_tag analytics
  */
 export interface Request extends RequestBase {
   path_parts: {
diff --git a/specification/search_application/search/SearchApplicationsSearchRequest.ts b/specification/search_application/search/SearchApplicationsSearchRequest.ts
index ae0247b2c9..da4c175a4f 100644
--- a/specification/search_application/search/SearchApplicationsSearchRequest.ts
+++ b/specification/search_application/search/SearchApplicationsSearchRequest.ts
@@ -22,7 +22,9 @@ import { RequestBase } from '@_types/Base'
 import { Name } from '@_types/common'
 
 /**
- * Perform a search against a search application.
+ * Run a search application search.
+ * Generate and run an Elasticsearch query that uses the specified query parameteter and the search template associated with the search application or default template.
+ * Unspecified template parameters are assigned their default values if applicable.
  * @rest_spec_name search_application.search
  * @availability stack since=8.8.0 stability=beta
  * @availability serverless stability=beta visibility=public
diff --git a/specification/security/_types/Access.ts b/specification/security/_types/Access.ts
new file mode 100644
index 0000000000..ec74661ae0
--- /dev/null
+++ b/specification/security/_types/Access.ts
@@ -0,0 +1,31 @@
+/*
+ * Licensed to Elasticsearch B.V. under one or more contributor
+ * license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright
+ * ownership. Elasticsearch B.V. licenses this file to you under
+ * the Apache License, Version 2.0 (the "License"); you may
+ * not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *    http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+import { ReplicationAccess, SearchAccess } from './Privileges'
+
+export class Access {
+  /**
+   * A list of indices permission entries for cross-cluster replication.
+   */
+  replication?: ReplicationAccess[]
+  /**
+   * A list of indices permission entries for cross-cluster search.
+   */
+  search?: SearchAccess[]
+}
diff --git a/specification/security/_types/ApiKey.ts b/specification/security/_types/ApiKey.ts
index 9d7135c25b..d5ea6b9798 100644
--- a/specification/security/_types/ApiKey.ts
+++ b/specification/security/_types/ApiKey.ts
@@ -19,58 +19,65 @@
 
 import { Dictionary } from '@spec_utils/Dictionary'
 import { Id, Metadata, Name, Username } from '@_types/common'
-import { long } from '@_types/Numeric'
 import { SortResults } from '@_types/sort'
+import { EpochTime, UnitMillis } from '@_types/Time'
+import { Access } from './Access'
 import { RoleDescriptor } from './RoleDescriptor'
 
 export class ApiKey {
   /**
-   * Creation time for the API key in milliseconds.
+   * Id for the API key
    */
-  creation?: long
+  id: Id
   /**
-   * Expiration time for the API key in milliseconds.
+   * Name of the API key.
    */
-  expiration?: long
+  name: Name
   /**
-   * Id for the API key
+   * The type of the API key (e.g. `rest` or `cross_cluster`).
+   * @availability stack since=8.10.0
+   * @availability serverless
    */
-  id: Id
+  type: ApiKeyType
   /**
-   * Invalidation status for the API key.
-   * If the key has been invalidated, it has a value of `true`. Otherwise, it is `false`.
+   * Creation time for the API key in milliseconds.
    */
-  invalidated?: boolean
+  creation: EpochTime<UnitMillis>
   /**
-   * Name of the API key.
+   * Expiration time for the API key in milliseconds.
    */
-  name: Name
+  expiration?: EpochTime<UnitMillis>
   /**
-   * Realm name of the principal for which this API key was created.
+   * Invalidation status for the API key.
+   * If the key has been invalidated, it has a value of `true`. Otherwise, it is `false`.
    */
-  realm?: string
+  invalidated: boolean
   /**
-   * Realm type of the principal for which this API key was created
-   * @availability stack since=8.14.0
+   * If the key has been invalidated, invalidation time in milliseconds.
+   * @availability stack since=8.12.0
    * @availability serverless
    */
-  realm_type?: string
+  invalidation?: EpochTime<UnitMillis>
   /**
    * Principal for which this API key was created
    */
-  username?: Username
+  username: Username
   /**
-   * The profile uid for the API key owner principal, if requested and if it exists
+   * Realm name of the principal for which this API key was created.
+   */
+  realm: string
+  /**
+   * Realm type of the principal for which this API key was created
    * @availability stack since=8.14.0
    * @availability serverless
    */
-  profile_uid?: string
+  realm_type?: string
   /**
    * Metadata of the API key
    * @availability stack since=7.13.0
    * @availability serverless
    */
-  metadata?: Metadata
+  metadata: Metadata
   /**
    * The role descriptors assigned to this API key when it was created or last updated.
    * An empty role descriptor means the API key inherits the owner user’s permissions.
@@ -84,5 +91,28 @@ export class ApiKey {
    * @availability serverless
    */
   limited_by?: Array<Dictionary<string, RoleDescriptor>>
+  /**
+   * The access granted to cross-cluster API keys.
+   * The access is composed of permissions for cross cluster search and cross cluster replication.
+   * At least one of them must be specified.
+   * When specified, the new access assignment fully replaces the previously assigned access.
+   * @availability stack since=8.10.0
+   * @availability serverless
+   */
+  access?: Access
+  /**
+   * The profile uid for the API key owner principal, if requested and if it exists
+   * @availability stack since=8.14.0
+   * @availability serverless
+   */
+  profile_uid?: string
+  /**
+   * Sorting values when using the `sort` parameter with the `security.query_api_keys` API.
+   */
   _sort?: SortResults
 }
+
+export enum ApiKeyType {
+  rest,
+  cross_cluster
+}
diff --git a/specification/security/_types/Privileges.ts b/specification/security/_types/Privileges.ts
index 137bf81105..959954fec1 100644
--- a/specification/security/_types/Privileges.ts
+++ b/specification/security/_types/Privileges.ts
@@ -19,7 +19,7 @@
 
 import { Dictionary } from '@spec_utils/Dictionary'
 import { UserDefinedValue } from '@spec_utils/UserDefinedValue'
-import { Id, Indices } from '@_types/common'
+import { Id, IndexName, Indices, Names } from '@_types/common'
 import { QueryContainer } from '@_types/query_dsl/abstractions'
 import { ScriptLanguage } from '@_types/Scripting'
 import { FieldSecurity } from './FieldSecurity'
@@ -194,6 +194,7 @@ export enum ClusterPrivilege {
   write_fleet_secrets
 }
 
+// Keep in sync with RemoteIndicesPrivileges
 export class IndicesPrivileges {
   /**
    * The document fields that the owners of the role have read access to.
@@ -220,6 +221,37 @@ export class IndicesPrivileges {
   allow_restricted_indices?: boolean
 }
 
+// Keep in sync with IndicesPrivileges
+export class RemoteIndicesPrivileges {
+  /**
+   *  A list of cluster aliases to which the permissions in this entry apply.
+   */
+  clusters: Names
+  /**
+   * The document fields that the owners of the role have read access to.
+   * @doc_id field-and-document-access-control
+   */
+  field_security?: FieldSecurity
+  /**
+   * A list of indices (or index name patterns) to which the permissions in this entry apply.
+   */
+  names: Indices
+  /**
+   * The index level privileges that owners of the role have on the specified indices.
+   */
+  privileges: IndexPrivilege[]
+  /**
+   * A search query that defines the documents the owners of the role have access to. A document within the specified indices must match this query for it to be accessible by the owners of the role.
+   */
+  query?: IndicesPrivilegesQuery
+  /**
+   * Set to `true` if using wildcard or regular expressions for patterns that cover restricted indices. Implicitly, restricted indices have limited privileges that can cause pattern tests to fail. If restricted indices are explicitly included in the `names` list, Elasticsearch checks privileges against these indices regardless of the value set for `allow_restricted_indices`.
+   * @server_default false
+   * @availability stack
+   */
+  allow_restricted_indices?: boolean
+}
+
 export class UserIndicesPrivileges {
   /**
    * The document fields that the owners of the role have read access to.
@@ -261,7 +293,7 @@ export class RoleTemplateQuery {
    * Like other places in Elasticsearch that support templating or scripting, you can specify inline, stored, or file-based
    * templates and define custom parameters. You access the details for the current authenticated user through the _user parameter.
    *
-   * @doc_id templating-role-query
+   * @ext_doc_id templating-role-query
    */
   template?: RoleTemplateScript
 }
@@ -344,3 +376,37 @@ export class ApplicationGlobalUserPrivileges {
 export class ManageUserPrivileges {
   applications: string[]
 }
+
+export class ReplicationAccess {
+  /**
+   * A list of indices (or index name patterns) to which the permissions in this entry apply.
+   */
+  names: IndexName[]
+  /**
+   * This needs to be set to true if the patterns in the names field should cover system indices.
+   * @server_default false
+   */
+  allow_restricted_indices?: boolean
+}
+
+export class SearchAccess {
+  /**
+   * The document fields that the owners of the role have read access to.
+   * @doc_id field-and-document-access-control
+   */
+  field_security?: FieldSecurity
+  /**
+   * A list of indices (or index name patterns) to which the permissions in this entry apply.
+   */
+  names: IndexName[]
+  /**
+   * A search query that defines the documents the owners of the role have access to. A document within the specified indices must match this query for it to be accessible by the owners of the role.
+   */
+  query?: IndicesPrivilegesQuery
+  /**
+   * Set to `true` if using wildcard or regular expressions for patterns that cover restricted indices. Implicitly, restricted indices have limited privileges that can cause pattern tests to fail. If restricted indices are explicitly included in the `names` list, Elasticsearch checks privileges against these indices regardless of the value set for `allow_restricted_indices`.
+   * @server_default false
+   * @availability stack
+   */
+  allow_restricted_indices?: boolean
+}
diff --git a/specification/security/activate_user_profile/Request.ts b/specification/security/activate_user_profile/Request.ts
index b8d0243c32..698ef10b0c 100644
--- a/specification/security/activate_user_profile/Request.ts
+++ b/specification/security/activate_user_profile/Request.ts
@@ -21,7 +21,9 @@ import { GrantType } from '@security/_types/GrantType'
 import { RequestBase } from '@_types/Base'
 
 /**
- * Creates or updates a user profile on behalf of another user.
+ * Activate a user profile.
+ *
+ * Create or update a user profile on behalf of another user.
  * @rest_spec_name security.activate_user_profile
  * @availability stack since=8.2.0 stability=stable
  * @availability serverless stability=stable visibility=private
diff --git a/specification/security/authenticate/SecurityAuthenticateRequest.ts b/specification/security/authenticate/SecurityAuthenticateRequest.ts
index 608f90d0be..66202c9440 100644
--- a/specification/security/authenticate/SecurityAuthenticateRequest.ts
+++ b/specification/security/authenticate/SecurityAuthenticateRequest.ts
@@ -21,6 +21,7 @@ import { RequestBase } from '@_types/Base'
 
 /**
  * Authenticate a user.
+ *
  * Authenticates a user and returns information about the authenticated user.
  * Include the user information in a [basic auth header](https://en.wikipedia.org/wiki/Basic_access_authentication).
  * A successful call returns a JSON structure that shows user information such as their username, the roles that are assigned to the user, any assigned metadata, and information about the realms that authenticated and authorized the user.
diff --git a/specification/security/authenticate/SecurityAuthenticateResponse.ts b/specification/security/authenticate/SecurityAuthenticateResponse.ts
index a6716f45c9..75bfb082b8 100644
--- a/specification/security/authenticate/SecurityAuthenticateResponse.ts
+++ b/specification/security/authenticate/SecurityAuthenticateResponse.ts
@@ -17,14 +17,13 @@
  * under the License.
  */
 
-import { ApiKey } from '@security/_types/ApiKey'
 import { RealmInfo } from '@security/_types/RealmInfo'
-import { Metadata, Name, Username } from '@_types/common'
+import { Id, Metadata, Name, Username } from '@_types/common'
 import { Token } from './types'
 
 export class Response {
   body: {
-    api_key?: ApiKey
+    api_key?: AuthenticateApiKey
     authentication_realm: RealmInfo
     email?: string | null
     full_name?: Name | null
@@ -41,3 +40,8 @@ export class Response {
     token?: Token
   }
 }
+
+export class AuthenticateApiKey {
+  id: Id
+  name?: Name
+}
diff --git a/specification/security/bulk_delete_role/SecurityBulkDeleteRoleRequest.ts b/specification/security/bulk_delete_role/SecurityBulkDeleteRoleRequest.ts
index 05377914b2..23e5358be6 100644
--- a/specification/security/bulk_delete_role/SecurityBulkDeleteRoleRequest.ts
+++ b/specification/security/bulk_delete_role/SecurityBulkDeleteRoleRequest.ts
@@ -21,6 +21,8 @@ import { RequestBase } from '@_types/Base'
 import { Refresh } from '@_types/common'
 
 /**
+ * Bulk delete roles.
+ *
  * The role management APIs are generally the preferred way to manage roles, rather than using file-based role management.
  * The bulk delete roles API cannot delete roles that are defined in roles files.
  * @rest_spec_name security.bulk_delete_role
diff --git a/specification/security/bulk_put_role/SecurityBulkPutRoleRequest.ts b/specification/security/bulk_put_role/SecurityBulkPutRoleRequest.ts
index ebeab2dc36..e9e89b2af3 100644
--- a/specification/security/bulk_put_role/SecurityBulkPutRoleRequest.ts
+++ b/specification/security/bulk_put_role/SecurityBulkPutRoleRequest.ts
@@ -23,6 +23,8 @@ import { RequestBase } from '@_types/Base'
 import { Refresh } from '@_types/common'
 
 /**
+ * Bulk create or update roles.
+ *
  * The role management APIs are generally the preferred way to manage roles, rather than using file-based role management.
  * The bulk create or update roles API cannot update roles that are defined in roles files.
  * @rest_spec_name security.bulk_put_role
diff --git a/specification/security/change_password/SecurityChangePasswordRequest.ts b/specification/security/change_password/SecurityChangePasswordRequest.ts
index 52429e61fe..ee61611c22 100644
--- a/specification/security/change_password/SecurityChangePasswordRequest.ts
+++ b/specification/security/change_password/SecurityChangePasswordRequest.ts
@@ -21,6 +21,9 @@ import { RequestBase } from '@_types/Base'
 import { Password, Refresh, Username } from '@_types/common'
 
 /**
+ * Change passwords.
+ *
+ * Change the passwords of users in the native realm and built-in users.
  * @rest_spec_name security.change_password
  * @availability stack stability=stable
  */
diff --git a/specification/security/clear_api_key_cache/SecurityClearApiKeyCacheRequest.ts b/specification/security/clear_api_key_cache/SecurityClearApiKeyCacheRequest.ts
index 67c308fdc3..f631422320 100644
--- a/specification/security/clear_api_key_cache/SecurityClearApiKeyCacheRequest.ts
+++ b/specification/security/clear_api_key_cache/SecurityClearApiKeyCacheRequest.ts
@@ -21,7 +21,9 @@ import { RequestBase } from '@_types/Base'
 import { Ids } from '@_types/common'
 
 /**
- * Evicts a subset of all entries from the API key cache.
+ * Clear the API key cache.
+ *
+ * Evict a subset of all entries from the API key cache.
  * The cache is also automatically cleared on state changes of the security index.
  * @rest_spec_name security.clear_api_key_cache
  * @availability stack since=7.10.0 stability=stable
diff --git a/specification/security/clear_cached_privileges/SecurityClearCachedPrivilegesRequest.ts b/specification/security/clear_cached_privileges/SecurityClearCachedPrivilegesRequest.ts
index 5b183a7ab0..7117880a7e 100644
--- a/specification/security/clear_cached_privileges/SecurityClearCachedPrivilegesRequest.ts
+++ b/specification/security/clear_cached_privileges/SecurityClearCachedPrivilegesRequest.ts
@@ -21,6 +21,10 @@ import { RequestBase } from '@_types/Base'
 import { Name } from '@_types/common'
 
 /**
+ * Clear the privileges cache.
+ *
+ * Evict privileges from the native application privilege cache.
+ * The cache is also automatically cleared for applications that have their privileges updated.
  * @rest_spec_name security.clear_cached_privileges
  * @availability stack since=7.9.0 stability=stable
  * @availability serverless stability=stable visibility=private
diff --git a/specification/security/clear_cached_realms/SecurityClearCachedRealmsRequest.ts b/specification/security/clear_cached_realms/SecurityClearCachedRealmsRequest.ts
index b87498885a..33e192a5aa 100644
--- a/specification/security/clear_cached_realms/SecurityClearCachedRealmsRequest.ts
+++ b/specification/security/clear_cached_realms/SecurityClearCachedRealmsRequest.ts
@@ -21,6 +21,9 @@ import { RequestBase } from '@_types/Base'
 import { Names } from '@_types/common'
 
 /**
+ * Clear the user cache.
+ *
+ * Evict users from the user cache. You can completely clear the cache or evict specific users.
  * @rest_spec_name security.clear_cached_realms
  * @availability stack stability=stable
  * @availability serverless stability=stable visibility=private
diff --git a/specification/security/clear_cached_roles/ClearCachedRolesRequest.ts b/specification/security/clear_cached_roles/ClearCachedRolesRequest.ts
index b84006af56..14c852513e 100644
--- a/specification/security/clear_cached_roles/ClearCachedRolesRequest.ts
+++ b/specification/security/clear_cached_roles/ClearCachedRolesRequest.ts
@@ -21,6 +21,9 @@ import { RequestBase } from '@_types/Base'
 import { Names } from '@_types/common'
 
 /**
+ * Clear the roles cache.
+ *
+ * Evict roles from the native role cache.
  * @rest_spec_name security.clear_cached_roles
  * @availability stack stability=stable
  * @availability serverless stability=stable visibility=private
diff --git a/specification/security/clear_cached_service_tokens/ClearCachedServiceTokensRequest.ts b/specification/security/clear_cached_service_tokens/ClearCachedServiceTokensRequest.ts
index af81d05f3f..a0f7f6eea2 100644
--- a/specification/security/clear_cached_service_tokens/ClearCachedServiceTokensRequest.ts
+++ b/specification/security/clear_cached_service_tokens/ClearCachedServiceTokensRequest.ts
@@ -21,9 +21,13 @@ import { RequestBase } from '@_types/Base'
 import { Names, Namespace, Service } from '@_types/common'
 
 /**
+ * Clear service account token caches.
+ *
+ * Evict a subset of all entries from the service account token caches.
  * @rest_spec_name security.clear_cached_service_tokens
  * @availability stack stability=stable
  * @availability serverless stability=stable visibility=private
+ * @ext_doc_id service-accounts
  */
 export interface Request extends RequestBase {
   path_parts: {
diff --git a/specification/security/create_api_key/SecurityCreateApiKeyRequest.ts b/specification/security/create_api_key/SecurityCreateApiKeyRequest.ts
index e5f6f2bb89..3478245347 100644
--- a/specification/security/create_api_key/SecurityCreateApiKeyRequest.ts
+++ b/specification/security/create_api_key/SecurityCreateApiKeyRequest.ts
@@ -25,7 +25,8 @@ import { Duration } from '@_types/Time'
 
 /**
  * Create an API key.
- * Creates an API key for access without requiring basic authentication.
+ *
+ * Create an API key for access without requiring basic authentication.
  * A successful request returns a JSON structure that contains the API key, its unique id, and its name.
  * If applicable, it also returns expiration information for the API key in milliseconds.
  * NOTE: By default, API keys never expire. You can specify expiration information when you create the API keys.
diff --git a/specification/security/create_cross_cluster_api_key/CreateCrossClusterApiKeyRequest.ts b/specification/security/create_cross_cluster_api_key/CreateCrossClusterApiKeyRequest.ts
new file mode 100644
index 0000000000..853aa86ebc
--- /dev/null
+++ b/specification/security/create_cross_cluster_api_key/CreateCrossClusterApiKeyRequest.ts
@@ -0,0 +1,73 @@
+/*
+ * Licensed to Elasticsearch B.V. under one or more contributor
+ * license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright
+ * ownership. Elasticsearch B.V. licenses this file to you under
+ * the Apache License, Version 2.0 (the "License"); you may
+ * not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *    http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+import { Access } from '@security/_types/Access'
+import { RequestBase } from '@_types/Base'
+import { Metadata, Name } from '@_types/common'
+import { Duration } from '@_types/Time'
+
+/**
+ * Create a cross-cluster API key.
+ *
+ * Create an API key of the `cross_cluster` type for the API key based remote cluster access.
+ * A `cross_cluster` API key cannot be used to authenticate through the REST interface.
+ *
+ * IMPORTANT: To authenticate this request you must use a credential that is not an API key. Even if you use an API key that has the required privilege, the API returns an error.
+ *
+ * Cross-cluster API keys are created by the Elasticsearch API key service, which is automatically enabled.
+ *
+ * NOTE: Unlike REST API keys, a cross-cluster API key does not capture permissions of the authenticated user. The API key’s effective permission is exactly as specified with the `access` property.
+ *
+ * A successful request returns a JSON structure that contains the API key, its unique ID, and its name. If applicable, it also returns expiration information for the API key in milliseconds.
+ *
+ * By default, API keys never expire. You can specify expiration information when you create the API keys.
+ *
+ * Cross-cluster API keys can only be updated with the update cross-cluster API key API.
+ * Attempting to update them with the update REST API key API or the bulk update REST API keys API will result in an error.
+ * @rest_spec_name security.create_cross_cluster_api_key
+ * @availability stack stability=stable
+ * @cluster_privileges manage_security
+ * @ext_doc_id remote-clusters-api-key
+ */
+export interface Request extends RequestBase {
+  body: {
+    /**
+     * The access to be granted to this API key.
+     * The access is composed of permissions for cross-cluster search and cross-cluster replication.
+     * At least one of them must be specified.
+     *
+     * NOTE: No explicit privileges should be specified for either search or replication access.
+     * The creation process automatically converts the access specification to a role descriptor which has relevant privileges assigned accordingly.
+     */
+    access: Access
+    /**
+     * Expiration time for the API key.
+     * By default, API keys never expire.
+     */
+    expiration?: Duration
+    /**
+     * Arbitrary metadata that you want to associate with the API key.
+     * It supports nested data structure.
+     * Within the metadata object, keys beginning with `_` are reserved for system usage.
+     */
+    metadata?: Metadata
+    /** Specifies the name for this API key. */
+    name: Name
+  }
+}
diff --git a/specification/security/create_cross_cluster_api_key/CreateCrossClusterApiKeyResponse.ts b/specification/security/create_cross_cluster_api_key/CreateCrossClusterApiKeyResponse.ts
new file mode 100644
index 0000000000..2f271bea07
--- /dev/null
+++ b/specification/security/create_cross_cluster_api_key/CreateCrossClusterApiKeyResponse.ts
@@ -0,0 +1,48 @@
+/*
+ * Licensed to Elasticsearch B.V. under one or more contributor
+ * license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright
+ * ownership. Elasticsearch B.V. licenses this file to you under
+ * the Apache License, Version 2.0 (the "License"); you may
+ * not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *    http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+import { Id, Name } from '@_types/common'
+import { DurationValue, UnitMillis } from '@_types/Time'
+
+export class Response {
+  body: {
+    /**
+     * Generated API key.
+     */
+    api_key: string
+    /**
+     * Expiration in milliseconds for the API key.
+     */
+    expiration?: DurationValue<UnitMillis>
+    /**
+     * Unique ID for this API key.
+     */
+    id: Id
+    /**
+     * Specifies the name for this API key.
+     */
+    name: Name
+    /**
+     * API key credentials which is the base64-encoding of
+     * the UTF-8 representation of `id` and `api_key` joined
+     * by a colon (`:`).
+     */
+    encoded: string
+  }
+}
diff --git a/specification/security/create_service_token/CreateServiceTokenRequest.ts b/specification/security/create_service_token/CreateServiceTokenRequest.ts
index ce6ed1fda2..06efbb0581 100644
--- a/specification/security/create_service_token/CreateServiceTokenRequest.ts
+++ b/specification/security/create_service_token/CreateServiceTokenRequest.ts
@@ -21,10 +21,13 @@ import { RequestBase } from '@_types/Base'
 import { Name, Namespace, Refresh, Service } from '@_types/common'
 
 /**
- * Creates a service accounts token for access without requiring basic authentication.
+ * Create a service account token.
+ *
+ * Create a service accounts token for access without requiring basic authentication.
  * @rest_spec_name security.create_service_token
  * @availability stack stability=stable
  * @availability serverless stability=stable visibility=private
+ * @ext_doc_id service-accounts
  */
 export interface Request extends RequestBase {
   path_parts: {
diff --git a/specification/security/delete_privileges/SecurityDeletePrivilegesRequest.ts b/specification/security/delete_privileges/SecurityDeletePrivilegesRequest.ts
index 782dafc6ab..472469b7ba 100644
--- a/specification/security/delete_privileges/SecurityDeletePrivilegesRequest.ts
+++ b/specification/security/delete_privileges/SecurityDeletePrivilegesRequest.ts
@@ -21,9 +21,11 @@ import { RequestBase } from '@_types/Base'
 import { Name, Names, Refresh } from '@_types/common'
 
 /**
+ * Delete application privileges.
  * @rest_spec_name security.delete_privileges
  * @availability stack since=6.4.0 stability=stable
  * @availability serverless stability=stable visibility=private
+ * @ext_doc_id security-privileges
  */
 export interface Request extends RequestBase {
   path_parts: {
diff --git a/specification/security/delete_role/SecurityDeleteRoleRequest.ts b/specification/security/delete_role/SecurityDeleteRoleRequest.ts
index fa4afc81df..e1b741da75 100644
--- a/specification/security/delete_role/SecurityDeleteRoleRequest.ts
+++ b/specification/security/delete_role/SecurityDeleteRoleRequest.ts
@@ -21,6 +21,9 @@ import { RequestBase } from '@_types/Base'
 import { Name, Refresh } from '@_types/common'
 
 /**
+ * Delete roles.
+ *
+ * Delete roles in the native realm.
  * @rest_spec_name security.delete_role
  * @availability stack stability=stable
  * @availability serverless stability=stable visibility=private
diff --git a/specification/security/delete_role_mapping/SecurityDeleteRoleMappingRequest.ts b/specification/security/delete_role_mapping/SecurityDeleteRoleMappingRequest.ts
index c4551b64eb..36cb2c3a5c 100644
--- a/specification/security/delete_role_mapping/SecurityDeleteRoleMappingRequest.ts
+++ b/specification/security/delete_role_mapping/SecurityDeleteRoleMappingRequest.ts
@@ -21,6 +21,7 @@ import { RequestBase } from '@_types/Base'
 import { Name, Refresh } from '@_types/common'
 
 /**
+ * Delete role mappings.
  * @rest_spec_name security.delete_role_mapping
  * @availability stack since=5.5.0 stability=stable
  * @availability serverless stability=stable visibility=private
diff --git a/specification/security/delete_service_token/DeleteServiceTokenRequest.ts b/specification/security/delete_service_token/DeleteServiceTokenRequest.ts
index 9f424b628e..cb6a270a5f 100644
--- a/specification/security/delete_service_token/DeleteServiceTokenRequest.ts
+++ b/specification/security/delete_service_token/DeleteServiceTokenRequest.ts
@@ -21,9 +21,13 @@ import { RequestBase } from '@_types/Base'
 import { Name, Namespace, Refresh, Service } from '@_types/common'
 
 /**
+ * Delete service account tokens.
+ *
+ * Delete service account tokens for a service in a specified namespace.
  * @rest_spec_name security.delete_service_token
  * @availability stack since=5.5.0 stability=stable
  * @availability serverless stability=stable visibility=private
+ * @ext_doc_id service-accounts
  */
 export interface Request extends RequestBase {
   path_parts: {
diff --git a/specification/security/delete_user/SecurityDeleteUserRequest.ts b/specification/security/delete_user/SecurityDeleteUserRequest.ts
index 07217b16d0..9fe555c480 100644
--- a/specification/security/delete_user/SecurityDeleteUserRequest.ts
+++ b/specification/security/delete_user/SecurityDeleteUserRequest.ts
@@ -21,6 +21,9 @@ import { RequestBase } from '@_types/Base'
 import { Refresh, Username } from '@_types/common'
 
 /**
+ * Delete users.
+ *
+ * Delete users from the native realm.
  * @rest_spec_name security.delete_user
  * @availability stack stability=stable
  */
diff --git a/specification/security/disable_user/SecurityDisableUserRequest.ts b/specification/security/disable_user/SecurityDisableUserRequest.ts
index 30c1447a4e..6159d114ca 100644
--- a/specification/security/disable_user/SecurityDisableUserRequest.ts
+++ b/specification/security/disable_user/SecurityDisableUserRequest.ts
@@ -21,6 +21,9 @@ import { RequestBase } from '@_types/Base'
 import { Refresh, Username } from '@_types/common'
 
 /**
+ * Disable users.
+ *
+ * Disable users in the native realm.
  * @rest_spec_name security.disable_user
  * @availability stack stability=stable
  */
diff --git a/specification/security/disable_user_profile/Request.ts b/specification/security/disable_user_profile/Request.ts
index eb31d02362..4cdcd929e1 100644
--- a/specification/security/disable_user_profile/Request.ts
+++ b/specification/security/disable_user_profile/Request.ts
@@ -22,7 +22,9 @@ import { RequestBase } from '@_types/Base'
 import { Refresh } from '@_types/common'
 
 /**
- * Disables a user profile so it's not visible in user profile searches.
+ * Disable a user profile.
+ *
+ * Disable user profiles so that they are not visible in user profile searches.
  * @rest_spec_name security.disable_user_profile
  * @availability stack since=8.2.0 stability=stable
  * @availability serverless stability=stable visibility=private
diff --git a/specification/security/enable_user/SecurityEnableUserRequest.ts b/specification/security/enable_user/SecurityEnableUserRequest.ts
index 538d919407..372936212f 100644
--- a/specification/security/enable_user/SecurityEnableUserRequest.ts
+++ b/specification/security/enable_user/SecurityEnableUserRequest.ts
@@ -21,6 +21,9 @@ import { RequestBase } from '@_types/Base'
 import { Refresh, Username } from '@_types/common'
 
 /**
+ * Enable users.
+ *
+ * Enable users in the native realm.
  * @rest_spec_name security.enable_user
  * @availability stack stability=stable
  */
diff --git a/specification/security/enable_user_profile/Request.ts b/specification/security/enable_user_profile/Request.ts
index fd06852d3c..b236cd5b94 100644
--- a/specification/security/enable_user_profile/Request.ts
+++ b/specification/security/enable_user_profile/Request.ts
@@ -22,7 +22,9 @@ import { RequestBase } from '@_types/Base'
 import { Refresh } from '@_types/common'
 
 /**
- * Enables a user profile so it's visible in user profile searches.
+ * Enable a user profile.
+ *
+ * Enable user profiles to make them visible in user profile searches.
  * @rest_spec_name security.enable_user_profile
  * @availability stack since=8.2.0 stability=stable
  * @availability serverless stability=stable visibility=private
diff --git a/specification/security/enroll_kibana/Request.ts b/specification/security/enroll_kibana/Request.ts
index 88db88ab7e..9dbf5ac3c7 100644
--- a/specification/security/enroll_kibana/Request.ts
+++ b/specification/security/enroll_kibana/Request.ts
@@ -20,7 +20,9 @@
 import { RequestBase } from '@_types/Base'
 
 /**
- * Enables a Kibana instance to configure itself for communication with a secured Elasticsearch cluster.
+ * Enroll Kibana.
+ *
+ * Enable a Kibana instance to configure itself for communication with a secured Elasticsearch cluster.
  * @rest_spec_name security.enroll_kibana
  * @availability stack since=8.0.0 stability=stable
  */
diff --git a/specification/security/enroll_node/Request.ts b/specification/security/enroll_node/Request.ts
index 1539d1820a..a9a5b78e32 100644
--- a/specification/security/enroll_node/Request.ts
+++ b/specification/security/enroll_node/Request.ts
@@ -20,7 +20,9 @@
 import { RequestBase } from '@_types/Base'
 
 /**
- * Allows a new node to join an existing cluster with security features enabled.
+ * Enroll a node.
+ *
+ * Enroll a new node to allow it to join an existing cluster with security features enabled.
  * @rest_spec_name security.enroll_node
  * @availability stack since=8.0.0 stability=stable
  */
diff --git a/specification/security/get_api_key/SecurityGetApiKeyRequest.ts b/specification/security/get_api_key/SecurityGetApiKeyRequest.ts
index ed96c159f7..b090158aa4 100644
--- a/specification/security/get_api_key/SecurityGetApiKeyRequest.ts
+++ b/specification/security/get_api_key/SecurityGetApiKeyRequest.ts
@@ -22,6 +22,7 @@ import { Id, Name, Username } from '@_types/common'
 
 /**
  * Get API key information.
+ *
  * Retrieves information for one or more API keys.
  * NOTE: If you have only the `manage_own_api_key` privilege, this API returns only the API keys that you own.
  * If you have `read_security`, `manage_api_key` or greater privileges (including `manage_security`), this API returns all API keys regardless of ownership.
diff --git a/specification/security/get_builtin_privileges/SecurityGetBuiltinPrivilegesRequest.ts b/specification/security/get_builtin_privileges/SecurityGetBuiltinPrivilegesRequest.ts
index 646eef3bf9..6c2db327cc 100644
--- a/specification/security/get_builtin_privileges/SecurityGetBuiltinPrivilegesRequest.ts
+++ b/specification/security/get_builtin_privileges/SecurityGetBuiltinPrivilegesRequest.ts
@@ -20,9 +20,13 @@
 import { RequestBase } from '@_types/Base'
 
 /**
+ * Get builtin privileges.
+ *
+ * Get the list of cluster privileges and index privileges that are available in this version of Elasticsearch.
  * @rest_spec_name security.get_builtin_privileges
  * @availability stack since=7.3.0 stability=stable
  * @availability serverless stability=stable visibility=private
  * @cluster_privileges manage_security
+ * @ext_doc_id security-privileges
  */
 export interface Request extends RequestBase {}
diff --git a/specification/security/get_privileges/SecurityGetPrivilegesRequest.ts b/specification/security/get_privileges/SecurityGetPrivilegesRequest.ts
index 22dfc434a7..9c1dc0671e 100644
--- a/specification/security/get_privileges/SecurityGetPrivilegesRequest.ts
+++ b/specification/security/get_privileges/SecurityGetPrivilegesRequest.ts
@@ -21,9 +21,11 @@ import { RequestBase } from '@_types/Base'
 import { Name, Names } from '@_types/common'
 
 /**
+ * Get application privileges.
  * @rest_spec_name security.get_privileges
  * @availability stack since=6.4.0 stability=stable
  * @availability serverless stability=stable visibility=private
+ * @ext_doc_id security-privileges
  */
 export interface Request extends RequestBase {
   path_parts: {
diff --git a/specification/security/get_role/SecurityGetRoleRequest.ts b/specification/security/get_role/SecurityGetRoleRequest.ts
index 2f0a9917a8..2e44f9164d 100644
--- a/specification/security/get_role/SecurityGetRoleRequest.ts
+++ b/specification/security/get_role/SecurityGetRoleRequest.ts
@@ -21,6 +21,9 @@ import { RequestBase } from '@_types/Base'
 import { Names } from '@_types/common'
 
 /**
+ * Get roles.
+ *
+ * Get roles in the native realm.
  * The role management APIs are generally the preferred way to manage roles, rather than using file-based role management.
  * The get roles API cannot retrieve roles that are defined in roles files.
  * @rest_spec_name security.get_role
diff --git a/specification/security/get_role_mapping/SecurityGetRoleMappingRequest.ts b/specification/security/get_role_mapping/SecurityGetRoleMappingRequest.ts
index a6fba4d641..89af3fbd49 100644
--- a/specification/security/get_role_mapping/SecurityGetRoleMappingRequest.ts
+++ b/specification/security/get_role_mapping/SecurityGetRoleMappingRequest.ts
@@ -21,10 +21,16 @@ import { RequestBase } from '@_types/Base'
 import { Names } from '@_types/common'
 
 /**
+ * Get role mappings.
+ *
+ * Role mappings define which roles are assigned to each user.
+ * The role mapping APIs are generally the preferred way to manage role mappings rather than using role mapping files.
+ * The get role mappings API cannot retrieve role mappings that are defined in role mapping files.
  * @rest_spec_name security.get_role_mapping
  * @availability stack since=5.5.0 stability=stable
  * @availability serverless stability=stable visibility=private
  * @cluster_privileges manage_security
+ * @ext_doc_id mapping-roles
  */
 export interface Request extends RequestBase {
   path_parts: {
diff --git a/specification/security/get_service_accounts/GetServiceAccountsRequest.ts b/specification/security/get_service_accounts/GetServiceAccountsRequest.ts
index 298332b094..ba780e77c7 100644
--- a/specification/security/get_service_accounts/GetServiceAccountsRequest.ts
+++ b/specification/security/get_service_accounts/GetServiceAccountsRequest.ts
@@ -21,11 +21,14 @@ import { RequestBase } from '@_types/Base'
 import { Namespace, Service } from '@_types/common'
 
 /**
- * This API returns a list of service accounts that match the provided path parameter(s).
+ * Get service accounts.
+ *
+ * Get a list of service accounts that match the provided path parameters.
  * @rest_spec_name security.get_service_accounts
  * @availability stack since=7.13.0 stability=stable
  * @availability serverless stability=stable visibility=private
  * @cluster_privileges manage_service_account
+ * @ext_doc_id service-accounts
  */
 export interface Request extends RequestBase {
   path_parts: {
diff --git a/specification/security/get_service_credentials/GetServiceCredentialsRequest.ts b/specification/security/get_service_credentials/GetServiceCredentialsRequest.ts
index 3211fb4cb9..fcb64f51eb 100644
--- a/specification/security/get_service_credentials/GetServiceCredentialsRequest.ts
+++ b/specification/security/get_service_credentials/GetServiceCredentialsRequest.ts
@@ -21,9 +21,11 @@ import { RequestBase } from '@_types/Base'
 import { Name, Namespace } from '@_types/common'
 
 /**
+ * Get service account credentials.
  * @rest_spec_name security.get_service_credentials
  * @availability stack since=7.13.0 stability=stable
  * @availability serverless stability=stable visibility=private
+ * @ext_doc_id service-accounts
  */
 export interface Request extends RequestBase {
   path_parts: {
diff --git a/specification/security/get_token/GetUserAccessTokenRequest.ts b/specification/security/get_token/GetUserAccessTokenRequest.ts
index 6fda3119f0..4e163fa9b9 100644
--- a/specification/security/get_token/GetUserAccessTokenRequest.ts
+++ b/specification/security/get_token/GetUserAccessTokenRequest.ts
@@ -23,6 +23,9 @@ import { Password, Username } from '@_types/common'
 import { AccessTokenGrantType } from './types'
 
 /**
+ * Get a token.
+ *
+ * Create a bearer token for access without requiring basic authentication.
  * @rest_spec_name security.get_token
  * @availability stack since=5.5.0 stability=stable
  * @availability serverless stability=stable visibility=private
diff --git a/specification/security/get_user/SecurityGetUserRequest.ts b/specification/security/get_user/SecurityGetUserRequest.ts
index 0da3646956..376a497879 100644
--- a/specification/security/get_user/SecurityGetUserRequest.ts
+++ b/specification/security/get_user/SecurityGetUserRequest.ts
@@ -21,6 +21,9 @@ import { RequestBase } from '@_types/Base'
 import { Username } from '@_types/common'
 
 /**
+ * Get users.
+ *
+ * Get information about users in the native realm and built-in users.
  * @rest_spec_name security.get_user
  * @availability stack stability=stable
  */
diff --git a/specification/security/get_user_privileges/SecurityGetUserPrivilegesRequest.ts b/specification/security/get_user_privileges/SecurityGetUserPrivilegesRequest.ts
index 07c3d9a54b..a549b6f186 100644
--- a/specification/security/get_user_privileges/SecurityGetUserPrivilegesRequest.ts
+++ b/specification/security/get_user_privileges/SecurityGetUserPrivilegesRequest.ts
@@ -21,6 +21,7 @@ import { RequestBase } from '@_types/Base'
 import { Name } from '@_types/common'
 
 /**
+ * Get user privileges.
  * @rest_spec_name security.get_user_privileges
  * @availability stack since=6.5.0 stability=stable
  * @availability serverless stability=stable visibility=private
diff --git a/specification/security/get_user_profile/Request.ts b/specification/security/get_user_profile/Request.ts
index b65916328a..81cd5a3a6a 100644
--- a/specification/security/get_user_profile/Request.ts
+++ b/specification/security/get_user_profile/Request.ts
@@ -21,7 +21,9 @@ import { UserProfileId } from '@security/_types/UserProfile'
 import { RequestBase } from '@_types/Base'
 
 /**
- * Retrieves a user's profile using the unique profile ID.
+ * Get a user profile.
+ *
+ * Get a user's profile using the unique profile ID.
  * @rest_spec_name security.get_user_profile
  * @availability stack since=8.2.0 stability=stable
  * @availability serverless stability=stable visibility=private
diff --git a/specification/security/grant_api_key/SecurityGrantApiKeyRequest.ts b/specification/security/grant_api_key/SecurityGrantApiKeyRequest.ts
index 60690cc003..30e7478208 100644
--- a/specification/security/grant_api_key/SecurityGrantApiKeyRequest.ts
+++ b/specification/security/grant_api_key/SecurityGrantApiKeyRequest.ts
@@ -22,8 +22,10 @@ import { Password, Username } from '@_types/common'
 import { ApiKeyGrantType, GrantApiKey } from './types'
 
 /**
- * Creates an API key on behalf of another user.
- * This API is similar to Create API keys, however it creates the API key for a user that is different than the user that runs the API.
+ * Grant an API key.
+ *
+ * Create an API key on behalf of another user.
+ * This API is similar to the create API keys API, however it creates the API key for a user that is different than the user that runs the API.
  * The caller must have authentication credentials (either an access token, or a username and password) for the user on whose behalf the API key will be created.
  * It is not possible to use this API to create an API key without that user’s credentials.
  * The user, for whom the authentication credentials is provided, can optionally "run as" (impersonate) another user.
diff --git a/specification/security/has_privileges/SecurityHasPrivilegesRequest.ts b/specification/security/has_privileges/SecurityHasPrivilegesRequest.ts
index ee25210b71..560746e548 100644
--- a/specification/security/has_privileges/SecurityHasPrivilegesRequest.ts
+++ b/specification/security/has_privileges/SecurityHasPrivilegesRequest.ts
@@ -24,10 +24,12 @@ import { ApplicationPrivilegesCheck, IndexPrivilegesCheck } from './types'
 
 /**
  * Check user privileges.
- * Determines whether the specified user has a specified list of privileges.
+ *
+ * Determine whether the specified user has a specified list of privileges.
  * @rest_spec_name security.has_privileges
  * @availability stack since=6.4.0 stability=stable
  * @availability serverless stability=stable visibility=public
+ * @ext_doc_id security-privileges
  */
 export interface Request extends RequestBase {
   path_parts: {
diff --git a/specification/security/has_privileges_user_profile/Request.ts b/specification/security/has_privileges_user_profile/Request.ts
index d8487d4c1c..7f6a6d4eaf 100644
--- a/specification/security/has_privileges_user_profile/Request.ts
+++ b/specification/security/has_privileges_user_profile/Request.ts
@@ -22,10 +22,14 @@ import { RequestBase } from '@_types/Base'
 import { PrivilegesCheck } from './types'
 
 /**
+ * Check user profile privileges.
+ *
+ * Determine whether the users associated with the specified user profile IDs have all the requested privileges.
  * @rest_spec_name security.has_privileges_user_profile
  * @availability stack since=8.3.0 stability=stable
  * @availability serverless stability=stable visibility=private
  * @cluster_privileges manage_user_profile
+ * @ext_doc_id user-profile
  */
 export interface Request extends RequestBase {
   body: {
diff --git a/specification/security/invalidate_api_key/SecurityInvalidateApiKeyRequest.ts b/specification/security/invalidate_api_key/SecurityInvalidateApiKeyRequest.ts
index 438ce35765..96c1f01c20 100644
--- a/specification/security/invalidate_api_key/SecurityInvalidateApiKeyRequest.ts
+++ b/specification/security/invalidate_api_key/SecurityInvalidateApiKeyRequest.ts
@@ -22,13 +22,15 @@ import { Id, Name, Username } from '@_types/common'
 
 /**
  * Invalidate API keys.
- * Invalidates one or more API keys.
+ *
+ * This API invalidates API keys created by the create API key or grant API key APIs.
+ * Invalidated API keys fail authentication, but they can still be viewed using the get API key information and query API key information APIs, for at least the configured retention period, until they are automatically deleted.
  * The `manage_api_key` privilege allows deleting any API keys.
  * The `manage_own_api_key` only allows deleting API keys that are owned by the user.
  * In addition, with the `manage_own_api_key` privilege, an invalidation request must be issued in one of the three formats:
  * - Set the parameter `owner=true`.
  * - Or, set both `username` and `realm_name` to match the user’s identity.
- * - Or, if the request is issued by an API key, i.e. an API key invalidates itself, specify its ID in the `ids` field.
+ * - Or, if the request is issued by an API key, that is to say an API key invalidates itself, specify its ID in the `ids` field.
  * @rest_spec_name security.invalidate_api_key
  * @availability stack since=6.7.0 stability=stable
  * @availability serverless stability=stable visibility=public
diff --git a/specification/security/invalidate_token/SecurityInvalidateTokenRequest.ts b/specification/security/invalidate_token/SecurityInvalidateTokenRequest.ts
index 0a7f71ef03..0e1ef59e2a 100644
--- a/specification/security/invalidate_token/SecurityInvalidateTokenRequest.ts
+++ b/specification/security/invalidate_token/SecurityInvalidateTokenRequest.ts
@@ -21,6 +21,14 @@ import { RequestBase } from '@_types/Base'
 import { Name, Username } from '@_types/common'
 
 /**
+ * Invalidate a token.
+ *
+ * The access tokens returned by the get token API have a finite period of time for which they are valid.
+ * After that time period, they can no longer be used.
+ * The time period is defined by the `xpack.security.authc.token.timeout` setting.
+ *
+ * The refresh tokens returned by the get token API are only valid for 24 hours. They can also be used exactly once.
+ * If you want to invalidate one or more access or refresh tokens immediately, use this invalidate token API.
  * @rest_spec_name security.invalidate_token
  * @availability stack since=5.5.0 stability=stable
  * @availability serverless stability=stable visibility=private
diff --git a/specification/security/put_privileges/SecurityPutPrivilegesRequest.ts b/specification/security/put_privileges/SecurityPutPrivilegesRequest.ts
index ea5414d537..90c7694e46 100644
--- a/specification/security/put_privileges/SecurityPutPrivilegesRequest.ts
+++ b/specification/security/put_privileges/SecurityPutPrivilegesRequest.ts
@@ -23,10 +23,11 @@ import { Refresh } from '@_types/common'
 import { Actions } from './types'
 
 /**
+ * Create or update application privileges.
  * @rest_spec_name security.put_privileges
  * @availability stack since=6.4.0 stability=stable
  * @availability serverless stability=stable visibility=private
- *
+ * @ext_doc_id security-privileges
  */
 export interface Request extends RequestBase {
   query_parameters: {
diff --git a/specification/security/put_role/SecurityPutRoleRequest.ts b/specification/security/put_role/SecurityPutRoleRequest.ts
index af4e3d723b..3aa4f673e8 100644
--- a/specification/security/put_role/SecurityPutRoleRequest.ts
+++ b/specification/security/put_role/SecurityPutRoleRequest.ts
@@ -20,7 +20,8 @@
 import {
   ApplicationPrivileges,
   ClusterPrivilege,
-  IndicesPrivileges
+  IndicesPrivileges,
+  RemoteIndicesPrivileges
 } from '@security/_types/Privileges'
 import { Dictionary } from '@spec_utils/Dictionary'
 import { UserDefinedValue } from '@spec_utils/UserDefinedValue'
@@ -28,12 +29,16 @@ import { RequestBase } from '@_types/Base'
 import { Metadata, Name, Refresh } from '@_types/common'
 
 /**
- * The role management APIs are generally the preferred way to manage roles, rather than using file-based role management.
+ * Create or update roles.
+ *
+ * The role management APIs are generally the preferred way to manage roles in the native realm, rather than using file-based role management.
  * The create or update roles API cannot update roles that are defined in roles files.
+ * File-based role management is not available in Elastic Serverless.
  * @rest_spec_name security.put_role
  * @availability stack stability=stable
  * @availability serverless stability=stable visibility=private
  * @cluster_privileges manage_security
+ * @ext_doc_id defining-roles
  */
 export interface Request extends RequestBase {
   path_parts: {
@@ -63,6 +68,12 @@ export interface Request extends RequestBase {
      * A list of indices permissions entries.
      */
     indices?: IndicesPrivileges[]
+    /**
+     * A list of remote indices permissions entries.
+     * @availability stack since=8.14.0
+     *
+     */
+    remote_indices?: RemoteIndicesPrivileges[]
     /**
      * Optional metadata. Within the metadata object, keys that begin with an underscore (`_`) are reserved for system use.
      */
diff --git a/specification/security/put_role_mapping/SecurityPutRoleMappingRequest.ts b/specification/security/put_role_mapping/SecurityPutRoleMappingRequest.ts
index 2ad9aba1e1..4061546c0e 100644
--- a/specification/security/put_role_mapping/SecurityPutRoleMappingRequest.ts
+++ b/specification/security/put_role_mapping/SecurityPutRoleMappingRequest.ts
@@ -23,9 +23,18 @@ import { RequestBase } from '@_types/Base'
 import { Metadata, Name, Refresh } from '@_types/common'
 
 /**
+ * Create or update role mappings.
+ *
+ * Role mappings define which roles are assigned to each user.
+ * Each mapping has rules that identify users and a list of roles that are granted to those users.
+ * The role mapping APIs are generally the preferred way to manage role mappings rather than using role mapping files. The create or update role mappings API cannot update role mappings that are defined in role mapping files.
+ *
+ * This API does not create roles. Rather, it maps users to existing roles.
+ * Roles can be created by using the create or update roles API or roles files.
  * @rest_spec_name security.put_role_mapping
  * @availability stack since=5.5.0 stability=stable
  * @availability serverless stability=stable visibility=private
+ * @ext_doc_id mapping-roles
  */
 export interface Request extends RequestBase {
   path_parts: {
diff --git a/specification/security/put_user/SecurityPutUserRequest.ts b/specification/security/put_user/SecurityPutUserRequest.ts
index ada08b3c16..7e366a6983 100644
--- a/specification/security/put_user/SecurityPutUserRequest.ts
+++ b/specification/security/put_user/SecurityPutUserRequest.ts
@@ -21,6 +21,10 @@ import { RequestBase } from '@_types/Base'
 import { Metadata, Password, Refresh, Username } from '@_types/common'
 
 /**
+ * Create or update users.
+ *
+ * A password is required for adding a new user but is optional when updating an existing user.
+ * To change a user’s password without updating any other fields, use the change password API.
  * @rest_spec_name security.put_user
  * @availability stack stability=stable
  */
diff --git a/specification/security/query_api_keys/QueryApiKeysRequest.ts b/specification/security/query_api_keys/QueryApiKeysRequest.ts
index 74ffb932be..363182881a 100644
--- a/specification/security/query_api_keys/QueryApiKeysRequest.ts
+++ b/specification/security/query_api_keys/QueryApiKeysRequest.ts
@@ -24,8 +24,9 @@ import { Sort, SortResults } from '@_types/sort'
 import { ApiKeyAggregationContainer, ApiKeyQueryContainer } from './types'
 
 /**
- * Query API keys.
- * Retrieves a paginated list of API keys and their information. You can optionally filter the results with a query.
+ * Find API keys with a query.
+ *
+ * Get a paginated list of API keys and their information. You can optionally filter the results with a query.
  * @rest_spec_name security.query_api_keys
  * @availability stack since=7.15.0 stability=stable
  * @availability serverless stability=stable visibility=public
diff --git a/specification/security/query_role/QueryRolesRequest.ts b/specification/security/query_role/QueryRolesRequest.ts
index 63fce15d68..9d0a93dde6 100644
--- a/specification/security/query_role/QueryRolesRequest.ts
+++ b/specification/security/query_role/QueryRolesRequest.ts
@@ -23,7 +23,9 @@ import { Sort, SortResults } from '@_types/sort'
 import { RoleQueryContainer } from './types'
 
 /**
- * Retrieves roles in a paginated manner. You can optionally filter the results with a query.
+ * Find roles with a query.
+ *
+ * Get roles in a paginated manner. You can optionally filter the results with a query.
  * @rest_spec_name security.query_role
  * @availability stack since=8.15.0 stability=stable
  * @availability serverless stability=stable visibility=private
diff --git a/specification/security/query_user/SecurityQueryUserRequest.ts b/specification/security/query_user/SecurityQueryUserRequest.ts
index e48823cdf3..e567ed96a4 100644
--- a/specification/security/query_user/SecurityQueryUserRequest.ts
+++ b/specification/security/query_user/SecurityQueryUserRequest.ts
@@ -23,7 +23,10 @@ import { Sort, SortResults } from '@_types/sort'
 import { UserQueryContainer } from './types'
 
 /**
- * Retrieves information for Users in a paginated manner. You can optionally filter the results with a query.
+ * Find users with a query.
+ *
+ * Get information for users in a paginated manner.
+ * You can optionally filter the results with a query.
  * @rest_spec_name security.query_user
  * @availability stack since=8.14.0 stability=stable
  * @availability serverless stability=stable visibility=private
diff --git a/specification/security/saml_authenticate/Request.ts b/specification/security/saml_authenticate/Request.ts
index 301cc098f5..f3361e17e1 100644
--- a/specification/security/saml_authenticate/Request.ts
+++ b/specification/security/saml_authenticate/Request.ts
@@ -21,7 +21,9 @@ import { RequestBase } from '@_types/Base'
 import { Ids } from '@_types/common'
 
 /**
- * Submits a SAML Response message to Elasticsearch for consumption.
+ * Authenticate SAML.
+ *
+ * Submits a SAML response message to Elasticsearch for consumption.
  * @rest_spec_name security.saml_authenticate
  * @availability stack since=7.5.0 stability=stable
  * @availability serverless stability=stable visibility=private
diff --git a/specification/security/saml_complete_logout/Request.ts b/specification/security/saml_complete_logout/Request.ts
index a5cbedec3a..f85e46086a 100644
--- a/specification/security/saml_complete_logout/Request.ts
+++ b/specification/security/saml_complete_logout/Request.ts
@@ -21,6 +21,8 @@ import { RequestBase } from '@_types/Base'
 import { Ids } from '@_types/common'
 
 /**
+ * Logout of SAML completely.
+ *
  * Verifies the logout response sent from the SAML IdP.
  * @rest_spec_name security.saml_complete_logout
  * @availability stack since=7.14.0 stability=stable
diff --git a/specification/security/saml_invalidate/Request.ts b/specification/security/saml_invalidate/Request.ts
index f0fab7cd44..687efc679c 100644
--- a/specification/security/saml_invalidate/Request.ts
+++ b/specification/security/saml_invalidate/Request.ts
@@ -20,6 +20,8 @@
 import { RequestBase } from '@_types/Base'
 
 /**
+ * Invalidate SAML.
+ *
  * Submits a SAML LogoutRequest message to Elasticsearch for consumption.
  * @rest_spec_name security.saml_invalidate
  * @availability stack since=7.5.0 stability=stable
diff --git a/specification/security/saml_logout/Request.ts b/specification/security/saml_logout/Request.ts
index dbd8473658..672f43f422 100644
--- a/specification/security/saml_logout/Request.ts
+++ b/specification/security/saml_logout/Request.ts
@@ -20,6 +20,8 @@
 import { RequestBase } from '@_types/Base'
 
 /**
+ * Logout of SAML.
+ *
  * Submits a request to invalidate an access token and refresh token.
  * @rest_spec_name security.saml_logout
  * @availability stack since=7.5.0 stability=stable
diff --git a/specification/security/saml_prepare_authentication/Request.ts b/specification/security/saml_prepare_authentication/Request.ts
index 604090cd1a..994cf0b915 100644
--- a/specification/security/saml_prepare_authentication/Request.ts
+++ b/specification/security/saml_prepare_authentication/Request.ts
@@ -20,7 +20,9 @@
 import { RequestBase } from '@_types/Base'
 
 /**
- * Creates a SAML authentication request (<AuthnRequest>) as a URL string, based on the configuration of the respective SAML realm in Elasticsearch.
+ * Prepare SAML authentication.
+ *
+ * Creates a SAML authentication request (`<AuthnRequest>`) as a URL string, based on the configuration of the respective SAML realm in Elasticsearch.
  * @rest_spec_name security.saml_prepare_authentication
  * @availability stack since=7.5.0 stability=stable
  * @availability serverless stability=stable visibility=private
diff --git a/specification/security/saml_service_provider_metadata/Request.ts b/specification/security/saml_service_provider_metadata/Request.ts
index 50deb7df67..3f285b066e 100644
--- a/specification/security/saml_service_provider_metadata/Request.ts
+++ b/specification/security/saml_service_provider_metadata/Request.ts
@@ -21,6 +21,8 @@ import { RequestBase } from '@_types/Base'
 import { Name } from '@_types/common'
 
 /**
+ * Create SAML service provider metadata.
+ *
  * Generate SAML metadata for a SAML 2.0 Service Provider.
  * @rest_spec_name security.saml_service_provider_metadata
  * @availability stack since=7.11.0 stability=stable
diff --git a/specification/security/suggest_user_profiles/Request.ts b/specification/security/suggest_user_profiles/Request.ts
index daa720a5b2..29cf4d6daf 100644
--- a/specification/security/suggest_user_profiles/Request.ts
+++ b/specification/security/suggest_user_profiles/Request.ts
@@ -22,6 +22,8 @@ import { long } from '@_types/Numeric'
 import { Hint } from './types'
 
 /**
+ * Suggest a user profile.
+ *
  * Get suggestions for user profiles that match specified search criteria.
  * @rest_spec_name security.suggest_user_profiles
  * @availability stack since=8.2.0 stability=stable
diff --git a/specification/security/update_api_key/Request.ts b/specification/security/update_api_key/Request.ts
index 117424c44f..790d25c1ea 100644
--- a/specification/security/update_api_key/Request.ts
+++ b/specification/security/update_api_key/Request.ts
@@ -25,6 +25,7 @@ import { Duration } from '@_types/Time'
 
 /**
  * Update an API key.
+ *
  * Updates attributes of an existing API key.
  * Users can only update API keys that they created or that were granted to them.
  * Use this API to update API keys created by the create API Key or grant API Key APIs.
diff --git a/specification/security/update_cross_cluster_api_key/UpdateCrossClusterApiKeyRequest.ts b/specification/security/update_cross_cluster_api_key/UpdateCrossClusterApiKeyRequest.ts
new file mode 100644
index 0000000000..4cadb5f200
--- /dev/null
+++ b/specification/security/update_cross_cluster_api_key/UpdateCrossClusterApiKeyRequest.ts
@@ -0,0 +1,61 @@
+/*
+ * Licensed to Elasticsearch B.V. under one or more contributor
+ * license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright
+ * ownership. Elasticsearch B.V. licenses this file to you under
+ * the Apache License, Version 2.0 (the "License"); you may
+ * not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *    http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+import { Access } from '@security/_types/Access'
+import { RequestBase } from '@_types/Base'
+import { Id, Metadata } from '@_types/common'
+import { Duration } from '@_types/Time'
+
+/**
+ * Update a cross-cluster API key.
+ *
+ * Update the attributes of an existing cross-cluster API key, which is used for API key based remote cluster access.
+ * @rest_spec_name security.update_cross_cluster_api_key
+ * @availability stack stability=stable
+ * @ext_doc_id remote-clusters-api-key
+ */
+export interface Request extends RequestBase {
+  path_parts: {
+    /**
+     * The ID of the cross-cluster API key to update.
+     */
+    id: Id
+  }
+  body: {
+    /**
+     * The access to be granted to this API key.
+     * The access is composed of permissions for cross cluster search and cross cluster replication.
+     * At least one of them must be specified.
+     * When specified, the new access assignment fully replaces the previously assigned access.
+     */
+    access: Access
+    /**
+     * Expiration time for the API key.
+     * By default, API keys never expire. This property can be omitted to leave the value unchanged.
+     */
+    expiration?: Duration
+    /**
+     * Arbitrary metadata that you want to associate with the API key.
+     * It supports nested data structure.
+     * Within the metadata object, keys beginning with `_` are reserved for system usage.
+     * When specified, this information fully replaces metadata previously associated with the API key.
+     */
+    metadata?: Metadata
+  }
+}
diff --git a/specification/security/update_cross_cluster_api_key/UpdateCrossClusterApiKeyResponse.ts b/specification/security/update_cross_cluster_api_key/UpdateCrossClusterApiKeyResponse.ts
new file mode 100644
index 0000000000..4fd7257fa5
--- /dev/null
+++ b/specification/security/update_cross_cluster_api_key/UpdateCrossClusterApiKeyResponse.ts
@@ -0,0 +1,28 @@
+/*
+ * Licensed to Elasticsearch B.V. under one or more contributor
+ * license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright
+ * ownership. Elasticsearch B.V. licenses this file to you under
+ * the Apache License, Version 2.0 (the "License"); you may
+ * not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *    http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+export class Response {
+  body: {
+    /**
+     * If `true`, the API key was updated.
+     * If `false`, the API key didn’t change because no change was detected.
+     */
+    updated: boolean
+  }
+}
diff --git a/specification/security/update_user_profile_data/Request.ts b/specification/security/update_user_profile_data/Request.ts
index ef6d3d83bb..cd03ee460b 100644
--- a/specification/security/update_user_profile_data/Request.ts
+++ b/specification/security/update_user_profile_data/Request.ts
@@ -25,7 +25,9 @@ import { Refresh, SequenceNumber } from '@_types/common'
 import { long } from '@_types/Numeric'
 
 /**
- * Updates specific data for the user profile that's associated with the specified unique ID.
+ * Update user profile data.
+ *
+ * Update specific data for the user profile that is associated with a unique ID.
  * @rest_spec_name security.update_user_profile_data
  * @availability stack since=8.2.0 stability=stable
  * @availability serverless stability=stable visibility=private
diff --git a/specification/snapshot/_types/SnapshotShardFailure.ts b/specification/snapshot/_types/SnapshotShardFailure.ts
index 937d40f47b..7ff44344a2 100644
--- a/specification/snapshot/_types/SnapshotShardFailure.ts
+++ b/specification/snapshot/_types/SnapshotShardFailure.ts
@@ -24,5 +24,6 @@ export class SnapshotShardFailure {
   node_id?: Id
   reason: string
   shard_id: Id
+  index_uuid: Id
   status: string
 }
diff --git a/specification/snapshot/repository_verify_integrity/SnapshotRepositoryVerifyIntegrityRequest.ts b/specification/snapshot/repository_verify_integrity/SnapshotRepositoryVerifyIntegrityRequest.ts
new file mode 100644
index 0000000000..2c77b1476a
--- /dev/null
+++ b/specification/snapshot/repository_verify_integrity/SnapshotRepositoryVerifyIntegrityRequest.ts
@@ -0,0 +1,43 @@
+/*
+ * Licensed to Elasticsearch B.V. under one or more contributor
+ * license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright
+ * ownership. Elasticsearch B.V. licenses this file to you under
+ * the Apache License, Version 2.0 (the "License"); you may
+ * not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *    http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+import { RequestBase } from '@_types/Base'
+import { Names } from '@_types/common'
+import { integer } from '@_types/Numeric'
+
+/**
+ * @rest_spec_name snapshot.repository_verify_integrity
+ * @availability stack since=8.16.0 stability=experimental visibility=private
+ */
+export interface Request extends RequestBase {
+  path_parts: {
+    /** @codegen_name name */
+    repository: Names
+  }
+  query_parameters: {
+    meta_thread_pool_concurrency?: integer
+    blob_thread_pool_concurrency?: integer
+    snapshot_verification_concurrency?: integer
+    index_verification_concurrency?: integer
+    index_snapshot_verification_concurrency?: integer
+    max_failed_shard_snapshots?: integer
+    verify_blob_contents?: boolean
+    max_bytes_per_sec?: string
+  }
+}
diff --git a/specification/snapshot/repository_verify_integrity/SnapshotRepositoryVerifyIntegrityResponse.ts b/specification/snapshot/repository_verify_integrity/SnapshotRepositoryVerifyIntegrityResponse.ts
new file mode 100644
index 0000000000..f4ed729ed2
--- /dev/null
+++ b/specification/snapshot/repository_verify_integrity/SnapshotRepositoryVerifyIntegrityResponse.ts
@@ -0,0 +1,24 @@
+/*
+ * Licensed to Elasticsearch B.V. under one or more contributor
+ * license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright
+ * ownership. Elasticsearch B.V. licenses this file to you under
+ * the Apache License, Version 2.0 (the "License"); you may
+ * not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *    http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+import { UserDefinedValue } from '@spec_utils/UserDefinedValue'
+
+export class Response {
+  body: UserDefinedValue
+}
diff --git a/specification/snapshot/restore/SnapshotRestoreResponse.ts b/specification/snapshot/restore/SnapshotRestoreResponse.ts
index 428036df10..bf88f771c2 100644
--- a/specification/snapshot/restore/SnapshotRestoreResponse.ts
+++ b/specification/snapshot/restore/SnapshotRestoreResponse.ts
@@ -21,7 +21,10 @@ import { IndexName } from '@_types/common'
 import { ShardStatistics } from '@_types/Stats'
 
 export class Response {
-  body: { snapshot: SnapshotRestore }
+  body: {
+    accepted?: boolean
+    snapshot?: SnapshotRestore
+  }
 }
 
 export class SnapshotRestore {
diff --git a/specification/sql/clear_cursor/ClearSqlCursorRequest.ts b/specification/sql/clear_cursor/ClearSqlCursorRequest.ts
index 08ac50c85d..1961b1a53d 100644
--- a/specification/sql/clear_cursor/ClearSqlCursorRequest.ts
+++ b/specification/sql/clear_cursor/ClearSqlCursorRequest.ts
@@ -20,6 +20,7 @@
 import { RequestBase } from '@_types/Base'
 
 /**
+ * Clear an SQL search cursor.
  * @rest_spec_name sql.clear_cursor
  * @availability stack since=6.3.0 stability=stable
  * @availability serverless stability=stable visibility=public
diff --git a/specification/sql/delete_async/SqlDeleteAsyncRequest.ts b/specification/sql/delete_async/SqlDeleteAsyncRequest.ts
index ad71d9e959..b4ef516e60 100644
--- a/specification/sql/delete_async/SqlDeleteAsyncRequest.ts
+++ b/specification/sql/delete_async/SqlDeleteAsyncRequest.ts
@@ -21,6 +21,9 @@ import { RequestBase } from '@_types/Base'
 import { Id } from '@_types/common'
 
 /**
+ * Delete an async SQL search.
+ * Delete an async SQL search or a stored synchronous SQL search.
+ * If the search is still running, the API cancels it.
  * @rest_spec_name sql.delete_async
  * @availability stack since=7.15.0 stability=stable
  * @availability serverless stability=stable visibility=public
diff --git a/specification/sql/get_async/SqlGetAsyncRequest.ts b/specification/sql/get_async/SqlGetAsyncRequest.ts
index e4f0d12baf..4159eba4ed 100644
--- a/specification/sql/get_async/SqlGetAsyncRequest.ts
+++ b/specification/sql/get_async/SqlGetAsyncRequest.ts
@@ -22,6 +22,8 @@ import { Id } from '@_types/common'
 import { Duration } from '@_types/Time'
 
 /**
+ * Get async SQL search results.
+ * Get the current status and available results for an async SQL search or stored synchronous SQL search.
  * @rest_spec_name sql.get_async
  * @availability stack since=7.15.0 stability=stable
  * @availability serverless stability=stable visibility=public
diff --git a/specification/sql/get_async_status/SqlGetAsyncStatusRequest.ts b/specification/sql/get_async_status/SqlGetAsyncStatusRequest.ts
index a66076b6d7..ed6be9c7cc 100644
--- a/specification/sql/get_async_status/SqlGetAsyncStatusRequest.ts
+++ b/specification/sql/get_async_status/SqlGetAsyncStatusRequest.ts
@@ -21,6 +21,8 @@ import { RequestBase } from '@_types/Base'
 import { Id } from '@_types/common'
 
 /**
+ * Get the async SQL search status.
+ * Get the current status of an async SQL search or a stored synchronous SQL search.
  * @rest_spec_name sql.get_async_status
  * @availability stack since=7.15.0 stability=stable
  * @availability serverless stability=stable visibility=public
diff --git a/specification/sql/query/QuerySqlRequest.ts b/specification/sql/query/QuerySqlRequest.ts
index 200fe0c8e4..11625631d9 100644
--- a/specification/sql/query/QuerySqlRequest.ts
+++ b/specification/sql/query/QuerySqlRequest.ts
@@ -26,6 +26,8 @@ import { QueryContainer } from '@_types/query_dsl/abstractions'
 import { Duration, TimeZone } from '@_types/Time'
 
 /**
+ * Get SQL search results.
+ * Run an SQL request.
  * @rest_spec_name sql.query
  * @availability stack since=6.3.0 stability=stable
  * @availability serverless stability=stable visibility=public
@@ -36,7 +38,7 @@ export interface Request extends RequestBase {
      * Format for the response.
      * @doc_id sql-rest-format
      */
-    format?: string
+    format?: SqlFormat
   }
   body: {
     /**
@@ -120,3 +122,13 @@ export interface Request extends RequestBase {
     index_using_frozen?: boolean
   }
 }
+
+export enum SqlFormat {
+  csv,
+  json,
+  tsv,
+  txt,
+  yaml,
+  cbor,
+  smile
+}
diff --git a/specification/sql/translate/TranslateSqlRequest.ts b/specification/sql/translate/TranslateSqlRequest.ts
index ead27ce70b..418c8a2426 100644
--- a/specification/sql/translate/TranslateSqlRequest.ts
+++ b/specification/sql/translate/TranslateSqlRequest.ts
@@ -23,6 +23,8 @@ import { QueryContainer } from '@_types/query_dsl/abstractions'
 import { TimeZone } from '@_types/Time'
 
 /**
+ * Translate SQL into Elasticsearch queries.
+ * Translate an SQL search into a search API request containing Query DSL.
  * @rest_spec_name sql.translate
  * @availability stack since=6.3.0 stability=stable
  * @availability serverless stability=stable visibility=public
diff --git a/specification/ssl/certificates/GetCertificatesRequest.ts b/specification/ssl/certificates/GetCertificatesRequest.ts
index 68d1cfd311..f3bf4898c7 100644
--- a/specification/ssl/certificates/GetCertificatesRequest.ts
+++ b/specification/ssl/certificates/GetCertificatesRequest.ts
@@ -20,8 +20,26 @@
 import { RequestBase } from '@_types/Base'
 
 /**
+ * Get SSL certificates.
+ *
+ * Get information about the X.509 certificates that are used to encrypt communications in the cluster.
+ * The API returns a list that includes certificates from all TLS contexts including:
+ *
+ * - Settings for transport and HTTP interfaces
+ * - TLS settings that are used within authentication realms
+ * - TLS settings for remote monitoring exporters
+ *
+ * The list includes certificates that are used for configuring trust, such as those configured in the `xpack.security.transport.ssl.truststore` and `xpack.security.transport.ssl.certificate_authorities` settings.
+ * It also includes certificates that are used for configuring server identity, such as `xpack.security.http.ssl.keystore` and `xpack.security.http.ssl.certificate settings`.
+ *
+ * The list does not include certificates that are sourced from the default SSL context of the Java Runtime Environment (JRE), even if those certificates are in use within Elasticsearch.
+ *
+ * NOTE: When a PKCS#11 token is configured as the truststore of the JRE, the API returns all the certificates that are included in the PKCS#11 token irrespective of whether these are used in the Elasticsearch TLS configuration.
+ *
+ * If Elasticsearch is configured to use a keystore or truststore, the API output includes all certificates in that store, even though some of the certificates might not be in active use within the cluster.
  * @rest_spec_name ssl.certificates
  * @availability stack since=6.2.0 stability=stable
  * @availability serverless stability=stable visibility=private
+ * @doc_tag security
  */
 export interface Request extends RequestBase {}
diff --git a/specification/synonyms/delete_synonym/SynonymsDeleteRequest.ts b/specification/synonyms/delete_synonym/SynonymsDeleteRequest.ts
index 6e6aeeb3ad..ad6e0b7595 100644
--- a/specification/synonyms/delete_synonym/SynonymsDeleteRequest.ts
+++ b/specification/synonyms/delete_synonym/SynonymsDeleteRequest.ts
@@ -20,7 +20,7 @@ import { RequestBase } from '@_types/Base'
 import { Id } from '@_types/common'
 
 /**
- * Deletes a synonym set
+ * Delete a synonym set.
  * @rest_spec_name synonyms.delete_synonym
  * @availability stack since=8.10.0 stability=stable
  * @availability serverless stability=stable visibility=public
diff --git a/specification/synonyms/delete_synonym_rule/SynonymRuleDeleteRequest.ts b/specification/synonyms/delete_synonym_rule/SynonymRuleDeleteRequest.ts
index ec2af20641..4c095ad1f0 100644
--- a/specification/synonyms/delete_synonym_rule/SynonymRuleDeleteRequest.ts
+++ b/specification/synonyms/delete_synonym_rule/SynonymRuleDeleteRequest.ts
@@ -20,7 +20,8 @@ import { RequestBase } from '@_types/Base'
 import { Id } from '@_types/common'
 
 /**
- * Deletes a synonym rule in a synonym set
+ * Delete a synonym rule.
+ * Delete a synonym rule from a synonym set.
  * @rest_spec_name synonyms.delete_synonym_rule
  * @availability stack since=8.10.0 stability=stable
  * @availability serverless stability=stable visibility=public
diff --git a/specification/synonyms/get_synonym/SynonymsGetRequest.ts b/specification/synonyms/get_synonym/SynonymsGetRequest.ts
index 10490a7b04..277ca732b9 100644
--- a/specification/synonyms/get_synonym/SynonymsGetRequest.ts
+++ b/specification/synonyms/get_synonym/SynonymsGetRequest.ts
@@ -21,7 +21,7 @@ import { Id } from '@_types/common'
 import { integer } from '@_types/Numeric'
 
 /**
- * Retrieves a synonym set
+ * Get a synonym set.
  * @rest_spec_name synonyms.get_synonym
  * @availability stack since=8.10.0 stability=stable
  * @availability serverless stability=stable visibility=public
diff --git a/specification/synonyms/get_synonym_rule/SynonymRuleGetRequest.ts b/specification/synonyms/get_synonym_rule/SynonymRuleGetRequest.ts
index 5f2116dc59..aaabd51d60 100644
--- a/specification/synonyms/get_synonym_rule/SynonymRuleGetRequest.ts
+++ b/specification/synonyms/get_synonym_rule/SynonymRuleGetRequest.ts
@@ -20,7 +20,8 @@ import { RequestBase } from '@_types/Base'
 import { Id } from '@_types/common'
 
 /**
- * Retrieves a synonym rule from a synonym set
+ * Get a synonym rule.
+ * Get a synonym rule from a synonym set.
  * @rest_spec_name synonyms.get_synonym_rule
  * @availability stack since=8.10.0 stability=stable
  * @availability serverless stability=stable visibility=public
diff --git a/specification/synonyms/get_synonyms_sets/SynonymsSetsGetRequest.ts b/specification/synonyms/get_synonyms_sets/SynonymsSetsGetRequest.ts
index 49a7e518b3..68dccb4ff5 100644
--- a/specification/synonyms/get_synonyms_sets/SynonymsSetsGetRequest.ts
+++ b/specification/synonyms/get_synonyms_sets/SynonymsSetsGetRequest.ts
@@ -20,7 +20,8 @@ import { RequestBase } from '@_types/Base'
 import { integer } from '@_types/Numeric'
 
 /**
- * Retrieves a summary of all defined synonym sets
+ * Get all synonym sets.
+ * Get a summary of all defined synonym sets.
  * @rest_spec_name synonyms.get_synonyms_sets
  * @availability stack since=8.10.0 stability=stable
  * @availability serverless stability=stable visibility=public
diff --git a/specification/synonyms/put_synonym/SynonymsPutRequest.ts b/specification/synonyms/put_synonym/SynonymsPutRequest.ts
index c49bb096bd..73c8b2eaea 100644
--- a/specification/synonyms/put_synonym/SynonymsPutRequest.ts
+++ b/specification/synonyms/put_synonym/SynonymsPutRequest.ts
@@ -21,7 +21,9 @@ import { Id } from '@_types/common'
 import { SynonymRule } from '../_types/SynonymRule'
 
 /**
- * Creates or updates a synonym set.
+ * Create or update a synonym set.
+ * Synonyms sets are limited to a maximum of 10,000 synonym rules per set.
+ * If you need to manage more synonym rules, you can create multiple synonym sets.
  * @rest_spec_name synonyms.put_synonym
  * @availability stack since=8.10.0 stability=stable
  * @availability serverless stability=stable visibility=public
diff --git a/specification/synonyms/put_synonym_rule/SynonymRulePutRequest.ts b/specification/synonyms/put_synonym_rule/SynonymRulePutRequest.ts
index 6da2fda220..a661580cf0 100644
--- a/specification/synonyms/put_synonym_rule/SynonymRulePutRequest.ts
+++ b/specification/synonyms/put_synonym_rule/SynonymRulePutRequest.ts
@@ -21,7 +21,8 @@ import { Id } from '@_types/common'
 import { SynonymString } from '../_types/SynonymRule'
 
 /**
- * Creates or updates a synonym rule in a synonym set
+ * Create or update a synonym rule.
+ * Create or update a synonym rule in a synonym set.
  * @rest_spec_name synonyms.put_synonym_rule
  * @availability stack since=8.10.0 stability=stable
  * @availability serverless stability=stable visibility=public
diff --git a/specification/tasks/get/getTasksResponseExample1.json b/specification/tasks/get/getTasksResponseExample1.json
new file mode 100644
index 0000000000..437bf2ab50
--- /dev/null
+++ b/specification/tasks/get/getTasksResponseExample1.json
@@ -0,0 +1,7 @@
+{
+  "summary": "A successful response when requesting information about the tasks currently executing in the cluster.",
+  "description": "",
+  "type": "response",
+  "response_code": "",
+  "value": "{\n  \"nodes\" : {\n    \"oTUltX4IQMOUUVeiohTt8A\" : {\n      \"name\" : \"H5dfFeA\",\n      \"transport_address\" : \"127.0.0.1:9300\",\n      \"host\" : \"127.0.0.1\",\n      \"ip\" : \"127.0.0.1:9300\",\n      \"tasks\" : {\n        \"oTUltX4IQMOUUVeiohTt8A:124\" : {\n          \"node\" : \"oTUltX4IQMOUUVeiohTt8A\",\n          \"id\" : 124,\n          \"type\" : \"direct\",\n          \"action\" : \"cluster:monitor/tasks/lists[n]\",\n          \"start_time_in_millis\" : 1458585884904,\n          \"running_time_in_nanos\" : 47402,\n          \"cancellable\" : false,\n          \"parent_task_id\" : \"oTUltX4IQMOUUVeiohTt8A:123\"\n        },\n        \"oTUltX4IQMOUUVeiohTt8A:123\" : {\n          \"node\" : \"oTUltX4IQMOUUVeiohTt8A\",\n          \"id\" : 123,\n          \"type\" : \"transport\",\n          \"action\" : \"cluster:monitor/tasks/lists\",\n          \"start_time_in_millis\" : 1458585884904,\n          \"running_time_in_nanos\" : 236042,\n          \"cancellable\" : false\n        }\n      }\n    }\n  }\n}"
+}
diff --git a/specification/tasks/list/ListTasksRequest.ts b/specification/tasks/list/ListTasksRequest.ts
index c829cb4a2e..00ba85ef35 100644
--- a/specification/tasks/list/ListTasksRequest.ts
+++ b/specification/tasks/list/ListTasksRequest.ts
@@ -19,7 +19,7 @@
 
 import { GroupBy } from '@tasks/_types/GroupBy'
 import { RequestBase } from '@_types/Base'
-import { Id } from '@_types/common'
+import { Id, NodeIds } from '@_types/common'
 import { Duration } from '@_types/Time'
 
 /**
@@ -48,7 +48,7 @@ export interface Request extends RequestBase {
     /**
      * Comma-separated list of node IDs or names used to limit returned information.
      */
-    node_id?: string[]
+    nodes?: NodeIds
     /**
      * Parent task ID used to limit returned information. To return all tasks, omit this parameter or use a value of `-1`.
      */
diff --git a/specification/xpack/info/XPackInfoRequest.ts b/specification/xpack/info/XPackInfoRequest.ts
index 26ee1d0670..1261113b5b 100644
--- a/specification/xpack/info/XPackInfoRequest.ts
+++ b/specification/xpack/info/XPackInfoRequest.ts
@@ -31,7 +31,7 @@ export interface Request extends RequestBase {
     /**
      * A comma-separated list of the information categories to include in the response. For example, `build,license,features`.
      */
-    categories?: string[]
+    categories?: XPackCategory[]
     accept_enterprise?: boolean
     /**
      * Defines whether additional human-readable information is included in the response. In particular, it adds descriptions and a tag line.
@@ -40,3 +40,9 @@ export interface Request extends RequestBase {
     human?: boolean
   }
 }
+
+export enum XPackCategory {
+  build,
+  features,
+  license
+}
diff --git a/specification/xpack/info/types.ts b/specification/xpack/info/types.ts
index 034e5c3d6c..3375ee9f5d 100644
--- a/specification/xpack/info/types.ts
+++ b/specification/xpack/info/types.ts
@@ -43,17 +43,23 @@ export class Features {
   aggregate_metric: Feature
   analytics: Feature
   ccr: Feature
-  data_frame?: Feature
-  data_science?: Feature
   data_streams: Feature
   data_tiers: Feature
   enrich: Feature
+  /**
+   * @availability stack since=8.8.0
+   */
+  enterprise_search: Feature
   eql: Feature
-  flattened?: Feature
+  /**
+   * @availability stack since=8.14.0
+   */
+  esql: Feature
   frozen_indices: Feature
   graph: Feature
   ilm: Feature
   logstash: Feature
+  logsdb: Feature
   ml: Feature
   monitoring: Feature
   rollup: Feature
@@ -64,12 +70,14 @@ export class Features {
   spatial: Feature
   sql: Feature
   transform: Feature
-  vectors?: Feature
+  /**
+   * @availability stack since=8.7.0
+   */
+  universal_profiling: Feature
   voting_only: Feature
   watcher: Feature
   /**
    * @availability stack since=8.2.0
-   * @availability serverless
    */
   archive: Feature
 }
diff --git a/typescript-generator/src/metamodel.ts b/typescript-generator/src/metamodel.ts
index 9e73372d1c..9f01d7a956 100644
--- a/typescript-generator/src/metamodel.ts
+++ b/typescript-generator/src/metamodel.ts
@@ -126,6 +126,8 @@ export class Property {
   description?: string
   docUrl?: string
   docId?: string
+  extDocId?: string
+  extDocUrl?: string
   serverDefault?: boolean | string | number | string[] | number[]
   deprecation?: Deprecation
   availability?: Availabilities
@@ -158,6 +160,8 @@ export abstract class BaseType {
   /** Link to public documentation */
   docUrl?: string
   docId?: string
+  extDocId?: string
+  extDocUrl?: string
   deprecation?: Deprecation
   /** If this endpoint has a quirk that needs special attention, give a short explanation about it */
   esQuirk?: string
@@ -406,9 +410,11 @@ export class Endpoint {
   description: string
   docUrl: string
   docId?: string
+  extDocId?: string
+  extDocUrl?: string
   deprecation?: Deprecation
   availability: Availabilities
-
+  docTag?: string
   /**
    * If the request value is `null` it means that there is not yet a
    * request type definition for this endpoint.