Repository: elastic/elasticsearch-specification
Pull request #4018: Fix indices/ validation errors
Author: login: pquentin
Labels: name: specification
name: backport 8.19
name: backport 8.17
name: backport 8.18
name: backport 9.0
Created: 2025-03-19T06:52:41Z | Merged: 2025-03-19T10:55:39Z

The remaining `indices.put_template` error is on the rest-api-spec side.

<!--

Hello there!

Thank you for opening a pull request!
Please make sure to follow the steps below when opening a pr:

- Sign the CLA https://www.elastic.co/contributor-agreement/
- Tag the relative issue (if any) and give a brief explanation on what your changes are doing
- If you did a spec change, remember to generate again the outputs, you can do it by running `make contrib`
- Add the appropriate backport labels. If you need to backport a breaking change (e.g. changing the structure of a type or changing the type/optionality of a field), please follow these rules:
  - If the API is unusable without the change -> every supported version
  - If the API is usable, but fix is on the response side -> every supported version
  - If the API is usable, but fix is on the request side -> no backport, unless the API is _partially_ usable and the fix unlocks a missing feature that has no workaround

Happy coding!

-->



Diff:
diff --git a/output/openapi/elasticsearch-openapi.json b/output/openapi/elasticsearch-openapi.json
index a6324ca4e1..c76f88dc1f 100644
--- a/output/openapi/elasticsearch-openapi.json
+++ b/output/openapi/elasticsearch-openapi.json
@@ -12416,6 +12416,11 @@
           "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/analysis.html"
         },
         "operationId": "indices-analyze",
+        "parameters": [
+          {
+            "$ref": "#/components/parameters/indices.analyze#index_"
+          }
+        ],
         "requestBody": {
           "$ref": "#/components/requestBodies/indices.analyze"
         },
@@ -12435,6 +12440,11 @@
           "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/analysis.html"
         },
         "operationId": "indices-analyze-1",
+        "parameters": [
+          {
+            "$ref": "#/components/parameters/indices.analyze#index_"
+          }
+        ],
         "requestBody": {
           "$ref": "#/components/requestBodies/indices.analyze"
         },
@@ -12459,6 +12469,9 @@
         "parameters": [
           {
             "$ref": "#/components/parameters/indices.analyze#index"
+          },
+          {
+            "$ref": "#/components/parameters/indices.analyze#index_"
           }
         ],
         "requestBody": {
@@ -12483,6 +12496,9 @@
         "parameters": [
           {
             "$ref": "#/components/parameters/indices.analyze#index"
+          },
+          {
+            "$ref": "#/components/parameters/indices.analyze#index_"
           }
         ],
         "requestBody": {
@@ -12540,6 +12556,9 @@
         "description": "Clear the cache of one or more indices.\nFor data streams, the API clears the caches of the stream's backing indices.\n\nBy default, the clear cache API clears all caches.\nTo clear only specific caches, use the `fielddata`, `query`, or `request` parameters.\nTo clear the cache only of specific fields, use the `fields` parameter.",
         "operationId": "indices-clear-cache",
         "parameters": [
+          {
+            "$ref": "#/components/parameters/indices.clear_cache#index_"
+          },
           {
             "$ref": "#/components/parameters/indices.clear_cache#allow_no_indices"
           },
@@ -12581,6 +12600,9 @@
           {
             "$ref": "#/components/parameters/indices.clear_cache#index"
           },
+          {
+            "$ref": "#/components/parameters/indices.clear_cache#index_"
+          },
           {
             "$ref": "#/components/parameters/indices.clear_cache#allow_no_indices"
           },
@@ -14114,6 +14136,26 @@
             },
             "style": "simple"
           },
+          {
+            "in": "query",
+            "name": "local",
+            "description": "If true, the request retrieves information from the local node only. Defaults to false, which means information is retrieved from the master node.",
+            "deprecated": false,
+            "schema": {
+              "type": "boolean"
+            },
+            "style": "form"
+          },
+          {
+            "in": "query",
+            "name": "flat_settings",
+            "description": "If true, returns settings in flat format.",
+            "deprecated": false,
+            "schema": {
+              "type": "boolean"
+            },
+            "style": "form"
+          },
           {
             "in": "query",
             "name": "master_timeout",
@@ -14701,16 +14743,6 @@
               "$ref": "#/components/schemas/_types:Fields"
             },
             "style": "form"
-          },
-          {
-            "in": "query",
-            "name": "wait_for_active_shards",
-            "description": "The number of shard copies that must be active before proceeding with the operation.\nSet to all or any positive integer up to the total number of shards in the index (`number_of_replicas+1`).",
-            "deprecated": false,
-            "schema": {
-              "$ref": "#/components/schemas/_types:WaitForActiveShards"
-            },
-            "style": "form"
           }
         ],
         "responses": {
@@ -15492,6 +15524,9 @@
           {
             "$ref": "#/components/parameters/indices.put_settings#preserve_existing"
           },
+          {
+            "$ref": "#/components/parameters/indices.put_settings#reopen"
+          },
           {
             "$ref": "#/components/parameters/indices.put_settings#timeout"
           }
@@ -15578,6 +15613,9 @@
           {
             "$ref": "#/components/parameters/indices.put_settings#preserve_existing"
           },
+          {
+            "$ref": "#/components/parameters/indices.put_settings#reopen"
+          },
           {
             "$ref": "#/components/parameters/indices.put_settings#timeout"
           }
@@ -16177,6 +16215,9 @@
           },
           {
             "$ref": "#/components/parameters/indices.reload_search_analyzers#ignore_unavailable"
+          },
+          {
+            "$ref": "#/components/parameters/indices.reload_search_analyzers#resource"
           }
         ],
         "responses": {
@@ -16208,6 +16249,9 @@
           },
           {
             "$ref": "#/components/parameters/indices.reload_search_analyzers#ignore_unavailable"
+          },
+          {
+            "$ref": "#/components/parameters/indices.reload_search_analyzers#resource"
           }
         ],
         "responses": {
@@ -16407,6 +16451,9 @@
           },
           {
             "$ref": "#/components/parameters/indices.rollover#wait_for_active_shards"
+          },
+          {
+            "$ref": "#/components/parameters/indices.rollover#lazy"
           }
         ],
         "requestBody": {
@@ -16446,6 +16493,9 @@
           },
           {
             "$ref": "#/components/parameters/indices.rollover#wait_for_active_shards"
+          },
+          {
+            "$ref": "#/components/parameters/indices.rollover#lazy"
           }
         ],
         "requestBody": {
@@ -16665,6 +16715,26 @@
             },
             "style": "simple"
           },
+          {
+            "in": "query",
+            "name": "create",
+            "description": "Whether the index template we optionally defined in the body should only be dry-run added if new or can also replace an existing one",
+            "deprecated": false,
+            "schema": {
+              "type": "boolean"
+            },
+            "style": "form"
+          },
+          {
+            "in": "query",
+            "name": "cause",
+            "description": "User defined reason for dry-run creating the new template for simulation purposes",
+            "deprecated": false,
+            "schema": {
+              "type": "string"
+            },
+            "style": "form"
+          },
           {
             "in": "query",
             "name": "master_timeout",
@@ -16733,6 +16803,9 @@
           {
             "$ref": "#/components/parameters/indices.simulate_template#create"
           },
+          {
+            "$ref": "#/components/parameters/indices.simulate_template#cause"
+          },
           {
             "$ref": "#/components/parameters/indices.simulate_template#master_timeout"
           },
@@ -16765,6 +16838,9 @@
           {
             "$ref": "#/components/parameters/indices.simulate_template#create"
           },
+          {
+            "$ref": "#/components/parameters/indices.simulate_template#cause"
+          },
           {
             "$ref": "#/components/parameters/indices.simulate_template#master_timeout"
           },
@@ -105549,6 +105625,16 @@
         },
         "style": "simple"
       },
