3.2.0

(feat): Add comprehensive request and response body validation to wire tests for Java SDKs. Wire tests now validate that SDKs correctly serialize request bodies and deserialize response bodies, catching regressions in JSON handling.

3.1.0

(feat): Support Maven publishTarget from IR for local filesystem SDK generation.

3.0.1

(fix): Fix compilation errors in generated SDK snippets for collections with optional types and unknown size arrays. Generated documentation (README.md and reference.md) now shows cleaner, more idiomatic Java code examples using Arrays.asList() directly instead of unnecessary ArrayList wrapping.

3.0.0

(break): The SDK generator now defaults to forward-compatible enums, providing resilience against new enum variants added on the backend. This is a breaking change that affects the structure of generated enum types.

To revert to the previous behavior with traditional Java enums, add the following configuration to your generators.yml file:

1generators:
2 - name: fernapi/fern-java-sdk
3 config:
4 enable-forward-compatible-enums: false

(feat): Forward-compatible enums are now enabled by default. Generated SDKs will no longer throw errors when encountering unknown enum variants, instead handling them gracefully with an UNKNOWN value. This is particularly important for:

  • Mobile applications that cannot be easily updated
  • Maintaining backward compatibility when backend adds new enum values
  • Arrays of enum values where new variants previously caused client failures

With forward-compatible enums, the generated code changes from traditional Java enums to class-based enums that support unknown values through a visitor pattern.

2.43.3

(fix): Bugfix to make sure that the Java SDK compiles when header based versioning with defaults is enabled.

2.43.2

(fix): Fix custom license name extraction in build.gradle to display actual license names from LICENSE files instead of toString() representations. The generator now reads the first line of custom LICENSE files and displays it as the license name.

2.43.1

(fix): Fix Maven Central signing configuration to correctly use 3-parameter useInMemoryPgpKeys() method. The signing block was incorrectly using MAVEN_SIGNATURE_SECRET_KEY as the key ID parameter instead of MAVEN_SIGNATURE_KID, causing Sonatype Central validation failures during deployment.

2.42.1

(fix): Fix nullable fields incorrectly requiring non-null values in staged builders when use-nullable-annotation is enabled.

2.42.0

(feat): Add support for semantic distinction between nullable<T> and optional<T> types via use-nullable-annotation flag. When enabled, nullable<T> generates as raw type T with @Nullable annotation, while optional<T> remains as Optional<T>. This provides proper API semantics for fields that can be null vs those that may be absent from requests.

1customConfig:
2 use-nullable-annotation: true

2.41.3

(feat): Add convenient addHeader() method to SDK builders for adding custom headers without requiring OkHttpClient customization or inheritance.

2.41.2

(feat): Link reference.md in the README.md.

2.41.1

(fix): Fix integer overflow when processing OpenAPI specs with large integer values in examples. Values exceeding Java’s Integer range are automatically converted to long type to prevent generation failures.