# Markup Sync

Sync markup highlights and annotations from Kobo device.

**Endpoint**: `POST /api/sync/kobo/markup`
**Auth**: Required (Device authentication)

## Device Authentication

This endpoint requires device authentication (not user JWT). Kobo devices authenticate using their device credentials and access tokens.

## Request Body

| Field | Type | Required | Description |
|--------|------|-----------|-------------|
| bookmarks | array | Yes | Array of bookmark/markup objects |

### Bookmark Object

| Field | Type | Required | Description |
|--------|------|-----------|-------------|
| BookmarkID | string | Yes | Unique bookmark ID |
| ContentID | string | Yes | Book content ID |
| StartPosition | integer | Yes | Highlight start position |
| EndPosition | integer | No | Highlight end position |
| Text | string | No | Highlighted text |
| Annotation | string | No | User annotation |
| DateCreated | string | Yes | ISO 8601 timestamp |
| Chapter | string | No | Chapter title |
| Hidden | boolean | No | Whether bookmark is hidden |

### Example Request

```json
{
  "bookmarks": [
    {
      "BookmarkID": "bookmark123",
      "ContentID": "book-uuid",
      "StartPosition": 1234,
      "EndPosition": 1456,
      "Text": "Highlighted text from book",
      "Annotation": "My annotation",
      "DateCreated": "2026-02-08T10:00:00Z",
      "Chapter": "Chapter 1",
      "Hidden": false
    }
  ]
}
```

## Response (200 OK)

```json
{
  "message": "Markup synced successfully",
  "synced_count": 1
}
```

## Error Responses

| Code | Description |
|------|-------------|
| 401 | Device authentication failed |
| 400 | Invalid request data |
| 404 | Device or book not found |
