<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>Forem: minae</title>
    <description>The latest articles on Forem by minae (@dreamlogic).</description>
    <link>https://forem.com/dreamlogic</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F116919%2Fea8c5900-1419-461e-afcf-07252eafc987.jpg</url>
      <title>Forem: minae</title>
      <link>https://forem.com/dreamlogic</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/dreamlogic"/>
    <language>en</language>
    <item>
      <title>Book Synopsis &amp; Review - Docs Like Code</title>
      <dc:creator>minae</dc:creator>
      <pubDate>Fri, 31 May 2024 00:36:00 +0000</pubDate>
      <link>https://forem.com/dreamlogic/book-synopsis-review-docs-like-code-5g7c</link>
      <guid>https://forem.com/dreamlogic/book-synopsis-review-docs-like-code-5g7c</guid>
      <description>&lt;h2&gt;
  
  
  ABOUT THIS BOOK
&lt;/h2&gt;

&lt;p&gt;This book is meant as a resource for technical writing teams who are using, or are moving toward, a docs-as-code approach. The first edition was published in 2017, and I read the third edition, published in 2022. Anne Gentle (Cisco) and Diane Skwish are co-authors, and Kelly Holcomb (Oracle) is listed as a contributor. Eric Holscher (founder of the ReadTheDocs platform and the WriteTheDocs community &amp;amp; conference) wrote the foreword for this edition.&lt;/p&gt;

&lt;h2&gt;
  
  
  BOOK CONTENTS
&lt;/h2&gt;

&lt;p&gt;At only 127 numbered pages, this book is slim but densely packed with useful information. There is a lot of technical detail, so I don't consider it suitable for anyone brand new to software documentation. Mainly, if you have never used git (a software version control and collaboration system), the many discussions on git pull requests and git branches and such won't make much sense to you. This book is not intended to teach you these concepts. It does, however, provide a list of resources for learning git, and a glossary of git-related terms and definitions.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Docs Like Code&lt;/em&gt; contains four chapters:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Introducing docs as code&lt;/li&gt;
&lt;li&gt;Plan for docs as code&lt;/li&gt;
&lt;li&gt;Optimize workflows with docs as code systems&lt;/li&gt;
&lt;li&gt;Lessons learned with docs as code&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The first chapter defines a docs-as-code framework as one where you:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Store the doc source files in a version control system&lt;/li&gt;
&lt;li&gt;Build the doc artifacts automatically&lt;/li&gt;
&lt;li&gt;Ideally, run automated tests on the docs&lt;/li&gt;
&lt;li&gt;Ensure that a trusted set of reviewers meticulously review the docs&lt;/li&gt;
&lt;li&gt;Publish the artifacts without much human intervention&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The second chapter (&lt;em&gt;Plan for docs as code&lt;/em&gt;) includes sections on:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Requirements gathering&lt;/li&gt;
&lt;li&gt;Planning for automating, testing, and site hosting&lt;/li&gt;
&lt;li&gt;Organizing source files and repositories&lt;/li&gt;
&lt;li&gt;API reference documentation&lt;/li&gt;
&lt;li&gt;and more&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Many topics are covered in these sections, from choosing a markup language (Markdown, AsciiDoc, RST, etc...), to using mermaid diagrams, to determining API complexity, to choosing a static site generator. This book doesn't provide a deep dive into single topic; it provides seasoned advice and enough to get you started.&lt;/p&gt;

&lt;p&gt;The requirements gathering section presents a wide variety of useful questions, such as:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Does the source repository need to be private or can it be publicly available?&lt;/li&gt;
&lt;li&gt;How do users access the docs, and how often from each platform?&lt;/li&gt;
&lt;li&gt;How much [of the budget] should you allocate per author, per deliverable, and for hosting?&lt;/li&gt;
&lt;li&gt;Are you relying on an internal team or a third party to have "pager duty" if the docs site goes down?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If you are a team planning to adopt docs-as-code, this section alone is worth the book as a useful checklist for everything you need to consider.&lt;/p&gt;

&lt;p&gt;The third chapter (&lt;em&gt;Optimize workflows with docs as code systems&lt;/em&gt;) is the thickest of the four. It's also where prior knowledge of how to use git is most necessary, as much of it is concerned with git-based workflows.&lt;/p&gt;

&lt;p&gt;Questions considered in this chapter include:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Are the docs in their own repo?&lt;/li&gt;
&lt;li&gt;How will you publish?&lt;/li&gt;
&lt;li&gt;Will contributors preview docs locally or on a server?&lt;/li&gt;
&lt;li&gt;How will you collaborate with others?&lt;/li&gt;
&lt;li&gt;How many pull requests and reviews do you expect?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This chapter also includes advice on using a CODEOWNERS file, creating a docs contributors guide, writing a style guide, building locally, automation, review processes, versioning, and more. Many useful docs-as-code tools are recommended, such as the prose linter Vale, broken link checkers, Docker, GitHub Actions, Jekyll, and others. &lt;/p&gt;

&lt;p&gt;The final chapter (&lt;em&gt;Lessons learned with docs as code&lt;/em&gt;) is the thinnest - only 9 pages, with a few paragraphs devoted to each of these lessons:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Find your community and learn from others&lt;/li&gt;
&lt;li&gt;Create a great web experience&lt;/li&gt;
&lt;li&gt;Equip your contributors with a style guide&lt;/li&gt;
&lt;li&gt;How will you collaborate with others?&lt;/li&gt;
&lt;li&gt;Empower your contributors&lt;/li&gt;
&lt;li&gt;Write a contributor's guide&lt;/li&gt;
&lt;li&gt;Write a reviewer's guide&lt;/li&gt;
&lt;li&gt;Build in continuous integration for docs&lt;/li&gt;
&lt;li&gt;Teach everyone to respect the docs&lt;/li&gt;
&lt;li&gt;Test and measure outcomes&lt;/li&gt;
&lt;li&gt;Set up a Git support chat room&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  What's not in this book
&lt;/h2&gt;

&lt;p&gt;This book does not contain any information about the use of AI in docs-as-code, aside from mentioning the rise of AI/ML in documentation. &lt;/p&gt;

&lt;p&gt;There is no index, which I found disappointing. Considering the breadth of topics covered, an index would be quite useful.&lt;/p&gt;

&lt;h2&gt;
  
  
  Overall
&lt;/h2&gt;

&lt;p&gt;This book is not a tutorial. It will not teach you how to use docs-as-code. However, it's an extremely useful book that covers countless facets about docs-as-code. Pick it up if you're thinking about switching to docs-as-code or if you want to figure out holes in your existing approach that need to be considered.&lt;/p&gt;

&lt;h2&gt;
  
  
  Learn more about docs-as-code
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://docslikecode.com"&gt;Docs Like Code&lt;/a&gt; (a companion website to the book, with supplementary articles and tutorials)&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.writethedocs.org/guide/docs-as-code/"&gt;Write The Docs - Docs As Code&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://idratherbewriting.com/trends/trends-to-follow-or-forget-docs-as-code.html"&gt;I'd Rather Be Writing - Docs as code&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://idratherbewriting.com/learnapidoc/pubapis_docs_as_code.html"&gt;I'd Rather Be Writing - Docs-as-code tools&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

</description>
    </item>
    <item>
      <title>How to use the multi-blog plugin for Docusaurus</title>
      <dc:creator>minae</dc:creator>
      <pubDate>Tue, 20 Feb 2024 22:01:16 +0000</pubDate>
      <link>https://forem.com/dreamlogic/how-to-use-the-multi-blog-plugin-for-docusaurus-32a2</link>
      <guid>https://forem.com/dreamlogic/how-to-use-the-multi-blog-plugin-for-docusaurus-32a2</guid>
      <description>&lt;h2&gt;
  
  
  Contents
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Why I wrote this&lt;/li&gt;
&lt;li&gt;What's Docusaurus?&lt;/li&gt;
&lt;li&gt;Requirements&lt;/li&gt;
&lt;li&gt;
Instructions

&lt;ul&gt;
&lt;li&gt;Step 1. Create a Docusaurus project.&lt;/li&gt;
&lt;li&gt;Step 2. Open the project in a code editor&lt;/li&gt;
&lt;li&gt;Step 3. Add the second blog's folder and file&lt;/li&gt;
&lt;li&gt;Step 4. Add the multi-blog plugin to docusaurus.config.js&lt;/li&gt;
&lt;li&gt;Step 5. Run the dev server and view your site&lt;/li&gt;
&lt;li&gt;Next steps&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;/ul&gt;

&lt;p&gt; &lt;/p&gt;

&lt;h2&gt;
  
  
  Why I wrote this
&lt;/h2&gt;

&lt;p&gt;Recently, I helped someone who had trouble installing the multi-blog plugin for Docusaurus. The &lt;a href="https://docusaurus.io/docs/blog#multiple-blogs" rel="noopener noreferrer"&gt;instructions on their website&lt;/a&gt; are not clear for non-technical users, and she kept getting a 404 Not Found when trying to access the second blog. This post expands on their instructions with more details and screenshots for less technical users.&lt;/p&gt;

&lt;p&gt; &lt;/p&gt;

&lt;h2&gt;
  
  
  What's Docusaurus?
&lt;/h2&gt;

&lt;p&gt;Docusaurus is a &lt;a href="https://jamstack.org/" rel="noopener noreferrer"&gt;Jamstack&lt;/a&gt; SSG (Static Site Generator) mainly intended for documentation and blog websites. It is a &lt;a href="https://opensource.fb.com/" rel="noopener noreferrer"&gt;Meta Open Source&lt;/a&gt; project. It is configured with a JavaScript file called &lt;code&gt;docusaurus.config.js&lt;/code&gt;. &lt;/p&gt;

&lt;p&gt; &lt;/p&gt;

&lt;h2&gt;
  
  
  Requirements
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Node.js 18 or above installed

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://docs.npmjs.com/downloading-and-installing-node-js-and-npm#using-a-node-version-manager-to-install-nodejs-and-npm" rel="noopener noreferrer"&gt;Instructions for installing Node.js using a version manager&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;Some familiarity with a CLI (Command Line Interface)&lt;/li&gt;

&lt;li&gt;An IDE or code editor

&lt;ul&gt;
&lt;li&gt;I recommend &lt;a href="https://code.visualstudio.com/" rel="noopener noreferrer"&gt;Visual Studio Code&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;/ul&gt;

&lt;p&gt; &lt;/p&gt;

&lt;h2&gt;
  
  
  Instructions
&lt;/h2&gt;

&lt;p&gt; &lt;/p&gt;

&lt;h3&gt;
  
  
  Step 1: Create a Docusaurus project
&lt;/h3&gt;

&lt;p&gt;If you don't already have a Docusaurus project, create one now using the &lt;code&gt;npx&lt;/code&gt; CLI command:&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;

npx create-docusaurus@latest twoblogs classic


&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;&lt;code&gt;npx&lt;/code&gt; is a CLI tool bundled with Node.js that lets you access code packages hosted by the organization called NPM (Node Package Manager). In this case, &lt;code&gt;npx&lt;/code&gt; accesses and runs the &lt;code&gt;create-docusaurus&lt;/code&gt; package with the &lt;code&gt;classic&lt;/code&gt; template. If the command succeeds, it creates a folder on your computer named &lt;code&gt;twoblogs/&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt; &lt;/p&gt;

&lt;h3&gt;
  
  
  Step 2: Open the project in a code editor
&lt;/h3&gt;

&lt;p&gt;Open the newly created project folder in your code editor. If you use VS Code, the following command (run from the same location where you ran the previous command) will open the &lt;code&gt;twoblogs/&lt;/code&gt; folder in VS Code:&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;

code twoblogs


&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;In VS Code, the newly created project's structure looks like this:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fu4lgso0dcv5d5znn3fsu.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fu4lgso0dcv5d5znn3fsu.png" alt="Screenshot from VS Code Explorer panel of the newly created Docusaurus project folder structure"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt; &lt;/p&gt;

&lt;h3&gt;
  
  
  Step 3: Add the second blog's folder and file
&lt;/h3&gt;

&lt;p&gt;In the &lt;code&gt;twoblogs/&lt;/code&gt; folder, create a new folder named &lt;code&gt;blog2/&lt;/code&gt;. In it, create a new file named &lt;code&gt;index.md&lt;/code&gt;. Write the text &lt;code&gt;# Hello World&lt;/code&gt; in &lt;code&gt;index.md&lt;/code&gt;:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fidjgjkh1yy3c4kv7eoqp.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fidjgjkh1yy3c4kv7eoqp.png" alt="Screenshot of VS Code with file index.md containing the text "&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt; &lt;/p&gt;

