diff --git a/.vale/styles/FernStyles/Acronyms.yml b/.vale/styles/FernStyles/Acronyms.yml index 1b810661..093d745c 100644 --- a/.vale/styles/FernStyles/Acronyms.yml +++ b/.vale/styles/FernStyles/Acronyms.yml @@ -11,12 +11,12 @@ exceptions: - API - ASP - CLI - - CNAME # Fern-specific + - CNAME - CPU - CSS - CSV - DEBUG - - DNS # Fern-specific + - DNS - DOM - DPI - FAQ @@ -56,7 +56,7 @@ exceptions: - TBD - TCP - TODO - - TXT # Fern-specific + - TXT - URI - URL - USB @@ -65,7 +65,9 @@ exceptions: - XSS - YAML - ZIP - - MDX # Fern-specific - - SEO # Fern-specific - - AWS # Fern-specific - - LLM # Fern-specific + - MDX + - SEO + - AWS + - OpenRPC + - gRPC + - RPC diff --git a/.vale/styles/FernStyles/Headings.yml b/.vale/styles/FernStyles/Headings.yml index d397c0eb..aae3aef4 100644 --- a/.vale/styles/FernStyles/Headings.yml +++ b/.vale/styles/FernStyles/Headings.yml @@ -32,4 +32,11 @@ exceptions: - GitHub - README - Action - - Actions \ No newline at end of file + - Actions + - WebSocket + - WebSocket Playground + - OpenRPC + - gRPC + - RPC + - SDK + - SDKs \ No newline at end of file diff --git a/fern/products/docs/pages/api-references/api-explorer.mdx b/fern/products/docs/pages/api-references/api-explorer.mdx index 17882849..bbbf5ea8 100644 --- a/fern/products/docs/pages/api-references/api-explorer.mdx +++ b/fern/products/docs/pages/api-references/api-explorer.mdx @@ -5,7 +5,7 @@ subtitle: Reduce "time to 200" by allowing users to make real calls to your API Fern's API Explorer allows users to make authenticated requests to your API without ever leaving your documentation. -### Auto-populate with examples +### Autopopulate with examples Fern will automatically populate the fields of the endpoint with the values set in your API specification.
@@ -28,4 +28,4 @@ Allow users to test their calls in a sandbox environment or select the environme For APIs that support WebSocket connections, the API Explorer includes a **WebSocket**-specific Playground. The WebSocket Playground also allows users to establish a connection with the API, and send/receive messages in real-time. -
\ No newline at end of file +
diff --git a/fern/products/docs/pages/api-references/autopopulate-api-key.mdx b/fern/products/docs/pages/api-references/autopopulate-api-key.mdx index 59b66624..7faaa76a 100644 --- a/fern/products/docs/pages/api-references/autopopulate-api-key.mdx +++ b/fern/products/docs/pages/api-references/autopopulate-api-key.mdx @@ -91,7 +91,7 @@ The JWT should have a structure similar to: #### Setting up auto-populated API keys -- [ ] Reach out to Fern to get your secret key +- [ ] Reach out to Fern to get your secret key - [ ] Send Fern the URL of your authentication page. This is where users will be redirected to after clicking the "Login" button in the API Explorer. - [ ] Add logic to your service to set the `fern_token` cookie when a user logs in diff --git a/fern/products/docs/pages/api-references/generate-openrpc-ref.mdx b/fern/products/docs/pages/api-references/generate-openrpc-ref.mdx index 037d7f3b..bbb35980 100644 --- a/fern/products/docs/pages/api-references/generate-openrpc-ref.mdx +++ b/fern/products/docs/pages/api-references/generate-openrpc-ref.mdx @@ -9,7 +9,7 @@ Fern enables you to generate professional, interactive API reference documentati Alchemy's OpenRPC API Reference Example -## How to Add an OpenRPC Endpoint +## How to add an OpenRPC endpoint 1. Add your OpenRPC specification file (e.g., `openrpc.yaml`) to your `/fern` directory. 2. Configure your `generators.yml` to point to your OpenRPC spec: @@ -22,13 +22,13 @@ Fern enables you to generate professional, interactive API reference documentati ``` -### Configuration Properties +### Configuration properties Path to your OpenRPC specification file. You can include multiple OpenRPC specs if your project exposes more than one JSON-RPC API. -## Common Use Cases +## Common use cases JSON-RPC APIs are widely used for: - **Blockchain & Crypto**: Node RPC endpoints, wallet APIs @@ -36,4 +36,4 @@ JSON-RPC APIs are widely used for: - **Developer Tools**: Language servers, debuggers, automation - **Distributed Systems**: Remote procedure calls between services -Leverage Fern and OpenRPC to deliver world-class developer experiences for your JSON-RPC APIs. \ No newline at end of file +Leverage Fern and OpenRPC to deliver world-class developer experiences for your JSON-RPC APIs. diff --git a/fern/products/docs/pages/api-references/http-snippets.mdx b/fern/products/docs/pages/api-references/http-snippets.mdx index 35a8a644..b9ed3031 100644 --- a/fern/products/docs/pages/api-references/http-snippets.mdx +++ b/fern/products/docs/pages/api-references/http-snippets.mdx @@ -31,15 +31,15 @@ settings: ``` -## How It Works +## How it works -### Request Examples +### Request examples To generate HTTP snippets, add request examples to your API definition: - For Fern Definition: Follow the [examples documentation](/learn/api-definition/fern/examples) - For OpenAPI: Follow the [request/response examples documentation](/learn/api-definition/openapi/extensions/others#request--response-examples) -### Set Default Snippet Language +### Set default snippet language HTTP snippets support several languages. Our development work is driven by customer requests, so please request support for languages not listed here by [opening an issue](https://github.com/fern-api/fern/issues/new/choose). @@ -66,7 +66,7 @@ navigation: ``` -### Generated Features +### Generated features HTTP snippets automatically include: - Authentication headers with placeholders (e.g., ``) @@ -75,7 +75,7 @@ HTTP snippets automatically include: - Error handling patterns - SSL/TLS configuration where applicable -### Display Behavior +### Display behavior - If your API has SDK snippets, those will be shown by default - If no SDK snippets exist, HTTP snippets will display automatically diff --git a/fern/products/docs/pages/api-references/sdk-snippets.mdx b/fern/products/docs/pages/api-references/sdk-snippets.mdx index 0d984502..245708f0 100644 --- a/fern/products/docs/pages/api-references/sdk-snippets.mdx +++ b/fern/products/docs/pages/api-references/sdk-snippets.mdx @@ -15,7 +15,7 @@ description: Enable SDK code examples in TypeScript, Python, Go, and more from t ![SDK code snippet selector](https://fern-image-hosting.s3.amazonaws.com/sdk-code-snippets.png) -## Configuring SDK Snippets +## Configuring SDK snippets To configure SDK snippets, you'll need to name your SDKs in `generators.yml` and then reference that name in `docs.yml`. diff --git a/fern/products/docs/pages/api-references/server-urls.mdx b/fern/products/docs/pages/api-references/server-urls.mdx index e7387e4e..8f315d5f 100644 --- a/fern/products/docs/pages/api-references/server-urls.mdx +++ b/fern/products/docs/pages/api-references/server-urls.mdx @@ -13,7 +13,7 @@ You can configure multiple server URLs in your API definition using either Fern - [Configure servers in OpenAPI](/learn/api-definition/openapi/extensions/others#server-names) - [Configure environments in Fern Definition](/learn/api-definition/fern/api-yml/environments) -## User Interface +## User interface When multiple servers are configured, users will see a dropdown menu in the API Reference that allows them to switch between environments: @@ -45,7 +45,7 @@ Here's an example of the [Flagright docs site](https://docs.flagright.com/framl- -## Environment Persistence +## Environment persistence When you select an environment, it's reflected across the entire API Reference - both in the displayed URLs and in the [API Explorer](/learn/docs/api-references/api-explorer). This selection persists as you navigate between different pages. diff --git a/fern/products/docs/pages/customization/search.mdx b/fern/products/docs/pages/customization/search.mdx index 7f4ef3cf..05ea6503 100644 --- a/fern/products/docs/pages/customization/search.mdx +++ b/fern/products/docs/pages/customization/search.mdx @@ -30,7 +30,7 @@ If you are using the AI Search feature, the search box also functions as your si If you need to integrate Fern's documentation search into your own application or dashboard, you can request Algolia credentials directly from the Fern team. These credentials will allow you to query the same search index that powers your documentation site's search functionality. -### Making Search Requests +### Making search requests Once you have your credentials, you can make requests to Algolia's API to search your documentation. @@ -42,4 +42,4 @@ Contact the Fern team to get your specific application ID and index name. Creden ## Using an alternative search -You can override Fern's search with your own solution using [custom JavaScript](/learn/docs/building-and-customizing-your-docs/custom-css-global-js#custom-javascript) and your Algolia credentials. \ No newline at end of file +You can override Fern's search with your own solution using [custom JavaScript](/learn/docs/building-and-customizing-your-docs/custom-css-global-js#custom-javascript) and your Algolia credentials. diff --git a/fern/products/docs/pages/getting-started/overview.mdx b/fern/products/docs/pages/getting-started/overview.mdx index 8d333869..1cade7aa 100644 --- a/fern/products/docs/pages/getting-started/overview.mdx +++ b/fern/products/docs/pages/getting-started/overview.mdx @@ -93,7 +93,7 @@ subtitle: A website builder for beautiful agent and developer-friendly docs.
- Bring your own API Spec + Bring your own API spec Arrow right light Arrow right light
@@ -144,7 +144,7 @@ subtitle: A website builder for beautiful agent and developer-friendly docs.
- Fern's MCP Server + Fern's MCP server Arrow right light Arrow right light
diff --git a/fern/products/docs/pages/integrations/analytics/google.mdx b/fern/products/docs/pages/integrations/analytics/google.mdx index 78401e54..da476638 100644 --- a/fern/products/docs/pages/integrations/analytics/google.mdx +++ b/fern/products/docs/pages/integrations/analytics/google.mdx @@ -11,7 +11,7 @@ Fern supports integrating with both [Google Analytics 4](https://developers.goog Before you begin, ensure you have a Google Analytics 4 property ID. This ID is typically in the format `G-XXXXXXXXXX`. -### Integration Steps +### Integration steps 1. Open your `docs.yml` file. 2. Add your Google Analytics 4 property ID under the `measurement-id` key. @@ -44,7 +44,7 @@ analytics: To use Google Tag Manager, obtain a container ID from your Google Tag Manager account. This ID follows the format `GTM-XXXXXX`. -### Integration Steps +### Integration steps 1. Open your `docs.yml` file. 2. Add your Google Tag Manager container ID under the container-id key. diff --git a/fern/products/docs/pages/integrations/feature-flags.mdx b/fern/products/docs/pages/integrations/feature-flags.mdx index 5559e785..89e7cf2c 100644 --- a/fern/products/docs/pages/integrations/feature-flags.mdx +++ b/fern/products/docs/pages/integrations/feature-flags.mdx @@ -8,7 +8,7 @@ description: Learn how to use Feature Flags in your Fern documentation Fern supports conditional rendering of documentation content using feature flags, powered by [LaunchDarkly](https://app.launchdarkly.com/signup) integration. Control visibility of documentation sections based on feature flag states for different release stages or user segments. -## Use Cases +## Use cases Feature flags in documentation are particularly useful for: @@ -44,7 +44,7 @@ navigation: To read more about `fallbackValue` and `match`, see the [LaunchDarkly documentation](https://launchdarkly.com/docs/guides/flags/testing-code#fallback-values). -## Using Feature Flags in MDX +## Using feature flags in MDX Use the `` component to conditionally render content: @@ -63,7 +63,7 @@ Use the `` component to conditionally render content: ``` -### Component Properties +### Component properties Name of the feature flag to check against @@ -77,7 +77,7 @@ Use the `` component to conditionally render content: Default value if the feature flag is not defined -## Example: Complete Configuration +## Example: complete configuration ```yaml # docs.yml @@ -101,7 +101,7 @@ navigation: fallbackValue: standard ``` -## Real-time Evaluation +## Real-time evaluation Feature flags are client-side only. The information is only visually hidden when the feature flag is evaluated as false. @@ -109,10 +109,10 @@ If you toggle a feature flag on in the LaunchDarkly dashboard, the content will Conversely, if you toggle a feature flag off in the LaunchDarkly dashboard, the content will be hidden immediately. -## Server-side Evaluation +## Server-side evaluation Feature flags are client-side only. Want to request server-side evaluation? [Let us know](https://github.com/fern-api/fern/issues) by filing a feature request. -## Additional Feature Flag Providers +## Additional feature flag providers -Want to request a new feature flag provider? [Let us know](https://github.com/fern-api/fern/issues) by filing a feature request. \ No newline at end of file +Want to request a new feature flag provider? [Let us know](https://github.com/fern-api/fern/issues) by filing a feature request. diff --git a/fern/products/docs/pages/navigation/overview.mdx b/fern/products/docs/pages/navigation/overview.mdx index 25a7ffd0..e69b8a38 100644 --- a/fern/products/docs/pages/navigation/overview.mdx +++ b/fern/products/docs/pages/navigation/overview.mdx @@ -7,11 +7,12 @@ description: Set up the navigation for your documentation site built with Fern D Every Fern Docs website has a special configuration file called `docs.yml`. Use this file to configure the navigation for your documentation site. -### Example Configuration +### Example configuration Here's a complete example of a `docs.yml` file: + ```yaml # yaml-language-server: $schema=https://schema.buildwithfern.dev/docs-yml.json navigation: @@ -34,30 +35,31 @@ navbar-links: ## Sections, contents, and pages -The navigation organizes your documentation in the left-side nav bar. You can create sections for grouping related content. Each `section` has a name and a list of `contents`. The sections appear in the left-side nav bar in the order that they are listed in `docs.yml`. +The navigation organizes your documentation in the left-side nav bar. You can create sections for grouping related content. Each `section` has a name and a list of `contents`. The sections appear in the left-side nav bar in the order listed in `docs.yml`. In `contents`, list your pages with names and corresponding file paths. The supported file types for pages are `.md` or `.mdx`. -A basic navigation configuration with two sections is shown below. The first section is called `Introduction` and contains a single page called `My Page`. The second section is called **API Reference**. This is a special type of section that's automatically generated by Fern, and you do not need to add any pages to it by hand. For more information, see the [Generate API Reference](/learn/docs/api-references/generate-api-ref) page. +A basic navigation configuration with two sections is shown below. The first section is called `Introduction` and contains a single page called `My Page`. The second section is called **API Reference**. This is a special type of section that's automatically generated by Fern, and you don't need to add any pages to it by hand. For more information, see the [Generate API Reference](/learn/docs/api-references/generate-api-ref) page. +{/* */} ```yaml Example navigation config navigation: - section: Introduction contents: - - page: My Page + - page: My page path: ./pages/my-page.mdx - api: API Reference ``` - +{/* */} If you want to add another page to an existing section, create an `.md` or `.mdx` file. Then in `docs.yml`, create a new `page` in the `contents` list for that section, providing the path to the `.md` or `.mdx` file you created. Example: - +{/* */} ```yaml Example navigation config navigation: - section: Introduction contents: - - page: My Page + - page: My page path: ./pages/my-page.mdx - - page: Another Page + - page: Another page path: ./pages/another-page.mdx - api: API Reference ``` @@ -68,34 +70,37 @@ To add another section, add another `section` to the `navigation`. Example: navigation: - section: Introduction contents: - - page: My Page + - page: My page path: ./pages/my-page.mdx - api: API Reference - - section: Help Center + - section: Help center contents: - - page: Contact Us + - page: Contact us path: contact-us.mdx ``` +{/* */} ### Hiding content -To hide a page or an entire section of your docs, add `hidden: true`. A hidden page or section will still be discoverable using the exact URL, but it will be excluded from search and will not be indexed. +To hide a page or an entire section of your docs, add `hidden: true`. A hidden page or section will still be discoverable using the exact URL, but it will be excluded from search and won't be indexed. +{/* */} ```yaml Example navigation config with additional section {7, 10} navigation: - section: Introduction contents: - - page: My Page + - page: My page path: ./pages/my-page.mdx - - page: Hidden Page + - page: Hidden page hidden: true path: ./pages/my-hidden-page.mdx - - section: Hidden Sections + - section: Hidden sections hidden: true contents: - - page: Another Hidden Page + - page: Another hidden page path: ./pages/also-hidden.mdx ``` +{/* */} ### Section and page availability @@ -105,17 +110,17 @@ Options are: `stable`, `generally-available`, `in-development`, `pre-release`, ` ```yaml Availability {3, 11, 14} navigation: - - section: Developer Resources + - section: Developer resources availability: generally-available contents: - - page: Code Examples # Inherits generally-available + - page: Code examples # Inherits generally-available path: ./pages/code-examples.mdx - - page: CLI Tools # Inherits generally-available + - page: CLI tools # Inherits generally-available path: ./pages/cli-tools.mdx - - page: Testing Framework + - page: Testing framework path: ./pages/testing-framework.mdx availability: beta # Overrides section-level availability - - page: Performance Monitoring + - page: Performance monitoring path: ./pages/performance-monitoring.mdx availability: in-development # Overrides section-level availability ``` @@ -127,20 +132,22 @@ navigation: To add an overview page to a section, add a `path` property to the section. +{/* */} ```yaml Example section with an overview {7} navigation: - section: Introduction contents: - - page: My Page + - page: My page path: ./pages/my-page.mdx - section: Guides path: ./pages/guide-overview.mdx contents: - - page: Simple Guide + - page: Simple guide path: ./pages/guides/simple.mdx - - page: Complex Guide + - page: Complex guide path: ./pages/guides/complex.mdx ``` +{/* */} ## Nested sections @@ -152,15 +159,15 @@ navigation: layout: - section: Learn contents: - - section: Key Concepts + - section: Key concepts contents: - page: Embeddings path: ./docs/pages/embeddings.mdx - - page: Prompt Engineering + - page: Prompt engineering path: ./docs/pages/prompts.mdx - section: Generation contents: - - page: Command Nightly + - page: Command nightly path: ./docs/pages/command.mdx - page: Likelihood path: ./docs/pages/likelihood.mdx @@ -177,11 +184,11 @@ This helps keep the navigation tidy when you have many sections or want to highl ```yaml {7} Example config with collapsed section navigation: - - section: Getting Started + - section: Getting started contents: - page: Introduction path: ./pages/intro.mdx - - section: Advanced Topics + - section: Advanced topics collapsed: true contents: - page: Custom CSS @@ -194,31 +201,35 @@ navigation: For icons to appear next to sections and pages, add the `icon` key. The value should be a valid [Font Awesome icon](https://fontawesome.com/icons) name. Pro and Brand Icons from Font Awesome are supported. +{/* */} ```yaml Example navigation config with icons navigation: - section: Home icon: fa-regular fa-home contents: - - page: My Page + - page: My page icon: fa-regular fa-file path: ./pages/my-page.mdx - api: API Reference icon: fa-regular fa-puzzle ``` +{/* */} ## Links You can add a link to an external page within your sidebar navigation with the following configuration: +{/* */} ```yaml title="docs.yml" navigation: - section: Home contents: - page: Introduction path: ./intro.mdx - - link: Our YouTube Channel + - link: Our YouTube channel href: https://www.youtube.com/ ``` +{/* */} An external link within navigation @@ -229,13 +240,15 @@ navigation: Within the navigation, you can add `tabs`. Tabs are used to group sections together. The example below shows tabs for `Help Center`, `API Reference`, and an external link to `Github`. Each tab has a `title` and `icon`. [Browse the icons available](https://fontawesome.com/icons) from Font Awesome. Pro and Brand Icons are supported. +{/* */} + ```yaml tabs: api: display-name: API Reference icon: puzzle help: - display-name: Help Center + display-name: Help center icon: home github: display-name: GitHub @@ -247,17 +260,18 @@ tabs: layout: - section: Introduction contents: - - page: My Page + - page: My page path: my-page.mdx - api: API Reference - tab: help layout: - - section: Help Center + - section: Help center contents: - - page: Contact Us + - page: Contact us path: contact-us.mdx - tab: github ``` +{/* */} Here's an example of what the Tabs implementation looks like: @@ -277,11 +291,11 @@ layout: ## Versions -If you have multiple versions of your documentation, you can introduce a dropdown version selector by specifying the `versions`. For more information, check out our [documentation on versioning](/learn/docs/building-your-docs/versioning). +If you have multiple versions of your documentation, you can introduce a dropdown version selector by specifying the `versions`. For more information, check out the [documentation on versioning](/learn/docs/building-your-docs/versioning). ## Product switching -If you have multiple products in your documentation, you can introduce a dropdown product selector by creating separate product configuration files. Each product can contain its own distinct versions, tabs, sections, pages, and API references, though products can also share content. +If you have multiple products in your documentation, you can introduce a [dropdown product selector](/learn/docs/configuration/products) by creating separate product configuration files. Each product can contain its own distinct versions, tabs, sections, pages, and API References, though products can also share content. ```yaml {2-3, 7-8} @@ -298,5 +312,3 @@ products: subtitle: Product B subtitle # optional ``` - -For more information about setting up this up, check out our [documentation on product switching](/learn/docs/configuration/products). \ No newline at end of file