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.

2.41.0

(feat): Add support for generating wire tests via enable-wire-tests flag. Wire tests verify HTTP protocol communication using MockWebServer and are generated for all endpoints in a service.

1customConfig:
2 enable-wire-tests: true

Generated tests include:

  • Working 404/500 error tests that compile immediately
  • Success test templates with TODO comments for customization
  • Proper handling of staged vs regular builders
  • Constants for all magic strings for better maintainability

Note: Complex request bodies and response validation require manual customization.

2.40.0

(feat): Add support for client-side default parameter values via use-default-request-parameter-values flag. When enabled, query and header parameters with defaults become Optional types and defaults are automatically applied when not provided. Example:

1customConfig:
2 use-default-request-parameter-values: true

Generated code:

1// Parameters with defaults become Optional
2private final Optional<Integer> perPage; // Has default: 50
3
4// Defaults are applied automatically
5QueryStringMapper.addQueryParameter(httpUrl, "per_page", request.getPerPage().orElse(50), false);

2.39.6

(feat): Add opt-in extensible builder pattern via enable-extensible-builders flag. When enabled, builders use the self-type pattern allowing users to extend generated builders while maintaining type safety. Example:

1class CustomBuilder extends BaseClientBuilder<CustomBuilder> {
2 @Override
3 protected CustomBuilder self() { return this; }
4
5 public CustomBuilder workspaceId(String id) {
6 // custom logic
7 return this;
8 }
9}

2.39.5

(fix): Fix undiscriminated union deserialization to catch all RuntimeException types instead of just IllegalArgumentException.