&lt;h3&gt;
  
  
  Step 4: Add the multi-blog plugin to docusaurus.config.js
&lt;/h3&gt;

&lt;p&gt;Open the file &lt;code&gt;docusaurus.config.js&lt;/code&gt;. The next step is to add a &lt;code&gt;plugins&lt;/code&gt; object as a property of the &lt;code&gt;config&lt;/code&gt; object defined in this file.&lt;/p&gt;

&lt;p&gt;Scroll down until you see the &lt;code&gt;themeConfig&lt;/code&gt; object:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fu12e67jv4b11tixt609z.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fu12e67jv4b11tixt609z.png" alt="Screenshot of docusaurus.config.js showing the themeConfig object"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Above it, add the following code:&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;

  &lt;span class="nx"&gt;plugins&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;
    &lt;span class="p"&gt;[&lt;/span&gt;
      &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;@docusaurus/plugin-content-blog&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
      &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="na"&gt;id&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;blog2&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="na"&gt;routeBasePath&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;blog2&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="na"&gt;path&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;./blog2&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
      &lt;span class="p"&gt;},&lt;/span&gt;
    &lt;span class="p"&gt;],&lt;/span&gt;
  &lt;span class="p"&gt;],&lt;/span&gt;


&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;The file should now look like this:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F83z6iojuhvaf44r1d96p.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F83z6iojuhvaf44r1d96p.png" alt="Screenshot of docusaurus.config.js showing the plugins object added above the themeConfig object"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt; &lt;/p&gt;

&lt;h3&gt;
  
  
  Step 5: Run the dev server and view your site
&lt;/h3&gt;

&lt;p&gt;Open a CLI shell to the &lt;code&gt;twoblogs/&lt;/code&gt; folder. In VS Code, you can do this by going to the &lt;strong&gt;Terminal&lt;/strong&gt; menu across the top and choosing &lt;strong&gt;New Terminal&lt;/strong&gt;. (Or use a keyboard shortcut: &lt;code&gt;Ctrl&lt;/code&gt;+&lt;code&gt;j&lt;/code&gt; for Windows, or &lt;code&gt;Cmd&lt;/code&gt;+&lt;code&gt;j&lt;/code&gt; for macOS.)&lt;/p&gt;

&lt;p&gt;Enter the following command in your CLI shell:&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;

npm run start


&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;Expected output:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fpjpzfrp2bma37twkgusu.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fpjpzfrp2bma37twkgusu.png" alt="Screenshot of terminal output from running " start=""&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Ignore the yellow warning about git. For a production site, you would want to add a git repository as the warning indicates, but it is not necessary for this quick tutorial. Your only concern for now is to make sure you see the final line that says &lt;strong&gt;"compiled successfully"&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Your default browser should open automatically to &lt;code&gt;http://localhost:3000/&lt;/code&gt;. Add &lt;code&gt;blog2&lt;/code&gt; to the end of the URL and you should see your second blog's &lt;code&gt;index.md&lt;/code&gt; page displayed:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F0nbadpcgipa3j5ayx46p.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F0nbadpcgipa3j5ayx46p.png" alt="Screenshot of browser open to blog2 index.md of classic Docusaurus site"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;That's it! If you can see your Hello World message, your multi-blog plugin is working. &lt;/p&gt;

&lt;p&gt; &lt;/p&gt;

&lt;h3&gt;
  
  
  What's next?
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Learn how to &lt;a href="https://docusaurus.io/docs/deployment#choosing-a-hosting-provider" rel="noopener noreferrer"&gt;deploy your site&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Learn more about &lt;a href="https://docusaurus.io/docs" rel="noopener noreferrer"&gt;Docusaurus&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Learn more about &lt;a href="https://docusaurus.io/docs/blog" rel="noopener noreferrer"&gt;Docusaurus blogs&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Join the &lt;a href="https://discord.com/invite/docusaurus" rel="noopener noreferrer"&gt;Docusaurus community on Discord&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>docusaurus</category>
      <category>plugin</category>
      <category>tutorial</category>
      <category>blog</category>
    </item>
    <item>
      <title>Test Driving OpenAPI Documentation Generators (2024) - Part 3 of 3</title>
      <dc:creator>minae</dc:creator>
      <pubDate>Wed, 07 Feb 2024 08:21:58 +0000</pubDate>
      <link>https://forem.com/dreamlogic/test-driving-openapi-documentation-generators-2024-part-3-of-3-316n</link>
      <guid>https://forem.com/dreamlogic/test-driving-openapi-documentation-generators-2024-part-3-of-3-316n</guid>
      <description>&lt;p&gt;We're in the home stretch! &lt;/p&gt;

&lt;p&gt;This is Part 3 of a series. To understand the scope and purpose of this series, I recommend that you check out at least the &lt;a href="https://dev.to/dreamlogic/test-driving-openapi-documentation-generators-2024-part-1-of-3-9a7#introduction"&gt;first article's Introduction&lt;/a&gt; before you begin this article.&lt;/p&gt;




&lt;h2&gt;
  
  
  Contents
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
Preliminaries

&lt;ul&gt;
&lt;li&gt;What are we test driving ❓&lt;/li&gt;
&lt;li&gt;What should I know about them first ❓&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;li&gt;
The test drives

&lt;ul&gt;
&lt;li&gt;Requirements for all test drives&lt;/li&gt;
&lt;li&gt;
Swagger

&lt;ul&gt;
&lt;li&gt;
SwaggerUI

&lt;ul&gt;
&lt;li&gt;Additional requirements for SwaggerUI&lt;/li&gt;
&lt;li&gt;Instructions&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;li&gt;
SwaggerHub

&lt;ul&gt;
&lt;li&gt;Instructions&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
Stoplight

&lt;ul&gt;
&lt;li&gt;Additional requirements for Stoplight&lt;/li&gt;
&lt;li&gt;Instructions&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;li&gt;
Postman

&lt;ul&gt;
&lt;li&gt;Instructions&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Conclusion&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Preliminaries
&lt;/h2&gt;

&lt;p&gt; &lt;br&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  What are we test driving ❓
&lt;/h3&gt;

&lt;p&gt;We're finishing up our test drives of ten OpenAPI documentation generators by taking &lt;a href="https://swagger.io/"&gt;Swagger&lt;/a&gt; (started in 2011), &lt;a href="https://www.postman.com/"&gt;Postman&lt;/a&gt; (2014), and &lt;a href="https://stoplight.io/"&gt;Stoplight&lt;/a&gt; (2015) for a spin.&lt;/p&gt;

&lt;p&gt;Taking the 'learn-by-doing' approach, we'll give ourselves a quick-and-dirty introduction to each of these products by taking an OpenAPI Description file (a JSON or YAML/YML file formatted using the &lt;a href="https://www.openapis.org/what-is-openapi"&gt;OpenAPI Specification&lt;/a&gt;) and taking the most direct route to generate API reference documentation with it.&lt;/p&gt;




&lt;p&gt; &lt;br&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  What should I know about them first ❓
&lt;/h3&gt;

&lt;p&gt;Like the four OpenAPI documentation generators in &lt;a href="https://dev.to/dreamlogic/test-driving-openapi-documentation-generators-2024-part-2-of-3-id2#what-are-we-test-driving-question"&gt;Part 2&lt;/a&gt;, these are all Software as a Service (SaaS) products, meaning they are subscription-based cloud services. Each has a free tier that allows you to publish public-facing documentation, with limitations. &lt;/p&gt;

&lt;p&gt;The three in this round offer documentation generation as a part of a suite of tools for the entire API lifecycle, from design to testing to deployment and more. If you choose to use one of these for documenting your APIs, then you might want to adopt their entire suite. However, since documentation generation is only a small part of each of these companies' products, you might find that there is less focus on that aspect. In my experience, I found this to especially be true for &lt;strong&gt;Postman&lt;/strong&gt;. Thus, some might choose to use a specialized tool for documentation only, such as those we saw in Parts 1 &amp;amp; 2 of this series, and use Swagger, Stoplight, or Postman for the other aspects of the API lifecycle.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Swagger&lt;/strong&gt; has a special history with the OpenAPI Specification (OAS) because, well, they originated it. It was called the Swagger specification until they handed it over to the Linux Foundation, who renamed it and created the &lt;a href="https://www.openapis.org/"&gt;OpenAPI Initiative&lt;/a&gt; to maintain it. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Stoplight&lt;/strong&gt; (a.k.a. Stoplight Platform) also maintains the free, open-source &lt;strong&gt;Stoplight Elements&lt;/strong&gt; documentation generator that I test-drove in &lt;a href="https://dev.to/dreamlogic/test-driving-openapi-documentation-generators-2024-part-1-of-3-9a7"&gt;Part 1&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Both Swagger and Stoplight belong to a parent company called &lt;a href="https://smartbear.com/"&gt;SmartBear&lt;/a&gt;. Swagger was acquired by SmartBear in 2015, and Stoplight only recently in 2023. Since their products have a ton of overlap, Stoplight's acquisition might signal changes to come to it, Swagger, or both.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Postman&lt;/strong&gt; and &lt;strong&gt;SmartBear&lt;/strong&gt; are both &lt;a href="https://www.openapis.org/membership/members"&gt;official members of the OpenAPI Initiative&lt;/a&gt;. &lt;strong&gt;Stoplight&lt;/strong&gt;'s CTO and &lt;strong&gt;Postman&lt;/strong&gt;'s OAS Lead are both &lt;a href="https://github.com/OAI/OpenAPI-Specification/blob/main/MAINTAINERS.md"&gt;active maintainers&lt;/a&gt; of the OpenAPI Initiative. &lt;/p&gt;




&lt;p&gt; &lt;br&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  The test drives
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Requirements for all test drives
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;An OAD (OpenAPI Description) file, meaning a JSON or YAML/YML file that describes an API using the OpenAPI Specification format. Use your own or download my sample file, &lt;a href="https://github.com/minaelee/tasksapi/blob/main/tasksapi.yml"&gt;tasksapi.yml&lt;/a&gt; (right-click the link and choose &lt;em&gt;Save link as&lt;/em&gt;). &lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Swagger
&lt;/h3&gt;

&lt;p&gt;
  
  &lt;p&gt;Swagger offers two ways to generate publicly accessible documentation from OpenAPI. I'll test drive both approaches. &lt;/p&gt;

&lt;p&gt;1) You can use &lt;strong&gt;&lt;a href="https://swagger.io/tools/swagger-ui/"&gt;SwaggerUI&lt;/a&gt;&lt;/strong&gt; to generate documentation that you can host wherever you wish, just like the three documentation generators I test-drove in &lt;a href="https://dev.to/dreamlogic/test-driving-openapi-documentation-generators-2024-part-1-of-3-9a7"&gt;Part 1&lt;/a&gt;. Instructions for using SwaggerUI.&lt;/p&gt;

&lt;p&gt;2) You can use their SaaS product called &lt;strong&gt;&lt;a href="https://swagger.io/tools/swaggerhub"&gt;SwaggerHub&lt;/a&gt;&lt;/strong&gt;. Instructions for using SwaggerHub.&lt;/p&gt;

&lt;p&gt; &lt;br&gt;&lt;/p&gt;
&lt;h4&gt;
  
  
  SwaggerUI
&lt;/h4&gt;
&lt;h5&gt;
  
  
  Additional requirements for SwaggerUI
&lt;/h5&gt;

&lt;ul&gt;
&lt;li&gt;A code editor, such as &lt;a href="https://code.visualstudio.com/"&gt;Visual Studio Code&lt;/a&gt; &lt;/li&gt;
&lt;li&gt;A way to &lt;a href="https://dev.to/dreamlogic/test-driving-openapi-documentation-generators-2024-part-1-of-3-9a7#how-to-open-a-development-http-server"&gt;run a development HTTP server&lt;/a&gt; on your local computer&lt;/li&gt;
&lt;li&gt;Familiarity with using a CLI shell such as bash or zsh (I recommend Git Bash on Windows and the Terminal app on macOS)&lt;/li&gt;
&lt;/ul&gt;
&lt;h5&gt;
  
  
  Instructions
&lt;/h5&gt;

