🌿 ✨ [Scheduled] Upgrade Fern CLI #1
Open
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Upgrading from
0.26.3to0.44.11- Changelog0.44.11fix:Several improvements to the conjure importer.0.44.10fix:API update now supports consuming the API origin from spec V2 configurations.0.44.9feat:The fern definition now supports descriptions supplied on request and response bodies.You can enable this by simply supplying
docsin your fern definition, ordescriptionin your OpenAPI spec.
0.44.8fix:API Configuration V2 schema now takes inoriginas well, allowingfern api updateto function as expected in the new config.0.44.7internal:The Fern CLI commandfern generator listnow accepts filters for the output mode, for example, you may now specifyfern generator list --excluded-modes local-file-systemin order to filter any generators from the list that are outputting locally.
200 additional updates, see more
0.44.6fix:The Fern Definition respects endpoint level base-path overrides when validating examples.0.44.5feat:The Fern Definition now supports overridingbase-pathat the endpoint level.This is useful if you have subset of endpoints that do not live at the
configured base-path.
0.44.4fix:Fern's OpenAPI importer will now handle generating examples for declarederrors so that they show up in the generated documentation.
0.44.3feat:Fern's OpenAPI importer can now handlereadOnlyproperties in the top levelrequest schema. Note that Fern does not handle nested
readOnlypropertiesjust yet; please file a GitHub issue if this is important!
0.44.2fix:Fern's OpenAPI importer can now handle multiple error schemas for thesame status code.
0.44.1feat:The OpenAPI importer used to try and coerce all enums into a literals.In some cases this is not desirable, so we now expose an option called
coerce-enums-to-literalsin your generators.yml.0.44.0-rc0feat:The Fern CLI now supports parsing Conjure, Palantir'shome-grown API Definition format.
If you know a company that is using Conjure that wants API Docs + SDKs, send them our way!
0.43.8fix:Any markdown files that have custom components are also pushed up to the Fern Docsplatform.
0.43.7fix:Thevalid-markdownrule has been updated to try and parse the markdown file into avalid AST. If the file fails to parse,
fern checkwill log an error as wellas the path to the markdown.
0.43.6fix:The OpenAPI importer now appropriately brings in responses that are under thetext/event-streamContent-Type if your endpoint is annotated with
x-fern-streaming.If your endpoint is not annotated with
x-fern-streaming, then the response will be ignored.0.43.5fix:If you use thex-fern-streamingextension and want to provide different descriptionsfor the streaming endpoint, then you can now specify
streaming-description.0.43.4fix:The OpenAPI parser now respects the content type in your OpenAPI spec, instead of always sendingapplication/json. With this upgrade, your SDKs will also start to send the correct content type.0.43.3chore:The CLI now passes in the API definition ID once again, this is necessary so that generated snippet templatesmay reference schemas within the API. This was a regression that was recently introduced.
0.43.2fix:The CLI now prints which API cannot be registered iffern generate --docsfails.0.43.1feat:The CLI now supports running OpenAPI generator 0.1.0 with IR version 53.0.43.0feat:The CLI now recognizes the fern-php-sdk generator.0.42.15internal:The documentation resolver now approrpiately creates a unique identifier for changelog sections. Previously, if you had multiplechangelogs within the same section, despite their title and slug being different, they would be treated as the same section since the ID
only took into account the parents' slug, appended the word "changelog" and that was all.
As a result previously all changelogs within the same section would get highlighted when one was selected, now only the selected changelog
is highlighted.
0.42.14fix:The OpenAPI importer now correctly propagates the title field ononeofschemas.0.42.13fix:Example generation now intelligently truncates container examples, for example if the depth limit will be reached on a list of objects,the list will be returned as an empty list, as opposed the previous behavior where an unknown object would be created.
0.42.12fix:Previously, deploying docs from Windows machines led to bad asset paths.Now, the CLI respects Windows paths during run and web paths for retrieving
assets.
0.42.11fix:The API V2 configuration now supports disabling using titles as schemanames. You may want to disable this flag if your OpenAPI adds the same
title to multiple schemas.
0.42.10fix:Previously, the OpenAPI converter would bring overtitleon everysingle property. This field is extraneous, so now we ignore it.
0.42.9fix:Previously, the OpenAPI importer would ignore skip parsing arbitrarycontent types "/". Now it treats this content type as application/json.
0.42.8fix:The API V2 configuration (in beta) now supports global header overrides.This fixes a bug where those header overrides were getting dropped in
certain cases.
0.42.7feat:The API V2 configuration (in beta) now supports global headeroverrides. To specify global headers that are not in your
OpenAPI spec, simply add the following block in your
generators.yml:0.42.6fix:Removes extraneous conditional error within namespacing configuration0.42.5feat:Adds additional metadata retrievable byfern generator getso you can now get the langauage and the target repo.0.42.4fix:Namespaced APIs now:x-fern-sdk-group-nameannotation for endpoints0.42.3fix:The OpenAPI importer now supports handling encoding on multipart requests.Previously, the generators would not respect the
contentTypefield foreach form input. But, now they do.
fix:The OpenAPI importer now correctly parses descriptions of multipartform requests. Previously these descriptions would be ignored.
For example, previously the description
The file to uploadwould beignored in the example below.
0.42.2fix:Error bodies are now appropriately namespaced as well!0.42.1fix:Make sure to check for optionality when parsing stdout and stderr in CLI. Thisremoves the error:
Cannot read properties of undefined (reading 'includes').0.42.0fix:If you merge multiple OpenAPI specs with namespaces,fern checkwill no longercomplain about duplicate schema names across namespaces.
In the example below, both OpenAPI specs can have duplicative schema names and
that is okay.
0.42.0-rc0feat:The Fern Definition now supportsconten-typeon multipart request properties.For example, to specify an
application/octet-streamandapplication/jsoncontnet types, use the snippet below:
service: endpoints: upload: request: body: properties: file: type: file content-type: application/octet-stream metadata: type: unknown content-type: application/json0.41.16fix:Previously the OpenAPI converter would incorrectly markthe values of
additionalPropertiesas optional. Now, we haveintroduced a feature flag to turn this behavior off.
The feature flag can be configured in generators.yml:
0.41.15internal:Performance improvements for stringifiying large Intermediate Representations. Ifyou have a large OpenAPI spec or Fern Definition, this can potentially shave off
minutes from
fern generate.0.41.14-rc2internal:Remove bang operator and fix eslint warning incompatible-ir-versions.ts.0.41.14-rc1feat:Runningfern checkwill now check to confirm that the generator versions you are running are compatible with your Fern CLI version.Each version of SDK generators depends on a version of a libary that is exported by the Fern CLI, and as a result, each generator has a minimum
compatible version of the Fern CLI. As an example, if you were to run
fern checkwhile leveragingfernapi/fern-python-sdkversion2.0.0, on CLI version0.1.3, you'd receive the following error:The generator fernapi/fern-python-sdk requires CLI version 0.23.0-rc4 or later (current version: 0.1.3-rc0).Indicating that you must upgrade your CLI in order to leverage the current generator.
0.41.14-rc0fix:The Fern CLI now safely handles a npx file exists error by retrying the command on failure.This error typically happens when two or more instances of the Fern CLI are running
npxat the same time.
0.41.13fix:fern generate --localno longer crashes on large API Definitions because westream the JSON to file instead of calling
JSON.stringify. See PR 4640.0.41.12feat:Adds availability to inlined properties for HTTP Requests, Webhooks, and WebSockets for Fern Definition and OpenAPI.You can add availability like so:
Fern Definition:
OpenAPI:
0.41.11feat:Adds availability and display-names to discriminated union values. Now, in your docs, you can mark your union valueswith custom names and show their availability. You can do so by adding the following to your API definition:
0.41.10feat:Adds availability and display-names to discriminated union values. Now, in your docs, you can mark your union valueswith custom names and show their availability. You can do so by adding the following to your API definition:
0.41.9internal:Adds abundle-pathhidden parameter forfern docs devfor use withfern-platformtesting. You can pass thepath on the command line as an optional parameter.
0.41.8feat:The Fern generators.yml configuration now supports a new format for namespacing APIs for additional flexibility:Through namespacing your API, you can have multiple objects and endpoints with the same name across different namespaces. You can think of them
as the equivalent to Python modules or TypeScript packages.
0.41.7fix:Previously we weren't always awaiting PostHog API calls directly. Now the CLIawaits these calls so that we can ensure that events are sent.
0.41.6feat:The Fern Docs CLI now supports OAuth 2.0 Client Credentials injection in API playgrounds.To enable this feature, you can define the OAuth Authorization Scheme in your API configuration,
and enable the feature in your docs configuration.
API configuration:
More Information
Docs configuration:
More Information
0.41.5fix:Fix an issue with non-deterministic file ordering when OpenAPI is used as input.0.41.4feat:The Fern OpenAPI importer now handles importing an array for thetypekey.0.41.3feat:Allow referencing by method and path. For example, when configuring anoauth scheme you can now do:
0.41.2fix:Fixes an issue introduced in0.41.1that ignored server urls for docs generation.feat:Adds aauth-schemesandauthblock where you can override auth for an existing spec.See below:
0.41.1feat:Adds a V2 configuration for theapiblock that is more flexible and allowsOpenAPI users to consume Fern Definition features.
For example, now you can override environments directly in the api configuration:
If you want to define, multi-url environments, those can be done by configuring the following generators.yml:
Note that you will need to use the
x-fern-server-nameannotation on each endpoint to assign it to a relevant server. For example,0.41.0feat:Adds generic object declarations to the fern definition. Now we can define generics anduse them in alias declarations to minimize code duplication:
More information can be found here: https://buildwithfern.com/learn/api-definition/fern/types#generics.
0.41.0-rc1fix:Fix an issue where some postman environment variables (e.g. API key) were not substitutedwhen running fern generate.
0.41.0-rc0break:Every fern folder that is using OpenAPI must configure an explicit location to theOpenAPI spec. The location can be configured in your
generators.yml:If you run fern upgrade, the CLI will automatically run a migration for you to
ensure that you are compliant!
0.40.4fix:fern checkallows the service base-path to be a slash. For example, the followingwould be valid:
0.40.3fix:Nowfern generator upgraderespects the--groupflag and only upgrades generators within a particular group.0.40.2internal:Release IR v53.9.0 which includes a publishing configuration.0.40.1feat:Enable specifying whether redirect in docs.yml is permanent or temporary.0.40.0feat:Update thefern generator upgradecommand to leverage the Generator registry API as opposed to Docker and dockerode.0.39.19fix:The OpenAPI importer now appropriately generates examples for circularoneOfschemas.0.39.18fix:Produce IR v53.8.0 with raw datetime examples.0.39.17fix:object declarations with extends and no properties now has examples propagating in the Docs and SDKs0.39.16chore:Support running 0.2.x versions of the Postman Generator with IR V53 or above.0.39.15internal:Introducegenerator listandorganizationcommands to faciliate actions taken byfern-bot0.39.14fix:Format validation is enforced ondatefields that are specified in examples specified in an api defintion.0.39.13fix:Generated examples in the Intermediate Representation not respect root level path parameter examples.0.39.12fix:The mock folder now includes source files, and the CLI no longer hard fails if it cannot resolve source files that are of OpenAPI type.0.39.11fix:The Fern CLI now handles parsingx-fern-parameter-nameon path parameters in an OpenAPI spec.0.39.10chore:Release 0.39.100.39.9chore:Release 0.39.90.39.7chore:## What's ChangedFull Changelog: fern-api/fern@0.39.6...0.39.7
0.39.6chore:## What's ChangedFull Changelog: fern-api/fern@0.39.5...0.39.6
0.39.5chore:## What's ChangedFull Changelog: fern-api/fern@0.39.4...0.39.5
0.39.4chore:## What's ChangedFull Changelog: fern-api/fern@0.39.3...0.39.4
0.39.3chore:## What's ChangedFull Changelog: fern-api/fern@0.39.2...0.39.3
0.39.2chore:## What's Changed.dictspeed by limiting dict calls by @armandobelardo in improvement: improve.dictspeed by limiting dict calls fern-api/fern#4302New Contributors
Full Changelog: fern-api/fern@0.39.1...0.39.2
0.39.1chore:## What's ChangedFull Changelog: fern-api/fern@0.38.1...0.39.1
0.38.1chore:## What's Changedapi.ymland environment audiences by @dsinghvi in (feat, docs): add docs onapi.ymland environment audiences fern-api/fern#4292Full Changelog: fern-api/fern@0.38.0...0.38.1
0.38.0chore:## What's ChangedFull Changelog: fern-api/fern@0.38.0-rc1...0.38.0
0.38.0-rc1chore:## What's ChangedhasNextPageproperty for offset pagination by @dsinghvi in (feat, typescript): supporthasNextPageproperty for offset pagination fern-api/fern#4288Full Changelog: fern-api/fern@0.38.0-rc0...0.38.0-rc1
0.38.0-rc0chore:## What's Changedhas-next-pageproperty to IR by @dsinghvi in (feat, cli): addhas-next-pageproperty to IR fern-api/fern#4241fern checkby @dsinghvi in (feat): refactor how pagination properties are checked infern checkfern-api/fern#4250internal+ client classespartialby @dcb6 in c#, improvements: small improvements including marking filesinternal+ client classespartialfern-api/fern#4248FluentAssertionsin unit tests by @dcb6 in c#, improvement: UseFluentAssertionsin unit tests fern-api/fern#4254pnpmmigration by @dsinghvi in (internal):pnpmmigration fern-api/fern#4261shapetoExampleQueryParameterby @dcb6 in ir: addshapetoExampleQueryParameterfern-api/fern#4222Full Changelog: fern-api/fern@0.37.16...0.38.0-rc0
0.37.16chore:## What's ChangedNew Contributors
Full Changelog: fern-api/fern@0.37.15...0.37.16
0.37.15chore:## What's Changed.protoinputs by @amckinney in (feature): Add support for.protoinputs fern-api/fern#4223Full Changelog: fern-api/fern@0.37.14...0.37.15
0.37.14chore:## What's Changed<package>/<version>by @dsinghvi in (feat, typescript): send user agent header<package>/<version>fern-api/fern#4234Full Changelog: fern-api/fern@0.37.13...0.37.14
0.37.14-rc0chore:## What's ChangedFull Changelog: fern-api/fern@0.37.13...0.37.14-rc0
0.37.13chore:## What's ChangedFull Changelog: fern-api/fern@0.37.12...0.37.13
0.37.12chore:## What's ChangedFull Changelog: fern-api/fern@0.37.11...0.37.12
0.37.11chore:## What's ChangedNew Contributors
Full Changelog: fern-api/fern@0.37.10...0.37.11
0.37.10chore:## What's ChangedFull Changelog: fern-api/fern@0.37.9...0.37.10
0.37.9chore:## What's ChangedFull Changelog: fern-api/fern@0.37.8...0.37.9
0.37.8chore:## What's ChangedFull Changelog: fern-api/fern@0.37.7...0.37.8
0.37.7chore:## What's Changedurlfield of auto-generatedEndpointExampleCalls by @dcb6 in fix, ir-generation: put fully substituted path inurlfield of auto-generatedEndpointExampleCalls fern-api/fern#4211Full Changelog: fern-api/fern@0.37.6...0.37.7
0.37.6chore:## What's ChangednoScriptsinto a PersistedProject and introduce a test by @dsinghvi in (fix, typescript): wirenoScriptsinto a PersistedProject and introduce a test fern-api/fern#4185Full Changelog: fern-api/fern@0.37.5...0.37.6
0.37.5chore:## What's ChangedFull Changelog: fern-api/fern@0.37.4...0.37.5
0.37.4chore:## What's ChangedFull Changelog: fern-api/fern@0.37.3...0.37.4
0.37.3chore:## What's ChangedFull Changelog: fern-api/fern@0.37.2...0.37.3
0.37.2chore:## What's ChangedFull Changelog: fern-api/fern@0.37.1...0.37.2
0.37.1chore:## What's ChangedFull Changelog: fern-api/fern@0.37.0...0.37.1
0.37.0chore:## What's Changedsetinstead ofinitfield accessors in types by @dcb6 in c#, improvement:setinstead ofinitfield accessors in types fern-api/fern#4151map<string, unknown>values are nullable by @amckinney in (fix, csharp): map<string, unknown> values are nullable fern-api/fern#4153Full Changelog: fern-api/fern@0.36.0...0.37.0
0.36.0chore:## What's ChangedRawClientconstructor parameters by @dcb6 in c#, improvement: Add header suppliers toRawClientconstructor parameters fern-api/fern#4119Full Changelog: fern-api/fern@0.35.0...0.36.0
0.36.0-rc1chore:## What's ChangedFull Changelog: fern-api/fern@0.36.0-rc0...0.36.0-rc1
0.36.0-rc0chore:## What's ChangedRawClientconstructor parameters by @dcb6 in c#, improvement: Add header suppliers toRawClientconstructor parameters fern-api/fern#4119Full Changelog: fern-api/fern@0.35.0...0.36.0-rc0
0.35.0chore:## What's Changeddefault-urland url override on imports by @dsinghvi in (feat): supportdefault-urland url override on imports fern-api/fern#4116Full Changelog: fern-api/fern@0.34.0...0.35.0
0.35.0-rc0chore:## What's Changeddefault-urland url override on imports by @dsinghvi in (feat): supportdefault-urland url override on imports fern-api/fern#4116Full Changelog: fern-api/fern@0.34.0...0.35.0-rc0
0.34.0chore:## What's Changedexpected_typesto tuple to satisfy mypy by @armandobelardo in fix: update typing ofexpected_typesto tuple to satisfy mypy fern-api/fern#4100zurgunit tests to the generated SDK by @williamluer in (feat, typescript): copy overzurgunit tests to the generated SDK fern-api/fern#4045authandfetcherutilities by @dsinghvi in (feat, typescript): generate tests forauthandfetcherutilities fern-api/fern#4115Full Changelog: fern-api/fern@0.33.5...0.34.0
0.33.6-rc0chore:## What's Changedexpected_typesto tuple to satisfy mypy by @armandobelardo in fix: update typing ofexpected_typesto tuple to satisfy mypy fern-api/fern#4100Full Changelog: fern-api/fern@0.33.5...0.33.6-rc0
0.33.5chore:## What's ChangedFull Changelog: fern-api/fern@0.33.4...0.33.5
0.33.4chore:## What's ChangedFull Changelog: fern-api/fern@0.33.3...0.33.4
0.33.3chore:## What's Changedjest-specific-snapshotby @dsinghvi in (fix): removejest-specific-snapshotfern-api/fern#4088Full Changelog: fern-api/fern@0.33.2...0.33.3
0.33.2chore:## What's Changedfs.CreateReadStreamon Node 19+ form data uploads by @dsinghvi in (feat): supportfs.CreateReadStreamon Node 19+ form data uploads fern-api/fern#4073Full Changelog: fern-api/fern@0.33.1...0.33.2
0.33.2-rc0chore:## What's Changedfs.CreateReadStreamon Node 19+ form data uploads by @dsinghvi in (feat): supportfs.CreateReadStreamon Node 19+ form data uploads fern-api/fern#4073Full Changelog: fern-api/fern@0.33.1...0.33.2-rc0
0.33.1chore:## What's ChangedFull Changelog: fern-api/fern@0.33.0...0.33.1
0.33.0chore:## What's Changedirnow adds aTypeReferencefor container types that makes it easier to generate snippets + autogenerated type examples by @dsinghvi in (feat):irnow adds aTypeReferencefor container types that makes it easier to generate snippets + autogenerated type examples fern-api/fern#4038ir-sdk-latestgenerators.ymlby @dcb6 in (fix): fixir-sdk-latestgenerators.ymlfern-api/fern#4074Full Changelog: fern-api/fern@0.32.0...0.33.0
0.32.0chore:## What's ChangedFull Changelog: fern-api/fern@0.31.24...0.32.0
0.31.25-rc1chore:## What's ChangedFull Changelog: fern-api/fern@0.31.25-rc0...0.31.25-rc1
0.31.25-rc0chore:## What's ChangedFull Changelog: fern-api/fern@0.31.24...0.31.25-rc0
0.31.24chore:Release 0.31.240.31.23chore:## What's ChangedFetcherand add unit tests by @williamluer in (feat, typescript): refactorFetcherand add unit tests fern-api/fern#3977New Contributors
Full Changelog: fern-api/fern@0.31.22...0.31.23
0.31.23-rc0chore:## What's Changedirnow adds aTypeReferencefor container types that makes it easier to generate snippets + autogenerated type examples fern-api/fern#4038Full Changelog: fern-api/fern@0.31.22...0.31.23-rc0
0.31.22chore:## What's Changedzurgcompletely synchronous by @dsinghvi in (feat, typescript): makezurgcompletely synchronous fern-api/fern#4024setname for python methods by @armandobelardo in fix: unreservesetname for python methods fern-api/fern#4031Full Changelog: fern-api/fern@0.31.21...0.31.22