3.9.0
(feat): Propagate webhook responses (e.g., 204, 400, 500 status codes) from OpenAPI specs to the IR. Webhook endpoints can now define expected response status codes and descriptions, which are captured in the IR for use by generators and documentation.
3.8.0-rc0
(chore): Test automated CLI publishing.
3.8.0
(feat): Include -y flag for the upgrade for non-interactive environments.
3.7.0
(feat): Add API flag default-integer-format to configure which format is assumed for type: "integer"
properties in OpenAPI that do not specify a format.
Possible values are int32, int64, uint32, and uint64; defaults to int32.
3.6.0
(feat): Validate examples in fern check against OpenAPI schemas.
3.5.0
(feat): Add support for vendor-specific JSON content types in example validation. Content types like application/vnd.bc.v1+json are now accepted as valid JSON content types when validating examples against literal<"application/json"> types.
3.4.5
(fix): Fix parsing of <Code> components with for attribute for synced tabs. The for attribute is now properly preserved when converting <Code> components to markdown code blocks, allowing synced tabs to work correctly across multiple <CodeGroup> sections.
3.4.4
(fix): Fallback to variant type for display name if title and mapping are not present.
3.4.3
(fix): Disallow absolute URLs as redirects in frontmatter slug definitions. links should be used in the navigation instead.
3.4.2
(fix): Fix fern generate crash when inheriting from a schema with top-level nullable: true via allOf. The OpenAPI importer now correctly strips nullable wrappers from type references in extends lists.
3.4.1
(fix): Map error response headers from IR to FDR for docs display.
3.4.0
(chore): Upgrade @fern-api/fdr-sdk to version 0.142.1-b1f6b6363 which adds support for error response headers.
3.3.0
(feat): Extend substitute-env-vars to apply to API specs (OpenAPI and Fern definitions) when generating docs. Environment variables using ${VAR_NAME} syntax in API spec descriptions, examples, and other string fields are now substituted when substitute-env-vars: true is set in docs.yml.
3.2.0
(feat): Add recursive markdown snippet resolution for docs. Markdown snippets can now reference other markdown snippets, with automatic detection and warning for circular references to prevent infinite loops.
3.1.0
(feat): Preserve error response headers (e.g., Retry-After for 429 errors) from OpenAPI specs in the IR.
3.0.5
(fix): Fix AsyncAPI validation: exclude AsyncAPI files from OpenAPI-specific validation rules
3.0.4
(fix): Fix error response examples not displaying in docs when examples are defined at the property level in OpenAPI specs.
3.0.3
(fix): Add basic preprocessing of names in the IR parser; for starters, [] -> Array.
3.0.2
(fix): Fix OpenAPI parsing to properly handle allOf with $ref references inside oneOf/anyOf schemas. Previously, inline objects with allOf references but no direct properties were incorrectly converted to map<string, any>. Now they are properly preserved as named types with inheritance.
3.0.1
(fix): Fix substitute-env-vars not applying to arrays in docs configuration. The replaceEnvVariables function now recursively processes array elements, enabling environment variable substitution in arrays of strings, arrays of objects, and deeply nested array structures (such as navigation items, navbar links, footer links, redirects, etc.).
3.0.0
(break): Breaking Change: Enable smart-casing by default for all generators.
Smart-casing improves naming conventions in generated SDKs by:
- Capitalizing common initialisms like API, HTTP, ID, UUID, URL, HTML, JSON, XML, etc. in camelCase and PascalCase identifiers
- Better handling of number-letter combinations (e.g.,
v2stays asv2instead of becomingv_2,md5stays asmd5instead ofmd_5)
Migration Behavior: The CLI will automatically upgrade your generators.yml to explicitly set smart-casing: false for all existing generators that don’t have it configured. This preserves backwards compatibility for existing projects while enabling the improved naming for new projects.
Opting In: To enable smart-casing for existing generators, remove the smart-casing: false line that the migration adds, or explicitly set smart-casing: true.
2.18.1
(fix): Improve enum validation error messages to show which enum value has an invalid name. When the API source is OpenAPI, the error message now includes guidance about using the x-fern-enum extension to specify valid names.
2.18.0
(feat): Add --fernignore CLI option for remote generation. This allows users to provide a custom .fernignore file that will replace the existing one on the main branch during remote generation. The custom fernignore will be applied during generation and committed to the repository.
2.17.3
(fix): Gracefully handle null values in docs.yml structure.
2.17.2
(fix): Escape $ when inferring examples from literals that start with $.
This fixes validation issues like Example $ending is malformed. Examples should be formatted like $YourType.ExampleName.
2.17.1
(fix): Fix file scope type resolution for inline request properties
2.17.0
(feat): Add substitute-env-vars flag to docs.yml settings configuration. When set to true,
environment variables using ${VAR_NAME} syntax are substituted across all files in the docs bundle,
including markdown/MDX content. This is useful for injecting dynamic values like API keys or URLs.
Use \$\{VAR\} to escape and output literal ${VAR} without substitution.
2.16.0
(feat): Add support for aliases in generators.yml. You can now define aliases that map to multiple groups, allowing you to run multiple groups with a single command.
Then run fern generate all to generate all three SDKs at once.
2.15.2
(fix): Fix fern check incorrectly reporting SDK method conflicts for endpoints with the same x-fern-sdk-group-name and x-fern-sdk-method-name when they are in different namespaces. The validator now correctly allows duplicate SDK method names across different namespaces, matching the generator behavior where namespace is prepended to the SDK group name.
2.15.1
(fix): Improve CI environment detection to properly detect Azure Pipelines and other CI systems. This prevents unnecessary prompts when running fern generate --docs in CI environments.
2.15.0
(feat): Infer example for literal and enum types when generating IR from OpenAPI and Fern Definition.
2.14.1
(fix): Fix 2.0.0-rc0 CLI migration to properly migrate coerce-enums-to-literals setting for AsyncAPI specs. Previously, the migration only handled this setting for OpenAPI specs.
2.14.0
(feat): Log the pull request URL when an SDK is generated with self-hosted GitHub pull-request mode.
2.13.1
(fix): Respect generators.yml auth-schemes override.
2.13.0
(feat): Allow all API settings to be overridden at the generator level in generators.yml.
(feat): Add CLI migration to automatically convert deprecated generator-level API settings keys to their new equivalents: use-title to title-as-schema-name, and unions: v1 to prefer-undiscriminated-unions-with-literals: true.
2.12.0
(feat): Support per-generator auth-schemes override in generators.yml. Generators can now define their own auth-schemes at the generator level, which takes precedence over top-level definitions.
2.10.0
(feat): Support per-generator specs override in generators.yml. Generators can now redefine the api.specs configuration at the individual generator level, allowing different specs configurations for different generators.