Skip to main content
Pre-release

This release is a pre-release and may not be stable for production use.

✨ panel-openapi

CI conda-forge pypi-version python-version

Give it an OpenAPI document, a path and a method, and get a working Panel form: a widget per parameter, a real HTTP request on submit, and the response rendered.

There is no form to write, no request to assemble, and nothing to keep in sync when the API changes. The schema already says what the inputs are.

A generated form with a live response beside it

Features

  • No form code — every path, query, header and body field becomes a widget, chosen from its schema: enums become radio buttons or selects, bounded numbers become sliders, format: date becomes a date picker.
  • Any spec source — a URL, a plain dict, or a FastAPI app's api.openapi(). OpenAPI 3.0 and 3.1 both work.
  • Real requests — submit issues the call with httpx and renders the status and body. Required fields are enforced from the document.
  • Reactive targeting — path, method and base_url are parameters, so one form can serve any operation in the document.
  • Record editing — OpenAPIRecordEditor loads a record from a GET and sends the edits to the matching PATCH/PUT/POST. A PATCH sends only the fields that changed, readOnly fields are never sent, and an optional dialog shows the diff before anything leaves the browser.
  • Yours to rearrange — form and response are plain Panel containers, and the introspection helpers (load_openapi, collect_fields, schema_to_widget) are public if you would rather build the form yourself.

📖 Documentation — quickstart, how-to guides and API reference.

Pin your version!

This project is in its early stages, so if you find a version that suits your needs, it’s recommended to pin your version, as updates may introduce changes.

Installation

Install it via pip:

pip install panel-openapi

Usage

Point a form at one operation of a document:

import panel as pn

from panel_openapi import OpenAPIForm

pn.extension()

form = OpenAPIForm(
    "https://petstore3.swagger.io/api/v3/openapi.json",
    base_url="https://petstore3.swagger.io/api/v3",
    path="/pet/{petId}",
    method="get",
)

form.servable()
panel serve app.py --show

Or load a record and edit it, sending only what changed:

from panel_openapi import OpenAPIRecordEditor

editor = OpenAPIRecordEditor(
    spec,
    base_url="https://api.example.com",
    path="/articles/{article_id}",   # GET to read, PATCH found automatically
    confirm=True,                    # show the diff before saving
)

editor.servable()

See examples/ for runnable scripts against real APIs, and the documentation for how-to guides.

Development

git clone https://github.com/panel-extensions/panel-openapi
cd panel-openapi

For a simple setup use uv:

uv venv
source .venv/bin/activate # on linux. Similar commands for windows and osx
uv pip install -e .[dev]
pre-commit run install
pytest tests

For the full Github Actions setup use pixi:

pixi run pre-commit-install
pixi run postinstall
pixi run test

This repository is based on copier-template-panel-extension (you can create your own Panel extension with it)!

To update to the latest template version run:

pixi exec --spec copier --spec ruamel.yaml -- copier update --defaults --trust

Note: copier will show Conflict for files with manual changes during an update. This is normal. As long as there are no merge conflict markers, all patches applied cleanly.

❤️ Contributing

Contributions are welcome! Please follow these steps to contribute:

  1. Fork the repository.
  2. Create a new branch: git checkout -b feature/YourFeature.
  3. Make your changes and commit them: git commit -m 'Add some feature'.
  4. Push to the branch: git push origin feature/YourFeature.
  5. Open a pull request.

Please ensure your code adheres to the project's coding standards and passes all tests.

Metadata

Release files for panel-openapi 0.1.0a0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for panel-openapi 0.1.0a0
File Size Uploaded Provenance
panel_openapi-0.1.0a0.tar.gz 669.9 kB With provenance Details

Built distribution (wheel)

Table of built distributions (wheels) for panel-openapi 0.1.0a0
File Interpreter ABI Platform
panel_openapi-0.1.0a0-py3-none-any.whl Python 3 none any Details

Total release size: 692.6 kB

Release files / panel_openapi-0.1.0a0.tar.gz

Download URL panel_openapi-0.1.0a0.tar.gz
Size 669.9 kB
Tags Source
SHA-256 checksum
How to use checksums
2e8267bedfeb35ccf5ebc9251b7873d6516cdd73349344977f910487416d0b54
BLAKE2b-256 checksum
How to use checksums
41a00fc6dcd6f3f75948d173d84cd1e0e13932242451d27968a4971160a2690c
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Jul 29, 2026.

Transparency log

Release files / panel_openapi-0.1.0a0-py3-none-any.whl

Download URL panel_openapi-0.1.0a0-py3-none-any.whl
Size 22.7 kB
Tags Python 3
SHA-256 checksum
How to use checksums
e21a3a093e49d6f4be5976279ef04809daa03174bef4799f198088c66c5acf34
BLAKE2b-256 checksum
How to use checksums
db8e4fc0ed9d3d4a7cdf241e3728b1bb15bcc6467d61151e3899bb2f35002adf
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Jul 29, 2026.

Transparency log

Security for panel-openapi 0.1.0a0

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

Full provenance

All 2 files in this release have been uploaded with provenance metadata.

Select from 2 files

Attestation for panel_openapi-0.1.0a0.tar.gz

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Jul 29, 2026.

Transparency log

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

Release history Release notifications | RSS feed

This release
Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page