Skip to main content

Path variants, API versioning and per-version OpenAPI documentation for FastAPI routers

Project description

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.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.

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

fastapi_router_variants-0.2.0.tar.gz (152.2 kB view details)

Uploaded Source

Built Distribution

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

fastapi_router_variants-0.2.0-py3-none-any.whl (23.9 kB view details)

Uploaded Python 3

File details

Details for the file fastapi_router_variants-0.2.0.tar.gz.

File metadata

  • Download URL: fastapi_router_variants-0.2.0.tar.gz
  • Upload date:
  • Size: 152.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.11.26 {"installer":{"name":"uv","version":"0.11.26","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}

File hashes

Hashes for fastapi_router_variants-0.2.0.tar.gz
Algorithm Hash digest
SHA256 05e43f4649c81948c4b74b248407f44dff9128ee74b68f7c714a4f29eb847314
MD5 f5252e3f3cb0adeab28e8e56c4d060f1
BLAKE2b-256 6aed143d22703737f6a0ffce26dd74cdc405a2dac3e002e31311dd099ee7274e

See more details on using hashes here.

File details

Details for the file fastapi_router_variants-0.2.0-py3-none-any.whl.

File metadata

  • Download URL: fastapi_router_variants-0.2.0-py3-none-any.whl
  • Upload date:
  • Size: 23.9 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.11.26 {"installer":{"name":"uv","version":"0.11.26","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}

File hashes

Hashes for fastapi_router_variants-0.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 4fff7dff9412002fd0e139697e76ab298f6546df0d38d1a8491fe3ba24773a04
MD5 25f5b9a2d9ad8797a2e83e9695af3558
BLAKE2b-256 0801ac00a928a6c7ef1a90503ce019f1436d99a14eb19c5f58b930e46bde2dee

See more details on using hashes here.

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