From e1588db84a592b152d2ad0f01068daa0098c8328 Mon Sep 17 00:00:00 2001 From: Devin Logan Date: Thu, 3 Jul 2025 12:59:16 -0400 Subject: [PATCH 01/14] fill out config file for python sdk --- .../sdks/overview/python/configuration.mdx | 149 +++++++++++++++++- 1 file changed, 147 insertions(+), 2 deletions(-) diff --git a/fern/products/sdks/overview/python/configuration.mdx b/fern/products/sdks/overview/python/configuration.mdx index 3d9d8726a..01ae41f35 100644 --- a/fern/products/sdks/overview/python/configuration.mdx +++ b/fern/products/sdks/overview/python/configuration.mdx @@ -3,6 +3,151 @@ title: Python Configuration description: Configuration options for the Fern Python SDK. --- -# Python Configuration +You can customize the behavior of the Python SDK generator in `generators.yml`: -Discover how to configure the Fern Python SDK for your project. \ No newline at end of file +```yml {7-8} +default-group: local +groups: + local: + generators: + - name: fernapi/fern-python + version: 0.6.6 + config: + include_validators: true +``` + +## SDK Configuration Options + + + If you want to add custom dependencies to your generated SDK, you can specify them using this configuration. For example, to add a dependency on boto3, your config would look like: + ``` + config: + extra_dependencies: + boto3: 1.28.15 + ``` + + + + + + + + + + + + + + + + + + + + + + + + + By default, the generator generates a client that times out after 60 seconds. You can customize this value by providing a different number or setting to `infinity` to get rid of timeouts. + + + + + + + + + + When enabled, the generator will output a Pydantic `__root__` class that will contain utilities to visit the union. For example, for the following union type: + + ``` + types: + Shape: + union: + circle: Circle + triangle: Triangle + ``` + you will get a generated `Shape` class that has a factory and visitor: + ```python + # Use a factory to instantiate the union + Shape.factory.circle(Circle(...)) + + # Visit every case in the union + shape = get_shape() + shape.visit( + circle: lambda circle: do_something_with_circle(circle), + triangle: lambda triangle: do_something_with_triangle(triangle), + ) + ``` + + When enabled, the python generator will not run Black formatting in the generated code. Black is slow so this can potentially speed up code generation quite a bit. + + + + By default, the generator generates pydantic models that are v1 and v2 compatible. However you can override them to: + - `v1`: strictly use Pydantic v1 + - `v2`: strictly use Pydantic v2 + - `both`: maintain compatibility with both versions + - `v1_on_v2`: use Pydantic v1 compatibility layer on v2 + + Example: + ```yaml + config: + pydantic_config: + version: v1 # or v2 or "both" + ``` + + + + + + + + + + Feature flag that improves imports in the Python SDK by removing nested `resources` directory + + + + Whether to follow redirects by default in HTTP requests. + + + + Feature flag that removes the usage of request objects, and instead uses parameters in function signatures where possible. + + + + If true, treats path parameters as named parameters in endpoint functions. + + + + Feature flag that enables generation of Python websocket clients. + + + + This changes your declared python dependency, which is not meant to be done often if at all. This is a last resort if any dependencies force you to change your version requirements. + + + + Whether or not to generate `TypedDicts` instead of Pydantic Models for request objects. + + + + Whether or not to generate TypedDicts instead of Pydantic Models for file upload request objects. Note that this flag was only introduced due to an oversight in the `use_typeddict_requests` flag implementation; it should be removed in the future. + + + + Whether to generate Pydantic models that implement inheritance when a model utilizes the Fern `extends` keyword. + + + + + + + The chunk size to use (if any) when processing a response bytes stream within `iter_bytes` or `aiter_bytes` results in: `for chunk in response.iter_bytes(chunk_size=):` + + + + Whether or not to include legacy wire tests in the generated SDK + \ No newline at end of file From 245e249f92443949d0cac7ed62b359759d4a05cb Mon Sep 17 00:00:00 2001 From: Devin Logan Date: Thu, 3 Jul 2025 13:52:52 -0400 Subject: [PATCH 02/14] add client example --- fern/products/sdks/overview/python/configuration.mdx | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/fern/products/sdks/overview/python/configuration.mdx b/fern/products/sdks/overview/python/configuration.mdx index 01ae41f35..a51dcabee 100644 --- a/fern/products/sdks/overview/python/configuration.mdx +++ b/fern/products/sdks/overview/python/configuration.mdx @@ -5,15 +5,19 @@ description: Configuration options for the Fern Python SDK. You can customize the behavior of the Python SDK generator in `generators.yml`: -```yml {7-8} +```yaml {7-8} default-group: local groups: local: generators: - name: fernapi/fern-python - version: 0.6.6 - config: - include_validators: true + version: 0.7.1 + config: + client: null + filename: my_custom_client.py + class_name: MyClient + exported_filename: my_client.py + exported_class_name: APIClient ``` ## SDK Configuration Options From 0132b36dcde01c5db0c23c669c5ef750baa25e04 Mon Sep 17 00:00:00 2001 From: Devin Logan Date: Thu, 3 Jul 2025 15:35:47 -0400 Subject: [PATCH 03/14] fix code example --- fern/products/sdks/overview/python/configuration.mdx | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/fern/products/sdks/overview/python/configuration.mdx b/fern/products/sdks/overview/python/configuration.mdx index a51dcabee..1d0262e00 100644 --- a/fern/products/sdks/overview/python/configuration.mdx +++ b/fern/products/sdks/overview/python/configuration.mdx @@ -13,11 +13,8 @@ groups: - name: fernapi/fern-python version: 0.7.1 config: - client: null - filename: my_custom_client.py - class_name: MyClient - exported_filename: my_client.py - exported_class_name: APIClient + client: + class_name: `YourClient` ``` ## SDK Configuration Options From fb629f468d37f35c9101acf757e12bf5b1bdab23 Mon Sep 17 00:00:00 2001 From: Devin Logan Date: Thu, 3 Jul 2025 15:51:51 -0400 Subject: [PATCH 04/14] code example nit --- fern/products/sdks/overview/python/configuration.mdx | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/fern/products/sdks/overview/python/configuration.mdx b/fern/products/sdks/overview/python/configuration.mdx index 1d0262e00..ae44e9925 100644 --- a/fern/products/sdks/overview/python/configuration.mdx +++ b/fern/products/sdks/overview/python/configuration.mdx @@ -5,7 +5,7 @@ description: Configuration options for the Fern Python SDK. You can customize the behavior of the Python SDK generator in `generators.yml`: -```yaml {7-8} +```yaml {7-9} default-group: local groups: local: @@ -14,7 +14,7 @@ groups: version: 0.7.1 config: client: - class_name: `YourClient` + class_name: "YourClient" ``` ## SDK Configuration Options From 20fb6db9ab40c3c9b4c6b78cd400049478b5745c Mon Sep 17 00:00:00 2001 From: Devin Logan Date: Fri, 4 Jul 2025 11:04:43 -0400 Subject: [PATCH 05/14] Add content to Go config page --- .../sdks/overview/go/configuration.mdx | 172 +++++++++++++++++- 1 file changed, 170 insertions(+), 2 deletions(-) diff --git a/fern/products/sdks/overview/go/configuration.mdx b/fern/products/sdks/overview/go/configuration.mdx index 2f92fa332..44f90bbe3 100644 --- a/fern/products/sdks/overview/go/configuration.mdx +++ b/fern/products/sdks/overview/go/configuration.mdx @@ -3,6 +3,174 @@ title: Go Configuration description: Configuration options for the Fern Go SDK. --- -# Go Configuration +You can customize the behavior of the Go SDK generator in `generators.yml`: -Discover how to configure the Fern Go SDK for your project. \ No newline at end of file +```yaml {7-8} +default-group: local +groups: + local: + generators: + - name: fernapi/fern-go-sdk + version: + config: + packageName: acme + output: + location: local-file-system + path: ../generated/go +``` + +## SDK Configuration Options + + +Use this option if you plan to distribute the generated Go SDK as a separate, published Go module. + +If you only plan to use the generated SDK within your own Go module, use the `importPath` configuration option instead. + +You can generate the Go SDK code into a separate module (defined with its own `go.mod`) +with the following `generators.yml` configuration: + +```yaml {7-9} +default-group: local +groups: + local: + generators: + - name: fernapi/fern-go-sdk + version: 0.13.0 + config: + module: + path: github.com// + output: + location: local-file-system + path: ../generated/go +``` + +This configuration will generate a `go.mod` alongside the rest of the Go SDK code at the target output +location. With this, `import` statements within the generated Go SDK are all resolved from the configured +module path. + +By default, the generated `go.mod` will be set to `1.13`. You can override this behavior by specifying +the `version` key: + +```yaml {10} +default-group: local +groups: + local: + generators: + - name: fernapi/fern-go-sdk + version: 0.13.0 + config: + module: + path: github.com// + version: "1.19" + output: + location: local-file-system + path: ../generated/go +``` + +If you want to depend on the generated Go SDK locally (without distributing it as a separate Go module), +and you use the `module` configuration option, you will need to modify your project's top-level `go.mod` to include a [`replace`](https://go.dev/doc/modules/gomod-ref#replace) statement: + +```go +module github.com/your/module + +require "github.com/your/sdk" v0.0.0 +replace "github.com/your/sdk" v0.0.0 => "path/to/generated/sdk" +``` + + + + + + + +Use this option if you plan to depend on the generated Go SDK from within your project, and **not** depend on it as a separate, published Go module. + +If you plan to to distribute the generated Go SDK as a separate, published Go module, use the `module` configuration option instead. + +You can generate the Go SDK code into a `gen/go/api` package with the following `generators.yml` +configuration: + +```yaml {7-8} +default-group: local +groups: + local: + generators: + - name: fernapi/fern-go-sdk + version: 0.13.0 + config: + importPath: github.com///generated/go + output: + location: local-file-system + path: ../generated/go +``` +You must update the `` and `` placeholders +with the relevant elements in your `go.mod` path. In this case, the generated Go SDK uses the same `go.mod` path used by the rest of your Go module. + + + + + + + + + + + + + +By default, it's impossible to send an explicit JSON `null` for optional parameters. `enableExplicitNull: true` opts in to generating a generic `Optional[T]` type that can be used to distinguish between a `nil` value (nothing is sent), a non-`nil` value (the value is sent), and an explicit null (a `null` value is sent). This is particularly useful for `PATCH` endpoints. + +The `Optional` and `Null` constructor functions will be included at the root of your module and can be +used like so: + +```go +client := acmeclient.NewClient() +updatedFoo, err := client.Foo.Update( + context.TODO(), + &acme.UpdateFooRequest{ + Name: acme.Optional("example"), + Tag: acme.Null[string](), + }, + // Serialized as {"name":"example","tag":null} +) +``` + +An example configuration: + +```yaml {7-8} +default-group: local +groups: + local: + generators: + - name: fernapi/fern-go-sdk + version: 0.13.0 + config: + enableExplicitNull: true + output: + location: local-file-system + path: ../generated/go +``` + +This feature requires generics, so the generated `go.mod` will be upgraded to `1.18` (as opposed to `1.13`). + + + + + + + + + + + + + + + + + + + + + + From fdb4fe692623b79438da9aa8a0a81c34526d42b6 Mon Sep 17 00:00:00 2001 From: Devin Logan Date: Mon, 7 Jul 2025 11:26:48 -0400 Subject: [PATCH 06/14] Break typescript quickstart content into reusable snippets --- .../sdks/overview/python/quickstart.mdx | 4 +- .../sdks/overview/typescript/quickstart.mdx | 147 ++---------------- fern/products/sdks/snippets/demo-warning.mdx | 5 + fern/products/sdks/snippets/generate-sdk.mdx | 8 + fern/products/sdks/snippets/install-cli.mdx | 7 + .../sdks/snippets/option-1-openapi.mdx | 36 +++++ .../sdks/snippets/option-2-asyncapi.mdx | 36 +++++ .../sdks/snippets/option-3-fern-def.mdx | 26 ++++ .../sdks/snippets/pass-fern-check.mdx | 9 ++ 9 files changed, 139 insertions(+), 139 deletions(-) create mode 100644 fern/products/sdks/snippets/demo-warning.mdx create mode 100644 fern/products/sdks/snippets/generate-sdk.mdx create mode 100644 fern/products/sdks/snippets/install-cli.mdx create mode 100644 fern/products/sdks/snippets/option-1-openapi.mdx create mode 100644 fern/products/sdks/snippets/option-2-asyncapi.mdx create mode 100644 fern/products/sdks/snippets/option-3-fern-def.mdx create mode 100644 fern/products/sdks/snippets/pass-fern-check.mdx diff --git a/fern/products/sdks/overview/python/quickstart.mdx b/fern/products/sdks/overview/python/quickstart.mdx index 9aa5e689f..21ac7b283 100644 --- a/fern/products/sdks/overview/python/quickstart.mdx +++ b/fern/products/sdks/overview/python/quickstart.mdx @@ -3,6 +3,4 @@ title: Python Quickstart description: Get started quickly with the Fern Python SDK. --- -# Python Quickstart - -Follow these steps to quickly get up and running with the Fern Python SDK. \ No newline at end of file +Generate a Python SDK by following the instructions on this page. \ No newline at end of file diff --git a/fern/products/sdks/overview/typescript/quickstart.mdx b/fern/products/sdks/overview/typescript/quickstart.mdx index 9fdf98762..1d06fb1c6 100644 --- a/fern/products/sdks/overview/typescript/quickstart.mdx +++ b/fern/products/sdks/overview/typescript/quickstart.mdx @@ -3,134 +3,30 @@ title: TypeScript Quickstart description: Get started quickly with the Fern Typescript SDK. --- - - Generating SDKs often requires understanding the state of your OpenAPI Specification as well as - your specific requirements. For the ideal experience, we **strongly recommend** scheduling a - [demo](https://buildwithfern.com/contact) or [emailing us](mailto:support@buildwithfern.com) to get started. - + Generate a TypeScript SDK by following the instructions on this page. - ### Install the Fern CLI - - Run the following command to install the CLI tool or update it to the latest version: - - ```bash - npm install -g fern-api - ``` + ### Initialize the Fern Folder You can use either the OpenAPI definition, AsyncAPI definition, or Fern Definition to generate your SDK. - - Initialize the Fern folder using your OpenAPI Specification. Run one of the following commands based on your spec's location. - - - Fern can handle both JSON and YML formats for OpenAPI specifications, and the --openapi flag accepts either format, so you can use whichever format your API spec is available in. - - - - `--organization ` configures your organization name in `fern.config.json`. This is required in order to successfully generate your SDK. - - - - - - ```bash - fern init --openapi path/to/openapi.yml --organization - ``` - - - - ```bash - fern init --openapi https://api.example.com/openapi.yml --organization - ``` - - - - - This creates a `fern` folder in your current directory with the OpenAPI Specification. The exact folder structure might look different depending on your initial input files. - - ```bash - fern/ - ├─ fern.config.json # root-level configuration - └─ api/ # your API - ├─ generators.yml # generators you're using - └─ openapi/ - ├─ openapi.yml # API-level configuration - ``` + + + - Initialize the Fern folder using your AsyncAPI Specification. Run one of the following commands based on your spec's location. - - - Fern can handle both JSON and YML formats for AsyncAPI specifications, and the --openapi flag accepts either format, so you can use whichever format your API spec is available in. - - - - `--organization ` configures your organization name in `fern.config.json`. This is required in order to successfully generate your SDK. - - - - - - ```bash - fern init --asyncapi path/to/asyncapi.yml --organization - ``` - - - - ```bash - fern init --asyncapi https://api.example.com/asyncapi.yml --organization - ``` - - - - - This creates a `fern` folder in your current directory with the AsyncAPI Specification. The exact folder structure might look different depending on your initial input files. - - ```bash - fern/ - ├─ fern.config.json # root-level configuration - └─ api/ # your API - ├─ generators.yml # generators you're using - └─ openapi/ - ├─ openapi.yml # API-level configuration - ``` + + + - 1. Initialize the Fern folder using the Fern Definition by running the following command: - - ```bash - fern init --organization - ``` - - - `--organization ` configures your organization name in `fern.config.json`. This is required in order to successfully generate your SDK. - - - This creates a `fern` folder in your current directory with the Fern Definition. - - ```bash - fern/ - ├─ fern.config.json # root-level configuration - ├─ generators.yml # generators you're using - └─ definition/ - ├─ api.yml # API-level configuration - └─ imdb.yml # endpoints, types, and errors - ``` - - - `imdb.yml` contains an example movies API. If you’re just generating an SDK for test purposes, you can leave this file as it is. To generate an SDK for your own API instead of the example movies API, replace `imdb.yml` with your own endpoints, types, and errors before proceeding with the rest of this page. - - - {/* TODO: show want generators.yml looks like, link out to configuration.md */} - - 1. Add the config option `outputSourceFiles: true` to `generators.yml`. This ensures your SDK contains `.ts` files instead of compiled output. + 1. Add the config option `outputSourceFiles: true` to `generators.yml`. This ensures your SDK contains `.ts` files instead of compiled output. ```yaml {11-12} # yaml-language-server: $schema=https://schema.buildwithfern.dev/generators-yml.json @@ -146,22 +42,10 @@ Generate a TypeScript SDK by following the instructions on this page. config: outputSourceFiles: true ``` - - - - - ### Pass `fern check` - - Run `fern check` to ensure that your API Definition is valid. If there are any errors, - fix them before proceeding. - - - If you're using an OpenAPI Specification, check out all of our - [supported extensions](/learn/api-definition/openapi/extensions). - + ### Add the SDK generator @@ -182,16 +66,7 @@ Generate a TypeScript SDK by following the instructions on this page. location: local-file-system path: ../sdks/typescript ``` - ### Generate the SDK - - Generate the SDK: - - ```bash - fern generate --group sdk - ``` - - This creates a `sdks` folder in your current directory. The resulting folder structure looks like this: - + ```bash fern/ # created in step 1 diff --git a/fern/products/sdks/snippets/demo-warning.mdx b/fern/products/sdks/snippets/demo-warning.mdx new file mode 100644 index 000000000..c8cb5e42a --- /dev/null +++ b/fern/products/sdks/snippets/demo-warning.mdx @@ -0,0 +1,5 @@ + + Generating SDKs often requires understanding the state of your OpenAPI Specification as well as + your specific requirements. For the ideal experience, we **strongly recommend** scheduling a + [demo](https://buildwithfern.com/contact) or [emailing us](mailto:support@buildwithfern.com) to get started. + \ No newline at end of file diff --git a/fern/products/sdks/snippets/generate-sdk.mdx b/fern/products/sdks/snippets/generate-sdk.mdx new file mode 100644 index 000000000..3f357464c --- /dev/null +++ b/fern/products/sdks/snippets/generate-sdk.mdx @@ -0,0 +1,8 @@ + ### Generate the SDK + + Generate the SDK: + + ```bash + fern generate --group sdk + ``` + This creates a `sdks` folder in your current directory. The resulting folder structure looks like this: \ No newline at end of file diff --git a/fern/products/sdks/snippets/install-cli.mdx b/fern/products/sdks/snippets/install-cli.mdx new file mode 100644 index 000000000..33c5a2955 --- /dev/null +++ b/fern/products/sdks/snippets/install-cli.mdx @@ -0,0 +1,7 @@ +### Install the Fern CLI + + Run the following command to install the CLI tool or update it to the latest version: + + ```bash + npm install -g fern-api + ``` \ No newline at end of file diff --git a/fern/products/sdks/snippets/option-1-openapi.mdx b/fern/products/sdks/snippets/option-1-openapi.mdx new file mode 100644 index 000000000..a0d066834 --- /dev/null +++ b/fern/products/sdks/snippets/option-1-openapi.mdx @@ -0,0 +1,36 @@ + Initialize the Fern folder using your OpenAPI Specification. Run one of the following commands based on your spec's location. + + + Fern can handle both JSON and YML formats for OpenAPI specifications, and the --openapi flag accepts either format, so you can use whichever format your API spec is available in. + + + + `--organization ` configures your organization name in `fern.config.json`. This is required in order to successfully generate your SDK. + + + + + + ```bash + fern init --openapi path/to/openapi.yml --organization + ``` + + + + ```bash + fern init --openapi https://api.example.com/openapi.yml --organization + ``` + + + + + This creates a `fern` folder in your current directory with the OpenAPI Specification. The exact folder structure might look different depending on your initial input files. + + ```bash + fern/ + ├─ fern.config.json # root-level configuration + └─ api/ # your API + ├─ generators.yml # generators you're using + └─ openapi/ + ├─ openapi.yml # API-level configuration + ``` \ No newline at end of file diff --git a/fern/products/sdks/snippets/option-2-asyncapi.mdx b/fern/products/sdks/snippets/option-2-asyncapi.mdx new file mode 100644 index 000000000..3f5972628 --- /dev/null +++ b/fern/products/sdks/snippets/option-2-asyncapi.mdx @@ -0,0 +1,36 @@ + Initialize the Fern folder using your AsyncAPI Specification. Run one of the following commands based on your spec's location. + + + Fern can handle both JSON and YML formats for AsyncAPI specifications, and the --openapi flag accepts either format, so you can use whichever format your API spec is available in. + + + + `--organization ` configures your organization name in `fern.config.json`. This is required in order to successfully generate your SDK. + + + + + + ```bash + fern init --asyncapi path/to/asyncapi.yml --organization + ``` + + + + ```bash + fern init --asyncapi https://api.example.com/asyncapi.yml --organization + ``` + + + + + This creates a `fern` folder in your current directory with the AsyncAPI Specification. The exact folder structure might look different depending on your initial input files. + + ```bash + fern/ + ├─ fern.config.json # root-level configuration + └─ api/ # your API + ├─ generators.yml # generators you're using + └─ openapi/ + ├─ openapi.yml # API-level configuration + ``` \ No newline at end of file diff --git a/fern/products/sdks/snippets/option-3-fern-def.mdx b/fern/products/sdks/snippets/option-3-fern-def.mdx new file mode 100644 index 000000000..e7392b5ec --- /dev/null +++ b/fern/products/sdks/snippets/option-3-fern-def.mdx @@ -0,0 +1,26 @@ + 1. Initialize the Fern folder using the Fern Definition by running the following command: + + ```bash + fern init --organization + ``` + + + `--organization ` configures your organization name in `fern.config.json`. This is required in order to successfully generate your SDK. + + + This creates a `fern` folder in your current directory with the Fern Definition. + + ```bash + fern/ + ├─ fern.config.json # root-level configuration + ├─ generators.yml # generators you're using + └─ definition/ + ├─ api.yml # API-level configuration + └─ imdb.yml # endpoints, types, and errors + ``` + + + `imdb.yml` contains an example movies API. If you’re just generating an SDK for test purposes, you can leave this file as it is. To generate an SDK for your own API instead of the example movies API, replace `imdb.yml` with your own endpoints, types, and errors before proceeding with the rest of this page. + + + {/* TODO: show want generators.yml looks like, link out to configuration.md */} diff --git a/fern/products/sdks/snippets/pass-fern-check.mdx b/fern/products/sdks/snippets/pass-fern-check.mdx new file mode 100644 index 000000000..68e70fb30 --- /dev/null +++ b/fern/products/sdks/snippets/pass-fern-check.mdx @@ -0,0 +1,9 @@ + ### Pass `fern check` + + Run `fern check` to ensure that your API Definition is valid. If there are any errors, + fix them before proceeding. + + + If you're using an OpenAPI Specification, check out all of our + [supported extensions](/learn/api-definition/openapi/extensions). + \ No newline at end of file From d53dc52823f9e2cf028bda0a072800f87bcc342c Mon Sep 17 00:00:00 2001 From: Devin Logan Date: Mon, 7 Jul 2025 11:50:22 -0400 Subject: [PATCH 07/14] add python quickstart --- .../sdks/overview/python/quickstart.mdx | 79 ++++++++++++++++++- 1 file changed, 78 insertions(+), 1 deletion(-) diff --git a/fern/products/sdks/overview/python/quickstart.mdx b/fern/products/sdks/overview/python/quickstart.mdx index 21ac7b283..1891184d7 100644 --- a/fern/products/sdks/overview/python/quickstart.mdx +++ b/fern/products/sdks/overview/python/quickstart.mdx @@ -3,4 +3,81 @@ title: Python Quickstart description: Get started quickly with the Fern Python SDK. --- -Generate a Python SDK by following the instructions on this page. \ No newline at end of file + + +Generate a Python SDK by following the instructions on this page. + + + + + ### Initialize the Fern Folder + + You can use either the OpenAPI definition, AsyncAPI definition, or Fern Definition to generate your SDK. + + + + + + + + + + + + + + 1. Add the config option `outputSourceFiles: true` to `generators.yml`. This ensures your SDK contains `.py` files instead of compiled output. + + ```yaml {11-12} + # yaml-language-server: $schema=https://schema.buildwithfern.dev/generators-yml.json + default-group: local + groups: + local: + generators: + - name: fernapi/fern-typescript-node-sdk + output: + location: local-file-system + path: ../sdks/typescript + version: + config: + outputSourceFiles: true + ``` + + + + + + ### Add the SDK generator + + Add the Python SDK generator: + + ```bash + fern add fern-python-sdk --group sdk + ``` + + This command adds the following to `generators.yml`: + + ```yaml + sdk: + generators: + - name: fernapi/fern-python-sdk + version: + output: + location: local-file-system + path: ../sdks/python + ``` + + + ```bash + fern/ # created in step 1 + sdks/ # created by fern generate --group sdk + ├─ python + ├─ __init__.py + ├─ client.py + ├─ core/ + └─ imdb/ # or the name of your API + └─ errors/ + └─ types/ + ``` + + From 0198cdc7a9b8f07d388c41fede55d3e48039ffb3 Mon Sep 17 00:00:00 2001 From: Devin Logan Date: Mon, 7 Jul 2025 13:32:00 -0400 Subject: [PATCH 08/14] fill out python qs, make some changes to snippets --- .../sdks/overview/python/quickstart.mdx | 25 +------ fern/products/sdks/snippets/generate-sdk.mdx | 3 +- .../sdks/snippets/option-1-openapi.mdx | 4 +- .../sdks/snippets/option-2-asyncapi.mdx | 4 +- .../sdks/snippets/option-3-fern-def.mdx | 67 +++++++++++++------ 5 files changed, 57 insertions(+), 46 deletions(-) diff --git a/fern/products/sdks/overview/python/quickstart.mdx b/fern/products/sdks/overview/python/quickstart.mdx index 1891184d7..823c1755c 100644 --- a/fern/products/sdks/overview/python/quickstart.mdx +++ b/fern/products/sdks/overview/python/quickstart.mdx @@ -12,37 +12,16 @@ Generate a Python SDK by following the instructions on this page. ### Initialize the Fern Folder - You can use either the OpenAPI definition, AsyncAPI definition, or Fern Definition to generate your SDK. + You can use either the OpenAPI definition, AsyncAPI definition, or Fern + Definition to generate your SDK. - - - - - - 1. Add the config option `outputSourceFiles: true` to `generators.yml`. This ensures your SDK contains `.py` files instead of compiled output. - - ```yaml {11-12} - # yaml-language-server: $schema=https://schema.buildwithfern.dev/generators-yml.json - default-group: local - groups: - local: - generators: - - name: fernapi/fern-typescript-node-sdk - output: - location: local-file-system - path: ../sdks/typescript - version: - config: - outputSourceFiles: true - ``` - diff --git a/fern/products/sdks/snippets/generate-sdk.mdx b/fern/products/sdks/snippets/generate-sdk.mdx index 3f357464c..0c9c51c90 100644 --- a/fern/products/sdks/snippets/generate-sdk.mdx +++ b/fern/products/sdks/snippets/generate-sdk.mdx @@ -3,6 +3,5 @@ Generate the SDK: ```bash - fern generate --group sdk - ``` + fern generate --group sdk``` This creates a `sdks` folder in your current directory. The resulting folder structure looks like this: \ No newline at end of file diff --git a/fern/products/sdks/snippets/option-1-openapi.mdx b/fern/products/sdks/snippets/option-1-openapi.mdx index a0d066834..d9aaf5011 100644 --- a/fern/products/sdks/snippets/option-1-openapi.mdx +++ b/fern/products/sdks/snippets/option-1-openapi.mdx @@ -1,3 +1,4 @@ + Initialize the Fern folder using your OpenAPI Specification. Run one of the following commands based on your spec's location. @@ -33,4 +34,5 @@ ├─ generators.yml # generators you're using └─ openapi/ ├─ openapi.yml # API-level configuration - ``` \ No newline at end of file + ``` + \ No newline at end of file diff --git a/fern/products/sdks/snippets/option-2-asyncapi.mdx b/fern/products/sdks/snippets/option-2-asyncapi.mdx index 3f5972628..c4b5b0e04 100644 --- a/fern/products/sdks/snippets/option-2-asyncapi.mdx +++ b/fern/products/sdks/snippets/option-2-asyncapi.mdx @@ -1,3 +1,4 @@ + Initialize the Fern folder using your AsyncAPI Specification. Run one of the following commands based on your spec's location. @@ -33,4 +34,5 @@ ├─ generators.yml # generators you're using └─ openapi/ ├─ openapi.yml # API-level configuration - ``` \ No newline at end of file + ``` + \ No newline at end of file diff --git a/fern/products/sdks/snippets/option-3-fern-def.mdx b/fern/products/sdks/snippets/option-3-fern-def.mdx index e7392b5ec..3ce3a9d06 100644 --- a/fern/products/sdks/snippets/option-3-fern-def.mdx +++ b/fern/products/sdks/snippets/option-3-fern-def.mdx @@ -1,26 +1,55 @@ + 1. Initialize the Fern folder using the Fern Definition by running the following command: - ```bash - fern init --organization - ``` + ```bash + fern init --organization + ``` - - `--organization ` configures your organization name in `fern.config.json`. This is required in order to successfully generate your SDK. - + `--organization ` configures your organization + name in `fern.config.json`. This is required in order to successfully + generate your SDK. - This creates a `fern` folder in your current directory with the Fern Definition. + This creates a `fern` folder in your current directory with the Fern Definition. - ```bash - fern/ - ├─ fern.config.json # root-level configuration - ├─ generators.yml # generators you're using - └─ definition/ - ├─ api.yml # API-level configuration - └─ imdb.yml # endpoints, types, and errors - ``` + ```bash + fern/ + ├─ fern.config.json # root-level configuration + ├─ generators.yml # generators you're using + └─ definition/ + ├─ api.yml # API-level configuration + └─ imdb.yml # endpoints, types, and errors + ``` - - `imdb.yml` contains an example movies API. If you’re just generating an SDK for test purposes, you can leave this file as it is. To generate an SDK for your own API instead of the example movies API, replace `imdb.yml` with your own endpoints, types, and errors before proceeding with the rest of this page. - + `imdb.yml` contains an example movies API. If you’re just + generating an SDK for test purposes, you can leave this file as it is. To + generate an SDK for your own API instead of the example movies API, + replace `imdb.yml` with your own endpoints, types, and errors before + proceeding with the rest of this page. - {/* TODO: show want generators.yml looks like, link out to configuration.md */} + {/* TODO: show what generators.yml looks like, link out to configuration.md */} + + 1. Add the config option `outputSourceFiles: true` to + `generators.yml`. This ensures your SDK contains source files in + your designated language instead of compiled output. + + ```yaml {11-12} + # yaml-language-server: $schema=https://schema.buildwithfern.dev/generators-yml.json + default-group: local + groups: + local: + generators: + - name: fernapi/fern-typescript-node-sdk + output: + location: local-file-system + path: ../sdks/typescript + version: + config: + outputSourceFiles: true + ``` + + `fern init` creates a default configuration that includes the + TypeScript Node SDK generator. The `local` group containing this + generator only generates if you run fern generate without specifying a + group, or if you explicitly target it with `fern generate --group + local`. In subsequent steps, you'll add an additional generator for your + preferred SDK language. From 00459fd9c8f0892656060010d809b597ce609b89 Mon Sep 17 00:00:00 2001 From: Devin Logan Date: Mon, 7 Jul 2025 13:51:12 -0400 Subject: [PATCH 09/14] fix some errors --- .../sdks/overview/python/quickstart.mdx | 22 ++++----- .../sdks/overview/typescript/quickstart.mdx | 48 +++++-------------- fern/products/sdks/snippets/generate-sdk.mdx | 6 ++- .../sdks/snippets/option-3-fern-def.mdx | 3 +- 4 files changed, 30 insertions(+), 49 deletions(-) diff --git a/fern/products/sdks/overview/python/quickstart.mdx b/fern/products/sdks/overview/python/quickstart.mdx index 823c1755c..358eca002 100644 --- a/fern/products/sdks/overview/python/quickstart.mdx +++ b/fern/products/sdks/overview/python/quickstart.mdx @@ -47,16 +47,16 @@ Generate a Python SDK by following the instructions on this page. ``` - ```bash - fern/ # created in step 1 - sdks/ # created by fern generate --group sdk - ├─ python - ├─ __init__.py - ├─ client.py - ├─ core/ - └─ imdb/ # or the name of your API - └─ errors/ - └─ types/ - ``` +```bash +fern/ # created in step 1 +sdks/ # created by fern generate --group sdk +├─ python + ├─ __init__.py + ├─ client.py + ├─ core/ + └─ imdb/ # or the name of your API + ├─ errors/ + └─ types/ +``` diff --git a/fern/products/sdks/overview/typescript/quickstart.mdx b/fern/products/sdks/overview/typescript/quickstart.mdx index 1d06fb1c6..8a3bd37ab 100644 --- a/fern/products/sdks/overview/typescript/quickstart.mdx +++ b/fern/products/sdks/overview/typescript/quickstart.mdx @@ -15,34 +15,12 @@ Generate a TypeScript SDK by following the instructions on this page. You can use either the OpenAPI definition, AsyncAPI definition, or Fern Definition to generate your SDK. - - - - - - 1. Add the config option `outputSourceFiles: true` to `generators.yml`. This ensures your SDK contains `.ts` files instead of compiled output. - - ```yaml {11-12} - # yaml-language-server: $schema=https://schema.buildwithfern.dev/generators-yml.json - default-group: local - groups: - local: - generators: - - name: fernapi/fern-typescript-node-sdk - output: - location: local-file-system - path: ../sdks/typescript - version: - config: - outputSourceFiles: true - ``` - @@ -68,18 +46,18 @@ Generate a TypeScript SDK by following the instructions on this page. ``` - ```bash - fern/ # created in step 1 - sdks/ # created by fern generate --group sdk - ├─ typescript - ├─ cjs/ - ├─ api/ - ├─ core/ - └─ errors/ - └─ esm/ - ├─ api/ - ├─ core/ - └─ errors/ - ``` +```bash +fern/ # created in step 1 +sdks/ # created by fern generate --group sdk + ├─ typescript + ├─ cjs/ + ├─ api/ + ├─ core/ + └─ errors/ + └─ esm/ + ├─ api/ + ├─ core/ + └─ errors/ +``` diff --git a/fern/products/sdks/snippets/generate-sdk.mdx b/fern/products/sdks/snippets/generate-sdk.mdx index 0c9c51c90..9342d5580 100644 --- a/fern/products/sdks/snippets/generate-sdk.mdx +++ b/fern/products/sdks/snippets/generate-sdk.mdx @@ -1,7 +1,9 @@ - ### Generate the SDK +### Generate the SDK Generate the SDK: ```bash - fern generate --group sdk``` + fern generate --group sdk + ``` + This creates a `sdks` folder in your current directory. The resulting folder structure looks like this: \ No newline at end of file diff --git a/fern/products/sdks/snippets/option-3-fern-def.mdx b/fern/products/sdks/snippets/option-3-fern-def.mdx index 3ce3a9d06..e485d10a5 100644 --- a/fern/products/sdks/snippets/option-3-fern-def.mdx +++ b/fern/products/sdks/snippets/option-3-fern-def.mdx @@ -30,7 +30,7 @@ 1. Add the config option `outputSourceFiles: true` to `generators.yml`. This ensures your SDK contains source files in - your designated language instead of compiled output. + your preferred SDK language instead of compiled output. ```yaml {11-12} # yaml-language-server: $schema=https://schema.buildwithfern.dev/generators-yml.json @@ -53,3 +53,4 @@ group, or if you explicitly target it with `fern generate --group local`. In subsequent steps, you'll add an additional generator for your preferred SDK language. + From 0869511a67cb9fd8d5b4590badc4316d1e8d4f2a Mon Sep 17 00:00:00 2001 From: Devin Logan Date: Mon, 7 Jul 2025 14:03:13 -0400 Subject: [PATCH 10/14] fix some errors --- .../sdks/overview/python/quickstart.mdx | 30 +++++----- .../sdks/overview/typescript/quickstart.mdx | 40 ++++++------- .../sdks/snippets/option-3-fern-def.mdx | 58 +++++++++---------- 3 files changed, 64 insertions(+), 64 deletions(-) diff --git a/fern/products/sdks/overview/python/quickstart.mdx b/fern/products/sdks/overview/python/quickstart.mdx index 358eca002..06bdc11e8 100644 --- a/fern/products/sdks/overview/python/quickstart.mdx +++ b/fern/products/sdks/overview/python/quickstart.mdx @@ -26,25 +26,25 @@ Generate a Python SDK by following the instructions on this page. - ### Add the SDK generator +### Add the SDK generator - Add the Python SDK generator: +Add the Python SDK generator: - ```bash - fern add fern-python-sdk --group sdk - ``` +```bash +fern add fern-python-sdk --group sdk +``` - This command adds the following to `generators.yml`: +This command adds the following to `generators.yml`: - ```yaml - sdk: - generators: - - name: fernapi/fern-python-sdk - version: - output: - location: local-file-system - path: ../sdks/python - ``` +```yaml +sdk: + generators: + - name: fernapi/fern-python-sdk + version: + output: + location: local-file-system + path: ../sdks/python +``` ```bash diff --git a/fern/products/sdks/overview/typescript/quickstart.mdx b/fern/products/sdks/overview/typescript/quickstart.mdx index 8a3bd37ab..799ef868c 100644 --- a/fern/products/sdks/overview/typescript/quickstart.mdx +++ b/fern/products/sdks/overview/typescript/quickstart.mdx @@ -15,35 +15,35 @@ Generate a TypeScript SDK by following the instructions on this page. You can use either the OpenAPI definition, AsyncAPI definition, or Fern Definition to generate your SDK. - + - - - + + + - ### Add the SDK generator +### Add the SDK generator - Add the TypeScript SDK generator: +Add the TypeScript SDK generator: - ```bash - fern add fern-typescript-node-sdk --group sdk - ``` +```bash +fern add fern-typescript-node-sdk --group sdk +``` + +This command adds the following to `generators.yml`: - This command adds the following to `generators.yml`: - - ```yaml - sdk: - generators: - - name: fernapi/fern-typescript-node-sdk - version: - output: - location: local-file-system - path: ../sdks/typescript - ``` + ```yaml + sdk: + generators: + - name: fernapi/fern-typescript-node-sdk + version: + output: + location: local-file-system + path: ../sdks/typescript + ``` ```bash diff --git a/fern/products/sdks/snippets/option-3-fern-def.mdx b/fern/products/sdks/snippets/option-3-fern-def.mdx index e485d10a5..77c6c998c 100644 --- a/fern/products/sdks/snippets/option-3-fern-def.mdx +++ b/fern/products/sdks/snippets/option-3-fern-def.mdx @@ -1,5 +1,5 @@ - 1. Initialize the Fern folder using the Fern Definition by running the following command: +1. Initialize the Fern folder using the Fern Definition by running the following command: ```bash fern init --organization @@ -26,31 +26,31 @@ replace `imdb.yml` with your own endpoints, types, and errors before proceeding with the rest of this page. - {/* TODO: show what generators.yml looks like, link out to configuration.md */} - - 1. Add the config option `outputSourceFiles: true` to - `generators.yml`. This ensures your SDK contains source files in - your preferred SDK language instead of compiled output. - - ```yaml {11-12} - # yaml-language-server: $schema=https://schema.buildwithfern.dev/generators-yml.json - default-group: local - groups: - local: - generators: - - name: fernapi/fern-typescript-node-sdk - output: - location: local-file-system - path: ../sdks/typescript - version: - config: - outputSourceFiles: true - ``` - - `fern init` creates a default configuration that includes the - TypeScript Node SDK generator. The `local` group containing this - generator only generates if you run fern generate without specifying a - group, or if you explicitly target it with `fern generate --group - local`. In subsequent steps, you'll add an additional generator for your - preferred SDK language. - + {/* TODO: show what generators.yml looks like, link out to configuration.md */} + +2. Add the config option `outputSourceFiles: true` to + `generators.yml`. This ensures your SDK contains source files in + your preferred SDK language instead of compiled output. + + ```yaml {11-12} + # yaml-language-server: $schema=https://schema.buildwithfern.dev/generators-yml.json + default-group: local + groups: + local: + generators: + - name: fernapi/fern-typescript-node-sdk + output: + location: local-file-system + path: ../sdks/typescript + version: + config: + outputSourceFiles: true + ``` + + `fern init` creates a default configuration that includes the + TypeScript Node SDK generator. The `local` group containing this + generator only generates if you run fern generate without specifying a + group, or if you explicitly target it with `fern generate --group + local`. In subsequent steps, you'll add an additional generator for your + preferred SDK language. + \ No newline at end of file From 78b8442a586c2d410202f1d2b1a97f11b9288ba8 Mon Sep 17 00:00:00 2001 From: Devin Logan Date: Mon, 7 Jul 2025 14:11:08 -0400 Subject: [PATCH 11/14] reset config file (didn't mean to add it here) --- .../sdks/overview/go/configuration.mdx | 172 +----------------- 1 file changed, 1 insertion(+), 171 deletions(-) diff --git a/fern/products/sdks/overview/go/configuration.mdx b/fern/products/sdks/overview/go/configuration.mdx index 44f90bbe3..1ba4d67f3 100644 --- a/fern/products/sdks/overview/go/configuration.mdx +++ b/fern/products/sdks/overview/go/configuration.mdx @@ -3,174 +3,4 @@ title: Go Configuration description: Configuration options for the Fern Go SDK. --- -You can customize the behavior of the Go SDK generator in `generators.yml`: - -```yaml {7-8} -default-group: local -groups: - local: - generators: - - name: fernapi/fern-go-sdk - version: - config: - packageName: acme - output: - location: local-file-system - path: ../generated/go -``` - -## SDK Configuration Options - - -Use this option if you plan to distribute the generated Go SDK as a separate, published Go module. - -If you only plan to use the generated SDK within your own Go module, use the `importPath` configuration option instead. - -You can generate the Go SDK code into a separate module (defined with its own `go.mod`) -with the following `generators.yml` configuration: - -```yaml {7-9} -default-group: local -groups: - local: - generators: - - name: fernapi/fern-go-sdk - version: 0.13.0 - config: - module: - path: github.com// - output: - location: local-file-system - path: ../generated/go -``` - -This configuration will generate a `go.mod` alongside the rest of the Go SDK code at the target output -location. With this, `import` statements within the generated Go SDK are all resolved from the configured -module path. - -By default, the generated `go.mod` will be set to `1.13`. You can override this behavior by specifying -the `version` key: - -```yaml {10} -default-group: local -groups: - local: - generators: - - name: fernapi/fern-go-sdk - version: 0.13.0 - config: - module: - path: github.com// - version: "1.19" - output: - location: local-file-system - path: ../generated/go -``` - -If you want to depend on the generated Go SDK locally (without distributing it as a separate Go module), -and you use the `module` configuration option, you will need to modify your project's top-level `go.mod` to include a [`replace`](https://go.dev/doc/modules/gomod-ref#replace) statement: - -```go -module github.com/your/module - -require "github.com/your/sdk" v0.0.0 -replace "github.com/your/sdk" v0.0.0 => "path/to/generated/sdk" -``` - - - - - - - -Use this option if you plan to depend on the generated Go SDK from within your project, and **not** depend on it as a separate, published Go module. - -If you plan to to distribute the generated Go SDK as a separate, published Go module, use the `module` configuration option instead. - -You can generate the Go SDK code into a `gen/go/api` package with the following `generators.yml` -configuration: - -```yaml {7-8} -default-group: local -groups: - local: - generators: - - name: fernapi/fern-go-sdk - version: 0.13.0 - config: - importPath: github.com///generated/go - output: - location: local-file-system - path: ../generated/go -``` -You must update the `` and `` placeholders -with the relevant elements in your `go.mod` path. In this case, the generated Go SDK uses the same `go.mod` path used by the rest of your Go module. - - - - - - - - - - - - - -By default, it's impossible to send an explicit JSON `null` for optional parameters. `enableExplicitNull: true` opts in to generating a generic `Optional[T]` type that can be used to distinguish between a `nil` value (nothing is sent), a non-`nil` value (the value is sent), and an explicit null (a `null` value is sent). This is particularly useful for `PATCH` endpoints. - -The `Optional` and `Null` constructor functions will be included at the root of your module and can be -used like so: - -```go -client := acmeclient.NewClient() -updatedFoo, err := client.Foo.Update( - context.TODO(), - &acme.UpdateFooRequest{ - Name: acme.Optional("example"), - Tag: acme.Null[string](), - }, - // Serialized as {"name":"example","tag":null} -) -``` - -An example configuration: - -```yaml {7-8} -default-group: local -groups: - local: - generators: - - name: fernapi/fern-go-sdk - version: 0.13.0 - config: - enableExplicitNull: true - output: - location: local-file-system - path: ../generated/go -``` - -This feature requires generics, so the generated `go.mod` will be upgraded to `1.18` (as opposed to `1.13`). - - - - - - - - - - - - - - - - - - - - - - +# Go Configuration From 113e66258c0ada1a281f3ab5b0998c391d561979 Mon Sep 17 00:00:00 2001 From: Devin Logan Date: Mon, 7 Jul 2025 14:33:51 -0400 Subject: [PATCH 12/14] fix code sample tabbing --- fern/products/sdks/overview/python/quickstart.mdx | 8 ++++---- fern/products/sdks/overview/typescript/quickstart.mdx | 4 ++-- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/fern/products/sdks/overview/python/quickstart.mdx b/fern/products/sdks/overview/python/quickstart.mdx index 06bdc11e8..4279f4d8b 100644 --- a/fern/products/sdks/overview/python/quickstart.mdx +++ b/fern/products/sdks/overview/python/quickstart.mdx @@ -37,13 +37,13 @@ fern add fern-python-sdk --group sdk This command adds the following to `generators.yml`: ```yaml -sdk: + sdk: generators: - - name: fernapi/fern-python-sdk + - name: fernapi/fern-python-sdk version: output: - location: local-file-system - path: ../sdks/python + location: local-file-system + path: ../sdks/python ``` diff --git a/fern/products/sdks/overview/typescript/quickstart.mdx b/fern/products/sdks/overview/typescript/quickstart.mdx index 799ef868c..3c64cad90 100644 --- a/fern/products/sdks/overview/typescript/quickstart.mdx +++ b/fern/products/sdks/overview/typescript/quickstart.mdx @@ -35,7 +35,7 @@ fern add fern-typescript-node-sdk --group sdk This command adds the following to `generators.yml`: - ```yaml +```yaml sdk: generators: - name: fernapi/fern-typescript-node-sdk @@ -43,7 +43,7 @@ This command adds the following to `generators.yml`: output: location: local-file-system path: ../sdks/typescript - ``` +``` ```bash From 6cf5fb8509e8d0fa1041b60b825d6f768910c826 Mon Sep 17 00:00:00 2001 From: Devin Logan Date: Mon, 7 Jul 2025 14:40:43 -0400 Subject: [PATCH 13/14] add note about paid plans to python qs --- fern/products/sdks/overview/python/quickstart.mdx | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/fern/products/sdks/overview/python/quickstart.mdx b/fern/products/sdks/overview/python/quickstart.mdx index 4279f4d8b..d97158f85 100644 --- a/fern/products/sdks/overview/python/quickstart.mdx +++ b/fern/products/sdks/overview/python/quickstart.mdx @@ -58,5 +58,9 @@ sdks/ # created by fern generate --group sdk ├─ errors/ └─ types/ ``` - + +Some files, including `pyproject.toml` and `README.md`, are only generated on paid plans. +To get the fully generated SDK, schedule a + [demo](https://buildwithfern.com/contact) or [email + us](mailto:support@buildwithfern.com). From e1237bb5c6b7394cd8f3aa71bb528feea4fef11e Mon Sep 17 00:00:00 2001 From: Devin Logan Date: Mon, 7 Jul 2025 14:51:36 -0400 Subject: [PATCH 14/14] small fix --- fern/products/sdks/overview/python/quickstart.mdx | 1 + fern/products/sdks/snippets/option-3-fern-def.mdx | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/fern/products/sdks/overview/python/quickstart.mdx b/fern/products/sdks/overview/python/quickstart.mdx index d97158f85..c26144140 100644 --- a/fern/products/sdks/overview/python/quickstart.mdx +++ b/fern/products/sdks/overview/python/quickstart.mdx @@ -45,6 +45,7 @@ This command adds the following to `generators.yml`: location: local-file-system path: ../sdks/python ``` + ```bash diff --git a/fern/products/sdks/snippets/option-3-fern-def.mdx b/fern/products/sdks/snippets/option-3-fern-def.mdx index 77c6c998c..65ff4ffd0 100644 --- a/fern/products/sdks/snippets/option-3-fern-def.mdx +++ b/fern/products/sdks/snippets/option-3-fern-def.mdx @@ -43,7 +43,7 @@ location: local-file-system path: ../sdks/typescript version: - config: + config: outputSourceFiles: true ```