+      "indices.analyze#index_": {
+        "in": "query",
+        "name": "index",
+        "description": "Index used to derive the analyzer.\nIf specified, the `analyzer` or field parameter overrides this value.\nIf no index is specified or the index does not have a default analyzer, the analyze API uses the standard analyzer.",
+        "deprecated": false,
+        "schema": {
+          "$ref": "#/components/schemas/_types:IndexName"
+        },
+        "style": "form"
+      },
       "indices.clear_cache#index": {
         "in": "path",
         "name": "index",
@@ -105560,6 +105646,16 @@
         },
         "style": "simple"
       },
+      "indices.clear_cache#index_": {
+        "in": "query",
+        "name": "index",
+        "description": "Comma-separated list of data streams, indices, and aliases used to limit the request.\nSupports wildcards (`*`).\nTo target all data streams and indices, omit this parameter or use `*` or `_all`.",
+        "deprecated": false,
+        "schema": {
+          "$ref": "#/components/schemas/_types:Indices"
+        },
+        "style": "form"
+      },
       "indices.clear_cache#allow_no_indices": {
         "in": "query",
         "name": "allow_no_indices",
@@ -106616,6 +106712,16 @@
         },
         "style": "form"
       },
+      "indices.put_settings#reopen": {
+        "in": "query",
+        "name": "reopen",
+        "description": "Whether to close and reopen the index to apply non-dynamic settings.\nIf set to `true` the indices to which the settings are being applied\nwill be closed temporarily and then reopened in order to apply the changes.",
+        "deprecated": false,
+        "schema": {
+          "type": "boolean"
+        },
+        "style": "form"
+      },
       "indices.put_settings#timeout": {
         "in": "query",
         "name": "timeout",
@@ -106789,6 +106895,16 @@
         },
         "style": "form"
       },
+      "indices.reload_search_analyzers#resource": {
+        "in": "query",
+        "name": "resource",
+        "description": "Changed resource to reload analyzers from if applicable",
+        "deprecated": false,
+        "schema": {
+          "type": "string"
+        },
+        "style": "form"
+      },
       "indices.resolve_cluster#name": {
         "in": "path",
         "name": "name",
@@ -106912,6 +107028,16 @@
         },
         "style": "form"
       },
+      "indices.rollover#lazy": {
+        "in": "query",
+        "name": "lazy",
+        "description": "If set to true, the rollover action will only mark a data stream to signal that it needs to be rolled over at the next write.\nOnly allowed on data streams.",
+        "deprecated": false,
+        "schema": {
+          "type": "boolean"
+        },
+        "style": "form"
+      },
       "indices.segments#index": {
         "in": "path",
         "name": "index",
@@ -107087,6 +107213,16 @@
         },
         "style": "form"
       },
+      "indices.simulate_template#cause": {
+        "in": "query",
+        "name": "cause",
+        "description": "User defined reason for dry-run creating the new template for simulation purposes",
+        "deprecated": false,
+        "schema": {
+          "type": "string"
+        },
+        "style": "form"
+      },
       "indices.simulate_template#master_timeout": {
         "in": "query",
         "name": "master_timeout",
diff --git a/output/openapi/elasticsearch-serverless-openapi.json b/output/openapi/elasticsearch-serverless-openapi.json
index 3cbc638020..a1a74c0960 100644
--- a/output/openapi/elasticsearch-serverless-openapi.json
+++ b/output/openapi/elasticsearch-serverless-openapi.json
@@ -6444,6 +6444,11 @@
           "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/analysis.html"
         },
         "operationId": "indices-analyze",
+        "parameters": [
+          {
+            "$ref": "#/components/parameters/indices.analyze#index_"
+          }
+        ],
         "requestBody": {
           "$ref": "#/components/requestBodies/indices.analyze"
         },
@@ -6463,6 +6468,11 @@
           "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/analysis.html"
         },
         "operationId": "indices-analyze-1",
+        "parameters": [
+          {
+            "$ref": "#/components/parameters/indices.analyze#index_"
+          }
+        ],
         "requestBody": {
           "$ref": "#/components/requestBodies/indices.analyze"
         },
@@ -6487,6 +6497,9 @@
         "parameters": [
           {
             "$ref": "#/components/parameters/indices.analyze#index"
+          },
+          {
+            "$ref": "#/components/parameters/indices.analyze#index_"
           }
         ],
         "requestBody": {
@@ -6511,6 +6524,9 @@
         "parameters": [
           {
             "$ref": "#/components/parameters/indices.analyze#index"
+          },
+          {
+            "$ref": "#/components/parameters/indices.analyze#index_"
           }
         ],
         "requestBody": {
@@ -7485,6 +7501,26 @@
             },
             "style": "simple"
           },
+          {
+            "in": "query",
+            "name": "local",
+            "description": "If true, the request retrieves information from the local node only. Defaults to false, which means information is retrieved from the master node.",
+            "deprecated": false,
+            "schema": {
+              "type": "boolean"
+            },
+            "style": "form"
+          },
+          {
+            "in": "query",
+            "name": "flat_settings",
+            "description": "If true, returns settings in flat format.",
+            "deprecated": false,
+            "schema": {
+              "type": "boolean"
+            },
+            "style": "form"
+          },
           {
             "in": "query",
             "name": "master_timeout",
@@ -8170,6 +8206,9 @@
           {
             "$ref": "#/components/parameters/indices.put_settings#preserve_existing"
           },
+          {
+            "$ref": "#/components/parameters/indices.put_settings#reopen"
+          },
           {
             "$ref": "#/components/parameters/indices.put_settings#timeout"
           }
@@ -8256,6 +8295,9 @@
           {
             "$ref": "#/components/parameters/indices.put_settings#preserve_existing"
           },
+          {
+            "$ref": "#/components/parameters/indices.put_settings#reopen"
+          },
           {
             "$ref": "#/components/parameters/indices.put_settings#timeout"
           }
@@ -8682,6 +8724,9 @@
           },
           {
             "$ref": "#/components/parameters/indices.rollover#wait_for_active_shards"
+          },
+          {
+            "$ref": "#/components/parameters/indices.rollover#lazy"
           }
         ],
         "requestBody": {
@@ -8721,6 +8766,9 @@
           },
           {
             "$ref": "#/components/parameters/indices.rollover#wait_for_active_shards"
+          },
+          {
+            "$ref": "#/components/parameters/indices.rollover#lazy"
           }
         ],
         "requestBody": {
@@ -8754,6 +8802,26 @@
             },
             "style": "simple"
           },
+          {
+            "in": "query",
+            "name": "create",
+            "description": "Whether the index template we optionally defined in the body should only be dry-run added if new or can also replace an existing one",
+            "deprecated": false,
+            "schema": {
+              "type": "boolean"
+            },
+            "style": "form"
+          },
+          {
+            "in": "query",
+            "name": "cause",
+            "description": "User defined reason for dry-run creating the new template for simulation purposes",
+            "deprecated": false,
+            "schema": {
+              "type": "string"
+            },
+            "style": "form"
+          },
           {
             "in": "query",
             "name": "master_timeout",
@@ -8822,6 +8890,9 @@
           {
             "$ref": "#/components/parameters/indices.simulate_template#create"
           },
+          {
+            "$ref": "#/components/parameters/indices.simulate_template#cause"
+          },
           {
             "$ref": "#/components/parameters/indices.simulate_template#master_timeout"
           },
@@ -8854,6 +8925,9 @@
           {
             "$ref": "#/components/parameters/indices.simulate_template#create"
           },
+          {
+            "$ref": "#/components/parameters/indices.simulate_template#cause"
+          },
           {
             "$ref": "#/components/parameters/indices.simulate_template#master_timeout"
           },
@@ -62108,6 +62182,16 @@
         },
         "style": "simple"
       },
