44 lines
1.1 KiB
Python
44 lines
1.1 KiB
Python
"""Homepage routes — /, /version.
|
|
|
|
Minimal landing endpoints for the backend. Returns deployment metadata.
|
|
"""
|
|
from __future__ import annotations
|
|
|
|
from fastapi import APIRouter
|
|
from pydantic import BaseModel
|
|
|
|
from app.factory import DESCRIPTION, TITLE, VERSION
|
|
|
|
router = APIRouter(tags=["homepage"])
|
|
|
|
|
|
class VersionResponse(BaseModel):
|
|
"""Backend version info."""
|
|
|
|
version: str
|
|
title: str
|
|
description: str
|
|
status: str = "operational"
|
|
|
|
|
|
class HomeResponse(BaseModel):
|
|
"""Landing page response."""
|
|
|
|
service: str
|
|
version: str
|
|
docs: str = "/docs"
|
|
openapi: str = "/openapi.json"
|
|
health: str = "/health"
|
|
metrics: str = "/metrics"
|
|
|
|
|
|
@router.get("/", response_model=HomeResponse)
|
|
async def home() -> HomeResponse:
|
|
"""Landing page — returns service metadata."""
|
|
return HomeResponse(service=TITLE, version=VERSION)
|
|
|
|
|
|
@router.get("/version", response_model=VersionResponse)
|
|
async def version() -> VersionResponse:
|
|
"""Detailed version info for ops."""
|
|
return VersionResponse(version=VERSION, title=TITLE, description=DESCRIPTION)
|