From fe96fca5bfd7d665200b7dfa914a6a0c0f5177e2 Mon Sep 17 00:00:00 2001 From: github-actions <41898282+github-actions[bot]@users.noreply.github.com> Date: Thu, 29 Aug 2024 08:43:52 +0000 Subject: [PATCH] chore(release): 1.12.0 [skip ci] --- CHANGELOG.md | 32 ++ gradle.properties | 2 +- komga/docs/openapi.json | 1025 ++++++++++++++++++++++++++++++++++++++- 3 files changed, 1057 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 6f358d830..026fe8a17 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,35 @@ +# [1.12.0](https://github.com/gotson/komga/compare/1.11.3...1.12.0) (2024-08-29) +## 🚀 Features +**kobo** +- initial Kobo Sync support ([210c7b1](https://github.com/gotson/komga/commits/210c7b1)) +- add API key support ([a4747e8](https://github.com/gotson/komga/commits/a4747e8)) + +**metadata** +- use group-position for epub series index ([4354581](https://github.com/gotson/komga/commits/4354581)) + +**webui** +- api key support ([c1e1da6](https://github.com/gotson/komga/commits/c1e1da6)) + +## 🐛 Fixes +**api** +- incorrect query param name ([85a9934](https://github.com/gotson/komga/commits/85a9934)), closes [#1670](https://github.com/gotson/komga/issues/1670) +- properly handle simple read progress for divina compatible epub ([0d19aa1](https://github.com/gotson/komga/commits/0d19aa1)) + +## 🛠 Build + +- ignore conveyor steps on forks ([cefd527](https://github.com/gotson/komga/commits/cefd527)) + +## 🌐 Translation +**komga-tray** +- translated using Weblate (Hungarian) ([95df315](https://github.com/gotson/komga/commits/95df315)) + +## ⚙️ Dependencies +**ci** +- bump actions/checkout from 3 to 4 ([14887f5](https://github.com/gotson/komga/commits/14887f5)) + +**webui** +- bump webpack from 5.88.2 to 5.94.0 in /komga-webui ([f3bce23](https://github.com/gotson/komga/commits/f3bce23)) + # [1.11.3](https://github.com/gotson/komga/compare/1.11.2...1.11.3) (2024-08-26) ## 🐛 Fixes **api** diff --git a/gradle.properties b/gradle.properties index 4325a4f50..a302e41d8 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,2 +1,2 @@ -version=1.11.3 +version=1.12.0 org.gradle.jvmargs=-Xmx2G diff --git a/komga/docs/openapi.json b/komga/docs/openapi.json index 335c98e2e..ddb467fa8 100644 --- a/komga/docs/openapi.json +++ b/komga/docs/openapi.json @@ -20,6 +20,194 @@ } ], "paths": { + "/kobo/{authToken}/{*path}": { + "get": { + "tags": [ + "kobo-controller" + ], + "operationId": "catchAll", + "parameters": [ + { + "name": "body", + "in": "query", + "required": false, + "schema": { + "type": "object" + } + } + ], + "responses": { + "400": { + "description": "Bad Request", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ValidationErrorResponse" + } + } + } + }, + "200": { + "description": "OK", + "content": { + "application/json;charset\u003dutf-8": { + "schema": { + "$ref": "#/components/schemas/JsonNode" + } + } + } + } + } + }, + "put": { + "tags": [ + "kobo-controller" + ], + "operationId": "catchAll_2", + "requestBody": { + "content": { + "application/json": { + "schema": { + "type": "object" + } + } + } + }, + "responses": { + "400": { + "description": "Bad Request", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ValidationErrorResponse" + } + } + } + }, + "200": { + "description": "OK", + "content": { + "application/json;charset\u003dutf-8": { + "schema": { + "$ref": "#/components/schemas/JsonNode" + } + } + } + } + } + }, + "post": { + "tags": [ + "kobo-controller" + ], + "operationId": "catchAll_1", + "requestBody": { + "content": { + "application/json": { + "schema": { + "type": "object" + } + } + } + }, + "responses": { + "400": { + "description": "Bad Request", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ValidationErrorResponse" + } + } + } + }, + "200": { + "description": "OK", + "content": { + "application/json;charset\u003dutf-8": { + "schema": { + "$ref": "#/components/schemas/JsonNode" + } + } + } + } + } + }, + "delete": { + "tags": [ + "kobo-controller" + ], + "operationId": "catchAll_4", + "requestBody": { + "content": { + "application/json": { + "schema": { + "type": "object" + } + } + } + }, + "responses": { + "400": { + "description": "Bad Request", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ValidationErrorResponse" + } + } + } + }, + "200": { + "description": "OK", + "content": { + "application/json;charset\u003dutf-8": { + "schema": { + "$ref": "#/components/schemas/JsonNode" + } + } + } + } + } + }, + "patch": { + "tags": [ + "kobo-controller" + ], + "operationId": "catchAll_3", + "requestBody": { + "content": { + "application/json": { + "schema": { + "type": "object" + } + } + } + }, + "responses": { + "400": { + "description": "Bad Request", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ValidationErrorResponse" + } + } + } + }, + "200": { + "description": "OK", + "content": { + "application/json;charset\u003dutf-8": { + "schema": { + "$ref": "#/components/schemas/JsonNode" + } + } + } + } + } + } + }, "/opds/v2/books/{bookId}/progression": { "get": { "tags": [ @@ -182,6 +370,102 @@ } } }, + "/kobo/{authToken}/v1/library/{bookId}/state": { + "get": { + "tags": [ + "kobo-controller" + ], + "operationId": "getState", + "parameters": [ + { + "name": "bookId", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "400": { + "description": "Bad Request", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ValidationErrorResponse" + } + } + } + }, + "200": { + "description": "OK", + "content": { + "application/json;charset\u003dutf-8": { + "schema": { + "type": "object" + } + } + } + } + } + }, + "put": { + "tags": [ + "kobo-controller" + ], + "operationId": "updateState", + "parameters": [ + { + "name": "bookId", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "X-Kobo-deviceid", + "in": "header", + "required": false, + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ReadingStateStateUpdateDto" + } + } + }, + "required": true + }, + "responses": { + "400": { + "description": "Bad Request", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ValidationErrorResponse" + } + } + } + }, + "200": { + "description": "OK", + "content": { + "application/json;charset\u003dutf-8": { + "schema": { + "type": "object" + } + } + } + } + } + } + }, "/api/v2/series/{seriesId}/read-progress/tachiyomi": { "get": { "tags": [ @@ -866,6 +1150,46 @@ } } }, + "/kobo/{authToken}/v1/auth/device": { + "post": { + "tags": [ + "kobo-controller" + ], + "operationId": "authDevice", + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/JsonNode" + } + } + }, + "required": true + }, + "responses": { + "400": { + "description": "Bad Request", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ValidationErrorResponse" + } + } + } + }, + "200": { + "description": "OK", + "content": { + "application/json;charset\u003dutf-8": { + "schema": { + "type": "object" + } + } + } + } + } + } + }, "/api/v2/users": { "get": { "tags": [ @@ -937,6 +1261,77 @@ } } }, + "/api/v2/users/me/api-keys": { + "get": { + "tags": [ + "user-controller" + ], + "operationId": "getApiKeys", + "responses": { + "400": { + "description": "Bad Request", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ValidationErrorResponse" + } + } + } + }, + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/ApiKeyDto" + } + } + } + } + } + } + }, + "post": { + "tags": [ + "user-controller" + ], + "operationId": "createApiKey", + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiKeyRequestDto" + } + } + }, + "required": true + }, + "responses": { + "400": { + "description": "Bad Request", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ValidationErrorResponse" + } + } + } + }, + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiKeyDto" + } + } + } + } + } + } + }, "/api/v1/transient-books": { "post": { "tags": [ @@ -5565,6 +5960,343 @@ } } }, + "/kobo/{authToken}/v1/library/{bookId}/metadata": { + "get": { + "tags": [ + "kobo-controller" + ], + "operationId": "getBookMetadata", + "parameters": [ + { + "name": "authToken", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "bookId", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "400": { + "description": "Bad Request", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ValidationErrorResponse" + } + } + } + }, + "200": { + "description": "OK", + "content": { + "application/json;charset\u003dutf-8": { + "schema": { + "type": "object" + } + } + } + } + } + } + }, + "/kobo/{authToken}/v1/library/sync": { + "get": { + "tags": [ + "kobo-controller" + ], + "operationId": "syncLibrary", + "parameters": [ + { + "name": "authToken", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "400": { + "description": "Bad Request", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ValidationErrorResponse" + } + } + } + }, + "200": { + "description": "OK", + "content": { + "application/json;charset\u003dutf-8": { + "schema": { + "type": "array", + "items": { + "type": "object" + } + } + } + } + } + } + } + }, + "/kobo/{authToken}/v1/initialization": { + "get": { + "tags": [ + "kobo-controller" + ], + "operationId": "initialization", + "parameters": [ + { + "name": "authToken", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "400": { + "description": "Bad Request", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ValidationErrorResponse" + } + } + } + }, + "200": { + "description": "OK", + "content": { + "application/json;charset\u003dutf-8": { + "schema": { + "$ref": "#/components/schemas/ResourcesDto" + } + } + } + } + } + } + }, + "/kobo/{authToken}/v1/books/{bookId}/thumbnail/{width}/{height}/{quality}/{isGreyScale}/image.jpg": { + "get": { + "tags": [ + "kobo-controller" + ], + "operationId": "getBookCover", + "parameters": [ + { + "name": "bookId", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "width", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "height", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "quality", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "isGreyScale", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "400": { + "description": "Bad Request", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ValidationErrorResponse" + } + } + } + }, + "200": { + "description": "OK", + "content": { + "image/jpeg": { + "schema": { + "type": "object" + } + } + } + } + } + } + }, + "/kobo/{authToken}/v1/books/{bookId}/thumbnail/{width}/{height}/{isGreyScale}/image.jpg": { + "get": { + "tags": [ + "kobo-controller" + ], + "operationId": "getBookCover_1", + "parameters": [ + { + "name": "bookId", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "width", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "height", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "isGreyScale", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "400": { + "description": "Bad Request", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ValidationErrorResponse" + } + } + } + }, + "200": { + "description": "OK", + "content": { + "image/jpeg": { + "schema": { + "type": "object" + } + } + } + } + } + } + }, + "/kobo/{authToken}/v1/books/{bookId}/file/epub": { + "get": { + "tags": [ + "kobo-controller" + ], + "operationId": "getBookFile_5", + "parameters": [ + { + "name": "bookId", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "400": { + "description": "Bad Request", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ValidationErrorResponse" + } + } + } + }, + "200": { + "description": "OK", + "content": { + "application/octet-stream": { + "schema": { + "$ref": "#/components/schemas/StreamingResponseBody" + } + } + } + } + } + } + }, + "/kobo/{authToken}/ping": { + "get": { + "tags": [ + "kobo-controller" + ], + "operationId": "ping", + "responses": { + "400": { + "description": "Bad Request", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ValidationErrorResponse" + } + } + } + }, + "200": { + "description": "OK", + "content": { + "application/json;charset\u003dutf-8": { + "schema": { + "type": "string" + } + } + } + } + } + } + }, "/api/v2/users/{id}/authentication-activity/latest": { "get": { "tags": [ @@ -5579,6 +6311,14 @@ "schema": { "type": "string" } + }, + { + "name": "apikey_id", + "in": "query", + "required": false, + "schema": { + "type": "string" + } } ], "responses": { @@ -8432,7 +9172,7 @@ } }, { - "name": "release_years", + "name": "release_year", "in": "query", "required": false, "schema": { @@ -9723,6 +10463,39 @@ } } }, + "/api/v2/users/me/api-keys/{keyId}": { + "delete": { + "tags": [ + "user-controller" + ], + "operationId": "deleteApiKey", + "parameters": [ + { + "name": "keyId", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "400": { + "description": "Bad Request", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ValidationErrorResponse" + } + } + } + }, + "204": { + "description": "No Content" + } + } + } + }, "/api/v1/tasks": { "delete": { "tags": [ @@ -9754,6 +10527,42 @@ } } }, + "/api/v1/syncpoints/me": { + "delete": { + "tags": [ + "sync-point-controller" + ], + "operationId": "deleteMySyncPointsByApiKey", + "parameters": [ + { + "name": "key_id", + "in": "query", + "required": false, + "schema": { + "type": "array", + "items": { + "type": "string" + } + } + } + ], + "responses": { + "400": { + "description": "Bad Request", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ValidationErrorResponse" + } + } + } + }, + "204": { + "description": "No Content" + } + } + } + }, "/api/v1/oauth2/providers": { "get": { "tags": [ @@ -10001,6 +10810,9 @@ } } }, + "JsonNode": { + "type": "object" + }, "Location": { "required": [ "fragments" @@ -10100,6 +10912,149 @@ } } }, + "BookmarkDto": { + "required": [ + "LastModified" + ], + "type": "object", + "properties": { + "LastModified": { + "type": "string", + "format": "date-time" + }, + "ProgressPercent": { + "type": "number", + "format": "float" + }, + "ContentSourceProgressPercent": { + "type": "number", + "format": "float" + }, + "Location": { + "$ref": "#/components/schemas/LocationDto" + } + } + }, + "LocationDto": { + "required": [ + "Source" + ], + "type": "object", + "properties": { + "Value": { + "type": "string" + }, + "Type": { + "type": "string" + }, + "Source": { + "type": "string" + } + } + }, + "ReadingStateDto": { + "required": [ + "CurrentBookmark", + "EntitlementId", + "LastModified", + "Statistics", + "StatusInfo" + ], + "type": "object", + "properties": { + "Created": { + "type": "string", + "format": "date-time" + }, + "CurrentBookmark": { + "$ref": "#/components/schemas/BookmarkDto" + }, + "EntitlementId": { + "type": "string" + }, + "LastModified": { + "type": "string", + "format": "date-time" + }, + "PriorityTimestamp": { + "type": "string", + "format": "date-time" + }, + "Statistics": { + "$ref": "#/components/schemas/StatisticsDto" + }, + "StatusInfo": { + "$ref": "#/components/schemas/StatusInfoDto" + } + } + }, + "ReadingStateStateUpdateDto": { + "required": [ + "ReadingStates" + ], + "type": "object", + "properties": { + "ReadingStates": { + "type": "array", + "items": { + "$ref": "#/components/schemas/ReadingStateDto" + } + } + } + }, + "StatisticsDto": { + "required": [ + "LastModified" + ], + "type": "object", + "properties": { + "LastModified": { + "type": "string", + "format": "date-time" + }, + "RemainingTimeMinutes": { + "type": "integer", + "format": "int32" + }, + "SpentReadingMinutes": { + "type": "integer", + "format": "int32" + } + } + }, + "StatusInfoDto": { + "required": [ + "LastModified", + "Status" + ], + "type": "object", + "properties": { + "LastModified": { + "type": "string", + "format": "date-time" + }, + "Status": { + "type": "string", + "enum": [ + "ReadyToRead", + "Finished", + "Reading" + ] + }, + "TimesStartedReading": { + "type": "integer", + "format": "int32" + }, + "LastTimeFinished": { + "type": "string", + "format": "date-time" + }, + "LastTimeStartedReading": { + "type": "string", + "format": "date-time" + } + } + }, "TachiyomiReadProgressUpdateV2Dto": { "required": [ "lastBookNumberSortRead" @@ -10349,6 +11304,50 @@ } } }, + "ApiKeyRequestDto": { + "required": [ + "comment" + ], + "type": "object", + "properties": { + "comment": { + "type": "string" + } + } + }, + "ApiKeyDto": { + "required": [ + "comment", + "createdDate", + "id", + "key", + "lastModifiedDate", + "userId" + ], + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "userId": { + "type": "string" + }, + "key": { + "type": "string" + }, + "comment": { + "type": "string" + }, + "createdDate": { + "type": "string", + "format": "date-time" + }, + "lastModifiedDate": { + "type": "string", + "format": "date-time" + } + } + }, "ScanRequestDto": { "required": [ "path" @@ -11399,6 +12398,9 @@ "type": "integer", "format": "int32" }, + "koboProxy": { + "type": "boolean" + }, "serverPort": { "maximum": 65535, "type": "integer", @@ -12341,6 +13343,17 @@ } } }, + "ResourcesDto": { + "required": [ + "Resources" + ], + "type": "object", + "properties": { + "Resources": { + "$ref": "#/components/schemas/JsonNode" + } + } + }, "AuthenticationActivityDto": { "required": [ "dateTime", @@ -12354,6 +13367,12 @@ "email": { "type": "string" }, + "apiKeyId": { + "type": "string" + }, + "apiKeyComment": { + "type": "string" + }, "ip": { "type": "string" }, @@ -12604,6 +13623,7 @@ "required": [ "deleteEmptyCollections", "deleteEmptyReadLists", + "koboProxy", "rememberMeDurationDays", "serverContextPath", "serverPort", @@ -12640,6 +13660,9 @@ }, "serverContextPath": { "$ref": "#/components/schemas/SettingMultiSourceString" + }, + "koboProxy": { + "type": "boolean" } } },