docs(api): add KOReader sync protocol documentation

- sync_progress.md - POST /api/sync/koreader/progress
- get_metadata.md - GET /api/sync/koreader/metadata/:uuid
- get_library.md - GET /api/sync/koreader/library
- sync_bookmarks.md - POST /api/sync/koreader/bookmarks

KOReader device sync endpoints with device authentication
for progress, metadata, library, and bookmarks
This commit is contained in:
2026-02-08 12:38:50 -05:00
parent de4f2ba7d8
commit bab78c6c85
7 changed files with 368 additions and 0 deletions
@@ -0,0 +1,69 @@
# 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 |
## Try It Out
<!-- API Explorer will be inserted here in Phase 3 -->