Files
bookhoard/docs/developer/api/koreader/sync_bookmarks.md
T
john-okeefe b44e4e4709 docs: remove Phase X placeholders from API documentation
Clean up API documentation files by removing Phase X references:

Remove 'API Explorer will be inserted here in Phase X' placeholders from:
- 70+ API endpoint documentation files
- Authentication endpoints (login, logout, register, refresh)
- User endpoints (profile, settings, password)
- Device endpoints (registration, sync, shelves)
- Library endpoints (CRUD, folders, visibility)
- Media endpoints (items, progress, highlights, notes)
- Admin endpoints (users, analytics)
- Sync endpoints (Kobo, KOReader)
- OPDS endpoints
- Scanner endpoints
- Queue endpoints

These placeholders were from planning documents and have no meaning
to API consumers. The documentation is now clean and ready for use.
2026-02-13 21:50:44 -05:00

1.6 KiB

Sync Bookmarks

Sync bookmarks from KOReader device.

Endpoint: POST /api/sync/koreader/bookmarks Auth: Required (Device authentication)

Device Authentication

This endpoint requires device authentication (not user JWT). Devices authenticate using their device credentials.

Request Body

Field Type Required Description
device_id string (UUID) Yes Device UUID
bookmarks array Yes Array of bookmark objects

Bookmark Object

Field Type Required Description
book string Yes Book identifier
chapter string No Chapter title
page integer No Page number
position float Yes Position in document (0-1)
notes string No Bookmark notes
highlighted_text string No Highlighted text
time string Yes ISO 8601 timestamp
created_at string Yes ISO 8601 timestamp

Example Request

{
  "device_id": "550e8400-e29b-41d4-a716-446655440000",
  "bookmarks": [
    {
      "book": "book.epub",
      "chapter": "Chapter 1",
      "page": 25,
      "position": 0.125,
      "notes": "Important section",
      "highlighted_text": "Text to remember",
      "time": "2026-02-08T10:00:00Z",
      "created_at": "2026-02-08T10:00:00Z"
    }
  ]
}

Response (200 OK)

{
  "message": "Bookmarks synced successfully",
  "synced_count": 1
}

Error Responses

Code Description
401 Device authentication failed
400 Invalid request data
404 Device not found