Files
bookhoard/docs/developer/api/sync/kobo-protocol.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

100 lines
2.2 KiB
Markdown

# Kobo Sync Protocol
Kobo uses a proprietary sync protocol with JSON payloads.
## Kobo Markup Sync
**Endpoint**: `POST /api/sync/kobo/markup`
**Auth**: Device token required
**Content-Type**: `application/json`
### Request Headers
| Header | Type | Required | Description |
|--------|------|-----------|-------------|
| Authorization | string | Yes | Bearer device token |
| x-kobo-device | string | Yes | JSON device info |
| Content-Type | string | Yes | application/json |
### Request Body
| Field | Type | Required | Description |
|--------|------|-----------|-------------|
| ReadingSync | array | No | Array of reading progress data |
| ReadingSync[].ContentId | string | Yes | Book UUID |
| ReadingSync[].PercentRead | float | Yes | Progress percentage (0-100) |
| ReadingSync[].EntitlementId | string | Yes | Kobo entitlement ID |
| ReadingSync[].RemainingTimeMinutes | integer | No | Estimated remaining time |
| ReadingSync[].LastModified | string | Yes | ISO 8601 timestamp |
| BookmarkSync | array | No | Array of bookmarks/highlights |
### Example Request
```http
POST /api/sync/kobo/markup
Authorization: Bearer device-token
x-kobo-device: {"DeviceId":"device-id","Model":"Kobo Clara"}
Content-Type: application/json
{
"ReadingSync": [
{
"ContentId": "book-uuid",
"PercentRead": 45.6,
"EntitlementId": "entitlement-id",
"RemainingTimeMinutes": 120,
"LastModified": "2026-01-30T20:00:00Z"
}
],
"BookmarkSync": [
{
"ContentId": "book-uuid",
"BookmarkText": "highlighted text",
"BookmarkType": "annotation",
"BookmarkTitle": "Chapter 3"
}
]
}
```
### Response (200 OK)
```json
{
"Status": "Success",
"MarkupsSynced": 5,
"BookmarksSynced": 3
}
```
## Kobo Library Fetch
**Endpoint**: `GET /api/sync/kobo/library`
**Auth**: Device token required
### Example Request
```http
GET /api/sync/kobo/library
Authorization: Bearer device-token
```
### Response (200 OK)
```json
{
"library_sync": [
{
"ContentId": "book-uuid",
"ContentType": "6",
"Title": "Book Title",
"Author": "Author Name",
"PercentRead": 42.3,
"PagesRemaining": 115,
"BookmarkCount": 3,
"LastModified": "2026-01-30T20:00:00Z"
}
]
}
```