&lt;p&gt;&lt;strong&gt;Step 1.&lt;/strong&gt; From this page, &lt;a href="https://github.com/swagger-api/swagger-ui/blob/master/docs/usage/installation.md#plain-old-htmlcssjs-standalone"&gt;download and extract their standalone zip or tarball of HTML/CSS/JS files&lt;/a&gt;.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;If you prefer to use NPM or Docker to install the necessary files, scroll up on that same page for instructions.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Step 2.&lt;/strong&gt; Use your code editor to open the file named &lt;code&gt;swagger-initializer.js&lt;/code&gt; in the extracted &lt;code&gt;dist/&lt;/code&gt; folder. In it, provide the path or URL to your OpenAPI file. For example, if you are using my &lt;code&gt;tasksapi.yml&lt;/code&gt; file, copy that file to the &lt;code&gt;dist/&lt;/code&gt; folder, then use this path for the &lt;code&gt;url&lt;/code&gt; property in &lt;code&gt;swagger-initializer.js&lt;/code&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;  &lt;span class="nb"&gt;window&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;ui&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;SwaggerUIBundle&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt;
    &lt;span class="na"&gt;url&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;./tasksapi.yml&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Step 3.&lt;/strong&gt; Run your local development server from the &lt;code&gt;dist/&lt;/code&gt; folder. If you are using Visual Studio Code with the Live Server extension, right-click the &lt;code&gt;index.html&lt;/code&gt; file in the &lt;code&gt;dist/&lt;/code&gt; folder and choose &lt;strong&gt;Open with Live Server&lt;/strong&gt;. Your generated documentation should display in your default browser, as shown in this screenshot:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F5qu13row5sq25gd0hntz.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F5qu13row5sq25gd0hntz.png" alt="Screenshot of documentation generated from OpenAPI using SwaggerUI" width="800" height="674"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 4 (Optional).&lt;/strong&gt; For deployment, see &lt;a href="https://dev.to/dreamlogic/test-driving-openapi-documentation-generators-2024-part-1-of-3-9a7#part-2-make-your-docs-viewable-online"&gt;the deployment section from Part 1 of this article series&lt;/a&gt;. Use the same instructions, but upload the &lt;code&gt;dist/&lt;/code&gt; folder to Netlify.&lt;/p&gt;

&lt;p&gt; &lt;br&gt;&lt;/p&gt;

&lt;h4&gt;
  
  
  SwaggerHub
&lt;/h4&gt;

&lt;h5&gt;
  
  
  Instructions
&lt;/h5&gt;

&lt;p&gt;&lt;strong&gt;Step 1.&lt;/strong&gt; Create an account at &lt;a href="https://swagger.io/tools/swaggerhub/"&gt;SwaggerHub&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 2.&lt;/strong&gt; From the dashboard, click &lt;strong&gt;Import API&lt;/strong&gt;.&lt;br&gt;
&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fndasoo7s3265aii5frrw.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fndasoo7s3265aii5frrw.png" alt="Screenshot of Import API popup dialog in SwaggerHub" width="318" height="359"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 3.&lt;/strong&gt; In the dialog that appears, enter the path/URL to your OpenAPI Description file. Set its visibility to &lt;strong&gt;Public&lt;/strong&gt;. Click &lt;strong&gt;Import&lt;/strong&gt; or &lt;strong&gt;Upload File&lt;/strong&gt;. (The option will vary depending on whether you chose a local file or a URL.)&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 4.&lt;/strong&gt; SwaggerHub will check your OAD to make sure that it is valid according to the OpenAPI Specification. You should see a message that says &lt;strong&gt;Success&lt;/strong&gt;. If there are any errors, fix them and try again. You will have a chance to set the name and version. You can leave these at their defaults for this test drive. Click &lt;strong&gt;Import Definition&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 5.&lt;/strong&gt; You should see a page with your OAD file contents along with generated documentation to the right. You can share the URL of this page with others. If you need to update your OAD, you can do so from this page. You can also share a page of just the documentation without the OAD. To do this, look for a button with a file icon on the upper right that, when hovered over, shows the text &lt;strong&gt;View Documentation&lt;/strong&gt;:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fe907d1g88brocsx6vo7v.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fe907d1g88brocsx6vo7v.png" alt="Screenshot of View Documentation button" width="385" height="90"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Click that button to see your publicly viewable online documentation without the OAD shown next to it. You can share this URL with others as well.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://app.swaggerhub.com/apis-docs/MINAELEE/to-do_list/1.0.0"&gt;View the example online.&lt;/a&gt;&lt;/p&gt;





 &lt;/p&gt;
&lt;h3&gt;
  
  
  Stoplight
&lt;/h3&gt;

&lt;p&gt;
  
  &lt;h4&gt;
  
  
  Additional requirements for Stoplight
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;A &lt;a href="https://github.com/"&gt;GitHub&lt;/a&gt; account&lt;/li&gt;
&lt;/ul&gt;
&lt;h4&gt;
  
  
  Instructions
&lt;/h4&gt;

&lt;p&gt;&lt;strong&gt;Step 1.&lt;/strong&gt; Create a new account at &lt;a href="https://stoplight.io"&gt;Stoplight.io&lt;/a&gt;. When directed, choose GitHub to connect and authorize Stoplight to use GitHub. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 2.&lt;/strong&gt; From the left sidebar, click &lt;strong&gt;Start New Project&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 3.&lt;/strong&gt; Click the link to &lt;strong&gt;Import OpenAPI File&lt;/strong&gt;:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F5ne7djlflbtbvvlm7wml.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F5ne7djlflbtbvvlm7wml.png" alt="Screenshot of link to Import OpenAPI File" width="193" height="112"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 4.&lt;/strong&gt; In the center panel, enter a name for your project (such as "Tasks API"), then click &lt;strong&gt;Create Project &amp;amp; Import File&lt;/strong&gt;:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F0ion3h5me6z6j32lrusj.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F0ion3h5me6z6j32lrusj.png" alt="Screenshot of panel to enter project name and create project/import file" width="533" height="300"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 5.&lt;/strong&gt; Once the project is created, click the button to import an existing OpenAPI file:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F7gz5txgwsw13ib5t61bl.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F7gz5txgwsw13ib5t61bl.png" alt="Screenshot of OpenAPI button to import an existing OpenAPI file" width="528" height="120"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 6.&lt;/strong&gt; When the OpenAPI file import is completed, you should see the filename on the left side, as shown below. Click the green &lt;strong&gt;Publish&lt;/strong&gt; button above it.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fp4hwtzrrpmmz59e908ep.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fp4hwtzrrpmmz59e908ep.png" alt="Screenshot showing completed OpenAPI file upload and the Publish button above it" width="353" height="139"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;When the project is published, you'll see a dialog titled &lt;strong&gt;Share Project: Tasks API&lt;/strong&gt;. Hit the &lt;strong&gt;X&lt;/strong&gt; on its upper right to exit this dialog.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 7.&lt;/strong&gt; Click the &lt;strong&gt;Go to Docs&lt;/strong&gt; button on the upper left.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F6r4d8tg6qwiob4z9bw18.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F6r4d8tg6qwiob4z9bw18.png" alt="Screenshot of Go to Docs button" width="333" height="129"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;You should now see the publicly accessible documentation generated by Stoplight from your OAD, as in the example shown below. You can share the URL of this page with others.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fqu95r78f6t7fphi10aa6.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fqu95r78f6t7fphi10aa6.png" alt="Screenshot of documentation generated by Stoplight from OAD" width="800" height="499"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Like SwaggerHub, Stoplight lets you edit your OAD from its web portal. Return to the previous page you saw in Step 6, then click the OpenAPI filename (such as &lt;strong&gt;tasksapi.yml&lt;/strong&gt;). You will then see options to edit any part of the OAD, as shown below:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F8ypyz72qjzcfpwhv3un3.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F8ypyz72qjzcfpwhv3un3.png" alt="Screenshot of OAD web editor built into Stoplight portal" width="800" height="424"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://minae.stoplight.io/docs/tasks-api/branches/main/6qoq1etkin55k-tasks-tracking-app"&gt;View the example online.&lt;/a&gt;&lt;/p&gt;





&lt;/p&gt;

&lt;h3&gt;
  
  
  Postman
&lt;/h3&gt;

&lt;p&gt;
  
  &lt;h4&gt;
  
  
  Instructions
&lt;/h4&gt;

&lt;p&gt;&lt;strong&gt;Step 1.&lt;/strong&gt; Create an account at &lt;a href="https://postman.com"&gt;Postman.com&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 2.&lt;/strong&gt; From your dashboard, click the link for &lt;strong&gt;API documentation&lt;/strong&gt;:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fjk1iswp9sd7kpwu1k12j.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fjk1iswp9sd7kpwu1k12j.png" alt="Screenshot of API documentation button" width="273" height="214"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 3.&lt;/strong&gt; In the next screen, click the &lt;strong&gt;APIs&lt;/strong&gt; button on the left, then click the &lt;strong&gt;Import&lt;/strong&gt; button:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F2z0fk8oqv17ozoe0paoa.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F2z0fk8oqv17ozoe0paoa.png" alt="Screenshot of APIs and Import buttons" width="372" height="367"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 4.&lt;/strong&gt; Select your OAD file or enter a URL to an online OAD. You will be asked to choose how to import your API. Choose OpenAPI with a Postman Collection:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F5ppfotiy3wmeivvf2fwk.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F5ppfotiy3wmeivvf2fwk.png" alt="Screenshot of dialog that requests you to choose how to import your API" width="310" height="119"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Then click the &lt;strong&gt;Import&lt;/strong&gt; button. You will see your API's title (as defined in the OAD file) appear in your Postman Workspace:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fc078na4lmh6chmzicqzc.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fc078na4lmh6chmzicqzc.png" alt="Screenshot of API title in Postman" width="378" height="177"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Expand it to see testing and editing options. Like SwaggerHub and Stoplight, Postman allows you to edit/update your OAD from their web editor:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fkwkxyfugz525x5hj1ea4.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fkwkxyfugz525x5hj1ea4.png" alt="Screenshot of API Definition editor in Postman" width="800" height="302"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 5.&lt;/strong&gt; Click the &lt;strong&gt;Collections&lt;/strong&gt; button on the left to see a collection created from your OAD. With it selected, click the link to &lt;strong&gt;View complete documentation&lt;/strong&gt;:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F6uc3dxop6rrwiap7cr4s.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F6uc3dxop6rrwiap7cr4s.png" alt="Screenshot of link to view complete documentation for a collection" width="800" height="433"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 6&lt;/strong&gt;. In the next page, click the &lt;strong&gt;Publish&lt;/strong&gt; button on the upper right:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F13l4otr60wx5oud5yu36.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F13l4otr60wx5oud5yu36.png" alt="Image description" width="668" height="116"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 7&lt;/strong&gt;. You will be presented with a page of customization options. At the bottom of the page, click &lt;strong&gt;Publish&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 8.&lt;/strong&gt; You will be shown a link to the published documentation. Click it to view your publicly viewable docs generated from OpenAPI. You can share this URL with others. &lt;/p&gt;

&lt;p&gt;Example:&lt;br&gt;
&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F2n8g8uydlhel6osg7e3y.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F2n8g8uydlhel6osg7e3y.png" alt="Screenshot of example documentation generated by Postman from OpenAPI" width="800" height="473"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://documenter.getpostman.com/view/4965758/2s9Yyy7yEw"&gt;View the example online.&lt;/a&gt;&lt;/p&gt;



&lt;/p&gt;




&lt;p&gt; &lt;br&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;Let's recap.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Part 1:&lt;/strong&gt; &lt;strong&gt;Redoc&lt;/strong&gt;, &lt;strong&gt;Spotlight Elements&lt;/strong&gt;, and &lt;strong&gt;Rapidoc&lt;/strong&gt; are free, open-source products that use custom HTML elements/Web Components to generate documentation webpages from OpenAPI Description files, which you are then responsible for serving online so that others can view it.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Part 2:&lt;/strong&gt; &lt;strong&gt;GitBook&lt;/strong&gt;, &lt;strong&gt;ReadMe&lt;/strong&gt;, &lt;strong&gt;Mintlify&lt;/strong&gt;, and &lt;strong&gt;Fern&lt;/strong&gt; are Software as a Service (SaaS) products that focus on software documentation. That means not only API reference documentation but other documentation as well, such as tutorials and guides. They can all generate API references from OpenAPI out of the box, and they all provide non-expiring free tiers with publicly viewable documentation. None of these give you the option to generate documentation on your own computer for self-hosting.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Part 3:&lt;/strong&gt; &lt;strong&gt;Swagger&lt;/strong&gt;, &lt;strong&gt;Stoplight&lt;/strong&gt;, and &lt;strong&gt;Postman&lt;/strong&gt; are full SaaS suites for the entire API lifecycle, from design to development to testing to documentation and so on. They can all generate API documentation from OpenAPI out of the box, and they all provide non-expiring free tiers with publicly viewable documentation. Swagger's free SwaggerUI product can be used to generate local documentation files that you can self-host, but its SaaS product, SwaggerHub, does not generate local documentation, and neither do Stoplight nor Postman.&lt;/p&gt;

