Routes

This page documents the API route modules in fusion/api/routes/.


runs.py - Simulation Runs

Location:

fusion/api/routes/runs.py

Prefix:

/api/runs

Tag:

runs

Provides CRUD operations for simulation runs and real-time streaming.

Endpoints

POST /api/runs

Create and start a new simulation run.

# Request body
{
    "run_id": "my_simulation",       # Optional custom ID
    "name": "Test Run",              # Optional display name
    "template": "minimal.ini",       # Config template name
    "config_overrides": {            # Optional INI overrides
        "general_settings": {
            "num_requests": "1000"
        }
    }
}

# Response (201 Created)
{
    "id": "abc123def456",
    "name": "Test Run",
    "status": "PENDING",
    "template": "minimal.ini",
    "created_at": "2024-01-15T10:30:00Z",
    ...
}

GET /api/runs

List all runs with optional filtering and pagination.

Query parameters:

  • status - Filter by status (comma-separated: RUNNING,COMPLETED)

  • limit - Maximum results (default: 50, max: 100)

  • offset - Pagination offset (default: 0)

GET /api/runs/{run_id}

Get details for a specific run including progress information.

DELETE /api/runs/{run_id}

Cancel a running job (sends SIGTERM to process group) or delete a completed run.

GET /api/runs/{run_id}/logs

Stream log output via Server-Sent Events.

Query parameters:

  • from_start - Whether to send existing log content (default: true)

Event format:

event: log
data: {"line": "INFO: Starting simulation..."}

event: log
data: {"line": "INFO: Processing request 1/1000"}

event: done
data: {}

GET /api/runs/{run_id}/progress

Stream progress updates via Server-Sent Events.

Event format:

event: progress
data: {"current_erlang": 300.0, "total_erlangs": 3, "current_iteration": 1, "total_iterations": 2}

event: done
data: {}

configs.py - Configuration Templates

Location:

fusion/api/routes/configs.py

Prefix:

/api/configs

Tag:

configs

Provides access to INI configuration templates.

Endpoints

GET /api/configs/templates

List available configuration templates from fusion/configs/templates/.

# Response
{
    "templates": [
        {
            "name": "minimal.ini",
            "path": "fusion/configs/templates/minimal.ini",
            "description": "Minimal configuration for quick tests"
        },
        ...
    ]
}

GET /api/configs/templates/{name}

Get the content of a specific template.

# Response
{
    "name": "minimal.ini",
    "content": "[general_settings]\nnetwork = NSFNet\n..."
}

topology.py - Network Topology

Location:

fusion/api/routes/topology.py

Prefix:

/api/topology

Tag:

topology

Provides network topology data for visualization.

Endpoints

GET /api/topology

List available topologies.

# Response
{
    "topologies": ["NSFNet", "USbackbone60", "COST239", ...]
}

GET /api/topology/{name}

Get topology data with computed node positions.

# Response
{
    "name": "NSFNet",
    "nodes": [
        {"id": 0, "label": "0", "x": 100.5, "y": 200.3},
        {"id": 1, "label": "1", "x": 150.2, "y": 180.7},
        ...
    ],
    "links": [
        {"source": 0, "target": 1, "weight": 1.0},
        {"source": 0, "target": 2, "weight": 1.0},
        ...
    ],
    "metadata": {
        "num_nodes": 14,
        "num_links": 21
    }
}

Node positions are computed using a spring layout algorithm (NetworkX) and cached.


codebase.py - Codebase Explorer

Location:

fusion/api/routes/codebase.py

Prefix:

/api/codebase

Tag:

codebase

Provides codebase browsing and search functionality.

Endpoints

GET /api/codebase/tree

Get the directory tree structure for the FUSION codebase.

Query parameters:

  • path - Subdirectory to start from (default: project root)

  • depth - Maximum recursion depth (default: 3)

# Response
{
    "name": "fusion",
    "type": "directory",
    "children": [
        {
            "name": "core",
            "type": "directory",
            "children": [...]
        },
        {
            "name": "__init__.py",
            "type": "file",
            "size": 1234
        },
        ...
    ]
}

GET /api/codebase/file

Get the content of a specific file.

Query parameters:

  • path - File path relative to project root (required)

# Response
{
    "path": "fusion/core/simulation.py",
    "content": "\"\"\"Simulation engine...",
    "language": "python",
    "size": 15000
}

GET /api/codebase/search

Search for files by name pattern.

Query parameters:

  • query - Search pattern (required)

  • limit - Maximum results (default: 20)

# Response
{
    "results": [
        {"path": "fusion/core/simulation.py", "type": "file"},
        {"path": "fusion/sim/simulation_engine.py", "type": "file"},
        ...
    ],
    "total": 5
}

GET /api/codebase/modules

Get high-level module descriptions for the architecture view.

# Response
{
    "modules": [
        {
            "name": "core",
            "description": "Simulation engine and orchestrator",
            "path": "fusion/core",
            "key_files": ["simulation.py", "orchestrator.py"]
        },
        ...
    ]
}

artifacts.py - Run Artifacts

Location:

fusion/api/routes/artifacts.py

Prefix:

/api

Tag:

artifacts

Provides access to simulation output files.

Endpoints

GET /api/runs/{run_id}/artifacts

List output files for a completed run.

# Response
{
    "artifacts": [
        {
            "name": "erlang_results.json",
            "path": "data/output/NSFNet/my_run/erlang_results.json",
            "size": 4096,
            "modified": "2024-01-15T10:45:00Z"
        },
        ...
    ]
}

GET /api/runs/{run_id}/artifacts/{path:path}

Download a specific artifact file. Returns the file with appropriate MIME type.


system.py - System Endpoints

Location:

fusion/api/routes/system.py

Prefix:

/api

Tag:

system

System-level endpoints for health checks and monitoring.

Endpoints

GET /api/health

Health check endpoint for monitoring and load balancers.

# Response
{
    "status": "healthy",
    "version": "1.0.0",
    "database": "connected"
}