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.6.tar.gz (21.3 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.6-py3-none-any.whl (25.4 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: openapi_to_asciidoc-0.1.6.tar.gz
  • Upload date:
  • Size: 21.3 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.6.tar.gz
Algorithm Hash digest
SHA256 6d069f08d693f4ab1f5961c97e6bcdcc962ff19821c341c16a6f88c93124ca48
MD5 e326f68ff010f1c1602afbc9477496b0
BLAKE2b-256 3a4acf274965b366d9b84c1a9d51afcd86997161e390ffe21869cc508ca3474a

See more details on using hashes here.

Provenance

The following attestation bundles were made for openapi_to_asciidoc-0.1.6.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.6-py3-none-any.whl.

File metadata

File hashes

Hashes for openapi_to_asciidoc-0.1.6-py3-none-any.whl
Algorithm Hash digest
SHA256 f4c1349e8444324f0193be8f0856aa9f3874a07dca98d8ebf94bcec5532bee0b
MD5 8ee6343d8f132ae529ba74ecdaa0775e
BLAKE2b-256 c7ecf2bd1c600e204451a4b7d6731d74dd0ef8c6fc33884944ead4d43a307d9a

See more details on using hashes here.

Provenance

The following attestation bundles were made for openapi_to_asciidoc-0.1.6-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