&lt;p&gt;And we're done! -cue brakes-squealing noises-&lt;/p&gt;

&lt;p&gt;Thanks for coming along with me in test-driving these ten OpenAPI documentation generators. I learned a lot about what's available out there to address this need, and I hope you did as well.&lt;/p&gt;

</description>
      <category>openapi</category>
      <category>saas</category>
      <category>documentation</category>
      <category>tooling</category>
    </item>
    <item>
      <title>Test Driving OpenAPI Documentation Generators (2024) - Part 2 of 3</title>
      <dc:creator>minae</dc:creator>
      <pubDate>Mon, 22 Jan 2024 05:37:44 +0000</pubDate>
      <link>https://forem.com/dreamlogic/test-driving-openapi-documentation-generators-2024-part-2-of-3-id2</link>
      <guid>https://forem.com/dreamlogic/test-driving-openapi-documentation-generators-2024-part-2-of-3-id2</guid>
      <description>&lt;p&gt;In this article series, you will find a collection of introductions and quick-start tutorials for ten free and freemium OpenAPI documentation generators that create documentation webpages from OpenAPI Descriptions (OADs).&lt;/p&gt;

&lt;p&gt;Ready for another round of test drives? &lt;br&gt;
If you didn't catch the &lt;a href="https://dev.to/dreamlogic/test-driving-openapi-documentation-generators-2024-part-1-of-3-9a7"&gt;first article&lt;/a&gt; in this series, check out at least its &lt;a href="https://dev.to/dreamlogic/test-driving-openapi-documentation-generators-2024-part-1-of-3-9a7#introduction"&gt;Introduction&lt;/a&gt; to get up to speed. Pun intended.&lt;/p&gt;


&lt;h2&gt;
  
  
  Contents
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
Preliminaries

&lt;ul&gt;
&lt;li&gt;What are we test driving ❓&lt;/li&gt;
&lt;li&gt;What should I know about them first ❓&lt;/li&gt;
&lt;li&gt;Requirements for all four test drives&lt;/li&gt;
&lt;li&gt;
Mintlify and Fern requirements
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
The test drives

&lt;ul&gt;
&lt;li&gt;GitBook&lt;/li&gt;
&lt;li&gt;ReadMe&lt;/li&gt;
&lt;li&gt;Mintlify&lt;/li&gt;
&lt;li&gt;Fern&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Coming up&lt;/li&gt;
&lt;/ul&gt;


&lt;h2&gt;
  
  
  Preliminaries
&lt;/h2&gt;

&lt;p&gt; &lt;br&gt;&lt;/p&gt;
&lt;h3&gt;
  
  
  What are we test driving ❓
&lt;/h3&gt;

&lt;p&gt;This round, we're taking &lt;a href="https://gitbook.com" rel="noopener noreferrer"&gt;GitBook&lt;/a&gt; (started in 2014), &lt;a href="https://readme.com" rel="noopener noreferrer"&gt;ReadMe&lt;/a&gt; (2014), &lt;a href="https://mintlify.com" rel="noopener noreferrer"&gt;Mintlify&lt;/a&gt; (2021), and &lt;a href="https://buildwithfern.com" rel="noopener noreferrer"&gt;Fern&lt;/a&gt; (2022) for a spin. &lt;/p&gt;


&lt;h3&gt;
  
  
  What should I know about them first ❓
&lt;/h3&gt;

&lt;p&gt;The three options that I test drove in the &lt;a href="https://dev.to/dreamlogic/test-driving-openapi-documentation-generators-2024-part-1-of-3-9a7"&gt;previous round&lt;/a&gt; (Rapidoc, Redoc, and Spotlight Elements) were single-purpose tools to generate self-hosted API reference documentation from &lt;strong&gt;OpenAPI Descriptions (OADs)&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;The four in this round are &lt;strong&gt;Software as a Service (SaaS)&lt;/strong&gt; products. That means they are &lt;strong&gt;subscription-based cloud services&lt;/strong&gt; and cannot be self-hosted. All four can be used to create not only API references but other types of documentation, such as tutorials and guides. All four provide a non-expiring free tier that allows you to generate public-facing documentation on their servers. Each offers a different feature set from the others, with overlap. &lt;/p&gt;

&lt;p&gt;For example, &lt;strong&gt;GitBook&lt;/strong&gt; can publish documentation as ebooks. &lt;strong&gt;ReadMe&lt;/strong&gt; comes with native discussion forums. GitBook, ReadMe, and &lt;strong&gt;Mintlify&lt;/strong&gt; all have built-in WYSIWYG editors for creating and modifying documentation online, whereas Fern does not. &lt;strong&gt;Fern&lt;/strong&gt; distinguishes itself by providing auto-generation of client libraries from API definitions. They all support using &lt;strong&gt;Markdown&lt;/strong&gt; to create docs pages.&lt;/p&gt;

&lt;p&gt;There are many other features offered by these products, including analytics, AI integrations, collaboration support, automated deployment, and more. A full features comparison is out of the scope of this article, but you can explore the pricing and features for each yourself:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.gitbook.com/pricing" rel="noopener noreferrer"&gt;GitBook pricing page&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://readme.com/pricing" rel="noopener noreferrer"&gt;ReadMe pricing page&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://mintlify.com/pricing" rel="noopener noreferrer"&gt;Mintlify pricing page&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://buildwithfern.com/pricing" rel="noopener noreferrer"&gt;Fern pricing page&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;


&lt;h3&gt;
  
  
  Requirements for all four test drives
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Download and use my sample OAD file, &lt;a href="https://github.com/minaelee/tasksapi/blob/main/tasksapi.yml" rel="noopener noreferrer"&gt;tasksapi.yml&lt;/a&gt; (right click and &lt;em&gt;Save link as&lt;/em&gt;).&lt;/li&gt;
&lt;/ul&gt;

&lt;blockquote&gt;
&lt;p&gt;Note: In this round, for simplicity's sake, I will only provide instructions for using this file. You can use a different OAD file or the URL to an OAD online if you wish, but you will have to adapt my instructions for yourself. Feel free to message me if you need help!&lt;/p&gt;
&lt;/blockquote&gt;


&lt;h3&gt;
  
  
  Mintlify and Fern requirements
&lt;/h3&gt;

&lt;p&gt;While all the products tested in this round embrace the &lt;a href="https://www.writethedocs.org/guide/docs-as-code/" rel="noopener noreferrer"&gt;docs-as-code&lt;/a&gt; paradigm, &lt;strong&gt;Mintlify&lt;/strong&gt; and &lt;strong&gt;Fern&lt;/strong&gt; particularly were designed around that mindset and accordingly, both require that you have some familiarity with docs-as-code tools (in other words, dev tools) to get started. You will need:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Git&lt;/strong&gt; installed locally on your computer. See: &lt;a href="https://git-scm.com/book/en/v2/Getting-Started-Installing-Git" rel="noopener noreferrer"&gt;Installing Git&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;A &lt;a href="https://github.com" rel="noopener noreferrer"&gt;GitHub&lt;/a&gt; account.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Node.js&lt;/strong&gt; version 19 or higher installed locally on your computer. Fern currently requires v18 and Mintlify requires v19, so if you only want to test drive Fern and not Mintlify, then v18 is fine. If you don't already have Node.js installed, I recommend using &lt;a href="https://github.com/nvm-sh/nvm?tab=readme-ov-file#installing-and-updating" rel="noopener noreferrer"&gt;nvm&lt;/a&gt; (for macOS) or &lt;a href="https://github.com/coreybutler/nvm-windows?tab=readme-ov-file#installation--upgrades" rel="noopener noreferrer"&gt;nvm-windows&lt;/a&gt; (for Windows) to install it. Installing Node.js will give you access to the command line tools &lt;a href="https://docs.npmjs.com/cli/v10/commands/npm" rel="noopener noreferrer"&gt;npm&lt;/a&gt; and &lt;a href="https://docs.npmjs.com/cli/v10/commands/npx" rel="noopener noreferrer"&gt;npx&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;An &lt;strong&gt;IDE or code editor&lt;/strong&gt;. I recommend &lt;a href="https://code.visualstudio.com/" rel="noopener noreferrer"&gt;Visual Studio Code&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Familiarity with using a &lt;strong&gt;CLI (command line interface)&lt;/strong&gt; for a shell such as bash or zsh. In macOS, you can use the built-in &lt;strong&gt;Terminal&lt;/strong&gt; app, which uses zsh by default. On Windows, I recommend using &lt;strong&gt;Git Bash&lt;/strong&gt;, which is installed by default with Git; type &lt;em&gt;git bash&lt;/em&gt; into the Windows search bar to locate and open it.&lt;/li&gt;
&lt;/ul&gt;



&lt;p&gt; &lt;br&gt;&lt;/p&gt;
&lt;h2&gt;
  
  
  The test drives
&lt;/h2&gt;
&lt;h3&gt;
  
  
  GitBook
&lt;/h3&gt;

&lt;p&gt;
  
  &lt;br&gt;
&lt;a href="https://gitbook.com" rel="noopener noreferrer"&gt;GitBook&lt;/a&gt; and ReadMe both launched in 2014, which makes them venerable elders in the niche of API documentation tools. GitBook offers two main products: an internal knowledge base and public documentation. We'll explore just the public documentation side.

&lt;p&gt;GitBook allows you to use a custom domain even on the free tier. It also provides a forever-free 'OSS Community' plan for open-source software projects. There's no 'try it' console, but it's said to be on the roadmap. They have &lt;a href="https://github.com/GitbookIO/community" rel="noopener noreferrer"&gt;a community forum&lt;/a&gt;; of the four products in this round, GitBook is the only one without a Slack workspace or Discord server.&lt;/p&gt;


&lt;h4&gt;
  
  
  Instructions
&lt;/h4&gt;

&lt;p&gt;&lt;strong&gt;Step 1.&lt;/strong&gt; Create an account at &lt;a href="https://app.gitbook.com" rel="noopener noreferrer"&gt;GitBook's website&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 2.&lt;/strong&gt; You will be asked to &lt;strong&gt;Create a New Organization&lt;/strong&gt;. Choose a name for your organization (the default is fine; you can change the name later). In the &lt;strong&gt;use case&lt;/strong&gt; drop down, select &lt;strong&gt;Open Source Docs&lt;/strong&gt; or &lt;strong&gt;Product Docs&lt;/strong&gt;. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 3.&lt;/strong&gt; At your account's homepage, if you have just created your account, you should see &lt;strong&gt;Untitled&lt;/strong&gt; at the top of the main panel, with a &lt;strong&gt;Page&lt;/strong&gt; beneath it. If not, click the &lt;strong&gt;+&lt;/strong&gt; sign next to the word &lt;strong&gt;Documents&lt;/strong&gt; in the left sidebar and choose &lt;strong&gt;New space&lt;/strong&gt;. Change the text &lt;strong&gt;Untitled&lt;/strong&gt; to &lt;strong&gt;Tasks&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;In the &lt;strong&gt;Page&lt;/strong&gt;, click &lt;strong&gt;Import content&lt;/strong&gt;. Choose &lt;strong&gt;OpenAPI&lt;/strong&gt; from the &lt;strong&gt;Import Your Content&lt;/strong&gt; dialog. Select the &lt;code&gt;tasksapi.yml&lt;/code&gt; file provided in the General requirements section of this article, then click &lt;strong&gt;Start import&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 4.&lt;/strong&gt; Once the import is complete, look for the new &lt;strong&gt;API reference&lt;/strong&gt; link on the left. You should now be able to view the imported descriptions as &lt;a href="https://docs.gitbook.com/content-editor/blocks/openapi" rel="noopener noreferrer"&gt;OpenAPI blocks&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 5.&lt;/strong&gt; To make this API reference available to the public, click the &lt;strong&gt;Share&lt;/strong&gt; button at the top right of the page, then from the left panel of the dialog that appears, choose &lt;strong&gt;Publish to the web&lt;/strong&gt;. Click the toggle button next to &lt;strong&gt;Publish this space to the web&lt;/strong&gt;. You should then see a success message and a link to view your documentation online, plus customization and domain options. Click &lt;strong&gt;Visit site&lt;/strong&gt; to see your documentation.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 6 (optional).&lt;/strong&gt; To update the documentation you've published, make a change to one of the endpoint descriptions in &lt;code&gt;tasksapi.yml&lt;/code&gt;. Then go to any one of the API method blocks that were imported; it doesn't matter which one. Click the six-dot icon at the upper left of the block:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F28i0hb5dfqy9qe0av09z.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F28i0hb5dfqy9qe0av09z.png" alt="Screenshot of the context menu that appears when you click the six-dot icon described above"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;From the context menu, click &lt;strong&gt;Choose OpenAPI source...&lt;/strong&gt; A right sidebar titled &lt;strong&gt;Choose OpenAPI source&lt;/strong&gt; will appear. From it, click the three-dots menu next to &lt;code&gt;tasksapi.yml&lt;/code&gt;, choose &lt;strong&gt;Replace&lt;/strong&gt;, then choose your updated file. It should update all the OpenAPI blocks in your documentation that depend on the same source. Confirm that the change you made to the OAD file is reflected in the updated documentation.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Note: While I was writing this article, I found that GitBook's OpenAPI implementation was frequently changing. Menu options changed, bugs appeared and vanished and reappeared, and so on. It seems like it's under active development, so the instructions given here might become affected by further changes. If you find that my instructions are no longer valid, give me a shout and I'll be happy to update them through the end of 2024. &lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;a href="https://minae-test.gitbook.io/tasks/" rel="noopener noreferrer"&gt;My GitBook-generated docs for comparison&lt;/a&gt;&lt;/p&gt;
&lt;h4&gt;
  
  
  References
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://docs.gitbook.com/content-editor/blocks/openapi#create-openapi-block-using-your-openapi-file" rel="noopener noreferrer"&gt;GitBook Docs - Create OpenAPI Block Using Your OpenAPI File&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/GitbookIO/community" rel="noopener noreferrer"&gt;GitBook Community&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;





