# List Conflicts

List all sync conflicts for the current user.

**Endpoint**: `GET /api/conflicts`
**Auth**: Required

## Query Parameters

| Parameter     | Type          | Required | Description                                         |
| ------------- | ------------- | -------- | --------------------------------------------------- |
| status        | string        | No       | Filter by status (active, resolved, dismissed)      |
| media_item_id | string (UUID) | No       | Filter by media item                                |
| limit         | integer       | No       | Maximum number of conflicts to return (default: 50) |
| offset        | integer       | No       | Number of conflicts to skip (default: 0)            |

## Request Headers

| Header        | Type   | Required | Description  |
| ------------- | ------ | -------- | ------------ |
| Authorization | string | Yes      | Bearer token |

### Example Request

```http
GET /api/conflicts?status=active&limit=10
Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...
```

## Response (200 OK)

```json
{
  "conflicts": [
    {
      "id": "uuid",
      "media_item_id": "book-uuid",
      "media_item_title": "Sample Book",
      "device_progress": {
        "device_id": "device-uuid",
        "device_name": "My Kobo",
        "percentage": 75,
        "position": 1234,
        "updated_at": "2026-02-08T10:00:00Z"
      },
      "server_progress": {
        "percentage": 50,
        "position": 800,
        "updated_at": "2026-02-08T09:00:00Z"
      },
      "status": "active",
      "created_at": "2026-02-08T10:00:00Z"
    }
  ],
  "total": 5,
  "limit": 10,
  "offset": 0
}
```

## Error Responses

| Code | Description              |
| ---- | ------------------------ |
| 401  | Invalid or expired token |
