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

1customConfig:
2 collapse-optional-nullable: true

Generated usage:

1UpdateRequest.builder()
2 .fieldName(OptionalNullable.absent()) // Omit field
3 .anotherField(OptionalNullable.ofNull()) // Clear field
4 .valueField(OptionalNullable.of("value")) // Set value
5 .build();

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.


3.10.2

(fix): Fix sync client delegation causing array query parameter compilation errors. Generator was using incorrect class names, breaking delegation and causing inline HTTP generation.

3.10.1

(fix): Fixed nullable annotation generation in builder setters when use-nullable-annotation is enabled. Builder setter parameters for nullable fields now correctly use @org.jetbrains.annotations.Nullable instead of incorrectly attempting to use the Nullable<T> container class as an annotation. Also removed @Nullable from path parameters as they are always required in REST APIs.

3.10.0

(feat): Add support for three-state nullable fields in PATCH requests via use-nullable-for-optional-fields config. When enabled, optional fields use Nullable<T> instead of Optional<T> to distinguish between omitted fields, explicit null values, and actual values.

3.9.4

(chore): Documenting .withRawResponse() in README.md.



3.9.2

(fix): Fix nullable field serialization in PATCH requests with wrapped request bodies. Explicit null values (Nullable.ofNull()) are now correctly serialized as {"field": null} instead of being omitted like Nullable.empty().

3.9.1

(fix): Fix raw client methods to return union types instead of first variant when using response properties (x-fern-sdk-return-value) with discriminated or undiscriminated unions.


3.9.0

(feat): Add support for README example style configuration via exampleStyle field. When set to “minimal”, generated README.md files show streamlined code examples with only required parameters, reducing verbosity for better readability. Defaults to “comprehensive” to maintain backward compatibility.


3.8.12

(fix): Fixed wire test generation for application/x-www-form-urlencoded requests. Wire tests now correctly validate form-encoded request bodies instead of attempting to parse them as JSON, eliminating JsonParseException failures in generated test suites.


3.8.11

(fix): Fix Java SDK generator to preserve original environment names for multi-URL environments (e.g., “E2E” instead of “E_2_E”). Single-URL environments remain unchanged for backward compatibility.


3.8.10

(fix): Fixed inconsistent file placement for resource-based core files. All Java files now use standard src/main/java/ structure in local generation mode.