3.24.1
(fix): Fix Jackson deserialization conflict when a property starts with with (e.g., withLabel) and
another property matches the suffix (e.g., label).
3.24.0
(feat): Add support for configuring the default timeout via default-timeout-in-seconds in generators.yml.
Previously, the default timeout was hardcoded to 60 seconds. Now you can customize it:
Configuration example:
3.23.4
(chore): OAuth token override is now always enabled for APIs with OAuth client credentials authentication.
The oauth-token-override config flag has been removed - SDK users can always choose between
providing a pre-generated bearer token directly or using the OAuth client credentials flow.
Generated usage:
3.23.3
(fix): Fix OptionalNullable query parameters to correctly apply .orElse(default) for parameters with
default values. Previously, only java.util.Optional was recognized for default value handling,
causing OptionalNullable parameters to be passed directly without unwrapping. Now both Optional
and OptionalNullable types are handled correctly: parameters with defaults use .orElse(default),
and parameters without defaults use appropriate presence checks (!isAbsent() for OptionalNullable,
isPresent() for Optional).
3.23.2
(fix): Revert OAuth staged builder compatibility changes.
3.23.1
(fix): Fix duplicate case label compilation errors when multiple error types map to the same HTTP
status code. The generator now deduplicates errors by status code, keeping the first error
declaration for each code. This prevents Java compilation errors in generated switch statements.
3.23.0
(feat): Add OAuth token override support with compile-time safe staged builder pattern. When
oauth-token-override: true is configured, SDK users can choose between the OAuth client
credentials flow or providing a pre-generated bearer token directly.
Configuration example:
Generated usage:
3.22.0
(feat): Add support for inferred authentication schemes. Inferred auth allows SDKs to automatically
fetch tokens from custom (non-OAuth) token endpoints using scheme: bearer with get-token
configuration. The generated InferredAuthTokenSupplier class handles token caching and
automatic refresh with a 2-minute buffer before expiry.
Configuration example:
Generated usage:
3.21.1
(fix): Fix header parameters with x-fern-parameter-name to use the correct HTTP header name (wire value) instead of the SDK parameter name.
3.21.0
(fix): Remove unused kotlin-stdlib from Gradle base image to address CVE-2020-29582 in container.
3.20.2
(fix): Improve generator logging by removing verbose “java v2 generator” status messages and adding per-file logging. Each generated file is now logged individually, matching the C# generator pattern.
3.20.1
(fix): Fix StreamTest generator to use Java 8 compatible constructs. Replaced List.of() and Map.of() (Java 9+) with Arrays.asList() and a createMap() helper method using HashMap.
3.20.0
(fix): Update vulnerable dependencies.
3.19.0
(feat): Add wire test support for OAuth APIs and multi-URL environments. Wire tests now:
- Properly mock OAuth token endpoints with per-test token enqueuing
- Use
.clientId()/.clientSecret()for OAuth-authenticated APIs - Support custom OAuth headers (e.g.,
apiKey) required by token endpoints - Configure
Environment.custom()builder for multi-URL environment APIs - Handle flexible JSON comparison allowing extra default fields in responses
3.18.13
(fix): Skip wire test generation for OAuth and multi-URL environment APIs temporarily.
3.18.12
(fix): Fix Java dynamic snippets for query parameters with allow-multiple: true and optional types. Snippets now generate List<T> instead of List<Optional<T>>, which matches the SDK builder’s convenience overload.
3.18.11
(fix): Fix dynamic snippets to preserve schema parameter order for staged builders.