Skip to main content

A tool used to convert OpenAPI 3.1 specifications to AsciiDoc

Project description

Commit Activity GitHub Issues License Build

OpenAPI Specification to AsciiDoc

Overview

The OpenAPI Specification to AsciiDoc is a set of Jinja2 templates that will help you create readable API documentation from a JSON OpenAPI Specification file.

AsciiDoc is a versatile plain-text writing format which you can use as it is, or can easily be converted to pdf.

Installation

To use the templates, you need to install the openapi_to_asciidoc module.

pip install -U openapi-to-asciidoc

Usage

To convert your OpenAPI Specification, type:

$ o2a -j <path-to-open-api-spec>.json -o <path-to-output-file>.adoc

or

$ openapi-to-asciidoc -j <path-to-open-api-spec>.json -o <path-to-output-file>.adoc

This will generate an AsciiDoc from your OpenAPI Specification.

The templates are created with the OpenAPI Specification v.3.1.0 as a base. If your specification contains sections that are not included or requires improvement, please feel to provide an PR or file an issue.

Objects

openapi-to-asciidoc creates objects with the help of Marshmallow in order to generate the templates. Each object of the specification follows the rules of its SchemaObject and can be generated independently, but most users will probably use the OpenAPISchema as their starting point.

All Objects of the OpenAPI specification are represented in objects.py and can be changed and modified depending on your needs. All but the OpenAPI object has their call to super() commented out to speed up processing. If you would like to just render a specific model, just enable the call to super() and you are good to go!

Example:

If you where to render and print just the Schema Object from an json string containing SchemaObject data, You would make the call to Super in the SchemaObject's init method, then you could just render it like this:

var data = get_json_data() # Get json data of the Schema object however you like

schema_as_asciidoc: SchemaObject = SchemaObjectSchema().load(data) # Render the SchemaObject

print(schema_as_asciidoc.result) # Print the asciidoc generated output

The code in convert.py is a good starting point to examine what's going on under the hood.

Requirements

In order to run the templates, you need to have following installed:

  • Python
  • pip

PIP Dependencies

Known bugs and issues

  1. Nested objects and lists. Objects using it's own Schema to render fields (Like the SchemaObjectSchema) might get less than perfect output if it contains a lot of nested objects.

  2. Page breaks. The generated document is just an AsciiDoc, so if you want to export it as a PDF for example, there is no functionality for page breaks.

  3. Special characters. Sometimes JSON specifications contains characters that are used for styles in AsciiDoc (like quotes '', asterisk *, HTML tags etc.). There is no handling of these characters, so some sections may look a bit odd. These issues often appear when an object or list is too nested for the template.

  4. Specification extensions There might be some inconsistencies in how the specification support is presented in the finished AsciiDoc document. If this is a feature that is widely used, the implementation may have to be tweaked to each individual template.

Limitations

The API Specification needs to be in JSON format, and built according to the OpenAPI Specification standard. If your specification contains sections that are not stated in the OpenAPI Specification, the template will not print that information in the generated document.

Possible improvements

  • Escaping of special characters Some characters like i.e html tags could possibly be handled better.

  • Schema object is referring to it self during parsing, which works fine for most use cases, but if you have Schema objects with nested properties for example, the output will look a bit strange. This could be handled differently, but given the Schema object's flexible structure, there might be a need to tweak this object to best suit your needs anyways.

Contribute

Want to help out? Read this.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

openapi_to_asciidoc-0.1.5.tar.gz (20.8 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

openapi_to_asciidoc-0.1.5-py3-none-any.whl (24.4 kB view details)

Uploaded Python 3

File details

Details for the file openapi_to_asciidoc-0.1.5.tar.gz.

File metadata

  • Download URL: openapi_to_asciidoc-0.1.5.tar.gz
  • Upload date:
  • Size: 20.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for openapi_to_asciidoc-0.1.5.tar.gz
Algorithm Hash digest
SHA256 8d699ca6e4d30c45a27361bd9b7b07f69c20ad99a9973e550024b39060875f5e
MD5 c931717a77e06541c18eae87611d133a
BLAKE2b-256 23d59208941c99ccde43661c026e0a533479c3c4912c86cb241fc3b03e574b87

See more details on using hashes here.

Provenance

The following attestation bundles were made for openapi_to_asciidoc-0.1.5.tar.gz:

Publisher: publish_pypi_prod.yml on luftfartsverket/openapi-to-asciidoc

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file openapi_to_asciidoc-0.1.5-py3-none-any.whl.

File metadata

File hashes

Hashes for openapi_to_asciidoc-0.1.5-py3-none-any.whl
Algorithm Hash digest
SHA256 084011dfe0b58b8606f3e06c72716910df1b2984a742f4c5708fa45f7579ee02
MD5 ecb8c6e3fcb416b2e7712b26009ce4d3
BLAKE2b-256 b5789a112bf0044b5faa784a93b3de92151580d3ebc23585a1b059268652f461

See more details on using hashes here.

Provenance

The following attestation bundles were made for openapi_to_asciidoc-0.1.5-py3-none-any.whl:

Publisher: publish_pypi_prod.yml on luftfartsverket/openapi-to-asciidoc

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page