UI-Focused Routers ================== Routers primarily serving the web frontend (ops-db-ui). .. contents:: Table of Contents :local: :depth: 2 Transfer Router --------------- **Path**: ``/api/transfer`` **Purpose**: Data transfer pipeline monitoring **Key endpoints**: * ``GET /overview`` - Transfer statistics * ``GET /raw-packages`` - List packages with pagination * ``WS /ws/overview`` - Real-time WebSocket updates * ``POST /data-transfer/{id}/reset`` - Reset failed transfer **Authentication**: GitHub OAuth (JWT) **Example**: .. code-block:: python @router.get("/api/transfer/overview") async def get_transfer_overview( current_user: User = Depends(get_current_user), db: Session = Depends(get_db) ): return { "total_packages": db.query(RawDataPackage).count(), "active_transfers": db.query(DataTransfer).filter( DataTransfer.status == "active" ).count() } Observing Program Router ------------------------- **Path**: ``/observing_program`` **Purpose**: Manage observation programs **Key endpoints**: * ``GET /`` - List programs * ``POST /`` - Create program * ``GET /{id}`` - Get program details * ``PUT /{id}`` - Update program Sources Router -------------- **Path**: ``/sources`` **Purpose**: Astronomical source catalog queries **Key endpoints**: * ``GET /`` - List/search sources * ``GET /{id}/chip`` - Source card view * ``GET /{id}/details`` - Detailed info * ``POST /resolve`` - Name resolution **Features**: * Cone search by coordinates * Name resolution (SIMBAD/NED) * Multiple detail levels Visibility Router ----------------- **Path**: ``/visibility`` **Purpose**: Source visibility calculations **Key endpoints**: * ``GET /{source_id}`` - Visibility for source * ``GET /heatmap`` - Heatmap data * ``POST /precalculate`` - Trigger precalculation (admin) **Characteristics**: * Computationally expensive * Heavily cached * Time-based queries Next Steps ---------- * :doc:`operations-routers` - Operations-focused routers * :doc:`../../architecture/endpoint-categories` - Full categorization