3.14.14
(fix): Fix streaming method names and request types in wire tests. Wire tests now correctly normalize streaming endpoints to use .methodStream() naming pattern and MethodStreamRequest types, while non-streaming endpoints use .method() and MethodRequest. This eliminates “incompatible types” compilation errors where streaming method calls were paired with non-streaming response types.
3.14.13
(fix): Revert unchecked operations warning fix in StreamTest generator due to type inference compilation errors. The previous fix (3.14.0) caused “incompatible types: inference variable T has incompatible equality constraints Map<String,?>,Map” errors when compiling generated StreamTest.java files. Restores the original implementation using raw types.
3.14.12
(fix): Fix dynamic snippets compilation errors for literal-typed parameters. Literal-typed parameters (e.g., prompt with literal string value, stream with literal false) are now correctly filtered from builder method calls in generated snippets, as these fields only have hardcoded getters without corresponding setters. This maintains parity with Java v1 behavior where literal fields are excluded from all class builders (both model and request classes).
3.14.11
(fix): Fix jsonEquals helper method not being generated in wire tests. The generator now correctly calls closeTestClass() to emit the jsonEquals helper method that enables numeric equivalence comparison in wire test assertions.
3.14.10
(fix): Fix wire test failures for numeric type mismatches and header serialization. Wire tests now use numeric equivalence comparison to handle integer vs double type differences from OpenAPI specs. Headers are no longer incorrectly serialized into JSON request bodies - they now use @JsonIgnore and are sent only as HTTP headers.
3.14.9
(fix): Fix wire test compilation errors when using staged builders with collections. Builder method calls now correctly order required fields before collections like Lists, Sets, and Maps.
3.14.8
(fix): Fix critical wire test generation failures causing build crashes. Implemented service name resolution to handle IR vs Dynamic IR mismatches and added graceful error handling instead of build failures.
3.14.7
(fix): Fix inconsistent behavior between local and remote Java generation by ensuring license files are copied and platform headers are populated in all generation scenarios
3.14.6
(chore): Upgrade Gradle wrapper from 7.4.2 to 8.14.3. This update brings Java 24 support, GraalVM Native Image toolchain selection, enhanced test reporting, and build authoring improvements. The bundled Gradle wrapper files now use the latest stable Gradle 8.x release.
3.14.5
(fix): Fix SDK generation failures for OpenAPI specs with nullable container types. The generator now properly handles nullable containers in response parsing and pagination, treating them distinctly from optional containers. Also adds support for literal container detection with improved error diagnostics.
This fixes “Unexpected container type” errors that occurred when processing APIs with nullable types or array examples in query parameters.
3.14.4
(fix): Replace gradle wrapper command with resource copy to eliminate internet requests during SDK generation. Gradle wrapper files are now copied from bundled resources instead of being downloaded via gradle wrapper command. All ./gradlew invocations during generation have been removed to avoid network calls and HTTP proxy issues.
3.14.3
(fix): Skip empty object validation in wire tests for optional request bodies. When request bodies are optional(nullable(T)) where T has only optional properties, wire tests now correctly skip validation when Optional.empty() is passed, matching actual SDK behavior.
3.14.2
(fix): Fix double-wrapping of Optional.empty() in request bodies. Wire tests and dynamic snippets now correctly generate Optional.empty() instead of Optional.of(Optional.empty()) for optional request bodies.
3.14.1
(fix): Fix wire test failures by pruning union base properties from expected JSON. The Java generator does not generate base properties for union types, so wire test expectations now exclude these fields to match actual SDK serialization behavior.
3.14.0
(feat): Add support for WebSocket channels with bidirectional communication. Generated WebSocket clients
provide automatic reconnection with exponential backoff, strongly-typed message handlers, and message
queuing during disconnections. Clients are accessible via factory methods in subpackage clients.
3.13.0
(feat): Added Generation Metadata file to output.
3.12.1
(fix): Fix query and header parameters leaking into request body JSON. Only body parameters are now serialized in the request payload.
3.12.0
(feat): Add support for API-level path parameters. Path parameters defined at the API level (e.g., /test/{pathParam}) are now configurable via the root client builder (.pathParam(value)).
3.11.7
(fix): Fix ApiError toString() to display JSON-serialized body instead of hashcode (e.g., {"title": "Bad Request", ...} instead of BadRequestProblems@4ac5ea99).
3.11.6
(fix): Fix path parameter prefixes (e.g., v) being split into separate segments, producing URLs like …/v/1 instead of …/v1.
3.11.5
(fix): Extract error body parsing to ObjectMappers.parseErrorBody() utility method. When servers return XML/HTML errors instead of JSON, the utility gracefully falls back to raw string instead of throwing JsonProcessingException, preserving HTTP status codes and error details.
3.11.4
(fix): The NullableNonemptyFilter now correctly handles OptionalNullable.isAbsent() to exclude absent fields from JSON serialization in PATCH requests.
3.11.3
(fix): Fix collapse-optional-nullable config not being applied in download files mode.
3.11.2
(fix): Fix IllegalStateException: closed on error responses. Generated clients were calling responseBody.string() twice (once in success handler, once in error handler), but OkHttp’s ResponseBody can only be read once. Now pre-reads response body before success check for JSON/text responses.
3.11.1
(fix): Disable wire tests by default for Java SDKs while issues are being resolved.
3.11.0
(feat): Add support for three-state nullable fields in PATCH requests via collapse-optional-nullable config.
When enabled, optional nullable fields use OptionalNullable<T> to distinguish between omitted fields,
explicit null values, and actual values. This enables proper PATCH request semantics for APIs that need
to differentiate between “not specified” and “set to null”.
Generated usage:
3.10.5
(fix): Revert support for three-state nullable fields in PATCH requests introduced in 3.10.0 (PR #10104).
Restores Optional<T> semantics and removes the use-nullable-for-optional-fields config and related Nullable<T> handling.
3.10.4
(fix): Fix compilation errors when using boolean or long query parameters.
3.10.3
(fix): Use Gradle wrapper for Spotless formatting instead of requiring gradle in PATH.