32 lines
994 B
Python
32 lines
994 B
Python
from __future__ import annotations
|
|
|
|
from typing import Any
|
|
|
|
from fastapi import APIRouter, Depends
|
|
|
|
from govoplan_core.auth import ApiPrincipal, require_any_scope
|
|
|
|
from govoplan_campaign.backend.campaign.loader import load_campaign_schema, load_campaign_schema_ui
|
|
|
|
router = APIRouter(prefix="/schemas", tags=["schemas"])
|
|
|
|
|
|
@router.get("/campaign")
|
|
def get_campaign_schema(
|
|
principal: ApiPrincipal = Depends(require_any_scope("campaigns:campaign:read", "campaigns:campaign:create", "admin:roles:read")),
|
|
) -> dict[str, Any]:
|
|
"""Return the authoritative campaign JSON Schema used by the backend."""
|
|
|
|
del principal
|
|
return load_campaign_schema()
|
|
|
|
|
|
@router.get("/campaign/ui")
|
|
def get_campaign_schema_ui(
|
|
principal: ApiPrincipal = Depends(require_any_scope("campaigns:campaign:read", "campaigns:campaign:create", "admin:roles:read")),
|
|
) -> dict[str, Any]:
|
|
"""Return UI metadata paired with the campaign JSON Schema."""
|
|
|
|
del principal
|
|
return load_campaign_schema_ui()
|