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:

1config:
2 default-timeout-in-seconds: 120

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:

1// Option 1: Direct bearer token (bypass OAuth flow)
2SeedApiClient client = SeedApiClient.withToken("my-pre-generated-bearer-token")
3 .url("https://api.example.com")
4 .build();
5
6// Option 2: OAuth client credentials flow (automatic token management)
7SeedApiClient client = SeedApiClient.withCredentials("your-client-id", "your-client-secret")
8 .url("https://api.example.com")
9 .build();

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:

1config:
2 oauth-token-override: true

Generated usage:

1// Option 1: Direct bearer token (bypass OAuth flow)
2SeedApiClient client = SeedApiClient.withToken("my-pre-generated-bearer-token")
3 .url("https://api.example.com")
4 .build();
5
6// Option 2: OAuth client credentials flow (automatic token management)
7SeedApiClient client = SeedApiClient.withCredentials("your-client-id", "your-client-secret")
8 .url("https://api.example.com")
9 .build();

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:

1auth:
2 scheme: bearer
3 get-token:
4 endpoint: POST auth.retrieveToken

Generated usage:

1SeedApiClient client = SeedApiClient.builder()
2 .apiKey("your-api-key")
3 .build();
4// Token is automatically fetched and refreshed as needed

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.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.