+      "indices.analyze#index_": {
+        "in": "query",
+        "name": "index",
+        "description": "Index used to derive the analyzer.\nIf specified, the `analyzer` or field parameter overrides this value.\nIf no index is specified or the index does not have a default analyzer, the analyze API uses the standard analyzer.",
+        "deprecated": false,
+        "schema": {
+          "$ref": "#/components/schemas/_types:IndexName"
+        },
+        "style": "form"
+      },
       "indices.delete_alias#index": {
         "in": "path",
         "name": "index",
@@ -62754,6 +62838,16 @@
         },
         "style": "form"
       },
+      "indices.put_settings#reopen": {
+        "in": "query",
+        "name": "reopen",
+        "description": "Whether to close and reopen the index to apply non-dynamic settings.\nIf set to `true` the indices to which the settings are being applied\nwill be closed temporarily and then reopened in order to apply the changes.",
+        "deprecated": false,
+        "schema": {
+          "type": "boolean"
+        },
+        "style": "form"
+      },
       "indices.put_settings#timeout": {
         "in": "query",
         "name": "timeout",
@@ -62867,6 +62961,16 @@
         },
         "style": "form"
       },
+      "indices.rollover#lazy": {
+        "in": "query",
+        "name": "lazy",
+        "description": "If set to true, the rollover action will only mark a data stream to signal that it needs to be rolled over at the next write.\nOnly allowed on data streams.",
+        "deprecated": false,
+        "schema": {
+          "type": "boolean"
+        },
+        "style": "form"
+      },
       "indices.simulate_template#name": {
         "in": "path",
         "name": "name",
@@ -62888,6 +62992,16 @@
         },
         "style": "form"
       },
+      "indices.simulate_template#cause": {
+        "in": "query",
+        "name": "cause",
+        "description": "User defined reason for dry-run creating the new template for simulation purposes",
+        "deprecated": false,
+        "schema": {
+          "type": "string"
+        },
+        "style": "form"
+      },
       "indices.simulate_template#master_timeout": {
         "in": "query",
         "name": "master_timeout",
diff --git a/output/schema/schema-serverless.json b/output/schema/schema-serverless.json
index 885af064be..daa858a389 100644
--- a/output/schema/schema-serverless.json
+++ b/output/schema/schema-serverless.json
@@ -21778,8 +21778,23 @@
           }
         }
       ],
-      "query": [],
-      "specLocation": "indices/analyze/IndicesAnalyzeRequest.ts#L27-L110"
+      "query": [
+        {
+          "description": "Index used to derive the analyzer.\nIf specified, the `analyzer` or field parameter overrides this value.\nIf no index is specified or the index does not have a default analyzer, the analyze API uses the standard analyzer.",
+          "docId": "analysis-standard-analyzer",
+          "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/current/analysis-standard-analyzer.html",
+          "name": "index",
+          "required": false,
+          "type": {
+            "kind": "instance_of",
+            "type": {
+              "name": "IndexName",
+              "namespace": "_types"
+            }
+          }
+        }
+      ],
+      "specLocation": "indices/analyze/IndicesAnalyzeRequest.ts#L27-L119"
     },
     {
       "body": {
@@ -22743,6 +22758,32 @@
         }
       ],
       "query": [
+        {
+          "description": "If true, the request retrieves information from the local node only. Defaults to false, which means information is retrieved from the master node.",
+          "name": "local",
+          "required": false,
+          "serverDefault": false,
+          "type": {
+            "kind": "instance_of",
+            "type": {
+              "name": "boolean",
+              "namespace": "_builtins"
+            }
+          }
+        },
+        {
+          "description": "If true, returns settings in flat format.",
+          "name": "flat_settings",
+          "required": false,
+          "serverDefault": false,
+          "type": {
+            "kind": "instance_of",
+            "type": {
+              "name": "boolean",
+              "namespace": "_builtins"
+            }
+          }
+        },
         {
           "description": "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.",
           "name": "master_timeout",
@@ -22757,7 +22798,7 @@
           }
         }
       ],
-      "specLocation": "indices/exists_index_template/IndicesExistsIndexTemplateRequest.ts#L24-L51"
+      "specLocation": "indices/exists_index_template/IndicesExistsIndexTemplateRequest.ts#L24-L61"
     },
     {
       "body": {
@@ -25010,6 +25051,19 @@
             }
           }
         },
+        {
+          "description": "Whether to close and reopen the index to apply non-dynamic settings.\nIf set to `true` the indices to which the settings are being applied\nwill be closed temporarily and then reopened in order to apply the changes.",
+          "name": "reopen",
+          "required": false,
+          "serverDefault": false,
+          "type": {
+            "kind": "instance_of",
+            "type": {
+              "name": "boolean",
+              "namespace": "_builtins"
+            }
+          }
+        },
         {
           "description": "Period to wait for a response. If no response is received before the\n timeout expires, the request fails and returns an error.",
           "name": "timeout",
@@ -25024,7 +25078,7 @@
           }
         }
       ],
-      "specLocation": "indices/put_settings/IndicesPutSettingsRequest.ts#L25-L118"
+      "specLocation": "indices/put_settings/IndicesPutSettingsRequest.ts#L25-L125"
     },
     {
       "body": {
@@ -25446,9 +25500,22 @@
               "namespace": "_types"
             }
           }
+        },
+        {
+          "description": "If set to true, the rollover action will only mark a data stream to signal that it needs to be rolled over at the next write.\nOnly allowed on data streams.",
+          "name": "lazy",
+          "required": false,
+          "serverDefault": false,
+          "type": {
+            "kind": "instance_of",
+            "type": {
+              "name": "boolean",
+              "namespace": "_builtins"
+            }
+          }
         }
       ],
-      "specLocation": "indices/rollover/IndicesRolloverRequest.ts#L29-L147"
+      "specLocation": "indices/rollover/IndicesRolloverRequest.ts#L29-L153"
     },
     {
       "body": {
@@ -25591,6 +25658,32 @@
         }
       ],
       "query": [
+        {
+          "description": "Whether the index template we optionally defined in the body should only be dry-run added if new or can also replace an existing one",
+          "name": "create",
+          "required": false,
+          "serverDefault": false,
+          "type": {
+            "kind": "instance_of",
+            "type": {
+              "name": "boolean",
+              "namespace": "_builtins"
+            }
+          }
+        },
+        {
+          "description": "User defined reason for dry-run creating the new template for simulation purposes",
+          "name": "cause",
+          "required": false,
+          "serverDefault": "false",
+          "type": {
+            "kind": "instance_of",
+            "type": {
+              "name": "string",
+              "namespace": "_builtins"
+            }
+          }
+        },
         {
           "description": "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.",
           "name": "master_timeout",
@@ -25627,7 +25720,7 @@
           }
         }
       ],
-      "specLocation": "indices/simulate_index_template/IndicesSimulateIndexTemplateRequest.ts#L24-L58"
+      "specLocation": "indices/simulate_index_template/IndicesSimulateIndexTemplateRequest.ts#L24-L67"
     },
     {
       "body": {
@@ -25858,6 +25951,18 @@
             }
           }
         },
