July 14, 2026
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.