Files
bookhoard/docs/developer/api/kobo/markup_sync.md
T
John O'Keefe 50282895f5 fix(docs): Work Order 2 — correct stale paths (11 docs + 3 Bruno)
Fix all wrong-path artifacts identified by the audit:
- Kobo sync endpoints (init/bookmark/markup/sync-from-server/analytics): add
  missing :token device segment (6 doc files incl. kobo-protocol.md)
- Highlights/notes update+delete: add missing /:id media-item prefix
- media-items/download_media_item.md: removed (static /uploads route, not an
  API endpoint; info about the file route is recoverable from OPDS docs)
- Bruno: /libraries/visible -> /visibility, /collections/books missing id,
  /audio/0 -> track_index
- operations/troubleshooting.md: same /libraries/visible -> /visibility fix
- media-items/get_audio_track.md + get_audio_chapters.md: /audio/0 examples fixed
- Deleted monolithic docs/developer/api-reference.md (duplicate of split docs)
- Fixed 4 stale entries in docs/developer/api/api-reference.md (split index)

Audit re-run: orphan docs 0, orphan Bruno 6 (all scenario files with literal IDs).
2026-10-24 14:44:19 -04:00

2.1 KiB

Markup Sync

Status: Coming Soon — Native Kobo sync is not yet supported on real devices; this endpoint is under active development and may change.

Sync markup highlights and annotations from Kobo device.

Endpoint: POST /api/sync/kobo/:token/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