3.37.0

(feat): Add additionalProperty(String key, Object value) and additionalProperties(Map<String, Object>) methods to generated builders, allowing users to set arbitrary extra fields programmatically. Previously, additional properties were only populated during JSON deserialization.


3.36.3

(fix): Use correct Long literals (3600L) instead of int literals (3600) for Optional<Long> expires_in fields in OAuth token suppliers

3.36.2

(fix): Disable OkHttp callTimeout for streaming (SSE) endpoints. The default 60-second callTimeout was terminating SSE connections after ~1 minute instead of allowing them to stream indefinitely. Streaming endpoints now set callTimeout to 0 (disabled) so the iterator blocks on each next() call waiting for new events until the connection is closed or an error occurs.


3.36.1

(fix): Handle Optional access tokens and Long type compatibility in OAuth token supplier. The generator now unwraps Optional<String> access tokens with orElseThrow and uses Long literals for the default expires_in fallback value.

3.36.0

(feat): Add server URL templating support. When an OpenAPI spec uses server variables (e.g., https://api.{region}.{environment}.example.com), the generated SDK now exposes those variables as builder methods (e.g., .region("us-east-1")). The x-fern-default-url extension provides a clean fallback URL when no variables are provided. Supports both single and multiple base URL environments.


3.35.2

(fix): Fix PATCH requests with no explicit body fields failing at runtime with OkHttp’s IllegalArgumentException: method PATCH must have a request body. The generator now provides a non-null empty request body for PATCH endpoints, matching the existing handling for POST and PUT.

3.35.1

(fix): Preserve valid HTML tags in Javadoc comments instead of escaping them. Tags like <a>, <code>, <p>, <pre>, and other standard HTML tags from API descriptions are now rendered as proper HTML in Javadoc, while standalone angle brackets (e.g. comparisons, generics) remain escaped.


3.35.0

(feat): Add SSE event-level discrimination support. When an SSE payload is a discriminated union with the discriminator at the SSE envelope level (e.g., event field), the SDK now correctly parses the full SSE envelope instead of just the data payload.


3.34.9

(fix): Update container packages to fix 9 security vulnerabilities: openssl-fips-provider-latest and openssl-libs (CVE-2025-15467), libtasn1 (CVE-2025-13151), libcap (CVE-2025-61726, CVE-2025-61728, CVE-2025-61730, CVE-2025-61731, CVE-2025-68119, CVE-2025-68121), python3-pip-wheel (CVE-2026-21441), libxml2 (CVE-2026-0989, CVE-2026-0990, CVE-2026-0992), libpng (CVE-2026-22695, CVE-2026-22801), and unzip (CVE-2019-13232).


3.34.8

(fix): Switch base image from gradle:jdk11-jammy to gradle:jdk11-corretto to fix January 2026 Oracle CPU CVEs: CVE-2026-21945, CVE-2026-21932, CVE-2026-21925, CVE-2026-21933. Amazon Corretto 11.0.30 includes the security patches while Eclipse Temurin 11.0.30 Docker images are not yet available.


3.34.7

(fix): Add pre-flight check for git availability when using self-hosted GitHub mode. The CLI now verifies git is installed before attempting to clone, providing a clear error message if git is not found. Also adds improved error logging with diagnostics when git clone fails.


3.34.6

(fix): Fix wire test generation importing types from the wrong package when multiple services have endpoints with the same HTTP method and path. The generator now uses endpoint IDs to resolve the correct endpoint instead of relying solely on method and path matching.


3.34.5

(fix): Fix streaming endpoints incorrectly setting Accept: application/json header. Streaming endpoints (SSE, NDJSON, etc.) now omit the Accept header entirely, allowing the server to negotiate the appropriate streaming format.

3.34.4

(fix): Fix Java SDK compilation error when a path parameter is named key. The lambda variable in requestOptions.getQueryParameters().forEach((key, value) -> {...}) was shadowing the path parameter, causing a “variable key is already defined” compilation error. Lambda variables are now prefixed with underscore to avoid conflicts.