# Jobs API Endpoints for managing background jobs. ## Get Job Status **Endpoint**: `GET /api/job_status.php` Get the current status of a background job. ### Parameters - `job_id` (required): Job ID ### Response ```json { "status": "success", "job_status": "completed", "job": { "id": 456, "job_type": "hotspot_analysis", "status": "completed", "progress": 100, "params": { ... }, "result": { "dataset_id": 789, "dataset_name": "Hot Spot Results", "table_name": "spatial_data_789" }, "created_at": "2024-01-01T00:00:00Z", "started_at": "2024-01-01T00:01:00Z", "finished_at": "2024-01-01T00:05:00Z" } } ``` ### Job Statuses - `queued`: Job is waiting to be processed - `running`: Job is currently being processed - `completed`: Job completed successfully - `failed`: Job failed with an error ### Example ```bash curl -X GET "https://example.com/api/job_status.php?job_id=456" \ -H "Cookie: PHPSESSID=..." ``` ## Cancel Job **Endpoint**: `POST /api/job_cancel.php` Cancel a queued or running job. ### Request Body ```json { "job_id": 456 } ``` ### Response ```json { "status": "success", "message": "Job cancelled successfully" } ``` ### Notes - Only queued or running jobs can be cancelled - Completed or failed jobs cannot be cancelled - Users can only cancel their own jobs (admins can cancel any job) ## List User Jobs **Endpoint**: `GET /api/jobs/status.php` List all jobs for the current user. ### Parameters - `status` (optional): Filter by status (queued, running, completed, failed) - `job_type` (optional): Filter by job type - `limit` (optional): Maximum results (default: 50) - `offset` (optional): Result offset (default: 0) ### Response ```json { "status": "success", "jobs": [ { "id": 456, "job_type": "hotspot_analysis", "status": "completed", "progress": 100, "created_at": "2024-01-01T00:00:00Z", "finished_at": "2024-01-01T00:05:00Z" } ], "total": 10, "limit": 50, "offset": 0 } ``` ### Example ```bash curl -X GET "https://example.com/api/jobs/status.php?status=running&limit=10" \ -H "Cookie: PHPSESSID=..." ``` ## Job Result Structure Completed jobs include a `result` field with job-specific information: ### Hot Spot Analysis Result ```json { "dataset_id": 789, "dataset_name": "Hot Spot Results", "table_name": "spatial_data_789", "row_count": 1000, "storage_type": "table" } ``` ### Outlier Analysis Result ```json { "dataset_id": 790, "dataset_name": "Outlier Results", "table_name": "spatial_data_790", "row_count": 50, "outlier_count": 50 } ``` ### Nearest Analysis Result ```json { "dataset_id": 791, "dataset_name": "Nearest Results", "table_name": "spatial_data_791", "row_count": 500, "source_dataset_id": 123, "target_dataset_id": 124 } ``` ## Error Handling Failed jobs include an `error_message` field: ```json { "status": "failed", "error_message": "Dataset not found", "job": { "id": 456, "status": "failed", "error_message": "Dataset not found" } } ``` ## Related Documentation - [Analysis API](analysis.md) - [Workers](../workers/index.md) - [Architecture Overview](../architecture.md)