info: name: Sync Single Bookmark type: http seq: 5 http: method: POST url: '{{base_url}}/api/sync/kobo/bookmark' auth: inherit headers: - key: Content-Type value: application/json - key: x-kobo-device value: '{"DeviceId":"{{kobo_device_id}}","Model":"Kobo Clara"}' body: type: json json: ContentId: book-uuid BookmarkText: Bookmarked passage BookmarkType: annotation BookmarkTitle: Chapter 3 docs: |- ## Sync Single Bookmark Synchronizes an individual bookmark/highlight from Kobo device. **Method:** POST **Endpoint:** /api/sync/kobo/bookmark **Authentication:** Bearer token **Headers:** - `Authorization`: Bearer {{kobo_device_token}} - `x-kobo-device`: Device information JSON **Request Body:** - `ContentId` (string): Book UUID - `BookmarkText` (string): Highlighted text or bookmark description - `BookmarkType` (string): Type of bookmark - `annotation`: Highlighted text passage - `note`: Personal note - `bookmark`: Location marker - `BookmarkTitle` (string): Reference title (e.g., chapter name) - `ChapterID` (string, optional): Chapter identifier - `DateCreated` (string, optional): ISO 8601 timestamp - `highlight_color` (string, optional): Color name (yellow, green, blue, pink, orange) **Response:** - `id` (string): Server bookmark ID - `ContentId` (string): Associated book UUID - `status` (string): `created`, `updated`, `skipped` (duplicate) - `timestamp` (string): Server timestamp - `url` (string): API URL to retrieve bookmark **Status Codes:** - 201: Bookmark created - 200: Bookmark updated (duplicate found) - 409: Duplicate bookmark (unchanged) - 401: Unauthorized - 400: Invalid bookmark data **Single Bookmark Sync vs Batch:** - **Single bookmark endpoint:** Real-time, immediate sync - **Batch markup endpoint:** Deferred, periodic sync - Use single when user explicitly creates highlight - Use batch for periodic background sync **Kobo Trigger:** - User highlights text → immediate single sync - User adds note → immediate single sync - Device goes online → batch sync of all changes **Duplicate Detection:** - Same ContentId + similar BookmarkText + same location - Updates existing if text modified - Skips if identical bookmark exists - Preserves creation date of original **Use Cases:** - Real-time highlight sync - Instant note backup - Immediate annotation sharing - Quick single annotation update - Testing annotation sync **Notes:** - Much faster than full markup sync - Lower bandwidth usage - Ideal for intermittent connectivity - Can be called multiple times safely