&lt;/p&gt;

&lt;h3&gt;
  
  
  ReadMe
&lt;/h3&gt;

&lt;p&gt;
  
  &lt;p&gt;Like GitBook, &lt;a href="https://readme.com" rel="noopener noreferrer"&gt;ReadMe&lt;/a&gt; has been around since 2014. It was a &lt;a href="https://www.ycombinator.com/companies/readme" rel="noopener noreferrer"&gt;2015 YCombinator startup&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;ReadMe offers a &lt;a href="https://docs.readme.com/main/docs/plans-and-pricing#plans-for-open-source-projects" rel="noopener noreferrer"&gt;free premium plan for open source projects&lt;/a&gt;. However, ReadMe does not allow custom domain use on its free plans, either the personal or the open source one.&lt;/p&gt;

&lt;p&gt;ReadMe has a 'try it' console called the &lt;strong&gt;API Explorer&lt;/strong&gt;. It will not work with the &lt;code&gt;tasksapi.yml&lt;/code&gt; file I provided for this tutorial, since that OAD does not have any servers defined. If you want to try out their API Explorer, you can download and use &lt;a href="https://public-sample-space.readme.io/openapi/61ef1d793087890045db3e51" rel="noopener noreferrer"&gt;a sample OAD provided by ReadMe&lt;/a&gt; (right click and &lt;em&gt;Save link as&lt;/em&gt;) instead of &lt;code&gt;tasksapi.yml&lt;/code&gt; in the instructions below. Or you can view their &lt;a href="https://public-sample-space.readme.io/reference/addpet" rel="noopener noreferrer"&gt;demo online&lt;/a&gt;, which uses the Swagger Petstore demo API and has the API Explorer enabled.&lt;/p&gt;

&lt;p&gt;They host a &lt;a href="https://readme.com/slack" rel="noopener noreferrer"&gt;Slack community&lt;/a&gt;, but it doesn't seem to get much traffic.&lt;/p&gt;


&lt;h4&gt;
  
  
  Instructions
&lt;/h4&gt;

&lt;p&gt;&lt;strong&gt;Step 1.&lt;/strong&gt; Create an account at &lt;a href="https://readme.com" rel="noopener noreferrer"&gt;ReadMe's website&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 2.&lt;/strong&gt; You will be prompted to &lt;strong&gt;Create a new project&lt;/strong&gt;. Give your project a name. Your subdomain at readme.io will be named automatically from your project name, but you can set it to something else if you wish. You can change both the project name and subdomain later. For &lt;strong&gt;Project type&lt;/strong&gt;, click on &lt;strong&gt;Yes, an API&lt;/strong&gt;. Click the &lt;strong&gt;Create&lt;/strong&gt; button. Note that ReadMe will automatically subscribe each new project to a free trial of the Business plan for 14 days after project creation. After that, it will fall back to the Free plan unless you subscribe to one of the paid plans.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 3.&lt;/strong&gt; In the left panel, click &lt;strong&gt;API Reference&lt;/strong&gt;. Then in the main panel, click &lt;strong&gt;Add your first API&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 4.&lt;/strong&gt; In the &lt;strong&gt;Describe Your API&lt;/strong&gt; dialog, choose &lt;strong&gt;API Import&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 5.&lt;/strong&gt; ReadMe gives you the options of importing via command line, a GitHub repository, a file, or URL. Choose to &lt;strong&gt;upload via file&lt;/strong&gt;, then upload the &lt;code&gt;tasksapi.yml&lt;/code&gt; file you downloaded in the General Requirements section.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 6.&lt;/strong&gt; In the &lt;strong&gt;Next Steps&lt;/strong&gt; dialog, toggle &lt;strong&gt;Public Visibility&lt;/strong&gt; to &lt;strong&gt;ON&lt;/strong&gt;, then click &lt;strong&gt;Dismiss&lt;/strong&gt;. You should then see a page called &lt;strong&gt;Your API Definitions&lt;/strong&gt;, with your OpenAPI document listed.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 7.&lt;/strong&gt; At the top left corner, directly below the ReadMe logo, you should see a button with your project name on it. Click on it to be taken to your published documentation. &lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Note: While your project is on the free trial Business plan, your published documentation will show other tabs aside from the API Reference, such as Guides and Recipes. Once the free trial ends, it will only show the API Reference. For more information, see &lt;a href="https://readme.com/pricing" rel="noopener noreferrer"&gt;ReadMe's plan comparison and pricing page&lt;/a&gt;.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;strong&gt;Step 8 (Optional).&lt;/strong&gt; If you wish to update your API definitions, click the &lt;strong&gt;Edit&lt;/strong&gt; link next to it. You will be prompted to upload a new OAD file.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://dash.readme.com/project/firstpass/v1.0/reference" rel="noopener noreferrer"&gt;My ReadMe-generated docs for comparison&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h4&gt;
  
  
  References
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://docs.readme.com/main/docs/openapi-upload" rel="noopener noreferrer"&gt;ReadMe Docs - OpenAPI Upload&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://docs.readme.com/main/docs/openapi" rel="noopener noreferrer"&gt;ReadMe Docs - OpenAPI Support in ReadMe&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://docs.readme.com/main/docs/openapi-extensions" rel="noopener noreferrer"&gt;ReadMe Docs - OpenAPI Extensions&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;





&lt;/p&gt;

&lt;h3&gt;
  
  
  Mintlify
&lt;/h3&gt;

&lt;p&gt;
  
  &lt;p&gt;Founded in 2021, &lt;a href="https://mintlify.com" rel="noopener noreferrer"&gt;Mintlify&lt;/a&gt; is a relative newcomer to the space of documentation SaaS platforms, but it's a heavy hitter. It was a &lt;a href="https://www.ycombinator.com/companies/mintlify" rel="noopener noreferrer"&gt;2022 YCombinator startup&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Mintlify has GitHub integration out of the box, a built-in components library, analytics, a strong community with a &lt;a href="https://mintlify.com/community" rel="noopener noreferrer"&gt;Slack workspace&lt;/a&gt;, a 'try it' console called the API Playground, and more. Using a custom domain is allowed on its free plan. &lt;/p&gt;


&lt;h4&gt;
  
  
  Instructions
&lt;/h4&gt;

&lt;p&gt;&lt;strong&gt;Step 1.&lt;/strong&gt; Go to &lt;a href="https://mintlify.com" rel="noopener noreferrer"&gt;Mintlify's website&lt;/a&gt; and click &lt;strong&gt;Get Started&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 2.&lt;/strong&gt; Enter your company name and your email. The company name you enter will determine your documentation site's subdomain name, such as yourcompanyname.mintlify.com. Mintlify will send you an email.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 3.&lt;/strong&gt; Open the email from Mintlify and click the &lt;strong&gt;Continue&lt;/strong&gt; button. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 4.&lt;/strong&gt; You will be prompted to &lt;strong&gt;sign in with GitHub&lt;/strong&gt;. Click to sign in, then &lt;strong&gt;Authorize mintlify&lt;/strong&gt; to access your GitHub account.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 5.&lt;/strong&gt; Once Mintlify has been authorized, click &lt;strong&gt;Create Repository&lt;/strong&gt;. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 6.&lt;/strong&gt; You will be shown two CLI commands, one starting with &lt;code&gt;git clone&lt;/code&gt; and another starting with &lt;code&gt;git add&lt;/code&gt;. Open your CLI  and navigate to the folder where you wish to keep your Mintlify docs. Copy only the first command, then paste it into your CLI. This will clone a folder named &lt;code&gt;docs&lt;/code&gt; at the location where you ran the command. You do not need to copy and paste the second command at this time. Click &lt;strong&gt;Mark Completed&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 7.&lt;/strong&gt; You should now see your Mintlify dashboard. Click the link to &lt;strong&gt;(1) Enable automatic updates&lt;/strong&gt;, then click &lt;strong&gt;Install and authorize&lt;/strong&gt;. This will install Mintlify's GitHub app for updating your documentation.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 8.&lt;/strong&gt; In your dashboard, you should see a link that looks like YOUR_COMPANY_NAME.mintlify.app. For example, I used &lt;strong&gt;docstest&lt;/strong&gt; for my company name when I initially signed up, so I see a link to &lt;strong&gt;docstest.mintlify.app&lt;/strong&gt;. Click on that link to see a starter documentation hub. Click the &lt;strong&gt;API Reference&lt;/strong&gt; tab and you should see a set of &lt;strong&gt;Endpoint Examples&lt;/strong&gt; using &lt;strong&gt;plant&lt;/strong&gt;/&lt;strong&gt;plants&lt;/strong&gt;. In the next steps, you will next replace these examples with the examples from the &lt;code&gt;tasksapi.yml&lt;/code&gt; file.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Note: Since the &lt;code&gt;tasksapi.yml&lt;/code&gt; file does not include servers for testing your API, if you want to try out Mintlify's API Playground (their 'try it' console for testing endpoints), you should do it now before going on to Step 9. Or you can simply view their &lt;a href="https://starter.mintlify.com/api-reference/endpoint/get" rel="noopener noreferrer"&gt;Mint Starter Kit demo online&lt;/a&gt;.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;strong&gt;Step 9.&lt;/strong&gt; In the &lt;code&gt;docs&lt;/code&gt; folder that you cloned locally on your computer in Step 6, locate the &lt;code&gt;api-reference&lt;/code&gt; folder. Copy the OAD file I provided in the General Requirements section to this &lt;code&gt;api-reference&lt;/code&gt; folder.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 10.&lt;/strong&gt; In your CLI, from the &lt;code&gt;docs&lt;/code&gt; folder, run the following command:&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;

npx @mintlify/scraping@latest  &lt;span class="nt"&gt;--outDir&lt;/span&gt; api-reference openapi-file api-reference/tasksapi.yml


&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;
&lt;p&gt;&lt;strong&gt;Step 11.&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;If the previous command ran correctly, you should see an output in your CLI that shows you a suggested navigation.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Step 12.&lt;/strong&gt; Open the file named &lt;code&gt;mint.json&lt;/code&gt; in your &lt;code&gt;docs&lt;/code&gt; folder. Scroll down to near the very bottom and locate the part that looks like this:&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="w"&gt;

    &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"group"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"Endpoint Examples"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"pages"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="s2"&gt;"api-reference/endpoint/get"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="s2"&gt;"api-reference/endpoint/create"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="s2"&gt;"api-reference/endpoint/delete"&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;