+        {
+          "description": "User defined reason for dry-run creating the new template for simulation purposes",
+          "name": "cause",
+          "required": false,
+          "type": {
+            "kind": "instance_of",
+            "type": {
+              "name": "string",
+              "namespace": "_builtins"
+            }
+          }
+        },
         {
           "description": "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.",
           "name": "master_timeout",
@@ -25894,7 +25999,7 @@
           }
         }
       ],
-      "specLocation": "indices/simulate_template/IndicesSimulateTemplateRequest.ts#L27-L131"
+      "specLocation": "indices/simulate_template/IndicesSimulateTemplateRequest.ts#L27-L135"
     },
     {
       "body": {
diff --git a/output/schema/schema.json b/output/schema/schema.json
index 32cfd0cb11..5e0e11c89f 100644
--- a/output/schema/schema.json
+++ b/output/schema/schema.json
@@ -134995,8 +134995,23 @@
           }
         }
       ],
-      "query": [],
-      "specLocation": "indices/analyze/IndicesAnalyzeRequest.ts#L27-L110"
+      "query": [
+        {
+          "description": "Index used to derive the analyzer.\nIf specified, the `analyzer` or field parameter overrides this value.\nIf no index is specified or the index does not have a default analyzer, the analyze API uses the standard analyzer.",
+          "docId": "analysis-standard-analyzer",
+          "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/current/analysis-standard-analyzer.html",
+          "name": "index",
+          "required": false,
+          "type": {
+            "kind": "instance_of",
+            "type": {
+              "name": "IndexName",
+              "namespace": "_types"
+            }
+          }
+        }
+      ],
+      "specLocation": "indices/analyze/IndicesAnalyzeRequest.ts#L27-L119"
     },
     {
       "kind": "response",
@@ -135195,6 +135210,18 @@
         }
       ],
       "query": [
+        {
+          "description": "Comma-separated list of data streams, indices, and aliases used to limit the request.\nSupports wildcards (`*`).\nTo target all data streams and indices, omit this parameter or use `*` or `_all`.",
+          "name": "index",
+          "required": false,
+          "type": {
+            "kind": "instance_of",
+            "type": {
+              "name": "Indices",
+              "namespace": "_types"
+            }
+          }
+        },
         {
           "description": "If `false`, the request returns an error if any wildcard expression, index alias, or `_all` value targets only missing or closed indices.\nThis behavior applies even if the request targets other open indices.",
           "name": "allow_no_indices",
@@ -135283,7 +135310,7 @@
           }
         }
       ],
-      "specLocation": "indices/clear_cache/IndicesClearCacheRequest.ts#L23-L94"
+      "specLocation": "indices/clear_cache/IndicesClearCacheRequest.ts#L23-L100"
     },
     {
       "kind": "response",
@@ -137398,6 +137425,32 @@
         }
       ],
       "query": [
+        {
+          "description": "If true, the request retrieves information from the local node only. Defaults to false, which means information is retrieved from the master node.",
+          "name": "local",
+          "required": false,
+          "serverDefault": false,
+          "type": {
+            "kind": "instance_of",
+            "type": {
+              "name": "boolean",
+              "namespace": "_builtins"
+            }
+          }
+        },
+        {
+          "description": "If true, returns settings in flat format.",
+          "name": "flat_settings",
+          "required": false,
+          "serverDefault": false,
+          "type": {
+            "kind": "instance_of",
+            "type": {
+              "name": "boolean",
+              "namespace": "_builtins"
+            }
+          }
+        },
         {
           "description": "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.",
           "name": "master_timeout",
@@ -137412,7 +137465,7 @@
           }
         }
       ],
-      "specLocation": "indices/exists_index_template/IndicesExistsIndexTemplateRequest.ts#L24-L51"
+      "specLocation": "indices/exists_index_template/IndicesExistsIndexTemplateRequest.ts#L24-L61"
     },
     {
       "kind": "response",
@@ -138066,22 +138119,9 @@
               "namespace": "_types"
             }
           }
-        },
-        {
-          "description": "The number of shard copies that must be active before proceeding with the operation.\nSet to all or any positive integer up to the total number of shards in the index (`number_of_replicas+1`).",
-          "name": "wait_for_active_shards",
-          "required": false,
-          "serverDefault": "1",
-          "type": {
-            "kind": "instance_of",
-            "type": {
-              "name": "WaitForActiveShards",
-              "namespace": "_types"
-            }
-          }
         }
       ],
-      "specLocation": "indices/field_usage_stats/IndicesFieldUsageStatsRequest.ts#L28-L84"
+      "specLocation": "indices/field_usage_stats/IndicesFieldUsageStatsRequest.ts#L23-L73"
     },
     {
       "kind": "response",
@@ -142013,6 +142053,19 @@
             }
           }
         },
+        {
+          "description": "Whether to close and reopen the index to apply non-dynamic settings.\nIf set to `true` the indices to which the settings are being applied\nwill be closed temporarily and then reopened in order to apply the changes.",
+          "name": "reopen",
+          "required": false,
+          "serverDefault": false,
+          "type": {
+            "kind": "instance_of",
+            "type": {
+              "name": "boolean",
+              "namespace": "_builtins"
+            }
+          }
+        },
         {
           "description": "Period to wait for a response. If no response is received before the\n timeout expires, the request fails and returns an error.",
           "name": "timeout",
@@ -142027,7 +142080,7 @@
           }
         }
       ],
-      "specLocation": "indices/put_settings/IndicesPutSettingsRequest.ts#L25-L118"
+      "specLocation": "indices/put_settings/IndicesPutSettingsRequest.ts#L25-L125"
     },
     {
       "kind": "response",
@@ -143583,9 +143636,21 @@
               "namespace": "_builtins"
             }
           }
+        },
+        {
+          "description": "Changed resource to reload analyzers from if applicable",
+          "name": "resource",
+          "required": false,
+          "type": {
+            "kind": "instance_of",
+            "type": {
+              "name": "string",
+              "namespace": "_builtins"
+            }
+          }
         }
       ],
-      "specLocation": "indices/reload_search_analyzers/ReloadSearchAnalyzersRequest.ts#L23-L59"
+      "specLocation": "indices/reload_search_analyzers/ReloadSearchAnalyzersRequest.ts#L23-L63"
     },
     {
       "kind": "response",
@@ -144266,9 +144331,22 @@
               "namespace": "_types"
             }
           }
+        },
+        {
+          "description": "If set to true, the rollover action will only mark a data stream to signal that it needs to be rolled over at the next write.\nOnly allowed on data streams.",
+          "name": "lazy",
+          "required": false,
+          "serverDefault": false,
+          "type": {
+            "kind": "instance_of",
+            "type": {
+              "name": "boolean",
+              "namespace": "_builtins"
+            }
+          }
         }
       ],
-      "specLocation": "indices/rollover/IndicesRolloverRequest.ts#L29-L147"
+      "specLocation": "indices/rollover/IndicesRolloverRequest.ts#L29-L153"
     },
     {
       "kind": "response",
@@ -145622,6 +145700,32 @@
         }
       ],
       "query": [
+        {
+          "description": "Whether the index template we optionally defined in the body should only be dry-run added if new or can also replace an existing one",
+          "name": "create",
+          "required": false,
+          "serverDefault": false,
+          "type": {
+            "kind": "instance_of",
+            "type": {
+              "name": "boolean",
+              "namespace": "_builtins"
+            }
+          }
+        },
+        {
+          "description": "User defined reason for dry-run creating the new template for simulation purposes",
+          "name": "cause",
+          "required": false,
+          "serverDefault": "false",
+          "type": {
+            "kind": "instance_of",
+            "type": {
+              "name": "string",
+              "namespace": "_builtins"
+            }
+          }
+        },
         {
           "description": "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.",
           "name": "master_timeout",
@@ -145658,7 +145762,7 @@
           }
         }
       ],
