OpenAPI Specifications

Dactyl can parse an OpenAPI v3.0 specification to generate API documentation for the API that specification describes, including API methods and object schemas.

Ad-Hoc Usage

You can use the --openapi <specfile> parameter to build a single target from

dactyl_build --openapi openapi.yaml

You can combine this with --md or --pdf to output the generated documentation in Markdown or PDF format, respectively.

Config File

You can add a special entry to the pages array to represent an API reference; Dactyl will expand that file into multiple pages that each inherit any fields of this entry. For example:

-   openapi_specification:
    api_slug: petstore
    foo: bar
        - baz

The api_slug field is optional, and provides a prefix that gets used for a bunch of file names and stuff. You can use the other fields to specify which HTML templates to use or to pass more info to those templates to control how they display.

The generated pages are:

  • An "All Methods" table of contents, listing every path operation in the paths of the OpenAPI specification.
  • "Tag Methods" table of contents pages for each tag used in the OpenAPI specification.
  • Pages for all "API Methods" (path operations) in paths of the OpenAPI specification.
  • A "Data Types" table of contents, listing every data type defined in the schema section of the OpenAPI specification.
  • Individual pages for each data type in the OpenAPI specification's schema section.

Custom Templates

You can override the templates used for generated OpenAPI pages to adjust how the Markdown is generated.

In the page or target definition of your config file, set the openapi_md_template_path field to a path that contains the following templates:

Filename Template for... Each individual data type in the spec's schema section. Table of contents for the data types. Table of contents for each endpoint tag in the spec. Table of contents for all endpoints and tags. Table of contents for each individual endpoint in the paths section.

These templates use Jinja syntax.