From 929b800e702acea9f3b4768eed38f3d418b1f0d6 Mon Sep 17 00:00:00 2001
From: "github-actions[bot]"
 <41898282+github-actions[bot]@users.noreply.github.com>
Date: Fri, 26 Apr 2024 11:49:17 +0200
Subject: [PATCH] Fix index inference for requests with `index`/`indices`
 parameter (#8170) (#8171)

Co-authored-by: Florian Bernd <git@flobernd.de>
---
 .../_Generated/Api/BulkRequest.g.cs           |   2 +-
 .../IndexManagement/AnalyzeIndexRequest.g.cs  |   2 +-
 .../IndexManagement/CreateIndexRequest.g.cs   |   4 +
 .../Api/IndexManagement/RolloverRequest.g.cs  |   2 +-
 .../_Generated/Api/MultiGetRequest.g.cs       |   2 +-
 .../Api/MultiTermVectorsRequest.g.cs          |   2 +-
 .../_Generated/Api/TermsEnumRequest.g.cs      |   4 +
 .../Client/ElasticsearchClient.Indices.g.cs   |  23 ++
 .../Client/ElasticsearchClient.g.cs           |  23 ++
 .../Aggregations/TopHitsAggregation.g.cs      | 285 +++++++++++++++++-
 .../_Generated/Api/ApiUrlLookup.g.cs          |   2 +-
 .../_Generated/Api/BulkRequest.g.cs           |   2 +-
 .../FollowRequest.g.cs                        |   4 +
 .../ForgetFollowerRequest.g.cs                |   4 +
 .../PauseFollowRequest.g.cs                   |   4 +
 .../ResumeFollowRequest.g.cs                  |   4 +
 .../UnfollowRequest.g.cs                      |   4 +
 .../_Generated/Api/Esql/EsqlQueryRequest.g.cs |  30 ++
 .../MoveToStepRequest.g.cs                    |   4 +
 .../RemovePolicyRequest.g.cs                  |   4 +
 .../RetryRequest.g.cs                         |   4 +
 .../IndexManagement/AnalyzeIndexRequest.g.cs  |   2 +-
 .../IndexManagement/CloneIndexRequest.g.cs    |   4 +
 .../IndexManagement/CreateIndexRequest.g.cs   |   4 +
 .../Api/IndexManagement/RolloverRequest.g.cs  |   2 +-
 .../Api/Inference/GetModelRequest.g.cs        |  16 +-
 .../_Generated/Api/MultiGetRequest.g.cs       |   2 +-
 .../Api/MultiTermVectorsRequest.g.cs          |   2 +-
 .../_Generated/Api/TermsEnumRequest.g.cs      |   4 +
 .../Client/ElasticsearchClient.Ccr.g.cs       | 240 +++++++++++++++
 .../Client/ElasticsearchClient.Ilm.g.cs       | 144 +++++++++
 .../Client/ElasticsearchClient.Indices.g.cs   |  96 ++++++
 .../Client/ElasticsearchClient.Inference.g.cs |  24 +-
 .../Client/ElasticsearchClient.g.cs           |  48 +++
 .../Aggregations/TopHitsAggregation.g.cs      | 285 +++++++++++++++++-
 .../_Generated/Types/Enums/Enums.Esql.g.cs    |  67 ++++
 36 files changed, 1310 insertions(+), 45 deletions(-)
 create mode 100644 src/Elastic.Clients.Elasticsearch/_Generated/Types/Enums/Enums.Esql.g.cs

diff --git a/src/Elastic.Clients.Elasticsearch.Serverless/_Generated/Api/BulkRequest.g.cs b/src/Elastic.Clients.Elasticsearch.Serverless/_Generated/Api/BulkRequest.g.cs
index ad0139f367d..599288109c8 100644
--- a/src/Elastic.Clients.Elasticsearch.Serverless/_Generated/Api/BulkRequest.g.cs
+++ b/src/Elastic.Clients.Elasticsearch.Serverless/_Generated/Api/BulkRequest.g.cs
@@ -164,7 +164,7 @@ public BulkRequestDescriptor(Elastic.Clients.Elasticsearch.Serverless.IndexName?
 	{
 	}
 
-	public BulkRequestDescriptor()
+	public BulkRequestDescriptor() : this(typeof(TDocument))
 	{
 	}
 
diff --git a/src/Elastic.Clients.Elasticsearch.Serverless/_Generated/Api/IndexManagement/AnalyzeIndexRequest.g.cs b/src/Elastic.Clients.Elasticsearch.Serverless/_Generated/Api/IndexManagement/AnalyzeIndexRequest.g.cs
index bc8ed7b61c8..ca723c7de05 100644
--- a/src/Elastic.Clients.Elasticsearch.Serverless/_Generated/Api/IndexManagement/AnalyzeIndexRequest.g.cs
+++ b/src/Elastic.Clients.Elasticsearch.Serverless/_Generated/Api/IndexManagement/AnalyzeIndexRequest.g.cs
@@ -121,7 +121,7 @@ public AnalyzeIndexRequestDescriptor(Elastic.Clients.Elasticsearch.Serverless.In
 	{
 	}
 
-	public AnalyzeIndexRequestDescriptor()
+	public AnalyzeIndexRequestDescriptor() : this(typeof(TDocument))
 	{
 	}
 
diff --git a/src/Elastic.Clients.Elasticsearch.Serverless/_Generated/Api/IndexManagement/CreateIndexRequest.g.cs b/src/Elastic.Clients.Elasticsearch.Serverless/_Generated/Api/IndexManagement/CreateIndexRequest.g.cs
index 960589dd800..aa58f533c64 100644
--- a/src/Elastic.Clients.Elasticsearch.Serverless/_Generated/Api/IndexManagement/CreateIndexRequest.g.cs
+++ b/src/Elastic.Clients.Elasticsearch.Serverless/_Generated/Api/IndexManagement/CreateIndexRequest.g.cs
@@ -112,6 +112,10 @@ public CreateIndexRequestDescriptor(Elastic.Clients.Elasticsearch.Serverless.Ind
 	{
 	}
 
+	public CreateIndexRequestDescriptor() : this(typeof(TDocument))
+	{
+	}
+
 	internal override ApiUrls ApiUrls => ApiUrlLookup.IndexManagementCreate;
 
 	protected override HttpMethod StaticHttpMethod => HttpMethod.PUT;
diff --git a/src/Elastic.Clients.Elasticsearch.Serverless/_Generated/Api/IndexManagement/RolloverRequest.g.cs b/src/Elastic.Clients.Elasticsearch.Serverless/_Generated/Api/IndexManagement/RolloverRequest.g.cs
index 437a144fd80..2f585dcd6c7 100644
--- a/src/Elastic.Clients.Elasticsearch.Serverless/_Generated/Api/IndexManagement/RolloverRequest.g.cs
+++ b/src/Elastic.Clients.Elasticsearch.Serverless/_Generated/Api/IndexManagement/RolloverRequest.g.cs
@@ -133,7 +133,7 @@ public RolloverRequestDescriptor(Elastic.Clients.Elasticsearch.Serverless.IndexA
 	{
 	}
 
-	public RolloverRequestDescriptor(Elastic.Clients.Elasticsearch.Serverless.IndexAlias alias) : base(r => r.Required("alias", alias))
+	public RolloverRequestDescriptor(Elastic.Clients.Elasticsearch.Serverless.IndexAlias alias) : this(alias, typeof(TDocument))
 	{
 	}
 
diff --git a/src/Elastic.Clients.Elasticsearch.Serverless/_Generated/Api/MultiGetRequest.g.cs b/src/Elastic.Clients.Elasticsearch.Serverless/_Generated/Api/MultiGetRequest.g.cs
index 93e1bdd7cf0..ee955d35e9e 100644
--- a/src/Elastic.Clients.Elasticsearch.Serverless/_Generated/Api/MultiGetRequest.g.cs
+++ b/src/Elastic.Clients.Elasticsearch.Serverless/_Generated/Api/MultiGetRequest.g.cs
@@ -165,7 +165,7 @@ public MultiGetRequestDescriptor(Elastic.Clients.Elasticsearch.Serverless.IndexN
 	{
 	}
 
-	public MultiGetRequestDescriptor()
+	public MultiGetRequestDescriptor() : this(typeof(TDocument))
 	{
 	}
 
diff --git a/src/Elastic.Clients.Elasticsearch.Serverless/_Generated/Api/MultiTermVectorsRequest.g.cs b/src/Elastic.Clients.Elasticsearch.Serverless/_Generated/Api/MultiTermVectorsRequest.g.cs
index 3452519e2fc..bedde8b16fc 100644
--- a/src/Elastic.Clients.Elasticsearch.Serverless/_Generated/Api/MultiTermVectorsRequest.g.cs
+++ b/src/Elastic.Clients.Elasticsearch.Serverless/_Generated/Api/MultiTermVectorsRequest.g.cs
@@ -198,7 +198,7 @@ public MultiTermVectorsRequestDescriptor(Elastic.Clients.Elasticsearch.Serverles
 	{
 	}
 
-	public MultiTermVectorsRequestDescriptor()
+	public MultiTermVectorsRequestDescriptor() : this(typeof(TDocument))
 	{
 	}
 
diff --git a/src/Elastic.Clients.Elasticsearch.Serverless/_Generated/Api/TermsEnumRequest.g.cs b/src/Elastic.Clients.Elasticsearch.Serverless/_Generated/Api/TermsEnumRequest.g.cs
index daf16223971..95e39f9cd8c 100644
--- a/src/Elastic.Clients.Elasticsearch.Serverless/_Generated/Api/TermsEnumRequest.g.cs
+++ b/src/Elastic.Clients.Elasticsearch.Serverless/_Generated/Api/TermsEnumRequest.g.cs
@@ -100,6 +100,10 @@ public TermsEnumRequestDescriptor(Elastic.Clients.Elasticsearch.Serverless.Index
 	{
 	}
 
+	public TermsEnumRequestDescriptor() : this(typeof(TDocument))
+	{
+	}
+
 	internal override ApiUrls ApiUrls => ApiUrlLookup.NoNamespaceTermsEnum;
 
 	protected override HttpMethod StaticHttpMethod => HttpMethod.POST;
diff --git a/src/Elastic.Clients.Elasticsearch.Serverless/_Generated/Client/ElasticsearchClient.Indices.g.cs b/src/Elastic.Clients.Elasticsearch.Serverless/_Generated/Client/ElasticsearchClient.Indices.g.cs
index 6a216ccd2be..2da23396afb 100644
--- a/src/Elastic.Clients.Elasticsearch.Serverless/_Generated/Client/ElasticsearchClient.Indices.g.cs
+++ b/src/Elastic.Clients.Elasticsearch.Serverless/_Generated/Client/ElasticsearchClient.Indices.g.cs
@@ -423,6 +423,29 @@ public virtual Task<CreateIndexResponse> CreateAsync<TDocument>(Elastic.Clients.
 		return DoRequestAsync<CreateIndexRequestDescriptor<TDocument>, CreateIndexResponse, CreateIndexRequestParameters>(descriptor, cancellationToken);
 	}
 
+	/// <summary>
+	/// <para>Creates an index with optional settings and mappings.</para>
+	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/8.13/indices-create-index.html">Learn more about this API in the Elasticsearch documentation.</see></para>
+	/// </summary>
+	public virtual Task<CreateIndexResponse> CreateAsync<TDocument>(CancellationToken cancellationToken = default)
+	{
+		var descriptor = new CreateIndexRequestDescriptor<TDocument>();
+		descriptor.BeforeRequest();
+		return DoRequestAsync<CreateIndexRequestDescriptor<TDocument>, CreateIndexResponse, CreateIndexRequestParameters>(descriptor, cancellationToken);
+	}
+
+	/// <summary>
+	/// <para>Creates an index with optional settings and mappings.</para>
+	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/8.13/indices-create-index.html">Learn more about this API in the Elasticsearch documentation.</see></para>
+	/// </summary>
+	public virtual Task<CreateIndexResponse> CreateAsync<TDocument>(Action<CreateIndexRequestDescriptor<TDocument>> configureRequest, CancellationToken cancellationToken = default)
+	{
+		var descriptor = new CreateIndexRequestDescriptor<TDocument>();
+		configureRequest?.Invoke(descriptor);
+		descriptor.BeforeRequest();
+		return DoRequestAsync<CreateIndexRequestDescriptor<TDocument>, CreateIndexResponse, CreateIndexRequestParameters>(descriptor, cancellationToken);
+	}
+
 	/// <summary>
 	/// <para>Creates an index with optional settings and mappings.</para>
 	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/8.13/indices-create-index.html">Learn more about this API in the Elasticsearch documentation.</see></para>
diff --git a/src/Elastic.Clients.Elasticsearch.Serverless/_Generated/Client/ElasticsearchClient.g.cs b/src/Elastic.Clients.Elasticsearch.Serverless/_Generated/Client/ElasticsearchClient.g.cs
index 758ce5d713a..4c44d1f196a 100644
--- a/src/Elastic.Clients.Elasticsearch.Serverless/_Generated/Client/ElasticsearchClient.g.cs
+++ b/src/Elastic.Clients.Elasticsearch.Serverless/_Generated/Client/ElasticsearchClient.g.cs
@@ -3311,6 +3311,29 @@ public virtual Task<TermsEnumResponse> TermsEnumAsync<TDocument>(Elastic.Clients
 		return DoRequestAsync<TermsEnumRequestDescriptor<TDocument>, TermsEnumResponse, TermsEnumRequestParameters>(descriptor, cancellationToken);
 	}
 
+	/// <summary>
+	/// <para>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.</para>
+	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/current/search-terms-enum.html">Learn more about this API in the Elasticsearch documentation.</see></para>
+	/// </summary>
+	public virtual Task<TermsEnumResponse> TermsEnumAsync<TDocument>(CancellationToken cancellationToken = default)
+	{
+		var descriptor = new TermsEnumRequestDescriptor<TDocument>();
+		descriptor.BeforeRequest();
+		return DoRequestAsync<TermsEnumRequestDescriptor<TDocument>, TermsEnumResponse, TermsEnumRequestParameters>(descriptor, cancellationToken);
+	}
+
+	/// <summary>
+	/// <para>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.</para>
+	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/current/search-terms-enum.html">Learn more about this API in the Elasticsearch documentation.</see></para>
+	/// </summary>
+	public virtual Task<TermsEnumResponse> TermsEnumAsync<TDocument>(Action<TermsEnumRequestDescriptor<TDocument>> configureRequest, CancellationToken cancellationToken = default)
+	{
+		var descriptor = new TermsEnumRequestDescriptor<TDocument>();
+		configureRequest?.Invoke(descriptor);
+		descriptor.BeforeRequest();
+		return DoRequestAsync<TermsEnumRequestDescriptor<TDocument>, TermsEnumResponse, TermsEnumRequestParameters>(descriptor, cancellationToken);
+	}
+
 	/// <summary>
 	/// <para>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.</para>
 	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/current/search-terms-enum.html">Learn more about this API in the Elasticsearch documentation.</see></para>
diff --git a/src/Elastic.Clients.Elasticsearch.Serverless/_Generated/Types/Aggregations/TopHitsAggregation.g.cs b/src/Elastic.Clients.Elasticsearch.Serverless/_Generated/Types/Aggregations/TopHitsAggregation.g.cs
index cae957ce4b5..681f757ff1c 100644
--- a/src/Elastic.Clients.Elasticsearch.Serverless/_Generated/Types/Aggregations/TopHitsAggregation.g.cs
+++ b/src/Elastic.Clients.Elasticsearch.Serverless/_Generated/Types/Aggregations/TopHitsAggregation.g.cs
@@ -33,8 +33,7 @@ public sealed partial class TopHitsAggregation
 	/// <para>Fields for which to return doc values.</para>
 	/// </summary>
 	[JsonInclude, JsonPropertyName("docvalue_fields")]
-	[JsonConverter(typeof(SingleOrManyFieldsConverter))]
-	public Elastic.Clients.Elasticsearch.Serverless.Fields? DocvalueFields { get; set; }
+	public ICollection<Elastic.Clients.Elasticsearch.Serverless.QueryDsl.FieldAndFormat>? DocvalueFields { get; set; }
 
 	/// <summary>
 	/// <para>If `true`, returns detailed information about score computation as part of a hit.</para>
@@ -48,6 +47,12 @@ public sealed partial class TopHitsAggregation
 	[JsonInclude, JsonPropertyName("field")]
 	public Elastic.Clients.Elasticsearch.Serverless.Field? Field { get; set; }
 
+	/// <summary>
+	/// <para>Array of wildcard (*) patterns. The request returns values for field names<br/>matching these patterns in the hits.fields property of the response.</para>
+	/// </summary>
+	[JsonInclude, JsonPropertyName("fields")]
+	public ICollection<Elastic.Clients.Elasticsearch.Serverless.QueryDsl.FieldAndFormat>? Fields { get; set; }
+
 	/// <summary>
 	/// <para>Starting document offset.</para>
 	/// </summary>
@@ -129,9 +134,16 @@ public TopHitsAggregationDescriptor() : base()
 	{
 	}
 
-	private Elastic.Clients.Elasticsearch.Serverless.Fields? DocvalueFieldsValue { get; set; }
+	private ICollection<Elastic.Clients.Elasticsearch.Serverless.QueryDsl.FieldAndFormat>? DocvalueFieldsValue { get; set; }
+	private Elastic.Clients.Elasticsearch.Serverless.QueryDsl.FieldAndFormatDescriptor<TDocument> DocvalueFieldsDescriptor { get; set; }
+	private Action<Elastic.Clients.Elasticsearch.Serverless.QueryDsl.FieldAndFormatDescriptor<TDocument>> DocvalueFieldsDescriptorAction { get; set; }
+	private Action<Elastic.Clients.Elasticsearch.Serverless.QueryDsl.FieldAndFormatDescriptor<TDocument>>[] DocvalueFieldsDescriptorActions { get; set; }
 	private bool? ExplainValue { get; set; }
 	private Elastic.Clients.Elasticsearch.Serverless.Field? FieldValue { get; set; }
+	private ICollection<Elastic.Clients.Elasticsearch.Serverless.QueryDsl.FieldAndFormat>? FieldsValue { get; set; }
+	private Elastic.Clients.Elasticsearch.Serverless.QueryDsl.FieldAndFormatDescriptor<TDocument> FieldsDescriptor { get; set; }
+	private Action<Elastic.Clients.Elasticsearch.Serverless.QueryDsl.FieldAndFormatDescriptor<TDocument>> FieldsDescriptorAction { get; set; }
+	private Action<Elastic.Clients.Elasticsearch.Serverless.QueryDsl.FieldAndFormatDescriptor<TDocument>>[] FieldsDescriptorActions { get; set; }
 	private int? FromValue { get; set; }
 	private Elastic.Clients.Elasticsearch.Serverless.Core.Search.Highlight? HighlightValue { get; set; }
 	private Elastic.Clients.Elasticsearch.Serverless.Core.Search.HighlightDescriptor<TDocument> HighlightDescriptor { get; set; }
@@ -153,12 +165,42 @@ public TopHitsAggregationDescriptor() : base()
 	/// <summary>
 	/// <para>Fields for which to return doc values.</para>
 	/// </summary>
-	public TopHitsAggregationDescriptor<TDocument> DocvalueFields(Elastic.Clients.Elasticsearch.Serverless.Fields? docvalueFields)
+	public TopHitsAggregationDescriptor<TDocument> DocvalueFields(ICollection<Elastic.Clients.Elasticsearch.Serverless.QueryDsl.FieldAndFormat>? docvalueFields)
 	{
+		DocvalueFieldsDescriptor = null;
+		DocvalueFieldsDescriptorAction = null;
+		DocvalueFieldsDescriptorActions = null;
 		DocvalueFieldsValue = docvalueFields;
 		return Self;
 	}
 
+	public TopHitsAggregationDescriptor<TDocument> DocvalueFields(Elastic.Clients.Elasticsearch.Serverless.QueryDsl.FieldAndFormatDescriptor<TDocument> descriptor)
+	{
+		DocvalueFieldsValue = null;
+		DocvalueFieldsDescriptorAction = null;
+		DocvalueFieldsDescriptorActions = null;
+		DocvalueFieldsDescriptor = descriptor;
+		return Self;
+	}
+
+	public TopHitsAggregationDescriptor<TDocument> DocvalueFields(Action<Elastic.Clients.Elasticsearch.Serverless.QueryDsl.FieldAndFormatDescriptor<TDocument>> configure)
+	{
+		DocvalueFieldsValue = null;
+		DocvalueFieldsDescriptor = null;
+		DocvalueFieldsDescriptorActions = null;
+		DocvalueFieldsDescriptorAction = configure;
+		return Self;
+	}
+
+	public TopHitsAggregationDescriptor<TDocument> DocvalueFields(params Action<Elastic.Clients.Elasticsearch.Serverless.QueryDsl.FieldAndFormatDescriptor<TDocument>>[] configure)
+	{
+		DocvalueFieldsValue = null;
+		DocvalueFieldsDescriptor = null;
+		DocvalueFieldsDescriptorAction = null;
+		DocvalueFieldsDescriptorActions = configure;
+		return Self;
+	}
+
 	/// <summary>
 	/// <para>If `true`, returns detailed information about score computation as part of a hit.</para>
 	/// </summary>
@@ -195,6 +237,45 @@ public TopHitsAggregationDescriptor<TDocument> Field(Expression<Func<TDocument,
 		return Self;
 	}
 
+	/// <summary>
+	/// <para>Array of wildcard (*) patterns. The request returns values for field names<br/>matching these patterns in the hits.fields property of the response.</para>
+	/// </summary>
+	public TopHitsAggregationDescriptor<TDocument> Fields(ICollection<Elastic.Clients.Elasticsearch.Serverless.QueryDsl.FieldAndFormat>? fields)
+	{
+		FieldsDescriptor = null;
+		FieldsDescriptorAction = null;
+		FieldsDescriptorActions = null;
+		FieldsValue = fields;
+		return Self;
+	}
+
+	public TopHitsAggregationDescriptor<TDocument> Fields(Elastic.Clients.Elasticsearch.Serverless.QueryDsl.FieldAndFormatDescriptor<TDocument> descriptor)
+	{
+		FieldsValue = null;
+		FieldsDescriptorAction = null;
+		FieldsDescriptorActions = null;
+		FieldsDescriptor = descriptor;
+		return Self;
+	}
+
+	public TopHitsAggregationDescriptor<TDocument> Fields(Action<Elastic.Clients.Elasticsearch.Serverless.QueryDsl.FieldAndFormatDescriptor<TDocument>> configure)
+	{
+		FieldsValue = null;
+		FieldsDescriptor = null;
+		FieldsDescriptorActions = null;
+		FieldsDescriptorAction = configure;
+		return Self;
+	}
+
+	public TopHitsAggregationDescriptor<TDocument> Fields(params Action<Elastic.Clients.Elasticsearch.Serverless.QueryDsl.FieldAndFormatDescriptor<TDocument>>[] configure)
+	{
+		FieldsValue = null;
+		FieldsDescriptor = null;
+		FieldsDescriptorAction = null;
+		FieldsDescriptorActions = configure;
+		return Self;
+	}
+
 	/// <summary>
 	/// <para>Starting document offset.</para>
 	/// </summary>
@@ -351,7 +432,32 @@ public TopHitsAggregationDescriptor<TDocument> Version(bool? version = true)
 	protected override void Serialize(Utf8JsonWriter writer, JsonSerializerOptions options, IElasticsearchClientSettings settings)
 	{
 		writer.WriteStartObject();
-		if (DocvalueFieldsValue is not null)
+		if (DocvalueFieldsDescriptor is not null)
+		{
+			writer.WritePropertyName("docvalue_fields");
+			writer.WriteStartArray();
+			JsonSerializer.Serialize(writer, DocvalueFieldsDescriptor, options);
+			writer.WriteEndArray();
+		}
+		else if (DocvalueFieldsDescriptorAction is not null)
+		{
+			writer.WritePropertyName("docvalue_fields");
+			writer.WriteStartArray();
+			JsonSerializer.Serialize(writer, new Elastic.Clients.Elasticsearch.Serverless.QueryDsl.FieldAndFormatDescriptor<TDocument>(DocvalueFieldsDescriptorAction), options);
+			writer.WriteEndArray();
+		}
+		else if (DocvalueFieldsDescriptorActions is not null)
+		{
+			writer.WritePropertyName("docvalue_fields");
+			writer.WriteStartArray();
+			foreach (var action in DocvalueFieldsDescriptorActions)
+			{
+				JsonSerializer.Serialize(writer, new Elastic.Clients.Elasticsearch.Serverless.QueryDsl.FieldAndFormatDescriptor<TDocument>(action), options);
+			}
+
+			writer.WriteEndArray();
+		}
+		else if (DocvalueFieldsValue is not null)
 		{
 			writer.WritePropertyName("docvalue_fields");
 			JsonSerializer.Serialize(writer, DocvalueFieldsValue, options);
@@ -369,6 +475,37 @@ protected override void Serialize(Utf8JsonWriter writer, JsonSerializerOptions o
 			JsonSerializer.Serialize(writer, FieldValue, options);
 		}
 
+		if (FieldsDescriptor is not null)
+		{
+			writer.WritePropertyName("fields");
+			writer.WriteStartArray();
+			JsonSerializer.Serialize(writer, FieldsDescriptor, options);
+			writer.WriteEndArray();
+		}
+		else if (FieldsDescriptorAction is not null)
+		{
+			writer.WritePropertyName("fields");
+			writer.WriteStartArray();
+			JsonSerializer.Serialize(writer, new Elastic.Clients.Elasticsearch.Serverless.QueryDsl.FieldAndFormatDescriptor<TDocument>(FieldsDescriptorAction), options);
+			writer.WriteEndArray();
+		}
+		else if (FieldsDescriptorActions is not null)
+		{
+			writer.WritePropertyName("fields");
+			writer.WriteStartArray();
+			foreach (var action in FieldsDescriptorActions)
+			{
+				JsonSerializer.Serialize(writer, new Elastic.Clients.Elasticsearch.Serverless.QueryDsl.FieldAndFormatDescriptor<TDocument>(action), options);
+			}
+
+			writer.WriteEndArray();
+		}
+		else if (FieldsValue is not null)
+		{
+			writer.WritePropertyName("fields");
+			JsonSerializer.Serialize(writer, FieldsValue, options);
+		}
+
 		if (FromValue.HasValue)
 		{
 			writer.WritePropertyName("from");
@@ -486,9 +623,16 @@ public TopHitsAggregationDescriptor() : base()
 	{
 	}
 
-	private Elastic.Clients.Elasticsearch.Serverless.Fields? DocvalueFieldsValue { get; set; }
+	private ICollection<Elastic.Clients.Elasticsearch.Serverless.QueryDsl.FieldAndFormat>? DocvalueFieldsValue { get; set; }
+	private Elastic.Clients.Elasticsearch.Serverless.QueryDsl.FieldAndFormatDescriptor DocvalueFieldsDescriptor { get; set; }
+	private Action<Elastic.Clients.Elasticsearch.Serverless.QueryDsl.FieldAndFormatDescriptor> DocvalueFieldsDescriptorAction { get; set; }
+	private Action<Elastic.Clients.Elasticsearch.Serverless.QueryDsl.FieldAndFormatDescriptor>[] DocvalueFieldsDescriptorActions { get; set; }
 	private bool? ExplainValue { get; set; }
 	private Elastic.Clients.Elasticsearch.Serverless.Field? FieldValue { get; set; }
+	private ICollection<Elastic.Clients.Elasticsearch.Serverless.QueryDsl.FieldAndFormat>? FieldsValue { get; set; }
+	private Elastic.Clients.Elasticsearch.Serverless.QueryDsl.FieldAndFormatDescriptor FieldsDescriptor { get; set; }
+	private Action<Elastic.Clients.Elasticsearch.Serverless.QueryDsl.FieldAndFormatDescriptor> FieldsDescriptorAction { get; set; }
+	private Action<Elastic.Clients.Elasticsearch.Serverless.QueryDsl.FieldAndFormatDescriptor>[] FieldsDescriptorActions { get; set; }
 	private int? FromValue { get; set; }
 	private Elastic.Clients.Elasticsearch.Serverless.Core.Search.Highlight? HighlightValue { get; set; }
 	private Elastic.Clients.Elasticsearch.Serverless.Core.Search.HighlightDescriptor HighlightDescriptor { get; set; }
@@ -510,12 +654,42 @@ public TopHitsAggregationDescriptor() : base()
 	/// <summary>
 	/// <para>Fields for which to return doc values.</para>
 	/// </summary>
-	public TopHitsAggregationDescriptor DocvalueFields(Elastic.Clients.Elasticsearch.Serverless.Fields? docvalueFields)
+	public TopHitsAggregationDescriptor DocvalueFields(ICollection<Elastic.Clients.Elasticsearch.Serverless.QueryDsl.FieldAndFormat>? docvalueFields)
 	{
+		DocvalueFieldsDescriptor = null;
+		DocvalueFieldsDescriptorAction = null;
+		DocvalueFieldsDescriptorActions = null;
 		DocvalueFieldsValue = docvalueFields;
 		return Self;
 	}
 
+	public TopHitsAggregationDescriptor DocvalueFields(Elastic.Clients.Elasticsearch.Serverless.QueryDsl.FieldAndFormatDescriptor descriptor)
+	{
+		DocvalueFieldsValue = null;
+		DocvalueFieldsDescriptorAction = null;
+		DocvalueFieldsDescriptorActions = null;
+		DocvalueFieldsDescriptor = descriptor;
+		return Self;
+	}
+
+	public TopHitsAggregationDescriptor DocvalueFields(Action<Elastic.Clients.Elasticsearch.Serverless.QueryDsl.FieldAndFormatDescriptor> configure)
+	{
+		DocvalueFieldsValue = null;
+		DocvalueFieldsDescriptor = null;
+		DocvalueFieldsDescriptorActions = null;
+		DocvalueFieldsDescriptorAction = configure;
+		return Self;
+	}
+
+	public TopHitsAggregationDescriptor DocvalueFields(params Action<Elastic.Clients.Elasticsearch.Serverless.QueryDsl.FieldAndFormatDescriptor>[] configure)
+	{
+		DocvalueFieldsValue = null;
+		DocvalueFieldsDescriptor = null;
+		DocvalueFieldsDescriptorAction = null;
+		DocvalueFieldsDescriptorActions = configure;
+		return Self;
+	}
+
 	/// <summary>
 	/// <para>If `true`, returns detailed information about score computation as part of a hit.</para>
 	/// </summary>
@@ -552,6 +726,45 @@ public TopHitsAggregationDescriptor Field<TDocument>(Expression<Func<TDocument,
 		return Self;
 	}
 
+	/// <summary>
+	/// <para>Array of wildcard (*) patterns. The request returns values for field names<br/>matching these patterns in the hits.fields property of the response.</para>
+	/// </summary>
+	public TopHitsAggregationDescriptor Fields(ICollection<Elastic.Clients.Elasticsearch.Serverless.QueryDsl.FieldAndFormat>? fields)
+	{
+		FieldsDescriptor = null;
+		FieldsDescriptorAction = null;
+		FieldsDescriptorActions = null;
+		FieldsValue = fields;
+		return Self;
+	}
+
+	public TopHitsAggregationDescriptor Fields(Elastic.Clients.Elasticsearch.Serverless.QueryDsl.FieldAndFormatDescriptor descriptor)
+	{
+		FieldsValue = null;
+		FieldsDescriptorAction = null;
+		FieldsDescriptorActions = null;
+		FieldsDescriptor = descriptor;
+		return Self;
+	}
+
+	public TopHitsAggregationDescriptor Fields(Action<Elastic.Clients.Elasticsearch.Serverless.QueryDsl.FieldAndFormatDescriptor> configure)
+	{
+		FieldsValue = null;
+		FieldsDescriptor = null;
+		FieldsDescriptorActions = null;
+		FieldsDescriptorAction = configure;
+		return Self;
+	}
+
+	public TopHitsAggregationDescriptor Fields(params Action<Elastic.Clients.Elasticsearch.Serverless.QueryDsl.FieldAndFormatDescriptor>[] configure)
+	{
+		FieldsValue = null;
+		FieldsDescriptor = null;
+		FieldsDescriptorAction = null;
+		FieldsDescriptorActions = configure;
+		return Self;
+	}
+
 	/// <summary>
 	/// <para>Starting document offset.</para>
 	/// </summary>
@@ -708,7 +921,32 @@ public TopHitsAggregationDescriptor Version(bool? version = true)
 	protected override void Serialize(Utf8JsonWriter writer, JsonSerializerOptions options, IElasticsearchClientSettings settings)
 	{
 		writer.WriteStartObject();
-		if (DocvalueFieldsValue is not null)
+		if (DocvalueFieldsDescriptor is not null)
+		{
+			writer.WritePropertyName("docvalue_fields");
+			writer.WriteStartArray();
+			JsonSerializer.Serialize(writer, DocvalueFieldsDescriptor, options);
+			writer.WriteEndArray();
+		}
+		else if (DocvalueFieldsDescriptorAction is not null)
+		{
+			writer.WritePropertyName("docvalue_fields");
+			writer.WriteStartArray();
+			JsonSerializer.Serialize(writer, new Elastic.Clients.Elasticsearch.Serverless.QueryDsl.FieldAndFormatDescriptor(DocvalueFieldsDescriptorAction), options);
+			writer.WriteEndArray();
+		}
+		else if (DocvalueFieldsDescriptorActions is not null)
+		{
+			writer.WritePropertyName("docvalue_fields");
+			writer.WriteStartArray();
+			foreach (var action in DocvalueFieldsDescriptorActions)
+			{
+				JsonSerializer.Serialize(writer, new Elastic.Clients.Elasticsearch.Serverless.QueryDsl.FieldAndFormatDescriptor(action), options);
+			}
+
+			writer.WriteEndArray();
+		}
+		else if (DocvalueFieldsValue is not null)
 		{
 			writer.WritePropertyName("docvalue_fields");
 			JsonSerializer.Serialize(writer, DocvalueFieldsValue, options);
@@ -726,6 +964,37 @@ protected override void Serialize(Utf8JsonWriter writer, JsonSerializerOptions o
 			JsonSerializer.Serialize(writer, FieldValue, options);
 		}
 
+		if (FieldsDescriptor is not null)
+		{
+			writer.WritePropertyName("fields");
+			writer.WriteStartArray();
+			JsonSerializer.Serialize(writer, FieldsDescriptor, options);
+			writer.WriteEndArray();
+		}
+		else if (FieldsDescriptorAction is not null)
+		{
+			writer.WritePropertyName("fields");
+			writer.WriteStartArray();
+			JsonSerializer.Serialize(writer, new Elastic.Clients.Elasticsearch.Serverless.QueryDsl.FieldAndFormatDescriptor(FieldsDescriptorAction), options);
+			writer.WriteEndArray();
+		}
+		else if (FieldsDescriptorActions is not null)
+		{
+			writer.WritePropertyName("fields");
+			writer.WriteStartArray();
+			foreach (var action in FieldsDescriptorActions)
+			{
+				JsonSerializer.Serialize(writer, new Elastic.Clients.Elasticsearch.Serverless.QueryDsl.FieldAndFormatDescriptor(action), options);
+			}
+
+			writer.WriteEndArray();
+		}
+		else if (FieldsValue is not null)
+		{
+			writer.WritePropertyName("fields");
+			JsonSerializer.Serialize(writer, FieldsValue, options);
+		}
+
 		if (FromValue.HasValue)
 		{
 			writer.WritePropertyName("from");
diff --git a/src/Elastic.Clients.Elasticsearch/_Generated/Api/ApiUrlLookup.g.cs b/src/Elastic.Clients.Elasticsearch/_Generated/Api/ApiUrlLookup.g.cs
index c5dd76e426e..5241411bc42 100644
--- a/src/Elastic.Clients.Elasticsearch/_Generated/Api/ApiUrlLookup.g.cs
+++ b/src/Elastic.Clients.Elasticsearch/_Generated/Api/ApiUrlLookup.g.cs
@@ -132,7 +132,7 @@ internal static class ApiUrlLookup
 	internal static ApiUrls IndexManagementUpdateAliases = new ApiUrls(new[] { "_aliases" });
 	internal static ApiUrls IndexManagementValidateQuery = new ApiUrls(new[] { "_validate/query", "{index}/_validate/query" });
 	internal static ApiUrls InferenceDeleteModel = new ApiUrls(new[] { "_inference/{inference_id}", "_inference/{task_type}/{inference_id}" });
-	internal static ApiUrls InferenceGetModel = new ApiUrls(new[] { "_inference/{inference_id}", "_inference/{task_type}/{inference_id}" });
+	internal static ApiUrls InferenceGetModel = new ApiUrls(new[] { "_inference", "_inference/{inference_id}", "_inference/{task_type}/{inference_id}" });
 	internal static ApiUrls InferenceInference = new ApiUrls(new[] { "_inference/{inference_id}", "_inference/{task_type}/{inference_id}" });
 	internal static ApiUrls InferencePutModel = new ApiUrls(new[] { "_inference/{inference_id}", "_inference/{task_type}/{inference_id}" });
 	internal static ApiUrls IngestDeletePipeline = new ApiUrls(new[] { "_ingest/pipeline/{id}" });
diff --git a/src/Elastic.Clients.Elasticsearch/_Generated/Api/BulkRequest.g.cs b/src/Elastic.Clients.Elasticsearch/_Generated/Api/BulkRequest.g.cs
index f53365af257..48d15b96fe5 100644
--- a/src/Elastic.Clients.Elasticsearch/_Generated/Api/BulkRequest.g.cs
+++ b/src/Elastic.Clients.Elasticsearch/_Generated/Api/BulkRequest.g.cs
@@ -164,7 +164,7 @@ public BulkRequestDescriptor(Elastic.Clients.Elasticsearch.IndexName? index) : b
 	{
 	}
 
-	public BulkRequestDescriptor()
+	public BulkRequestDescriptor() : this(typeof(TDocument))
 	{
 	}
 
diff --git a/src/Elastic.Clients.Elasticsearch/_Generated/Api/CrossClusterReplication/FollowRequest.g.cs b/src/Elastic.Clients.Elasticsearch/_Generated/Api/CrossClusterReplication/FollowRequest.g.cs
index b57796abd8a..a3ec6541f4b 100644
--- a/src/Elastic.Clients.Elasticsearch/_Generated/Api/CrossClusterReplication/FollowRequest.g.cs
+++ b/src/Elastic.Clients.Elasticsearch/_Generated/Api/CrossClusterReplication/FollowRequest.g.cs
@@ -96,6 +96,10 @@ public FollowRequestDescriptor(Elastic.Clients.Elasticsearch.IndexName index) :
 	{
 	}
 
+	public FollowRequestDescriptor() : this(typeof(TDocument))
+	{
+	}
+
 	internal override ApiUrls ApiUrls => ApiUrlLookup.CrossClusterReplicationFollow;
 
 	protected override HttpMethod StaticHttpMethod => HttpMethod.PUT;
diff --git a/src/Elastic.Clients.Elasticsearch/_Generated/Api/CrossClusterReplication/ForgetFollowerRequest.g.cs b/src/Elastic.Clients.Elasticsearch/_Generated/Api/CrossClusterReplication/ForgetFollowerRequest.g.cs
index af934946897..9ca54b85047 100644
--- a/src/Elastic.Clients.Elasticsearch/_Generated/Api/CrossClusterReplication/ForgetFollowerRequest.g.cs
+++ b/src/Elastic.Clients.Elasticsearch/_Generated/Api/CrossClusterReplication/ForgetFollowerRequest.g.cs
@@ -71,6 +71,10 @@ public ForgetFollowerRequestDescriptor(Elastic.Clients.Elasticsearch.IndexName i
 	{
 	}
 
+	public ForgetFollowerRequestDescriptor() : this(typeof(TDocument))
+	{
+	}
+
 	internal override ApiUrls ApiUrls => ApiUrlLookup.CrossClusterReplicationForgetFollower;
 
 	protected override HttpMethod StaticHttpMethod => HttpMethod.POST;
diff --git a/src/Elastic.Clients.Elasticsearch/_Generated/Api/CrossClusterReplication/PauseFollowRequest.g.cs b/src/Elastic.Clients.Elasticsearch/_Generated/Api/CrossClusterReplication/PauseFollowRequest.g.cs
index 216fb5e843c..e1c02d68760 100644
--- a/src/Elastic.Clients.Elasticsearch/_Generated/Api/CrossClusterReplication/PauseFollowRequest.g.cs
+++ b/src/Elastic.Clients.Elasticsearch/_Generated/Api/CrossClusterReplication/PauseFollowRequest.g.cs
@@ -62,6 +62,10 @@ public PauseFollowRequestDescriptor(Elastic.Clients.Elasticsearch.IndexName inde
 	{
 	}
 
+	public PauseFollowRequestDescriptor() : this(typeof(TDocument))
+	{
+	}
+
 	internal override ApiUrls ApiUrls => ApiUrlLookup.CrossClusterReplicationPauseFollow;
 
 	protected override HttpMethod StaticHttpMethod => HttpMethod.POST;
diff --git a/src/Elastic.Clients.Elasticsearch/_Generated/Api/CrossClusterReplication/ResumeFollowRequest.g.cs b/src/Elastic.Clients.Elasticsearch/_Generated/Api/CrossClusterReplication/ResumeFollowRequest.g.cs
index 1ebeedbf17d..7c972aecf2f 100644
--- a/src/Elastic.Clients.Elasticsearch/_Generated/Api/CrossClusterReplication/ResumeFollowRequest.g.cs
+++ b/src/Elastic.Clients.Elasticsearch/_Generated/Api/CrossClusterReplication/ResumeFollowRequest.g.cs
@@ -83,6 +83,10 @@ public ResumeFollowRequestDescriptor(Elastic.Clients.Elasticsearch.IndexName ind
 	{
 	}
 
+	public ResumeFollowRequestDescriptor() : this(typeof(TDocument))
+	{
+	}
+
 	internal override ApiUrls ApiUrls => ApiUrlLookup.CrossClusterReplicationResumeFollow;
 
 	protected override HttpMethod StaticHttpMethod => HttpMethod.POST;
diff --git a/src/Elastic.Clients.Elasticsearch/_Generated/Api/CrossClusterReplication/UnfollowRequest.g.cs b/src/Elastic.Clients.Elasticsearch/_Generated/Api/CrossClusterReplication/UnfollowRequest.g.cs
index 5893118b84a..52fa7cc5436 100644
--- a/src/Elastic.Clients.Elasticsearch/_Generated/Api/CrossClusterReplication/UnfollowRequest.g.cs
+++ b/src/Elastic.Clients.Elasticsearch/_Generated/Api/CrossClusterReplication/UnfollowRequest.g.cs
@@ -62,6 +62,10 @@ public UnfollowRequestDescriptor(Elastic.Clients.Elasticsearch.IndexName index)
 	{
 	}
 
+	public UnfollowRequestDescriptor() : this(typeof(TDocument))
+	{
+	}
+
 	internal override ApiUrls ApiUrls => ApiUrlLookup.CrossClusterReplicationUnfollow;
 
 	protected override HttpMethod StaticHttpMethod => HttpMethod.POST;
diff --git a/src/Elastic.Clients.Elasticsearch/_Generated/Api/Esql/EsqlQueryRequest.g.cs b/src/Elastic.Clients.Elasticsearch/_Generated/Api/Esql/EsqlQueryRequest.g.cs
index 8f76d332896..e6b6c6918a5 100644
--- a/src/Elastic.Clients.Elasticsearch/_Generated/Api/Esql/EsqlQueryRequest.g.cs
+++ b/src/Elastic.Clients.Elasticsearch/_Generated/Api/Esql/EsqlQueryRequest.g.cs
@@ -92,6 +92,12 @@ public sealed partial class EsqlQueryRequest : PlainRequest<EsqlQueryRequestPara
 	/// </summary>
 	[JsonInclude, JsonPropertyName("query")]
 	public string Query { get; set; }
+
+	/// <summary>
+	/// <para>The version of the ES|QL language in which the "query" field was written.</para>
+	/// </summary>
+	[JsonInclude, JsonPropertyName("version")]
+	public Elastic.Clients.Elasticsearch.Esql.Version Version { get; set; }
 }
 
 /// <summary>
@@ -123,6 +129,7 @@ public EsqlQueryRequestDescriptor()
 	private string? LocaleValue { get; set; }
 	private ICollection<object>? ParamsValue { get; set; }
 	private string QueryValue { get; set; }
+	private Elastic.Clients.Elasticsearch.Esql.Version VersionValue { get; set; }
 
 	/// <summary>
 	/// <para>By default, ES|QL returns results as rows. For example, FROM returns each individual document as one row. For the JSON, YAML, CBOR and smile formats, ES|QL can return the results in a columnar fashion where one row represents all the values of a certain column in the results.</para>
@@ -184,6 +191,15 @@ public EsqlQueryRequestDescriptor<TDocument> Query(string query)
 		return Self;
 	}
 
+	/// <summary>
+	/// <para>The version of the ES|QL language in which the "query" field was written.</para>
+	/// </summary>
+	public EsqlQueryRequestDescriptor<TDocument> Version(Elastic.Clients.Elasticsearch.Esql.Version version)
+	{
+		VersionValue = version;
+		return Self;
+	}
+
 	protected override void Serialize(Utf8JsonWriter writer, JsonSerializerOptions options, IElasticsearchClientSettings settings)
 	{
 		writer.WriteStartObject();
@@ -223,6 +239,8 @@ protected override void Serialize(Utf8JsonWriter writer, JsonSerializerOptions o
 
 		writer.WritePropertyName("query");
 		writer.WriteStringValue(QueryValue);
+		writer.WritePropertyName("version");
+		JsonSerializer.Serialize(writer, VersionValue, options);
 		writer.WriteEndObject();
 	}
 }
@@ -256,6 +274,7 @@ public EsqlQueryRequestDescriptor()
 	private string? LocaleValue { get; set; }
 	private ICollection<object>? ParamsValue { get; set; }
 	private string QueryValue { get; set; }
+	private Elastic.Clients.Elasticsearch.Esql.Version VersionValue { get; set; }
 
 	/// <summary>
 	/// <para>By default, ES|QL returns results as rows. For example, FROM returns each individual document as one row. For the JSON, YAML, CBOR and smile formats, ES|QL can return the results in a columnar fashion where one row represents all the values of a certain column in the results.</para>
@@ -317,6 +336,15 @@ public EsqlQueryRequestDescriptor Query(string query)
 		return Self;
 	}
 
+	/// <summary>
+	/// <para>The version of the ES|QL language in which the "query" field was written.</para>
+	/// </summary>
+	public EsqlQueryRequestDescriptor Version(Elastic.Clients.Elasticsearch.Esql.Version version)
+	{
+		VersionValue = version;
+		return Self;
+	}
+
 	protected override void Serialize(Utf8JsonWriter writer, JsonSerializerOptions options, IElasticsearchClientSettings settings)
 	{
 		writer.WriteStartObject();
@@ -356,6 +384,8 @@ protected override void Serialize(Utf8JsonWriter writer, JsonSerializerOptions o
 
 		writer.WritePropertyName("query");
 		writer.WriteStringValue(QueryValue);
+		writer.WritePropertyName("version");
+		JsonSerializer.Serialize(writer, VersionValue, options);
 		writer.WriteEndObject();
 	}
 }
\ No newline at end of file
diff --git a/src/Elastic.Clients.Elasticsearch/_Generated/Api/IndexLifecycleManagement/MoveToStepRequest.g.cs b/src/Elastic.Clients.Elasticsearch/_Generated/Api/IndexLifecycleManagement/MoveToStepRequest.g.cs
index a68f1be678a..a2445fa0ec6 100644
--- a/src/Elastic.Clients.Elasticsearch/_Generated/Api/IndexLifecycleManagement/MoveToStepRequest.g.cs
+++ b/src/Elastic.Clients.Elasticsearch/_Generated/Api/IndexLifecycleManagement/MoveToStepRequest.g.cs
@@ -67,6 +67,10 @@ public MoveToStepRequestDescriptor(Elastic.Clients.Elasticsearch.IndexName index
 	{
 	}
 
+	public MoveToStepRequestDescriptor() : this(typeof(TDocument))
+	{
+	}
+
 	internal override ApiUrls ApiUrls => ApiUrlLookup.IndexLifecycleManagementMoveToStep;
 
 	protected override HttpMethod StaticHttpMethod => HttpMethod.POST;
diff --git a/src/Elastic.Clients.Elasticsearch/_Generated/Api/IndexLifecycleManagement/RemovePolicyRequest.g.cs b/src/Elastic.Clients.Elasticsearch/_Generated/Api/IndexLifecycleManagement/RemovePolicyRequest.g.cs
index 3ce2c05b201..ee6949c36fb 100644
--- a/src/Elastic.Clients.Elasticsearch/_Generated/Api/IndexLifecycleManagement/RemovePolicyRequest.g.cs
+++ b/src/Elastic.Clients.Elasticsearch/_Generated/Api/IndexLifecycleManagement/RemovePolicyRequest.g.cs
@@ -62,6 +62,10 @@ public RemovePolicyRequestDescriptor(Elastic.Clients.Elasticsearch.IndexName ind
 	{
 	}
 
+	public RemovePolicyRequestDescriptor() : this(typeof(TDocument))
+	{
+	}
+
 	internal override ApiUrls ApiUrls => ApiUrlLookup.IndexLifecycleManagementRemovePolicy;
 
 	protected override HttpMethod StaticHttpMethod => HttpMethod.POST;
diff --git a/src/Elastic.Clients.Elasticsearch/_Generated/Api/IndexLifecycleManagement/RetryRequest.g.cs b/src/Elastic.Clients.Elasticsearch/_Generated/Api/IndexLifecycleManagement/RetryRequest.g.cs
index bc0e2e5a0d6..97adb377e80 100644
--- a/src/Elastic.Clients.Elasticsearch/_Generated/Api/IndexLifecycleManagement/RetryRequest.g.cs
+++ b/src/Elastic.Clients.Elasticsearch/_Generated/Api/IndexLifecycleManagement/RetryRequest.g.cs
@@ -62,6 +62,10 @@ public RetryRequestDescriptor(Elastic.Clients.Elasticsearch.IndexName index) : b
 	{
 	}
 
+	public RetryRequestDescriptor() : this(typeof(TDocument))
+	{
+	}
+
 	internal override ApiUrls ApiUrls => ApiUrlLookup.IndexLifecycleManagementRetry;
 
 	protected override HttpMethod StaticHttpMethod => HttpMethod.POST;
diff --git a/src/Elastic.Clients.Elasticsearch/_Generated/Api/IndexManagement/AnalyzeIndexRequest.g.cs b/src/Elastic.Clients.Elasticsearch/_Generated/Api/IndexManagement/AnalyzeIndexRequest.g.cs
index 3d48c5b90e7..013c2c7682c 100644
--- a/src/Elastic.Clients.Elasticsearch/_Generated/Api/IndexManagement/AnalyzeIndexRequest.g.cs
+++ b/src/Elastic.Clients.Elasticsearch/_Generated/Api/IndexManagement/AnalyzeIndexRequest.g.cs
@@ -121,7 +121,7 @@ public AnalyzeIndexRequestDescriptor(Elastic.Clients.Elasticsearch.IndexName? in
 	{
 	}
 
-	public AnalyzeIndexRequestDescriptor()
+	public AnalyzeIndexRequestDescriptor() : this(typeof(TDocument))
 	{
 	}
 
diff --git a/src/Elastic.Clients.Elasticsearch/_Generated/Api/IndexManagement/CloneIndexRequest.g.cs b/src/Elastic.Clients.Elasticsearch/_Generated/Api/IndexManagement/CloneIndexRequest.g.cs
index 2b31d2f13c9..4245b37a08d 100644
--- a/src/Elastic.Clients.Elasticsearch/_Generated/Api/IndexManagement/CloneIndexRequest.g.cs
+++ b/src/Elastic.Clients.Elasticsearch/_Generated/Api/IndexManagement/CloneIndexRequest.g.cs
@@ -106,6 +106,10 @@ public CloneIndexRequestDescriptor(Elastic.Clients.Elasticsearch.IndexName index
 	{
 	}
 
+	public CloneIndexRequestDescriptor(Elastic.Clients.Elasticsearch.Name target) : this(typeof(TDocument), target)
+	{
+	}
+
 	internal override ApiUrls ApiUrls => ApiUrlLookup.IndexManagementClone;
 
 	protected override HttpMethod StaticHttpMethod => HttpMethod.PUT;
diff --git a/src/Elastic.Clients.Elasticsearch/_Generated/Api/IndexManagement/CreateIndexRequest.g.cs b/src/Elastic.Clients.Elasticsearch/_Generated/Api/IndexManagement/CreateIndexRequest.g.cs
index c6f6af60431..9760301010c 100644
--- a/src/Elastic.Clients.Elasticsearch/_Generated/Api/IndexManagement/CreateIndexRequest.g.cs
+++ b/src/Elastic.Clients.Elasticsearch/_Generated/Api/IndexManagement/CreateIndexRequest.g.cs
@@ -112,6 +112,10 @@ public CreateIndexRequestDescriptor(Elastic.Clients.Elasticsearch.IndexName inde
 	{
 	}
 
+	public CreateIndexRequestDescriptor() : this(typeof(TDocument))
+	{
+	}
+
 	internal override ApiUrls ApiUrls => ApiUrlLookup.IndexManagementCreate;
 
 	protected override HttpMethod StaticHttpMethod => HttpMethod.PUT;
diff --git a/src/Elastic.Clients.Elasticsearch/_Generated/Api/IndexManagement/RolloverRequest.g.cs b/src/Elastic.Clients.Elasticsearch/_Generated/Api/IndexManagement/RolloverRequest.g.cs
index e11b0c04754..266b63debb7 100644
--- a/src/Elastic.Clients.Elasticsearch/_Generated/Api/IndexManagement/RolloverRequest.g.cs
+++ b/src/Elastic.Clients.Elasticsearch/_Generated/Api/IndexManagement/RolloverRequest.g.cs
@@ -133,7 +133,7 @@ public RolloverRequestDescriptor(Elastic.Clients.Elasticsearch.IndexAlias alias,
 	{
 	}
 
-	public RolloverRequestDescriptor(Elastic.Clients.Elasticsearch.IndexAlias alias) : base(r => r.Required("alias", alias))
+	public RolloverRequestDescriptor(Elastic.Clients.Elasticsearch.IndexAlias alias) : this(alias, typeof(TDocument))
 	{
 	}
 
diff --git a/src/Elastic.Clients.Elasticsearch/_Generated/Api/Inference/GetModelRequest.g.cs b/src/Elastic.Clients.Elasticsearch/_Generated/Api/Inference/GetModelRequest.g.cs
index 12e0b52495a..e0b4750a610 100644
--- a/src/Elastic.Clients.Elasticsearch/_Generated/Api/Inference/GetModelRequest.g.cs
+++ b/src/Elastic.Clients.Elasticsearch/_Generated/Api/Inference/GetModelRequest.g.cs
@@ -38,11 +38,15 @@ public sealed partial class GetModelRequestParameters : RequestParameters
 /// </summary>
 public sealed partial class GetModelRequest : PlainRequest<GetModelRequestParameters>
 {
-	public GetModelRequest(Elastic.Clients.Elasticsearch.Id inferenceId) : base(r => r.Required("inference_id", inferenceId))
+	public GetModelRequest()
 	{
 	}
 
-	public GetModelRequest(Elastic.Clients.Elasticsearch.Inference.TaskType? taskType, Elastic.Clients.Elasticsearch.Id inferenceId) : base(r => r.Optional("task_type", taskType).Required("inference_id", inferenceId))
+	public GetModelRequest(Elastic.Clients.Elasticsearch.Id? inferenceId) : base(r => r.Optional("inference_id", inferenceId))
+	{
+	}
+
+	public GetModelRequest(Elastic.Clients.Elasticsearch.Inference.TaskType? taskType, Elastic.Clients.Elasticsearch.Id? inferenceId) : base(r => r.Optional("task_type", taskType).Optional("inference_id", inferenceId))
 	{
 	}
 
@@ -62,11 +66,11 @@ public sealed partial class GetModelRequestDescriptor : RequestDescriptor<GetMod
 {
 	internal GetModelRequestDescriptor(Action<GetModelRequestDescriptor> configure) => configure.Invoke(this);
 
-	public GetModelRequestDescriptor(Elastic.Clients.Elasticsearch.Inference.TaskType? taskType, Elastic.Clients.Elasticsearch.Id inferenceId) : base(r => r.Optional("task_type", taskType).Required("inference_id", inferenceId))
+	public GetModelRequestDescriptor(Elastic.Clients.Elasticsearch.Inference.TaskType? taskType, Elastic.Clients.Elasticsearch.Id? inferenceId) : base(r => r.Optional("task_type", taskType).Optional("inference_id", inferenceId))
 	{
 	}
 
-	public GetModelRequestDescriptor(Elastic.Clients.Elasticsearch.Id inferenceId) : base(r => r.Required("inference_id", inferenceId))
+	public GetModelRequestDescriptor()
 	{
 	}
 
@@ -78,9 +82,9 @@ public GetModelRequestDescriptor(Elastic.Clients.Elasticsearch.Id inferenceId) :
 
 	internal override string OperationName => "inference.get_model";
 
-	public GetModelRequestDescriptor InferenceId(Elastic.Clients.Elasticsearch.Id inferenceId)
+	public GetModelRequestDescriptor InferenceId(Elastic.Clients.Elasticsearch.Id? inferenceId)
 	{
-		RouteValues.Required("inference_id", inferenceId);
+		RouteValues.Optional("inference_id", inferenceId);
 		return Self;
 	}
 
diff --git a/src/Elastic.Clients.Elasticsearch/_Generated/Api/MultiGetRequest.g.cs b/src/Elastic.Clients.Elasticsearch/_Generated/Api/MultiGetRequest.g.cs
index 3fefe849a02..0529e06c25c 100644
--- a/src/Elastic.Clients.Elasticsearch/_Generated/Api/MultiGetRequest.g.cs
+++ b/src/Elastic.Clients.Elasticsearch/_Generated/Api/MultiGetRequest.g.cs
@@ -176,7 +176,7 @@ public MultiGetRequestDescriptor(Elastic.Clients.Elasticsearch.IndexName? index)
 	{
 	}
 
-	public MultiGetRequestDescriptor()
+	public MultiGetRequestDescriptor() : this(typeof(TDocument))
 	{
 	}
 
diff --git a/src/Elastic.Clients.Elasticsearch/_Generated/Api/MultiTermVectorsRequest.g.cs b/src/Elastic.Clients.Elasticsearch/_Generated/Api/MultiTermVectorsRequest.g.cs
index 5222ce4935a..8953c5d5039 100644
--- a/src/Elastic.Clients.Elasticsearch/_Generated/Api/MultiTermVectorsRequest.g.cs
+++ b/src/Elastic.Clients.Elasticsearch/_Generated/Api/MultiTermVectorsRequest.g.cs
@@ -198,7 +198,7 @@ public MultiTermVectorsRequestDescriptor(Elastic.Clients.Elasticsearch.IndexName
 	{
 	}
 
-	public MultiTermVectorsRequestDescriptor()
+	public MultiTermVectorsRequestDescriptor() : this(typeof(TDocument))
 	{
 	}
 
diff --git a/src/Elastic.Clients.Elasticsearch/_Generated/Api/TermsEnumRequest.g.cs b/src/Elastic.Clients.Elasticsearch/_Generated/Api/TermsEnumRequest.g.cs
index 0520223c0dd..a496a093563 100644
--- a/src/Elastic.Clients.Elasticsearch/_Generated/Api/TermsEnumRequest.g.cs
+++ b/src/Elastic.Clients.Elasticsearch/_Generated/Api/TermsEnumRequest.g.cs
@@ -100,6 +100,10 @@ public TermsEnumRequestDescriptor(Elastic.Clients.Elasticsearch.IndexName index)
 	{
 	}
 
+	public TermsEnumRequestDescriptor() : this(typeof(TDocument))
+	{
+	}
+
 	internal override ApiUrls ApiUrls => ApiUrlLookup.NoNamespaceTermsEnum;
 
 	protected override HttpMethod StaticHttpMethod => HttpMethod.POST;
diff --git a/src/Elastic.Clients.Elasticsearch/_Generated/Client/ElasticsearchClient.Ccr.g.cs b/src/Elastic.Clients.Elasticsearch/_Generated/Client/ElasticsearchClient.Ccr.g.cs
index 2dd5c2bf666..5d45759634f 100644
--- a/src/Elastic.Clients.Elasticsearch/_Generated/Client/ElasticsearchClient.Ccr.g.cs
+++ b/src/Elastic.Clients.Elasticsearch/_Generated/Client/ElasticsearchClient.Ccr.g.cs
@@ -184,6 +184,31 @@ public virtual FollowResponse Follow<TDocument>(Elastic.Clients.Elasticsearch.In
 		return DoRequest<FollowRequestDescriptor<TDocument>, FollowResponse, FollowRequestParameters>(descriptor);
 	}
 
+	/// <summary>
+	/// <para>Creates a new follower index configured to follow the referenced leader index.</para>
+	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/8.13/ccr-put-follow.html">Learn more about this API in the Elasticsearch documentation.</see></para>
+	/// </summary>
+	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
+	public virtual FollowResponse Follow<TDocument>()
+	{
+		var descriptor = new FollowRequestDescriptor<TDocument>();
+		descriptor.BeforeRequest();
+		return DoRequest<FollowRequestDescriptor<TDocument>, FollowResponse, FollowRequestParameters>(descriptor);
+	}
+
+	/// <summary>
+	/// <para>Creates a new follower index configured to follow the referenced leader index.</para>
+	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/8.13/ccr-put-follow.html">Learn more about this API in the Elasticsearch documentation.</see></para>
+	/// </summary>
+	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
+	public virtual FollowResponse Follow<TDocument>(Action<FollowRequestDescriptor<TDocument>> configureRequest)
+	{
+		var descriptor = new FollowRequestDescriptor<TDocument>();
+		configureRequest?.Invoke(descriptor);
+		descriptor.BeforeRequest();
+		return DoRequest<FollowRequestDescriptor<TDocument>, FollowResponse, FollowRequestParameters>(descriptor);
+	}
+
 	/// <summary>
 	/// <para>Creates a new follower index configured to follow the referenced leader index.</para>
 	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/8.13/ccr-put-follow.html">Learn more about this API in the Elasticsearch documentation.</see></para>
@@ -253,6 +278,29 @@ public virtual Task<FollowResponse> FollowAsync<TDocument>(Elastic.Clients.Elast
 		return DoRequestAsync<FollowRequestDescriptor<TDocument>, FollowResponse, FollowRequestParameters>(descriptor, cancellationToken);
 	}
 
+	/// <summary>
+	/// <para>Creates a new follower index configured to follow the referenced leader index.</para>
+	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/8.13/ccr-put-follow.html">Learn more about this API in the Elasticsearch documentation.</see></para>
+	/// </summary>
+	public virtual Task<FollowResponse> FollowAsync<TDocument>(CancellationToken cancellationToken = default)
+	{
+		var descriptor = new FollowRequestDescriptor<TDocument>();
+		descriptor.BeforeRequest();
+		return DoRequestAsync<FollowRequestDescriptor<TDocument>, FollowResponse, FollowRequestParameters>(descriptor, cancellationToken);
+	}
+
+	/// <summary>
+	/// <para>Creates a new follower index configured to follow the referenced leader index.</para>
+	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/8.13/ccr-put-follow.html">Learn more about this API in the Elasticsearch documentation.</see></para>
+	/// </summary>
+	public virtual Task<FollowResponse> FollowAsync<TDocument>(Action<FollowRequestDescriptor<TDocument>> configureRequest, CancellationToken cancellationToken = default)
+	{
+		var descriptor = new FollowRequestDescriptor<TDocument>();
+		configureRequest?.Invoke(descriptor);
+		descriptor.BeforeRequest();
+		return DoRequestAsync<FollowRequestDescriptor<TDocument>, FollowResponse, FollowRequestParameters>(descriptor, cancellationToken);
+	}
+
 	/// <summary>
 	/// <para>Creates a new follower index configured to follow the referenced leader index.</para>
 	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/8.13/ccr-put-follow.html">Learn more about this API in the Elasticsearch documentation.</see></para>
@@ -757,6 +805,31 @@ public virtual ForgetFollowerResponse ForgetFollower<TDocument>(Elastic.Clients.
 		return DoRequest<ForgetFollowerRequestDescriptor<TDocument>, ForgetFollowerResponse, ForgetFollowerRequestParameters>(descriptor);
 	}
 
+	/// <summary>
+	/// <para>Removes the follower retention leases from the leader.</para>
+	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/8.13/ccr-post-forget-follower.html">Learn more about this API in the Elasticsearch documentation.</see></para>
+	/// </summary>
+	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
+	public virtual ForgetFollowerResponse ForgetFollower<TDocument>()
+	{
+		var descriptor = new ForgetFollowerRequestDescriptor<TDocument>();
+		descriptor.BeforeRequest();
+		return DoRequest<ForgetFollowerRequestDescriptor<TDocument>, ForgetFollowerResponse, ForgetFollowerRequestParameters>(descriptor);
+	}
+
+	/// <summary>
+	/// <para>Removes the follower retention leases from the leader.</para>
+	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/8.13/ccr-post-forget-follower.html">Learn more about this API in the Elasticsearch documentation.</see></para>
+	/// </summary>
+	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
+	public virtual ForgetFollowerResponse ForgetFollower<TDocument>(Action<ForgetFollowerRequestDescriptor<TDocument>> configureRequest)
+	{
+		var descriptor = new ForgetFollowerRequestDescriptor<TDocument>();
+		configureRequest?.Invoke(descriptor);
+		descriptor.BeforeRequest();
+		return DoRequest<ForgetFollowerRequestDescriptor<TDocument>, ForgetFollowerResponse, ForgetFollowerRequestParameters>(descriptor);
+	}
+
 	/// <summary>
 	/// <para>Removes the follower retention leases from the leader.</para>
 	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/8.13/ccr-post-forget-follower.html">Learn more about this API in the Elasticsearch documentation.</see></para>
@@ -826,6 +899,29 @@ public virtual Task<ForgetFollowerResponse> ForgetFollowerAsync<TDocument>(Elast
 		return DoRequestAsync<ForgetFollowerRequestDescriptor<TDocument>, ForgetFollowerResponse, ForgetFollowerRequestParameters>(descriptor, cancellationToken);
 	}
 
+	/// <summary>
+	/// <para>Removes the follower retention leases from the leader.</para>
+	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/8.13/ccr-post-forget-follower.html">Learn more about this API in the Elasticsearch documentation.</see></para>
+	/// </summary>
+	public virtual Task<ForgetFollowerResponse> ForgetFollowerAsync<TDocument>(CancellationToken cancellationToken = default)
+	{
+		var descriptor = new ForgetFollowerRequestDescriptor<TDocument>();
+		descriptor.BeforeRequest();
+		return DoRequestAsync<ForgetFollowerRequestDescriptor<TDocument>, ForgetFollowerResponse, ForgetFollowerRequestParameters>(descriptor, cancellationToken);
+	}
+
+	/// <summary>
+	/// <para>Removes the follower retention leases from the leader.</para>
+	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/8.13/ccr-post-forget-follower.html">Learn more about this API in the Elasticsearch documentation.</see></para>
+	/// </summary>
+	public virtual Task<ForgetFollowerResponse> ForgetFollowerAsync<TDocument>(Action<ForgetFollowerRequestDescriptor<TDocument>> configureRequest, CancellationToken cancellationToken = default)
+	{
+		var descriptor = new ForgetFollowerRequestDescriptor<TDocument>();
+		configureRequest?.Invoke(descriptor);
+		descriptor.BeforeRequest();
+		return DoRequestAsync<ForgetFollowerRequestDescriptor<TDocument>, ForgetFollowerResponse, ForgetFollowerRequestParameters>(descriptor, cancellationToken);
+	}
+
 	/// <summary>
 	/// <para>Removes the follower retention leases from the leader.</para>
 	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/8.13/ccr-post-forget-follower.html">Learn more about this API in the Elasticsearch documentation.</see></para>
@@ -1144,6 +1240,31 @@ public virtual PauseFollowResponse PauseFollow<TDocument>(Elastic.Clients.Elasti
 		return DoRequest<PauseFollowRequestDescriptor<TDocument>, PauseFollowResponse, PauseFollowRequestParameters>(descriptor);
 	}
 
+	/// <summary>
+	/// <para>Pauses a follower index. The follower index will not fetch any additional operations from the leader index.</para>
+	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/8.13/ccr-post-pause-follow.html">Learn more about this API in the Elasticsearch documentation.</see></para>
+	/// </summary>
+	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
+	public virtual PauseFollowResponse PauseFollow<TDocument>()
+	{
+		var descriptor = new PauseFollowRequestDescriptor<TDocument>();
+		descriptor.BeforeRequest();
+		return DoRequest<PauseFollowRequestDescriptor<TDocument>, PauseFollowResponse, PauseFollowRequestParameters>(descriptor);
+	}
+
+	/// <summary>
+	/// <para>Pauses a follower index. The follower index will not fetch any additional operations from the leader index.</para>
+	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/8.13/ccr-post-pause-follow.html">Learn more about this API in the Elasticsearch documentation.</see></para>
+	/// </summary>
+	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
+	public virtual PauseFollowResponse PauseFollow<TDocument>(Action<PauseFollowRequestDescriptor<TDocument>> configureRequest)
+	{
+		var descriptor = new PauseFollowRequestDescriptor<TDocument>();
+		configureRequest?.Invoke(descriptor);
+		descriptor.BeforeRequest();
+		return DoRequest<PauseFollowRequestDescriptor<TDocument>, PauseFollowResponse, PauseFollowRequestParameters>(descriptor);
+	}
+
 	/// <summary>
 	/// <para>Pauses a follower index. The follower index will not fetch any additional operations from the leader index.</para>
 	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/8.13/ccr-post-pause-follow.html">Learn more about this API in the Elasticsearch documentation.</see></para>
@@ -1213,6 +1334,29 @@ public virtual Task<PauseFollowResponse> PauseFollowAsync<TDocument>(Elastic.Cli
 		return DoRequestAsync<PauseFollowRequestDescriptor<TDocument>, PauseFollowResponse, PauseFollowRequestParameters>(descriptor, cancellationToken);
 	}
 
+	/// <summary>
+	/// <para>Pauses a follower index. The follower index will not fetch any additional operations from the leader index.</para>
+	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/8.13/ccr-post-pause-follow.html">Learn more about this API in the Elasticsearch documentation.</see></para>
+	/// </summary>
+	public virtual Task<PauseFollowResponse> PauseFollowAsync<TDocument>(CancellationToken cancellationToken = default)
+	{
+		var descriptor = new PauseFollowRequestDescriptor<TDocument>();
+		descriptor.BeforeRequest();
+		return DoRequestAsync<PauseFollowRequestDescriptor<TDocument>, PauseFollowResponse, PauseFollowRequestParameters>(descriptor, cancellationToken);
+	}
+
+	/// <summary>
+	/// <para>Pauses a follower index. The follower index will not fetch any additional operations from the leader index.</para>
+	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/8.13/ccr-post-pause-follow.html">Learn more about this API in the Elasticsearch documentation.</see></para>
+	/// </summary>
+	public virtual Task<PauseFollowResponse> PauseFollowAsync<TDocument>(Action<PauseFollowRequestDescriptor<TDocument>> configureRequest, CancellationToken cancellationToken = default)
+	{
+		var descriptor = new PauseFollowRequestDescriptor<TDocument>();
+		configureRequest?.Invoke(descriptor);
+		descriptor.BeforeRequest();
+		return DoRequestAsync<PauseFollowRequestDescriptor<TDocument>, PauseFollowResponse, PauseFollowRequestParameters>(descriptor, cancellationToken);
+	}
+
 	/// <summary>
 	/// <para>Pauses a follower index. The follower index will not fetch any additional operations from the leader index.</para>
 	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/8.13/ccr-post-pause-follow.html">Learn more about this API in the Elasticsearch documentation.</see></para>
@@ -1483,6 +1627,31 @@ public virtual ResumeFollowResponse ResumeFollow<TDocument>(Elastic.Clients.Elas
 		return DoRequest<ResumeFollowRequestDescriptor<TDocument>, ResumeFollowResponse, ResumeFollowRequestParameters>(descriptor);
 	}
 
+	/// <summary>
+	/// <para>Resumes a follower index that has been paused</para>
+	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/8.13/ccr-post-resume-follow.html">Learn more about this API in the Elasticsearch documentation.</see></para>
+	/// </summary>
+	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
+	public virtual ResumeFollowResponse ResumeFollow<TDocument>()
+	{
+		var descriptor = new ResumeFollowRequestDescriptor<TDocument>();
+		descriptor.BeforeRequest();
+		return DoRequest<ResumeFollowRequestDescriptor<TDocument>, ResumeFollowResponse, ResumeFollowRequestParameters>(descriptor);
+	}
+
+	/// <summary>
+	/// <para>Resumes a follower index that has been paused</para>
+	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/8.13/ccr-post-resume-follow.html">Learn more about this API in the Elasticsearch documentation.</see></para>
+	/// </summary>
+	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
+	public virtual ResumeFollowResponse ResumeFollow<TDocument>(Action<ResumeFollowRequestDescriptor<TDocument>> configureRequest)
+	{
+		var descriptor = new ResumeFollowRequestDescriptor<TDocument>();
+		configureRequest?.Invoke(descriptor);
+		descriptor.BeforeRequest();
+		return DoRequest<ResumeFollowRequestDescriptor<TDocument>, ResumeFollowResponse, ResumeFollowRequestParameters>(descriptor);
+	}
+
 	/// <summary>
 	/// <para>Resumes a follower index that has been paused</para>
 	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/8.13/ccr-post-resume-follow.html">Learn more about this API in the Elasticsearch documentation.</see></para>
@@ -1552,6 +1721,29 @@ public virtual Task<ResumeFollowResponse> ResumeFollowAsync<TDocument>(Elastic.C
 		return DoRequestAsync<ResumeFollowRequestDescriptor<TDocument>, ResumeFollowResponse, ResumeFollowRequestParameters>(descriptor, cancellationToken);
 	}
 
+	/// <summary>
+	/// <para>Resumes a follower index that has been paused</para>
+	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/8.13/ccr-post-resume-follow.html">Learn more about this API in the Elasticsearch documentation.</see></para>
+	/// </summary>
+	public virtual Task<ResumeFollowResponse> ResumeFollowAsync<TDocument>(CancellationToken cancellationToken = default)
+	{
+		var descriptor = new ResumeFollowRequestDescriptor<TDocument>();
+		descriptor.BeforeRequest();
+		return DoRequestAsync<ResumeFollowRequestDescriptor<TDocument>, ResumeFollowResponse, ResumeFollowRequestParameters>(descriptor, cancellationToken);
+	}
+
+	/// <summary>
+	/// <para>Resumes a follower index that has been paused</para>
+	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/8.13/ccr-post-resume-follow.html">Learn more about this API in the Elasticsearch documentation.</see></para>
+	/// </summary>
+	public virtual Task<ResumeFollowResponse> ResumeFollowAsync<TDocument>(Action<ResumeFollowRequestDescriptor<TDocument>> configureRequest, CancellationToken cancellationToken = default)
+	{
+		var descriptor = new ResumeFollowRequestDescriptor<TDocument>();
+		configureRequest?.Invoke(descriptor);
+		descriptor.BeforeRequest();
+		return DoRequestAsync<ResumeFollowRequestDescriptor<TDocument>, ResumeFollowResponse, ResumeFollowRequestParameters>(descriptor, cancellationToken);
+	}
+
 	/// <summary>
 	/// <para>Resumes a follower index that has been paused</para>
 	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/8.13/ccr-post-resume-follow.html">Learn more about this API in the Elasticsearch documentation.</see></para>
@@ -1732,6 +1924,31 @@ public virtual UnfollowResponse Unfollow<TDocument>(Elastic.Clients.Elasticsearc
 		return DoRequest<UnfollowRequestDescriptor<TDocument>, UnfollowResponse, UnfollowRequestParameters>(descriptor);
 	}
 
+	/// <summary>
+	/// <para>Stops the following task associated with a follower index and removes index metadata and settings associated with cross-cluster replication.</para>
+	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/8.13/ccr-post-unfollow.html">Learn more about this API in the Elasticsearch documentation.</see></para>
+	/// </summary>
+	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
+	public virtual UnfollowResponse Unfollow<TDocument>()
+	{
+		var descriptor = new UnfollowRequestDescriptor<TDocument>();
+		descriptor.BeforeRequest();
+		return DoRequest<UnfollowRequestDescriptor<TDocument>, UnfollowResponse, UnfollowRequestParameters>(descriptor);
+	}
+
+	/// <summary>
+	/// <para>Stops the following task associated with a follower index and removes index metadata and settings associated with cross-cluster replication.</para>
+	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/8.13/ccr-post-unfollow.html">Learn more about this API in the Elasticsearch documentation.</see></para>
+	/// </summary>
+	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
+	public virtual UnfollowResponse Unfollow<TDocument>(Action<UnfollowRequestDescriptor<TDocument>> configureRequest)
+	{
+		var descriptor = new UnfollowRequestDescriptor<TDocument>();
+		configureRequest?.Invoke(descriptor);
+		descriptor.BeforeRequest();
+		return DoRequest<UnfollowRequestDescriptor<TDocument>, UnfollowResponse, UnfollowRequestParameters>(descriptor);
+	}
+
 	/// <summary>
 	/// <para>Stops the following task associated with a follower index and removes index metadata and settings associated with cross-cluster replication.</para>
 	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/8.13/ccr-post-unfollow.html">Learn more about this API in the Elasticsearch documentation.</see></para>
@@ -1801,6 +2018,29 @@ public virtual Task<UnfollowResponse> UnfollowAsync<TDocument>(Elastic.Clients.E
 		return DoRequestAsync<UnfollowRequestDescriptor<TDocument>, UnfollowResponse, UnfollowRequestParameters>(descriptor, cancellationToken);
 	}
 
+	/// <summary>
+	/// <para>Stops the following task associated with a follower index and removes index metadata and settings associated with cross-cluster replication.</para>
+	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/8.13/ccr-post-unfollow.html">Learn more about this API in the Elasticsearch documentation.</see></para>
+	/// </summary>
+	public virtual Task<UnfollowResponse> UnfollowAsync<TDocument>(CancellationToken cancellationToken = default)
+	{
+		var descriptor = new UnfollowRequestDescriptor<TDocument>();
+		descriptor.BeforeRequest();
+		return DoRequestAsync<UnfollowRequestDescriptor<TDocument>, UnfollowResponse, UnfollowRequestParameters>(descriptor, cancellationToken);
+	}
+
+	/// <summary>
+	/// <para>Stops the following task associated with a follower index and removes index metadata and settings associated with cross-cluster replication.</para>
+	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/8.13/ccr-post-unfollow.html">Learn more about this API in the Elasticsearch documentation.</see></para>
+	/// </summary>
+	public virtual Task<UnfollowResponse> UnfollowAsync<TDocument>(Action<UnfollowRequestDescriptor<TDocument>> configureRequest, CancellationToken cancellationToken = default)
+	{
+		var descriptor = new UnfollowRequestDescriptor<TDocument>();
+		configureRequest?.Invoke(descriptor);
+		descriptor.BeforeRequest();
+		return DoRequestAsync<UnfollowRequestDescriptor<TDocument>, UnfollowResponse, UnfollowRequestParameters>(descriptor, cancellationToken);
+	}
+
 	/// <summary>
 	/// <para>Stops the following task associated with a follower index and removes index metadata and settings associated with cross-cluster replication.</para>
 	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/8.13/ccr-post-unfollow.html">Learn more about this API in the Elasticsearch documentation.</see></para>
diff --git a/src/Elastic.Clients.Elasticsearch/_Generated/Client/ElasticsearchClient.Ilm.g.cs b/src/Elastic.Clients.Elasticsearch/_Generated/Client/ElasticsearchClient.Ilm.g.cs
index 5a7277575ac..d4677251eb5 100644
--- a/src/Elastic.Clients.Elasticsearch/_Generated/Client/ElasticsearchClient.Ilm.g.cs
+++ b/src/Elastic.Clients.Elasticsearch/_Generated/Client/ElasticsearchClient.Ilm.g.cs
@@ -502,6 +502,31 @@ public virtual MoveToStepResponse MoveToStep<TDocument>(Elastic.Clients.Elastics
 		return DoRequest<MoveToStepRequestDescriptor<TDocument>, MoveToStepResponse, MoveToStepRequestParameters>(descriptor);
 	}
 
+	/// <summary>
+	/// <para>Manually moves an index into the specified step and executes that step.</para>
+	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/current/ilm-move-to-step.html">Learn more about this API in the Elasticsearch documentation.</see></para>
+	/// </summary>
+	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
+	public virtual MoveToStepResponse MoveToStep<TDocument>()
+	{
+		var descriptor = new MoveToStepRequestDescriptor<TDocument>();
+		descriptor.BeforeRequest();
+		return DoRequest<MoveToStepRequestDescriptor<TDocument>, MoveToStepResponse, MoveToStepRequestParameters>(descriptor);
+	}
+
+	/// <summary>
+	/// <para>Manually moves an index into the specified step and executes that step.</para>
+	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/current/ilm-move-to-step.html">Learn more about this API in the Elasticsearch documentation.</see></para>
+	/// </summary>
+	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
+	public virtual MoveToStepResponse MoveToStep<TDocument>(Action<MoveToStepRequestDescriptor<TDocument>> configureRequest)
+	{
+		var descriptor = new MoveToStepRequestDescriptor<TDocument>();
+		configureRequest?.Invoke(descriptor);
+		descriptor.BeforeRequest();
+		return DoRequest<MoveToStepRequestDescriptor<TDocument>, MoveToStepResponse, MoveToStepRequestParameters>(descriptor);
+	}
+
 	/// <summary>
 	/// <para>Manually moves an index into the specified step and executes that step.</para>
 	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/current/ilm-move-to-step.html">Learn more about this API in the Elasticsearch documentation.</see></para>
@@ -571,6 +596,29 @@ public virtual Task<MoveToStepResponse> MoveToStepAsync<TDocument>(Elastic.Clien
 		return DoRequestAsync<MoveToStepRequestDescriptor<TDocument>, MoveToStepResponse, MoveToStepRequestParameters>(descriptor, cancellationToken);
 	}
 
+	/// <summary>
+	/// <para>Manually moves an index into the specified step and executes that step.</para>
+	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/current/ilm-move-to-step.html">Learn more about this API in the Elasticsearch documentation.</see></para>
+	/// </summary>
+	public virtual Task<MoveToStepResponse> MoveToStepAsync<TDocument>(CancellationToken cancellationToken = default)
+	{
+		var descriptor = new MoveToStepRequestDescriptor<TDocument>();
+		descriptor.BeforeRequest();
+		return DoRequestAsync<MoveToStepRequestDescriptor<TDocument>, MoveToStepResponse, MoveToStepRequestParameters>(descriptor, cancellationToken);
+	}
+
+	/// <summary>
+	/// <para>Manually moves an index into the specified step and executes that step.</para>
+	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/current/ilm-move-to-step.html">Learn more about this API in the Elasticsearch documentation.</see></para>
+	/// </summary>
+	public virtual Task<MoveToStepResponse> MoveToStepAsync<TDocument>(Action<MoveToStepRequestDescriptor<TDocument>> configureRequest, CancellationToken cancellationToken = default)
+	{
+		var descriptor = new MoveToStepRequestDescriptor<TDocument>();
+		configureRequest?.Invoke(descriptor);
+		descriptor.BeforeRequest();
+		return DoRequestAsync<MoveToStepRequestDescriptor<TDocument>, MoveToStepResponse, MoveToStepRequestParameters>(descriptor, cancellationToken);
+	}
+
 	/// <summary>
 	/// <para>Manually moves an index into the specified step and executes that step.</para>
 	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/current/ilm-move-to-step.html">Learn more about this API in the Elasticsearch documentation.</see></para>
@@ -751,6 +799,31 @@ public virtual RemovePolicyResponse RemovePolicy<TDocument>(Elastic.Clients.Elas
 		return DoRequest<RemovePolicyRequestDescriptor<TDocument>, RemovePolicyResponse, RemovePolicyRequestParameters>(descriptor);
 	}
 
+	/// <summary>
+	/// <para>Removes the assigned lifecycle policy and stops managing the specified index</para>
+	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/current/ilm-remove-policy.html">Learn more about this API in the Elasticsearch documentation.</see></para>
+	/// </summary>
+	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
+	public virtual RemovePolicyResponse RemovePolicy<TDocument>()
+	{
+		var descriptor = new RemovePolicyRequestDescriptor<TDocument>();
+		descriptor.BeforeRequest();
+		return DoRequest<RemovePolicyRequestDescriptor<TDocument>, RemovePolicyResponse, RemovePolicyRequestParameters>(descriptor);
+	}
+
+	/// <summary>
+	/// <para>Removes the assigned lifecycle policy and stops managing the specified index</para>
+	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/current/ilm-remove-policy.html">Learn more about this API in the Elasticsearch documentation.</see></para>
+	/// </summary>
+	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
+	public virtual RemovePolicyResponse RemovePolicy<TDocument>(Action<RemovePolicyRequestDescriptor<TDocument>> configureRequest)
+	{
+		var descriptor = new RemovePolicyRequestDescriptor<TDocument>();
+		configureRequest?.Invoke(descriptor);
+		descriptor.BeforeRequest();
+		return DoRequest<RemovePolicyRequestDescriptor<TDocument>, RemovePolicyResponse, RemovePolicyRequestParameters>(descriptor);
+	}
+
 	/// <summary>
 	/// <para>Removes the assigned lifecycle policy and stops managing the specified index</para>
 	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/current/ilm-remove-policy.html">Learn more about this API in the Elasticsearch documentation.</see></para>
@@ -820,6 +893,29 @@ public virtual Task<RemovePolicyResponse> RemovePolicyAsync<TDocument>(Elastic.C
 		return DoRequestAsync<RemovePolicyRequestDescriptor<TDocument>, RemovePolicyResponse, RemovePolicyRequestParameters>(descriptor, cancellationToken);
 	}
 
+	/// <summary>
+	/// <para>Removes the assigned lifecycle policy and stops managing the specified index</para>
+	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/current/ilm-remove-policy.html">Learn more about this API in the Elasticsearch documentation.</see></para>
+	/// </summary>
+	public virtual Task<RemovePolicyResponse> RemovePolicyAsync<TDocument>(CancellationToken cancellationToken = default)
+	{
+		var descriptor = new RemovePolicyRequestDescriptor<TDocument>();
+		descriptor.BeforeRequest();
+		return DoRequestAsync<RemovePolicyRequestDescriptor<TDocument>, RemovePolicyResponse, RemovePolicyRequestParameters>(descriptor, cancellationToken);
+	}
+
+	/// <summary>
+	/// <para>Removes the assigned lifecycle policy and stops managing the specified index</para>
+	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/current/ilm-remove-policy.html">Learn more about this API in the Elasticsearch documentation.</see></para>
+	/// </summary>
+	public virtual Task<RemovePolicyResponse> RemovePolicyAsync<TDocument>(Action<RemovePolicyRequestDescriptor<TDocument>> configureRequest, CancellationToken cancellationToken = default)
+	{
+		var descriptor = new RemovePolicyRequestDescriptor<TDocument>();
+		configureRequest?.Invoke(descriptor);
+		descriptor.BeforeRequest();
+		return DoRequestAsync<RemovePolicyRequestDescriptor<TDocument>, RemovePolicyResponse, RemovePolicyRequestParameters>(descriptor, cancellationToken);
+	}
+
 	/// <summary>
 	/// <para>Removes the assigned lifecycle policy and stops managing the specified index</para>
 	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/current/ilm-remove-policy.html">Learn more about this API in the Elasticsearch documentation.</see></para>
@@ -910,6 +1006,31 @@ public virtual RetryResponse Retry<TDocument>(Elastic.Clients.Elasticsearch.Inde
 		return DoRequest<RetryRequestDescriptor<TDocument>, RetryResponse, RetryRequestParameters>(descriptor);
 	}
 
+	/// <summary>
+	/// <para>Retries executing the policy for an index that is in the ERROR step.</para>
+	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/current/ilm-retry-policy.html">Learn more about this API in the Elasticsearch documentation.</see></para>
+	/// </summary>
+	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
+	public virtual RetryResponse Retry<TDocument>()
+	{
+		var descriptor = new RetryRequestDescriptor<TDocument>();
+		descriptor.BeforeRequest();
+		return DoRequest<RetryRequestDescriptor<TDocument>, RetryResponse, RetryRequestParameters>(descriptor);
+	}
+
+	/// <summary>
+	/// <para>Retries executing the policy for an index that is in the ERROR step.</para>
+	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/current/ilm-retry-policy.html">Learn more about this API in the Elasticsearch documentation.</see></para>
+	/// </summary>
+	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
+	public virtual RetryResponse Retry<TDocument>(Action<RetryRequestDescriptor<TDocument>> configureRequest)
+	{
+		var descriptor = new RetryRequestDescriptor<TDocument>();
+		configureRequest?.Invoke(descriptor);
+		descriptor.BeforeRequest();
+		return DoRequest<RetryRequestDescriptor<TDocument>, RetryResponse, RetryRequestParameters>(descriptor);
+	}
+
 	/// <summary>
 	/// <para>Retries executing the policy for an index that is in the ERROR step.</para>
 	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/current/ilm-retry-policy.html">Learn more about this API in the Elasticsearch documentation.</see></para>
@@ -979,6 +1100,29 @@ public virtual Task<RetryResponse> RetryAsync<TDocument>(Elastic.Clients.Elastic
 		return DoRequestAsync<RetryRequestDescriptor<TDocument>, RetryResponse, RetryRequestParameters>(descriptor, cancellationToken);
 	}
 
+	/// <summary>
+	/// <para>Retries executing the policy for an index that is in the ERROR step.</para>
+	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/current/ilm-retry-policy.html">Learn more about this API in the Elasticsearch documentation.</see></para>
+	/// </summary>
+	public virtual Task<RetryResponse> RetryAsync<TDocument>(CancellationToken cancellationToken = default)
+	{
+		var descriptor = new RetryRequestDescriptor<TDocument>();
+		descriptor.BeforeRequest();
+		return DoRequestAsync<RetryRequestDescriptor<TDocument>, RetryResponse, RetryRequestParameters>(descriptor, cancellationToken);
+	}
+
+	/// <summary>
+	/// <para>Retries executing the policy for an index that is in the ERROR step.</para>
+	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/current/ilm-retry-policy.html">Learn more about this API in the Elasticsearch documentation.</see></para>
+	/// </summary>
+	public virtual Task<RetryResponse> RetryAsync<TDocument>(Action<RetryRequestDescriptor<TDocument>> configureRequest, CancellationToken cancellationToken = default)
+	{
+		var descriptor = new RetryRequestDescriptor<TDocument>();
+		configureRequest?.Invoke(descriptor);
+		descriptor.BeforeRequest();
+		return DoRequestAsync<RetryRequestDescriptor<TDocument>, RetryResponse, RetryRequestParameters>(descriptor, cancellationToken);
+	}
+
 	/// <summary>
 	/// <para>Retries executing the policy for an index that is in the ERROR step.</para>
 	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/current/ilm-retry-policy.html">Learn more about this API in the Elasticsearch documentation.</see></para>
diff --git a/src/Elastic.Clients.Elasticsearch/_Generated/Client/ElasticsearchClient.Indices.g.cs b/src/Elastic.Clients.Elasticsearch/_Generated/Client/ElasticsearchClient.Indices.g.cs
index a65ec0141b7..c9a9a509283 100644
--- a/src/Elastic.Clients.Elasticsearch/_Generated/Client/ElasticsearchClient.Indices.g.cs
+++ b/src/Elastic.Clients.Elasticsearch/_Generated/Client/ElasticsearchClient.Indices.g.cs
@@ -604,6 +604,31 @@ public virtual CloneIndexResponse Clone<TDocument>(Elastic.Clients.Elasticsearch
 		return DoRequest<CloneIndexRequestDescriptor<TDocument>, CloneIndexResponse, CloneIndexRequestParameters>(descriptor);
 	}
 
+	/// <summary>
+	/// <para>Clones an index</para>
+	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-clone-index.html">Learn more about this API in the Elasticsearch documentation.</see></para>
+	/// </summary>
+	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
+	public virtual CloneIndexResponse Clone<TDocument>(Elastic.Clients.Elasticsearch.Name target)
+	{
+		var descriptor = new CloneIndexRequestDescriptor<TDocument>(target);
+		descriptor.BeforeRequest();
+		return DoRequest<CloneIndexRequestDescriptor<TDocument>, CloneIndexResponse, CloneIndexRequestParameters>(descriptor);
+	}
+
+	/// <summary>
+	/// <para>Clones an index</para>
+	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-clone-index.html">Learn more about this API in the Elasticsearch documentation.</see></para>
+	/// </summary>
+	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
+	public virtual CloneIndexResponse Clone<TDocument>(Elastic.Clients.Elasticsearch.Name target, Action<CloneIndexRequestDescriptor<TDocument>> configureRequest)
+	{
+		var descriptor = new CloneIndexRequestDescriptor<TDocument>(target);
+		configureRequest?.Invoke(descriptor);
+		descriptor.BeforeRequest();
+		return DoRequest<CloneIndexRequestDescriptor<TDocument>, CloneIndexResponse, CloneIndexRequestParameters>(descriptor);
+	}
+
 	/// <summary>
 	/// <para>Clones an index</para>
 	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-clone-index.html">Learn more about this API in the Elasticsearch documentation.</see></para>
@@ -673,6 +698,29 @@ public virtual Task<CloneIndexResponse> CloneAsync<TDocument>(Elastic.Clients.El
 		return DoRequestAsync<CloneIndexRequestDescriptor<TDocument>, CloneIndexResponse, CloneIndexRequestParameters>(descriptor, cancellationToken);
 	}
 
+	/// <summary>
+	/// <para>Clones an index</para>
+	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-clone-index.html">Learn more about this API in the Elasticsearch documentation.</see></para>
+	/// </summary>
+	public virtual Task<CloneIndexResponse> CloneAsync<TDocument>(Elastic.Clients.Elasticsearch.Name target, CancellationToken cancellationToken = default)
+	{
+		var descriptor = new CloneIndexRequestDescriptor<TDocument>(target);
+		descriptor.BeforeRequest();
+		return DoRequestAsync<CloneIndexRequestDescriptor<TDocument>, CloneIndexResponse, CloneIndexRequestParameters>(descriptor, cancellationToken);
+	}
+
+	/// <summary>
+	/// <para>Clones an index</para>
+	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-clone-index.html">Learn more about this API in the Elasticsearch documentation.</see></para>
+	/// </summary>
+	public virtual Task<CloneIndexResponse> CloneAsync<TDocument>(Elastic.Clients.Elasticsearch.Name target, Action<CloneIndexRequestDescriptor<TDocument>> configureRequest, CancellationToken cancellationToken = default)
+	{
+		var descriptor = new CloneIndexRequestDescriptor<TDocument>(target);
+		configureRequest?.Invoke(descriptor);
+		descriptor.BeforeRequest();
+		return DoRequestAsync<CloneIndexRequestDescriptor<TDocument>, CloneIndexResponse, CloneIndexRequestParameters>(descriptor, cancellationToken);
+	}
+
 	/// <summary>
 	/// <para>Clones an index</para>
 	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-clone-index.html">Learn more about this API in the Elasticsearch documentation.</see></para>
@@ -970,6 +1018,31 @@ public virtual CreateIndexResponse Create<TDocument>(Elastic.Clients.Elasticsear
 		return DoRequest<CreateIndexRequestDescriptor<TDocument>, CreateIndexResponse, CreateIndexRequestParameters>(descriptor);
 	}
 
+	/// <summary>
+	/// <para>Creates an index with optional settings and mappings.</para>
+	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/8.13/indices-create-index.html">Learn more about this API in the Elasticsearch documentation.</see></para>
+	/// </summary>
+	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
+	public virtual CreateIndexResponse Create<TDocument>()
+	{
+		var descriptor = new CreateIndexRequestDescriptor<TDocument>();
+		descriptor.BeforeRequest();
+		return DoRequest<CreateIndexRequestDescriptor<TDocument>, CreateIndexResponse, CreateIndexRequestParameters>(descriptor);
+	}
+
+	/// <summary>
+	/// <para>Creates an index with optional settings and mappings.</para>
+	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/8.13/indices-create-index.html">Learn more about this API in the Elasticsearch documentation.</see></para>
+	/// </summary>
+	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
+	public virtual CreateIndexResponse Create<TDocument>(Action<CreateIndexRequestDescriptor<TDocument>> configureRequest)
+	{
+		var descriptor = new CreateIndexRequestDescriptor<TDocument>();
+		configureRequest?.Invoke(descriptor);
+		descriptor.BeforeRequest();
+		return DoRequest<CreateIndexRequestDescriptor<TDocument>, CreateIndexResponse, CreateIndexRequestParameters>(descriptor);
+	}
+
 	/// <summary>
 	/// <para>Creates an index with optional settings and mappings.</para>
 	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/8.13/indices-create-index.html">Learn more about this API in the Elasticsearch documentation.</see></para>
@@ -1039,6 +1112,29 @@ public virtual Task<CreateIndexResponse> CreateAsync<TDocument>(Elastic.Clients.
 		return DoRequestAsync<CreateIndexRequestDescriptor<TDocument>, CreateIndexResponse, CreateIndexRequestParameters>(descriptor, cancellationToken);
 	}
 
+	/// <summary>
+	/// <para>Creates an index with optional settings and mappings.</para>
+	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/8.13/indices-create-index.html">Learn more about this API in the Elasticsearch documentation.</see></para>
+	/// </summary>
+	public virtual Task<CreateIndexResponse> CreateAsync<TDocument>(CancellationToken cancellationToken = default)
+	{
+		var descriptor = new CreateIndexRequestDescriptor<TDocument>();
+		descriptor.BeforeRequest();
+		return DoRequestAsync<CreateIndexRequestDescriptor<TDocument>, CreateIndexResponse, CreateIndexRequestParameters>(descriptor, cancellationToken);
+	}
+
+	/// <summary>
+	/// <para>Creates an index with optional settings and mappings.</para>
+	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/8.13/indices-create-index.html">Learn more about this API in the Elasticsearch documentation.</see></para>
+	/// </summary>
+	public virtual Task<CreateIndexResponse> CreateAsync<TDocument>(Action<CreateIndexRequestDescriptor<TDocument>> configureRequest, CancellationToken cancellationToken = default)
+	{
+		var descriptor = new CreateIndexRequestDescriptor<TDocument>();
+		configureRequest?.Invoke(descriptor);
+		descriptor.BeforeRequest();
+		return DoRequestAsync<CreateIndexRequestDescriptor<TDocument>, CreateIndexResponse, CreateIndexRequestParameters>(descriptor, cancellationToken);
+	}
+
 	/// <summary>
 	/// <para>Creates an index with optional settings and mappings.</para>
 	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/8.13/indices-create-index.html">Learn more about this API in the Elasticsearch documentation.</see></para>
diff --git a/src/Elastic.Clients.Elasticsearch/_Generated/Client/ElasticsearchClient.Inference.g.cs b/src/Elastic.Clients.Elasticsearch/_Generated/Client/ElasticsearchClient.Inference.g.cs
index c1bc7e2d029..2778a38abe1 100644
--- a/src/Elastic.Clients.Elasticsearch/_Generated/Client/ElasticsearchClient.Inference.g.cs
+++ b/src/Elastic.Clients.Elasticsearch/_Generated/Client/ElasticsearchClient.Inference.g.cs
@@ -212,7 +212,7 @@ public virtual GetModelResponse GetModel(GetModelRequestDescriptor descriptor)
 	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/get-inference-api.html">Learn more about this API in the Elasticsearch documentation.</see></para>
 	/// </summary>
 	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
-	public virtual GetModelResponse GetModel(Elastic.Clients.Elasticsearch.Inference.TaskType? taskType, Elastic.Clients.Elasticsearch.Id inferenceId)
+	public virtual GetModelResponse GetModel(Elastic.Clients.Elasticsearch.Inference.TaskType? taskType, Elastic.Clients.Elasticsearch.Id? inferenceId)
 	{
 		var descriptor = new GetModelRequestDescriptor(taskType, inferenceId);
 		descriptor.BeforeRequest();
@@ -224,7 +224,7 @@ public virtual GetModelResponse GetModel(Elastic.Clients.Elasticsearch.Inference
 	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/get-inference-api.html">Learn more about this API in the Elasticsearch documentation.</see></para>
 	/// </summary>
 	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
-	public virtual GetModelResponse GetModel(Elastic.Clients.Elasticsearch.Inference.TaskType? taskType, Elastic.Clients.Elasticsearch.Id inferenceId, Action<GetModelRequestDescriptor> configureRequest)
+	public virtual GetModelResponse GetModel(Elastic.Clients.Elasticsearch.Inference.TaskType? taskType, Elastic.Clients.Elasticsearch.Id? inferenceId, Action<GetModelRequestDescriptor> configureRequest)
 	{
 		var descriptor = new GetModelRequestDescriptor(taskType, inferenceId);
 		configureRequest?.Invoke(descriptor);
@@ -237,9 +237,9 @@ public virtual GetModelResponse GetModel(Elastic.Clients.Elasticsearch.Inference
 	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/get-inference-api.html">Learn more about this API in the Elasticsearch documentation.</see></para>
 	/// </summary>
 	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
-	public virtual GetModelResponse GetModel(Elastic.Clients.Elasticsearch.Id inferenceId)
+	public virtual GetModelResponse GetModel()
 	{
-		var descriptor = new GetModelRequestDescriptor(inferenceId);
+		var descriptor = new GetModelRequestDescriptor();
 		descriptor.BeforeRequest();
 		return DoRequest<GetModelRequestDescriptor, GetModelResponse, GetModelRequestParameters>(descriptor);
 	}
@@ -249,9 +249,9 @@ public virtual GetModelResponse GetModel(Elastic.Clients.Elasticsearch.Id infere
 	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/get-inference-api.html">Learn more about this API in the Elasticsearch documentation.</see></para>
 	/// </summary>
 	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
-	public virtual GetModelResponse GetModel(Elastic.Clients.Elasticsearch.Id inferenceId, Action<GetModelRequestDescriptor> configureRequest)
+	public virtual GetModelResponse GetModel(Action<GetModelRequestDescriptor> configureRequest)
 	{
-		var descriptor = new GetModelRequestDescriptor(inferenceId);
+		var descriptor = new GetModelRequestDescriptor();
 		configureRequest?.Invoke(descriptor);
 		descriptor.BeforeRequest();
 		return DoRequest<GetModelRequestDescriptor, GetModelResponse, GetModelRequestParameters>(descriptor);
@@ -271,7 +271,7 @@ public virtual Task<GetModelResponse> GetModelAsync(GetModelRequestDescriptor de
 	/// <para>Get a model in the Inference API</para>
 	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/get-inference-api.html">Learn more about this API in the Elasticsearch documentation.</see></para>
 	/// </summary>
-	public virtual Task<GetModelResponse> GetModelAsync(Elastic.Clients.Elasticsearch.Inference.TaskType? taskType, Elastic.Clients.Elasticsearch.Id inferenceId, CancellationToken cancellationToken = default)
+	public virtual Task<GetModelResponse> GetModelAsync(Elastic.Clients.Elasticsearch.Inference.TaskType? taskType, Elastic.Clients.Elasticsearch.Id? inferenceId, CancellationToken cancellationToken = default)
 	{
 		var descriptor = new GetModelRequestDescriptor(taskType, inferenceId);
 		descriptor.BeforeRequest();
@@ -282,7 +282,7 @@ public virtual Task<GetModelResponse> GetModelAsync(Elastic.Clients.Elasticsearc
 	/// <para>Get a model in the Inference API</para>
 	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/get-inference-api.html">Learn more about this API in the Elasticsearch documentation.</see></para>
 	/// </summary>
-	public virtual Task<GetModelResponse> GetModelAsync(Elastic.Clients.Elasticsearch.Inference.TaskType? taskType, Elastic.Clients.Elasticsearch.Id inferenceId, Action<GetModelRequestDescriptor> configureRequest, CancellationToken cancellationToken = default)
+	public virtual Task<GetModelResponse> GetModelAsync(Elastic.Clients.Elasticsearch.Inference.TaskType? taskType, Elastic.Clients.Elasticsearch.Id? inferenceId, Action<GetModelRequestDescriptor> configureRequest, CancellationToken cancellationToken = default)
 	{
 		var descriptor = new GetModelRequestDescriptor(taskType, inferenceId);
 		configureRequest?.Invoke(descriptor);
@@ -294,9 +294,9 @@ public virtual Task<GetModelResponse> GetModelAsync(Elastic.Clients.Elasticsearc
 	/// <para>Get a model in the Inference API</para>
 	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/get-inference-api.html">Learn more about this API in the Elasticsearch documentation.</see></para>
 	/// </summary>
-	public virtual Task<GetModelResponse> GetModelAsync(Elastic.Clients.Elasticsearch.Id inferenceId, CancellationToken cancellationToken = default)
+	public virtual Task<GetModelResponse> GetModelAsync(CancellationToken cancellationToken = default)
 	{
-		var descriptor = new GetModelRequestDescriptor(inferenceId);
+		var descriptor = new GetModelRequestDescriptor();
 		descriptor.BeforeRequest();
 		return DoRequestAsync<GetModelRequestDescriptor, GetModelResponse, GetModelRequestParameters>(descriptor, cancellationToken);
 	}
@@ -305,9 +305,9 @@ public virtual Task<GetModelResponse> GetModelAsync(Elastic.Clients.Elasticsearc
 	/// <para>Get a model in the Inference API</para>
 	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/get-inference-api.html">Learn more about this API in the Elasticsearch documentation.</see></para>
 	/// </summary>
-	public virtual Task<GetModelResponse> GetModelAsync(Elastic.Clients.Elasticsearch.Id inferenceId, Action<GetModelRequestDescriptor> configureRequest, CancellationToken cancellationToken = default)
+	public virtual Task<GetModelResponse> GetModelAsync(Action<GetModelRequestDescriptor> configureRequest, CancellationToken cancellationToken = default)
 	{
-		var descriptor = new GetModelRequestDescriptor(inferenceId);
+		var descriptor = new GetModelRequestDescriptor();
 		configureRequest?.Invoke(descriptor);
 		descriptor.BeforeRequest();
 		return DoRequestAsync<GetModelRequestDescriptor, GetModelResponse, GetModelRequestParameters>(descriptor, cancellationToken);
diff --git a/src/Elastic.Clients.Elasticsearch/_Generated/Client/ElasticsearchClient.g.cs b/src/Elastic.Clients.Elasticsearch/_Generated/Client/ElasticsearchClient.g.cs
index 461fb314265..183b5bf63e6 100644
--- a/src/Elastic.Clients.Elasticsearch/_Generated/Client/ElasticsearchClient.g.cs
+++ b/src/Elastic.Clients.Elasticsearch/_Generated/Client/ElasticsearchClient.g.cs
@@ -7356,6 +7356,31 @@ public virtual TermsEnumResponse TermsEnum<TDocument>(Elastic.Clients.Elasticsea
 		return DoRequest<TermsEnumRequestDescriptor<TDocument>, TermsEnumResponse, TermsEnumRequestParameters>(descriptor);
 	}
 
+	/// <summary>
+	/// <para>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.</para>
+	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/current/search-terms-enum.html">Learn more about this API in the Elasticsearch documentation.</see></para>
+	/// </summary>
+	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
+	public virtual TermsEnumResponse TermsEnum<TDocument>()
+	{
+		var descriptor = new TermsEnumRequestDescriptor<TDocument>();
+		descriptor.BeforeRequest();
+		return DoRequest<TermsEnumRequestDescriptor<TDocument>, TermsEnumResponse, TermsEnumRequestParameters>(descriptor);
+	}
+
+	/// <summary>
+	/// <para>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.</para>
+	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/current/search-terms-enum.html">Learn more about this API in the Elasticsearch documentation.</see></para>
+	/// </summary>
+	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
+	public virtual TermsEnumResponse TermsEnum<TDocument>(Action<TermsEnumRequestDescriptor<TDocument>> configureRequest)
+	{
+		var descriptor = new TermsEnumRequestDescriptor<TDocument>();
+		configureRequest?.Invoke(descriptor);
+		descriptor.BeforeRequest();
+		return DoRequest<TermsEnumRequestDescriptor<TDocument>, TermsEnumResponse, TermsEnumRequestParameters>(descriptor);
+	}
+
 	/// <summary>
 	/// <para>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.</para>
 	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/current/search-terms-enum.html">Learn more about this API in the Elasticsearch documentation.</see></para>
@@ -7425,6 +7450,29 @@ public virtual Task<TermsEnumResponse> TermsEnumAsync<TDocument>(Elastic.Clients
 		return DoRequestAsync<TermsEnumRequestDescriptor<TDocument>, TermsEnumResponse, TermsEnumRequestParameters>(descriptor, cancellationToken);
 	}
 
+	/// <summary>
+	/// <para>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.</para>
+	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/current/search-terms-enum.html">Learn more about this API in the Elasticsearch documentation.</see></para>
+	/// </summary>
+	public virtual Task<TermsEnumResponse> TermsEnumAsync<TDocument>(CancellationToken cancellationToken = default)
+	{
+		var descriptor = new TermsEnumRequestDescriptor<TDocument>();
+		descriptor.BeforeRequest();
+		return DoRequestAsync<TermsEnumRequestDescriptor<TDocument>, TermsEnumResponse, TermsEnumRequestParameters>(descriptor, cancellationToken);
+	}
+
+	/// <summary>
+	/// <para>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.</para>
+	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/current/search-terms-enum.html">Learn more about this API in the Elasticsearch documentation.</see></para>
+	/// </summary>
+	public virtual Task<TermsEnumResponse> TermsEnumAsync<TDocument>(Action<TermsEnumRequestDescriptor<TDocument>> configureRequest, CancellationToken cancellationToken = default)
+	{
+		var descriptor = new TermsEnumRequestDescriptor<TDocument>();
+		configureRequest?.Invoke(descriptor);
+		descriptor.BeforeRequest();
+		return DoRequestAsync<TermsEnumRequestDescriptor<TDocument>, TermsEnumResponse, TermsEnumRequestParameters>(descriptor, cancellationToken);
+	}
+
 	/// <summary>
 	/// <para>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.</para>
 	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/current/search-terms-enum.html">Learn more about this API in the Elasticsearch documentation.</see></para>
diff --git a/src/Elastic.Clients.Elasticsearch/_Generated/Types/Aggregations/TopHitsAggregation.g.cs b/src/Elastic.Clients.Elasticsearch/_Generated/Types/Aggregations/TopHitsAggregation.g.cs
index ae092126610..b6b91dd72cf 100644
--- a/src/Elastic.Clients.Elasticsearch/_Generated/Types/Aggregations/TopHitsAggregation.g.cs
+++ b/src/Elastic.Clients.Elasticsearch/_Generated/Types/Aggregations/TopHitsAggregation.g.cs
@@ -33,8 +33,7 @@ public sealed partial class TopHitsAggregation
 	/// <para>Fields for which to return doc values.</para>
 	/// </summary>
 	[JsonInclude, JsonPropertyName("docvalue_fields")]
-	[JsonConverter(typeof(SingleOrManyFieldsConverter))]
-	public Elastic.Clients.Elasticsearch.Fields? DocvalueFields { get; set; }
+	public ICollection<Elastic.Clients.Elasticsearch.QueryDsl.FieldAndFormat>? DocvalueFields { get; set; }
 
 	/// <summary>
 	/// <para>If `true`, returns detailed information about score computation as part of a hit.</para>
@@ -48,6 +47,12 @@ public sealed partial class TopHitsAggregation
 	[JsonInclude, JsonPropertyName("field")]
 	public Elastic.Clients.Elasticsearch.Field? Field { get; set; }
 
+	/// <summary>
+	/// <para>Array of wildcard (*) patterns. The request returns values for field names<br/>matching these patterns in the hits.fields property of the response.</para>
+	/// </summary>
+	[JsonInclude, JsonPropertyName("fields")]
+	public ICollection<Elastic.Clients.Elasticsearch.QueryDsl.FieldAndFormat>? Fields { get; set; }
+
 	/// <summary>
 	/// <para>Starting document offset.</para>
 	/// </summary>
@@ -129,9 +134,16 @@ public TopHitsAggregationDescriptor() : base()
 	{
 	}
 
-	private Elastic.Clients.Elasticsearch.Fields? DocvalueFieldsValue { get; set; }
+	private ICollection<Elastic.Clients.Elasticsearch.QueryDsl.FieldAndFormat>? DocvalueFieldsValue { get; set; }
+	private Elastic.Clients.Elasticsearch.QueryDsl.FieldAndFormatDescriptor<TDocument> DocvalueFieldsDescriptor { get; set; }
+	private Action<Elastic.Clients.Elasticsearch.QueryDsl.FieldAndFormatDescriptor<TDocument>> DocvalueFieldsDescriptorAction { get; set; }
+	private Action<Elastic.Clients.Elasticsearch.QueryDsl.FieldAndFormatDescriptor<TDocument>>[] DocvalueFieldsDescriptorActions { get; set; }
 	private bool? ExplainValue { get; set; }
 	private Elastic.Clients.Elasticsearch.Field? FieldValue { get; set; }
+	private ICollection<Elastic.Clients.Elasticsearch.QueryDsl.FieldAndFormat>? FieldsValue { get; set; }
+	private Elastic.Clients.Elasticsearch.QueryDsl.FieldAndFormatDescriptor<TDocument> FieldsDescriptor { get; set; }
+	private Action<Elastic.Clients.Elasticsearch.QueryDsl.FieldAndFormatDescriptor<TDocument>> FieldsDescriptorAction { get; set; }
+	private Action<Elastic.Clients.Elasticsearch.QueryDsl.FieldAndFormatDescriptor<TDocument>>[] FieldsDescriptorActions { get; set; }
 	private int? FromValue { get; set; }
 	private Elastic.Clients.Elasticsearch.Core.Search.Highlight? HighlightValue { get; set; }
 	private Elastic.Clients.Elasticsearch.Core.Search.HighlightDescriptor<TDocument> HighlightDescriptor { get; set; }
@@ -153,12 +165,42 @@ public TopHitsAggregationDescriptor() : base()
 	/// <summary>
 	/// <para>Fields for which to return doc values.</para>
 	/// </summary>
-	public TopHitsAggregationDescriptor<TDocument> DocvalueFields(Elastic.Clients.Elasticsearch.Fields? docvalueFields)
+	public TopHitsAggregationDescriptor<TDocument> DocvalueFields(ICollection<Elastic.Clients.Elasticsearch.QueryDsl.FieldAndFormat>? docvalueFields)
 	{
+		DocvalueFieldsDescriptor = null;
+		DocvalueFieldsDescriptorAction = null;
+		DocvalueFieldsDescriptorActions = null;
 		DocvalueFieldsValue = docvalueFields;
 		return Self;
 	}
 
+	public TopHitsAggregationDescriptor<TDocument> DocvalueFields(Elastic.Clients.Elasticsearch.QueryDsl.FieldAndFormatDescriptor<TDocument> descriptor)
+	{
+		DocvalueFieldsValue = null;
+		DocvalueFieldsDescriptorAction = null;
+		DocvalueFieldsDescriptorActions = null;
+		DocvalueFieldsDescriptor = descriptor;
+		return Self;
+	}
+
+	public TopHitsAggregationDescriptor<TDocument> DocvalueFields(Action<Elastic.Clients.Elasticsearch.QueryDsl.FieldAndFormatDescriptor<TDocument>> configure)
+	{
+		DocvalueFieldsValue = null;
+		DocvalueFieldsDescriptor = null;
+		DocvalueFieldsDescriptorActions = null;
+		DocvalueFieldsDescriptorAction = configure;
+		return Self;
+	}
+
+	public TopHitsAggregationDescriptor<TDocument> DocvalueFields(params Action<Elastic.Clients.Elasticsearch.QueryDsl.FieldAndFormatDescriptor<TDocument>>[] configure)
+	{
+		DocvalueFieldsValue = null;
+		DocvalueFieldsDescriptor = null;
+		DocvalueFieldsDescriptorAction = null;
+		DocvalueFieldsDescriptorActions = configure;
+		return Self;
+	}
+
 	/// <summary>
 	/// <para>If `true`, returns detailed information about score computation as part of a hit.</para>
 	/// </summary>
@@ -195,6 +237,45 @@ public TopHitsAggregationDescriptor<TDocument> Field(Expression<Func<TDocument,
 		return Self;
 	}
 
+	/// <summary>
+	/// <para>Array of wildcard (*) patterns. The request returns values for field names<br/>matching these patterns in the hits.fields property of the response.</para>
+	/// </summary>
+	public TopHitsAggregationDescriptor<TDocument> Fields(ICollection<Elastic.Clients.Elasticsearch.QueryDsl.FieldAndFormat>? fields)
+	{
+		FieldsDescriptor = null;
+		FieldsDescriptorAction = null;
+		FieldsDescriptorActions = null;
+		FieldsValue = fields;
+		return Self;
+	}
+
+	public TopHitsAggregationDescriptor<TDocument> Fields(Elastic.Clients.Elasticsearch.QueryDsl.FieldAndFormatDescriptor<TDocument> descriptor)
+	{
+		FieldsValue = null;
+		FieldsDescriptorAction = null;
+		FieldsDescriptorActions = null;
+		FieldsDescriptor = descriptor;
+		return Self;
+	}
+
+	public TopHitsAggregationDescriptor<TDocument> Fields(Action<Elastic.Clients.Elasticsearch.QueryDsl.FieldAndFormatDescriptor<TDocument>> configure)
+	{
+		FieldsValue = null;
+		FieldsDescriptor = null;
+		FieldsDescriptorActions = null;
+		FieldsDescriptorAction = configure;
+		return Self;
+	}
+
+	public TopHitsAggregationDescriptor<TDocument> Fields(params Action<Elastic.Clients.Elasticsearch.QueryDsl.FieldAndFormatDescriptor<TDocument>>[] configure)
+	{
+		FieldsValue = null;
+		FieldsDescriptor = null;
+		FieldsDescriptorAction = null;
+		FieldsDescriptorActions = configure;
+		return Self;
+	}
+
 	/// <summary>
 	/// <para>Starting document offset.</para>
 	/// </summary>
@@ -351,7 +432,32 @@ public TopHitsAggregationDescriptor<TDocument> Version(bool? version = true)
 	protected override void Serialize(Utf8JsonWriter writer, JsonSerializerOptions options, IElasticsearchClientSettings settings)
 	{
 		writer.WriteStartObject();
-		if (DocvalueFieldsValue is not null)
+		if (DocvalueFieldsDescriptor is not null)
+		{
+			writer.WritePropertyName("docvalue_fields");
+			writer.WriteStartArray();
+			JsonSerializer.Serialize(writer, DocvalueFieldsDescriptor, options);
+			writer.WriteEndArray();
+		}
+		else if (DocvalueFieldsDescriptorAction is not null)
+		{
+			writer.WritePropertyName("docvalue_fields");
+			writer.WriteStartArray();
+			JsonSerializer.Serialize(writer, new Elastic.Clients.Elasticsearch.QueryDsl.FieldAndFormatDescriptor<TDocument>(DocvalueFieldsDescriptorAction), options);
+			writer.WriteEndArray();
+		}
+		else if (DocvalueFieldsDescriptorActions is not null)
+		{
+			writer.WritePropertyName("docvalue_fields");
+			writer.WriteStartArray();
+			foreach (var action in DocvalueFieldsDescriptorActions)
+			{
+				JsonSerializer.Serialize(writer, new Elastic.Clients.Elasticsearch.QueryDsl.FieldAndFormatDescriptor<TDocument>(action), options);
+			}
+
+			writer.WriteEndArray();
+		}
+		else if (DocvalueFieldsValue is not null)
 		{
 			writer.WritePropertyName("docvalue_fields");
 			JsonSerializer.Serialize(writer, DocvalueFieldsValue, options);
@@ -369,6 +475,37 @@ protected override void Serialize(Utf8JsonWriter writer, JsonSerializerOptions o
 			JsonSerializer.Serialize(writer, FieldValue, options);
 		}
 
+		if (FieldsDescriptor is not null)
+		{
+			writer.WritePropertyName("fields");
+			writer.WriteStartArray();
+			JsonSerializer.Serialize(writer, FieldsDescriptor, options);
+			writer.WriteEndArray();
+		}
+		else if (FieldsDescriptorAction is not null)
+		{
+			writer.WritePropertyName("fields");
+			writer.WriteStartArray();
+			JsonSerializer.Serialize(writer, new Elastic.Clients.Elasticsearch.QueryDsl.FieldAndFormatDescriptor<TDocument>(FieldsDescriptorAction), options);
+			writer.WriteEndArray();
+		}
+		else if (FieldsDescriptorActions is not null)
+		{
+			writer.WritePropertyName("fields");
+			writer.WriteStartArray();
+			foreach (var action in FieldsDescriptorActions)
+			{
+				JsonSerializer.Serialize(writer, new Elastic.Clients.Elasticsearch.QueryDsl.FieldAndFormatDescriptor<TDocument>(action), options);
+			}
+
+			writer.WriteEndArray();
+		}
+		else if (FieldsValue is not null)
+		{
+			writer.WritePropertyName("fields");
+			JsonSerializer.Serialize(writer, FieldsValue, options);
+		}
+
 		if (FromValue.HasValue)
 		{
 			writer.WritePropertyName("from");
@@ -486,9 +623,16 @@ public TopHitsAggregationDescriptor() : base()
 	{
 	}
 
-	private Elastic.Clients.Elasticsearch.Fields? DocvalueFieldsValue { get; set; }
+	private ICollection<Elastic.Clients.Elasticsearch.QueryDsl.FieldAndFormat>? DocvalueFieldsValue { get; set; }
+	private Elastic.Clients.Elasticsearch.QueryDsl.FieldAndFormatDescriptor DocvalueFieldsDescriptor { get; set; }
+	private Action<Elastic.Clients.Elasticsearch.QueryDsl.FieldAndFormatDescriptor> DocvalueFieldsDescriptorAction { get; set; }
+	private Action<Elastic.Clients.Elasticsearch.QueryDsl.FieldAndFormatDescriptor>[] DocvalueFieldsDescriptorActions { get; set; }
 	private bool? ExplainValue { get; set; }
 	private Elastic.Clients.Elasticsearch.Field? FieldValue { get; set; }
+	private ICollection<Elastic.Clients.Elasticsearch.QueryDsl.FieldAndFormat>? FieldsValue { get; set; }
+	private Elastic.Clients.Elasticsearch.QueryDsl.FieldAndFormatDescriptor FieldsDescriptor { get; set; }
+	private Action<Elastic.Clients.Elasticsearch.QueryDsl.FieldAndFormatDescriptor> FieldsDescriptorAction { get; set; }
+	private Action<Elastic.Clients.Elasticsearch.QueryDsl.FieldAndFormatDescriptor>[] FieldsDescriptorActions { get; set; }
 	private int? FromValue { get; set; }
 	private Elastic.Clients.Elasticsearch.Core.Search.Highlight? HighlightValue { get; set; }
 	private Elastic.Clients.Elasticsearch.Core.Search.HighlightDescriptor HighlightDescriptor { get; set; }
@@ -510,12 +654,42 @@ public TopHitsAggregationDescriptor() : base()
 	/// <summary>
 	/// <para>Fields for which to return doc values.</para>
 	/// </summary>
-	public TopHitsAggregationDescriptor DocvalueFields(Elastic.Clients.Elasticsearch.Fields? docvalueFields)
+	public TopHitsAggregationDescriptor DocvalueFields(ICollection<Elastic.Clients.Elasticsearch.QueryDsl.FieldAndFormat>? docvalueFields)
 	{
+		DocvalueFieldsDescriptor = null;
+		DocvalueFieldsDescriptorAction = null;
+		DocvalueFieldsDescriptorActions = null;
 		DocvalueFieldsValue = docvalueFields;
 		return Self;
 	}
 
+	public TopHitsAggregationDescriptor DocvalueFields(Elastic.Clients.Elasticsearch.QueryDsl.FieldAndFormatDescriptor descriptor)
+	{
+		DocvalueFieldsValue = null;
+		DocvalueFieldsDescriptorAction = null;
+		DocvalueFieldsDescriptorActions = null;
+		DocvalueFieldsDescriptor = descriptor;
+		return Self;
+	}
+
+	public TopHitsAggregationDescriptor DocvalueFields(Action<Elastic.Clients.Elasticsearch.QueryDsl.FieldAndFormatDescriptor> configure)
+	{
+		DocvalueFieldsValue = null;
+		DocvalueFieldsDescriptor = null;
+		DocvalueFieldsDescriptorActions = null;
+		DocvalueFieldsDescriptorAction = configure;
+		return Self;
+	}
+
+	public TopHitsAggregationDescriptor DocvalueFields(params Action<Elastic.Clients.Elasticsearch.QueryDsl.FieldAndFormatDescriptor>[] configure)
+	{
+		DocvalueFieldsValue = null;
+		DocvalueFieldsDescriptor = null;
+		DocvalueFieldsDescriptorAction = null;
+		DocvalueFieldsDescriptorActions = configure;
+		return Self;
+	}
+
 	/// <summary>
 	/// <para>If `true`, returns detailed information about score computation as part of a hit.</para>
 	/// </summary>
@@ -552,6 +726,45 @@ public TopHitsAggregationDescriptor Field<TDocument>(Expression<Func<TDocument,
 		return Self;
 	}
 
+	/// <summary>
+	/// <para>Array of wildcard (*) patterns. The request returns values for field names<br/>matching these patterns in the hits.fields property of the response.</para>
+	/// </summary>
+	public TopHitsAggregationDescriptor Fields(ICollection<Elastic.Clients.Elasticsearch.QueryDsl.FieldAndFormat>? fields)
+	{
+		FieldsDescriptor = null;
+		FieldsDescriptorAction = null;
+		FieldsDescriptorActions = null;
+		FieldsValue = fields;
+		return Self;
+	}
+
+	public TopHitsAggregationDescriptor Fields(Elastic.Clients.Elasticsearch.QueryDsl.FieldAndFormatDescriptor descriptor)
+	{
+		FieldsValue = null;
+		FieldsDescriptorAction = null;
+		FieldsDescriptorActions = null;
+		FieldsDescriptor = descriptor;
+		return Self;
+	}
+
+	public TopHitsAggregationDescriptor Fields(Action<Elastic.Clients.Elasticsearch.QueryDsl.FieldAndFormatDescriptor> configure)
+	{
+		FieldsValue = null;
+		FieldsDescriptor = null;
+		FieldsDescriptorActions = null;
+		FieldsDescriptorAction = configure;
+		return Self;
+	}
+
+	public TopHitsAggregationDescriptor Fields(params Action<Elastic.Clients.Elasticsearch.QueryDsl.FieldAndFormatDescriptor>[] configure)
+	{
+		FieldsValue = null;
+		FieldsDescriptor = null;
+		FieldsDescriptorAction = null;
+		FieldsDescriptorActions = configure;
+		return Self;
+	}
+
 	/// <summary>
 	/// <para>Starting document offset.</para>
 	/// </summary>
@@ -708,7 +921,32 @@ public TopHitsAggregationDescriptor Version(bool? version = true)
 	protected override void Serialize(Utf8JsonWriter writer, JsonSerializerOptions options, IElasticsearchClientSettings settings)
 	{
 		writer.WriteStartObject();
-		if (DocvalueFieldsValue is not null)
+		if (DocvalueFieldsDescriptor is not null)
+		{
+			writer.WritePropertyName("docvalue_fields");
+			writer.WriteStartArray();
+			JsonSerializer.Serialize(writer, DocvalueFieldsDescriptor, options);
+			writer.WriteEndArray();
+		}
+		else if (DocvalueFieldsDescriptorAction is not null)
+		{
+			writer.WritePropertyName("docvalue_fields");
+			writer.WriteStartArray();
+			JsonSerializer.Serialize(writer, new Elastic.Clients.Elasticsearch.QueryDsl.FieldAndFormatDescriptor(DocvalueFieldsDescriptorAction), options);
+			writer.WriteEndArray();
+		}
+		else if (DocvalueFieldsDescriptorActions is not null)
+		{
+			writer.WritePropertyName("docvalue_fields");
+			writer.WriteStartArray();
+			foreach (var action in DocvalueFieldsDescriptorActions)
+			{
+				JsonSerializer.Serialize(writer, new Elastic.Clients.Elasticsearch.QueryDsl.FieldAndFormatDescriptor(action), options);
+			}
+
+			writer.WriteEndArray();
+		}
+		else if (DocvalueFieldsValue is not null)
 		{
 			writer.WritePropertyName("docvalue_fields");
 			JsonSerializer.Serialize(writer, DocvalueFieldsValue, options);
@@ -726,6 +964,37 @@ protected override void Serialize(Utf8JsonWriter writer, JsonSerializerOptions o
 			JsonSerializer.Serialize(writer, FieldValue, options);
 		}
 
+		if (FieldsDescriptor is not null)
+		{
+			writer.WritePropertyName("fields");
+			writer.WriteStartArray();
+			JsonSerializer.Serialize(writer, FieldsDescriptor, options);
+			writer.WriteEndArray();
+		}
+		else if (FieldsDescriptorAction is not null)
+		{
+			writer.WritePropertyName("fields");
+			writer.WriteStartArray();
+			JsonSerializer.Serialize(writer, new Elastic.Clients.Elasticsearch.QueryDsl.FieldAndFormatDescriptor(FieldsDescriptorAction), options);
+			writer.WriteEndArray();
+		}
+		else if (FieldsDescriptorActions is not null)
+		{
+			writer.WritePropertyName("fields");
+			writer.WriteStartArray();
+			foreach (var action in FieldsDescriptorActions)
+			{
+				JsonSerializer.Serialize(writer, new Elastic.Clients.Elasticsearch.QueryDsl.FieldAndFormatDescriptor(action), options);
+			}
+
+			writer.WriteEndArray();
+		}
+		else if (FieldsValue is not null)
+		{
+			writer.WritePropertyName("fields");
+			JsonSerializer.Serialize(writer, FieldsValue, options);
+		}
+
 		if (FromValue.HasValue)
 		{
 			writer.WritePropertyName("from");
diff --git a/src/Elastic.Clients.Elasticsearch/_Generated/Types/Enums/Enums.Esql.g.cs b/src/Elastic.Clients.Elasticsearch/_Generated/Types/Enums/Enums.Esql.g.cs
new file mode 100644
index 00000000000..ad611e00f12
--- /dev/null
+++ b/src/Elastic.Clients.Elasticsearch/_Generated/Types/Enums/Enums.Esql.g.cs
@@ -0,0 +1,67 @@
+// Licensed to Elasticsearch B.V under one or more agreements.
+// Elasticsearch B.V licenses this file to you under the Apache 2.0 License.
+// See the LICENSE file in the project root for more information.
+//
+// ███╗   ██╗ ██████╗ ████████╗██╗ ██████╗███████╗
+// ████╗  ██║██╔═══██╗╚══██╔══╝██║██╔════╝██╔════╝
+// ██╔██╗ ██║██║   ██║   ██║   ██║██║     █████╗
+// ██║╚██╗██║██║   ██║   ██║   ██║██║     ██╔══╝
+// ██║ ╚████║╚██████╔╝   ██║   ██║╚██████╗███████╗
+// ╚═╝  ╚═══╝ ╚═════╝    ╚═╝   ╚═╝ ╚═════╝╚══════╝
+// ------------------------------------------------
+//
+// This file is automatically generated.
+// Please do not edit these files manually.
+//
+// ------------------------------------------------
+
+#nullable restore
+
+using Elastic.Clients.Elasticsearch.Core;
+using Elastic.Clients.Elasticsearch.Serialization;
+using Elastic.Transport;
+using System;
+using System.Runtime.Serialization;
+using System.Text;
+using System.Text.Json;
+using System.Text.Json.Serialization;
+
+namespace Elastic.Clients.Elasticsearch.Esql;
+
+[JsonConverter(typeof(VersionConverter))]
+public enum Version
+{
+	/// <summary>
+	/// <para>Run against the first version of ES|QL.</para>
+	/// </summary>
+	[EnumMember(Value = "2024.04.01")]
+	V20240401
+}
+
+internal sealed class VersionConverter : JsonConverter<Version>
+{
+	public override Version Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options)
+	{
+		var enumString = reader.GetString();
+		switch (enumString)
+		{
+			case "2024.04.01":
+				return Version.V20240401;
+		}
+
+		ThrowHelper.ThrowJsonException();
+		return default;
+	}
+
+	public override void Write(Utf8JsonWriter writer, Version value, JsonSerializerOptions options)
+	{
+		switch (value)
+		{
+			case Version.V20240401:
+				writer.WriteStringValue("2024.04.01");
+				return;
+		}
+
+		writer.WriteNullValue();
+	}
+}
\ No newline at end of file