-      "specLocation": "indices/simulate_index_template/IndicesSimulateIndexTemplateRequest.ts#L24-L58"
+      "specLocation": "indices/simulate_index_template/IndicesSimulateIndexTemplateRequest.ts#L24-L67"
     },
     {
       "kind": "response",
@@ -145924,6 +146028,18 @@
             }
           }
         },
+        {
+          "description": "User defined reason for dry-run creating the new template for simulation purposes",
+          "name": "cause",
+          "required": false,
+          "type": {
+            "kind": "instance_of",
+            "type": {
+              "name": "string",
+              "namespace": "_builtins"
+            }
+          }
+        },
         {
           "description": "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.",
           "name": "master_timeout",
@@ -145960,7 +146076,7 @@
           }
         }
       ],
-      "specLocation": "indices/simulate_template/IndicesSimulateTemplateRequest.ts#L27-L131"
+      "specLocation": "indices/simulate_template/IndicesSimulateTemplateRequest.ts#L27-L135"
     },
     {
       "kind": "response",
diff --git a/output/schema/validation-errors.json b/output/schema/validation-errors.json
index 4e8255797a..4d4bcbce56 100644
--- a/output/schema/validation-errors.json
+++ b/output/schema/validation-errors.json
@@ -104,68 +104,12 @@
       ],
       "response": []
     },
-    "indices.analyze": {
-      "request": [
-        "Request: missing json spec query parameter 'index'"
-      ],
-      "response": []
-    },
-    "indices.clear_cache": {
-      "request": [
-        "Request: missing json spec query parameter 'index'"
-      ],
-      "response": []
-    },
-    "indices.exists_index_template": {
-      "request": [
-        "Request: missing json spec query parameter 'flat_settings'",
-        "Request: missing json spec query parameter 'local'"
-      ],
-      "response": []
-    },
-    "indices.field_usage_stats": {
-      "request": [
-        "Request: query parameter 'wait_for_active_shards' does not exist in the json spec"
-      ],
-      "response": []
-    },
-    "indices.put_settings": {
-      "request": [
-        "Request: missing json spec query parameter 'reopen'"
-      ],
-      "response": []
-    },
     "indices.put_template": {
       "request": [
         "Request: query parameter 'cause' does not exist in the json spec"
       ],
       "response": []
     },
