# Runs API This document outlines the API endpoints for managing individual run instances in PySpur. ## Get Run **Description**: Retrieves detailed information about a specific run, including its status, inputs, outputs, and associated tasks. **URL**: `/run/{run_id}/` **Method**: GET **Parameters**: ```python run_id: str # ID of the run to retrieve ``` **Response Schema**: ```python class RunResponseSchema(BaseModel): id: str # Run ID workflow_id: str # ID of the workflow workflow_version_id: Optional[str] # ID of the workflow version workflow_version: Optional[WorkflowVersionResponseSchema] # Details of the workflow version status: RunStatus # Current status of the run start_time: datetime # When the run started end_time: Optional[datetime] # When the run ended (if completed) initial_inputs: Optional[Dict[str, Dict[str, Any]]] # Initial inputs to the workflow outputs: Optional[Dict[str, Dict[str, Any]]] # Outputs from the workflow tasks: List[TaskResponseSchema] # List of tasks in the run parent_run_id: Optional[str] # ID of the parent run (if applicable) run_type: str # Type of run (e.g., "interactive", "batch") output_file_id: Optional[str] # ID of the output file input_dataset_id: Optional[str] # ID of the input dataset message: Optional[str] # Additional information about the run duration: Optional[float] # Duration of the run in seconds percentage_complete: float # Percentage of tasks completed ``` ## List All Runs **Description**: Lists all runs across all workflows with pagination support, ordered by start time descending. This provides a global view of all workflow executions in the system. **URL**: `/run/` **Method**: GET **Query Parameters**: ```python page: int # Page number (default: 1, min: 1) page_size: int # Number of items per page (default: 10, min: 1, max: 100) ``` **Response Schema**: ```python List[RunResponseSchema] # List of run details ``` ## Get Run Tasks **Description**: Retrieves all tasks associated with a specific run, showing the execution details of each node in the workflow. **URL**: `/run/{run_id}/tasks/` **Method**: GET **Parameters**: ```python run_id: str # ID of the run ``` **Response Schema**: ```python List[TaskResponseSchema] ``` Where `TaskResponseSchema` contains: ```python class TaskResponseSchema(BaseModel): id: str # Task ID run_id: str # ID of the run node_id: str # ID of the node node_type: str # Type of the node status: TaskStatus # Status of the task (PENDING, RUNNING, COMPLETED, FAILED, PAUSED, CANCELED) start_time: Optional[datetime] # When the task started end_time: Optional[datetime] # When the task ended inputs: Optional[Dict[str, Any]] # Inputs to the task outputs: Optional[Dict[str, Any]] # Outputs from the task error: Optional[str] # Error message if the task failed is_downstream_of_pause: bool # Whether this task is downstream of a paused node ``` ## Delete Run **Description**: Permanently deletes a run and all its associated tasks. This operation cannot be undone. **URL**: `/run/{run_id}/` **Method**: DELETE **Parameters**: ```python run_id: str # ID of the run to delete ``` **Response**: 204 No Content ## Get Child Runs **Description**: Retrieves all child runs of a parent run, useful for tracking nested workflow executions. **URL**: `/run/{run_id}/children/` **Method**: GET **Parameters**: ```python run_id: str # ID of the parent run ``` **Response Schema**: ```python List[RunResponseSchema] # List of child run details ```