27 lines
702 B
Python
27 lines
702 B
Python
"""Export the backend OpenAPI schema to a versioned JSON artifact."""
|
|
|
|
from __future__ import annotations
|
|
|
|
import json
|
|
import sys
|
|
from pathlib import Path
|
|
|
|
BACKEND_ROOT = Path(__file__).resolve().parents[1]
|
|
sys.path.insert(0, str(BACKEND_ROOT))
|
|
|
|
|
|
def main() -> None:
|
|
"""Generate `openapi.json` from the FastAPI app definition."""
|
|
from app.main import app
|
|
|
|
# Importing the FastAPI app does not run lifespan hooks,
|
|
# so this does not require a DB.
|
|
out_path = BACKEND_ROOT / "openapi.json"
|
|
payload = app.openapi()
|
|
out_path.write_text(json.dumps(payload, indent=2, sort_keys=True), encoding="utf-8")
|
|
sys.stdout.write(f"{out_path}\n")
|
|
|
|
|
|
if __name__ == "__main__":
|
|
main()
|