> For clean Markdown content of this page, append .md to this URL. For the complete documentation index, see https://buildwithfern.com/learn/llms.txt. ## 2.76.0 **`(fix):`** Add an opt-in `dedupe-union-base-properties` configuration flag (default off) that stops duplicating a discriminated union's base properties on its `samePropertiesAsObject` variant leaves. The decision is read from the IR fact `ObjectTypeDeclaration.deferredUnionBaseProperties` (computed once in the IR with structural type equality and an exclusive-variant guard), so the generator never re-derives it. When enabled, the union envelope owns the shared base properties, the variant leaf class and its example initializers omit them, and the union's JSON reader strips union-owned properties before deserializing a variant. Off by default, so existing generated output is unchanged; the default is expected to flip in a future major version with a migration. ## 2.75.0 **`(feat):`** Add support for auto-generating an `Idempotency-Key` header on generated SDK clients, driven by the IR. When `sdkConfig.idempotencyKeyGeneration` is present (configured once via the `auto-generate-idempotency-key` generator config key and resolved by the CLI), the SDK attaches an idempotency-key request header whose value is a freshly generated UUIDv4 (`System.Guid.NewGuid().ToString()`) at request time. The wire header name and the eligible HTTP methods come from the IR, so behavior is consistent across every generator. A caller-provided value always wins: a declared idempotency header or a header supplied through request-options takes precedence, and the generated UUID is only a fallback. The header is only injected on the eligible methods. Disabled by default, so existing generated output is unchanged. ## 2.74.0 **`(feat):`** Add support for server URL variables (region/edge routing). When an API's servers declare URL variables (e.g. `https://api.{region}.example.com`), each variable is now exposed as an optional string property on `ClientOptions` (idiomatic PascalCase, e.g. `Region`). Variable names that collide with an existing client option are prefixed with `ServerUrl` (e.g. an `environment` variable becomes `ServerUrlEnvironment`). When set at construction time, the values are interpolated into the environment base URL(s), falling back to each variable's default otherwise. Explicit `BaseUrl` or `Environment` options take precedence, and interpolation fails clearly when a required variable has neither a client option nor a default. ## 2.73.2 **`(fix):`** Enable automatic response decompression on the default HttpClient. The default client is now created with an HttpClientHandler configured with AutomaticDecompression (DecompressionMethods.All on .NET 5+, GZip | Deflate on older targets), so responses with a Content-Encoding of gzip or deflate are decompressed transparently — including when an Accept-Encoding request header is set explicitly by the API spec. User-supplied HttpClients provided via ClientOptions are not modified.