From 4a17eabb232c2e48ea6634779faec5b51cf98dfd Mon Sep 17 00:00:00 2001 From: github-actions <41898282+github-actions[bot]@users.noreply.github.com> Date: Mon, 27 Jan 2025 04:34:20 +0000 Subject: [PATCH] chore(release): 1.19.0 [skip ci] --- CHANGELOG.md | 72 ++ gradle.properties | 2 +- komga/docs/openapi.json | 1954 ++++++++++++++++++++++++++------------- 3 files changed, 1383 insertions(+), 645 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 1786eccb02..ef518419d4 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,75 @@ +# [1.19.0](https://github.com/gotson/komga/compare/1.18.0...1.19.0) (2025-01-27) +## 🚀 Features +**api** +- add new book search condition for posters ([70bcb8f](https://github.com/gotson/komga/commits/70bcb8f)), closes [#1829](https://github.com/gotson/komga/issues/1829) +- add new book list API using search condition criteria DSL ([1da0afe](https://github.com/gotson/komga/commits/1da0afe)) + +**webui** +- support additional fonts ([201c066](https://github.com/gotson/komga/commits/201c066)), closes [#1836](https://github.com/gotson/komga/issues/1836) +- add page margin option in webtoon reader ([214f687](https://github.com/gotson/komga/commits/214f687)), closes [#1512](https://github.com/gotson/komga/issues/1512) +- choose number of thumbnails to display in webreader ([9156ff7](https://github.com/gotson/komga/commits/9156ff7)), closes [#1540](https://github.com/gotson/komga/issues/1540) +- display book number in webreader tab title and toolbar ([38fa3cc](https://github.com/gotson/komga/commits/38fa3cc)), closes [#1543](https://github.com/gotson/komga/issues/1543) +- disable bounce in divina reader ([dd31f5b](https://github.com/gotson/komga/commits/dd31f5b)), closes [#1600](https://github.com/gotson/komga/issues/1600) +- add filters to media analysis table ([68e05b8](https://github.com/gotson/komga/commits/68e05b8)), closes [#1802](https://github.com/gotson/komga/issues/1802) +- add rel="noreferrer" for metadata links ([dbd225d](https://github.com/gotson/komga/commits/dbd225d)), closes [#1615](https://github.com/gotson/komga/issues/1615) +- reorder reading lists and collection by index input ([d868ba4](https://github.com/gotson/komga/commits/d868ba4)), closes [#1584](https://github.com/gotson/komga/issues/1584) +- add all books from series to read list from action menu ([a490449](https://github.com/gotson/komga/commits/a490449)), closes [#1535](https://github.com/gotson/komga/issues/1535) +- show all libraries action menu next to All Libraries when browsing ([7ef59b0](https://github.com/gotson/komga/commits/7ef59b0)) +- move all libraries action to 3-dots menu in sidebar ([8706048](https://github.com/gotson/komga/commits/8706048)) +- split account settings into different views ([169c47e](https://github.com/gotson/komga/commits/169c47e)) +- show empty state if no known duplicate pages are found ([84253cb](https://github.com/gotson/komga/commits/84253cb)) +- remove tab navigation and use sidebar instead ([1e6ff7a](https://github.com/gotson/komga/commits/1e6ff7a)) +- add all books from series to read list from multi-select bar ([3582114](https://github.com/gotson/komga/commits/3582114)), closes [#1535](https://github.com/gotson/komga/issues/1535) +- display creation and last modified date on book page ([da35e01](https://github.com/gotson/komga/commits/da35e01)), closes [#1547](https://github.com/gotson/komga/issues/1547) +- add context in document title ([8880642](https://github.com/gotson/komga/commits/8880642)), closes [#1710](https://github.com/gotson/komga/issues/1710) +- remove from collection/readlist directly from the book/series page ([901ea3c](https://github.com/gotson/komga/commits/901ea3c)), closes [#1518](https://github.com/gotson/komga/issues/1518) +- allow readlist import if duplicates are present ([378f99b](https://github.com/gotson/komga/commits/378f99b)), closes [#1671](https://github.com/gotson/komga/issues/1671) +- add filters in Import read list view ([7ae4d7b](https://github.com/gotson/komga/commits/7ae4d7b)), closes [#1702](https://github.com/gotson/komga/issues/1702) +- add media management view for books with missing poster ([7d092c2](https://github.com/gotson/komga/commits/7d092c2)), closes [#1829](https://github.com/gotson/komga/issues/1829) +- filter series and books by any/none author role ([ffc397f](https://github.com/gotson/komga/commits/ffc397f)), closes [#1829](https://github.com/gotson/komga/issues/1829) +- filter books by media profile ([d07eb39](https://github.com/gotson/komga/commits/d07eb39)), closes [#1829](https://github.com/gotson/komga/issues/1829) +- better filtering for Books ([2d9a59a](https://github.com/gotson/komga/commits/2d9a59a)) + +**unscoped** +- try to guess epub cover if not standard ([681337a](https://github.com/gotson/komga/commits/681337a)), closes [#1835](https://github.com/gotson/komga/issues/1835) + +## 🐛 Fixes +**webui** +- better handling of the read-more expansion panel during page change ([b83d741](https://github.com/gotson/komga/commits/b83d741)) +- disable item card menu and fab when dragging/editing is active ([6d71f4b](https://github.com/gotson/komga/commits/6d71f4b)) +- prevent flickering on unknown duplicate pages view load ([c36e10d](https://github.com/gotson/komga/commits/c36e10d)) + +**unscoped** +- better handling of broken epub ([42047cd](https://github.com/gotson/komga/commits/42047cd)), closes [#1844](https://github.com/gotson/komga/issues/1844) + +## 🔄️ Changes +**webui** +- extract missing translation strings ([f5f36b3](https://github.com/gotson/komga/commits/f5f36b3)) +- use new book list API ([2ac296d](https://github.com/gotson/komga/commits/2ac296d)) +- remove unused functions ([7370b43](https://github.com/gotson/komga/commits/7370b43)) + +## 🛠 Build +**webui** +- fix hot reload ([fd3b1aa](https://github.com/gotson/komga/commits/fd3b1aa)) + +## 📝 Documentation + +- update JetBrains logo ([79709e3](https://github.com/gotson/komga/commits/79709e3)) + +## 🌐 Translation +**komga-tray** +- translated using Weblate (Polish) ([80253f2](https://github.com/gotson/komga/commits/80253f2)) + +**webui** +- translated using Weblate (Chinese (Simplified Han script)) ([3ada19c](https://github.com/gotson/komga/commits/3ada19c)) +- translated using Weblate (Finnish) ([beb7452](https://github.com/gotson/komga/commits/beb7452)) +- translated using Weblate (French) ([13ecc44](https://github.com/gotson/komga/commits/13ecc44)) +- translated using Weblate (Spanish) ([9ad57a4](https://github.com/gotson/komga/commits/9ad57a4)) +- translated using Weblate (Polish) ([5421a96](https://github.com/gotson/komga/commits/5421a96)) +- translated using Weblate (Croatian) ([9c6c16a](https://github.com/gotson/komga/commits/9c6c16a)) +- translated using Weblate (Portuguese) ([92f06a1](https://github.com/gotson/komga/commits/92f06a1)) +- translated using Weblate (Czech) ([8affb7a](https://github.com/gotson/komga/commits/8affb7a)) + # [1.18.0](https://github.com/gotson/komga/compare/1.17.0...1.18.0) (2025-01-15) ## 🚀 Features diff --git a/gradle.properties b/gradle.properties index 4105ae163a..4be315571a 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,2 +1,2 @@ -version=1.18.0 +version=1.19.0 org.gradle.jvmargs=-Xmx2G diff --git a/komga/docs/openapi.json b/komga/docs/openapi.json index b1a9ac6882..a3a3620f36 100644 --- a/komga/docs/openapi.json +++ b/komga/docs/openapi.json @@ -2950,6 +2950,83 @@ } } }, + "/api/v1/books/list": { + "post": { + "tags": [ + "book-controller" + ], + "operationId": "getBooksList", + "parameters": [ + { + "name": "unpaged", + "in": "query", + "required": false, + "schema": { + "type": "boolean" + } + }, + { + "name": "page", + "in": "query", + "description": "Zero-based page index (0..N)", + "schema": { + "type": "integer" + } + }, + { + "name": "size", + "in": "query", + "description": "The size of the page to be returned", + "schema": { + "type": "integer" + } + }, + { + "name": "sort", + "in": "query", + "description": "Sorting criteria in the format: property(,asc|desc). Default sort order is ascending. Multiple sort criteria are supported.", + "schema": { + "type": "array", + "items": { + "type": "string" + } + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/BookSearch" + } + } + }, + "required": true + }, + "responses": { + "400": { + "description": "Bad Request", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ValidationErrorResponse" + } + } + } + }, + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/PageBookDto" + } + } + } + } + } + } + }, "/api/v1/books/import": { "post": { "tags": [ @@ -8009,7 +8086,8 @@ } } } - } + }, + "deprecated": true } }, "/api/v1/series/updated": { @@ -9456,6 +9534,136 @@ } } }, + "/api/v1/fonts/resource/{fontFamily}/{fontFile}": { + "get": { + "tags": [ + "fonts-controller" + ], + "operationId": "getFontFile", + "parameters": [ + { + "name": "fontFamily", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "fontFile", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "400": { + "description": "Bad Request", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ValidationErrorResponse" + } + } + } + }, + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "string", + "format": "binary" + } + } + } + } + } + } + }, + "/api/v1/fonts/resource/{fontFamily}/css": { + "get": { + "tags": [ + "fonts-controller" + ], + "operationId": "getFontFamilyAsCss", + "parameters": [ + { + "name": "fontFamily", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "400": { + "description": "Bad Request", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ValidationErrorResponse" + } + } + } + }, + "200": { + "description": "OK", + "content": { + "text/css": { + "schema": { + "type": "string", + "format": "binary" + } + }, + "application/json": { + "schema": { + "type": "string", + "format": "binary" + } + } + } + } + } + } + }, + "/api/v1/fonts/families": { + "get": { + "tags": [ + "fonts-controller" + ], + "operationId": "listFonts", + "responses": { + "400": { + "description": "Bad Request", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ValidationErrorResponse" + } + } + } + }, + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "uniqueItems": true, + "type": "array", + "items": { + "type": "string" + } + } + } + } + } + } + } + }, "/api/v1/collections/{id}/thumbnails/{thumbnailId}": { "get": { "tags": [ @@ -9935,7 +10143,8 @@ } } } - } + }, + "deprecated": true } }, "/api/v1/books/{bookId}": { @@ -12361,6 +12570,9 @@ ] } } + }, + { + "$ref": "#/components/schemas/Book" } ] }, @@ -12525,6 +12737,9 @@ ] } } + }, + { + "$ref": "#/components/schemas/Book" } ] }, @@ -12702,6 +12917,9 @@ "type": "object" } } + }, + { + "$ref": "#/components/schemas/NumericFloat" } ] }, @@ -12736,6 +12954,15 @@ }, { "$ref": "#/components/schemas/StringOp" + }, + { + "$ref": "#/components/schemas/EqualityMediaProfile" + }, + { + "$ref": "#/components/schemas/NumericFloat" + }, + { + "$ref": "#/components/schemas/EqualityPosterMatch" } ] }, @@ -12830,6 +13057,15 @@ }, { "$ref": "#/components/schemas/StringOp" + }, + { + "$ref": "#/components/schemas/EqualityMediaProfile" + }, + { + "$ref": "#/components/schemas/NumericFloat" + }, + { + "$ref": "#/components/schemas/EqualityPosterMatch" } ] }, @@ -12967,6 +13203,9 @@ "type": "object" } } + }, + { + "$ref": "#/components/schemas/NumericFloat" } ] }, @@ -12993,6 +13232,9 @@ ] } } + }, + { + "$ref": "#/components/schemas/Book" } ] }, @@ -13033,6 +13275,9 @@ ] } } + }, + { + "$ref": "#/components/schemas/Book" } ] }, @@ -13085,6 +13330,9 @@ ] } } + }, + { + "$ref": "#/components/schemas/Book" } ] }, @@ -13123,6 +13371,9 @@ ] } } + }, + { + "$ref": "#/components/schemas/Book" } ] }, @@ -13287,6 +13538,9 @@ ] } } + }, + { + "$ref": "#/components/schemas/Book" } ] }, @@ -13331,6 +13585,9 @@ ] } } + }, + { + "$ref": "#/components/schemas/Book" } ] }, @@ -13483,16 +13740,16 @@ "sort": { "$ref": "#/components/schemas/SortObject" }, - "numberOfElements": { - "type": "integer", - "format": "int32" - }, "first": { "type": "boolean" }, "last": { "type": "boolean" }, + "numberOfElements": { + "type": "integer", + "format": "int32" + }, "empty": { "type": "boolean" } @@ -14549,26 +14806,739 @@ } } }, - "BookImportBatchDto": { + "AllOfBook": { "required": [ - "books", - "copyMode" + "allOf" ], "type": "object", - "properties": { - "books": { - "type": "array", - "items": { - "$ref": "#/components/schemas/BookImportDto" - } + "allOf": [ + { + "$ref": "#/components/schemas/Book" }, - "copyMode": { - "type": "string", - "enum": [ - "MOVE", - "COPY", - "HARDLINK" - ] + { + "type": "object", + "properties": { + "allOf": { + "type": "array", + "items": { + "oneOf": [ + { + "$ref": "#/components/schemas/AllOfBook" + }, + { + "$ref": "#/components/schemas/AnyOfBook" + }, + { + "$ref": "#/components/schemas/Author" + }, + { + "$ref": "#/components/schemas/Deleted" + }, + { + "$ref": "#/components/schemas/LibraryId" + }, + { + "$ref": "#/components/schemas/MediaProfile" + }, + { + "$ref": "#/components/schemas/MediaStatus" + }, + { + "$ref": "#/components/schemas/NumberSort" + }, + { + "$ref": "#/components/schemas/OneShot" + }, + { + "$ref": "#/components/schemas/Poster" + }, + { + "$ref": "#/components/schemas/ReadListId" + }, + { + "$ref": "#/components/schemas/ReadStatus" + }, + { + "$ref": "#/components/schemas/ReleaseDate" + }, + { + "$ref": "#/components/schemas/SeriesId" + }, + { + "$ref": "#/components/schemas/Tag" + }, + { + "$ref": "#/components/schemas/Title" + } + ] + } + } + } + } + ] + }, + "AnyOfBook": { + "required": [ + "anyOf" + ], + "type": "object", + "allOf": [ + { + "$ref": "#/components/schemas/Book" + }, + { + "type": "object", + "properties": { + "anyOf": { + "type": "array", + "items": { + "oneOf": [ + { + "$ref": "#/components/schemas/AllOfBook" + }, + { + "$ref": "#/components/schemas/AnyOfBook" + }, + { + "$ref": "#/components/schemas/Author" + }, + { + "$ref": "#/components/schemas/Deleted" + }, + { + "$ref": "#/components/schemas/LibraryId" + }, + { + "$ref": "#/components/schemas/MediaProfile" + }, + { + "$ref": "#/components/schemas/MediaStatus" + }, + { + "$ref": "#/components/schemas/NumberSort" + }, + { + "$ref": "#/components/schemas/OneShot" + }, + { + "$ref": "#/components/schemas/Poster" + }, + { + "$ref": "#/components/schemas/ReadListId" + }, + { + "$ref": "#/components/schemas/ReadStatus" + }, + { + "$ref": "#/components/schemas/ReleaseDate" + }, + { + "$ref": "#/components/schemas/SeriesId" + }, + { + "$ref": "#/components/schemas/Tag" + }, + { + "$ref": "#/components/schemas/Title" + } + ] + } + } + } + } + ] + }, + "Book": { + "type": "object" + }, + "BookSearch": { + "type": "object", + "properties": { + "condition": { + "oneOf": [ + { + "$ref": "#/components/schemas/AllOfBook" + }, + { + "$ref": "#/components/schemas/AnyOfBook" + }, + { + "$ref": "#/components/schemas/Author" + }, + { + "$ref": "#/components/schemas/Deleted" + }, + { + "$ref": "#/components/schemas/LibraryId" + }, + { + "$ref": "#/components/schemas/MediaProfile" + }, + { + "$ref": "#/components/schemas/MediaStatus" + }, + { + "$ref": "#/components/schemas/NumberSort" + }, + { + "$ref": "#/components/schemas/OneShot" + }, + { + "$ref": "#/components/schemas/Poster" + }, + { + "$ref": "#/components/schemas/ReadListId" + }, + { + "$ref": "#/components/schemas/ReadStatus" + }, + { + "$ref": "#/components/schemas/ReleaseDate" + }, + { + "$ref": "#/components/schemas/SeriesId" + }, + { + "$ref": "#/components/schemas/Tag" + }, + { + "$ref": "#/components/schemas/Title" + } + ] + }, + "fullTextSearch": { + "type": "string" + } + } + }, + "EqualityMediaProfile": { + "required": [ + "operator" + ], + "type": "object", + "properties": { + "operator": { + "type": "string" + } + }, + "discriminator": { + "propertyName": "operator" + } + }, + "EqualityPosterMatch": { + "required": [ + "operator" + ], + "type": "object", + "properties": { + "operator": { + "type": "string" + } + }, + "discriminator": { + "propertyName": "operator" + } + }, + "MediaProfile": { + "required": [ + "mediaProfile" + ], + "type": "object", + "allOf": [ + { + "$ref": "#/components/schemas/Book" + }, + { + "type": "object", + "properties": { + "mediaProfile": { + "oneOf": [ + { + "$ref": "#/components/schemas/Is" + }, + { + "$ref": "#/components/schemas/IsNot" + } + ] + } + } + } + ] + }, + "MediaStatus": { + "required": [ + "mediaStatus" + ], + "type": "object", + "allOf": [ + { + "$ref": "#/components/schemas/Book" + }, + { + "type": "object", + "properties": { + "mediaStatus": { + "oneOf": [ + { + "$ref": "#/components/schemas/Is" + }, + { + "$ref": "#/components/schemas/IsNot" + } + ] + } + } + } + ] + }, + "NumberSort": { + "required": [ + "numberSort" + ], + "type": "object", + "allOf": [ + { + "$ref": "#/components/schemas/Book" + }, + { + "type": "object", + "properties": { + "numberSort": { + "oneOf": [ + { + "$ref": "#/components/schemas/GreaterThan" + }, + { + "$ref": "#/components/schemas/Is" + }, + { + "$ref": "#/components/schemas/IsNot" + }, + { + "$ref": "#/components/schemas/LessThan" + } + ] + } + } + } + ] + }, + "NumericFloat": { + "required": [ + "operator" + ], + "type": "object", + "properties": { + "operator": { + "type": "string" + } + }, + "discriminator": { + "propertyName": "operator" + } + }, + "Poster": { + "required": [ + "poster" + ], + "type": "object", + "allOf": [ + { + "$ref": "#/components/schemas/Book" + }, + { + "type": "object", + "properties": { + "poster": { + "oneOf": [ + { + "$ref": "#/components/schemas/Is" + }, + { + "$ref": "#/components/schemas/IsNot" + } + ] + } + } + } + ] + }, + "ReadListId": { + "required": [ + "readListId" + ], + "type": "object", + "allOf": [ + { + "$ref": "#/components/schemas/Book" + }, + { + "type": "object", + "properties": { + "readListId": { + "oneOf": [ + { + "$ref": "#/components/schemas/Is" + }, + { + "$ref": "#/components/schemas/IsNot" + } + ] + } + } + } + ] + }, + "SeriesId": { + "required": [ + "seriesId" + ], + "type": "object", + "allOf": [ + { + "$ref": "#/components/schemas/Book" + }, + { + "type": "object", + "properties": { + "seriesId": { + "oneOf": [ + { + "$ref": "#/components/schemas/Is" + }, + { + "$ref": "#/components/schemas/IsNot" + } + ] + } + } + } + ] + }, + "BookDto": { + "required": [ + "created", + "deleted", + "fileHash", + "fileLastModified", + "id", + "lastModified", + "libraryId", + "media", + "metadata", + "name", + "number", + "oneshot", + "seriesId", + "seriesTitle", + "size", + "sizeBytes", + "url" + ], + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "seriesId": { + "type": "string" + }, + "seriesTitle": { + "type": "string" + }, + "libraryId": { + "type": "string" + }, + "name": { + "type": "string" + }, + "url": { + "type": "string" + }, + "number": { + "type": "integer", + "format": "int32" + }, + "created": { + "type": "string", + "format": "date-time" + }, + "lastModified": { + "type": "string", + "format": "date-time" + }, + "fileLastModified": { + "type": "string", + "format": "date-time" + }, + "sizeBytes": { + "type": "integer", + "format": "int64" + }, + "size": { + "type": "string" + }, + "media": { + "$ref": "#/components/schemas/MediaDto" + }, + "metadata": { + "$ref": "#/components/schemas/BookMetadataDto" + }, + "readProgress": { + "$ref": "#/components/schemas/ReadProgressDto" + }, + "deleted": { + "type": "boolean" + }, + "fileHash": { + "type": "string" + }, + "oneshot": { + "type": "boolean" + } + } + }, + "BookMetadataDto": { + "required": [ + "authors", + "authorsLock", + "created", + "isbn", + "isbnLock", + "lastModified", + "links", + "linksLock", + "number", + "numberLock", + "numberSort", + "numberSortLock", + "releaseDateLock", + "summary", + "summaryLock", + "tags", + "tagsLock", + "title", + "titleLock" + ], + "type": "object", + "properties": { + "title": { + "type": "string" + }, + "titleLock": { + "type": "boolean" + }, + "summary": { + "type": "string" + }, + "summaryLock": { + "type": "boolean" + }, + "number": { + "type": "string" + }, + "numberLock": { + "type": "boolean" + }, + "numberSort": { + "type": "number", + "format": "float" + }, + "numberSortLock": { + "type": "boolean" + }, + "releaseDate": { + "type": "string", + "format": "date" + }, + "releaseDateLock": { + "type": "boolean" + }, + "authors": { + "type": "array", + "items": { + "$ref": "#/components/schemas/AuthorDto" + } + }, + "authorsLock": { + "type": "boolean" + }, + "tags": { + "uniqueItems": true, + "type": "array", + "items": { + "type": "string" + } + }, + "tagsLock": { + "type": "boolean" + }, + "isbn": { + "type": "string" + }, + "isbnLock": { + "type": "boolean" + }, + "links": { + "type": "array", + "items": { + "$ref": "#/components/schemas/WebLinkDto" + } + }, + "linksLock": { + "type": "boolean" + }, + "created": { + "type": "string", + "format": "date-time" + }, + "lastModified": { + "type": "string", + "format": "date-time" + } + } + }, + "MediaDto": { + "required": [ + "comment", + "epubDivinaCompatible", + "epubIsKepub", + "mediaProfile", + "mediaType", + "pagesCount", + "status" + ], + "type": "object", + "properties": { + "status": { + "type": "string" + }, + "mediaType": { + "type": "string" + }, + "pagesCount": { + "type": "integer", + "format": "int32" + }, + "comment": { + "type": "string" + }, + "epubDivinaCompatible": { + "type": "boolean" + }, + "epubIsKepub": { + "type": "boolean" + }, + "mediaProfile": { + "type": "string" + } + } + }, + "PageBookDto": { + "type": "object", + "properties": { + "totalElements": { + "type": "integer", + "format": "int64" + }, + "totalPages": { + "type": "integer", + "format": "int32" + }, + "pageable": { + "$ref": "#/components/schemas/PageableObject" + }, + "size": { + "type": "integer", + "format": "int32" + }, + "content": { + "type": "array", + "items": { + "$ref": "#/components/schemas/BookDto" + } + }, + "number": { + "type": "integer", + "format": "int32" + }, + "sort": { + "$ref": "#/components/schemas/SortObject" + }, + "first": { + "type": "boolean" + }, + "last": { + "type": "boolean" + }, + "numberOfElements": { + "type": "integer", + "format": "int32" + }, + "empty": { + "type": "boolean" + } + } + }, + "ReadProgressDto": { + "required": [ + "completed", + "created", + "deviceId", + "deviceName", + "lastModified", + "page", + "readDate" + ], + "type": "object", + "properties": { + "page": { + "type": "integer", + "format": "int32" + }, + "completed": { + "type": "boolean" + }, + "readDate": { + "type": "string", + "format": "date-time" + }, + "created": { + "type": "string", + "format": "date-time" + }, + "lastModified": { + "type": "string", + "format": "date-time" + }, + "deviceId": { + "type": "string" + }, + "deviceName": { + "type": "string" + } + } + }, + "BookImportBatchDto": { + "required": [ + "books", + "copyMode" + ], + "type": "object", + "properties": { + "books": { + "type": "array", + "items": { + "$ref": "#/components/schemas/BookImportDto" + } + }, + "copyMode": { + "type": "string", + "enum": [ + "MOVE", + "COPY", + "HARDLINK" + ] } } }, @@ -15436,734 +16406,373 @@ } }, "pageList": { - "type": "array", - "items": { - "$ref": "#/components/schemas/WPLinkDto" - } - } - } - }, - "StreamingResponseBody": { - "type": "object" - }, - "AuthenticationDocumentDto": { - "required": [ - "authentication", - "id", - "links", - "title" - ], - "type": "object", - "properties": { - "authentication": { - "type": "array", - "items": { - "$ref": "#/components/schemas/AuthenticationFlowDto" - } - }, - "title": { - "type": "string" - }, - "id": { - "type": "string" - }, - "description": { - "type": "string" - }, - "links": { - "type": "array", - "items": { - "$ref": "#/components/schemas/WPLinkDto" - } - } - } - }, - "AuthenticationFlowDto": { - "required": [ - "links", - "type" - ], - "type": "object", - "properties": { - "type": { - "type": "string", - "enum": [ - "http://opds-spec.org/auth/basic", - "http://opds-spec.org/auth/oauth/implicit", - "http://opds-spec.org/auth/oauth/password" - ] - }, - "labels": { - "$ref": "#/components/schemas/LabelsDto" - }, - "links": { - "type": "array", - "items": { - "$ref": "#/components/schemas/WPLinkDto" - } - } - } - }, - "LabelsDto": { - "type": "object", - "properties": { - "login": { - "type": "string" - }, - "password": { - "type": "string" - } - } - }, - "OpdsAuthor": { - "required": [ - "name" - ], - "type": "object", - "properties": { - "name": { - "type": "string" - }, - "uri": { - "type": "string", - "format": "uri" - } - } - }, - "OpdsEntry": { - "required": [ - "content", - "id", - "title", - "updated" - ], - "type": "object", - "properties": { - "title": { - "type": "string" - }, - "updated": { - "type": "string", - "format": "date-time" - }, - "id": { - "type": "string" - }, - "content": { - "type": "string" - } - } - }, - "OpdsFeed": { - "required": [ - "author", - "entries", - "id", - "links", - "title", - "updated" - ], - "type": "object", - "properties": { - "id": { - "type": "string" - }, - "title": { - "type": "string" - }, - "updated": { - "type": "string", - "format": "date-time" - }, - "author": { - "$ref": "#/components/schemas/OpdsAuthor" - }, - "links": { - "type": "array", - "items": { - "$ref": "#/components/schemas/OpdsLink" - } - }, - "entries": { - "type": "array", - "items": { - "$ref": "#/components/schemas/OpdsEntry" - } - } - } - }, - "OpdsLink": { - "required": [ - "href", - "rel", - "type" - ], - "type": "object", - "properties": { - "type": { - "type": "string" - }, - "rel": { - "type": "string" - }, - "href": { - "type": "string" + "type": "array", + "items": { + "$ref": "#/components/schemas/WPLinkDto" + } } } }, - "OpenSearchDescription": { + "StreamingResponseBody": { + "type": "object" + }, + "AuthenticationDocumentDto": { "required": [ - "description", - "inputEncoding", - "outputEncoding", - "shortName", - "url" + "authentication", + "id", + "links", + "title" ], "type": "object", "properties": { - "shortName": { - "maxLength": 16, - "minLength": 1, - "type": "string" + "authentication": { + "type": "array", + "items": { + "$ref": "#/components/schemas/AuthenticationFlowDto" + } }, - "description": { - "maxLength": 1024, - "minLength": 1, + "title": { "type": "string" }, - "inputEncoding": { + "id": { "type": "string" }, - "outputEncoding": { + "description": { "type": "string" }, - "url": { - "$ref": "#/components/schemas/OpenSearchUrl" + "links": { + "type": "array", + "items": { + "$ref": "#/components/schemas/WPLinkDto" + } } } }, - "OpenSearchUrl": { + "AuthenticationFlowDto": { "required": [ - "template", + "links", "type" ], "type": "object", "properties": { - "template": { - "type": "string" - }, "type": { - "type": "string" + "type": "string", + "enum": [ + "http://opds-spec.org/auth/basic", + "http://opds-spec.org/auth/oauth/implicit", + "http://opds-spec.org/auth/oauth/password" + ] + }, + "labels": { + "$ref": "#/components/schemas/LabelsDto" + }, + "links": { + "type": "array", + "items": { + "$ref": "#/components/schemas/WPLinkDto" + } } } }, - "UserAuthenticationDto": { - "required": [ - "authorized" - ], + "LabelsDto": { "type": "object", "properties": { - "authorized": { + "login": { + "type": "string" + }, + "password": { "type": "string" } } }, - "ResourcesDto": { + "OpdsAuthor": { "required": [ - "Resources" + "name" ], "type": "object", "properties": { - "Resources": { - "$ref": "#/components/schemas/JsonNode" + "name": { + "type": "string" + }, + "uri": { + "type": "string", + "format": "uri" } } }, - "AuthenticationActivityDto": { + "OpdsEntry": { "required": [ - "dateTime", - "success" + "content", + "id", + "title", + "updated" ], "type": "object", "properties": { - "userId": { - "type": "string" - }, - "email": { - "type": "string" - }, - "apiKeyId": { - "type": "string" - }, - "apiKeyComment": { - "type": "string" - }, - "ip": { - "type": "string" - }, - "userAgent": { - "type": "string" - }, - "success": { - "type": "boolean" - }, - "error": { + "title": { "type": "string" }, - "dateTime": { + "updated": { "type": "string", "format": "date-time" }, - "source": { + "id": { "type": "string" - } - } - }, - "PageAuthenticationActivityDto": { - "type": "object", - "properties": { - "totalElements": { - "type": "integer", - "format": "int64" - }, - "totalPages": { - "type": "integer", - "format": "int32" - }, - "pageable": { - "$ref": "#/components/schemas/PageableObject" - }, - "size": { - "type": "integer", - "format": "int32" }, "content": { - "type": "array", - "items": { - "$ref": "#/components/schemas/AuthenticationActivityDto" - } - }, - "number": { - "type": "integer", - "format": "int32" - }, - "sort": { - "$ref": "#/components/schemas/SortObject" - }, - "numberOfElements": { - "type": "integer", - "format": "int32" - }, - "first": { - "type": "boolean" - }, - "last": { - "type": "boolean" - }, - "empty": { - "type": "boolean" + "type": "string" } } }, - "TachiyomiReadProgressV2Dto": { + "OpdsFeed": { "required": [ - "booksCount", - "booksInProgressCount", - "booksReadCount", - "booksUnreadCount", - "lastReadContinuousNumberSort", - "maxNumberSort" + "author", + "entries", + "id", + "links", + "title", + "updated" ], "type": "object", "properties": { - "booksCount": { - "type": "integer", - "format": "int32" - }, - "booksReadCount": { - "type": "integer", - "format": "int32" - }, - "booksUnreadCount": { - "type": "integer", - "format": "int32" - }, - "booksInProgressCount": { - "type": "integer", - "format": "int32" - }, - "lastReadContinuousNumberSort": { - "type": "number", - "format": "float" - }, - "maxNumberSort": { - "type": "number", - "format": "float" - } - } - }, - "PageAuthorDto": { - "type": "object", - "properties": { - "totalElements": { - "type": "integer", - "format": "int64" + "id": { + "type": "string" }, - "totalPages": { - "type": "integer", - "format": "int32" + "title": { + "type": "string" }, - "pageable": { - "$ref": "#/components/schemas/PageableObject" + "updated": { + "type": "string", + "format": "date-time" }, - "size": { - "type": "integer", - "format": "int32" + "author": { + "$ref": "#/components/schemas/OpdsAuthor" }, - "content": { + "links": { "type": "array", "items": { - "$ref": "#/components/schemas/AuthorDto" + "$ref": "#/components/schemas/OpdsLink" } }, - "number": { - "type": "integer", - "format": "int32" - }, - "sort": { - "$ref": "#/components/schemas/SortObject" - }, - "numberOfElements": { - "type": "integer", - "format": "int32" - }, - "first": { - "type": "boolean" - }, - "last": { - "type": "boolean" - }, - "empty": { - "type": "boolean" + "entries": { + "type": "array", + "items": { + "$ref": "#/components/schemas/OpdsEntry" + } } } }, - "SettingMultiSourceInteger": { + "OpdsLink": { "required": [ - "configurationSource", - "databaseSource", - "effectiveValue" + "href", + "rel", + "type" ], "type": "object", "properties": { - "configurationSource": { - "type": "integer", - "format": "int32" + "type": { + "type": "string" }, - "databaseSource": { - "type": "integer", - "format": "int32" + "rel": { + "type": "string" }, - "effectiveValue": { - "type": "integer", - "format": "int32" + "href": { + "type": "string" } } }, - "SettingMultiSourceString": { + "OpenSearchDescription": { "required": [ - "configurationSource", - "databaseSource", - "effectiveValue" + "description", + "inputEncoding", + "outputEncoding", + "shortName", + "url" ], "type": "object", "properties": { - "configurationSource": { + "shortName": { + "maxLength": 16, + "minLength": 1, "type": "string" }, - "databaseSource": { + "description": { + "maxLength": 1024, + "minLength": 1, "type": "string" }, - "effectiveValue": { + "inputEncoding": { + "type": "string" + }, + "outputEncoding": { "type": "string" + }, + "url": { + "$ref": "#/components/schemas/OpenSearchUrl" } } }, - "SettingsDto": { + "OpenSearchUrl": { "required": [ - "deleteEmptyCollections", - "deleteEmptyReadLists", - "kepubifyPath", - "koboProxy", - "rememberMeDurationDays", - "serverContextPath", - "serverPort", - "taskPoolSize", - "thumbnailSize" + "template", + "type" ], "type": "object", "properties": { - "deleteEmptyCollections": { - "type": "boolean" - }, - "deleteEmptyReadLists": { - "type": "boolean" - }, - "rememberMeDurationDays": { - "type": "integer", - "format": "int64" - }, - "thumbnailSize": { - "type": "string", - "enum": [ - "DEFAULT", - "MEDIUM", - "LARGE", - "XLARGE" - ] - }, - "taskPoolSize": { - "type": "integer", - "format": "int32" - }, - "serverPort": { - "$ref": "#/components/schemas/SettingMultiSourceInteger" - }, - "serverContextPath": { - "$ref": "#/components/schemas/SettingMultiSourceString" - }, - "koboProxy": { - "type": "boolean" - }, - "koboPort": { - "type": "integer", - "format": "int32" + "template": { + "type": "string" }, - "kepubifyPath": { - "$ref": "#/components/schemas/SettingMultiSourceString" + "type": { + "type": "string" } } }, - "BookDto": { + "UserAuthenticationDto": { "required": [ - "created", - "deleted", - "fileHash", - "fileLastModified", - "id", - "lastModified", - "libraryId", - "media", - "metadata", - "name", - "number", - "oneshot", - "seriesId", - "seriesTitle", - "size", - "sizeBytes", - "url" + "authorized" ], "type": "object", "properties": { - "id": { + "authorized": { "type": "string" - }, - "seriesId": { + } + } + }, + "ResourcesDto": { + "required": [ + "Resources" + ], + "type": "object", + "properties": { + "Resources": { + "$ref": "#/components/schemas/JsonNode" + } + } + }, + "AuthenticationActivityDto": { + "required": [ + "dateTime", + "success" + ], + "type": "object", + "properties": { + "userId": { "type": "string" }, - "seriesTitle": { + "email": { "type": "string" }, - "libraryId": { + "apiKeyId": { "type": "string" }, - "name": { + "apiKeyComment": { "type": "string" }, - "url": { + "ip": { "type": "string" }, - "number": { - "type": "integer", - "format": "int32" + "userAgent": { + "type": "string" }, - "created": { - "type": "string", - "format": "date-time" + "success": { + "type": "boolean" }, - "lastModified": { - "type": "string", - "format": "date-time" + "error": { + "type": "string" }, - "fileLastModified": { + "dateTime": { "type": "string", "format": "date-time" }, - "sizeBytes": { - "type": "integer", - "format": "int64" - }, - "size": { - "type": "string" - }, - "media": { - "$ref": "#/components/schemas/MediaDto" - }, - "metadata": { - "$ref": "#/components/schemas/BookMetadataDto" - }, - "readProgress": { - "$ref": "#/components/schemas/ReadProgressDto" - }, - "deleted": { - "type": "boolean" - }, - "fileHash": { + "source": { "type": "string" - }, - "oneshot": { - "type": "boolean" } } }, - "BookMetadataDto": { - "required": [ - "authors", - "authorsLock", - "created", - "isbn", - "isbnLock", - "lastModified", - "links", - "linksLock", - "number", - "numberLock", - "numberSort", - "numberSortLock", - "releaseDateLock", - "summary", - "summaryLock", - "tags", - "tagsLock", - "title", - "titleLock" - ], + "PageAuthenticationActivityDto": { "type": "object", "properties": { - "title": { - "type": "string" - }, - "titleLock": { - "type": "boolean" - }, - "summary": { - "type": "string" - }, - "summaryLock": { - "type": "boolean" - }, - "number": { - "type": "string" - }, - "numberLock": { - "type": "boolean" - }, - "numberSort": { - "type": "number", - "format": "float" - }, - "numberSortLock": { - "type": "boolean" - }, - "releaseDate": { - "type": "string", - "format": "date" + "totalElements": { + "type": "integer", + "format": "int64" }, - "releaseDateLock": { - "type": "boolean" + "totalPages": { + "type": "integer", + "format": "int32" }, - "authors": { - "type": "array", - "items": { - "$ref": "#/components/schemas/AuthorDto" - } + "pageable": { + "$ref": "#/components/schemas/PageableObject" }, - "authorsLock": { - "type": "boolean" + "size": { + "type": "integer", + "format": "int32" }, - "tags": { - "uniqueItems": true, + "content": { "type": "array", "items": { - "type": "string" + "$ref": "#/components/schemas/AuthenticationActivityDto" } }, - "tagsLock": { - "type": "boolean" + "number": { + "type": "integer", + "format": "int32" }, - "isbn": { - "type": "string" + "sort": { + "$ref": "#/components/schemas/SortObject" }, - "isbnLock": { + "first": { "type": "boolean" }, - "links": { - "type": "array", - "items": { - "$ref": "#/components/schemas/WebLinkDto" - } - }, - "linksLock": { + "last": { "type": "boolean" }, - "created": { - "type": "string", - "format": "date-time" + "numberOfElements": { + "type": "integer", + "format": "int32" }, - "lastModified": { - "type": "string", - "format": "date-time" + "empty": { + "type": "boolean" } } }, - "MediaDto": { + "TachiyomiReadProgressV2Dto": { "required": [ - "comment", - "epubDivinaCompatible", - "epubIsKepub", - "mediaProfile", - "mediaType", - "pagesCount", - "status" + "booksCount", + "booksInProgressCount", + "booksReadCount", + "booksUnreadCount", + "lastReadContinuousNumberSort", + "maxNumberSort" ], "type": "object", "properties": { - "status": { - "type": "string" - }, - "mediaType": { - "type": "string" + "booksCount": { + "type": "integer", + "format": "int32" }, - "pagesCount": { + "booksReadCount": { "type": "integer", "format": "int32" }, - "comment": { - "type": "string" + "booksUnreadCount": { + "type": "integer", + "format": "int32" }, - "epubDivinaCompatible": { - "type": "boolean" + "booksInProgressCount": { + "type": "integer", + "format": "int32" }, - "epubIsKepub": { - "type": "boolean" + "lastReadContinuousNumberSort": { + "type": "number", + "format": "float" }, - "mediaProfile": { - "type": "string" + "maxNumberSort": { + "type": "number", + "format": "float" } } }, - "PageBookDto": { + "PageAuthorDto": { "type": "object", "properties": { "totalElements": { @@ -16184,7 +16793,7 @@ "content": { "type": "array", "items": { - "$ref": "#/components/schemas/BookDto" + "$ref": "#/components/schemas/AuthorDto" } }, "number": { @@ -16194,57 +16803,114 @@ "sort": { "$ref": "#/components/schemas/SortObject" }, - "numberOfElements": { - "type": "integer", - "format": "int32" - }, "first": { "type": "boolean" }, "last": { "type": "boolean" }, + "numberOfElements": { + "type": "integer", + "format": "int32" + }, "empty": { "type": "boolean" } } }, - "ReadProgressDto": { + "SettingMultiSourceInteger": { "required": [ - "completed", - "created", - "deviceId", - "deviceName", - "lastModified", - "page", - "readDate" + "configurationSource", + "databaseSource", + "effectiveValue" ], "type": "object", "properties": { - "page": { + "configurationSource": { "type": "integer", "format": "int32" }, - "completed": { + "databaseSource": { + "type": "integer", + "format": "int32" + }, + "effectiveValue": { + "type": "integer", + "format": "int32" + } + } + }, + "SettingMultiSourceString": { + "required": [ + "configurationSource", + "databaseSource", + "effectiveValue" + ], + "type": "object", + "properties": { + "configurationSource": { + "type": "string" + }, + "databaseSource": { + "type": "string" + }, + "effectiveValue": { + "type": "string" + } + } + }, + "SettingsDto": { + "required": [ + "deleteEmptyCollections", + "deleteEmptyReadLists", + "kepubifyPath", + "koboProxy", + "rememberMeDurationDays", + "serverContextPath", + "serverPort", + "taskPoolSize", + "thumbnailSize" + ], + "type": "object", + "properties": { + "deleteEmptyCollections": { "type": "boolean" }, - "readDate": { - "type": "string", - "format": "date-time" + "deleteEmptyReadLists": { + "type": "boolean" }, - "created": { - "type": "string", - "format": "date-time" + "rememberMeDurationDays": { + "type": "integer", + "format": "int64" }, - "lastModified": { + "thumbnailSize": { "type": "string", - "format": "date-time" + "enum": [ + "DEFAULT", + "MEDIUM", + "LARGE", + "XLARGE" + ] }, - "deviceId": { - "type": "string" + "taskPoolSize": { + "type": "integer", + "format": "int32" }, - "deviceName": { - "type": "string" + "serverPort": { + "$ref": "#/components/schemas/SettingMultiSourceInteger" + }, + "serverContextPath": { + "$ref": "#/components/schemas/SettingMultiSourceString" + }, + "koboProxy": { + "type": "boolean" + }, + "koboPort": { + "type": "integer", + "format": "int32" + }, + "kepubifyPath": { + "$ref": "#/components/schemas/SettingMultiSourceString" } } }, @@ -16311,16 +16977,16 @@ "sort": { "$ref": "#/components/schemas/SortObject" }, - "numberOfElements": { - "type": "integer", - "format": "int32" - }, "first": { "type": "boolean" }, "last": { "type": "boolean" }, + "numberOfElements": { + "type": "integer", + "format": "int32" + }, "empty": { "type": "boolean" } @@ -16433,16 +17099,16 @@ "sort": { "$ref": "#/components/schemas/SortObject" }, - "numberOfElements": { - "type": "integer", - "format": "int32" - }, "first": { "type": "boolean" }, "last": { "type": "boolean" }, + "numberOfElements": { + "type": "integer", + "format": "int32" + }, "empty": { "type": "boolean" } @@ -16479,16 +17145,16 @@ "sort": { "$ref": "#/components/schemas/SortObject" }, - "numberOfElements": { - "type": "integer", - "format": "int32" - }, "first": { "type": "boolean" }, "last": { "type": "boolean" }, + "numberOfElements": { + "type": "integer", + "format": "int32" + }, "empty": { "type": "boolean" } @@ -16545,16 +17211,16 @@ "sort": { "$ref": "#/components/schemas/SortObject" }, - "numberOfElements": { - "type": "integer", - "format": "int32" - }, "first": { "type": "boolean" }, "last": { "type": "boolean" }, + "numberOfElements": { + "type": "integer", + "format": "int32" + }, "empty": { "type": "boolean" } @@ -16620,16 +17286,16 @@ "sort": { "$ref": "#/components/schemas/SortObject" }, - "numberOfElements": { - "type": "integer", - "format": "int32" - }, "first": { "type": "boolean" }, "last": { "type": "boolean" }, + "numberOfElements": { + "type": "integer", + "format": "int32" + }, "empty": { "type": "boolean" } @@ -16666,16 +17332,16 @@ "sort": { "$ref": "#/components/schemas/SortObject" }, - "numberOfElements": { - "type": "integer", - "format": "int32" - }, "first": { "type": "boolean" }, "last": { "type": "boolean" }, + "numberOfElements": { + "type": "integer", + "format": "int32" + }, "empty": { "type": "boolean" }