From b57265c051ccc4f319b29cbc09ee72a0a1242516 Mon Sep 17 00:00:00 2001 From: "mario.danmarioalexandrudan" Date: Wed, 3 Dec 2025 14:10:43 +0200 Subject: [PATCH 1/8] API-135: mustache code generation for SearchClient HttpRequester modification for WithHTTPInfo methods --- .../com/algolia/internal/HttpRequester.java | 5 + templates/java/api.mustache | 111 +++++++++++++++++- 2 files changed, 115 insertions(+), 1 deletion(-) diff --git a/clients/algoliasearch-client-java/algoliasearch/src/main/java/com/algolia/internal/HttpRequester.java b/clients/algoliasearch-client-java/algoliasearch/src/main/java/com/algolia/internal/HttpRequester.java index d8cca00e364..aecd2afc039 100644 --- a/clients/algoliasearch-client-java/algoliasearch/src/main/java/com/algolia/internal/HttpRequester.java +++ b/clients/algoliasearch-client-java/algoliasearch/src/main/java/com/algolia/internal/HttpRequester.java @@ -97,6 +97,11 @@ private T execute(@Nonnull HttpRequest httpRequest, RequestOptions requestOp return null; // No need to deserialize, either no content or no type provided } + // Return response if the return type is Response provided. Is happening in WithHTTPInfo case. + if (returnType.hasRawClass(Response.class)) { + return (T) response; // required for WithHTTPInfo case + } + // Deserialize and return the response. return serializer.deserialize(response.body().byteStream(), returnType); } catch (IOException exception) { diff --git a/templates/java/api.mustache b/templates/java/api.mustache index beaf00b0eab..5ca7630f03d 100644 --- a/templates/java/api.mustache +++ b/templates/java/api.mustache @@ -51,6 +51,7 @@ import com.algolia.model.ingestion.Event; import com.algolia.model.ingestion.PushTaskPayload; import com.algolia.model.ingestion.PushTaskRecords; import com.algolia.model.ingestion.WatchResponse; +import okhttp3.*; {{/isSearchClient}} {{#operations}} @@ -163,6 +164,18 @@ public class {{classname}} extends ApiClient { {{^returnType}}return ;{{/returnType}} } + {{! This case is used for `WithHTTPInfo` methods }} + /** + * {{{notes}}}{{#allParams}} + * @param {{paramName}} {{{description}}}{{#required}} (required){{/required}}{{^required}} (optional{{^isContainer}}{{#defaultValue}}, default to {{{.}}}{{/defaultValue}}{{/isContainer}}){{/required}}{{/allParams}} + {{#vendorExtensions}}{{#x-is-generic}}* @param innerType The class for an HTTP response.{{/x-is-generic}}{{/vendorExtensions}} + * @param requestOptions The requestOptions to send along with the query, they will be merged with the transporter requestOptions. + {{> api_javadoc}} + public Response {{operationId}}WithHTTPInfo({{#requiredParams}}@Nonnull {{{dataType}}} {{paramName}}{{^-last}}, {{/-last}}{{/requiredParams}}{{#hasRequiredParams}}{{#hasOptionalParams}},{{/hasOptionalParams}}{{/hasRequiredParams}}{{#optionalParams}} {{{dataType}}} {{paramName}}{{^-last}}, {{/-last}}{{/optionalParams}}{{#vendorExtensions}}{{#x-is-generic}}, Class innerType{{/x-is-generic}}{{/vendorExtensions}}{{#hasParams}}, {{/hasParams}}@Nullable RequestOptions requestOptions) throws AlgoliaRuntimeException { + {{#returnType}}return {{/returnType}}LaunderThrowable.await({{operationId}}WithHTTPInfoAsync({{#allParams}}{{paramName}}, {{/allParams}}{{#vendorExtensions}}{{#x-is-generic}}innerType, {{/x-is-generic}}{{/vendorExtensions}}requestOptions)); + {{^returnType}}return ;{{/returnType}} + } + {{! This case only sets `requestOptions` as optional }} /** * {{{notes}}}{{#allParams}} @@ -173,6 +186,16 @@ public class {{classname}} extends ApiClient { {{#returnType}}return {{/returnType}}this.{{operationId}}({{#allParams}}{{paramName}}, {{/allParams}}{{#vendorExtensions}}{{#x-is-generic}}innerType, {{/x-is-generic}}{{/vendorExtensions}}null); } + {{! This case sets `requestOptions` as optional and is used for`WithHTTPInfo`}} + /** + * {{{notes}}}{{#allParams}} + * @param {{paramName}} {{{description}}}{{#required}} (required){{/required}}{{^required}} (optional{{^isContainer}}{{#defaultValue}}, default to {{{.}}}{{/defaultValue}}{{/isContainer}}){{/required}}{{/allParams}} + {{#vendorExtensions}}{{#x-is-generic}}* @param innerType The class for an HTTP response.{{/x-is-generic}}{{/vendorExtensions}} + {{> api_javadoc}} + public Response {{operationId}}WithHTTPInfo({{#requiredParams}}@Nonnull {{{dataType}}} {{paramName}}{{^-last}}, {{/-last}}{{/requiredParams}}{{#hasRequiredParams}}{{#hasOptionalParams}},{{/hasOptionalParams}}{{/hasRequiredParams}}{{#optionalParams}}{{{dataType}}} {{paramName}}{{^-last}}, {{/-last}}{{/optionalParams}}{{#vendorExtensions}}{{#x-is-generic}}, Class innerType{{/x-is-generic}}{{/vendorExtensions}}) throws AlgoliaRuntimeException { + {{#returnType}}return {{/returnType}}this.{{operationId}}WithHTTPInfo({{#allParams}}{{paramName}}, {{/allParams}}{{#vendorExtensions}}{{#x-is-generic}}innerType, {{/x-is-generic}}{{/vendorExtensions}}null); + } + {{! This case sets `requiredParams` + `requestOptions` }} {{#optionalParams.0}} /** @@ -186,6 +209,19 @@ public class {{classname}} extends ApiClient { } {{/optionalParams.0}} + {{! This case sets `requiredParams` + `requestOptions` and is used for`WithHTTPInfo`}} + {{#optionalParams.0}} + /** + * {{{notes}}}{{#requiredParams}} + * @param {{paramName}} {{{description}}} (required){{/requiredParams}} + {{#vendorExtensions}}{{#x-is-generic}}* @param innerType The class for an HTTP response.{{/x-is-generic}}{{/vendorExtensions}} + * @param requestOptions The requestOptions to send along with the query, they will be merged with the transporter requestOptions. + {{> api_javadoc}} + public Response {{operationId}}WithHTTPInfo({{#requiredParams}}@Nonnull {{{dataType}}} {{paramName}}, {{/requiredParams}}{{#vendorExtensions}}{{#x-is-generic}}Class innerType, {{/x-is-generic}}{{/vendorExtensions}} @Nullable RequestOptions requestOptions) throws AlgoliaRuntimeException { + {{#returnType}}return {{/returnType}}this.{{operationId}}WithHTTPInfo({{#requiredParams}}{{paramName}}{{^-last}}, {{/-last}}{{/requiredParams}}{{#requiredParams.0}},{{/requiredParams.0}}{{#optionalParams}}null{{^-last}},{{/-last}}{{/optionalParams}}, {{#vendorExtensions}}{{#x-is-generic}}innerType, {{/x-is-generic}}{{/vendorExtensions}}requestOptions); + } + {{/optionalParams.0}} + {{! This case only sets `requiredParams` }} {{#optionalParams.0}} /** @@ -198,6 +234,18 @@ public class {{classname}} extends ApiClient { } {{/optionalParams.0}} + {{! This case sets `requiredParams` and is used for`WithHTTPInfo`}} + {{#optionalParams.0}} + /** + * {{{notes}}}{{#requiredParams}} + * @param {{paramName}} {{{description}}} (required){{/requiredParams}} + {{#vendorExtensions}}{{#x-is-generic}}* @param innerType The class for an HTTP response.{{/x-is-generic}}{{/vendorExtensions}} + {{> api_javadoc}} + public Response {{operationId}}WithHTTPInfo({{#requiredParams}}@Nonnull {{{dataType}}} {{paramName}}{{^-last}}, {{/-last}}{{/requiredParams}}{{#vendorExtensions}}{{#x-is-generic}}, Class innerType{{/x-is-generic}}{{/vendorExtensions}}) throws AlgoliaRuntimeException { + {{#returnType}}return {{/returnType}}this.{{operationId}}WithHTTPInfo({{#requiredParams}}{{paramName}}{{^-last}}, {{/-last}}{{/requiredParams}}{{#requiredParams.0}},{{/requiredParams.0}}{{#optionalParams}}null{{^-last}},{{/-last}}{{/optionalParams}}, {{#vendorExtensions}}{{#x-is-generic}}innerType, {{/x-is-generic}}{{/vendorExtensions}}null); + } + {{/optionalParams.0}} + /** * (asynchronously) * {{{notes}}}{{#allParams}} @@ -221,6 +269,29 @@ public class {{classname}} extends ApiClient { return executeAsync(request, {{#vendorExtensions.x-timeouts}}new RequestOptions().setReadTimeout(Duration.ofMillis({{{read}}}L)).setWriteTimeout(Duration.ofMillis({{{write}}}L)).setConnectTimeout(Duration.ofMillis({{{connect}}}L)).mergeRight({{/vendorExtensions.x-timeouts}}requestOptions{{#vendorExtensions.x-timeouts}}){{/vendorExtensions.x-timeouts}}, {{#vendorExtensions}}{{#x-is-generic}}{{{returnType}}}.class, innerType{{/x-is-generic}}{{/vendorExtensions}}{{^vendorExtensions.x-is-generic}}{{^returnType}}null{{/returnType}}{{#returnType}}new TypeReference<{{{.}}}>(){}{{/returnType}}{{/vendorExtensions.x-is-generic}}); } + /** + * (asynchronously) + * {{{notes}}}{{#allParams}} + * @param {{paramName}} {{{description}}}{{#required}} (required){{/required}}{{^required}} (optional{{^isContainer}}{{#defaultValue}}, default to {{{.}}}{{/defaultValue}}{{/isContainer}}){{/required}}{{/allParams}}{{#vendorExtensions}}{{#x-is-generic}} + * @param innerType The class for an HTTP response.{{/x-is-generic}}{{/vendorExtensions}} + * @param requestOptions The requestOptions to send along with the query, they will be merged with the transporter requestOptions. + {{> api_javadoc}} + public CompletableFuture {{operationId}}WithHTTPInfoAsync({{#requiredParams}}@Nonnull {{{dataType}}} {{paramName}},{{/requiredParams}}{{#optionalParams}}{{{dataType}}} {{paramName}}, {{/optionalParams}}{{#vendorExtensions}}{{#x-is-generic}}Class innerType, {{/x-is-generic}}{{/vendorExtensions}}@Nullable RequestOptions requestOptions) throws AlgoliaRuntimeException { + {{#allParams}}{{#required}} + Parameters.requireNonNull({{paramName}}, "Parameter `{{paramName}}` is required when calling `{{operationId}}`."); + {{/required}}{{/allParams}} + + HttpRequest request = HttpRequest.builder() + {{#vendorExtensions}}{{#x-is-custom-request}}.setPathEncoded("{{{path}}}", path){{/x-is-custom-request}}{{^x-is-custom-request}}.setPath("{{{path}}}"{{#pathParams}}, {{{paramName}}}{{/pathParams}}){{/x-is-custom-request}}{{/vendorExtensions}} + .setMethod("{{httpMethod}}") + {{#bodyParam}}.setBody({{paramName}}){{/bodyParam}} + {{#vendorExtensions.x-use-read-transporter}}.setRead(true){{/vendorExtensions.x-use-read-transporter}} + {{#headerParams}}.addHeader("{{baseName}}", {{paramName}}){{/headerParams}} + {{#vendorExtensions}}{{#queryParams}}{{^x-is-custom-request}}.addQueryParameter("{{baseName}}", {{paramName}}){{/x-is-custom-request}}{{#x-is-custom-request}}.addQueryParameters(parameters){{/x-is-custom-request}}{{/queryParams}}{{/vendorExtensions}} + .build(); + return executeAsync(request, {{#vendorExtensions.x-timeouts}}new RequestOptions().setReadTimeout(Duration.ofMillis({{{read}}}L)).setWriteTimeout(Duration.ofMillis({{{write}}}L)).setConnectTimeout(Duration.ofMillis({{{connect}}}L)).mergeRight({{/vendorExtensions.x-timeouts}}requestOptions{{#vendorExtensions.x-timeouts}}){{/vendorExtensions.x-timeouts}}, {{#vendorExtensions}}{{#x-is-generic}}{{{returnType}}}.class, innerType{{/x-is-generic}}{{/vendorExtensions}}{{^vendorExtensions.x-is-generic}}{{^returnType}}null{{/returnType}}{{#returnType}}new TypeReference(){}{{/returnType}}{{/vendorExtensions.x-is-generic}}); + } + {{! This case only sets `requestOptions` as optional }} /** * (asynchronously) @@ -232,6 +303,17 @@ public class {{classname}} extends ApiClient { return this.{{operationId}}Async({{#allParams}}{{paramName}}, {{/allParams}}{{#vendorExtensions}}{{#x-is-generic}}innerType, {{/x-is-generic}}{{/vendorExtensions}}null); } + {{! This case sets `requestOptions` as optional and is used for`WithHTTPInfo`}} + /** + * (asynchronously) + * {{{notes}}}{{#allParams}} + * @param {{paramName}} {{{description}}}{{#required}} (required){{/required}}{{^required}} (optional{{^isContainer}}{{#defaultValue}}, default to {{{.}}}{{/defaultValue}}{{/isContainer}}){{/required}}{{/allParams}}{{#vendorExtensions}}{{#x-is-generic}} + * @param innerType The class for an HTTP response.{{/x-is-generic}}{{/vendorExtensions}} + {{> api_javadoc}} + public CompletableFuture {{operationId}}WithHTTPInfoAsync({{#requiredParams}}@Nonnull {{{dataType}}} {{paramName}}{{^-last}}, {{/-last}}{{/requiredParams}}{{#hasRequiredParams}}{{#hasOptionalParams}},{{/hasOptionalParams}}{{/hasRequiredParams}}{{#optionalParams}}{{{dataType}}} {{paramName}}{{^-last}}, {{/-last}}{{/optionalParams}}{{#vendorExtensions}}{{#x-is-generic}}, Class innerType{{/x-is-generic}}{{/vendorExtensions}}) throws AlgoliaRuntimeException { + return this.{{operationId}}WithHTTPInfoAsync({{#allParams}}{{paramName}}, {{/allParams}}{{#vendorExtensions}}{{#x-is-generic}}innerType, {{/x-is-generic}}{{/vendorExtensions}}null); + } + {{! This case sets `requiredParams` + `requestOptions` }} {{#optionalParams.0}} /** @@ -246,6 +328,20 @@ public class {{classname}} extends ApiClient { } {{/optionalParams.0}} + {{! This case sets `requiredParams` + `requestOptions` and is used for`WithHTTPInfo`}} + {{#optionalParams.0}} + /** + * (asynchronously) + * {{{notes}}}{{#requiredParams}} + * @param {{paramName}} {{{description}}} (required){{/requiredParams}}{{#vendorExtensions}}{{#x-is-generic}} + * @param innerType The class for an HTTP response.{{/x-is-generic}}{{/vendorExtensions}} + * @param requestOptions The requestOptions to send along with the query, they will be merged with the transporter requestOptions. + {{> api_javadoc}} + public CompletableFuture {{operationId}}WithHTTPInfoAsync({{#requiredParams}}@Nonnull {{{dataType}}} {{paramName}}, {{/requiredParams}}{{#vendorExtensions}}{{#x-is-generic}}Class innerType, {{/x-is-generic}}{{/vendorExtensions}}@Nullable RequestOptions requestOptions) throws AlgoliaRuntimeException { + return this.{{operationId}}WithHTTPInfoAsync({{#requiredParams}}{{paramName}}{{^-last}}, {{/-last}}{{/requiredParams}}{{#requiredParams.0}},{{/requiredParams.0}}{{#optionalParams}}null{{^-last}},{{/-last}}{{/optionalParams}}, {{#vendorExtensions}}{{#x-is-generic}}innerType, {{/x-is-generic}}{{/vendorExtensions}}requestOptions); + } + {{/optionalParams.0}} + {{! This case only sets `requiredParams` }} {{#optionalParams.0}} /** @@ -258,7 +354,20 @@ public class {{classname}} extends ApiClient { return this.{{operationId}}Async({{#requiredParams}}{{paramName}}{{^-last}}, {{/-last}}{{/requiredParams}}{{#requiredParams.0}},{{/requiredParams.0}}{{#optionalParams}}null{{^-last}},{{/-last}}{{/optionalParams}}, {{#vendorExtensions}}{{#x-is-generic}}innerType, {{/x-is-generic}}{{/vendorExtensions}}null); } {{/optionalParams.0}} - {{/operation}} + + {{! This case sets `requiredParams` and is used for`WithHTTPInfo`}} + {{#optionalParams.0}} + /** + * (asynchronously) + * {{{notes}}}{{#requiredParams}} + * @param {{paramName}} {{{description}}} (required){{/requiredParams}}{{#vendorExtensions}}{{#x-is-generic}} + * @param innerType The class for an HTTP response.{{/x-is-generic}}{{/vendorExtensions}} + {{> api_javadoc}} + public CompletableFuture {{operationId}}WithHTTPInfoAsync({{#requiredParams}}@Nonnull {{{dataType}}} {{paramName}}{{^-last}}, {{/-last}}{{/requiredParams}}{{#vendorExtensions}}{{#x-is-generic}}, Class innerType{{/x-is-generic}}{{/vendorExtensions}}) throws AlgoliaRuntimeException { + return this.{{operationId}}WithHTTPInfoAsync({{#requiredParams}}{{paramName}}{{^-last}}, {{/-last}}{{/requiredParams}}{{#requiredParams.0}},{{/requiredParams.0}}{{#optionalParams}}null{{^-last}},{{/-last}}{{/optionalParams}}, {{#vendorExtensions}}{{#x-is-generic}}innerType, {{/x-is-generic}}{{/vendorExtensions}}null); + } + {{/optionalParams.0}} +{{/operation}} {{> api_helpers}} } From 361d88e65405fc2d2de94384b0a3933b8a901729 Mon Sep 17 00:00:00 2001 From: "mario.danmarioalexandrudan" Date: Wed, 3 Dec 2025 14:50:25 +0200 Subject: [PATCH 2/8] updated moustache template generated all clients for search --- .../src/main/java/com/algolia/internal/HttpRequester.java | 2 +- templates/java/api.mustache | 7 ++++++- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/clients/algoliasearch-client-java/algoliasearch/src/main/java/com/algolia/internal/HttpRequester.java b/clients/algoliasearch-client-java/algoliasearch/src/main/java/com/algolia/internal/HttpRequester.java index aecd2afc039..f74ac1d3065 100644 --- a/clients/algoliasearch-client-java/algoliasearch/src/main/java/com/algolia/internal/HttpRequester.java +++ b/clients/algoliasearch-client-java/algoliasearch/src/main/java/com/algolia/internal/HttpRequester.java @@ -97,7 +97,7 @@ private T execute(@Nonnull HttpRequest httpRequest, RequestOptions requestOp return null; // No need to deserialize, either no content or no type provided } - // Return response if the return type is Response provided. Is happening in WithHTTPInfo case. + // Return response if the return type is Response. Is happening in WithHTTPInfo case. if (returnType.hasRawClass(Response.class)) { return (T) response; // required for WithHTTPInfo case } diff --git a/templates/java/api.mustache b/templates/java/api.mustache index 5ca7630f03d..3d7869eb10a 100644 --- a/templates/java/api.mustache +++ b/templates/java/api.mustache @@ -32,6 +32,12 @@ import java.util.stream.Collectors; import java.util.stream.Stream; import java.util.concurrent.CompletableFuture; import javax.annotation.Nonnull; +import okhttp3.*; +import com.algolia.model.composition.RequestBody; + +{{#isCompositionClient}} +import com.algolia.model.composition.RequestBody; +{{/isCompositionClient}} {{#isSearchClient}} import com.algolia.internal.JsonSerializer; @@ -51,7 +57,6 @@ import com.algolia.model.ingestion.Event; import com.algolia.model.ingestion.PushTaskPayload; import com.algolia.model.ingestion.PushTaskRecords; import com.algolia.model.ingestion.WatchResponse; -import okhttp3.*; {{/isSearchClient}} {{#operations}} From 29eeec1324695ce4225f88a0761d957db45a3146 Mon Sep 17 00:00:00 2001 From: "mario.danmarioalexandrudan" Date: Wed, 3 Dec 2025 15:05:52 +0200 Subject: [PATCH 3/8] updated moustache template to accommodate the deleteUserToken case --- templates/java/api.mustache | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/templates/java/api.mustache b/templates/java/api.mustache index 3d7869eb10a..ae868e0cb35 100644 --- a/templates/java/api.mustache +++ b/templates/java/api.mustache @@ -177,8 +177,7 @@ public class {{classname}} extends ApiClient { * @param requestOptions The requestOptions to send along with the query, they will be merged with the transporter requestOptions. {{> api_javadoc}} public Response {{operationId}}WithHTTPInfo({{#requiredParams}}@Nonnull {{{dataType}}} {{paramName}}{{^-last}}, {{/-last}}{{/requiredParams}}{{#hasRequiredParams}}{{#hasOptionalParams}},{{/hasOptionalParams}}{{/hasRequiredParams}}{{#optionalParams}} {{{dataType}}} {{paramName}}{{^-last}}, {{/-last}}{{/optionalParams}}{{#vendorExtensions}}{{#x-is-generic}}, Class innerType{{/x-is-generic}}{{/vendorExtensions}}{{#hasParams}}, {{/hasParams}}@Nullable RequestOptions requestOptions) throws AlgoliaRuntimeException { - {{#returnType}}return {{/returnType}}LaunderThrowable.await({{operationId}}WithHTTPInfoAsync({{#allParams}}{{paramName}}, {{/allParams}}{{#vendorExtensions}}{{#x-is-generic}}innerType, {{/x-is-generic}}{{/vendorExtensions}}requestOptions)); - {{^returnType}}return ;{{/returnType}} + return LaunderThrowable.await({{operationId}}WithHTTPInfoAsync({{#allParams}}{{paramName}}, {{/allParams}}{{#vendorExtensions}}{{#x-is-generic}}innerType, {{/x-is-generic}}{{/vendorExtensions}}requestOptions)); } {{! This case only sets `requestOptions` as optional }} @@ -198,7 +197,7 @@ public class {{classname}} extends ApiClient { {{#vendorExtensions}}{{#x-is-generic}}* @param innerType The class for an HTTP response.{{/x-is-generic}}{{/vendorExtensions}} {{> api_javadoc}} public Response {{operationId}}WithHTTPInfo({{#requiredParams}}@Nonnull {{{dataType}}} {{paramName}}{{^-last}}, {{/-last}}{{/requiredParams}}{{#hasRequiredParams}}{{#hasOptionalParams}},{{/hasOptionalParams}}{{/hasRequiredParams}}{{#optionalParams}}{{{dataType}}} {{paramName}}{{^-last}}, {{/-last}}{{/optionalParams}}{{#vendorExtensions}}{{#x-is-generic}}, Class innerType{{/x-is-generic}}{{/vendorExtensions}}) throws AlgoliaRuntimeException { - {{#returnType}}return {{/returnType}}this.{{operationId}}WithHTTPInfo({{#allParams}}{{paramName}}, {{/allParams}}{{#vendorExtensions}}{{#x-is-generic}}innerType, {{/x-is-generic}}{{/vendorExtensions}}null); + return this.{{operationId}}WithHTTPInfo({{#allParams}}{{paramName}}, {{/allParams}}{{#vendorExtensions}}{{#x-is-generic}}innerType, {{/x-is-generic}}{{/vendorExtensions}}null); } {{! This case sets `requiredParams` + `requestOptions` }} From 26b6d5ecc7db90fd84cc9b85e3c34f62b47bc7de Mon Sep 17 00:00:00 2001 From: "mario.danmarioalexandrudan" Date: Wed, 3 Dec 2025 15:09:26 +0200 Subject: [PATCH 4/8] WithHTTPInfo should always have a return type for all cases --- templates/java/api.mustache | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/templates/java/api.mustache b/templates/java/api.mustache index ae868e0cb35..833befce408 100644 --- a/templates/java/api.mustache +++ b/templates/java/api.mustache @@ -222,7 +222,7 @@ public class {{classname}} extends ApiClient { * @param requestOptions The requestOptions to send along with the query, they will be merged with the transporter requestOptions. {{> api_javadoc}} public Response {{operationId}}WithHTTPInfo({{#requiredParams}}@Nonnull {{{dataType}}} {{paramName}}, {{/requiredParams}}{{#vendorExtensions}}{{#x-is-generic}}Class innerType, {{/x-is-generic}}{{/vendorExtensions}} @Nullable RequestOptions requestOptions) throws AlgoliaRuntimeException { - {{#returnType}}return {{/returnType}}this.{{operationId}}WithHTTPInfo({{#requiredParams}}{{paramName}}{{^-last}}, {{/-last}}{{/requiredParams}}{{#requiredParams.0}},{{/requiredParams.0}}{{#optionalParams}}null{{^-last}},{{/-last}}{{/optionalParams}}, {{#vendorExtensions}}{{#x-is-generic}}innerType, {{/x-is-generic}}{{/vendorExtensions}}requestOptions); + return this.{{operationId}}WithHTTPInfo({{#requiredParams}}{{paramName}}{{^-last}}, {{/-last}}{{/requiredParams}}{{#requiredParams.0}},{{/requiredParams.0}}{{#optionalParams}}null{{^-last}},{{/-last}}{{/optionalParams}}, {{#vendorExtensions}}{{#x-is-generic}}innerType, {{/x-is-generic}}{{/vendorExtensions}}requestOptions); } {{/optionalParams.0}} @@ -246,7 +246,7 @@ public class {{classname}} extends ApiClient { {{#vendorExtensions}}{{#x-is-generic}}* @param innerType The class for an HTTP response.{{/x-is-generic}}{{/vendorExtensions}} {{> api_javadoc}} public Response {{operationId}}WithHTTPInfo({{#requiredParams}}@Nonnull {{{dataType}}} {{paramName}}{{^-last}}, {{/-last}}{{/requiredParams}}{{#vendorExtensions}}{{#x-is-generic}}, Class innerType{{/x-is-generic}}{{/vendorExtensions}}) throws AlgoliaRuntimeException { - {{#returnType}}return {{/returnType}}this.{{operationId}}WithHTTPInfo({{#requiredParams}}{{paramName}}{{^-last}}, {{/-last}}{{/requiredParams}}{{#requiredParams.0}},{{/requiredParams.0}}{{#optionalParams}}null{{^-last}},{{/-last}}{{/optionalParams}}, {{#vendorExtensions}}{{#x-is-generic}}innerType, {{/x-is-generic}}{{/vendorExtensions}}null); + return this.{{operationId}}WithHTTPInfo({{#requiredParams}}{{paramName}}{{^-last}}, {{/-last}}{{/requiredParams}}{{#requiredParams.0}},{{/requiredParams.0}}{{#optionalParams}}null{{^-last}},{{/-last}}{{/optionalParams}}, {{#vendorExtensions}}{{#x-is-generic}}innerType, {{/x-is-generic}}{{/vendorExtensions}}null); } {{/optionalParams.0}} From 9bc00e1e9aef3a81c19d6c8472d8440472167aca Mon Sep 17 00:00:00 2001 From: Mario-Alexandru Dan Date: Wed, 3 Dec 2025 15:29:09 +0200 Subject: [PATCH 5/8] Update clients/algoliasearch-client-java/algoliasearch/src/main/java/com/algolia/internal/HttpRequester.java MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Clément Vannicatte --- .../src/main/java/com/algolia/internal/HttpRequester.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/clients/algoliasearch-client-java/algoliasearch/src/main/java/com/algolia/internal/HttpRequester.java b/clients/algoliasearch-client-java/algoliasearch/src/main/java/com/algolia/internal/HttpRequester.java index f74ac1d3065..0cf1915563b 100644 --- a/clients/algoliasearch-client-java/algoliasearch/src/main/java/com/algolia/internal/HttpRequester.java +++ b/clients/algoliasearch-client-java/algoliasearch/src/main/java/com/algolia/internal/HttpRequester.java @@ -97,9 +97,9 @@ private T execute(@Nonnull HttpRequest httpRequest, RequestOptions requestOp return null; // No need to deserialize, either no content or no type provided } - // Return response if the return type is Response. Is happening in WithHTTPInfo case. + // Returns the raw response when using `*WithHTTPInfo` methods. if (returnType.hasRawClass(Response.class)) { - return (T) response; // required for WithHTTPInfo case + return (T) response; } // Deserialize and return the response. From 91a6132c42f5e144df5d648e469d6adbe038a78c Mon Sep 17 00:00:00 2001 From: Mario-Alexandru Dan Date: Wed, 3 Dec 2025 15:30:46 +0200 Subject: [PATCH 6/8] Update templates/java/api.mustache MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Clément Vannicatte --- templates/java/api.mustache | 1 - 1 file changed, 1 deletion(-) diff --git a/templates/java/api.mustache b/templates/java/api.mustache index 833befce408..2d25b09a12c 100644 --- a/templates/java/api.mustache +++ b/templates/java/api.mustache @@ -33,7 +33,6 @@ import java.util.stream.Stream; import java.util.concurrent.CompletableFuture; import javax.annotation.Nonnull; import okhttp3.*; -import com.algolia.model.composition.RequestBody; {{#isCompositionClient}} import com.algolia.model.composition.RequestBody; From 98f53f026c647e62b8ec21407e90e541a1e04079 Mon Sep 17 00:00:00 2001 From: "mario.danmarioalexandrudan" Date: Wed, 3 Dec 2025 15:38:28 +0200 Subject: [PATCH 7/8] Scoped the import to only what is needed. Grouped the import better. --- templates/java/api.mustache | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/templates/java/api.mustache b/templates/java/api.mustache index 2d25b09a12c..72c8ed02fe6 100644 --- a/templates/java/api.mustache +++ b/templates/java/api.mustache @@ -11,6 +11,7 @@ import javax.annotation.Nullable; import okhttp3.Call; import okhttp3.Request; +import okhttp3.Response; import {{invokerPackage}}.utils.*; import {{modelPackage}}.*; @@ -32,7 +33,6 @@ import java.util.stream.Collectors; import java.util.stream.Stream; import java.util.concurrent.CompletableFuture; import javax.annotation.Nonnull; -import okhttp3.*; {{#isCompositionClient}} import com.algolia.model.composition.RequestBody; From 9aa27328d36d9f28e19585424b40f385277b8fef Mon Sep 17 00:00:00 2001 From: "mario.danmarioalexandrudan" Date: Wed, 3 Dec 2025 15:58:33 +0200 Subject: [PATCH 8/8] Removed unnecessary import. --- templates/java/api.mustache | 4 ---- 1 file changed, 4 deletions(-) diff --git a/templates/java/api.mustache b/templates/java/api.mustache index 72c8ed02fe6..c61e95d8629 100644 --- a/templates/java/api.mustache +++ b/templates/java/api.mustache @@ -34,10 +34,6 @@ import java.util.stream.Stream; import java.util.concurrent.CompletableFuture; import javax.annotation.Nonnull; -{{#isCompositionClient}} -import com.algolia.model.composition.RequestBody; -{{/isCompositionClient}} - {{#isSearchClient}} import com.algolia.internal.JsonSerializer; import java.time.Duration;