&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;
&lt;p&gt;Delete that part and replace it with the following:&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="w"&gt;

    &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"group"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"task"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"pages"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="s2"&gt;"api-reference/task/post-task"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="s2"&gt;"api-reference/taskget-task"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="s2"&gt;"api-reference/task/delete-task"&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="err"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"group"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"tasks"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"pages"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="s2"&gt;"api-reference/tasks/get-tasks"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="s2"&gt;"api-reference/tasks/delete-tasks"&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;


&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;
&lt;p&gt;Save the &lt;code&gt;mint.json&lt;/code&gt; file.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 13.&lt;/strong&gt; Run the following command in your CLI from the &lt;code&gt;docs&lt;/code&gt; folder:&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;

git add &lt;span class="nb"&gt;.&lt;/span&gt; &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; git commit &lt;span class="nt"&gt;-m&lt;/span&gt; &lt;span class="s2"&gt;"replace API descriptions"&lt;/span&gt; &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; git push


&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;
&lt;p&gt;&lt;strong&gt;Step 14.&lt;/strong&gt; In the Mintlify dashboard page in your browser, you should now see that your documentation site is updating. Wait for it to finish, then refresh your docs page (the one located at YOUR_COMPANY_NAME.mintlify.app). You're done!&lt;/p&gt;

&lt;p&gt;&lt;a href="https://docstest.mintlify.app/api-reference/task/post-task" rel="noopener noreferrer"&gt;My Mintlify-generated docs for comparison&lt;/a&gt;&lt;/p&gt;
&lt;h4&gt;
  
  
  References
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://mintlify.com/docs/quickstart" rel="noopener noreferrer"&gt;Mintlify Docs - Quickstart&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://mintlify.com/docs/api-playground/openapi/setup" rel="noopener noreferrer"&gt;Mintlify Docs - OpenAPI Setup&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/mintlify" rel="noopener noreferrer"&gt;Mintlify on GitHub&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;





&lt;/p&gt;

&lt;h3&gt;
  
  
  Fern
&lt;/h3&gt;

&lt;p&gt;
  
  &lt;br&gt;
Founded in 2022, &lt;a href="https://buildwithfern.com" rel="noopener noreferrer"&gt;Fern&lt;/a&gt; is the baby of the bunch, but a promising one. Like ReadMe and Mintlify, Fern is a &lt;a href="https://www.ycombinator.com/companies/fern" rel="noopener noreferrer"&gt;2023 YCombinator startup&lt;/a&gt;.

&lt;p&gt;Fern offers two major features: API documentation generation and hosting, along with auto-generated client-side libraries for SDKs. They host a &lt;a href="https://discord.com/invite/JkkXumPzcG" rel="noopener noreferrer"&gt;Discord community&lt;/a&gt; where its two founders are active and responsive. &lt;/p&gt;

&lt;p&gt;They do not have an API 'try it' console at this time, and a custom domain is not available on their free plan.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Disclosure: In the course of writing this article, I noticed issues with their &lt;a href="https://docs.buildwithfern.com/generate-docs" rel="noopener noreferrer"&gt;Docs Quickstart&lt;/a&gt; and submitted  &lt;a href="https://github.com/fern-api/fern/pull/2567" rel="noopener noreferrer"&gt;a pull request&lt;/a&gt; to fix them in GitHub. Aside from this, I had no affiliation with Fern while researching or writing this article. &lt;/p&gt;
&lt;/blockquote&gt;


&lt;h4&gt;
  
  
  Instructions
&lt;/h4&gt;

&lt;p&gt;&lt;strong&gt;Step 1.&lt;/strong&gt; Make sure you are logged into GitHub, then go to the &lt;a href="https://github.com/fern-api/docs-starter" rel="noopener noreferrer"&gt;Fern Docs Starter repository&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 2.&lt;/strong&gt; Click the &lt;strong&gt;Use this template&lt;/strong&gt; button in the upper right area of the page. This will prompt you to create a new repository based on the Fern Docs Starter template. Name the repository as you like, such as &lt;strong&gt;ferndocs&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 3.&lt;/strong&gt; Click the blue &lt;strong&gt;Code&lt;/strong&gt; button, then copy the web URL to your repository that begins with &lt;em&gt;&lt;a href="https://github.com" rel="noopener noreferrer"&gt;https://github.com&lt;/a&gt;&lt;/em&gt;. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 4.&lt;/strong&gt; In your CLI, navigate to the folder in which you would like to create the local copy of your Fern documentation repository. From there, enter the command &lt;code&gt;git clone&lt;/code&gt; followed by the web URL you copied in the previous step:&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;

git clone https://github.com/YOUR_GITHUB_ACCOUNT_NAME/YOUR_REPOSITORY_NAME.git


&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;
&lt;p&gt;When finished, this operation will create a folder with the same name as your repository, such as &lt;code&gt;ferndocs&lt;/code&gt;. Inside that folder, you will find a folder named &lt;code&gt;fern&lt;/code&gt;. All the following folders and files mentioned in the next steps will be located inside that &lt;code&gt;fern&lt;/code&gt; folder. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 5.&lt;/strong&gt; In the &lt;code&gt;fern.config.json&lt;/code&gt; file, replace the placeholder organization name with your organization name, or your own name for testing purposes. Do not change the version number or anything else.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 6.&lt;/strong&gt; In the &lt;code&gt;docs.yml&lt;/code&gt; file, update the docs URL to reflect the subdomain of docs.buildwithfern.com where you wish to publish your documentation. For example:&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;

&lt;span class="na"&gt;instances&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;url&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;your-organization.docs.buildwithfern.com&lt;/span&gt;


&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;
&lt;p&gt;&lt;strong&gt;Step 7.&lt;/strong&gt; Install the Fern CLI globally by running:&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;

npm &lt;span class="nb"&gt;install&lt;/span&gt; &lt;span class="nt"&gt;-g&lt;/span&gt; fern-api


&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;
&lt;p&gt;As this is a global command, you can run it from any location. The CLI commands in the following steps must be run from within your repository.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 8.&lt;/strong&gt; Delete the &lt;code&gt;definition&lt;/code&gt; folder.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 9.&lt;/strong&gt; Place the &lt;code&gt;tasksapi.yml&lt;/code&gt; in the &lt;code&gt;fern&lt;/code&gt; folder&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 10.&lt;/strong&gt; Run:&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;

fern init &lt;span class="nt"&gt;--openapi&lt;/span&gt; tasksapi.yml


&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;
&lt;p&gt;You should now see a folder named &lt;code&gt;openapi&lt;/code&gt;, and inside it will be a copy of the &lt;code&gt;tasksapi.yaml&lt;/code&gt; file. This is the file that will be used to generate your documentation. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 11.&lt;/strong&gt; Run:&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;

fern generate —docs


&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;
&lt;p&gt;You should see a link to your published documentation, hosted by Fern.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 12 (optional).&lt;/strong&gt; To update your documentation, edit &lt;code&gt;openapi/tasksapi.yaml&lt;/code&gt; then run &lt;code&gt;fern generate —docs&lt;/code&gt; again.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://ferntest4.docs.buildwithfern.com/" rel="noopener noreferrer"&gt;My Fern-generated docs for comparison&lt;/a&gt;&lt;/p&gt;
&lt;h4&gt;
  
  
  References
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://docs.buildwithfern.com/generate-docs" rel="noopener noreferrer"&gt;Fern Docs - Docs Quickstart&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/fern-api/fern" rel="noopener noreferrer"&gt;Fern on GitHub&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;



&lt;/p&gt;




&lt;h2&gt;
  
  
  Coming up
&lt;/h2&gt;

&lt;p&gt;Part 3: Stoplight, Swagger, Postman&lt;/p&gt;

</description>
      <category>openapi</category>
      <category>saas</category>
      <category>documentation</category>
      <category>tooling</category>
    </item>
    <item>
      <title>Test Driving OpenAPI Documentation Generators (2024) - Part 1 of 3</title>
      <dc:creator>minae</dc:creator>
      <pubDate>Tue, 09 Jan 2024 06:12:11 +0000</pubDate>
      <link>https://forem.com/dreamlogic/test-driving-openapi-documentation-generators-2024-part-1-of-3-9a7</link>
      <guid>https://forem.com/dreamlogic/test-driving-openapi-documentation-generators-2024-part-1-of-3-9a7</guid>
      <description>&lt;p&gt;In this article series, you will find a collection of introductions and quick-start tutorials for ten free and freemium OpenAPI documentation generators that create documentation webpages from OpenAPI Descriptions (OADs).&lt;/p&gt;




&lt;h2&gt;
  
  
  Contents
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
Introduction

&lt;ul&gt;
&lt;li&gt;Who might benefit from this article series ❓&lt;/li&gt;
&lt;li&gt;What do I mean by 'test driving' ❓&lt;/li&gt;
&lt;li&gt;What documentation generators will this article series cover ❓&lt;/li&gt;
&lt;li&gt;Why these ten ❓&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;

Test Drives

&lt;ul&gt;
&lt;li&gt;What to know before we ride&lt;/li&gt;
&lt;li&gt;Requirements&lt;/li&gt;
&lt;li&gt;Part 1: Generate docs from OpenAPI&lt;/li&gt;
&lt;li&gt;How to open a development HTTP server&lt;/li&gt;
&lt;li&gt;Part 2: Make your docs viewable online&lt;/li&gt;
&lt;li&gt;
Final Notes

&lt;ul&gt;
&lt;li&gt;Details &amp;amp; comparison&lt;/li&gt;
&lt;li&gt;Where to find live demos&lt;/li&gt;
&lt;li&gt;Usage notes&lt;/li&gt;
&lt;li&gt;Redoc vs Redocly and Stoplight Elements vs Stoplight&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;/ul&gt;

&lt;/li&gt;

&lt;/ul&gt;




&lt;h2&gt;
  
  
  Introduction
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Who might benefit from this article series ❓
&lt;/h3&gt;

&lt;p&gt;Reading this article series might be useful to you if you:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;are looking to publish online documentation using your OpenAPI definitions.&lt;/li&gt;
&lt;li&gt;have already tried to publish your documentation with one of the generators in this article series and couldn't get it working.&lt;/li&gt;
&lt;li&gt;are assessing the many OpenAPI documentation generators out there and trying to figure out their differences and suitability for a project.&lt;/li&gt;
&lt;/ul&gt;




&lt;h3&gt;
  
  
  What do I mean by 'test driving' ❓
&lt;/h3&gt;

&lt;p&gt;I wanted to learn about a variety of OpenAPI documentation generator tools. I didn’t need to become an expert in any of them, only to get a feel for how each one works. &lt;/p&gt;

&lt;p&gt;I learn best by doing. I decided to run a series of basic 'test drives.' With each tool, I would:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Use my own OpenAPI Description (OAD) file to generate browser-based API reference documentation.&lt;/li&gt;
&lt;li&gt;Publish the generated documentation online where anyone can view it.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;In the Test Drives section below, I’ll show you exactly how I tried out each generator. I’ll tell you more of what I learned about these apps along the way. If you like, you can follow along and try them for yourself.&lt;/p&gt;




&lt;h3&gt;
  
  
  What documentation generators will this article series cover ❓
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;This article will cover &lt;a href="https://redocly.com/redoc/" rel="noopener noreferrer"&gt;&lt;strong&gt;Redoc&lt;/strong&gt;&lt;/a&gt; (started in 2016), &lt;a href="https://stoplight.io/open-source/elements" rel="noopener noreferrer"&gt;&lt;strong&gt;Stoplight Elements&lt;/strong&gt;&lt;/a&gt; (2019), and &lt;a href="https://rapidocweb.com/" rel="noopener noreferrer"&gt;&lt;strong&gt;Rapidoc&lt;/strong&gt;&lt;/a&gt; (2018).&lt;/li&gt;
&lt;li&gt;The next article will cover &lt;a href="https://mintlify.com/" rel="noopener noreferrer"&gt;&lt;strong&gt;Mintlify&lt;/strong&gt;&lt;/a&gt; (2021), &lt;a href="https://readme.com/" rel="noopener noreferrer"&gt;&lt;strong&gt;Readme&lt;/strong&gt;&lt;/a&gt; (2014), &lt;a href="https://www.gitbook.com/" rel="noopener noreferrer"&gt;&lt;strong&gt;Gitbook&lt;/strong&gt;&lt;/a&gt; (2014), and &lt;a href="https://buildwithfern.com/" rel="noopener noreferrer"&gt;&lt;strong&gt;Fern&lt;/strong&gt;&lt;/a&gt; (2022).&lt;/li&gt;
&lt;li&gt;The final article will cover &lt;a href="https://stoplight.io/" rel="noopener noreferrer"&gt;&lt;strong&gt;Stoplight&lt;/strong&gt;&lt;/a&gt; (2015), &lt;a href="https://swagger.io/" rel="noopener noreferrer"&gt;&lt;strong&gt;Swagger&lt;/strong&gt;&lt;/a&gt; (2011), and &lt;a href="https://postman.com/" rel="noopener noreferrer"&gt;&lt;strong&gt;Postman&lt;/strong&gt;&lt;/a&gt; (2014).&lt;/li&gt;
&lt;/ul&gt;




