from typing import Any from fastapi import Depends, status from fastapi.routing import APIRouter from orchestrator.domain import SubscriptionModel from orchestrator.schemas import SubscriptionDomainModelSchema from orchestrator.security import opa_security_default from orchestrator.services.subscriptions import build_extended_domain_model from gso.services.subscriptions import get_active_router_subscriptions router = APIRouter(prefix="/subscriptions", tags=["Subscriptions"], dependencies=[Depends(opa_security_default)]) @router.get("/routers", status_code=status.HTTP_200_OK, response_model=list[SubscriptionDomainModelSchema]) def subscription_routers() -> list[dict[str, Any]]: """Retrieve all active routers subscriptions.""" subscriptions = [] for r in get_active_router_subscriptions(): subscription = SubscriptionModel.from_subscription(r["subscription_id"]) extended_model = build_extended_domain_model(subscription) subscriptions.append(extended_model) return subscriptions