> This page is for SDK, version Legacy.
> For other versions, use one of these documentation indexes:
> - Current (default): https://buildwithfern.com/learn/sdks/current/llms.txt
> - Legacy: https://buildwithfern.com/learn/sdks/legacy/llms.txt

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

## 1.69.1

**`(fix):`** Enum-typed attributes and text on XML (TwiML) types are open on the wire: `FromXml` keeps a value the enum does
not declare (e.g. a voice added after the SDK was generated) instead of returning an error, and it round-trips
through `ToXml`. This matches how the same enums already behave in JSON.

## 1.69.0

**`(feat):`** Add opt-in `userAgentOnly` config. When enabled, generated clients send the `User-Agent`
header (including the structured form from `includePlatformHeaders`) but omit the
`X-Fern-Language`, `X-Fern-SDK-Name`, and `X-Fern-SDK-Version` headers. Disabled by default,
so existing generated output is unchanged. `omitFernHeaders` still takes precedence and drops
the `User-Agent` too.

## 1.68.0

**`(feat):`** The generated `WebhooksHelper` HMAC verifier now accepts a per-call algorithm override via a `VerifySignatureWithAlgorithm(...)` method (`VerifySignature` keeps the configured default),
one of `sha1`, `sha256`, `sha384` or `sha512`. When omitted, the algorithm configured in
`webhook-signature` is used, so existing callers are unchanged. This lets one endpoint verify both
legacy HMAC-SHA1 (auth-token) and HMAC-SHA256 (shared-key) signed webhooks.
The verifier also logs a warning distinguishing an early failure (missing signature header) from a
failed verification (signature mismatch); it still returns `false` and never throws.

## 1.67.0

**`(feat):`** XML (TwiML) types keep text segments, typed child elements and raw `core.XmlElement` children in a
single ordered `Content` slice, so `ToXml()` emits them in the order they were added
(`response.Say(a).AddChild(custom).Say(b)` yields `<Say>a</Say><Custom /><Say>b</Say>`) and
`FromXml()` preserves document order, including the position of unknown elements and repeated
wrapper elements. Adds `AddText(string)` to XML types and `core.XmlElement` for mixed content such
as `<Say>Hi <break strength="weak" /> world</Say>`. Typed child properties and `ExtraChildren`
remain available and are reconciled into `Content` on serialization.

## 1.66.0

**`(feat):`** Support SDK variables (`variables` in `api.yml` / `x-fern-sdk-variables` in OpenAPI). Path
parameters bound to a variable via `x-fern-sdk-variable` are removed from endpoint
signatures and request wrappers and are configured once on the client with the generated
`option.With<Variable>(...)` helper (also accepted per request). Variables that declare an
`env` fall back to that environment variable, and a string variable that is still unset
fails with a clear error before the request is sent.