Skip to main content

OpenAPI specification tools for analyzing, updating, and generating a CLI.

Project description

openapi-spec-tools

This is a collection of tools for using OpenAPI specifications. The OpenAPI community has a plethora of tools, and this is intended to supplement those. The tools here provide functionality that has not been readily available elsewhere.

Getting started

The project has been published to PyPi, so you should be able to install it with something like one of the following (depending on how you do Python package management):

% pip install openapi-spec-tools
% poetry add openapi-spec-tools

Generally, there are two intended ways to utilize this package:

  • Use oas and cli-gen as CLI tools to perform actions
  • Use the code in the Python modules for your own purpose

The sections below provide a brief description with links to more examples and details.

OAS

The oas script provides a tool for analyzing and modifying an OpenAPI spec. See OAS.md for more info.

Here's a trivial example:

(.env) % oas analyze models list pet.yaml 
Found 3 models:
    Error
    Pet
    Pets
(.env) % oas analyze models ops pet.yaml Pet
Found Pet is used by 3 operations:
    createPets
    listPets
    showPetById
(.env) % 

CLI Generation

The cli-gen tool allows users to create a user-friendly CLI using the OpenAPI spec and a layout file. The layout file provides the CLI structure and refers to the OpenAPI spec for details of operations. LAYOUT.md has more details about the layout file, and the CLI_GEN.md has more info about CLI generation.

Turn a simple layout like:

main:
  description: Manage pets
  operations:
    - name: add
      operationId: createPets

Into code that produces a CLI that has commands like:

% pets add --help
                                                                                                                                                        
 Usage: pets add [OPTIONS]                                             

 Create a pet
 
╭─ Options ────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╮
│ --id                 INTEGER                                                                                                                         │
│ --name               TEXT                                                                                                                            │
│ --tag                TEXT                                                                                                                            │
│ --owner              TEXT                                                                                                                            │
│ --api-host           TEXT                              API host address [env var: API_HOST]                                                          │
│ --api-key            TEXT                              API key for authentication [env var: API_KEY]                                                 │
│ --api-timeout        INTEGER                           API request timeout in seconds for a single request [env var: API_TIMEOUT] [default: 5]       │
│ --log                [critical|error|warn|info|debug]  Log level [env var: LOG_LEVEL] [default: warn]                                                │
│ --format             [table|json|yaml]                 Output format style [env var: OUTPUT_FORMAT] [default: table]                                 │
│ --style              [none|bold|all]                   Style for output [env var: OUTPUT_STYLE] [default: all]                                       │
│ --help                                                 Show this message and exit.                                                                   │
╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯
% 

See the examples in examples/ for some more complete works.

API Generation

The api-gen tool allows users to generate API code using the OpenAPI spec. The generated Python code provides type hints and helpful comments, but does no real checking of the arguments and/or return values. The return values are typically dictionaries instead of a data class, such as the models provided in the standard OpenAPI generator.

Contributing

The DEVELOPMENT.md has more information about getting setup as a developer.

The TODO.md has some ideas where this project can be improved and expanded -- please add your ideas here, or email Rick directly (rickwporter@gmail.com).

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_spec_tools-0.9.2.tar.gz (62.2 kB view details)

Uploaded Source

Built Distribution

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

openapi_spec_tools-0.9.2-py3-none-any.whl (80.8 kB view details)

Uploaded Python 3

File details

Details for the file openapi_spec_tools-0.9.2.tar.gz.

File metadata

  • Download URL: openapi_spec_tools-0.9.2.tar.gz
  • Upload date:
  • Size: 62.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.12.9

File hashes

Hashes for openapi_spec_tools-0.9.2.tar.gz
Algorithm Hash digest
SHA256 cd2d010c4f5b219e2ed0672efd0a6daca3e1690bcfeb532be00e04c46f26fc39
MD5 d5923225466a848499c9883bc5e06d77
BLAKE2b-256 175e339bf6317f6c40d24bb5923c7c0d3ce2b278ad2929a7fd4624645f374d01

See more details on using hashes here.

Provenance

The following attestation bundles were made for openapi_spec_tools-0.9.2.tar.gz:

Publisher: pypi_publish.yaml on rickwporter/openapi-spec-tools

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_spec_tools-0.9.2-py3-none-any.whl.

File metadata

File hashes

Hashes for openapi_spec_tools-0.9.2-py3-none-any.whl
Algorithm Hash digest
SHA256 a7464633df72800b4e717063a814a64359307a6b5841f6089decbb4e00f1e8dd
MD5 982fd8af33a038a8e3682c7c52d4a5f8
BLAKE2b-256 f60f4a05773ead9eac52a2e60439f4731778e6d31e089e548336f9fb2b92cd36

See more details on using hashes here.

Provenance

The following attestation bundles were made for openapi_spec_tools-0.9.2-py3-none-any.whl:

Publisher: pypi_publish.yaml on rickwporter/openapi-spec-tools

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