> For clean Markdown content of this page, append .md to this URL. For the complete documentation index, see https://buildwithfern.com/learn/llms.txt.

## 4.13.2

**`(fix):`** Fix the OAuth `OAuthTokenSupplier` generator to derive each get-token request
property's Java type from its IR `TypeReference` (via `PoetTypeNameMapper`)
instead of hardcoding `String`. Previously a non-string token-request property
(e.g. `permissions: Optional<List<String>>`) generated a `String` field and a
`.permissions(String)` builder call that did not match the request builder's
typed setter, breaking compilation of the entire SDK. The generated custom
property fields, constructor parameters, client-builder setters, and request
builder calls now use the property's real type.

To preserve backward compatibility, any get-token custom property whose real
type is `Optional<X>` also gets an unwrapped setter overload accepting `X`
directly (mirroring the request model's convenience setters), so existing
callers such as `.scope("value")` continue to compile unchanged.

## 4.13.1

**`(fix):`** Make the generated `User-Agent` comply with the RFC 7230 token grammar. The
Maven coordinate in the product token now uses a dot instead of a colon, since
a colon is not a valid token character (e.g. `com.fern:imdb/0.0.1` becomes
`com.fern.imdb/0.0.1`); this applies to both the plain header value and the
structured value emitted when `includePlatformHeaders` is enabled. For the
structured value, the architecture label is also normalized so the 64-bit x86
aliases (`x64`, `amd64`, `x86_64`) all report as the canonical `x86_64`.

## 4.13.0

**`(feat):`** Add opt-in support for a structured `User-Agent` header on generated SDK clients,
of the form `{sdkName}/{sdkVersion} ({os}; {arch}) {runtime}/{runtimeVersion}`
(e.g. `com.fern:sdk/0.0.1 (linux; amd64) Java/17.0.13`). The os
(`System.getProperty("os.name")`, lowercased), arch (`System.getProperty("os.arch")`),
and runtime version (`System.getProperty("java.version")`) are resolved at runtime;
any segment that cannot be determined is omitted rather than emitted as `null`.
This is gated behind a new `includePlatformHeaders` config option and is disabled by
default, so existing generated output is unchanged. When enabled, the header is still
subject to `omit-fern-headers`.

## 4.12.1

**`(fix):`** Decompress gzip and deflate encoded response bodies via a new
`ResponseDecompressionInterceptor` added to the generated `OkHttpClient`.
OkHttp only performs transparent gzip decompression when it adds the
`Accept-Encoding` header itself, so responses to requests with a
spec-defined `Accept-Encoding: gzip` header were previously returned as
raw gzip bytes.