Update OpenAPI documentation

This commit is contained in:
GitHub Action 2025-09-28 19:30:20 +00:00
parent 5c4698a0f3
commit d4e3a2de3e

View File

@ -2,12 +2,12 @@
"openapi": "3.0.4",
"info": {
"title": "Kavita",
"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.7.17",
"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.7.18",
"license": {
"name": "GPL-3.0",
"url": "https://github.com/Kareadita/Kavita/blob/develop/LICENSE"
},
"version": "0.8.7.17"
"version": "0.8.7.18"
},
"servers": [
{
@ -968,6 +968,84 @@
}
}
},
"/api/Annotation/all-filtered": {
"post": {
"tags": [
"Annotation"
],
"summary": "Returns a list of annotations for browsing",
"parameters": [
{
"name": "PageNumber",
"in": "query",
"schema": {
"type": "integer",
"format": "int32"
}
},
{
"name": "PageSize",
"in": "query",
"description": "If set to 0, will set as MaxInt",
"schema": {
"type": "integer",
"format": "int32"
}
}
],
"requestBody": {
"description": "",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/BrowseAnnotationFilterDto"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/BrowseAnnotationFilterDto"
}
},
"application/*+json": {
"schema": {
"$ref": "#/components/schemas/BrowseAnnotationFilterDto"
}
}
}
},
"responses": {
"200": {
"description": "OK",
"content": {
"text/plain": {
"schema": {
"type": "array",
"items": {
"$ref": "#/components/schemas/AnnotationDto"
}
}
},
"application/json": {
"schema": {
"type": "array",
"items": {
"$ref": "#/components/schemas/AnnotationDto"
}
}
},
"text/json": {
"schema": {
"type": "array",
"items": {
"$ref": "#/components/schemas/AnnotationDto"
}
}
}
}
}
}
}
},
"/api/Annotation/all": {
"get": {
"tags": [
@ -1156,7 +1234,7 @@
"tags": [
"Annotation"
],
"summary": "Update the modifable fields (Spoiler, highlight slot, and comment) for an annotation",
"summary": "Update the modifiable fields (Spoiler, highlight slot, and comment) for an annotation",
"requestBody": {
"description": "",
"content": {
@ -1225,6 +1303,147 @@
}
}
},
"/api/Annotation/bulk-delete": {
"post": {
"tags": [
"Annotation"
],
"summary": "Removes annotations in bulk. Requires every annotation to be owned by the authenticated user",
"requestBody": {
"description": "",
"content": {
"application/json": {
"schema": {
"type": "array",
"items": {
"type": "integer",
"format": "int32"
}
}
},
"text/json": {
"schema": {
"type": "array",
"items": {
"type": "integer",
"format": "int32"
}
}
},
"application/*+json": {
"schema": {
"type": "array",
"items": {
"type": "integer",
"format": "int32"
}
}
}
}
},
"responses": {
"200": {
"description": "OK"
}
}
}
},
"/api/Annotation/export-filter": {
"post": {
"tags": [
"Annotation"
],
"summary": "Exports annotations for the given users",
"parameters": [
{
"name": "PageNumber",
"in": "query",
"schema": {
"type": "integer",
"format": "int32"
}
},
{
"name": "PageSize",
"in": "query",
"description": "If set to 0, will set as MaxInt",
"schema": {
"type": "integer",
"format": "int32"
}
}
],
"requestBody": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/BrowseAnnotationFilterDto"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/BrowseAnnotationFilterDto"
}
},
"application/*+json": {
"schema": {
"$ref": "#/components/schemas/BrowseAnnotationFilterDto"
}
}
}
},
"responses": {
"200": {
"description": "OK"
}
}
}
},
"/api/Annotation/export": {
"post": {
"tags": [
"Annotation"
],
"summary": "Exports Annotations for the User",
"requestBody": {
"description": "Export annotations with the given ids",
"content": {
"application/json": {
"schema": {
"type": "array",
"items": {
"type": "integer",
"format": "int32"
}
}
},
"text/json": {
"schema": {
"type": "array",
"items": {
"type": "integer",
"format": "int32"
}
}
},
"application/*+json": {
"schema": {
"type": "array",
"items": {
"type": "integer",
"format": "int32"
}
}
}
}
},
"responses": {
"200": {
"description": "OK"
}
}
}
},
"/api/Book/{chapterId}/book-info": {
"get": {
"tags": [
@ -4480,7 +4699,7 @@
"tags": [
"License"
],
"summary": "Has any license registered with the instance. Does not check Kavita+ API",
"summary": "Has any license registered with the instance. Does not validate against Kavita+ API",
"responses": {
"200": {
"description": "OK",
@ -4621,6 +4840,36 @@
}
}
},
"/api/License/resend-license": {
"post": {
"tags": [
"License"
],
"summary": "Resend the welcome email to the user",
"responses": {
"200": {
"description": "OK",
"content": {
"text/plain": {
"schema": {
"type": "boolean"
}
},
"application/json": {
"schema": {
"type": "boolean"
}
},
"text/json": {
"schema": {
"type": "boolean"
}
}
}
}
}
}
},
"/api/Locale": {
"get": {
"tags": [
@ -5392,10 +5641,12 @@
"tags": [
"Opds"
],
"summary": "Returns the Catalogue for Kavita's OPDS Service",
"parameters": [
{
"name": "apiKey",
"in": "path",
"description": "",
"required": true,
"schema": {
"type": "string"
@ -5412,10 +5663,12 @@
"tags": [
"Opds"
],
"summary": "Returns the Catalogue for Kavita's OPDS Service",
"parameters": [
{
"name": "apiKey",
"in": "path",
"description": "",
"required": true,
"schema": {
"type": "string"
@ -5434,7 +5687,7 @@
"tags": [
"Opds"
],
"summary": "Returns the Series matching this smart filter. If FromDashboard, will only return 20 records.",
"summary": "Get the User's Smart Filter series - Supports Pagination",
"parameters": [
{
"name": "apiKey",
@ -5459,7 +5712,7 @@
"schema": {
"type": "integer",
"format": "int32",
"default": 0
"default": 1
}
}
],
@ -5475,10 +5728,12 @@
"tags": [
"Opds"
],
"summary": "Get the User's Smart Filters (Dashboard Context) - Supports Pagination",
"parameters": [
{
"name": "apiKey",
"in": "path",
"description": "",
"required": true,
"schema": {
"type": "string"
@ -5487,10 +5742,11 @@
{
"name": "pageNumber",
"in": "query",
"description": "",
"schema": {
"type": "integer",
"format": "int32",
"default": 0
"default": 1
}
}
],
@ -5506,14 +5762,26 @@
"tags": [
"Opds"
],
"summary": "Get the User's Libraries - No Pagination Support",
"parameters": [
{
"name": "apiKey",
"in": "path",
"description": "",
"required": true,
"schema": {
"type": "string"
}
},
{
"name": "pageNumber",
"in": "query",
"description": "",
"schema": {
"type": "integer",
"format": "int32",
"default": 1
}
}
],
"responses": {
@ -5528,10 +5796,12 @@
"tags": [
"Opds"
],
"summary": "Get the User's Want to Read list - Supports Pagination",
"parameters": [
{
"name": "apiKey",
"in": "path",
"description": "",
"required": true,
"schema": {
"type": "string"
@ -5540,10 +5810,11 @@
{
"name": "pageNumber",
"in": "query",
"description": "",
"schema": {
"type": "integer",
"format": "int32",
"default": 0
"default": 1
}
}
],
@ -5559,10 +5830,12 @@
"tags": [
"Opds"
],
"summary": "Get all Collections - Supports Pagination",
"parameters": [
{
"name": "apiKey",
"in": "path",
"description": "",
"required": true,
"schema": {
"type": "string"
@ -5571,10 +5844,11 @@
{
"name": "pageNumber",
"in": "query",
"description": "",
"schema": {
"type": "integer",
"format": "int32",
"default": 0
"default": 1
}
}
],
@ -5590,10 +5864,12 @@
"tags": [
"Opds"
],
"summary": "Get Series for a given Collection - Supports Pagination",
"parameters": [
{
"name": "collectionId",
"in": "path",
"description": "",
"required": true,
"schema": {
"type": "integer",
@ -5603,6 +5879,7 @@
{
"name": "apiKey",
"in": "path",
"description": "",
"required": true,
"schema": {
"type": "string"
@ -5611,10 +5888,11 @@
{
"name": "pageNumber",
"in": "query",
"description": "",
"schema": {
"type": "integer",
"format": "int32",
"default": 0
"default": 1
}
}
],
@ -5630,10 +5908,12 @@
"tags": [
"Opds"
],
"summary": "Get a User's Reading Lists - Supports Pagination",
"parameters": [
{
"name": "apiKey",
"in": "path",
"description": "",
"required": true,
"schema": {
"type": "string"
@ -5642,10 +5922,11 @@
{
"name": "pageNumber",
"in": "query",
"description": "",
"schema": {
"type": "integer",
"format": "int32",
"default": 0
"default": 1
}
}
],
@ -5661,10 +5942,12 @@
"tags": [
"Opds"
],
"summary": "Returns individual items (chapters) from Reading List by ID - Supports Pagination",
"parameters": [
{
"name": "readingListId",
"in": "path",
"description": "",
"required": true,
"schema": {
"type": "integer",
@ -5674,6 +5957,7 @@
{
"name": "apiKey",
"in": "path",
"description": "",
"required": true,
"schema": {
"type": "string"
@ -5682,10 +5966,11 @@
{
"name": "pageNumber",
"in": "query",
"description": "",
"schema": {
"type": "integer",
"format": "int32",
"default": 0
"default": 1
}
}
],
@ -5701,10 +5986,12 @@
"tags": [
"Opds"
],
"summary": "Returns Series from the Library - Supports Pagination",
"parameters": [
{
"name": "libraryId",
"in": "path",
"description": "",
"required": true,
"schema": {
"type": "integer",
@ -5714,6 +6001,7 @@
{
"name": "apiKey",
"in": "path",
"description": "",
"required": true,
"schema": {
"type": "string"
@ -5722,10 +6010,11 @@
{
"name": "pageNumber",
"in": "query",
"description": "",
"schema": {
"type": "integer",
"format": "int32",
"default": 0
"default": 1
}
}
],
@ -5741,10 +6030,12 @@
"tags": [
"Opds"
],
"summary": "Returns Recently Added (Dashboard Feed) - Supports Pagination",
"parameters": [
{
"name": "apiKey",
"in": "path",
"description": "",
"required": true,
"schema": {
"type": "string"
@ -5753,6 +6044,7 @@
{
"name": "pageNumber",
"in": "query",
"description": "",
"schema": {
"type": "integer",
"format": "int32",
@ -5772,10 +6064,12 @@
"tags": [
"Opds"
],
"summary": "Returns More In a Genre (Dashboard Feed) - Supports Pagination",
"parameters": [
{
"name": "apiKey",
"in": "path",
"description": "",
"required": true,
"schema": {
"type": "string"
@ -5784,6 +6078,7 @@
{
"name": "genreId",
"in": "query",
"description": "",
"schema": {
"type": "integer",
"format": "int32"
@ -5792,6 +6087,7 @@
{
"name": "pageNumber",
"in": "query",
"description": "",
"schema": {
"type": "integer",
"format": "int32",
@ -5811,7 +6107,7 @@
"tags": [
"Opds"
],
"summary": "Returns recently updated series. While pagination is avaible, total amount of pages is not due to implementation\ndetails",
"summary": "Get the Recently Updated Series (Dashboard) - Pagination available, total pages will not be filled due to underlying implementation",
"parameters": [
{
"name": "apiKey",
@ -5845,10 +6141,12 @@
"tags": [
"Opds"
],
"summary": "Get the On Deck (Dashboard) - Supports Pagination",
"parameters": [
{
"name": "apiKey",
"in": "path",
"description": "",
"required": true,
"schema": {
"type": "string"
@ -5857,6 +6155,7 @@
{
"name": "pageNumber",
"in": "query",
"description": "",
"schema": {
"type": "integer",
"format": "int32",
@ -5930,10 +6229,12 @@
"tags": [
"Opds"
],
"summary": "Returns the items within a Series (Series Detail)",
"parameters": [
{
"name": "apiKey",
"in": "path",
"description": "",
"required": true,
"schema": {
"type": "string"
@ -5942,6 +6243,7 @@
{
"name": "seriesId",
"in": "path",
"description": "",
"required": true,
"schema": {
"type": "integer",
@ -5961,10 +6263,12 @@
"tags": [
"Opds"
],
"summary": "Returns items for a given Volume",
"parameters": [
{
"name": "apiKey",
"in": "path",
"description": "",
"required": true,
"schema": {
"type": "string"
@ -5973,6 +6277,7 @@
{
"name": "seriesId",
"in": "path",
"description": "",
"required": true,
"schema": {
"type": "integer",
@ -5982,6 +6287,7 @@
{
"name": "volumeId",
"in": "path",
"description": "",
"required": true,
"schema": {
"type": "integer",
@ -6001,10 +6307,12 @@
"tags": [
"Opds"
],
"summary": "Gets items for a given Chapter",
"parameters": [
{
"name": "apiKey",
"in": "path",
"description": "",
"required": true,
"schema": {
"type": "string"
@ -6013,6 +6321,7 @@
{
"name": "seriesId",
"in": "path",
"description": "",
"required": true,
"schema": {
"type": "integer",
@ -6022,6 +6331,7 @@
{
"name": "volumeId",
"in": "path",
"description": "",
"required": true,
"schema": {
"type": "integer",
@ -6031,6 +6341,7 @@
{
"name": "chapterId",
"in": "path",
"description": "",
"required": true,
"schema": {
"type": "integer",
@ -6050,7 +6361,7 @@
"tags": [
"Opds"
],
"summary": "Downloads a file",
"summary": "Downloads a file (user must have download permission)",
"parameters": [
{
"name": "apiKey",
@ -17078,6 +17389,14 @@
"description": "Rich text Comment",
"nullable": true
},
"commentHtml": {
"type": "string",
"nullable": true
},
"commentPlainText": {
"type": "string",
"nullable": true
},
"chapterTitle": {
"type": "string",
"description": "Title of the TOC Chapter within Epub (not Chapter Entity)",
@ -17141,6 +17460,71 @@
"additionalProperties": false,
"description": "Represents an annotation on a book"
},
"AnnotationFilterStatementDto": {
"type": "object",
"properties": {
"comparison": {
"enum": [
0,
1,
2,
3,
4,
5,
6,
7,
8,
9,
10,
11,
12,
13,
14,
15,
16
],
"type": "integer",
"format": "int32"
},
"field": {
"enum": [
1,
2,
3,
4,
5,
6
],
"type": "integer",
"format": "int32"
},
"value": {
"type": "string",
"nullable": true
}
},
"additionalProperties": false
},
"AnnotationSortOptions": {
"type": "object",
"properties": {
"sortField": {
"enum": [
1,
2,
3,
4
],
"type": "integer",
"format": "int32"
},
"isAscending": {
"type": "boolean"
}
},
"additionalProperties": false,
"description": "All Sorting Options for a query related to Annotation Entity"
},
"AppRole": {
"type": "object",
"properties": {
@ -17503,6 +17887,16 @@
"description": "Rich text Comment",
"nullable": true
},
"commentHtml": {
"type": "string",
"description": "The annotation in html format, this is generated by the UI (quill)",
"nullable": true
},
"commentPlainText": {
"type": "string",
"description": "All html stripped from API.Entities.AppUserAnnotation.CommentHtml, this is done by the backend",
"nullable": true
},
"highlightCount": {
"type": "integer",
"description": "The number of characters selected",
@ -17538,6 +17932,9 @@
"type": "integer",
"format": "int32"
},
"series": {
"$ref": "#/components/schemas/Series"
},
"volumeId": {
"type": "integer",
"format": "int32"
@ -18565,15 +18962,6 @@
"type": "boolean",
"description": "Book Reader Option: A flag that hides the menu-ing system behind a click on the screen. This should be used with tap to paginate, but the app doesn't enforce this."
},
"bookReaderEpubPageCalculationMethod": {
"enum": [
0,
1
],
"type": "integer",
"description": "Book Reader Option: Different calculation modes for the page due to a bleed bug that devs cannot reproduce reliably or fix",
"format": "int32"
},
"pdfTheme": {
"enum": [
0,
@ -19078,6 +19466,45 @@
},
"additionalProperties": false
},
"BrowseAnnotationFilterDto": {
"type": "object",
"properties": {
"id": {
"type": "integer",
"description": "Not used - For parity with Series Filter",
"format": "int32"
},
"name": {
"type": "string",
"description": "Not used - For parity with Series Filter",
"nullable": true
},
"statements": {
"type": "array",
"items": {
"$ref": "#/components/schemas/AnnotationFilterStatementDto"
},
"nullable": true
},
"combination": {
"enum": [
0,
1
],
"type": "integer",
"format": "int32"
},
"sortOptions": {
"$ref": "#/components/schemas/AnnotationSortOptions"
},
"limitTo": {
"type": "integer",
"description": "Limit the number of rows returned. Defaults to not applying a limit (aka 0)",
"format": "int32"
}
},
"additionalProperties": false
},
"BrowseGenreDto": {
"required": [
"title"
@ -22152,7 +22579,8 @@
29,
30,
31,
32
32,
33
],
"type": "integer",
"description": "Represents the field which will dictate the value type and the Extension used for filtering",
@ -22337,11 +22765,6 @@
"type": "integer",
"format": "int32"
},
"title": {
"type": "string",
"description": "Hex representation",
"nullable": true
},
"slotNumber": {
"type": "integer",
"format": "int32"
@ -28831,6 +29254,10 @@
"UserDto": {
"type": "object",
"properties": {
"id": {
"type": "integer",
"format": "int32"
},
"username": {
"type": "string",
"nullable": true
@ -29015,7 +29442,6 @@
"allowAutomaticWebtoonReaderDetection",
"autoCloseMenu",
"backgroundColor",
"bookReaderEpubPageCalculationMethod",
"bookReaderFontFamily",
"bookReaderFontSize",
"bookReaderImmersiveMode",
@ -29193,15 +29619,6 @@
"bookReaderImmersiveMode": {
"type": "boolean"
},
"bookReaderEpubPageCalculationMethod": {
"enum": [
0,
1
],
"type": "integer",
"description": "Due to a bleeding text bug in the Epub reader with 1/2 column layout, multiple calculation modes are present",
"format": "int32"
},
"pdfTheme": {
"enum": [
0,