3.5.3

(fix): Fixes an issue where the generated usage snippets in the README.md was not prioritizing user defined example values over autogenerated example values.

3.5.2

(fix): customReadmeSections from the generator invocation config are included in the README.md

3.5.1

(chore): Refactored wire test generator to modular architecture for improved maintainability. Enhanced JSON formatting in tests with proper multi-line string concatenation for better readability.

3.5.0

(feat): Enhanced wire testing framework with comprehensive SDK validation capabilities. Wire tests now include header validation from IR examples, multi-URL environment configuration support, complex type validation for unions/nullable/generic types, and full pagination testing with Iterable<T> support.

3.4.1

(fix): Fix compilation errors when undiscriminated unions contain multiple members that resolve to the same Java type (e.g., multiple strings, string vs string enum). The generator now correctly disambiguates duplicate method signatures by adding numeric suffixes (of2, of3, visit2, visit3) to factory and visitor methods when needed.

3.4.0

(feat): Add support for custom sections in the README.md via customSections config option.

3.3.0

(feat): Wire tests now automatically configure authentication based on the API’s auth scheme (Bearer, Basic, Header/Custom, OAuth, or Inferred) instead of using hardcoded tokens. Real authentication values are extracted from IR examples when available, making tests more accurate and maintainable.

3.2.2

(fix): Fix nullable request bodies with Optional fields to correctly generate .isPresent() checks on the Optional field itself, rather than on the entire request object.

3.2.1

(fix): Changed Optional.of() to Optional.ofNullable() to handle null values gracefully, allowing users to reset to default version.

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.