&lt;h3&gt;
  
  
  Why these ten ❓
&lt;/h3&gt;

&lt;p&gt;I began with this question: &lt;em&gt;How can I generate browser-based API reference documentation for RESTful APIs?&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;I looked for solutions that didn’t involve hand-coding and directly updating webpages. Web searches produced a plethora of approaches—Sphinx, Antora, Docusaurus, Madcap Flare, Swagger, Redoc, Readme, Slate, Stoplight, static site generators like Jekyll or Hugo with documentation themes, and so on.&lt;/p&gt;

&lt;p&gt;I decided to focus on solutions that integrate OpenAPI 3+ out of the box without requiring third-party plugins. OpenAPI is the most widely used specification for standardized API descriptions. It's maintained by the &lt;a href="https://www.openapis.org/" rel="noopener noreferrer"&gt;OpenAPI Initiative&lt;/a&gt;. Postman hosts a detailed &lt;a href="https://learning.postman.com/open-technologies/specifications/openapi/history/" rel="noopener noreferrer"&gt;writeup of OpenAPI's history and evolution&lt;/a&gt;. &lt;/p&gt;

&lt;p&gt;OpenAPI Description (OAD) files are plaintext files formatted as either &lt;strong&gt;JSON&lt;/strong&gt; or &lt;strong&gt;YAML&lt;/strong&gt;. Example snippet from an OAD file in YAML:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;  &lt;span class="s"&gt;/task/{id}&lt;/span&gt;&lt;span class="err"&gt;:&lt;/span&gt;
    &lt;span class="na"&gt;get&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
      &lt;span class="na"&gt;tags&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
        &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="s"&gt;task&lt;/span&gt;
      &lt;span class="na"&gt;description&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;Return a task based on its ID&lt;/span&gt;
      &lt;span class="na"&gt;operationId&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;getTaskById&lt;/span&gt;
      &lt;span class="na"&gt;parameters&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
        &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;id&lt;/span&gt;
          &lt;span class="na"&gt;in&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;path&lt;/span&gt;
          &lt;span class="na"&gt;description&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;ID of task to get&lt;/span&gt;
          &lt;span class="na"&gt;required&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt;
          &lt;span class="na"&gt;schema&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
            &lt;span class="na"&gt;type&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;integer&lt;/span&gt;
            &lt;span class="na"&gt;format&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;int64&lt;/span&gt;
      &lt;span class="na"&gt;responses&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
        &lt;span class="s1"&gt;'&lt;/span&gt;&lt;span class="s"&gt;200'&lt;/span&gt;&lt;span class="err"&gt;:&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Once you’ve described your API with OpenAPI, you can plug your OAD file into a tool that waves its magic wand and generates browser-based documentation from it.&lt;/p&gt;

&lt;p&gt;So, what tool should I use for this? Dozens popped up on my radar, so I filtered my search further for solutions that are:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Free OR freemium with a non-expiring free tier. ✅ &lt;/li&gt;
&lt;li&gt;Able to publish public-facing docs on the free tier, if freemium. ✅ &lt;/li&gt;
&lt;li&gt;Active. I checked websites, along with GitHub and NPM repo pages, for evidence of recent activity, maintenance, and community support. I also paid attention to general online buzz, from Reddit to Slack to StackOverflow to tech blogs and other forums. ✅ &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;And that’s how I came to my final list. Some popular documentation generators were filtered out by my search parameters, such as &lt;a href="https://www.mkdocs.org/" rel="noopener noreferrer"&gt;Mkdocs&lt;/a&gt; and &lt;a href="https://docusaurus.io/" rel="noopener noreferrer"&gt;Docusaurus&lt;/a&gt;, and I might write about them separately another time. Also on my radar are Writerside, Bump.sh, Doctave, Alphadoc, and Developerhub.io.&lt;/p&gt;




&lt;h2&gt;
  
  
  Test Drives
&lt;/h2&gt;

&lt;h3&gt;
  
  
  What to know before we ride
&lt;/h3&gt;

&lt;p&gt;The three in this round—&lt;strong&gt;Redoc&lt;/strong&gt;, &lt;strong&gt;Stoplight Elements&lt;/strong&gt;, &lt;strong&gt;Rapidoc&lt;/strong&gt;—are &lt;strong&gt;free, open-source&lt;/strong&gt; tools. All the rest I test drove (with the exception of SwaggerUI) are SaaS (Software as a Service) products.&lt;/p&gt;

&lt;p&gt;These three generate documentation locally on your computer, leaving the deployment up to you. The SaaS products do not offer that option; with them, your documentation is generated and deployed on their servers, and you must go through them to access your documentation files or to set up a custom domain.&lt;/p&gt;

&lt;p&gt;The SaaS products also offer many benefits that the three in this round do not, such as analytics, hosting, user management, API design tools, and more. If such benefits are not as important to you as having complete control over your documentation, you will want to pay close attention to the three in this round. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Redoc&lt;/strong&gt; uses a &lt;strong&gt;custom HTML element&lt;/strong&gt;, while &lt;strong&gt;Stoplight Elements&lt;/strong&gt; and &lt;strong&gt;Rapidoc&lt;/strong&gt; use &lt;strong&gt;web components&lt;/strong&gt;. While there are differences between a custom HTML element and a web component, you'll use them more or less the same way.&lt;/p&gt;

&lt;p&gt;Thus for this round only, I consolidated my ‘test drive’ steps for the three generators to avoid repetition. If you're following along, go through the instructions below three times, once per generator. &lt;/p&gt;




&lt;h3&gt;
  
  
  Requirements
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;A code editor, such as &lt;a href="https://code.visualstudio.com/" rel="noopener noreferrer"&gt;Visual Studio Code&lt;/a&gt; &lt;/li&gt;
&lt;li&gt;A way to run a development HTTP server on your local computer &lt;/li&gt;
&lt;li&gt;An OAD (OpenAPI Description) file. Use your own or download my sample file, &lt;a href="https://github.com/minaelee/tasksapi/blob/main/tasksapi.yml" rel="noopener noreferrer"&gt;tasksapi.yml&lt;/a&gt; (right-click the link and choose &lt;em&gt;Save link as&lt;/em&gt;). &lt;/li&gt;
&lt;/ul&gt;

&lt;blockquote&gt;
&lt;p&gt;Notes: If you'd like to have a more fully featured OpenAPI spec to play around with, check out the &lt;a href="https://github.com/swagger-api/swagger-petstore/blob/master/src/main/resources/openapi.yaml" rel="noopener noreferrer"&gt;Swagger PetStore specs&lt;/a&gt; and its corresponding &lt;a href="https://petstore3.swagger.io/" rel="noopener noreferrer"&gt;live demo&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Depending on the OAD file used, the 'try it' API consoles within the &lt;strong&gt;Rapidoc&lt;/strong&gt;-generated documentation might or might not work. The &lt;code&gt;tasksapi.yml&lt;/code&gt; file, for example, is a sample file with no live server defined for making API calls. I am not concerned with that functionality for these test drives. &lt;/p&gt;
&lt;/blockquote&gt;




&lt;h3&gt;
  
  
  Part 1: Generate docs from OpenAPI
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;Create a folder named &lt;code&gt;redoc&lt;/code&gt;, &lt;code&gt;rapidoc&lt;/code&gt;, or &lt;code&gt;elements&lt;/code&gt; on your computer, depending on which generator you are testing.&lt;/li&gt;
&lt;li&gt;Place a copy of your OAD file, such as &lt;code&gt;tasksapi.yml&lt;/code&gt;, into that folder. &lt;/li&gt;
&lt;li&gt;In that folder, create a file named &lt;code&gt;index.html&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Expand one of the below, then copy and paste the shown code into your &lt;code&gt;index.html&lt;/code&gt;:&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;
  &lt;strong&gt;REDOC CODE&lt;/strong&gt;
  &lt;br&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight html"&gt;&lt;code&gt;&lt;span class="cp"&gt;&amp;lt;!DOCTYPE html&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;html&lt;/span&gt; &lt;span class="na"&gt;lang=&lt;/span&gt;&lt;span class="s"&gt;"en"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;head&amp;gt;&lt;/span&gt;
        &lt;span class="nt"&gt;&amp;lt;meta&lt;/span&gt; &lt;span class="na"&gt;charset=&lt;/span&gt;&lt;span class="s"&gt;"utf-8"&lt;/span&gt; &lt;span class="nt"&gt;/&amp;gt;&lt;/span&gt;
        &lt;span class="nt"&gt;&amp;lt;meta&lt;/span&gt; &lt;span class="na"&gt;name=&lt;/span&gt;&lt;span class="s"&gt;"viewport"&lt;/span&gt; &lt;span class="na"&gt;content=&lt;/span&gt;&lt;span class="s"&gt;"width=device-width, initial-scale=1"&lt;/span&gt; &lt;span class="nt"&gt;/&amp;gt;&lt;/span&gt;
        &lt;span class="nt"&gt;&amp;lt;title&amp;gt;&lt;/span&gt;Documentation by Redoc&lt;span class="nt"&gt;&amp;lt;/title&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;/head&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;body&amp;gt;&lt;/span&gt;
        &lt;span class="nt"&gt;&amp;lt;redoc&lt;/span&gt; &lt;span class="na"&gt;spec-url=&lt;/span&gt;&lt;span class="s"&gt;"tasksapi.yml"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&amp;lt;/redoc&amp;gt;&lt;/span&gt;
        &lt;span class="nt"&gt;&amp;lt;script &lt;/span&gt;&lt;span class="na"&gt;src=&lt;/span&gt;&lt;span class="s"&gt;"https://cdn.redoc.ly/redoc/latest/bundles/redoc.standalone.js"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
        &lt;span class="nt"&gt;&amp;lt;/script&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;/body&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;/html&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;




&lt;/p&gt;

&lt;p&gt;
  &lt;strong&gt;RAPIDOC CODE&lt;/strong&gt;
  &lt;br&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight html"&gt;&lt;code&gt;&lt;span class="cp"&gt;&amp;lt;!DOCTYPE html&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;html&lt;/span&gt; &lt;span class="na"&gt;lang=&lt;/span&gt;&lt;span class="s"&gt;"en"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;head&amp;gt;&lt;/span&gt;
        &lt;span class="nt"&gt;&amp;lt;meta&lt;/span&gt; &lt;span class="na"&gt;charset=&lt;/span&gt;&lt;span class="s"&gt;"utf-8"&lt;/span&gt; &lt;span class="nt"&gt;/&amp;gt;&lt;/span&gt;
        &lt;span class="nt"&gt;&amp;lt;meta&lt;/span&gt; &lt;span class="na"&gt;name=&lt;/span&gt;&lt;span class="s"&gt;"viewport"&lt;/span&gt; &lt;span class="na"&gt;content=&lt;/span&gt;&lt;span class="s"&gt;"width=device-width, initial-scale=1"&lt;/span&gt; &lt;span class="nt"&gt;/&amp;gt;&lt;/span&gt;
        &lt;span class="nt"&gt;&amp;lt;title&amp;gt;&lt;/span&gt;Documentation by Rapidoc&lt;span class="nt"&gt;&amp;lt;/title&amp;gt;&lt;/span&gt;
        &lt;span class="nt"&gt;&amp;lt;script &lt;/span&gt;&lt;span class="na"&gt;type=&lt;/span&gt;&lt;span class="s"&gt;"module"&lt;/span&gt; &lt;span class="na"&gt;src=&lt;/span&gt;&lt;span class="s"&gt;"https://unpkg.com/rapidoc/dist/rapidoc-min.js"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
        &lt;span class="nt"&gt;&amp;lt;/script&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;/head&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;body&amp;gt;&lt;/span&gt;
        &lt;span class="nt"&gt;&amp;lt;rapi-doc&lt;/span&gt; &lt;span class="na"&gt;spec-url=&lt;/span&gt;&lt;span class="s"&gt;"tasksapi.yml"&lt;/span&gt; &lt;span class="na"&gt;show-method-in-nav-bar=&lt;/span&gt;&lt;span class="s"&gt;"as-colored-text"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
        &lt;span class="nt"&gt;&amp;lt;/rapi-doc&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;/body&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;/html&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;




