Everyone please feel free to update this (add other options I didn't find, add more pros and cons to existing options, etc, etc). And of course feel free to comment here with further thoughts and such.
Goals for consideration:
- Ability to update API spec (e.g. add, modify, and delete endpoints), possibly without having to edit raw YAML
- Add/enforce/support a process for collaborating on API-spec changes (e.g. PR reviews and approvals)
- Auto-generated documentation (for referencing endpoints outside of a YAML file)
Options:
SwaggerHub (link)
Price by month: $75/month if billed yearly, $90/month if billed monthly (up to 5 users)
Price by year: $900 if billed yearly, $1,080 if billed monthly
We initially went this route. A few key things gave reason to zoom out and consider other options.
Cons:
- Numerous bugs in their UI
- Being super under-impressed in their interface's overall UX
- Spec updates require editing raw YAML
- Needing their "enterprise" version (i.e. likely much more expensive than the plan we were on) for things as simple as pulling changes from the remote repository where the spec lives
Conclusion: Do not use. Surprised anyone would use it over the alternatives.
Postman (link)
Price breakdown: $12/user/month if billed yearly, $15/user/month if billed monthly
Price by month: $60 if yearly, $75 if monthly
Price by year: $720 if yearly, $900 if monthly
Pros:
- Has an in-app review process (for proposing and reviewing changes, similar to GitHub's PR UI with reviews).
Cons:
- Complex interface. For example, the have the concept of "collections" and "APIs". An API has collections, but collections can exist outside of an API. If wanting to update spec data in a collection, there's UI for it (no need to edit raw YAML). If wanting to update spec data at the API level (which includes the entire spec file) it's necessary to edit raw YAML.
Conclusion: Could be a decent route but the learning curve is steep. Seems it was first a simple HTTP client that added on team features that they could charge for (since the app itself is free, there's a strong business case for this type of move).
Stoplight (link)
Price: Free plan for up to 10 users. This seems like it would meet our needs.
Pros:
- Has a UI for making spec changes (but also supports editing raw YAML)
Cons:
Conclusion:
If the primary goal is an interface for updating the API spec without having to directly edit YAML then Stoplight.io seems like the only option (and their editor seems to be very nice and have an overall top-notch UX). That would keep the review process here in GitHub via PRs, which means that using Stoplight's UI would be 100% optional. There's currently a way to easily push to a new branch from Stoplight, but not to create a PR directly from it (see https://roadmap.stoplight.io/c/75-create-a-pull-request-from-studio). Reviewing PRs would still happen in GitHub, looking at the YAML, but there's also a way to view the updated docs (not a diff, so not sure how useful this would be) (see https://meta.stoplight.io/docs/platform/3.-design/c.reviewing-your-api-design.md).
An open-source tool for generated a docs site from an OpenAPI spec. Generates very nice documentation sites (view demo).
Github: https://github.com/Redocly/redoc
Hosted service (with free plan that may be sufficient): https://redoc.ly/reference-docs
Beyond just documentation, their hosted service has a feature called "Workflows" that could be exactly what we're looking for. I still need to look into this a bit to fully evaluate whether it would meet all of our needs. Link: https://redoc.ly/workflows/
After testing out the "Workflow" feature of their hosted service, I learned that it will not meet our editing-related needs. It's essentially a type of "Netlify for api-spec documentation sites," where it can auto rebuild our docs site on merge of a PR. Since this functionality is fairly straightforward to replicate with Netlify, I don't see any benefit over using Redocly's hosted service for it (this is especially true for us because we have our api spec in its own repo).
Conclusion:
Redocly seems to be the way to go for a solid documentation site. We could use their open source package to generate the site statically and host it on Netlify.