-    "indices.reload_search_analyzers": {
-      "request": [
-        "Request: missing json spec query parameter 'resource'"
-      ],
-      "response": []
-    },
-    "indices.rollover": {
-      "request": [
-        "Request: missing json spec query parameter 'lazy'"
-      ],
-      "response": []
-    },
-    "indices.simulate_index_template": {
-      "request": [
-        "Request: missing json spec query parameter 'create'",
-        "Request: missing json spec query parameter 'cause'"
-      ],
-      "response": []
-    },
-    "indices.simulate_template": {
-      "request": [
-        "Request: missing json spec query parameter 'cause'"
-      ],
-      "response": []
-    },
     "ingest.get_ip_location_database": {
       "request": [
         "Request: query parameter 'master_timeout' does not exist in the json spec"
diff --git a/output/typescript/types.ts b/output/typescript/types.ts
index 7a173a0727..bbd1a05426 100644
--- a/output/typescript/types.ts
+++ b/output/typescript/types.ts
@@ -11946,6 +11946,8 @@ export type IndicesExistsAliasResponse = boolean
 
 export interface IndicesExistsIndexTemplateRequest extends RequestBase {
   name: Name
+  local?: boolean
+  flat_settings?: boolean
   master_timeout?: Duration
 }
 
@@ -12015,7 +12017,6 @@ export interface IndicesFieldUsageStatsRequest extends RequestBase {
   expand_wildcards?: ExpandWildcards
   ignore_unavailable?: boolean
   fields?: Fields
-  wait_for_active_shards?: WaitForActiveShards
 }
 
 export type IndicesFieldUsageStatsResponse = IndicesFieldUsageStatsFieldsUsageBody
@@ -12396,6 +12397,7 @@ export interface IndicesPutSettingsRequest extends RequestBase {
   ignore_unavailable?: boolean
   master_timeout?: Duration
   preserve_existing?: boolean
+  reopen?: boolean
   timeout?: Duration
   body?: IndicesIndexSettings
 }
@@ -12552,6 +12554,7 @@ export interface IndicesReloadSearchAnalyzersRequest extends RequestBase {
   allow_no_indices?: boolean
   expand_wildcards?: ExpandWildcards
   ignore_unavailable?: boolean
+  resource?: string
 }
 
 export type IndicesReloadSearchAnalyzersResponse = IndicesReloadSearchAnalyzersReloadResult
@@ -12613,6 +12616,7 @@ export interface IndicesRolloverRequest extends RequestBase {
   master_timeout?: Duration
   timeout?: Duration
   wait_for_active_shards?: WaitForActiveShards
+  lazy?: boolean
   body?: {
     aliases?: Record<IndexName, IndicesAlias>
     conditions?: IndicesRolloverRolloverConditions
@@ -12756,6 +12760,8 @@ export interface IndicesShrinkResponse {
 
 export interface IndicesSimulateIndexTemplateRequest extends RequestBase {
   name: Name
+  create?: boolean
+  cause?: string
   master_timeout?: Duration
   include_defaults?: boolean
 }
@@ -12773,6 +12779,7 @@ export interface IndicesSimulateTemplateOverlapping {
 export interface IndicesSimulateTemplateRequest extends RequestBase {
   name?: Name
   create?: boolean
+  cause?: string
   master_timeout?: Duration
   include_defaults?: boolean
   body?: {
diff --git a/specification/indices/analyze/IndicesAnalyzeRequest.ts b/specification/indices/analyze/IndicesAnalyzeRequest.ts
index f219424914..daffce8393 100644
--- a/specification/indices/analyze/IndicesAnalyzeRequest.ts
+++ b/specification/indices/analyze/IndicesAnalyzeRequest.ts
@@ -59,6 +59,15 @@ export interface Request extends RequestBase {
      */
     index?: IndexName
   }
+  query_parameters: {
+    /**
+     * Index used to derive the analyzer.
+     * If specified, the `analyzer` or field parameter overrides this value.
+     * If no index is specified or the index does not have a default analyzer, the analyze API uses the standard analyzer.
+     * @doc_id analysis-standard-analyzer
+     */
+    index?: IndexName
+  }
   body: {
     /**
      * The name of the analyzer that should be applied to the provided `text`.
diff --git a/specification/indices/clear_cache/IndicesClearCacheRequest.ts b/specification/indices/clear_cache/IndicesClearCacheRequest.ts
index 1dae397d52..5183200be3 100644
--- a/specification/indices/clear_cache/IndicesClearCacheRequest.ts
+++ b/specification/indices/clear_cache/IndicesClearCacheRequest.ts
@@ -54,6 +54,12 @@ export interface Request extends RequestBase {
     index?: Indices
   }
   query_parameters: {
+    /**
+     * Comma-separated list of data streams, indices, and aliases used to limit the request.
+     * Supports wildcards (`*`).
+     * To target all data streams and indices, omit this parameter or use `*` or `_all`.
+     */
+    index?: Indices
     /**
      * If `false`, the request returns an error if any wildcard expression, index alias, or `_all` value targets only missing or closed indices.
      * This behavior applies even if the request targets other open indices.
diff --git a/specification/indices/exists_index_template/IndicesExistsIndexTemplateRequest.ts b/specification/indices/exists_index_template/IndicesExistsIndexTemplateRequest.ts
index a2ce737588..1df448e482 100644
--- a/specification/indices/exists_index_template/IndicesExistsIndexTemplateRequest.ts
+++ b/specification/indices/exists_index_template/IndicesExistsIndexTemplateRequest.ts
@@ -42,6 +42,16 @@ export interface Request extends RequestBase {
     name: Name
   }
   query_parameters: {
+    /**
+     * If true, the request retrieves information from the local node only. Defaults to false, which means information is retrieved from the master node.
+     * @server_default false
+     */
+    local?: boolean
+    /**
+     * If true, returns settings in flat format.
+     * @server_default false
+     */
+    flat_settings?: boolean
     /**
      * 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
diff --git a/specification/indices/field_usage_stats/IndicesFieldUsageStatsRequest.ts b/specification/indices/field_usage_stats/IndicesFieldUsageStatsRequest.ts
index fa5b89e4a0..194cc10971 100644
--- a/specification/indices/field_usage_stats/IndicesFieldUsageStatsRequest.ts
+++ b/specification/indices/field_usage_stats/IndicesFieldUsageStatsRequest.ts
@@ -18,12 +18,7 @@
  */
 
 import { RequestBase } from '@_types/Base'
-import {
-  ExpandWildcards,
-  Fields,
-  Indices,
-  WaitForActiveShards
-} from '@_types/common'
+import { ExpandWildcards, Fields, Indices } from '@_types/common'
 
 /**
  * Get field usage stats.
@@ -74,11 +69,5 @@ export interface Request extends RequestBase {
      * Comma-separated list or wildcard expressions of fields to include in the statistics.
      */
     fields?: Fields
-    /**
-     * The number of shard copies that must be active before proceeding with the operation.
-     * Set to all or any positive integer up to the total number of shards in the index (`number_of_replicas+1`).
-     * @server_default 1
-     */
-    wait_for_active_shards?: WaitForActiveShards
   }
 }
diff --git a/specification/indices/put_settings/IndicesPutSettingsRequest.ts b/specification/indices/put_settings/IndicesPutSettingsRequest.ts
index 60bee85e82..34cd9c5002 100644
--- a/specification/indices/put_settings/IndicesPutSettingsRequest.ts
+++ b/specification/indices/put_settings/IndicesPutSettingsRequest.ts
@@ -105,6 +105,13 @@ export interface Request extends RequestBase {
      * @server_default false
      */
     preserve_existing?: boolean
+    /**
+     * Whether to close and reopen the index to apply non-dynamic settings.
+     * If set to `true` the indices to which the settings are being applied
+     * will be closed temporarily and then reopened in order to apply the changes.
+     * @server_default false
+     */
+    reopen?: boolean
     /**
      *  Period to wait for a response. If no response is received before the
      *  timeout expires, the request fails and returns an error.
diff --git a/specification/indices/reload_search_analyzers/ReloadSearchAnalyzersRequest.ts b/specification/indices/reload_search_analyzers/ReloadSearchAnalyzersRequest.ts
index 1ebb56c919..aa65f94951 100644
--- a/specification/indices/reload_search_analyzers/ReloadSearchAnalyzersRequest.ts
+++ b/specification/indices/reload_search_analyzers/ReloadSearchAnalyzersRequest.ts
@@ -55,5 +55,9 @@ export interface Request extends RequestBase {
     allow_no_indices?: boolean
     expand_wildcards?: ExpandWildcards
     ignore_unavailable?: boolean
+    /**
+     * Changed resource to reload analyzers from if applicable
+     */
+    resource?: string
   }
 }
diff --git a/specification/indices/rollover/IndicesRolloverRequest.ts b/specification/indices/rollover/IndicesRolloverRequest.ts
index 8b2d722ac5..dcb5ef8ab1 100644
--- a/specification/indices/rollover/IndicesRolloverRequest.ts
+++ b/specification/indices/rollover/IndicesRolloverRequest.ts
@@ -118,6 +118,12 @@ export interface Request extends RequestBase {
      * @server_default 1
      */
     wait_for_active_shards?: WaitForActiveShards
+    /**
+     * If set to true, the rollover action will only mark a data stream to signal that it needs to be rolled over at the next write.
+     * Only allowed on data streams.
+     * @server_default false
+     */
+    lazy?: boolean
   }
   body: {
     /**
diff --git a/specification/indices/simulate_index_template/IndicesSimulateIndexTemplateRequest.ts b/specification/indices/simulate_index_template/IndicesSimulateIndexTemplateRequest.ts
index fccc55b7d1..e2f13464a8 100644
--- a/specification/indices/simulate_index_template/IndicesSimulateIndexTemplateRequest.ts
+++ b/specification/indices/simulate_index_template/IndicesSimulateIndexTemplateRequest.ts
@@ -42,6 +42,15 @@ export interface Request extends RequestBase {
     name: Name
   }
   query_parameters: {
+    /**
+     * Whether the index template we optionally defined in the body should only be dry-run added if new or can also replace an existing one
+     * @server_default false
+     */
+    create?: boolean
+    /** User defined reason for dry-run creating the new template for simulation purposes
+     * @server_default false
+     */
+    cause?: string
     /**
      * 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
diff --git a/specification/indices/simulate_template/IndicesSimulateTemplateRequest.ts b/specification/indices/simulate_template/IndicesSimulateTemplateRequest.ts
index 391a0e16e3..a4bb70b5ca 100644
--- a/specification/indices/simulate_template/IndicesSimulateTemplateRequest.ts
+++ b/specification/indices/simulate_template/IndicesSimulateTemplateRequest.ts
@@ -57,6 +57,10 @@ export interface Request extends RequestBase {
      * @server_default false
      */
     create?: boolean
+    /**
+     * User defined reason for dry-run creating the new template for simulation purposes
+     */
+    cause?: string
     /**
      * 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


Reviews:
user: login: pquentin
state: COMMENTED
author_association: MEMBER
submitted_at: 2025-03-19T07:17:41Z
user: login: pquentin
state: COMMENTED
author_association: MEMBER
submitted_at: 2025-03-19T07:36:15Z
user: login: l-trotta
state: COMMENTED
author_association: CONTRIBUTOR
submitted_at: 2025-03-19T10:39:54Z
user: login: l-trotta
state: COMMENTED
author_association: CONTRIBUTOR
submitted_at: 2025-03-19T10:40:23Z
user: login: l-trotta
body: LGTM, thanks for thoroughly checking all of these!
state: APPROVED
author_association: CONTRIBUTOR
submitted_at: 2025-03-19T10:43:17Z

Review comments:
diff_hunk: @@ -59,6 +59,15 @@ export interface Request extends RequestBase {
      */
     index?: IndexName
   }
+  query_parameters: {
+    /**
+     * Index used to derive the analyzer.
+     * If specified, the `analyzer` or field parameter overrides this value.
+     * If no index is specified or the index does not have a default analyzer, the analyze API uses the standard analyzer.
+     * @doc_id analysis-standard-analyzer
+     */
+    index?: IndexName
+  }
path: specification/indices/analyze/IndicesAnalyzeRequest.ts
user: login: pquentin
body: This index parameter is read in https://github.com/elastic/elasticsearch/blob/d9e751602dc4a874ef381797844f80044889fbef/server/src/main/java/org/elasticsearch/rest/action/admin/indices/RestAnalyzeAction.java#L49 and has been there at least since 7.3.
created_at: 2025-03-19T07:05:10Z
author_association: MEMBER
diff_hunk: @@ -54,6 +54,12 @@ export interface Request extends RequestBase {
     index?: Indices
   }
   query_parameters: {
+    /**
+     * Comma-separated list of data streams, indices, and aliases used to limit the request.
+     * Supports wildcards (`*`).
+     * To target all data streams and indices, omit this parameter or use `*` or `_all`.
+     */
+    index?: Indices
path: specification/indices/clear_cache/IndicesClearCacheRequest.ts
user: login: pquentin
body: The index parameter is read in https://github.com/elastic/elasticsearch/blob/d9e751602dc4a874ef381797844f80044889fbef/server/src/main/java/org/elasticsearch/rest/action/admin/indices/RestClearIndicesCacheAction.java#L43 and has been there since at least 5.0.
created_at: 2025-03-19T07:07:33Z
author_association: MEMBER
diff_hunk: @@ -42,6 +42,16 @@ export interface Request extends RequestBase {
     name: Name
   }
   query_parameters: {
+    /**
+     * If true, the request retrieves information from the local node only. Defaults to false, which means information is retrieved from the master node.
+     * @server_default false
+     */
+    local?: boolean
+    /**
+     * If true, returns settings in flat format.
+     * @server_default false
+     */
+    flat_settings?: boolean
path: specification/indices/exists_index_template/IndicesExistsIndexTemplateRequest.ts
user: login: pquentin
body: I don't know where those settings are read, but can confirm that they are accepted by the API. It's a bit weird because they don't have any practical effect, but that's how HEAD works and the symmetry with the `get_index_template` API can be useful.
created_at: 2025-03-19T07:10:29Z
author_association: MEMBER
diff_hunk: @@ -74,11 +69,5 @@ export interface Request extends RequestBase {
      * Comma-separated list or wildcard expressions of fields to include in the statistics.
      */
     fields?: Fields
-    /**
-     * The number of shard copies that must be active before proceeding with the operation.
-     * Set to all or any positive integer up to the total number of shards in the index (`number_of_replicas+1`).
-     * @server_default 1
-     */
-    wait_for_active_shards?: WaitForActiveShards
path: specification/indices/field_usage_stats/IndicesFieldUsageStatsRequest.ts
user: login: pquentin
body: This parameter is not read in https://github.com/elastic/elasticsearch/blob/d9e751602dc4a874ef381797844f80044889fbef/server/src/main/java/org/elasticsearch/rest/action/admin/indices/RestFieldUsageStatsAction.java#L41-L52 - I also checked that it was not accepted in practice.
created_at: 2025-03-19T07:11:59Z
author_association: MEMBER
diff_hunk: @@ -105,6 +105,13 @@ export interface Request extends RequestBase {
      * @server_default false
      */
     preserve_existing?: boolean
+    /**
+     * Whether to close and reopen the index to apply non-dynamic settings.
+     * If set to `true` the indices to which the settings are being applied
+     * will be closed temporarily and then reopened in order to apply the changes.
+     * @server_default false
+     */
+    reopen?: boolean
path: specification/indices/put_settings/IndicesPutSettingsRequest.ts
user: login: pquentin
body: This parameter is read in https://github.com/elastic/elasticsearch/blob/d9e751602dc4a874ef381797844f80044889fbef/server/src/main/java/org/elasticsearch/rest/action/admin/indices/RestUpdateSettingsAction.java#L52 since [8.12.0](https://github.com/elastic/elasticsearch/pull/101723).
created_at: 2025-03-19T07:13:33Z
author_association: MEMBER
diff_hunk: @@ -55,5 +55,9 @@ export interface Request extends RequestBase {
     allow_no_indices?: boolean
     expand_wildcards?: ExpandWildcards
     ignore_unavailable?: boolean
+    /**
+     * Changed resource to reload analyzers from if applicable
+     */
+    resource?: string
path: specification/indices/reload_search_analyzers/ReloadSearchAnalyzersRequest.ts
user: login: pquentin
body: This parameter is read in https://github.com/elastic/elasticsearch/blob/d9e751602dc4a874ef381797844f80044889fbef/server/src/main/java/org/elasticsearch/rest/action/admin/indices/RestReloadAnalyzersAction.java#L42 since [8.10.0](https://github.com/elastic/elasticsearch/pull/96986).
created_at: 2025-03-19T07:14:23Z
author_association: MEMBER
diff_hunk: @@ -118,6 +118,12 @@ export interface Request extends RequestBase {
      * @server_default 1
      */
     wait_for_active_shards?: WaitForActiveShards
+    /**
+     * If set to true, the rollover action will only mark a data stream to signal that it needs to be rolled over at the next write.
+     * Only allowed on data streams.
+     * @server_default false
+     */
+    lazy?: boolean
path: specification/indices/rollover/IndicesRolloverRequest.ts
user: login: pquentin
body: This parameter is read in https://github.com/elastic/elasticsearch/blob/d9e751602dc4a874ef381797844f80044889fbef/server/src/main/java/org/elasticsearch/rest/action/admin/indices/RestRolloverIndexAction.java#L58 since [8.13.0](https://github.com/elastic/elasticsearch/pull/103309).
created_at: 2025-03-19T07:15:23Z
author_association: MEMBER
diff_hunk: @@ -42,6 +42,15 @@ export interface Request extends RequestBase {
     name: Name
   }
   query_parameters: {
+    /**
+     * Whether the index template we optionally defined in the body should only be dry-run added if new or can also replace an existing one
+     * @server_default false
+     */
+    create?: boolean
+    /** User defined reason for dry-run creating the new template for simulation purposes
+     * @server_default false
+     */
+    cause?: string
path: specification/indices/simulate_index_template/IndicesSimulateIndexTemplateRequest.ts
user: login: pquentin
body: Those parameters are read in https://github.com/elastic/elasticsearch/blob/d9e751602dc4a874ef381797844f80044889fbef/server/src/main/java/org/elasticsearch/rest/action/admin/indices/RestSimulateIndexTemplateAction.java#L57-L58 since at least [7.8.0](https://github.com/elastic/elasticsearch/pull/55936).
created_at: 2025-03-19T07:16:25Z
author_association: MEMBER
diff_hunk: @@ -57,6 +57,10 @@ export interface Request extends RequestBase {
      * @server_default false
      */
     create?: boolean
+    /**
+     * User defined reason for dry-run creating the new template for simulation purposes
+     */
+    cause?: string
path: specification/indices/simulate_template/IndicesSimulateTemplateRequest.ts
user: login: pquentin
body: This parameter is read in https://github.com/elastic/elasticsearch/blob/d9e751602dc4a874ef381797844f80044889fbef/server/src/main/java/org/elasticsearch/rest/action/admin/indices/RestSimulateTemplateAction.java#L56 since [7.9.0](https://github.com/elastic/elasticsearch/pull/56842).
created_at: 2025-03-19T07:17:31Z
author_association: MEMBER
diff_hunk: @@ -104,68 +104,12 @@
       ],
       "response": []
     },
-    "indices.analyze": {
-      "request": [
-        "Request: missing json spec query parameter 'index'"
-      ],
-      "response": []
-    },
-    "indices.clear_cache": {
-      "request": [
-        "Request: missing json spec query parameter 'index'"
-      ],
-      "response": []
-    },
-    "indices.exists_index_template": {
-      "request": [
-        "Request: missing json spec query parameter 'flat_settings'",
-        "Request: missing json spec query parameter 'local'"
-      ],
-      "response": []
-    },
-    "indices.field_usage_stats": {
-      "request": [
-        "Request: query parameter 'wait_for_active_shards' does not exist in the json spec"
-      ],
-      "response": []
-    },
-    "indices.put_settings": {
-      "request": [
-        "Request: missing json spec query parameter 'reopen'"
-      ],
-      "response": []
-    },
     "indices.put_template": {
       "request": [
         "Request: query parameter 'cause' does not exist in the json spec"
       ],
       "response": []
     },
path: output/schema/validation-errors.json
user: login: pquentin
body: Opened https://github.com/elastic/elasticsearch/pull/125189
created_at: 2025-03-19T07:36:15Z
author_association: MEMBER
diff_hunk: @@ -42,6 +42,16 @@ export interface Request extends RequestBase {
     name: Name
   }
   query_parameters: {
+    /**
+     * If true, the request retrieves information from the local node only. Defaults to false, which means information is retrieved from the master node.
+     * @server_default false
+     */
+    local?: boolean
+    /**
+     * If true, returns settings in flat format.
+     * @server_default false
+     */
+    flat_settings?: boolean
path: specification/indices/exists_index_template/IndicesExistsIndexTemplateRequest.ts
user: login: l-trotta
body: somewhere [here](https://github.com/elastic/elasticsearch/blob/ae16016290bc47fe77b4b05533053e7bf6078828/server/src/main/java/org/elasticsearch/rest/action/admin/indices/RestGetIndexTemplateAction.java#L73) I suspect. and yes it's exactly the same API so let's keep them in sync
created_at: 2025-03-19T10:39:54Z
author_association: CONTRIBUTOR
diff_hunk: @@ -42,6 +42,16 @@ export interface Request extends RequestBase {
     name: Name
   }
   query_parameters: {
+    /**
+     * If true, the request retrieves information from the local node only. Defaults to false, which means information is retrieved from the master node.
+     * @server_default false
+     */
+    local?: boolean
+    /**
+     * If true, returns settings in flat format.
+     * @server_default false
+     */
+    flat_settings?: boolean
path: specification/indices/exists_index_template/IndicesExistsIndexTemplateRequest.ts
user: login: l-trotta
body: ah here's [local](https://github.com/elastic/elasticsearch/blob/ae16016290bc47fe77b4b05533053e7bf6078828/server/src/main/java/org/elasticsearch/rest/action/admin/indices/RestGetIndexTemplateAction.java#L57)
created_at: 2025-03-19T10:40:23Z
author_association: CONTRIBUTOR

PR comments:
user: login: github-actions[bot]
created_at: 2025-03-19T06:54:32Z
body: Following you can find the validation results for the APIs you have changed.

| API | Status | Request | Response |
| --- | --- | --- | --- |
| `indices.analyze` | :green_circle: | 243/243 | 243/243 |
| `indices.clear_cache` | :green_circle: | 4/4 | 4/4 |
| `indices.exists_index_template` | :white_circle: | Missing test | Missing test |
| `indices.field_usage_stats` | :green_circle: | 5/5 | 5/5 |
| `indices.put_settings` | :red_circle: | 56/58 | 58/58 |
| `indices.reload_search_analyzers` | :green_circle: | 2/2 | 2/2 |
| `indices.rollover` | :red_circle: | 26/26 | 1/26 |
| `indices.simulate_index_template` | :red_circle: | 6/7 | 5/7 |
| `indices.simulate_template` | :red_circle: | 5/5 | 4/5 |

You can validate these APIs yourself by using the `make validate` target.

author_association: CONTRIBUTOR
user: login: github-actions[bot]
created_at: 2025-03-19T10:56:50Z
body: The backport to `8.x` failed:
```
The process '/usr/bin/git' failed with exit code 1
```
To backport manually, run these commands in your terminal:
```bash
# Fetch latest updates from GitHub
git fetch
# Create a new working tree
git worktree add .worktrees/backport-8.x 8.x
# Navigate to the new working tree
cd .worktrees/backport-8.x
# Create a new branch
git switch --create backport-4018-to-8.x
# Cherry-pick the merged commit of this pull request and resolve the conflicts
git cherry-pick -x --mainline 1 10af925072a632ec236ef50dc72a0c039314db2a
# Push it to GitHub
git push --set-upstream origin backport-4018-to-8.x
# Go back to the original working tree
cd ../..
# Delete the working tree
git worktree remove .worktrees/backport-8.x
```
Then, create a pull request where the `base` branch is `8.x` and the `compare`/`head` branch is `backport-4018-to-8.x`.
author_association: CONTRIBUTOR
user: login: github-actions[bot]
created_at: 2025-03-19T10:56:52Z
body: The backport to `8.17` failed:
```
The process '/usr/bin/git' failed with exit code 1
```
To backport manually, run these commands in your terminal:
```bash
# Fetch latest updates from GitHub
git fetch
# Create a new working tree
git worktree add .worktrees/backport-8.17 8.17
# Navigate to the new working tree
cd .worktrees/backport-8.17
# Create a new branch
git switch --create backport-4018-to-8.17
# Cherry-pick the merged commit of this pull request and resolve the conflicts
git cherry-pick -x --mainline 1 10af925072a632ec236ef50dc72a0c039314db2a
# Push it to GitHub
git push --set-upstream origin backport-4018-to-8.17
# Go back to the original working tree
cd ../..
# Delete the working tree
git worktree remove .worktrees/backport-8.17
```
Then, create a pull request where the `base` branch is `8.17` and the `compare`/`head` branch is `backport-4018-to-8.17`.
author_association: CONTRIBUTOR
user: login: github-actions[bot]
created_at: 2025-03-19T10:56:54Z
body: The backport to `8.18` failed:
```
The process '/usr/bin/git' failed with exit code 1
```
To backport manually, run these commands in your terminal:
```bash
# Fetch latest updates from GitHub
git fetch
# Create a new working tree
git worktree add .worktrees/backport-8.18 8.18
# Navigate to the new working tree
cd .worktrees/backport-8.18
# Create a new branch
git switch --create backport-4018-to-8.18
# Cherry-pick the merged commit of this pull request and resolve the conflicts
git cherry-pick -x --mainline 1 10af925072a632ec236ef50dc72a0c039314db2a
# Push it to GitHub
git push --set-upstream origin backport-4018-to-8.18
# Go back to the original working tree
cd ../..
# Delete the working tree
git worktree remove .worktrees/backport-8.18
```
Then, create a pull request where the `base` branch is `8.18` and the `compare`/`head` branch is `backport-4018-to-8.18`.
author_association: CONTRIBUTOR
user: login: pquentin
created_at: 2025-03-19T11:59:29Z
body: ## 💔 Some backports could not be created

| Status | Branch | Result |
|:------:|:------:|:------|
|✅|8.x|[<img src="https://img.shields.io/github/pulls/detail/state/elastic/elasticsearch-specification/4038">](https://github.com/elastic/elasticsearch-specification/pull/4038)|
|✅|8.18|[<img src="https://img.shields.io/github/pulls/detail/state/elastic/elasticsearch-specification/4039">](https://github.com/elastic/elasticsearch-specification/pull/4039)|
|❌|8.17|Conflict resolution was aborted by the user|

### Manual backport
To create the backport manually run:
```
backport --pr 4018
```

### Questions ?
Please refer to the [Backport tool documentation](https://github.com/sorenlouv/backport)

<!--- Backport version: 9.6.6 -->
author_association: MEMBER