UI-Focused Routers#

Routers primarily serving the web frontend (ops-db-ui).

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:

@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#