Skip to content

jentic/jentic-openapi-tools

Jentic OpenAPI Tools

A comprehensive Python toolkit for parsing, validating, and transforming OpenAPI documents with pluggable backend architecture.

Discord Contributor Covenant License: Apache 2.0 PyPI version Python

Features

  • Pluggable Backend Architecture - Support for multiple parsing, validation, and transformation strategies via entry points
  • Type Safety - Full type hints with comprehensive type checking throughout
  • Multiple Input Formats - Accept OpenAPI documents from file URIs, JSON/YAML strings, or Python dictionaries
  • Flexible Output Types - Return results as dictionaries, strings, or custom types
  • Extensible Design - Easy integration of third-party backends through standard Python entry points
  • Path Security - Built-in defense against path traversal attacks
  • Production Ready - Comprehensive test coverage and error handling

Installation

Install all packages at once using the meta-package:

pip install jentic-openapi-tools

Or install individual packages as needed:

pip install jentic-openapi-parser
pip install jentic-openapi-validator
pip install jentic-openapi-transformer

Prerequisites:

  • Python 3.11 or higher
  • Node.js and npm (required for Redocly and Spectral backends)

Quick Start

Parsing OpenAPI Documents

from jentic.apitools.openapi.parser.core import OpenAPIParser

# Create parser with default backend
parser = OpenAPIParser()

# Parse from file
doc = parser.parse("file:///path/to/openapi.yaml")
print(doc["info"]["title"])

# Parse from YAML/JSON string
yaml_doc = """
openapi: 3.1.0
info:
  title: My API
  version: 1.0.0
paths: {}
"""
doc = parser.parse(yaml_doc)

Validating OpenAPI Documents

from jentic.apitools.openapi.validator.core import OpenAPIValidator

# Create validator
validator = OpenAPIValidator()

# Validate from file
result = validator.validate("file:///path/to/openapi.yaml")

if result.valid:
    print("Document is valid!")
else:
    for diagnostic in result.diagnostics:
        print(f"Error: {diagnostic.message}")

Transforming OpenAPI Documents

# Install with Redocly backend support
pip install jentic-openapi-transformer[redocly]
from jentic.apitools.openapi.transformer.bundler.core import OpenAPIBundler

# Bundle OpenAPI document with external reference resolution
bundler = OpenAPIBundler("redocly")
result = bundler.bundle("file:///path/to/openapi.yaml", return_type=dict)
print(result["info"]["title"])

Packages

This monorepo contains the following packages:

Package Description
jentic-openapi-tools Meta-package that installs all workspace packages
jentic-openapi-common Common utilities and shared functionality
jentic-openapi-datamodels OpenAPI data models and structures
jentic-openapi-parser OpenAPI document parsing with pluggable backends
jentic-openapi-traverse OpenAPI document traversal utilities
jentic-openapi-transformer OpenAPI document transformation and bundling
jentic-openapi-transformer-redocly Redocly-based transformation backend
jentic-openapi-validator OpenAPI document validation with pluggable backends
jentic-openapi-validator-redocly Redocly-based validation backend
jentic-openapi-validator-spectral Spectral-based validation backend
jentic-openapi-validator-speclynx SpecLynx ApiDOM-based validation backend

Each package has its own detailed README with comprehensive API documentation and examples.

Documentation

  • Development Guide - Setup instructions, testing, and development workflows
  • Contributing Guidelines - How to contribute to the project
  • Package READMEs - See individual package directories for detailed API documentation

Architecture

The Jentic OpenAPI Tools follow a modular architecture with a plugin-based backend system:

  • Core Packages - Provide base functionality and abstractions
  • Backend Packages - Implement specific parsing, validation, or transformation strategies
  • Entry Points - Backends register themselves via Python entry points for automatic discovery

This design allows you to:

  • Start with default backends and add advanced ones as needed
  • Implement custom backends for specific requirements
  • Use multiple backends simultaneously for comprehensive validation

Built and maintained by Jentic

About

Jentic OpenAPI Tools

Topics

Resources

License

Code of conduct

Contributing

Security policy

Stars

Watchers

Forks

Contributors 4

  •  
  •  
  •  
  •