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()