"""WESP /api/sync/clients compat — maps to orchestrator farm hubs.""" from __future__ import annotations from fastapi import APIRouter, Depends, HTTPException, Query, status from app.modules.sync import repository as sync_repo from app.modules.sync.tenant import TenantContext, require_enterprise_zootech router = APIRouter() @router.get("/sync/clients") def list_sync_clients( enterprise_id: str = Query(...), tenant: TenantContext = Depends(require_enterprise_zootech), ): if tenant.enterprise_id != enterprise_id: raise HTTPException(status_code=status.HTTP_403_FORBIDDEN, detail="ENTERPRISE_FORBIDDEN") hubs = sync_repo.list_farm_hubs(enterprise_id) return [ { "id": h.id, "node_id": h.hub_site_id, "client_name": h.name, "status": h.status, "last_seen": h.last_seen.isoformat() if h.last_seen else None, } for h in hubs ]