&lt;/p&gt;

&lt;p&gt;
  &lt;strong&gt;STOPLIGHT ELEMENTS CODE&lt;/strong&gt;
  &lt;br&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight html"&gt;&lt;code&gt;&lt;span class="cp"&gt;&amp;lt;!doctype html&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;html&lt;/span&gt; &lt;span class="na"&gt;lang=&lt;/span&gt;&lt;span class="s"&gt;"en"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;head&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;meta&lt;/span&gt; &lt;span class="na"&gt;charset=&lt;/span&gt;&lt;span class="s"&gt;"utf-8"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;meta&lt;/span&gt; &lt;span class="na"&gt;name=&lt;/span&gt;&lt;span class="s"&gt;"viewport"&lt;/span&gt; &lt;span class="na"&gt;content=&lt;/span&gt;&lt;span class="s"&gt;"width=device-width, initial-scale=1, shrink-to-fit=no"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;title&amp;gt;&lt;/span&gt;Documentation by Stoplight Elements&lt;span class="nt"&gt;&amp;lt;/title&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;script &lt;/span&gt;&lt;span class="na"&gt;src=&lt;/span&gt;&lt;span class="s"&gt;"https://unpkg.com/@stoplight/elements/web-components.min.js"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&amp;lt;/script&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;link&lt;/span&gt; &lt;span class="na"&gt;rel=&lt;/span&gt;&lt;span class="s"&gt;"stylesheet"&lt;/span&gt; &lt;span class="na"&gt;href=&lt;/span&gt;&lt;span class="s"&gt;"https://unpkg.com/@stoplight/elements/styles.min.css"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;/head&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;body&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;elements-api&lt;/span&gt;
      &lt;span class="na"&gt;apiDescriptionUrl=&lt;/span&gt;&lt;span class="s"&gt;"tasksapi.yml"&lt;/span&gt;
      &lt;span class="na"&gt;router=&lt;/span&gt;&lt;span class="s"&gt;"hash"&lt;/span&gt;
      &lt;span class="na"&gt;layout=&lt;/span&gt;&lt;span class="s"&gt;"sidebar"&lt;/span&gt;
    &lt;span class="nt"&gt;/&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;/body&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;/html&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;




&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;If the OAD file you are using is &lt;em&gt;not&lt;/em&gt; &lt;code&gt;tasksapi.yml&lt;/code&gt;, then locate where &lt;code&gt;tasksapi.yml&lt;/code&gt; is referenced in &lt;code&gt;index.html&lt;/code&gt; and replace it with a reference to your own file.&lt;/li&gt;
&lt;li&gt;
Open a dev server to view the generated documentation and confirm that it shows the API definitions from your OAD file. &lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Example screenshots of what you should see (if using &lt;code&gt;tasksapi.yml&lt;/code&gt;):&lt;br&gt;

  &lt;strong&gt;REDOC SCREENSHOT&lt;/strong&gt;
  &lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fya1eqtcyjvshhjjfwxwq.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fya1eqtcyjvshhjjfwxwq.jpg" alt="Screenshot of browser open to localhost serving Redoc-generated documentation" width="800" height="449"&gt;&lt;/a&gt;&lt;br&gt;


&lt;/p&gt;

&lt;p&gt;
  &lt;strong&gt;RAPIDOC SCREENSHOT&lt;/strong&gt;
  &lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F5nxd7k381pacisdry2di.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F5nxd7k381pacisdry2di.jpg" alt="Screenshot of browser open to localhost serving Rapidoc-generated documentation" width="800" height="449"&gt;&lt;/a&gt;&lt;br&gt;


&lt;/p&gt;

&lt;p&gt;
  &lt;strong&gt;STOPLIGHT ELEMENTS SCREENSHOT&lt;/strong&gt;
  &lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fk65mz6t3phky7f0hjf1y.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fk65mz6t3phky7f0hjf1y.jpg" alt="Screenshot of browser open to localhost serving Elements-generated documentation" width="800" height="449"&gt;&lt;/a&gt;&lt;br&gt;


&lt;/p&gt;




&lt;h3&gt;
  
  
  How to open a development HTTP server
&lt;/h3&gt;

&lt;p&gt;
  Instructions
  &lt;br&gt;
There are many ways to run a mock/test/dev server on your computer that simulates how your documentation will render when live online. 

&lt;p&gt;If you use VS Code, you can use the &lt;a href="https://marketplace.visualstudio.com/items?itemName=ritwickdey.LiveServer" rel="noopener noreferrer"&gt;Live Server extension&lt;/a&gt;. Once it's installed, right-click on &lt;code&gt;index.html&lt;/code&gt; in the VS Code Explorer panel and choose &lt;code&gt;Open in Live Server&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;You can also run a dev server from the command line. The example commands below must be run from inside the &lt;code&gt;redoc&lt;/code&gt;/&lt;code&gt;rapidoc&lt;/code&gt;/&lt;code&gt;elements&lt;/code&gt; folder):&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;If you have &lt;strong&gt;Node/NPM&lt;/strong&gt; installed, you can use the &lt;a href="https://www.npmjs.com/package/http-server" rel="noopener noreferrer"&gt;http-server&lt;/a&gt; or &lt;a href="https://www.npmjs.com/package/live-server" rel="noopener noreferrer"&gt;live-server&lt;/a&gt; package:
&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npx live-server
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;ul&gt;
&lt;li&gt;If you have &lt;strong&gt;Python 3&lt;/strong&gt; installed, run its built-in &lt;a href="https://realpython.com/python-http-server/" rel="noopener noreferrer"&gt;http-server&lt;/a&gt; module on the command line:
&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;python &lt;span class="nt"&gt;-m&lt;/span&gt; http.server
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;Afterward, read the CLI output for the local URL where you can view your files.&lt;br&gt;
&lt;/p&gt;

&lt;br&gt;
 &lt;/p&gt;




&lt;h3&gt;
  
  
  Part 2: Make your docs viewable online
&lt;/h3&gt;

&lt;p&gt;At this point, your documentation is only available on your computer. You can deploy them online as you would with any other static website. There are many free options for this. If you don’t have one you already prefer, you can follow these instructions for using Netlify:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Log in or sign up for a free account at &lt;a href="https://netlify.com" rel="noopener noreferrer"&gt;Netlify&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Click &lt;strong&gt;Add new site&lt;/strong&gt; and choose to &lt;strong&gt;Deploy manually&lt;/strong&gt;. (This is the simplest option for a quick throwaway demo; for a more permanent project, it's preferable to import your project from a git provider for continuous deployment.)&lt;/li&gt;
&lt;li&gt;Drag and drop your &lt;code&gt;redoc&lt;/code&gt;, &lt;code&gt;rapidoc&lt;/code&gt;, or &lt;code&gt;elements&lt;/code&gt; folder where indicated.&lt;/li&gt;
&lt;li&gt;Click &lt;strong&gt;Open production deploy&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;You should see it live! The URL will will look something like &lt;a href="https://6595eadb06abcb03854a869c--glowing-tartufo-dcb13c.netlify.app/" rel="noopener noreferrer"&gt;https://6595eadb06abcb03854a869c--glowing-tartufo-dcb13c.netlify.app/&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;If you want to use a custom subdomain name that's easier to read, change it under &lt;strong&gt;Domain management&lt;/strong&gt; in the Netlify sidebar. For example, I changed the subdomain above to: &lt;a href="https://minae-elements.netlify.app/" rel="noopener noreferrer"&gt;minae-elements.netlify.app/&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;If you want to use a custom domain, such as &lt;code&gt;docs.yourveryownsite.com&lt;/code&gt; or &lt;code&gt;yourdocssite.com&lt;/code&gt;, then you can follow Netlify’s instructions for doing so.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;View my demo docs:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://minae-rapidoc.netlify.app/" rel="noopener noreferrer"&gt;minae-redoc.netlify.com&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://minae-rapidoc.netlify.com" rel="noopener noreferrer"&gt;minae-rapidoc.netlify.com&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://minae-elements.netlify.com" rel="noopener noreferrer"&gt;minae-elements.netlify.com&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;




&lt;h3&gt;
  
  
  Final Notes
&lt;/h3&gt;

&lt;h4&gt;
  
  
  Details &amp;amp; comparison
&lt;/h4&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;&lt;/th&gt;
&lt;th&gt;Redoc&lt;/th&gt;
&lt;th&gt;RapiDoc&lt;/th&gt;
&lt;th&gt;Elements&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Offical Docs&lt;/td&gt;
&lt;td&gt;&lt;a href="https://redocly.com/docs/redoc/" rel="noopener noreferrer"&gt;Site&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;a href="https://rapidocweb.com/" rel="noopener noreferrer"&gt;Site&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;a href="https://docs.stoplight.io/docs/elements/d6a8ba3f3c186-stoplight-elements" rel="noopener noreferrer"&gt;Site&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;GitHub&lt;/td&gt;
&lt;td&gt;&lt;a href="https://github.com/Redocly/redoc" rel="noopener noreferrer"&gt;Repo&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;a href="https://github.com/rapi-doc/RapiDoc" rel="noopener noreferrer"&gt;Repo&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;a href="https://github.com/stoplightio/elements" rel="noopener noreferrer"&gt;Repo&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;GitHub Stars&lt;/td&gt;
&lt;td&gt;21.7K&lt;/td&gt;
&lt;td&gt;1.5K&lt;/td&gt;
&lt;td&gt;1.3k&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Year Started&lt;/td&gt;
&lt;td&gt;2016&lt;/td&gt;
&lt;td&gt;2018&lt;/td&gt;
&lt;td&gt;2019&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;'Try It' Console&lt;/td&gt;
&lt;td&gt;No, but available in Redocly&lt;/td&gt;
&lt;td&gt;Yes&lt;/td&gt;
&lt;td&gt;Yes&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Provided Examples&lt;/td&gt;
&lt;td&gt;HTML, React&lt;/td&gt;
&lt;td&gt;HTML, React, Vue&lt;/td&gt;
&lt;td&gt;HTML, React, Gatsby, Angular, Bootstrap&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;




&lt;h4&gt;
  
  
  Where to find live demos
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://redocly.github.io/redoc/" rel="noopener noreferrer"&gt;Redoc demo&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://rapidocweb.com/list.html" rel="noopener noreferrer"&gt;Rapidoc demos&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://elements-demo.stoplight.io/" rel="noopener noreferrer"&gt;Stoplight Elements demo&lt;/a&gt;

&lt;ul&gt;
&lt;li&gt;Try choosing different specs from the &lt;code&gt;Choose an example&lt;/code&gt; dropdown for Stoplight Elements. At the time of this writing, the Box and Linode options are broken, but the others work.&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;/ul&gt;




&lt;h4&gt;
  
  
  Usage notes
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;You can use the Redoc HTML element and the Rapidoc and Elements Web Components with vanilla HTML, or insert them into any framework, such as React and Angular. &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;The code for each &lt;code&gt;index.html&lt;/code&gt; used in my drive tests uses scripts downloaded from CDNs (Content Delivery Networks). All three tools allow you to bypass using a CDN for entirely local code, if you need that option.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;




&lt;h4&gt;
  
  
  Redoc vs Redocly and Stoplight Elements vs Stoplight
&lt;/h4&gt;

&lt;p&gt;Both Redoc and Stoplight Elements are the free, open-source projects of two SaaS products, &lt;a href="https://redocly.com/" rel="noopener noreferrer"&gt;Redocly&lt;/a&gt; and &lt;a href="https://stoplight.io/" rel="noopener noreferrer"&gt;Stoplight&lt;/a&gt; (also sometimes called the Stoplight Platform) respectively. I will test drive Stoplight in Round 3 of this series but not Redocly, as it does not offer a free tier with public-facing documentation. If you intend to subscribe to a paid tier of a SaaS product, you could still give Redocly a look for yourself!&lt;/p&gt;




</description>
      <category>openapi</category>
      <category>api</category>
      <category>documentation</category>
      <category>tooling</category>
    </item>
  </channel>
</rss>
