Files
bookorbit/server/test/e2e/authorization-matrix/route-inventory/routes-10.json
T
neon b50b8da56c feat(metadata): add external HTTP metadata providers
Register book-metadata-provider services by address, with no code change per
provider; Settings lists ready-made ones to install. Ranking prefers a record of
the book's own medium. LubimyCzytac moves out to its own provider and Aladin,
whose API closes, is retired; their ids stay. Adds migrations 0129 and 0130.
See docs/METADATA_PROVIDERS.md.

Ref #1405
2026-10-23 06:11:04 +00:00

1335 lines
38 KiB
JSON

[
{
"file": "server/src/modules/book-request/download-clients/download-client.controller.ts",
"className": "DownloadClientController",
"methodName": "removeOrphan",
"httpMethod": "DELETE",
"path": "/admin/download-clients/:id/reconciliation/:hash",
"permissions": ["Permission.ManageAppSettings"],
"libraryAccess": [],
"isPublic": false,
"allowDefault": false,
"useGuards": []
},
{
"file": "server/src/modules/collection/collection.controller.ts",
"className": "CollectionController",
"methodName": "removePodcasts",
"httpMethod": "DELETE",
"path": "/collections/:id/podcasts",
"permissions": [],
"libraryAccess": [],
"isPublic": false,
"allowDefault": false,
"useGuards": []
},
{
"file": "server/src/modules/podcast/podcast.controller.ts",
"className": "PodcastController",
"methodName": "removeAllDownloads",
"httpMethod": "DELETE",
"path": "/podcasts/:podcastId/downloads",
"permissions": ["Permission.PodcastDownload"],
"libraryAccess": [],
"isPublic": false,
"allowDefault": false,
"useGuards": []
},
{
"file": "server/src/modules/tts/tts-admin.controller.ts",
"className": "TtsAdminController",
"methodName": "deleteProvider",
"httpMethod": "DELETE",
"path": "/tts/admin/providers/:id",
"permissions": ["Permission.ManageAppSettings"],
"libraryAccess": [],
"isPublic": false,
"allowDefault": false,
"useGuards": []
},
{
"file": "server/src/modules/tts/tts.controller.ts",
"className": "TtsController",
"methodName": "deletePosition",
"httpMethod": "DELETE",
"path": "/tts/position/:bookFileId",
"permissions": [],
"libraryAccess": [],
"isPublic": false,
"allowDefault": false,
"useGuards": []
},
{
"file": "server/src/modules/tts/tts.controller.ts",
"className": "TtsController",
"methodName": "deleteBookPreferences",
"httpMethod": "DELETE",
"path": "/tts/preferences/book/:bookId",
"permissions": [],
"libraryAccess": [],
"isPublic": false,
"allowDefault": false,
"useGuards": []
},
{
"file": "server/src/modules/upload/upload-session.controller.ts",
"className": "UploadSessionController",
"methodName": "cancel",
"httpMethod": "DELETE",
"path": "/uploads/:id",
"permissions": [],
"libraryAccess": [],
"isPublic": false,
"allowDefault": false,
"useGuards": []
},
{
"file": "server/src/modules/book-request/download-clients/download-client.controller.ts",
"className": "DownloadClientController",
"methodName": "reconcile",
"httpMethod": "GET",
"path": "/admin/download-clients/:id/reconciliation",
"permissions": ["Permission.ManageAppSettings"],
"libraryAccess": [],
"isPublic": false,
"allowDefault": false,
"useGuards": []
},
{
"file": "server/src/modules/annotation/annotation-hub.controller.ts",
"className": "AnnotationHubController",
"methodName": "overview",
"httpMethod": "GET",
"path": "/annotations/overview",
"permissions": [],
"libraryAccess": [],
"isPublic": false,
"allowDefault": false,
"useGuards": []
},
{
"file": "server/src/modules/authors/authors.controller.ts",
"className": "AuthorsController",
"methodName": "findJumpBuckets",
"httpMethod": "GET",
"path": "/authors/jump-buckets",
"permissions": [],
"libraryAccess": [],
"isPublic": false,
"allowDefault": false,
"useGuards": []
},
{
"file": "server/src/modules/book/book.controller.ts",
"className": "BookController",
"methodName": "downloadAudiolessEpub",
"httpMethod": "GET",
"path": "/books/files/:fileId/audioless-epub/download",
"permissions": ["Permission.LibraryDownload"],
"libraryAccess": [],
"isPublic": false,
"allowDefault": false,
"useGuards": []
},
{
"file": "server/src/modules/collection/collection.controller.ts",
"className": "CollectionController",
"methodName": "getPodcasts",
"httpMethod": "GET",
"path": "/collections/:id/podcasts",
"permissions": [],
"libraryAccess": [],
"isPublic": false,
"allowDefault": false,
"useGuards": []
},
{
"file": "server/src/modules/collection/collection.controller.ts",
"className": "CollectionController",
"methodName": "findPodcastMembership",
"httpMethod": "GET",
"path": "/collections/podcast-membership",
"permissions": [],
"libraryAccess": [],
"isPublic": false,
"allowDefault": false,
"useGuards": []
},
{
"file": "server/src/modules/reader/epub/epub.controller.ts",
"className": "EpubController",
"methodName": "getMediaOverlay",
"httpMethod": "GET",
"path": "/epub/:bookId/media-overlay",
"permissions": [],
"libraryAccess": [],
"isPublic": false,
"allowDefault": false,
"useGuards": []
},
{
"file": "server/src/modules/reader/epub/epub.controller.ts",
"className": "EpubController",
"methodName": "getMediaOverlayFile",
"httpMethod": "GET",
"path": "/epub/:bookId/media-overlay/file/*",
"permissions": [],
"libraryAccess": [],
"isPublic": false,
"allowDefault": false,
"useGuards": []
},
{
"file": "server/src/modules/podcast/podcast.controller.ts",
"className": "PodcastDownloadBatchController",
"methodName": "listActive",
"httpMethod": "GET",
"path": "/podcast-download-batches",
"permissions": [],
"libraryAccess": [],
"isPublic": false,
"allowDefault": false,
"useGuards": []
},
{
"file": "server/src/modules/podcast/podcast.controller.ts",
"className": "PodcastDownloadBatchController",
"methodName": "findOne",
"httpMethod": "GET",
"path": "/podcast-download-batches/:batchId",
"permissions": [],
"libraryAccess": [],
"isPublic": false,
"allowDefault": false,
"useGuards": []
},
{
"file": "server/src/modules/podcast/podcast.controller.ts",
"className": "PodcastLibraryController",
"methodName": "getJob",
"httpMethod": "GET",
"path": "/podcast-libraries/:libraryId/jobs/:jobId",
"permissions": ["Permission.PodcastManageFeeds"],
"libraryAccess": ["'editor'"],
"isPublic": false,
"allowDefault": false,
"useGuards": []
},
{
"file": "server/src/modules/search/search.controller.ts",
"className": "SearchController",
"methodName": "search",
"httpMethod": "GET",
"path": "/search",
"permissions": [],
"libraryAccess": [],
"isPublic": false,
"allowDefault": false,
"useGuards": []
},
{
"file": "server/src/modules/smart-scope/smart-scope.controller.ts",
"className": "SmartScopeController",
"methodName": "queryEpisodes",
"httpMethod": "GET",
"path": "/smart-scopes/:id/episodes",
"permissions": [],
"libraryAccess": [],
"isPublic": false,
"allowDefault": false,
"useGuards": []
},
{
"file": "server/src/modules/tts/tts-admin.controller.ts",
"className": "TtsAdminController",
"methodName": "getAllProviders",
"httpMethod": "GET",
"path": "/tts/admin/providers",
"permissions": ["Permission.ManageAppSettings"],
"libraryAccess": [],
"isPublic": false,
"allowDefault": false,
"useGuards": []
},
{
"file": "server/src/modules/tts/tts-admin.controller.ts",
"className": "TtsAdminController",
"methodName": "discoverVoices",
"httpMethod": "GET",
"path": "/tts/admin/providers/:id/voices/discover",
"permissions": ["Permission.ManageAppSettings"],
"libraryAccess": [],
"isPublic": false,
"allowDefault": false,
"useGuards": []
},
{
"file": "server/src/modules/tts/tts.controller.ts",
"className": "TtsController",
"methodName": "getPosition",
"httpMethod": "GET",
"path": "/tts/position/:bookFileId",
"permissions": [],
"libraryAccess": [],
"isPublic": false,
"allowDefault": false,
"useGuards": []
},
{
"file": "server/src/modules/tts/tts.controller.ts",
"className": "TtsController",
"methodName": "getUserPreferences",
"httpMethod": "GET",
"path": "/tts/preferences",
"permissions": [],
"libraryAccess": [],
"isPublic": false,
"allowDefault": false,
"useGuards": []
},
{
"file": "server/src/modules/tts/tts.controller.ts",
"className": "TtsController",
"methodName": "getBookPreferences",
"httpMethod": "GET",
"path": "/tts/preferences/book/:bookId",
"permissions": [],
"libraryAccess": [],
"isPublic": false,
"allowDefault": false,
"useGuards": []
},
{
"file": "server/src/modules/tts/tts.controller.ts",
"className": "TtsController",
"methodName": "getProviders",
"httpMethod": "GET",
"path": "/tts/providers",
"permissions": [],
"libraryAccess": [],
"isPublic": false,
"allowDefault": false,
"useGuards": []
},
{
"file": "server/src/modules/tts/tts.controller.ts",
"className": "TtsController",
"methodName": "getChapterText",
"httpMethod": "GET",
"path": "/tts/text/:bookFileId/:chapterIndex",
"permissions": [],
"libraryAccess": [],
"isPublic": false,
"allowDefault": false,
"useGuards": []
},
{
"file": "server/src/modules/tts/tts.controller.ts",
"className": "TtsController",
"methodName": "getVoices",
"httpMethod": "GET",
"path": "/tts/voices",
"permissions": [],
"libraryAccess": [],
"isPublic": false,
"allowDefault": false,
"useGuards": []
},
{
"file": "server/src/modules/upload/upload-session.controller.ts",
"className": "UploadSessionController",
"methodName": "get",
"httpMethod": "GET",
"path": "/uploads/:id",
"permissions": [],
"libraryAccess": [],
"isPublic": false,
"allowDefault": false,
"useGuards": []
},
{
"file": "server/src/modules/upload/upload-session.controller.ts",
"className": "UploadSessionController",
"methodName": "capabilities",
"httpMethod": "GET",
"path": "/uploads/capabilities",
"permissions": [],
"libraryAccess": [],
"isPublic": false,
"allowDefault": false,
"useGuards": []
},
{
"file": "server/src/modules/user-statistics/user-statistics.controller.ts",
"className": "UserStatisticsController",
"methodName": "getActivityCalendar",
"httpMethod": "GET",
"path": "/user-statistics/activity-calendar/:year",
"permissions": [],
"libraryAccess": [],
"isPublic": false,
"allowDefault": false,
"useGuards": []
},
{
"file": "server/src/modules/user-statistics/user-statistics.controller.ts",
"className": "UserStatisticsController",
"methodName": "getActivityDay",
"httpMethod": "GET",
"path": "/user-statistics/activity-days/:day",
"permissions": [],
"libraryAccess": [],
"isPublic": false,
"allowDefault": false,
"useGuards": []
},
{
"file": "server/src/modules/user-statistics/user-statistics.controller.ts",
"className": "UserStatisticsController",
"methodName": "getActivityCompletionSpeed",
"httpMethod": "GET",
"path": "/user-statistics/activity-details/completion-speed",
"permissions": [],
"libraryAccess": [],
"isPublic": false,
"allowDefault": false,
"useGuards": []
},
{
"file": "server/src/modules/user-statistics/user-statistics.controller.ts",
"className": "UserStatisticsController",
"methodName": "getActivityGenreTime",
"httpMethod": "GET",
"path": "/user-statistics/activity-details/genre-time",
"permissions": [],
"libraryAccess": [],
"isPublic": false,
"allowDefault": false,
"useGuards": []
},
{
"file": "server/src/modules/user-statistics/user-statistics.controller.ts",
"className": "UserStatisticsController",
"methodName": "getActivityPaceDetail",
"httpMethod": "GET",
"path": "/user-statistics/activity-details/pace",
"permissions": [],
"libraryAccess": [],
"isPublic": false,
"allowDefault": false,
"useGuards": []
},
{
"file": "server/src/modules/user-statistics/user-statistics.controller.ts",
"className": "UserStatisticsController",
"methodName": "getActivitySessionPatterns",
"httpMethod": "GET",
"path": "/user-statistics/activity-details/session-patterns",
"permissions": [],
"libraryAccess": [],
"isPublic": false,
"allowDefault": false,
"useGuards": []
},
{
"file": "server/src/modules/user-statistics/user-statistics.controller.ts",
"className": "UserStatisticsController",
"methodName": "getActivityOverview",
"httpMethod": "GET",
"path": "/user-statistics/activity-overview",
"permissions": [],
"libraryAccess": [],
"isPublic": false,
"allowDefault": false,
"useGuards": []
},
{
"file": "server/src/modules/reading-history/reading-history.controller.ts",
"className": "ReadingHistoryController",
"methodName": "list",
"httpMethod": "GET",
"path": "/reading-history",
"permissions": [],
"libraryAccess": [],
"isPublic": false,
"allowDefault": false,
"useGuards": []
},
{
"file": "server/src/modules/reading-history/reading-history.controller.ts",
"className": "ReadingHistoryController",
"methodName": "summary",
"httpMethod": "GET",
"path": "/reading-history/summary",
"permissions": [],
"libraryAccess": [],
"isPublic": false,
"allowDefault": false,
"useGuards": []
},
{
"file": "server/src/modules/reading-history/reading-history.controller.ts",
"className": "ReadingHistoryController",
"methodName": "marks",
"httpMethod": "GET",
"path": "/reading-history/:attemptId/marks",
"permissions": [],
"libraryAccess": [],
"isPublic": false,
"allowDefault": false,
"useGuards": []
},
{
"file": "server/src/modules/reading-history/reading-history.controller.ts",
"className": "ReadingHistoryController",
"methodName": "setRating",
"httpMethod": "PATCH",
"path": "/reading-history/:attemptId/rating",
"permissions": [],
"libraryAccess": [],
"isPublic": false,
"allowDefault": false,
"useGuards": []
},
{
"file": "server/src/modules/watch-download/watch-download.controller.ts",
"className": "WatchDownloadController",
"methodName": "downloadCover",
"httpMethod": "GET",
"path": "/watch-downloads/books/:bookId/cover",
"permissions": [],
"libraryAccess": [],
"isPublic": true,
"allowDefault": false,
"useGuards": []
},
{
"file": "server/src/modules/watch-download/watch-download.controller.ts",
"className": "WatchDownloadController",
"methodName": "downloadFile",
"httpMethod": "GET",
"path": "/watch-downloads/files/:fileId",
"permissions": [],
"libraryAccess": [],
"isPublic": true,
"allowDefault": false,
"useGuards": []
},
{
"file": "server/src/modules/watch-download/watch-download.controller.ts",
"className": "WatchDownloadController",
"methodName": "downloadMediaOverlayFile",
"httpMethod": "GET",
"path": "/watch-downloads/media-overlay/files/:index",
"permissions": [],
"libraryAccess": [],
"isPublic": true,
"allowDefault": false,
"useGuards": []
},
{
"file": "server/src/modules/book/book.controller.ts",
"className": "BookController",
"methodName": "updateReadAloudSync",
"httpMethod": "PATCH",
"path": "/books/:id/read-aloud-sync",
"permissions": [],
"libraryAccess": [],
"isPublic": false,
"allowDefault": false,
"useGuards": []
},
{
"file": "server/src/modules/achievement/achievement.controller.ts",
"className": "AchievementController",
"methodName": "getHints",
"httpMethod": "GET",
"path": "/achievements/hints",
"permissions": [],
"libraryAccess": [],
"isPublic": false,
"allowDefault": false,
"useGuards": ["JwtAuthGuard"]
},
{
"file": "server/src/modules/achievement/achievement.controller.ts",
"className": "AchievementController",
"methodName": "acknowledgeCelebration",
"httpMethod": "POST",
"path": "/achievements/celebrations/:claimId/acknowledge",
"permissions": [],
"libraryAccess": [],
"isPublic": false,
"allowDefault": false,
"useGuards": ["JwtAuthGuard"]
},
{
"file": "server/src/modules/achievement/achievement.controller.ts",
"className": "AchievementController",
"methodName": "claimCelebration",
"httpMethod": "POST",
"path": "/achievements/celebrations/claim",
"permissions": [],
"libraryAccess": [],
"isPublic": false,
"allowDefault": false,
"useGuards": ["JwtAuthGuard"]
},
{
"file": "server/src/modules/book-request/download-clients/download-client.controller.ts",
"className": "DownloadClientController",
"methodName": "adopt",
"httpMethod": "POST",
"path": "/admin/download-clients/:id/reconciliation/:hash/adopt",
"permissions": ["Permission.ManageAppSettings"],
"libraryAccess": [],
"isPublic": false,
"allowDefault": false,
"useGuards": []
},
{
"file": "server/src/modules/collection/collection.controller.ts",
"className": "CollectionController",
"methodName": "addPodcasts",
"httpMethod": "POST",
"path": "/collections/:id/podcasts",
"permissions": [],
"libraryAccess": [],
"isPublic": false,
"allowDefault": false,
"useGuards": []
},
{
"file": "server/src/modules/dashboard/dashboard.controller.ts",
"className": "DashboardController",
"methodName": "refresh",
"httpMethod": "POST",
"path": "/dashboard/refresh",
"permissions": [],
"libraryAccess": [],
"isPublic": false,
"allowDefault": false,
"useGuards": []
},
{
"file": "server/src/modules/podcast/podcast.controller.ts",
"className": "PodcastController",
"methodName": "downloadLatest",
"httpMethod": "POST",
"path": "/podcasts/:podcastId/download-latest",
"permissions": ["Permission.PodcastDownload"],
"libraryAccess": [],
"isPublic": false,
"allowDefault": false,
"useGuards": []
},
{
"file": "server/src/modules/podcast/podcast.controller.ts",
"className": "PodcastController",
"methodName": "markAllPlayed",
"httpMethod": "POST",
"path": "/podcasts/:podcastId/mark-all-played",
"permissions": [],
"libraryAccess": [],
"isPublic": false,
"allowDefault": false,
"useGuards": []
},
{
"file": "server/src/modules/podcast/podcast.controller.ts",
"className": "PodcastController",
"methodName": "queueAll",
"httpMethod": "POST",
"path": "/podcasts/:podcastId/queue-all",
"permissions": [],
"libraryAccess": [],
"isPublic": false,
"allowDefault": false,
"useGuards": []
},
{
"file": "server/src/modules/tts/tts-admin.controller.ts",
"className": "TtsAdminController",
"methodName": "addProvider",
"httpMethod": "POST",
"path": "/tts/admin/providers",
"permissions": ["Permission.ManageAppSettings"],
"libraryAccess": [],
"isPublic": false,
"allowDefault": false,
"useGuards": []
},
{
"file": "server/src/modules/tts/tts-admin.controller.ts",
"className": "TtsAdminController",
"methodName": "testProvider",
"httpMethod": "POST",
"path": "/tts/admin/providers/:id/test",
"permissions": ["Permission.ManageAppSettings"],
"libraryAccess": [],
"isPublic": false,
"allowDefault": false,
"useGuards": []
},
{
"file": "server/src/modules/tts/tts.controller.ts",
"className": "TtsController",
"methodName": "previewVoice",
"httpMethod": "POST",
"path": "/tts/preview",
"permissions": [],
"libraryAccess": [],
"isPublic": false,
"allowDefault": false,
"useGuards": []
},
{
"file": "server/src/modules/tts/tts.controller.ts",
"className": "TtsController",
"methodName": "synthesize",
"httpMethod": "POST",
"path": "/tts/synthesize",
"permissions": [],
"libraryAccess": [],
"isPublic": false,
"allowDefault": false,
"useGuards": []
},
{
"file": "server/src/modules/tts/tts.controller.ts",
"className": "TtsController",
"methodName": "synthesizeCaptioned",
"httpMethod": "POST",
"path": "/tts/synthesize/captioned",
"permissions": [],
"libraryAccess": [],
"isPublic": false,
"allowDefault": false,
"useGuards": []
},
{
"file": "server/src/modules/upload/upload-session.controller.ts",
"className": "UploadSessionController",
"methodName": "create",
"httpMethod": "POST",
"path": "/uploads",
"permissions": [],
"libraryAccess": [],
"isPublic": false,
"allowDefault": false,
"useGuards": []
},
{
"file": "server/src/modules/upload/upload-session.controller.ts",
"className": "UploadSessionController",
"methodName": "appendChunk",
"httpMethod": "POST",
"path": "/uploads/:id/chunks",
"permissions": [],
"libraryAccess": [],
"isPublic": false,
"allowDefault": false,
"useGuards": []
},
{
"file": "server/src/modules/upload/upload-session.controller.ts",
"className": "UploadSessionController",
"methodName": "complete",
"httpMethod": "POST",
"path": "/uploads/:id/complete",
"permissions": [],
"libraryAccess": [],
"isPublic": false,
"allowDefault": false,
"useGuards": []
},
{
"file": "server/src/modules/watch-download/watch-download.controller.ts",
"className": "WatchDownloadController",
"methodName": "create",
"httpMethod": "POST",
"path": "/watch-downloads",
"permissions": ["Permission.LibraryDownload"],
"libraryAccess": [],
"isPublic": false,
"allowDefault": false,
"useGuards": []
},
{
"file": "server/src/modules/watch-download/watch-download.controller.ts",
"className": "WatchDownloadController",
"methodName": "createMediaOverlay",
"httpMethod": "POST",
"path": "/watch-downloads/media-overlay",
"permissions": ["Permission.LibraryDownload"],
"libraryAccess": [],
"isPublic": false,
"allowDefault": false,
"useGuards": []
},
{
"file": "server/src/modules/tts/tts-admin.controller.ts",
"className": "TtsAdminController",
"methodName": "updateProvider",
"httpMethod": "PUT",
"path": "/tts/admin/providers/:id",
"permissions": ["Permission.ManageAppSettings"],
"libraryAccess": [],
"isPublic": false,
"allowDefault": false,
"useGuards": []
},
{
"file": "server/src/modules/tts/tts-admin.controller.ts",
"className": "TtsAdminController",
"methodName": "reorderProviders",
"httpMethod": "PUT",
"path": "/tts/admin/providers/order",
"permissions": ["Permission.ManageAppSettings"],
"libraryAccess": [],
"isPublic": false,
"allowDefault": false,
"useGuards": []
},
{
"file": "server/src/modules/tts/tts.controller.ts",
"className": "TtsController",
"methodName": "savePosition",
"httpMethod": "PUT",
"path": "/tts/position/:bookFileId",
"permissions": [],
"libraryAccess": [],
"isPublic": false,
"allowDefault": false,
"useGuards": []
},
{
"file": "server/src/modules/tts/tts.controller.ts",
"className": "TtsController",
"methodName": "saveUserPreferences",
"httpMethod": "PUT",
"path": "/tts/preferences",
"permissions": [],
"libraryAccess": [],
"isPublic": false,
"allowDefault": false,
"useGuards": []
},
{
"file": "server/src/modules/tts/tts.controller.ts",
"className": "TtsController",
"methodName": "saveBookPreferences",
"httpMethod": "PUT",
"path": "/tts/preferences/book/:bookId",
"permissions": [],
"libraryAccess": [],
"isPublic": false,
"allowDefault": false,
"useGuards": []
},
{
"file": "server/src/modules/book-journal/book-journal.controller.ts",
"className": "BookJournalController",
"methodName": "list",
"httpMethod": "GET",
"path": "/books/:bookId/journal",
"permissions": [],
"libraryAccess": [],
"isPublic": false,
"allowDefault": false,
"useGuards": []
},
{
"file": "server/src/modules/book-journal/book-journal.controller.ts",
"className": "BookJournalController",
"methodName": "create",
"httpMethod": "POST",
"path": "/books/:bookId/journal",
"permissions": [],
"libraryAccess": [],
"isPublic": false,
"allowDefault": false,
"useGuards": []
},
{
"file": "server/src/modules/book-journal/book-journal.controller.ts",
"className": "BookJournalController",
"methodName": "update",
"httpMethod": "PATCH",
"path": "/books/:bookId/journal/:clientId",
"permissions": [],
"libraryAccess": [],
"isPublic": false,
"allowDefault": false,
"useGuards": []
},
{
"file": "server/src/modules/book-journal/book-journal.controller.ts",
"className": "BookJournalController",
"methodName": "trash",
"httpMethod": "DELETE",
"path": "/books/:bookId/journal/:clientId",
"permissions": [],
"libraryAccess": [],
"isPublic": false,
"allowDefault": false,
"useGuards": []
},
{
"file": "server/src/modules/book-journal/book-journal.controller.ts",
"className": "BookJournalController",
"methodName": "restore",
"httpMethod": "POST",
"path": "/books/:bookId/journal/:clientId/restore",
"permissions": [],
"libraryAccess": [],
"isPublic": false,
"allowDefault": false,
"useGuards": []
},
{
"file": "server/src/modules/book-journal/book-journal.controller.ts",
"className": "BookJournalController",
"methodName": "purge",
"httpMethod": "DELETE",
"path": "/books/:bookId/journal/:clientId/permanent",
"permissions": [],
"libraryAccess": [],
"isPublic": false,
"allowDefault": false,
"useGuards": []
},
{
"file": "server/src/modules/notebook/notebook.controller.ts",
"className": "NotebookController",
"methodName": "entries",
"httpMethod": "GET",
"path": "/notebook/entries",
"permissions": [],
"libraryAccess": [],
"isPublic": false,
"allowDefault": false,
"useGuards": []
},
{
"file": "server/src/modules/notebook/notebook.controller.ts",
"className": "NotebookController",
"methodName": "overview",
"httpMethod": "GET",
"path": "/notebook/overview",
"permissions": [],
"libraryAccess": [],
"isPublic": false,
"allowDefault": false,
"useGuards": []
},
{
"file": "server/src/modules/notebook/notebook.controller.ts",
"className": "NotebookController",
"methodName": "books",
"httpMethod": "GET",
"path": "/notebook/books",
"permissions": [],
"libraryAccess": [],
"isPublic": false,
"allowDefault": false,
"useGuards": []
},
{
"file": "server/src/modules/notebook/notebook.controller.ts",
"className": "NotebookController",
"methodName": "review",
"httpMethod": "GET",
"path": "/notebook/review",
"permissions": [],
"libraryAccess": [],
"isPublic": false,
"allowDefault": false,
"useGuards": []
},
{
"file": "server/src/modules/notebook/notebook.controller.ts",
"className": "NotebookController",
"methodName": "onThisDay",
"httpMethod": "GET",
"path": "/notebook/on-this-day",
"permissions": [],
"libraryAccess": [],
"isPublic": false,
"allowDefault": false,
"useGuards": []
},
{
"file": "server/src/modules/notebook/notebook.controller.ts",
"className": "NotebookController",
"methodName": "trash",
"httpMethod": "GET",
"path": "/notebook/trash",
"permissions": [],
"libraryAccess": [],
"isPublic": false,
"allowDefault": false,
"useGuards": []
},
{
"file": "server/src/modules/dashboard/dashboard.controller.ts",
"className": "DashboardController",
"methodName": "getHighlights",
"httpMethod": "GET",
"path": "/dashboard/widgets/highlights",
"permissions": [],
"libraryAccess": [],
"isPublic": false,
"allowDefault": false,
"useGuards": []
},
{
"file": "server/src/modules/metadata-cache/metadata-cache.controller.ts",
"className": "MetadataCacheController",
"methodName": "getConfig",
"httpMethod": "GET",
"path": "/metadata-cache/config",
"permissions": ["Permission.ManageMetadataConfig"],
"libraryAccess": [],
"isPublic": false,
"allowDefault": false,
"useGuards": []
},
{
"file": "server/src/modules/metadata-cache/metadata-cache.controller.ts",
"className": "MetadataCacheController",
"methodName": "updateConfig",
"httpMethod": "PUT",
"path": "/metadata-cache/config",
"permissions": ["Permission.ManageMetadataConfig"],
"libraryAccess": [],
"isPublic": false,
"allowDefault": false,
"useGuards": []
},
{
"file": "server/src/modules/metadata-cache/metadata-cache.controller.ts",
"className": "MetadataCacheController",
"methodName": "getStats",
"httpMethod": "GET",
"path": "/metadata-cache/stats",
"permissions": ["Permission.ManageMetadataConfig"],
"libraryAccess": [],
"isPublic": false,
"allowDefault": false,
"useGuards": []
},
{
"file": "server/src/modules/metadata-cache/metadata-cache.controller.ts",
"className": "MetadataCacheController",
"methodName": "clear",
"httpMethod": "DELETE",
"path": "/metadata-cache",
"permissions": ["Permission.ManageMetadataConfig"],
"libraryAccess": [],
"isPublic": false,
"allowDefault": false,
"useGuards": []
},
{
"file": "server/src/modules/server-identity/server-identity.controller.ts",
"className": "ServerIdentityController",
"methodName": "getIdentity",
"httpMethod": "GET",
"path": "/server-identity",
"permissions": [],
"libraryAccess": [],
"isPublic": true,
"allowDefault": false,
"useGuards": []
},
{
"file": "server/src/modules/reader/djvu/djvu.controller.ts",
"className": "DjvuController",
"methodName": "getPageCount",
"httpMethod": "GET",
"path": "/djvu/files/:fileId/pages",
"permissions": [],
"libraryAccess": [],
"isPublic": false,
"allowDefault": false,
"useGuards": []
},
{
"file": "server/src/modules/reader/djvu/djvu.controller.ts",
"className": "DjvuController",
"methodName": "getPage",
"httpMethod": "GET",
"path": "/djvu/files/:fileId/pages/:pageIndex",
"permissions": [],
"libraryAccess": [],
"isPublic": false,
"allowDefault": false,
"useGuards": []
},
{
"file": "server/src/modules/reader/djvu/djvu.controller.ts",
"className": "DjvuController",
"methodName": "getPageText",
"httpMethod": "GET",
"path": "/djvu/files/:fileId/pages/:pageIndex/text",
"permissions": [],
"libraryAccess": [],
"isPublic": false,
"allowDefault": false,
"useGuards": []
},
{
"file": "server/src/modules/koreader/koreader-catalog.controller.ts",
"className": "KoreaderCatalogController",
"methodName": "authorPhoto",
"httpMethod": "GET",
"path": "/koreader/plugin/catalog/authors/:authorId/photo",
"permissions": [],
"libraryAccess": [],
"isPublic": true,
"allowDefault": false,
"useGuards": ["KoreaderAuthGuard"]
},
{
"file": "server/src/modules/read-aloud/read-aloud.controller.ts",
"className": "ReadAloudController",
"methodName": "capability",
"httpMethod": "GET",
"path": "/books/:bookId/read-aloud",
"permissions": ["Permission.LibraryGenerateReadAloud", "Permission.DemoRestricted"],
"libraryAccess": [],
"isPublic": false,
"allowDefault": false,
"useGuards": []
},
{
"file": "server/src/modules/read-aloud/read-aloud.controller.ts",
"className": "ReadAloudController",
"methodName": "create",
"httpMethod": "POST",
"path": "/books/:bookId/read-aloud-jobs",
"permissions": ["Permission.LibraryGenerateReadAloud", "Permission.DemoRestricted"],
"libraryAccess": [],
"isPublic": false,
"allowDefault": false,
"useGuards": []
},
{
"file": "server/src/modules/read-aloud/read-aloud.controller.ts",
"className": "ReadAloudController",
"methodName": "get",
"httpMethod": "GET",
"path": "/read-aloud-jobs/:jobId",
"permissions": ["Permission.LibraryGenerateReadAloud", "Permission.DemoRestricted"],
"libraryAccess": [],
"isPublic": false,
"allowDefault": false,
"useGuards": []
},
{
"file": "server/src/modules/read-aloud/read-aloud.controller.ts",
"className": "ReadAloudController",
"methodName": "cancel",
"httpMethod": "DELETE",
"path": "/read-aloud-jobs/:jobId",
"permissions": ["Permission.LibraryGenerateReadAloud", "Permission.DemoRestricted"],
"libraryAccess": [],
"isPublic": false,
"allowDefault": false,
"useGuards": []
},
{
"file": "server/src/modules/read-aloud/read-aloud.controller.ts",
"className": "ReadAloudController",
"methodName": "publish",
"httpMethod": "POST",
"path": "/read-aloud-jobs/:jobId/publish",
"permissions": ["Permission.LibraryGenerateReadAloud", "Permission.DemoRestricted"],
"libraryAccess": [],
"isPublic": false,
"allowDefault": false,
"useGuards": []
},
{
"file": "server/src/modules/read-aloud/read-aloud.controller.ts",
"className": "ReadAloudController",
"methodName": "retry",
"httpMethod": "POST",
"path": "/read-aloud-jobs/:jobId/retry",
"permissions": ["Permission.LibraryGenerateReadAloud", "Permission.DemoRestricted"],
"libraryAccess": [],
"isPublic": false,
"allowDefault": false,
"useGuards": []
},
{
"file": "server/src/modules/read-aloud/read-aloud.controller.ts",
"className": "ReadAloudController",
"methodName": "resync",
"httpMethod": "POST",
"path": "/read-aloud-jobs/:jobId/resync",
"permissions": ["Permission.LibraryGenerateReadAloud", "Permission.DemoRestricted"],
"libraryAccess": [],
"isPublic": false,
"allowDefault": false,
"useGuards": []
},
{
"file": "server/src/modules/read-aloud/read-aloud.controller.ts",
"className": "ReadAloudController",
"methodName": "dismiss",
"httpMethod": "POST",
"path": "/read-aloud-jobs/:jobId/dismiss",
"permissions": ["Permission.LibraryGenerateReadAloud", "Permission.DemoRestricted"],
"libraryAccess": [],
"isPublic": false,
"allowDefault": false,
"useGuards": []
},
{
"file": "server/src/modules/read-aloud/read-aloud.controller.ts",
"className": "ReadAloudController",
"methodName": "report",
"httpMethod": "GET",
"path": "/read-aloud-jobs/:jobId/report",
"permissions": ["Permission.LibraryGenerateReadAloud", "Permission.DemoRestricted"],
"libraryAccess": [],
"isPublic": false,
"allowDefault": false,
"useGuards": []
},
{
"file": "server/src/modules/read-aloud/read-aloud.controller.ts",
"className": "ReadAloudController",
"methodName": "events",
"httpMethod": "GET",
"path": "/read-aloud-jobs/:jobId/events",
"permissions": ["Permission.LibraryGenerateReadAloud", "Permission.DemoRestricted"],
"libraryAccess": [],
"isPublic": false,
"allowDefault": false,
"useGuards": []
},
{
"file": "server/src/modules/book/reading-progress.controller.ts",
"className": "ReadingProgressController",
"methodName": "list",
"httpMethod": "GET",
"path": "/reading-progress",
"permissions": [],
"libraryAccess": [],
"isPublic": false,
"allowDefault": false,
"useGuards": []
},
{
"file": "server/src/modules/book/reading-progress.controller.ts",
"className": "ReadingProgressController",
"methodName": "save",
"httpMethod": "PUT",
"path": "/reading-progress",
"permissions": [],
"libraryAccess": [],
"isPublic": false,
"allowDefault": false,
"useGuards": []
},
{
"file": "server/src/modules/book/reading-progress.controller.ts",
"className": "ReadingProgressController",
"methodName": "clear",
"httpMethod": "DELETE",
"path": "/reading-progress/:fileId",
"permissions": [],
"libraryAccess": [],
"isPublic": false,
"allowDefault": false,
"useGuards": []
},
{
"file": "server/src/modules/metadata-http-provider/metadata-http-provider.controller.ts",
"className": "MetadataHttpProviderController",
"methodName": "list",
"httpMethod": "GET",
"path": "/metadata-http-providers",
"permissions": ["Permission.ManageMetadataConfig"],
"libraryAccess": [],
"isPublic": false,
"allowDefault": false,
"useGuards": []
},
{
"file": "server/src/modules/metadata-http-provider/metadata-http-provider.controller.ts",
"className": "MetadataHttpProviderController",
"methodName": "create",
"httpMethod": "POST",
"path": "/metadata-http-providers",
"permissions": ["Permission.ManageMetadataConfig"],
"libraryAccess": [],
"isPublic": false,
"allowDefault": false,
"useGuards": []
},
{
"file": "server/src/modules/metadata-http-provider/metadata-http-provider.controller.ts",
"className": "MetadataHttpProviderController",
"methodName": "update",
"httpMethod": "PATCH",
"path": "/metadata-http-providers/:id",
"permissions": ["Permission.ManageMetadataConfig"],
"libraryAccess": [],
"isPublic": false,
"allowDefault": false,
"useGuards": []
},
{
"file": "server/src/modules/metadata-http-provider/metadata-http-provider.controller.ts",
"className": "MetadataHttpProviderController",
"methodName": "remove",
"httpMethod": "DELETE",
"path": "/metadata-http-providers/:id",
"permissions": ["Permission.ManageMetadataConfig"],
"libraryAccess": [],
"isPublic": false,
"allowDefault": false,
"useGuards": []
},
{
"file": "server/src/modules/metadata-http-provider/metadata-http-provider.controller.ts",
"className": "MetadataHttpProviderController",
"methodName": "test",
"httpMethod": "POST",
"path": "/metadata-http-providers/:id/test",
"permissions": ["Permission.ManageMetadataConfig"],
"libraryAccess": [],
"isPublic": false,
"allowDefault": false,
"useGuards": []
},
{
"file": "server/src/modules/metadata-http-provider/metadata-http-provider.controller.ts",
"className": "MetadataHttpProviderController",
"methodName": "directoryList",
"httpMethod": "GET",
"path": "/metadata-http-providers/directory",
"permissions": ["Permission.ManageMetadataConfig"],
"libraryAccess": [],
"isPublic": false,
"allowDefault": false,
"useGuards": []
},
{
"file": "server/src/modules/metadata-http-provider/metadata-provider-icon.controller.ts",
"className": "MetadataProviderIconController",
"methodName": "icon",
"httpMethod": "GET",
"path": "/metadata-providers/:key/icon",
"permissions": [],
"libraryAccess": [],
"isPublic": false,
"allowDefault": false,
"useGuards": []
}
]