Skip to main content

fastapi-router-variants

Latest Version MIT License Build Status Codecov semantic-release

Declare a route once and get path variants, API versioning and per-version OpenAPI documentation for FastAPI — for free.

fastapi-router-variants wraps APIRouter with a RouterWrapper that expands a single route declaration into every variant it should serve — multiple paths, multiple version prefixes (/v1/..., /v2/...), multiple mount prefixes, with deprecation handled automatically — then builds a separate OpenAPI schema per version and mounts Swagger UI / ReDoc / openapi.json for each of them.

Install

pip install fastapi-router-variants
# or
uv add fastapi-router-variants

Usage

from fastapi import FastAPI

from fastapi_router_variants import RouterDefaults, RouterWrapper


class ApiDefaults(RouterDefaults):
    prefix = "/api"           # mount every route under /api
    version = True            # force versioning on every route
    version_range = (1, 3)    # generate v1, v2, v3
    version_default = 3       # the version served on unversioned doc URLs


RouterWrapper.defaults = ApiDefaults()

router = RouterWrapper()


@router.get("/users/{user_id}")
def get_user(user_id: int) -> dict[str, int]:
    return {"id": user_id}


app = FastAPI()
app.include_router(router.base)

The single get declaration above registers GET /api/v1/users/{user_id}, GET /api/v2/users/{user_id} and GET /api/v3/users/{user_id}.

Path variants and flavors, versioning helpers, routing specs, per-version OpenAPI documents, custom categories and HTTP-error auto-documentation are all covered in the documentation.

Documentation

Full documentation is available at toilal.github.io/fastapi-router-variants. A preview of the in-progress develop branch is published at toilal.github.io/fastapi-router-variants/dev.

Requirements

  • Python ≥ 3.12
  • FastAPI ≥ 0.115

License

MIT © Rémi Alvergnat

CHANGELOG

v0.2.3 (2026-10-07)

Bug Fixes

  • openapi: Document effective include routes from FastAPI 0.137 (98eb2e6)

  • openapi: Rebuild included routes from their effective context (964c508)

v0.2.2 (2026-07-25)

Bug Fixes

  • openapi: Clarify WebSocket route rebinding (26360ed)

  • openapi: Document preserved dependency overrides (ce4e7f5)

  • openapi: Isolate flattened routes between apps (62b7161)

  • openapi: Preserve overrides when flattening routers (13b8175)

  • openapi: Remove project-specific changelog entry (36d8fc8)

  • openapi: Remove project-specific implementation notes (e2150fc)

v0.2.1 (2026-07-20)

Bug Fixes

  • Flatten lazily-mounted routers to avoid FastAPI >=0.139 memory regression (#15, 21db307)

v0.2.0 (2026-07-05)

Features

v0.1.0 (2026-07-05)

  • Initial Release

Changelog entries are generated automatically by python-semantic-release from Conventional Commits on release.

Metadata

Release files for fastapi-router-variants 0.2.3

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

Source distribution (sdist)

Source distribution for fastapi-router-variants 0.2.3
File Size Uploaded Provenance Actions
fastapi_router_variants-0.2.3.tar.gz 158.7 kB Without provenance Details for fastapi_router_variants-0.2.3.tar.gz

Built distribution (wheel)

Table of built distributions (wheels) for fastapi-router-variants 0.2.3
File Interpreter ABI Platform Actions
fastapi_router_variants-0.2.3-py3-none-any.whl Python 3 none any Details for fastapi_router_variants-0.2.3-py3-none-any.whl

Total release size: 185.1 kB

Release files / fastapi_router_variants-0.2.3.tar.gz

Download URL fastapi_router_variants-0.2.3.tar.gz
Size 158.7 kB
Tags Source
SHA-256 checksum
How to use checksums
5390372f7ea168caffeba11ea09ae34a5e170c3fa5622123dbaf1bb1d2de58de
BLAKE2b-256 checksum
How to use checksums
76bb4087b4128ea1efaed01d2d23f75a3c020ede9470a946cc1ac3a821d4515c
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via uv/0.12.23 {"installer":{"name":"uv","version":"0.12.23","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

Release files / fastapi_router_variants-0.2.3-py3-none-any.whl

Download URL fastapi_router_variants-0.2.3-py3-none-any.whl
Size 26.4 kB
Tags Python 3
SHA-256 checksum
How to use checksums
e7ee9d8baebc72324902cc2bef3aa1ed95f81386ad283935de873f35f470443e
BLAKE2b-256 checksum
How to use checksums
a1a3598bc2e83537a6ea108fd3897baacfc4c6db64f5d6ea75d1e72d00b5400c
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via uv/0.12.23 {"installer":{"name":"uv","version":"0.12.23","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

Security for fastapi-router-variants 0.2.3

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.

No provenance found

None of the files in this release were uploaded with provenance metadata.

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.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

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