Files
bookhoard/docs/developer/api/kobo/markup_sync.md
T
john-okeefe c4607cd9b5 docs(api): complete backend documentation with all missing endpoints
Complete API documentation audit covering all backend endpoints.

Auth Endpoints:
- Fixed endpoint paths from /api/users/me/* to /api/auth/*
- Added update_email.md and update_username.md

Device Management:
- Device shelf operations (add, get, remove, clear)
- Device CRUD operations (update, delete)
- Registration management (pending, approve, reject)

Books Operations:
- Bulk delete and bulk update with normalization
- Download endpoint with format-specific headers

Conflict Resolution:
- Complete conflict management (list, get, resolve, delete)
- Bulk operations (bulk resolve, bulk dismiss, dismiss all)

Sync Protocols:
- KOReader: progress, metadata, library, bookmarks
- Kobo: markup, bookmarks, analytics, initialization, server sync

Scanner:
- Enhanced docs with manga/comic support
- Added 148-line comprehensive overview
- All formats documented (ebooks, comics, manga)

WebSocket:
- Comprehensive real-time sync API
- Messages, topics, authentication, examples

Documentation:
- Updated api-reference.md with all 122+ endpoints
- Updated index.md with new categories

Total: 36 new files, 6 modified files, 100% coverage
2026-02-08 12:39:46 -05:00

1.7 KiB

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

{
  "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)

{
  "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

Try It Out