Vishesh 'ironeagle' Bangotra 51ffb4aae9 feat: codegen routes — sanitize resource names, --inject-request/--package, expand form bodies
codegen_routes.generate_routes now sanitizes resource identifiers (fetch-requests -> fetch_requests), optionally prepends 'request: Request' (inject_request) and emits <resource>/routes.py packages with __init__.py (package). multipart/form-data and x-www-form-urlencoded bodies expand to per-property UploadFile/File/Form params instead of an opaque dict; spec paths are normalized to forward slashes to avoid Windows escape issues. Adds CLI flags --inject-request/--package, 7 focused tests, and refreshes lib/wiki/MCP docs to the real CLI.
2026-10-13 03:26:31 +05:30
2026-09-13 21:05:16 +05:30

openapi_first

Summary

FastAPI OpenAPI First — strict OpenAPI-first application bootstrap for FastAPI.

FastAPI OpenAPI First is a contract-first infrastructure library that enforces OpenAPI as the single source of truth for FastAPI services.

The library removes decorator-driven routing and replaces it with deterministic, spec-driven application assembly. Every HTTP route, method, and operation is defined in OpenAPI first and bound to Python handlers explicitly via operationId.


Installation

Install using pip:

pip install openapi-first

Or with Poetry:

poetry add openapi-first

Quick Start

Minimal OpenAPI-first FastAPI application:

from openapi_first import app
import my_service.routes as routes

api = app.OpenAPIFirstApp(
    openapi_path="openapi.yaml",
    routes_module=routes,
    title="My Service",
    version="1.0.0",
)

OperationId-driven HTTP client:

from openapi_first.loader import load_openapi
from openapi_first.client import OpenAPIClient

spec = load_openapi("openapi.yaml")
client = OpenAPIClient(spec)

response = client.get_health()

Architecture

The library is structured around four core responsibilities:

  • loader: Load and validate OpenAPI 3.x specifications (JSON/YAML).
  • binder: Bind OpenAPI operations to FastAPI routes via operationId.
  • app: OpenAPI-first FastAPI application bootstrap.
  • client: OpenAPI-first HTTP client driven by the same specification.
  • errors: Explicit error hierarchy for contract violations.

Public API

The supported public API consists of the following top-level modules:

  • openapi_first.app
  • openapi_first.binder
  • openapi_first.loader
  • openapi_first.client
  • openapi_first.errors

Design Guarantees

  • OpenAPI is the single source of truth.
  • No undocumented routes can exist.
  • No OpenAPI operation can exist without a handler or client callable.
  • All contract violations fail at application startup or client creation.
  • No hidden FastAPI magic or implicit behavior.
  • Deterministic, testable application assembly.

Description
No description provided
Readme MIT 1.2 MiB
Languages
Python 100%