diff --git a/src/Elastic.Clients.Elasticsearch.Serverless/Core/ElasticsearchClientProductRegistration.cs b/src/Elastic.Clients.Elasticsearch.Serverless/Core/ElasticsearchClientProductRegistration.cs
index 225f124c7c1..14278786060 100644
--- a/src/Elastic.Clients.Elasticsearch.Serverless/Core/ElasticsearchClientProductRegistration.cs
+++ b/src/Elastic.Clients.Elasticsearch.Serverless/Core/ElasticsearchClientProductRegistration.cs
@@ -25,14 +25,14 @@ public ElasticsearchClientProductRegistration(Type markerType) : base(markerType
public override string ServiceIdentifier => "esv";
- public override string DefaultMimeType => null; // Prevent base 'ElasticsearchProductRegistration' from sending the compatibility header
+ public override string? DefaultContentType => null; // Prevent base 'ElasticsearchProductRegistration' from sending the compatibility header
public override MetaHeaderProvider MetaHeaderProvider => _metaHeaderProvider;
///
/// Elastic.Clients.Elasticsearch handles 404 in its , we do not want the low level client throwing
/// exceptions
- /// when is enabled for 404's. The client is in charge of
+ /// when is enabled for 404's. The client is in charge of
/// composing paths
/// so a 404 never signals a wrong URL but a missing entity.
///
@@ -77,7 +77,7 @@ public class ApiVersionMetaHeaderProducer : MetaHeaderProducer
public override string HeaderName => "Elastic-Api-Version";
- public override string ProduceHeaderValue(RequestData requestData) => _apiVersion;
+ public override string ProduceHeaderValue(RequestData requestData, bool isAsync) => _apiVersion;
public ApiVersionMetaHeaderProducer(VersionInfo version)
{
diff --git a/src/Elastic.Clients.Elasticsearch.Serverless/Elastic.Clients.Elasticsearch.Serverless.csproj b/src/Elastic.Clients.Elasticsearch.Serverless/Elastic.Clients.Elasticsearch.Serverless.csproj
index 4e00bb4e38c..9907978767d 100644
--- a/src/Elastic.Clients.Elasticsearch.Serverless/Elastic.Clients.Elasticsearch.Serverless.csproj
+++ b/src/Elastic.Clients.Elasticsearch.Serverless/Elastic.Clients.Elasticsearch.Serverless.csproj
@@ -21,7 +21,7 @@
annotations
-
+
diff --git a/src/Elastic.Clients.Elasticsearch/Core/ElasticsearchClientProductRegistration.cs b/src/Elastic.Clients.Elasticsearch/Core/ElasticsearchClientProductRegistration.cs
index 3f00d9bb255..6c5e75b814e 100644
--- a/src/Elastic.Clients.Elasticsearch/Core/ElasticsearchClientProductRegistration.cs
+++ b/src/Elastic.Clients.Elasticsearch/Core/ElasticsearchClientProductRegistration.cs
@@ -18,7 +18,7 @@ public ElasticsearchClientProductRegistration(Type markerType) : base(markerType
///
/// Elastic.Clients.Elasticsearch handles 404 in its , we do not want the low level client throwing
/// exceptions
- /// when is enabled for 404's. The client is in charge of
+ /// when is enabled for 404's. The client is in charge of
/// composing paths
/// so a 404 never signals a wrong URL but a missing entity.
///
diff --git a/src/Elastic.Clients.Elasticsearch/Elastic.Clients.Elasticsearch.csproj b/src/Elastic.Clients.Elasticsearch/Elastic.Clients.Elasticsearch.csproj
index dcd3c9db9d8..c3409a69737 100644
--- a/src/Elastic.Clients.Elasticsearch/Elastic.Clients.Elasticsearch.csproj
+++ b/src/Elastic.Clients.Elasticsearch/Elastic.Clients.Elasticsearch.csproj
@@ -21,7 +21,7 @@
annotations
-
+
diff --git a/src/Elastic.Clients.Elasticsearch/_Shared/Api/BulkRequest.cs b/src/Elastic.Clients.Elasticsearch/_Shared/Api/BulkRequest.cs
index b9a2bf5151e..853b13a8be5 100644
--- a/src/Elastic.Clients.Elasticsearch/_Shared/Api/BulkRequest.cs
+++ b/src/Elastic.Clients.Elasticsearch/_Shared/Api/BulkRequest.cs
@@ -32,13 +32,17 @@ namespace Elastic.Clients.Elasticsearch;
public partial class BulkRequest : IStreamSerializable
{
- internal Request Self => this;
+ private static readonly IRequestConfiguration RequestConfigSingleton = new RequestConfiguration
+ {
+ Accept = "application/json",
+ ContentType = "application/x-ndjson"
+ };
- public BulkOperationsCollection Operations { get; set; }
+ internal Request Self => this;
- internal override string ContentType => "application/x-ndjson";
+ protected internal override IRequestConfiguration RequestConfig => RequestConfigSingleton;
- internal override string Accept => "application/json";
+ public BulkOperationsCollection Operations { get; set; }
public void Serialize(Stream stream, IElasticsearchClientSettings settings, SerializationFormatting formatting = SerializationFormatting.None)
{
@@ -87,9 +91,13 @@ public async Task SerializeAsync(Stream stream, IElasticsearchClientSettings set
public sealed partial class BulkRequestDescriptor : IStreamSerializable
{
- internal override string ContentType => "application/x-ndjson";
+ private static readonly IRequestConfiguration RequestConfigSingleton = new RequestConfiguration
+ {
+ Accept = "application/json",
+ ContentType = "application/x-ndjson"
+ };
- internal override string Accept => "application/json";
+ protected internal override IRequestConfiguration RequestConfig => RequestConfigSingleton;
private readonly BulkOperationsCollection _operations = new();
diff --git a/src/Elastic.Clients.Elasticsearch/_Shared/Api/Esql/EsqlQueryRequest.cs b/src/Elastic.Clients.Elasticsearch/_Shared/Api/Esql/EsqlQueryRequest.cs
index 3f5821e2cb0..f4b002621f9 100644
--- a/src/Elastic.Clients.Elasticsearch/_Shared/Api/Esql/EsqlQueryRequest.cs
+++ b/src/Elastic.Clients.Elasticsearch/_Shared/Api/Esql/EsqlQueryRequest.cs
@@ -12,18 +12,19 @@
#if ELASTICSEARCH_SERVERLESS
namespace Elastic.Clients.Elasticsearch.Serverless.Esql;
#else
-
namespace Elastic.Clients.Elasticsearch.Esql;
#endif
-internal sealed class EsqlResponseBuilder : CustomResponseBuilder
+internal sealed class EsqlResponseBuilder : TypedResponseBuilder
{
- public override object DeserializeResponse(Serializer serializer, ApiCallDetails response, Stream stream)
+ protected override EsqlQueryResponse? Build(ApiCallDetails apiCallDetails, RequestData requestData,
+ Stream responseStream,
+ string contentType, long contentLength)
{
- var bytes = stream switch
+ var bytes = responseStream switch
{
MemoryStream ms => ms.ToArray(),
- _ => BytesFromStream(stream)
+ _ => BytesFromStream(responseStream)
};
return new EsqlQueryResponse { Data = bytes };
@@ -37,13 +38,14 @@ static byte[] BytesFromStream(Stream stream)
}
}
- public override async Task