- Update search_media_items.md with comprehensive fuzzy filter documentation
- Document all filter parameters (author_filter, series_filter, genre_filter, language_filter)
- Document autocomplete parameters (authors, genres, series, languages)
- Add fuzzy search examples (asimov → Asimov, Isaac)
- Add exact match with quotes examples ("Foundation and Empire")
- Add combined search + filters examples
- Add field-specific search examples for autocomplete
- Document error responses (400, 401, 404)
- Remove deprecated filter_sort_media_items.md (functionality moved to search endpoint)
- Update api-reference.md to reflect unified endpoint
- Update api/api-reference.md to reflect unified endpoint
All text filters use pg_trgm fuzzy matching (threshold: 0.3) except years/booleans which are exact.
9.6 KiB
9.6 KiB
API Documentation
Complete reference for Bookhoard REST API endpoints.
Quick Links
- Authentication - User registration, login, tokens
- Users - Profile management
- Admin - Admin operations (user management)
- Libraries - Library management
- Books - Bulk book operations and downloads
- Media Items - Media item operations
- Progress - Reading progress tracking
- Notes - User notes management
- Highlights - Book highlights
- Ratings - Book ratings
- Devices - Device registration, sync, and shelf management
- Analytics - Usage statistics
- Book Matching - Search and link books
- Collections - See Collections API
- Conflicts - Sync conflict resolution
- Queue - Sync queue management
- Scanner - Library scanning and watch mode (admin)
- OPDS - Open Publication Distribution
- KOReader - KOReader sync protocol
- Kobo - Kobo sync protocol
- WebSocket - Real-time sync events
Authentication
- POST /api/auth/register - Register new user
- POST /api/auth/login - User login
- POST /api/auth/refresh - Refresh access token
- POST /api/auth/logout - User logout
- GET /api/auth/profile - Get user profile
- PUT /api/auth/profile - Update user profile (self-edit)
- PUT /api/auth/profile/:id - Update user profile (admin)
- DELETE /api/auth/profile - Delete account (self)
- DELETE /api/auth/profile/:id - Delete user (admin)
- PUT /api/auth/password - Change password (self)
- PUT /api/auth/password/:id - Reset password (admin)
- PUT /api/auth/theme - Update theme preference
Admin
See Admin Operations
- GET /api/auth/users - List all users (admin)
- PUT /api/auth/users/:id/max-devices - Update user device limit (admin)
Users & Profiles
See User Management
Libraries
- GET /api/libraries/types - Get library types
- POST /api/libraries - Create library (admin)
- GET /api/libraries - List libraries (admin)
- GET /api/libraries/:id - Get library (admin)
- PUT /api/libraries/:id - Update library (admin)
- DELETE /api/libraries/:id - Delete library (admin)
- POST /api/libraries/:id/folders - Add library folder (admin)
- GET /api/libraries/:id/folders - Get library folders (admin)
- DELETE /api/libraries/:id/folders - Delete library folder (admin)
- GET /api/libraries/:id/stats - Get library statistics (admin)
- GET /api/libraries/:id/media-items - Get library media items (admin)
- POST /api/libraries/:id/scan - Scan library (admin)
- GET /api/libraries/visibility - Get visible libraries
- POST /api/libraries/visibility - Set library visibility
Media Items
- GET /api/media-items - List media items
- GET /api/media-items/:id - Get media item details
- POST /api/media-items/bulk-delete - Bulk delete media items
- POST /api/media-items/bulk-update - Bulk update media items (tags/contributors with normalization)
- GET /api/media-items/:uuid/download - Download media item file
- POST /api/media-items/:id/rating - Create rating
- GET /api/media-items/:id/rating - Get rating
- PUT /api/media-items/:id/rating - Update rating
- DELETE /api/media-items/:id/rating - Delete rating
- GET /api/media-items/:id/progress - Get reading progress
- PUT /api/media-items/:id/progress - Update reading progress
- DELETE /api/media-items/:id/progress - Delete reading progress
- GET /api/media-items/:id/notes - Get notes
- POST /api/media-items/:id/notes - Create note
- GET /api/media-items/:id/notes/:noteId - Get note
- PUT /api/media-items/:id/notes/:noteId - Update note
- DELETE /api/media-items/:id/notes/:noteId - Delete note
- GET /api/media-items/:id/highlights - Get highlights
- POST /api/media-items/:id/highlights - Create highlight
- GET /api/media-items/:id/highlights/:highlightId - Get highlight
- PUT /api/media-items/:id/highlights/:highlightId - Update highlight
- DELETE /api/media-items/:id/highlights/:highlightId - Delete highlight
- POST /api/media-items - Create media item (admin)
- PUT /api/media-items/:id - Update media item (admin)
- DELETE /api/media-items/:id - Delete media item (admin)
Reading Progress
- GET /api/progress/:id - Get universal progress
- POST /api/progress/:id - Update universal progress
- GET /api/progress/:id/history - Get progress history
Notes & Highlights
See Notes Management and Highlights Management
Ratings
See Ratings System
Device Management
See Device Registration & Sync
- POST /api/devices/register - Initiate device registration
- POST /api/devices/register/status - Check registration status
- GET /api/devices - List devices
- GET /api/devices/:id - Get device
- PUT /api/devices/:id - Update device
- DELETE /api/devices/:id - Delete device
- GET /api/devices/pending - List pending registrations (admin)
- GET /api/devices/approve/:registration_id - Approve registration (admin)
- POST /api/devices/reject/:registration_id - Reject registration (admin)
- POST /api/devices/:id/shelves - Add to shelf (Kobo)
- GET /api/devices/:id/shelves - Get shelf contents
- DELETE /api/devices/:id/shelves - Remove from shelf
- DELETE /api/devices/:id/shelves/clear - Clear shelf
Analytics
See Usage Analytics
- GET /api/analytics/reading-stats - Get reading statistics
- GET /api/analytics/device-usage - Get device usage stats
- GET /api/analytics/popular-books - Get popular books
Book Matching & Linking
See Book Matching
- GET /api/media-items/search - Search media items
- POST /api/sync/books/query - Query books for matching
- POST /api/devices/:deviceId/sync/link-book - Link book to media item
- GET /api/devices/:deviceId/sync/unlinked-books - Get unlinked books
- POST /api/sync/bulk-link-books - Bulk link books
- POST /api/sync/auto-link-books - Auto-link books
- GET /api/sync/unlinked-books/:id/suggestions - Get match suggestions
- GET /api/devices/:id/file-aliases - Get file aliases
- POST /api/devices/:id/file-aliases - Create file alias
- PUT /api/devices/:id/file-aliases/:aliasId - Update file alias
- DELETE /api/devices/:id/file-aliases/:aliasId - Delete file alias
- GET /api/books/match - Get book matches
Collections
See Collections API or Collections Endpoints
Conflicts
- GET /api/conflicts - List conflicts
- GET /api/conflicts/:id - Get conflict details
- POST /api/conflicts/:id/resolve - Resolve conflict
- DELETE /api/conflicts/:id - Delete conflict
- POST /api/conflicts/dismiss-all - Dismiss all resolved
- POST /api/conflicts/bulk-resolve - Bulk resolve conflicts
- POST /api/conflicts/bulk-dismiss - Bulk dismiss conflicts
Queue Management
See Sync Queue
- GET /api/queue/devices/:device_id/stats - Get device queue stats
- GET /api/queue/devices/:device_id/items - List device queue items
- POST /api/queue/items/:item_id/retry - Retry queue item
- DELETE /api/queue/items/:item_id - Delete queue item
- DELETE /api/queue/devices/:device_id/clear - Clear device queue
- GET /api/queue/items - List all queue items (admin)
Scanner (Admin)
- Scanner Overview - Supported formats, metadata extraction, and features
- POST /api/scanner/scan - Scan library (one-time) (ebooks, manga, comics)
- POST /api/scanner/start - Start automated scanner
- POST /api/scanner/stop - Stop automated scanner
- GET /api/scanner/status/:jobId - Get scan job status
- POST /api/scanner/watch/start - Start watch mode (real-time monitoring)
- POST /api/scanner/watch/stop - Stop watch mode
- GET /api/scanner/watch/status - Get watch mode status
OPDS
See OPDS Feeds
- GET /opds/devices/:deviceId/catalog - Get device catalog
- GET /opds/devices/:deviceId/search - Search device catalog
- GET /opds/devices/:deviceId/nav - Get device navigation
- GET /opds/devices/:deviceId/download/:bookId - Download book
- GET /opds/devices/:deviceId/cover/:bookId - Get cover image
- GET /opds/devices/:deviceId/formats/:bookId - List formats
KOReader Sync Protocol
See KOReader Sync and Sync Protocol
- POST /api/sync/koreader/progress - Sync reading progress
- GET /api/sync/koreader/metadata/:uuid - Get book metadata
- GET /api/sync/koreader/library - Get device library
- POST /api/sync/koreader/bookmarks - Sync bookmarks
Kobo Sync Protocol
See Kobo Sync and Sync Protocol
- POST /api/sync/kobo/markup - Sync markup highlights
- POST /api/sync/kobo/bookmark - Sync bookmarks
- POST /api/sync/kobo/v1/analytics/gettests - Analytics endpoint
- GET /api/sync/kobo/v1/initialization - Initialize Kobo sync
- POST /api/sync/kobo/sync-from-server - Push content to device
WebSocket
See WebSocket API
- WS /ws/sync - Real-time sync events and notifications
Frontend Pages
- GET /login - Login page
- GET /register - Registration page
- GET / - Home page
- GET /bookshelf - Bookshelf page
- GET /dashboard - User dashboard
- GET /admin - Admin panel
- GET /devices-page - Device management page
- GET /conflicts-page - Conflicts resolution page
Documentation
- GET /docs - Documentation home
- GET /docs/* - Show documentation pages
- GET /docs/api/search - Search API documentation
- GET /docs/search-index.json - Search index for documentation search
Health
- GET /health - Health check endpoint