diff --git a/openapi.json b/openapi.json index 2ea482a8e..cf26aeec8 100644 --- a/openapi.json +++ b/openapi.json @@ -1,8 +1,8 @@ { "openapi": "3.0.4", "info": { - "title": "Kavita (v0.8.6.4)", - "description": "Kavita provides a set of APIs that are authenticated by JWT. JWT token can be copied from local storage. Assume all fields of a payload are required. Built against v0.8.6.4", + "title": "Kavita (v0.8.6.5)", + "description": "Kavita provides a set of APIs that are authenticated by JWT. JWT token can be copied from local storage. Assume all fields of a payload are required. Built against v0.8.6.5", "license": { "name": "GPL-3.0", "url": "https://github.com/Kareadita/Kavita/blob/develop/LICENSE" @@ -1256,6 +1256,47 @@ } } }, + "/api/Chapter/chapter-detail-plus": { + "get": { + "tags": [ + "Chapter" + ], + "summary": "Returns Ratings and Reviews for an individual Chapter", + "parameters": [ + { + "name": "chapterId", + "in": "query", + "description": "", + "schema": { + "type": "integer", + "format": "int32" + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "text/plain": { + "schema": { + "$ref": "#/components/schemas/ChapterDetailPlusDto" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/ChapterDetailPlusDto" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/ChapterDetailPlusDto" + } + } + } + } + } + } + }, "/api/Collection": { "get": { "tags": [ @@ -5896,15 +5937,124 @@ } } }, - "/api/Rating/overall": { + "/api/Rating/series": { + "post": { + "tags": [ + "Rating" + ], + "summary": "Update the users' rating of the given series", + "requestBody": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/UpdateRatingDto" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/UpdateRatingDto" + } + }, + "application/*+json": { + "schema": { + "$ref": "#/components/schemas/UpdateRatingDto" + } + } + } + }, + "responses": { + "200": { + "description": "OK" + } + } + } + }, + "/api/Rating/chapter": { + "post": { + "tags": [ + "Rating" + ], + "summary": "Update the users' rating of the given chapter", + "requestBody": { + "description": "chapterId must be set", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/UpdateRatingDto" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/UpdateRatingDto" + } + }, + "application/*+json": { + "schema": { + "$ref": "#/components/schemas/UpdateRatingDto" + } + } + } + }, + "responses": { + "200": { + "description": "OK" + } + } + } + }, + "/api/Rating/overall-series": { "get": { "tags": [ "Rating" ], + "summary": "Overall rating from all Kavita users for a given Series", "parameters": [ { "name": "seriesId", "in": "query", + "description": "", + "schema": { + "type": "integer", + "format": "int32" + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "text/plain": { + "schema": { + "$ref": "#/components/schemas/RatingDto" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/RatingDto" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/RatingDto" + } + } + } + } + } + } + }, + "/api/Rating/overall-chapter": { + "get": { + "tags": [ + "Rating" + ], + "summary": "Overall rating from all Kavita users for a given Chapter", + "parameters": [ + { + "name": "chapterId", + "in": "query", + "description": "", "schema": { "type": "integer", "format": "int32" @@ -8724,12 +8874,12 @@ } } }, - "/api/Review": { + "/api/Review/series": { "post": { "tags": [ "Review" ], - "summary": "Updates the review for a given series", + "summary": "Updates the user's review for a given series", "requestBody": { "description": "", "content": { @@ -8795,6 +8945,77 @@ } } }, + "/api/Review/chapter": { + "post": { + "tags": [ + "Review" + ], + "summary": "Update the user's review for a given chapter", + "requestBody": { + "description": "chapterId must be set", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/UpdateUserReviewDto" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/UpdateUserReviewDto" + } + }, + "application/*+json": { + "schema": { + "$ref": "#/components/schemas/UpdateUserReviewDto" + } + } + } + }, + "responses": { + "200": { + "description": "OK", + "content": { + "text/plain": { + "schema": { + "$ref": "#/components/schemas/UserReviewDto" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/UserReviewDto" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/UserReviewDto" + } + } + } + } + } + }, + "delete": { + "tags": [ + "Review" + ], + "summary": "Deletes the user's review for the given chapter", + "parameters": [ + { + "name": "chapterId", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + } + } + ], + "responses": { + "200": { + "description": "OK" + } + } + } + }, "/api/Scrobbling/anilist-token": { "get": { "tags": [ @@ -9926,39 +10147,6 @@ "deprecated": true } }, - "/api/Series/update-rating": { - "post": { - "tags": [ - "Series" - ], - "summary": "Update the user rating for the given series", - "requestBody": { - "description": "", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/UpdateSeriesRatingDto" - } - }, - "text/json": { - "schema": { - "$ref": "#/components/schemas/UpdateSeriesRatingDto" - } - }, - "application/*+json": { - "schema": { - "$ref": "#/components/schemas/UpdateSeriesRatingDto" - } - } - } - }, - "responses": { - "200": { - "description": "OK" - } - } - } - }, "/api/Series/update": { "post": { "tags": [ @@ -15079,6 +15267,13 @@ }, "nullable": true }, + "chapterRatings": { + "type": "array", + "items": { + "$ref": "#/components/schemas/AppUserChapterRating" + }, + "nullable": true + }, "userPreferences": { "$ref": "#/components/schemas/AppUserPreferences" }, @@ -15290,6 +15485,52 @@ "additionalProperties": false, "description": "Represents a saved page in a Chapter entity for a given user." }, + "AppUserChapterRating": { + "type": "object", + "properties": { + "id": { + "type": "integer", + "format": "int32" + }, + "rating": { + "type": "number", + "description": "A number between 0-5.0 that represents how good a series is.", + "format": "float" + }, + "hasBeenRated": { + "type": "boolean", + "description": "If the rating has been explicitly set. Otherwise, the 0.0 rating should be ignored as it's not rated" + }, + "review": { + "type": "string", + "description": "A short summary the user can write when giving their review.", + "nullable": true + }, + "seriesId": { + "type": "integer", + "description": "An optional tagline for the review", + "format": "int32" + }, + "series": { + "$ref": "#/components/schemas/Series" + }, + "chapterId": { + "type": "integer", + "format": "int32" + }, + "chapter": { + "$ref": "#/components/schemas/Chapter" + }, + "appUserId": { + "type": "integer", + "format": "int32" + }, + "appUser": { + "$ref": "#/components/schemas/AppUser" + } + }, + "additionalProperties": false + }, "AppUserCollection": { "required": [ "ageRating", @@ -16709,6 +16950,11 @@ "type": "string", "nullable": true }, + "averageExternalRating": { + "type": "number", + "description": "(Kavita+) Average rating from Kavita+ metadata", + "format": "float" + }, "ageRatingLocked": { "type": "boolean" }, @@ -16795,6 +17041,13 @@ }, "nullable": true }, + "ratings": { + "type": "array", + "items": { + "$ref": "#/components/schemas/AppUserChapterRating" + }, + "nullable": true + }, "userProgress": { "type": "array", "items": { @@ -16808,6 +17061,47 @@ "volumeId": { "type": "integer", "format": "int32" + }, + "externalReviews": { + "type": "array", + "items": { + "$ref": "#/components/schemas/ExternalReview" + }, + "nullable": true + }, + "externalRatings": { + "type": "array", + "items": { + "$ref": "#/components/schemas/ExternalRating" + }, + "nullable": true + } + }, + "additionalProperties": false + }, + "ChapterDetailPlusDto": { + "type": "object", + "properties": { + "rating": { + "type": "number", + "format": "float" + }, + "hasBeenRated": { + "type": "boolean" + }, + "reviews": { + "type": "array", + "items": { + "$ref": "#/components/schemas/UserReviewDto" + }, + "nullable": true + }, + "ratings": { + "type": "array", + "items": { + "$ref": "#/components/schemas/RatingDto" + }, + "nullable": true } }, "additionalProperties": false @@ -18343,6 +18637,14 @@ "description": "Misleading name but is the source of data (like a review coming from AniList)", "format": "int32" }, + "authority": { + "enum": [ + 0, + 1 + ], + "type": "integer", + "format": "int32" + }, "providerUrl": { "type": "string", "nullable": true @@ -18351,6 +18653,12 @@ "type": "integer", "format": "int32" }, + "chapterId": { + "type": "integer", + "description": "This can be null when for a series-rating", + "format": "int32", + "nullable": true + }, "externalSeriesMetadatas": { "type": "array", "items": { @@ -18469,6 +18777,14 @@ "description": "Misleading name but is the source of data (like a review coming from AniList)", "format": "int32" }, + "authority": { + "enum": [ + 0, + 1 + ], + "type": "integer", + "format": "int32" + }, "siteUrl": { "type": "string", "nullable": true @@ -18496,6 +18812,11 @@ "type": "integer", "format": "int32" }, + "chapterId": { + "type": "integer", + "format": "int32", + "nullable": true + }, "externalSeriesMetadatas": { "type": "array", "items": { @@ -20865,6 +21186,14 @@ "description": "Misleading name but is the source of data (like a review coming from AniList)", "format": "int32" }, + "authority": { + "enum": [ + 0, + 1 + ], + "type": "integer", + "format": "int32" + }, "providerUrl": { "type": "string", "nullable": true @@ -24820,6 +25149,25 @@ }, "additionalProperties": false }, + "UpdateRatingDto": { + "type": "object", + "properties": { + "seriesId": { + "type": "integer", + "format": "int32" + }, + "chapterId": { + "type": "integer", + "format": "int32", + "nullable": true + }, + "userRating": { + "type": "number", + "format": "float" + } + }, + "additionalProperties": false + }, "UpdateReadingListByChapterDto": { "type": "object", "properties": { @@ -25156,20 +25504,6 @@ }, "additionalProperties": false }, - "UpdateSeriesRatingDto": { - "type": "object", - "properties": { - "seriesId": { - "type": "integer", - "format": "int32" - }, - "userRating": { - "type": "number", - "format": "float" - } - }, - "additionalProperties": false - }, "UpdateStreamPositionDto": { "type": "object", "properties": { @@ -25237,6 +25571,11 @@ "type": "integer", "format": "int32" }, + "chapterId": { + "type": "integer", + "format": "int32", + "nullable": true + }, "body": { "type": "string", "nullable": true @@ -25669,6 +26008,11 @@ "description": "The series this is for", "format": "int32" }, + "chapterId": { + "type": "integer", + "format": "int32", + "nullable": true + }, "libraryId": { "type": "integer", "description": "The library this series belongs in", @@ -25716,6 +26060,15 @@ "type": "integer", "description": "If this review is External, which Provider did it come from", "format": "int32" + }, + "authority": { + "enum": [ + 0, + 1 + ], + "type": "integer", + "description": "Source of the Rating", + "format": "int32" } }, "additionalProperties": false,