API versioning, dispatch, docs, and actuator for FastAPI
Project description
csrd-versioning
API versioning, dispatch, docs, and actuator for FastAPI.
Package: csrd.versioning · Import: from csrd.versioning import compose_versioned_apps, configure_versioned_api
What's included
- Version dispatch — raw ASGI middleware for version-aware routing (streaming/SSE safe)
- Swagger UI — custom docs with version picker, dark mode, SRI hashes, plugin system
- Actuator — Spring Boot-style management endpoints (health, info, env)
- Exception handlers — structured
APIErrorResponseJSON for HTTP and validation errors - Dependency wiring — auto path-param injection, bearer guard opt-out
Installation
uv pip install "csrd-versioning @ git+ssh://git@github.com/csrd-api/fastapi-common.git#subdirectory=packages/versioning"
Quick start
from enum import Enum
from fastapi import FastAPI
from csrd.versioning import compose_versioned_apps, VersionedApiConfig, VersionedAppComposeConfig
class Versions(Enum):
Unversioned = "Unversioned"
V1 = "2025-06-20"
unv = FastAPI()
v1 = FastAPI()
app = compose_versioned_apps(
{Versions.Unversioned: unv, Versions.V1: v1},
config=VersionedAppComposeConfig(
api=VersionedApiConfig(prefix="api"),
),
)
Security notes
/actuator/env: TheShowValues.ALWAYSsetting exposes environment variable values. UseShowValues.NEVER(default) in production to redact sensitive data.- CORS: Add
CORSMiddlewarebefore callingconfigure_versioned_api. The version dispatch middleware must be the outermost middleware. Example:
app = FastAPI()
app.add_middleware(CORSMiddleware, allow_origins=["https://app.example.com"], ...)
configure_versioned_api(app, version_mapping, ...)
Dependencies
csrd-models,csrd-context(Tier 1 packages —csrd-versioningis Tier 3)- For JWT auth, use
csrd-authalongside this package
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file csrd_versioning-0.3.80.tar.gz.
File metadata
- Download URL: csrd_versioning-0.3.80.tar.gz
- Upload date:
- Size: 74.8 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
ed4b2e01050608152d33401444a4b5f2a7a904bbd8558ee730adbc07fda694f5
|
|
| MD5 |
650c927951aac8df9cc7b5d95cd5ddc7
|
|
| BLAKE2b-256 |
b87a629f7990a45fa969d6a944fc4e320787a2f6da2cea102730699f24a83d9c
|
Provenance
The following attestation bundles were made for csrd_versioning-0.3.80.tar.gz:
Publisher:
release.yml on csrd-api/fastapi-common
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
csrd_versioning-0.3.80.tar.gz -
Subject digest:
ed4b2e01050608152d33401444a4b5f2a7a904bbd8558ee730adbc07fda694f5 - Sigstore transparency entry: 1436016016
- Sigstore integration time:
-
Permalink:
csrd-api/fastapi-common@a51aea3af303e4504c28e3ba9536417cf9c5ef11 -
Branch / Tag:
refs/tags/v0.3.80 - Owner: https://github.com/csrd-api
-
Access:
private
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@a51aea3af303e4504c28e3ba9536417cf9c5ef11 -
Trigger Event:
workflow_dispatch
-
Statement type:
File details
Details for the file csrd_versioning-0.3.80-py3-none-any.whl.
File metadata
- Download URL: csrd_versioning-0.3.80-py3-none-any.whl
- Upload date:
- Size: 85.7 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
5dcbfc168879730de90da39eeab1897bcc20627dd2f0b9627ab844d9795f7833
|
|
| MD5 |
ed605ee54ddac3e003c759391389810f
|
|
| BLAKE2b-256 |
3198b5b142cabece12879551daa124e2b4e6ca4ccb2f5498338f561526592514
|
Provenance
The following attestation bundles were made for csrd_versioning-0.3.80-py3-none-any.whl:
Publisher:
release.yml on csrd-api/fastapi-common
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
csrd_versioning-0.3.80-py3-none-any.whl -
Subject digest:
5dcbfc168879730de90da39eeab1897bcc20627dd2f0b9627ab844d9795f7833 - Sigstore transparency entry: 1436016340
- Sigstore integration time:
-
Permalink:
csrd-api/fastapi-common@a51aea3af303e4504c28e3ba9536417cf9c5ef11 -
Branch / Tag:
refs/tags/v0.3.80 - Owner: https://github.com/csrd-api
-
Access:
private
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@a51aea3af303e4504c28e3ba9536417cf9c5ef11 -
Trigger Event:
workflow_dispatch
-
Statement type: