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:

$ python 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.4.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.4-py3-none-any.whl (24.2 kB view details)

Uploaded Python 3

File details

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

File metadata

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

File hashes

Hashes for openapi_to_asciidoc-0.1.4.tar.gz
Algorithm Hash digest
SHA256 771a95e04923de56ac91e6b3d42e022be0a1916ffb2094ffccfdb419b78bfc81
MD5 a0c4bdd80b1502d783d8fc0bc659b391
BLAKE2b-256 05bf0f49326c0beb20b8b9bf110b4089ba8290236dc78c9b20a09d677df2a815

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for openapi_to_asciidoc-0.1.4-py3-none-any.whl
Algorithm Hash digest
SHA256 4b83791b29b87ea1589a77e39b0ddd06597b399b8d7fcafff508acc562b05c6a
MD5 b70e1f6bf410bc5fa8f6b9c3c91989c5
BLAKE2b-256 ca10c46cab75db79c9323f77092d04886eb4eeb914bfd42c293fe97a107c0895

See more details on using hashes here.

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