# Get Scan Status

Get the status of a specific scan job.

**Endpoint**: `GET /api/scanner/status/:jobId`
**Auth**: Required (Admin only)

## Path Parameters

| Parameter | Type | Required | Description |
|-----------|------|-----------|-------------|
| jobId | string (UUID) | Yes | Scan job UUID |

## Request Headers

| Header | Type | Required | Description |
|--------|------|-----------|-------------|
| Authorization | string | Yes | Bearer token (must have admin role) |

### Example Request

```http
GET /api/scanner/status/550e8400-e29b-41d4-a716-446655440000
Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...
```

## Response (200 OK)

```json
{
  "job_id": "uuid",
  "library_id": "uuid",
  "status": "in_progress",
  "started_at": "2026-02-08T10:00:00Z",
  "updated_at": "2026-02-08T10:05:00Z",
  "progress": {
    "total_files": 1523,
    "scanned_files": 850,
    "added_files": 125,
    "updated_files": 45,
    "failed_files": 3,
    "percentage": 55.8
  },
  "errors": [
    {
      "file_path": "/path/to/file.epub",
      "error": "Invalid EPUB format"
    }
  ]
}
```

## Status Values

| Status | Description |
|--------|-------------|
| pending | Job is queued |
| in_progress | Job is currently running |
| completed | Job completed successfully |
| failed | Job failed with errors |
| cancelled | Job was cancelled |

## Error Responses

| Code | Description |
|------|-------------|
| 401 | Invalid or expired token |
| 403 | User does not have admin privileges |
| 404 | Job not found |
