Genres
library_id and collection_id keys:
Filter-key reference
Use the generated names exactly as shown below. The underscore names mirror the wire query keys;library_id is an array, while collection_id, series_id, and readlist_id are single IDs:
Pass
page, size, sort, and optionally unpaged only to getAuthors; the other lookup operations return arrays. Do not translate these names to camelCase (libraryId or collectionId)—those keys are not part of the generated signatures.
Tags
The tag endpoints use the same flat filter style, with endpoint-specific keys:getBookTags also accepts series_id and readlist_id. getTags accepts collection_id; getSeriesTags accepts collection_id.
Authors
List authors with optional search, role, scope, and pagination parameters:getAuthorsNames({ search }, { client }); it returns string[]:
Publishers, languages, ratings, and sharing labels
These endpoints return arrays of strings.getPublishers, getLanguages, getAgeRatings, and getSharingLabels accept library_id?: string[] and collection_id?: string:
en, ja, and fr.
Build filter options
Fetch independent lists in parallel and keep each generated result separate so errors remain attributable:Autocomplete and library summaries
For an autocomplete field, querygetAuthorsNames rather than loading a full author page. Debounce keystrokes in the UI and avoid sending empty searches:
totalElements rather than content.length for the count:
error and response instead of silently treating every list as empty. Parallel requests improve latency, but they do not make a partial response a successful metadata snapshot.
Error handling
The default result exposes typed generated errors and the native response. Use the status for transport-level decisions:Next steps
Series
Filter and search series using metadata.
Books
Search books by author, genre, and more.
Collections
Organize content into collections.
Users
Configure content restrictions with labels.