Skip to navigation

2.90.1

(fix): XML (TwiML) record types implement value equality: Equals/GetHashCode (and ==) compare the rendered XML, so VoiceResponse.FromXml(xml).Equals(VoiceResponse.FromXml(parsed.ToXml())) and new Say { Message = "x" }.Equals(new Say { Message = "x" }) are true. Previously the record default compared the collection members by reference and was always false.

2.90.0

(feat): Add opt-in user-agent-only config. When enabled, generated clients send the User-Agent header (including the structured form from include-platform-headers) 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. omit-fern-headers still takes precedence and drops the User-Agent too.

(fix): Fix the generated XmlElementTests test project failing to compile because its FakeNode test double did not implement IXmlNode.ToXml(bool).

2.89.0

(feat): The generated WebhooksHelper HMAC verifier now accepts a per-call algorithm override via an optional algorithm parameter on verifySignature, 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.

2.88.0

(feat): XML (TwiML) types keep text segments, typed child elements and raw XmlElement children in a single ordered Content list, 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 XmlElement for mixed content such as <Say>Hi <break strength="weak" /> world</Say>. Typed child properties and AdditionalChildren remain available; AdditionalChildren is now derived from Content.

2.87.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 types and are configured once on the client through the generated ClientOptions.<Variable> property. String variables that declare an env fall back to that environment variable, and a variable that is still unset fails with a clear ArgumentException before the request is sent.