Skip to main content

Contributing to the API Specification Docs

info

We’re currently making rapid changes to the product so our docs may be out of date. If you need help, please email yo@forem.com.

The v0 and v1 APIs are described with the OpenAPI 3 specification.

Swagger.io has great docs that are helpful to understand the specification better.

Where you can find the spec file

We auto-generate the v0 documentation from api_v0.yml, and v1 documentation from the api_v1.json, both located within the /docs directory. We use ReDoc to turn the OpenAPI 3 format into a readable and searchable HTML documentation.

Updating API docs

There should be very infrequent reasons to update the v0 documentation. If must make changes to the v0 API docs, make sure to bump the version at the top of api_v0.yml, in info.version.

v1 API documentation is generated from the file api_v1.json which is generated via the Forem source code via the rswag gem. To add to the documentation: create or add to an existing documentation test under spec/requests/api/v1/docs. Run the documentation suite via the command

SWAGGER_DRY_RUN=0 RAILS_ENV=test rails rswag PATTERN="spec/requests/api/v1/docs/*_spec.rb"

An OpenAPI 3 spec file will be generated at swagger/v1/api_v1.json. Copy this file to the root of the forem-docs project, then refer to the forem-docs readme to rebuild the documentation site.

Running and editing the docs locally

If you want to browse the documentation locally you can use:

yarn api-docs:serve

This will let you browse the auto-generated version of the doc locally, and it will reload the documentation after every change of the specification file.

Linting and validation

We use spectral and ibm-openapi-validator to validate the spec file. The validation is performed as a pre-commit hook.

You can also manually validate the document, running:

yarn api-docs:lint

If you have Visual Studio Code, we suggest you install the following extensions that enable validation and navigation within the spec file: