3.95.0

(feat): Add support for multiple override files in spec configuration. The overrides field now accepts either a single path or an array of paths for OpenAPI, AsyncAPI, OpenRPC, and Protobuf specs. When multiple paths are provided, overrides are applied sequentially in order.

3.94.0

(feat): Add package registry version lookups for all supported SDK languages during AUTO version resolution with private registry authentication support. Previously only npm (TypeScript) and PyPI (Python) were supported. Now also queries Maven Central (Java), NuGet Gallery (C#), RubyGems.org (Ruby), Go Module Proxy (Go), and Crates.io (Rust). PHP and Swift continue to use GitHub tags as fallback. Additionally supports authenticated access to private package registries and GitHub repositories via environment variables: GITHUB_TOKEN for private repos and NPM_TOKEN for private npm packages.

3.93.4

(fix): Fix getExplodeForQueryParameter to treat deepObject style as having a default explode of true per the OpenAPI spec. Previously, deepObject was grouped with spaceDelimited and pipeDelimited (default explode: false), causing explode: true to be incorrectly preserved as non-default for deepObject parameters. The OpenAPI spec only defines deepObject with explode: true, so it should be treated as the default.

3.93.3

(fix): Move Fern definition validation into the per-generator generation loop so that it validates the exact definition used for generation (with generator-specific settings like detectGlobalHeaders and auth overrides applied).

(fix): Fix path-level servers with x-fern-server-name being ignored in OpenAPI 3.0 specs.

3.93.2

(chore): Update AI example enhancement to use fdr-lambda endpoint.

3.93.1

(fix): Revert cff292e8937b3c3ac66b1b6ebc6071b81860bbfd to resolve errors introduced

3.93.0

(feat): Add a —json flag to fern check that outputs structured validation results as JSON to stdout, with all other output redirected to stderr. This enables programmatic consumption of check results by CI pipelines, editor integrations, and other tooling.

(fix): Fix API naming in multi-API workspaces: both the JSON output and fern check now use the workspace directory name (e.g. atoms, unified, waves).

3.92.1

(fix): prefer default version slug when multiple versions share the same MDX file.

3.92.0

(feat): Add support for multiple override files in OpenAPI spec configuration. The overrides field now accepts either a single path or an array of paths. When multiple paths are provided, overrides are applied sequentially in order, allowing for layered customization of OpenAPI specs.

3.91.6

(fix): Treat all text/* content types (e.g. text/csv, text/xml, text/html) as text responses in the v1 OpenAPI parser, not just text/plain. Previously, endpoints returning content types like text/csv had their response silently dropped, causing generated SDK methods to return None.

3.91.4

(fix): Fix GET webhooks without a request body being skipped during OpenAPI parsing. Previously, webhooks using the GET method with query parameters instead of a request body were silently dropped with “Missing a request body”. The parser now synthesizes a payload from the query parameters for GET webhooks that lack a request body.

3.91.3

(chore): Remove noisy debug logs from IR version compatibility checking.

3.91.2

(fix): Fix x-fern-server-name extension being ignored on AsyncAPI server definitions. When an AsyncAPI spec uses x-fern-server-name to override a server’s name (e.g. renaming uat to market_data to avoid naming conflicts with another API), both the environment ID and channel base URL now use the overridden name. This fixes SDK generation errors like “Expected environment UAT to contain url for uat” when the generators.yml environment URLs reference the overridden server name.

3.91.1

(fix): Fix coerce-optional-schemas-to-nullable incorrectly making header parameters nullable. HTTP headers don’t have a “null” concept — they’re either present with a value or absent. The coerceOptionalSchemasToNullable option now only affects request/response body properties, not header parameters. Explicitly nullable header schemas (via nullable: true in the OpenAPI spec) are still respected.