{ "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.9.22", "license": { "name": "GPL-3.0", "url": "https://github.com/Kareadita/Kavita/blob/develop/LICENSE" }, "version": "0.8.9.22" }, "servers": [ { "url": "{protocol}://{hostpath}", "variables": { "protocol": { "default": "http", "enum": [ "http", "https" ] }, "hostpath": { "default": "localhost:5000" } } } ], "paths": { "/api/Account/oidc-authenticated": { "get": { "tags": [ "Account" ], "summary": "Returns true if OIDC authentication cookies are present and the Kavita.Server.Extensions.IdentityServiceExtensions.OpenIdConnect\nscheme has been registered", "description": "Makes no guarantee about their validity", "responses": { "200": { "description": "OK", "content": { "text/plain": { "schema": { "type": "boolean" } }, "application/json": { "schema": { "type": "boolean" } }, "text/json": { "schema": { "type": "boolean" } } } } } } }, "/api/Account/clear-oidc-link": { "post": { "tags": [ "Account" ], "summary": "Remove the OIDC link for the authenticated user. This action will also remove the authentication cookie.\nThe caller should take note and redirect to login if no other authentication is currently present (I.e. JWT)", "responses": { "200": { "description": "OK" } } } }, "/api/Account": { "get": { "tags": [ "Account" ], "summary": "Returns the current user, as it would from login", "description": "Does not return tokens for the user", "responses": { "200": { "description": "OK", "content": { "text/plain": { "schema": { "$ref": "#/components/schemas/UserDto" } }, "application/json": { "schema": { "$ref": "#/components/schemas/UserDto" } }, "text/json": { "schema": { "$ref": "#/components/schemas/UserDto" } } } } } } }, "/api/Account/reset-password": { "post": { "tags": [ "Account" ], "summary": "Update a user's password", "requestBody": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ResetPasswordDto" } }, "text/json": { "schema": { "$ref": "#/components/schemas/ResetPasswordDto" } }, "application/*+json": { "schema": { "$ref": "#/components/schemas/ResetPasswordDto" } } } }, "responses": { "200": { "description": "OK" } } } }, "/api/Account/register": { "post": { "tags": [ "Account" ], "summary": "Register the first user (admin) on the server. Will not do anything if an admin is already confirmed", "requestBody": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/RegisterDto" } }, "text/json": { "schema": { "$ref": "#/components/schemas/RegisterDto" } }, "application/*+json": { "schema": { "$ref": "#/components/schemas/RegisterDto" } } } }, "responses": { "200": { "description": "OK", "content": { "text/plain": { "schema": { "$ref": "#/components/schemas/UserDto" } }, "application/json": { "schema": { "$ref": "#/components/schemas/UserDto" } }, "text/json": { "schema": { "$ref": "#/components/schemas/UserDto" } } } } } } }, "/api/Account/login": { "post": { "tags": [ "Account" ], "summary": "Perform a login. Will send JWT Token of the logged in user back.", "requestBody": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/LoginDto" } }, "text/json": { "schema": { "$ref": "#/components/schemas/LoginDto" } }, "application/*+json": { "schema": { "$ref": "#/components/schemas/LoginDto" } } } }, "responses": { "200": { "description": "OK", "content": { "text/plain": { "schema": { "$ref": "#/components/schemas/UserDto" } }, "application/json": { "schema": { "$ref": "#/components/schemas/UserDto" } }, "text/json": { "schema": { "$ref": "#/components/schemas/UserDto" } } } } } } }, "/api/Account/refresh-account": { "get": { "tags": [ "Account" ], "summary": "Returns an up-to-date user account", "responses": { "200": { "description": "OK", "content": { "text/plain": { "schema": { "$ref": "#/components/schemas/UserDto" } }, "application/json": { "schema": { "$ref": "#/components/schemas/UserDto" } }, "text/json": { "schema": { "$ref": "#/components/schemas/UserDto" } } } } } } }, "/api/Account/refresh-token": { "post": { "tags": [ "Account" ], "summary": "Refreshes the user's JWT token", "requestBody": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/TokenRequestDto" } }, "text/json": { "schema": { "$ref": "#/components/schemas/TokenRequestDto" } }, "application/*+json": { "schema": { "$ref": "#/components/schemas/TokenRequestDto" } } } }, "responses": { "200": { "description": "OK", "content": { "text/plain": { "schema": { "$ref": "#/components/schemas/TokenRequestDto" } }, "application/json": { "schema": { "$ref": "#/components/schemas/TokenRequestDto" } }, "text/json": { "schema": { "$ref": "#/components/schemas/TokenRequestDto" } } } } } } }, "/api/Account/roles": { "get": { "tags": [ "Account" ], "summary": "Get All Roles back. See Kavita.Models.Constants.PolicyConstants", "responses": { "200": { "description": "OK", "content": { "text/plain": { "schema": { "type": "array", "items": { "type": "string" } } }, "application/json": { "schema": { "type": "array", "items": { "type": "string" } } }, "text/json": { "schema": { "type": "array", "items": { "type": "string" } } } } } } } }, "/api/Account/update/email": { "post": { "tags": [ "Account" ], "summary": "Initiates the flow to update a user's email address.\n \nIf email is not setup, then the email address is not changed in this API. A confirmation link is sent/dumped which will\nvalidate the email. It must be confirmed for the email to update.", "requestBody": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/UpdateEmailDto" } }, "text/json": { "schema": { "$ref": "#/components/schemas/UpdateEmailDto" } }, "application/*+json": { "schema": { "$ref": "#/components/schemas/UpdateEmailDto" } } } }, "responses": { "200": { "description": "OK", "content": { "text/plain": { "schema": { "$ref": "#/components/schemas/InviteUserResponse" } }, "application/json": { "schema": { "$ref": "#/components/schemas/InviteUserResponse" } }, "text/json": { "schema": { "$ref": "#/components/schemas/InviteUserResponse" } } } } } } }, "/api/Account/update/age-restriction": { "post": { "tags": [ "Account" ], "summary": "Change the Age Rating restriction for the user", "requestBody": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/UpdateAgeRestrictionDto" } }, "text/json": { "schema": { "$ref": "#/components/schemas/UpdateAgeRestrictionDto" } }, "application/*+json": { "schema": { "$ref": "#/components/schemas/UpdateAgeRestrictionDto" } } } }, "responses": { "200": { "description": "OK" } } } }, "/api/Account/update": { "post": { "tags": [ "Account" ], "summary": "Update the user account. This can only affect Username, Email (will require confirming), Roles, and Library access.", "description": "Users who's Kavita.Models.Entities.User.AppUser.IdentityProvider is not Kavita.Models.Entities.Enums.IdentityProvider.Kavita cannot be edited if Kavita.Models.DTOs.Settings.OidcConfigDto.SyncUserSettings is true", "requestBody": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/UpdateUserDto" } }, "text/json": { "schema": { "$ref": "#/components/schemas/UpdateUserDto" } }, "application/*+json": { "schema": { "$ref": "#/components/schemas/UpdateUserDto" } } } }, "responses": { "200": { "description": "OK" } } } }, "/api/Account/invite-url": { "get": { "tags": [ "Account" ], "summary": "Requests the Invite Url for the AppUserId. Will return error if user is already validated.", "parameters": [ { "name": "userId", "in": "query", "description": "", "schema": { "type": "integer", "format": "int32" } }, { "name": "withBaseUrl", "in": "query", "description": "Include the \"https://ip:port/\" in the generated link", "schema": { "type": "boolean" } } ], "responses": { "200": { "description": "OK", "content": { "text/plain": { "schema": { "type": "string" } }, "application/json": { "schema": { "type": "string" } }, "text/json": { "schema": { "type": "string" } } } } } } }, "/api/Account/invite": { "post": { "tags": [ "Account" ], "summary": "Invites a user to the server. Will generate a setup link for continuing setup. If email is not setup, a link will be presented to user to continue setup.", "requestBody": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/InviteUserDto" } }, "text/json": { "schema": { "$ref": "#/components/schemas/InviteUserDto" } }, "application/*+json": { "schema": { "$ref": "#/components/schemas/InviteUserDto" } } } }, "responses": { "200": { "description": "OK", "content": { "text/plain": { "schema": { "type": "string" } }, "application/json": { "schema": { "type": "string" } }, "text/json": { "schema": { "type": "string" } } } } } } }, "/api/Account/confirm-email": { "post": { "tags": [ "Account" ], "summary": "Last step in authentication flow, confirms the email token for email", "requestBody": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ConfirmEmailDto" } }, "text/json": { "schema": { "$ref": "#/components/schemas/ConfirmEmailDto" } }, "application/*+json": { "schema": { "$ref": "#/components/schemas/ConfirmEmailDto" } } } }, "responses": { "200": { "description": "OK", "content": { "text/plain": { "schema": { "$ref": "#/components/schemas/UserDto" } }, "application/json": { "schema": { "$ref": "#/components/schemas/UserDto" } }, "text/json": { "schema": { "$ref": "#/components/schemas/UserDto" } } } } } } }, "/api/Account/confirm-email-update": { "post": { "tags": [ "Account" ], "summary": "Final step in email update change. Given a confirmation token and the email, this will finish the email change.", "description": "This will force connected clients to re-authenticate", "requestBody": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ConfirmEmailUpdateDto" } }, "text/json": { "schema": { "$ref": "#/components/schemas/ConfirmEmailUpdateDto" } }, "application/*+json": { "schema": { "$ref": "#/components/schemas/ConfirmEmailUpdateDto" } } } }, "responses": { "200": { "description": "OK" } } } }, "/api/Account/confirm-password-reset": { "post": { "tags": [ "Account" ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ConfirmPasswordResetDto" } }, "text/json": { "schema": { "$ref": "#/components/schemas/ConfirmPasswordResetDto" } }, "application/*+json": { "schema": { "$ref": "#/components/schemas/ConfirmPasswordResetDto" } } } }, "responses": { "200": { "description": "OK", "content": { "text/plain": { "schema": { "type": "string" } }, "application/json": { "schema": { "type": "string" } }, "text/json": { "schema": { "type": "string" } } } } } } }, "/api/Account/forgot-password": { "post": { "tags": [ "Account" ], "summary": "Will send user a link to update their password to their email or prompt them if not accessible", "parameters": [ { "name": "email", "in": "query", "description": "", "schema": { "type": "string" } } ], "responses": { "200": { "description": "OK", "content": { "text/plain": { "schema": { "type": "string" } }, "application/json": { "schema": { "type": "string" } }, "text/json": { "schema": { "type": "string" } } } } } } }, "/api/Account/email-confirmed": { "get": { "tags": [ "Account" ], "responses": { "200": { "description": "OK", "content": { "text/plain": { "schema": { "type": "boolean" } }, "application/json": { "schema": { "type": "boolean" } }, "text/json": { "schema": { "type": "boolean" } } } } } } }, "/api/Account/confirm-migration-email": { "post": { "tags": [ "Account" ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ConfirmMigrationEmailDto" } }, "text/json": { "schema": { "$ref": "#/components/schemas/ConfirmMigrationEmailDto" } }, "application/*+json": { "schema": { "$ref": "#/components/schemas/ConfirmMigrationEmailDto" } } } }, "responses": { "200": { "description": "OK", "content": { "text/plain": { "schema": { "$ref": "#/components/schemas/UserDto" } }, "application/json": { "schema": { "$ref": "#/components/schemas/UserDto" } }, "text/json": { "schema": { "$ref": "#/components/schemas/UserDto" } } } } } } }, "/api/Account/resend-confirmation-email": { "post": { "tags": [ "Account" ], "summary": "Resend an invite to a user already invited", "parameters": [ { "name": "userId", "in": "query", "description": "", "schema": { "type": "integer", "format": "int32" } } ], "responses": { "200": { "description": "OK", "content": { "text/plain": { "schema": { "$ref": "#/components/schemas/InviteUserResponse" } }, "application/json": { "schema": { "$ref": "#/components/schemas/InviteUserResponse" } }, "text/json": { "schema": { "$ref": "#/components/schemas/InviteUserResponse" } } } } } } }, "/api/Account/opds-url": { "get": { "tags": [ "Account" ], "summary": "Returns the OPDS url for this user", "responses": { "200": { "description": "OK", "content": { "text/plain": { "schema": { "type": "string" } }, "application/json": { "schema": { "type": "string" } }, "text/json": { "schema": { "type": "string" } } } } } } }, "/api/Account/is-email-valid": { "get": { "tags": [ "Account" ], "summary": "Is the user's current email valid or not", "responses": { "200": { "description": "OK", "content": { "text/plain": { "schema": { "type": "boolean" } }, "application/json": { "schema": { "type": "boolean" } }, "text/json": { "schema": { "type": "boolean" } } } } } } }, "/api/Account/auth-keys": { "get": { "tags": [ "Account" ], "summary": "Returns all Auth Keys with the account", "responses": { "200": { "description": "OK", "content": { "text/plain": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/AuthKeyDto" } } }, "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/AuthKeyDto" } } }, "text/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/AuthKeyDto" } } } } } } } }, "/api/Account/rotate-auth-key": { "post": { "tags": [ "Account" ], "summary": "Rotate the Auth Key", "parameters": [ { "name": "authKeyId", "in": "query", "description": "", "schema": { "type": "integer", "format": "int32" } } ], "requestBody": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/RotateAuthKeyRequestDto" } }, "text/json": { "schema": { "$ref": "#/components/schemas/RotateAuthKeyRequestDto" } }, "application/*+json": { "schema": { "$ref": "#/components/schemas/RotateAuthKeyRequestDto" } } } }, "responses": { "200": { "description": "OK", "content": { "text/plain": { "schema": { "$ref": "#/components/schemas/AuthKeyDto" } }, "application/json": { "schema": { "$ref": "#/components/schemas/AuthKeyDto" } }, "text/json": { "schema": { "$ref": "#/components/schemas/AuthKeyDto" } } } } } } }, "/api/Account/create-auth-key": { "post": { "tags": [ "Account" ], "summary": "Creates a new Auth Key for a user.", "requestBody": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/RotateAuthKeyRequestDto" } }, "text/json": { "schema": { "$ref": "#/components/schemas/RotateAuthKeyRequestDto" } }, "application/*+json": { "schema": { "$ref": "#/components/schemas/RotateAuthKeyRequestDto" } } } }, "responses": { "200": { "description": "OK", "content": { "text/plain": { "schema": { "$ref": "#/components/schemas/AuthKeyDto" } }, "application/json": { "schema": { "$ref": "#/components/schemas/AuthKeyDto" } }, "text/json": { "schema": { "$ref": "#/components/schemas/AuthKeyDto" } } } } } } }, "/api/Account/auth-key": { "delete": { "tags": [ "Account" ], "summary": "Delete the Auth Key", "parameters": [ { "name": "authKeyId", "in": "query", "description": "", "schema": { "type": "integer", "format": "int32" } } ], "responses": { "200": { "description": "OK" } } } }, "/api/Activity/current": { "get": { "tags": [ "Activity" ], "summary": "Returns active reading sessions on the Server", "responses": { "200": { "description": "OK", "content": { "text/plain": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/ReadingSessionDto" } } }, "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/ReadingSessionDto" } } }, "text/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/ReadingSessionDto" } } } } } } } }, "/api/Admin/exists": { "get": { "tags": [ "Admin" ], "summary": "Checks if an admin exists on the system. This is essentially a check to validate if the system has been set up.", "responses": { "200": { "description": "OK", "content": { "text/plain": { "schema": { "type": "boolean" } }, "application/json": { "schema": { "type": "boolean" } }, "text/json": { "schema": { "type": "boolean" } } } } } } }, "/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", "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": [ "Annotation" ], "summary": "Returns the annotations for the given chapter", "parameters": [ { "name": "chapterId", "in": "query", "description": "", "schema": { "type": "integer", "format": "int32" } } ], "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-for-series": { "get": { "tags": [ "Annotation" ], "summary": "Returns all annotations by Series", "parameters": [ { "name": "seriesId", "in": "query", "description": "", "schema": { "type": "integer", "format": "int32" } } ], "responses": { "200": { "description": "OK", "content": { "text/plain": { "schema": { "$ref": "#/components/schemas/AnnotationDto" } }, "application/json": { "schema": { "$ref": "#/components/schemas/AnnotationDto" } }, "text/json": { "schema": { "$ref": "#/components/schemas/AnnotationDto" } } } } } } }, "/api/Annotation/{annotationId}": { "get": { "tags": [ "Annotation" ], "summary": "Returns the Annotation by Id. User must have access to annotation.", "parameters": [ { "name": "annotationId", "in": "path", "description": "", "required": true, "schema": { "type": "integer", "format": "int32" } } ], "responses": { "200": { "description": "OK", "content": { "text/plain": { "schema": { "$ref": "#/components/schemas/AnnotationDto" } }, "application/json": { "schema": { "$ref": "#/components/schemas/AnnotationDto" } }, "text/json": { "schema": { "$ref": "#/components/schemas/AnnotationDto" } } } } } } }, "/api/Annotation/create": { "post": { "tags": [ "Annotation" ], "summary": "Create a new Annotation for the user against a Chapter", "requestBody": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/AnnotationDto" } }, "text/json": { "schema": { "$ref": "#/components/schemas/AnnotationDto" } }, "application/*+json": { "schema": { "$ref": "#/components/schemas/AnnotationDto" } } } }, "responses": { "200": { "description": "OK", "content": { "text/plain": { "schema": { "$ref": "#/components/schemas/AnnotationDto" } }, "application/json": { "schema": { "$ref": "#/components/schemas/AnnotationDto" } }, "text/json": { "schema": { "$ref": "#/components/schemas/AnnotationDto" } } } } } } }, "/api/Annotation/update": { "post": { "tags": [ "Annotation" ], "summary": "Update the modifiable fields (Spoiler, highlight slot, and comment) for an annotation", "requestBody": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/AnnotationDto" } }, "text/json": { "schema": { "$ref": "#/components/schemas/AnnotationDto" } }, "application/*+json": { "schema": { "$ref": "#/components/schemas/AnnotationDto" } } } }, "responses": { "200": { "description": "OK", "content": { "text/plain": { "schema": { "$ref": "#/components/schemas/AnnotationDto" } }, "application/json": { "schema": { "$ref": "#/components/schemas/AnnotationDto" } }, "text/json": { "schema": { "$ref": "#/components/schemas/AnnotationDto" } } } } } } }, "/api/Annotation/like": { "post": { "tags": [ "Annotation" ], "summary": "Adds a like for the currently authenticated user if not already from the annotations with given ids", "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/unlike": { "post": { "tags": [ "Annotation" ], "summary": "Removes likes for the currently authenticated user if present from the annotations with given ids", "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": { "delete": { "tags": [ "Annotation" ], "summary": "Delete the annotation for the user", "parameters": [ { "name": "annotationId", "in": "query", "description": "", "schema": { "type": "integer", "format": "int32" } } ], "responses": { "200": { "description": "OK" } } } }, "/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", "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": [ "Book" ], "summary": "Retrieves information for the PDF and Epub reader. This will cache the file.", "description": "This only applies to Epub or PDF files", "parameters": [ { "name": "chapterId", "in": "path", "description": "", "required": true, "schema": { "type": "integer", "format": "int32" } } ], "responses": { "200": { "description": "OK", "content": { "text/plain": { "schema": { "$ref": "#/components/schemas/BookInfoDto" } }, "application/json": { "schema": { "$ref": "#/components/schemas/BookInfoDto" } }, "text/json": { "schema": { "$ref": "#/components/schemas/BookInfoDto" } } } } } } }, "/api/Book/{chapterId}/book-resources": { "get": { "tags": [ "Book" ], "summary": "This is an entry point to fetch resources from within an epub chapter/book.", "parameters": [ { "name": "chapterId", "in": "path", "description": "", "required": true, "schema": { "type": "integer", "format": "int32" } }, { "name": "file", "in": "query", "description": "", "schema": { "type": "string" } } ], "responses": { "200": { "description": "OK" } } } }, "/api/Book/{chapterId}/chapters": { "get": { "tags": [ "Book" ], "summary": "This will return a list of mappings from ID -> page num. ID will be the xhtml key and page num will be the reading order\nthis is used to rewrite anchors in the book text so that we always load properly in our reader.", "description": "This is essentially building the table of contents", "parameters": [ { "name": "chapterId", "in": "path", "description": "", "required": true, "schema": { "type": "integer", "format": "int32" } } ], "responses": { "200": { "description": "OK", "content": { "text/plain": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/BookChapterItem" } } }, "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/BookChapterItem" } } }, "text/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/BookChapterItem" } } } } } } } }, "/api/Book/{chapterId}/book-page": { "get": { "tags": [ "Book" ], "summary": "This returns a single page within the epub book. All html will be rewritten to be scoped within our reader,\nall css is scoped, etc.", "parameters": [ { "name": "chapterId", "in": "path", "description": "", "required": true, "schema": { "type": "integer", "format": "int32" } }, { "name": "page", "in": "query", "description": "", "schema": { "type": "integer", "format": "int32" } } ], "responses": { "200": { "description": "OK", "content": { "text/plain": { "schema": { "type": "string" } }, "application/json": { "schema": { "type": "string" } }, "text/json": { "schema": { "type": "string" } } } } } } }, "/api/Chapter": { "get": { "tags": [ "Chapter" ], "summary": "Gets a single chapter", "parameters": [ { "name": "chapterId", "in": "query", "description": "", "schema": { "type": "integer", "format": "int32" } } ], "responses": { "200": { "description": "OK", "content": { "text/plain": { "schema": { "$ref": "#/components/schemas/ChapterDto" } }, "application/json": { "schema": { "$ref": "#/components/schemas/ChapterDto" } }, "text/json": { "schema": { "$ref": "#/components/schemas/ChapterDto" } } } } } }, "delete": { "tags": [ "Chapter" ], "summary": "Removes a Chapter", "parameters": [ { "name": "chapterId", "in": "query", "description": "", "schema": { "type": "integer", "format": "int32" } } ], "responses": { "200": { "description": "OK", "content": { "text/plain": { "schema": { "type": "boolean" } }, "application/json": { "schema": { "type": "boolean" } }, "text/json": { "schema": { "type": "boolean" } } } } } } }, "/api/Chapter/delete-multiple": { "post": { "tags": [ "Chapter" ], "summary": "Deletes multiple chapters and any volumes with no leftover chapters", "parameters": [ { "name": "seriesId", "in": "query", "description": "The ID of the series", "schema": { "type": "integer", "format": "int32" } } ], "requestBody": { "description": "The IDs of the chapters to be deleted", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/DeleteChaptersDto" } }, "text/json": { "schema": { "$ref": "#/components/schemas/DeleteChaptersDto" } }, "application/*+json": { "schema": { "$ref": "#/components/schemas/DeleteChaptersDto" } } } }, "responses": { "200": { "description": "OK", "content": { "text/plain": { "schema": { "type": "boolean" } }, "application/json": { "schema": { "type": "boolean" } }, "text/json": { "schema": { "type": "boolean" } } } } } } }, "/api/Chapter/update": { "post": { "tags": [ "Chapter" ], "summary": "Update chapter metadata", "requestBody": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/UpdateChapterDto" } }, "text/json": { "schema": { "$ref": "#/components/schemas/UpdateChapterDto" } }, "application/*+json": { "schema": { "$ref": "#/components/schemas/UpdateChapterDto" } } } }, "responses": { "200": { "description": "OK" } } } }, "/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": [ "Collection" ], "summary": "Returns all Collection tags for a given User", "parameters": [ { "name": "ownedOnly", "in": "query", "schema": { "type": "boolean", "default": false } } ], "responses": { "200": { "description": "OK", "content": { "text/plain": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/AppUserCollectionDto" } } }, "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/AppUserCollectionDto" } } }, "text/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/AppUserCollectionDto" } } } } } } }, "delete": { "tags": [ "Collection" ], "summary": "Removes the collection tag from the user", "parameters": [ { "name": "tagId", "in": "query", "description": "", "schema": { "type": "integer", "format": "int32" } } ], "responses": { "200": { "description": "OK" } } } }, "/api/Collection/single": { "get": { "tags": [ "Collection" ], "summary": "Returns a single Collection tag by Id for a given user", "parameters": [ { "name": "collectionId", "in": "query", "description": "", "schema": { "type": "integer", "format": "int32" } } ], "responses": { "200": { "description": "OK", "content": { "text/plain": { "schema": { "$ref": "#/components/schemas/AppUserCollectionDto" } }, "application/json": { "schema": { "$ref": "#/components/schemas/AppUserCollectionDto" } }, "text/json": { "schema": { "$ref": "#/components/schemas/AppUserCollectionDto" } } } } } } }, "/api/Collection/all-series": { "get": { "tags": [ "Collection" ], "summary": "Returns all collections that contain the Series for the user with the option to allow for promoted collections (non-user owned)", "parameters": [ { "name": "seriesId", "in": "query", "description": "", "schema": { "type": "integer", "format": "int32" } }, { "name": "ownedOnly", "in": "query", "description": "", "schema": { "type": "boolean", "default": false } } ], "responses": { "200": { "description": "OK", "content": { "text/plain": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/AppUserCollectionDto" } } }, "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/AppUserCollectionDto" } } }, "text/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/AppUserCollectionDto" } } } } } } } }, "/api/Collection/name-exists": { "get": { "tags": [ "Collection" ], "summary": "Checks if a collection exists with the name", "parameters": [ { "name": "name", "in": "query", "description": "If empty or null, will return true as that is invalid", "schema": { "type": "string" } } ], "responses": { "200": { "description": "OK", "content": { "text/plain": { "schema": { "type": "boolean" } }, "application/json": { "schema": { "type": "boolean" } }, "text/json": { "schema": { "type": "boolean" } } } } } } }, "/api/Collection/update": { "post": { "tags": [ "Collection" ], "summary": "Updates an existing tag with a new title, promotion status, and summary.\nUI does not contain controls to update title", "requestBody": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/AppUserCollectionDto" } }, "text/json": { "schema": { "$ref": "#/components/schemas/AppUserCollectionDto" } }, "application/*+json": { "schema": { "$ref": "#/components/schemas/AppUserCollectionDto" } } } }, "responses": { "200": { "description": "OK", "content": { "text/plain": { "schema": { "$ref": "#/components/schemas/AppUserCollectionDto" } }, "application/json": { "schema": { "$ref": "#/components/schemas/AppUserCollectionDto" } }, "text/json": { "schema": { "$ref": "#/components/schemas/AppUserCollectionDto" } } } } } } }, "/api/Collection/promote-multiple": { "post": { "tags": [ "Collection" ], "summary": "Promote/UnPromote multiple collections in one go. Will only update the authenticated user's collections and will only work if the user has promotion role", "requestBody": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PromoteCollectionsDto" } }, "text/json": { "schema": { "$ref": "#/components/schemas/PromoteCollectionsDto" } }, "application/*+json": { "schema": { "$ref": "#/components/schemas/PromoteCollectionsDto" } } } }, "responses": { "200": { "description": "OK" } } } }, "/api/Collection/delete-multiple": { "post": { "tags": [ "Collection" ], "summary": "Delete multiple collections in one go", "requestBody": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/DeleteCollectionsDto" } }, "text/json": { "schema": { "$ref": "#/components/schemas/DeleteCollectionsDto" } }, "application/*+json": { "schema": { "$ref": "#/components/schemas/DeleteCollectionsDto" } } } }, "responses": { "200": { "description": "OK" } } } }, "/api/Collection/update-for-series": { "post": { "tags": [ "Collection" ], "summary": "Adds multiple series to a collection. If tag id is 0, this will create a new tag.", "requestBody": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CollectionTagBulkAddDto" } }, "text/json": { "schema": { "$ref": "#/components/schemas/CollectionTagBulkAddDto" } }, "application/*+json": { "schema": { "$ref": "#/components/schemas/CollectionTagBulkAddDto" } } } }, "responses": { "200": { "description": "OK" } } } }, "/api/Collection/update-series": { "post": { "tags": [ "Collection" ], "summary": "For a given tag, update the summary if summary has changed and remove a set of series from the tag.", "requestBody": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/UpdateSeriesForTagDto" } }, "text/json": { "schema": { "$ref": "#/components/schemas/UpdateSeriesForTagDto" } }, "application/*+json": { "schema": { "$ref": "#/components/schemas/UpdateSeriesForTagDto" } } } }, "responses": { "200": { "description": "OK" } } } }, "/api/Collection/mal-stacks": { "get": { "tags": [ "Collection" ], "summary": "For the authenticated user, if they have an active Kavita+ subscription and a MAL username on record,\nfetch their Mal interest stacks (including restacks)", "responses": { "200": { "description": "OK", "content": { "text/plain": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/MalStackDto" } } }, "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/MalStackDto" } } }, "text/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/MalStackDto" } } } } } } } }, "/api/Collection/import-stack": { "post": { "tags": [ "Collection" ], "summary": "Imports a MAL Stack into Kavita", "requestBody": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/MalStackDto" } }, "text/json": { "schema": { "$ref": "#/components/schemas/MalStackDto" } }, "application/*+json": { "schema": { "$ref": "#/components/schemas/MalStackDto" } } } }, "responses": { "200": { "description": "OK" } } } }, "/api/ColorScape/series": { "get": { "tags": [ "ColorScape" ], "summary": "Returns the color scape for a series", "parameters": [ { "name": "id", "in": "query", "description": "", "schema": { "type": "integer", "format": "int32" } } ], "responses": { "200": { "description": "OK", "content": { "text/plain": { "schema": { "$ref": "#/components/schemas/ColorScapeDto" } }, "application/json": { "schema": { "$ref": "#/components/schemas/ColorScapeDto" } }, "text/json": { "schema": { "$ref": "#/components/schemas/ColorScapeDto" } } } } } } }, "/api/ColorScape/volume": { "get": { "tags": [ "ColorScape" ], "summary": "Returns the color scape for a volume", "parameters": [ { "name": "id", "in": "query", "description": "", "schema": { "type": "integer", "format": "int32" } } ], "responses": { "200": { "description": "OK", "content": { "text/plain": { "schema": { "$ref": "#/components/schemas/ColorScapeDto" } }, "application/json": { "schema": { "$ref": "#/components/schemas/ColorScapeDto" } }, "text/json": { "schema": { "$ref": "#/components/schemas/ColorScapeDto" } } } } } } }, "/api/ColorScape/chapter": { "get": { "tags": [ "ColorScape" ], "summary": "Returns the color scape for a chapter", "parameters": [ { "name": "id", "in": "query", "description": "", "schema": { "type": "integer", "format": "int32" } } ], "responses": { "200": { "description": "OK", "content": { "text/plain": { "schema": { "$ref": "#/components/schemas/ColorScapeDto" } }, "application/json": { "schema": { "$ref": "#/components/schemas/ColorScapeDto" } }, "text/json": { "schema": { "$ref": "#/components/schemas/ColorScapeDto" } } } } } } }, "/api/want-to-read": { "post": { "tags": [ "Deprecated" ], "summary": "Return all Series that are in the current logged-in user's Want to Read list, filtered (deprecated, use v2)", "description": "This will be removed in v0.9.0", "parameters": [ { "name": "PageNumber", "in": "query", "schema": { "type": "integer", "format": "int32" } }, { "name": "PageSize", "in": "query", "schema": { "type": "integer", "format": "int32" } } ], "requestBody": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/FilterDto" } }, "text/json": { "schema": { "$ref": "#/components/schemas/FilterDto" } }, "application/*+json": { "schema": { "$ref": "#/components/schemas/FilterDto" } } } }, "responses": { "200": { "description": "OK", "content": { "text/plain": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/SeriesDto" } } }, "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/SeriesDto" } } }, "text/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/SeriesDto" } } } } } }, "deprecated": true }, "get": { "tags": [ "WantToRead" ], "parameters": [ { "name": "seriesId", "in": "query", "schema": { "type": "integer", "format": "int32" } } ], "responses": { "200": { "description": "OK", "content": { "text/plain": { "schema": { "type": "boolean" } }, "application/json": { "schema": { "type": "boolean" } }, "text/json": { "schema": { "type": "boolean" } } } } } } }, "/api/series/chapter-metadata": { "get": { "tags": [ "Deprecated" ], "summary": "All chapter entities will load this data by default. Will not be maintained as of v0.8.1", "parameters": [ { "name": "chapterId", "in": "query", "description": "", "schema": { "type": "integer", "format": "int32" } } ], "responses": { "200": { "description": "OK", "content": { "text/plain": { "schema": { "$ref": "#/components/schemas/ChapterMetadataDto" } }, "application/json": { "schema": { "$ref": "#/components/schemas/ChapterMetadataDto" } }, "text/json": { "schema": { "$ref": "#/components/schemas/ChapterMetadataDto" } } } } }, "deprecated": true } }, "/api/series": { "post": { "tags": [ "Deprecated" ], "summary": "Gets series with the applied Filter", "description": "This is considered v1 and no longer used by Kavita, but will be supported for sometime. See series/v2", "parameters": [ { "name": "libraryId", "in": "query", "description": "", "schema": { "type": "integer", "format": "int32" } }, { "name": "PageNumber", "in": "query", "schema": { "type": "integer", "format": "int32" } }, { "name": "PageSize", "in": "query", "schema": { "type": "integer", "format": "int32" } } ], "requestBody": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/FilterDto" } }, "text/json": { "schema": { "$ref": "#/components/schemas/FilterDto" } }, "application/*+json": { "schema": { "$ref": "#/components/schemas/FilterDto" } } } }, "responses": { "200": { "description": "OK", "content": { "text/plain": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/SeriesDto" } } }, "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/SeriesDto" } } }, "text/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/SeriesDto" } } } } } }, "deprecated": true } }, "/api/series/recently-added": { "post": { "tags": [ "Deprecated" ], "summary": "Gets all recently added series. Obsolete, use recently-added-v2", "parameters": [ { "name": "PageNumber", "in": "query", "schema": { "type": "integer", "format": "int32" } }, { "name": "PageSize", "in": "query", "schema": { "type": "integer", "format": "int32" } }, { "name": "libraryId", "in": "query", "description": "", "schema": { "type": "integer", "format": "int32", "default": 0 } } ], "requestBody": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/FilterDto" } }, "text/json": { "schema": { "$ref": "#/components/schemas/FilterDto" } }, "application/*+json": { "schema": { "$ref": "#/components/schemas/FilterDto" } } } }, "responses": { "200": { "description": "OK", "content": { "text/plain": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/SeriesDto" } } }, "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/SeriesDto" } } }, "text/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/SeriesDto" } } } } } }, "deprecated": true } }, "/api/series/all": { "post": { "tags": [ "Deprecated" ], "summary": "Returns all series for the library. Obsolete, use all-v2", "parameters": [ { "name": "PageNumber", "in": "query", "schema": { "type": "integer", "format": "int32" } }, { "name": "PageSize", "in": "query", "schema": { "type": "integer", "format": "int32" } }, { "name": "libraryId", "in": "query", "description": "", "schema": { "type": "integer", "format": "int32", "default": 0 } } ], "requestBody": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/FilterDto" } }, "text/json": { "schema": { "$ref": "#/components/schemas/FilterDto" } }, "application/*+json": { "schema": { "$ref": "#/components/schemas/FilterDto" } } } }, "responses": { "200": { "description": "OK", "content": { "text/plain": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/SeriesDto" } } }, "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/SeriesDto" } } }, "text/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/SeriesDto" } } } } } }, "deprecated": true } }, "/api/upload/reset-chapter-lock": { "post": { "tags": [ "Deprecated" ], "summary": "Replaces chapter cover image and locks it with a base64 encoded image. This will update the parent volume's cover image.", "requestBody": { "description": "Does not use Url property", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/UploadFileDto" } }, "text/json": { "schema": { "$ref": "#/components/schemas/UploadFileDto" } }, "application/*+json": { "schema": { "$ref": "#/components/schemas/UploadFileDto" } } } }, "responses": { "200": { "description": "OK" } }, "deprecated": true } }, "/api/stats/user/reading-history": { "get": { "tags": [ "Deprecated" ], "parameters": [ { "name": "userId", "in": "query", "schema": { "type": "integer", "format": "int32" } } ], "responses": { "200": { "description": "OK", "content": { "text/plain": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/ReadHistoryEvent" } } }, "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/ReadHistoryEvent" } } }, "text/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/ReadHistoryEvent" } } } } } }, "deprecated": true } }, "/api/stats/server/top/years": { "get": { "tags": [ "Deprecated" ], "responses": { "200": { "description": "OK", "content": { "text/plain": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/Int32StatCount" } } }, "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/Int32StatCount" } } }, "text/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/Int32StatCount" } } } } } }, "deprecated": true } }, "/api/stats/reading-count-by-day": { "get": { "tags": [ "Deprecated" ], "summary": "Returns reading history events for a give or all users, broken up by day, and format", "parameters": [ { "name": "userId", "in": "query", "description": "If 0, defaults to all users, else just userId", "schema": { "type": "integer", "format": "int32", "default": 0 } }, { "name": "days", "in": "query", "description": "If 0, defaults to all time, else just those days asked for", "schema": { "type": "integer", "format": "int32", "default": 0 } } ], "responses": { "200": { "description": "OK", "content": { "text/plain": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/DateTimeStatCountWithFormat" } } }, "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/DateTimeStatCountWithFormat" } } }, "text/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/DateTimeStatCountWithFormat" } } } } } }, "deprecated": true } }, "/api/server/count/year": { "get": { "tags": [ "Deprecated" ], "responses": { "200": { "description": "OK", "content": { "text/plain": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/Int32StatCount" } } }, "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/Int32StatCount" } } }, "text/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/Int32StatCount" } } } } } }, "deprecated": true } }, "/api/stats/server/top/users": { "get": { "tags": [ "Deprecated" ], "summary": "Returns users with the top reads in the server", "parameters": [ { "name": "days", "in": "query", "description": "", "schema": { "type": "integer", "format": "int32", "default": 0 } } ], "responses": { "200": { "description": "OK", "content": { "text/plain": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/TopReadDto" } } }, "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/TopReadDto" } } }, "text/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/TopReadDto" } } } } } }, "deprecated": true } }, "/api/reader/all-chapter-progress": { "get": { "tags": [ "Deprecated" ], "summary": "Get all progress events for a given chapter", "parameters": [ { "name": "chapterId", "in": "query", "description": "", "schema": { "type": "integer", "format": "int32" } } ], "responses": { "200": { "description": "OK", "content": { "text/plain": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/FullProgressDto" } } }, "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/FullProgressDto" } } }, "text/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/FullProgressDto" } } } } } }, "deprecated": true } }, "/api/recommended/quick-reads": { "get": { "tags": [ "Deprecated" ], "summary": "Quick Reads are series that should be readable in less than 10 in total and are not Ongoing in release.", "parameters": [ { "name": "libraryId", "in": "query", "description": "Library to restrict series to", "schema": { "type": "integer", "format": "int32" } }, { "name": "PageNumber", "in": "query", "schema": { "type": "integer", "format": "int32" } }, { "name": "PageSize", "in": "query", "schema": { "type": "integer", "format": "int32" } } ], "responses": { "200": { "description": "OK", "content": { "text/plain": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/SeriesDto" } } }, "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/SeriesDto" } } }, "text/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/SeriesDto" } } } } } }, "deprecated": true } }, "/api/recommended/quick-catchup-reads": { "get": { "tags": [ "Deprecated" ], "summary": "Quick Catchup Reads are series that should be readable in less than 10 in total and are Ongoing in release.", "parameters": [ { "name": "libraryId", "in": "query", "description": "Library to restrict series to", "schema": { "type": "integer", "format": "int32" } }, { "name": "PageNumber", "in": "query", "schema": { "type": "integer", "format": "int32" } }, { "name": "PageSize", "in": "query", "schema": { "type": "integer", "format": "int32" } } ], "responses": { "200": { "description": "OK", "content": { "text/plain": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/SeriesDto" } } }, "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/SeriesDto" } } }, "text/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/SeriesDto" } } } } } }, "deprecated": true } }, "/api/recommended/highly-rated": { "get": { "tags": [ "Deprecated" ], "summary": "Highly Rated based on other users ratings. Will pull series with ratings > 4.0, weighted by count of other users.", "parameters": [ { "name": "libraryId", "in": "query", "description": "Library to restrict series to", "schema": { "type": "integer", "format": "int32" } }, { "name": "PageNumber", "in": "query", "schema": { "type": "integer", "format": "int32" } }, { "name": "PageSize", "in": "query", "schema": { "type": "integer", "format": "int32" } } ], "responses": { "200": { "description": "OK", "content": { "text/plain": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/SeriesDto" } } }, "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/SeriesDto" } } }, "text/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/SeriesDto" } } } } } }, "deprecated": true } }, "/api/recommended/more-in": { "get": { "tags": [ "Deprecated" ], "summary": "Chooses a random genre and shows series that are in that without reading progress", "parameters": [ { "name": "libraryId", "in": "query", "description": "Library to restrict series to", "schema": { "type": "integer", "format": "int32" } }, { "name": "genreId", "in": "query", "description": "Genre Id", "schema": { "type": "integer", "format": "int32" } }, { "name": "PageNumber", "in": "query", "schema": { "type": "integer", "format": "int32" } }, { "name": "PageSize", "in": "query", "schema": { "type": "integer", "format": "int32" } } ], "responses": { "200": { "description": "OK", "content": { "text/plain": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/SeriesDto" } } }, "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/SeriesDto" } } }, "text/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/SeriesDto" } } } } } }, "deprecated": true } }, "/api/recommended/rediscover": { "get": { "tags": [ "Deprecated" ], "summary": "Series that are fully read by the user in no particular order", "parameters": [ { "name": "libraryId", "in": "query", "description": "Library to restrict series to", "schema": { "type": "integer", "format": "int32" } }, { "name": "PageNumber", "in": "query", "schema": { "type": "integer", "format": "int32" } }, { "name": "PageSize", "in": "query", "schema": { "type": "integer", "format": "int32" } } ], "responses": { "200": { "description": "OK", "content": { "text/plain": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/SeriesDto" } } }, "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/SeriesDto" } } }, "text/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/SeriesDto" } } } } } }, "deprecated": true } }, "/api/users/myself": { "get": { "tags": [ "Deprecated" ], "responses": { "200": { "description": "OK", "content": { "text/plain": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/MemberDto" } } }, "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/MemberDto" } } }, "text/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/MemberDto" } } } } } }, "deprecated": true } }, "/api/Device/create": { "post": { "tags": [ "Device" ], "summary": "Creates a new Device", "requestBody": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CreateEmailDeviceDto" } }, "text/json": { "schema": { "$ref": "#/components/schemas/CreateEmailDeviceDto" } }, "application/*+json": { "schema": { "$ref": "#/components/schemas/CreateEmailDeviceDto" } } } }, "responses": { "200": { "description": "OK", "content": { "text/plain": { "schema": { "$ref": "#/components/schemas/EmailDeviceDto" } }, "application/json": { "schema": { "$ref": "#/components/schemas/EmailDeviceDto" } }, "text/json": { "schema": { "$ref": "#/components/schemas/EmailDeviceDto" } } } } } } }, "/api/Device/update": { "post": { "tags": [ "Device" ], "summary": "Updates an existing Device", "requestBody": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/UpdateEmailDeviceDto" } }, "text/json": { "schema": { "$ref": "#/components/schemas/UpdateEmailDeviceDto" } }, "application/*+json": { "schema": { "$ref": "#/components/schemas/UpdateEmailDeviceDto" } } } }, "responses": { "200": { "description": "OK", "content": { "text/plain": { "schema": { "$ref": "#/components/schemas/EmailDeviceDto" } }, "application/json": { "schema": { "$ref": "#/components/schemas/EmailDeviceDto" } }, "text/json": { "schema": { "$ref": "#/components/schemas/EmailDeviceDto" } } } } } } }, "/api/Device": { "delete": { "tags": [ "Device" ], "summary": "Deletes the device from the user", "parameters": [ { "name": "deviceId", "in": "query", "description": "", "schema": { "type": "integer", "format": "int32" } } ], "responses": { "200": { "description": "OK" } } }, "get": { "tags": [ "Device" ], "responses": { "200": { "description": "OK", "content": { "text/plain": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/EmailDeviceDto" } } }, "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/EmailDeviceDto" } } }, "text/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/EmailDeviceDto" } } } } } } } }, "/api/Device/send-to": { "post": { "tags": [ "Device" ], "summary": "Sends a collection of chapters to the user's device", "requestBody": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/SendToEmailDeviceDto" } }, "text/json": { "schema": { "$ref": "#/components/schemas/SendToEmailDeviceDto" } }, "application/*+json": { "schema": { "$ref": "#/components/schemas/SendToEmailDeviceDto" } } } }, "responses": { "200": { "description": "OK" } } } }, "/api/Device/send-series-to": { "post": { "tags": [ "Device" ], "summary": "Attempts to send a whole series to a device.", "requestBody": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/SendSeriesToEmailDeviceDto" } }, "text/json": { "schema": { "$ref": "#/components/schemas/SendSeriesToEmailDeviceDto" } }, "application/*+json": { "schema": { "$ref": "#/components/schemas/SendSeriesToEmailDeviceDto" } } } }, "responses": { "200": { "description": "OK" } } } }, "/api/Device/client/devices": { "get": { "tags": [ "Device" ], "summary": "Get my client devices", "parameters": [ { "name": "includeInactive", "in": "query", "description": "", "schema": { "type": "boolean", "default": false } } ], "responses": { "200": { "description": "OK", "content": { "text/plain": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/ClientDeviceDto" } } }, "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/ClientDeviceDto" } } }, "text/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/ClientDeviceDto" } } } } } } } }, "/api/Device/client/all-devices": { "get": { "tags": [ "Device" ], "summary": "Get All user client devices", "parameters": [ { "name": "includeInactive", "in": "query", "description": "", "schema": { "type": "boolean", "default": false } } ], "responses": { "200": { "description": "OK", "content": { "text/plain": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/ClientDeviceDto" } } }, "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/ClientDeviceDto" } } }, "text/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/ClientDeviceDto" } } } } } } } }, "/api/Device/client/device": { "delete": { "tags": [ "Device" ], "summary": "Removes the client device from DB", "parameters": [ { "name": "clientDeviceId", "in": "query", "description": "", "schema": { "type": "integer", "format": "int32" } } ], "responses": { "200": { "description": "OK", "content": { "text/plain": { "schema": { "type": "boolean" } }, "application/json": { "schema": { "type": "boolean" } }, "text/json": { "schema": { "type": "boolean" } } } } } } }, "/api/Device/client/update-name": { "post": { "tags": [ "Device" ], "summary": "Update the friendly name of the Device", "requestBody": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/UpdateClientDeviceNameDto" } }, "text/json": { "schema": { "$ref": "#/components/schemas/UpdateClientDeviceNameDto" } }, "application/*+json": { "schema": { "$ref": "#/components/schemas/UpdateClientDeviceNameDto" } } } }, "responses": { "200": { "description": "OK" } } } }, "/api/Download/volume-size": { "get": { "tags": [ "Download" ], "summary": "For a given volume, return the size in bytes", "parameters": [ { "name": "volumeId", "in": "query", "description": "", "schema": { "type": "integer", "format": "int32" } } ], "responses": { "200": { "description": "OK", "content": { "text/plain": { "schema": { "type": "integer", "format": "int64" } }, "application/json": { "schema": { "type": "integer", "format": "int64" } }, "text/json": { "schema": { "type": "integer", "format": "int64" } } } } } } }, "/api/Download/bulk-volume-size": { "post": { "tags": [ "Download" ], "summary": "For a set of volumes, return the size in bytes", "requestBody": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/BulkVolumeSizeRequest" } }, "text/json": { "schema": { "$ref": "#/components/schemas/BulkVolumeSizeRequest" } }, "application/*+json": { "schema": { "$ref": "#/components/schemas/BulkVolumeSizeRequest" } } } }, "responses": { "200": { "description": "OK", "content": { "text/plain": { "schema": { "type": "object", "additionalProperties": { "type": "integer", "format": "int64" } } }, "application/json": { "schema": { "type": "object", "additionalProperties": { "type": "integer", "format": "int64" } } }, "text/json": { "schema": { "type": "object", "additionalProperties": { "type": "integer", "format": "int64" } } } } } } } }, "/api/Download/chapter-size": { "get": { "tags": [ "Download" ], "summary": "For a given chapter, return the size in bytes", "parameters": [ { "name": "chapterId", "in": "query", "description": "", "schema": { "type": "integer", "format": "int32" } } ], "responses": { "200": { "description": "OK", "content": { "text/plain": { "schema": { "type": "integer", "format": "int64" } }, "application/json": { "schema": { "type": "integer", "format": "int64" } }, "text/json": { "schema": { "type": "integer", "format": "int64" } } } } } } }, "/api/Download/bulk-chapter-size": { "post": { "tags": [ "Download" ], "summary": "For a set of chapters, return the size in bytes", "requestBody": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/BulkChapterSizeRequest" } }, "text/json": { "schema": { "$ref": "#/components/schemas/BulkChapterSizeRequest" } }, "application/*+json": { "schema": { "$ref": "#/components/schemas/BulkChapterSizeRequest" } } } }, "responses": { "200": { "description": "OK", "content": { "text/plain": { "schema": { "type": "object", "additionalProperties": { "type": "integer", "format": "int64" } } }, "application/json": { "schema": { "type": "object", "additionalProperties": { "type": "integer", "format": "int64" } } }, "text/json": { "schema": { "type": "object", "additionalProperties": { "type": "integer", "format": "int64" } } } } } } } }, "/api/Download/series-size": { "get": { "tags": [ "Download" ], "summary": "For a series, return the size in bytes", "parameters": [ { "name": "seriesId", "in": "query", "description": "", "schema": { "type": "integer", "format": "int32" } } ], "responses": { "200": { "description": "OK", "content": { "text/plain": { "schema": { "type": "integer", "format": "int64" } }, "application/json": { "schema": { "type": "integer", "format": "int64" } }, "text/json": { "schema": { "type": "integer", "format": "int64" } } } } } } }, "/api/Download/readinglist-size": { "get": { "tags": [ "Download" ], "summary": "Returns the filesize for all items of a reading list that the requesting user has access to", "parameters": [ { "name": "readingListId", "in": "query", "description": "", "schema": { "type": "integer", "format": "int32" } } ], "responses": { "200": { "description": "OK", "content": { "text/plain": { "schema": { "type": "integer", "format": "int64" } }, "application/json": { "schema": { "type": "integer", "format": "int64" } }, "text/json": { "schema": { "type": "integer", "format": "int64" } } } } } } }, "/api/Download/bulk-readinglist-size": { "post": { "tags": [ "Download" ], "summary": "Returns the mapping of readinglist -> size", "requestBody": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/BulkReadingListSizeRequest" } }, "text/json": { "schema": { "$ref": "#/components/schemas/BulkReadingListSizeRequest" } }, "application/*+json": { "schema": { "$ref": "#/components/schemas/BulkReadingListSizeRequest" } } } }, "responses": { "200": { "description": "OK", "content": { "text/plain": { "schema": { "type": "object", "additionalProperties": { "type": "integer", "format": "int64" } } }, "application/json": { "schema": { "type": "object", "additionalProperties": { "type": "integer", "format": "int64" } } }, "text/json": { "schema": { "type": "object", "additionalProperties": { "type": "integer", "format": "int64" } } } } } } } }, "/api/Download/bulk-series-size": { "post": { "tags": [ "Download" ], "summary": "For a set of series, return the size in bytes", "requestBody": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/BulkSeriesSizeRequest" } }, "text/json": { "schema": { "$ref": "#/components/schemas/BulkSeriesSizeRequest" } }, "application/*+json": { "schema": { "$ref": "#/components/schemas/BulkSeriesSizeRequest" } } } }, "responses": { "200": { "description": "OK", "content": { "text/plain": { "schema": { "type": "object", "additionalProperties": { "type": "integer", "format": "int64" } } }, "application/json": { "schema": { "type": "object", "additionalProperties": { "type": "integer", "format": "int64" } } }, "text/json": { "schema": { "type": "object", "additionalProperties": { "type": "integer", "format": "int64" } } } } } } } }, "/api/Download/volume": { "get": { "tags": [ "Download" ], "summary": "Downloads all chapters within a volume. If the chapters are multiple zips, they will all be zipped up.", "parameters": [ { "name": "volumeId", "in": "query", "description": "", "schema": { "type": "integer", "format": "int32" } }, { "name": "correlationId", "in": "query", "description": "Only for UI", "schema": { "type": "string" } } ], "responses": { "200": { "description": "OK" } } } }, "/api/Download/chapter": { "get": { "tags": [ "Download" ], "summary": "Returns the zip for a single chapter. If the chapter contains multiple files, they will be zipped.", "parameters": [ { "name": "chapterId", "in": "query", "description": "", "schema": { "type": "integer", "format": "int32" } }, { "name": "correlationId", "in": "query", "schema": { "type": "string" } } ], "responses": { "200": { "description": "OK" } } } }, "/api/Download/series": { "get": { "tags": [ "Download" ], "parameters": [ { "name": "seriesId", "in": "query", "schema": { "type": "integer", "format": "int32" } }, { "name": "correlationId", "in": "query", "schema": { "type": "string" } } ], "responses": { "200": { "description": "OK" } } } }, "/api/Download/bookmarks": { "post": { "tags": [ "Download" ], "summary": "Downloads all bookmarks in a zip for", "requestBody": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/DownloadBookmarkDto" } }, "text/json": { "schema": { "$ref": "#/components/schemas/DownloadBookmarkDto" } }, "application/*+json": { "schema": { "$ref": "#/components/schemas/DownloadBookmarkDto" } } } }, "responses": { "200": { "description": "OK" } } } }, "/api/Email/all": { "get": { "tags": [ "Email" ], "responses": { "200": { "description": "OK", "content": { "text/plain": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/EmailHistoryDto" } } }, "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/EmailHistoryDto" } } }, "text/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/EmailHistoryDto" } } } } } } } }, "/api/Filter/update": { "post": { "tags": [ "Filter" ], "summary": "Creates or Updates the filter", "requestBody": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/FilterV2Dto" } }, "text/json": { "schema": { "$ref": "#/components/schemas/FilterV2Dto" } }, "application/*+json": { "schema": { "$ref": "#/components/schemas/FilterV2Dto" } } } }, "responses": { "200": { "description": "OK" } } } }, "/api/Filter": { "get": { "tags": [ "Filter" ], "summary": "All Smart Filters for the authenticated user", "responses": { "200": { "description": "OK", "content": { "text/plain": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/SmartFilterDto" } } }, "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/SmartFilterDto" } } }, "text/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/SmartFilterDto" } } } } } } }, "delete": { "tags": [ "Filter" ], "summary": "Delete the smart filter for the authenticated user", "description": "User must not be in Kavita.Models.Constants.PolicyConstants.ReadOnlyRole", "parameters": [ { "name": "filterId", "in": "query", "description": "", "schema": { "type": "integer", "format": "int32" } } ], "responses": { "200": { "description": "OK" } } } }, "/api/Filter/encode": { "post": { "tags": [ "Filter" ], "summary": "Encode the Filter", "requestBody": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/FilterV2Dto" } }, "text/json": { "schema": { "$ref": "#/components/schemas/FilterV2Dto" } }, "application/*+json": { "schema": { "$ref": "#/components/schemas/FilterV2Dto" } } } }, "responses": { "200": { "description": "OK", "content": { "text/plain": { "schema": { "type": "string" } }, "application/json": { "schema": { "type": "string" } }, "text/json": { "schema": { "type": "string" } } } } } } }, "/api/Filter/decode": { "post": { "tags": [ "Filter" ], "summary": "Decodes the Filter", "requestBody": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/DecodeFilterDto" } }, "text/json": { "schema": { "$ref": "#/components/schemas/DecodeFilterDto" } }, "application/*+json": { "schema": { "$ref": "#/components/schemas/DecodeFilterDto" } } } }, "responses": { "200": { "description": "OK", "content": { "text/plain": { "schema": { "$ref": "#/components/schemas/FilterV2Dto" } }, "application/json": { "schema": { "$ref": "#/components/schemas/FilterV2Dto" } }, "text/json": { "schema": { "$ref": "#/components/schemas/FilterV2Dto" } } } } } } }, "/api/Filter/rename": { "post": { "tags": [ "Filter" ], "summary": "Rename a Smart Filter given the filterId and new name", "parameters": [ { "name": "filterId", "in": "query", "description": "", "schema": { "type": "integer", "format": "int32" } }, { "name": "name", "in": "query", "description": "", "schema": { "type": "string" } } ], "responses": { "200": { "description": "OK" } } } }, "/api/Font/all": { "get": { "tags": [ "Font" ], "summary": "List out the fonts", "responses": { "200": { "description": "OK", "content": { "text/plain": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/EpubFontDto" } } }, "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/EpubFontDto" } } }, "text/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/EpubFontDto" } } } } } } } }, "/api/Font": { "get": { "tags": [ "Font" ], "summary": "Returns a font file", "parameters": [ { "name": "fontId", "in": "query", "description": "", "schema": { "type": "integer", "format": "int32" } } ], "responses": { "200": { "description": "OK" } } }, "delete": { "tags": [ "Font" ], "summary": "Removes a font from the system", "parameters": [ { "name": "fontId", "in": "query", "description": "", "schema": { "type": "integer", "format": "int32" } }, { "name": "force", "in": "query", "description": "If the font is in use by other users and an admin wants it deleted, they must confirm to force delete it. This is prompted in the UI.", "schema": { "type": "boolean", "default": false } } ], "responses": { "200": { "description": "OK" } } } }, "/api/Font/in-use": { "get": { "tags": [ "Font" ], "summary": "Returns if the given font is in use by any other user. System provided fonts will always return true.", "parameters": [ { "name": "fontId", "in": "query", "description": "", "schema": { "type": "integer", "format": "int32" } } ], "responses": { "200": { "description": "OK", "content": { "text/plain": { "schema": { "type": "boolean" } }, "application/json": { "schema": { "type": "boolean" } }, "text/json": { "schema": { "type": "boolean" } } } } } } }, "/api/Font/upload": { "post": { "tags": [ "Font" ], "summary": "Manual upload", "requestBody": { "content": { "multipart/form-data": { "schema": { "type": "object", "properties": { "formFile": { "type": "string", "description": "", "format": "binary" } } }, "encoding": { "formFile": { "style": "form" } } } } }, "responses": { "200": { "description": "OK", "content": { "text/plain": { "schema": { "$ref": "#/components/schemas/EpubFontDto" } }, "application/json": { "schema": { "$ref": "#/components/schemas/EpubFontDto" } }, "text/json": { "schema": { "$ref": "#/components/schemas/EpubFontDto" } } } } } } }, "/api/Font/upload-by-url": { "post": { "tags": [ "Font" ], "parameters": [ { "name": "url", "in": "query", "schema": { "type": "string" } } ], "responses": { "200": { "description": "OK" } } } }, "/api/Health": { "get": { "tags": [ "Health" ], "summary": "No-op method that just returns Ok. Used for health checks in Docker containers.", "responses": { "200": { "description": "OK", "content": { "text/plain": { "schema": { "type": "string" } }, "application/json": { "schema": { "type": "string" } }, "text/json": { "schema": { "type": "string" } } } } } } }, "/api/Image/chapter-cover": { "get": { "tags": [ "Image" ], "summary": "Returns cover image for Chapter", "parameters": [ { "name": "chapterId", "in": "query", "description": "", "schema": { "type": "integer", "format": "int32" } }, { "name": "apiKey", "in": "query", "description": "", "schema": { "type": "string" } } ], "responses": { "200": { "description": "OK" } } } }, "/api/Image/library-cover": { "get": { "tags": [ "Image" ], "summary": "Returns cover image for Library", "parameters": [ { "name": "libraryId", "in": "query", "description": "", "schema": { "type": "integer", "format": "int32" } }, { "name": "apiKey", "in": "query", "description": "", "schema": { "type": "string" } } ], "responses": { "200": { "description": "OK" } } } }, "/api/Image/volume-cover": { "get": { "tags": [ "Image" ], "summary": "Returns cover image for Volume", "parameters": [ { "name": "volumeId", "in": "query", "description": "", "schema": { "type": "integer", "format": "int32" } }, { "name": "apiKey", "in": "query", "description": "", "schema": { "type": "string" } } ], "responses": { "200": { "description": "OK" } } } }, "/api/Image/series-cover": { "get": { "tags": [ "Image" ], "summary": "Returns cover image for Series", "parameters": [ { "name": "seriesId", "in": "query", "description": "Id of Series", "schema": { "type": "integer", "format": "int32" } }, { "name": "apiKey", "in": "query", "description": "", "schema": { "type": "string" } } ], "responses": { "200": { "description": "OK" } } } }, "/api/Image/collection-cover": { "get": { "tags": [ "Image" ], "summary": "Returns cover image for Collection", "parameters": [ { "name": "collectionTagId", "in": "query", "description": "", "schema": { "type": "integer", "format": "int32" } }, { "name": "apiKey", "in": "query", "description": "", "schema": { "type": "string" } } ], "responses": { "200": { "description": "OK" } } } }, "/api/Image/readinglist-cover": { "get": { "tags": [ "Image" ], "summary": "Returns cover image for a Reading List", "parameters": [ { "name": "readingListId", "in": "query", "description": "", "schema": { "type": "integer", "format": "int32" } }, { "name": "apiKey", "in": "query", "description": "", "schema": { "type": "string" } } ], "responses": { "200": { "description": "OK" } } } }, "/api/Image/bookmark": { "get": { "tags": [ "Image" ], "summary": "Returns image for a given bookmark page", "description": "This request is served unauthenticated, but user must be passed via api key to validate", "parameters": [ { "name": "chapterId", "in": "query", "description": "", "schema": { "type": "integer", "format": "int32" } }, { "name": "pageNum", "in": "query", "description": "Starts at 0", "schema": { "type": "integer", "format": "int32" } }, { "name": "apiKey", "in": "query", "description": "API Key for user. Needed to authenticate request", "schema": { "type": "string" } }, { "name": "imageOffset", "in": "query", "description": "Only applicable for Epubs - handles multiple images on one page", "schema": { "type": "integer", "format": "int32", "default": 0 } } ], "responses": { "200": { "description": "OK" } } } }, "/api/Image/web-link": { "get": { "tags": [ "Image" ], "summary": "Returns the image associated with a web-link", "parameters": [ { "name": "url", "in": "query", "description": "", "schema": { "type": "string" } }, { "name": "apiKey", "in": "query", "description": "", "schema": { "type": "string" } } ], "responses": { "200": { "description": "OK" } } } }, "/api/Image/publisher": { "get": { "tags": [ "Image" ], "summary": "Returns the image associated with a publisher", "parameters": [ { "name": "publisherName", "in": "query", "description": "", "schema": { "type": "string" } }, { "name": "apiKey", "in": "query", "description": "", "schema": { "type": "string" } } ], "responses": { "200": { "description": "OK" } } } }, "/api/Image/person-cover": { "get": { "tags": [ "Image" ], "summary": "Returns cover image for Person", "parameters": [ { "name": "personId", "in": "query", "description": "", "schema": { "type": "integer", "format": "int32" } }, { "name": "apiKey", "in": "query", "description": "", "schema": { "type": "string" } } ], "responses": { "200": { "description": "OK" } } } }, "/api/Image/user-cover": { "get": { "tags": [ "Image" ], "summary": "Returns cover image for User", "parameters": [ { "name": "userId", "in": "query", "description": "", "schema": { "type": "integer", "format": "int32" } }, { "name": "apiKey", "in": "query", "description": "", "schema": { "type": "string" } } ], "responses": { "200": { "description": "OK" } } } }, "/api/Image/cover-upload": { "get": { "tags": [ "Image" ], "summary": "Returns a temp coverupload image", "description": "Requires Admin Role to perform upload", "parameters": [ { "name": "filename", "in": "query", "description": "Filename of file. This is used with upload/upload-by-url", "schema": { "type": "string" } }, { "name": "apiKey", "in": "query", "description": "", "schema": { "type": "string" } } ], "responses": { "200": { "description": "OK" } } } }, "/api/Koreader/{apiKey}/users/auth": { "get": { "tags": [ "Koreader" ], "parameters": [ { "name": "apiKey", "in": "path", "required": true, "schema": { "type": "string" } } ], "responses": { "200": { "description": "OK" } } } }, "/api/Koreader/{apiKey}/syncs/progress": { "put": { "tags": [ "Koreader" ], "summary": "Syncs book progress with Kavita. Will attempt to save the underlying reader position if possible.", "parameters": [ { "name": "apiKey", "in": "path", "description": "", "required": true, "schema": { "type": "string" } } ], "requestBody": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/KoreaderBookDto" } }, "text/json": { "schema": { "$ref": "#/components/schemas/KoreaderBookDto" } }, "application/*+json": { "schema": { "$ref": "#/components/schemas/KoreaderBookDto" } } } }, "responses": { "200": { "description": "OK", "content": { "text/plain": { "schema": { "$ref": "#/components/schemas/KoreaderProgressUpdateDto" } }, "application/json": { "schema": { "$ref": "#/components/schemas/KoreaderProgressUpdateDto" } }, "text/json": { "schema": { "$ref": "#/components/schemas/KoreaderProgressUpdateDto" } } } } } } }, "/api/Koreader/{apiKey}/syncs/progress/{ebookHash}": { "get": { "tags": [ "Koreader" ], "summary": "Gets book progress from Kavita, if not found will return a 400", "parameters": [ { "name": "apiKey", "in": "path", "description": "", "required": true, "schema": { "type": "string" } }, { "name": "ebookHash", "in": "path", "description": "", "required": true, "schema": { "type": "string" } } ], "responses": { "200": { "description": "OK" } } } }, "/api/Library/create": { "post": { "tags": [ "Library" ], "summary": "Creates a new Library. Upon library creation, adds new library to all Admin accounts.", "requestBody": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/UpdateLibraryDto" } }, "text/json": { "schema": { "$ref": "#/components/schemas/UpdateLibraryDto" } }, "application/*+json": { "schema": { "$ref": "#/components/schemas/UpdateLibraryDto" } } } }, "responses": { "200": { "description": "OK", "content": { "text/plain": { "schema": { "$ref": "#/components/schemas/LibraryDto" } }, "application/json": { "schema": { "$ref": "#/components/schemas/LibraryDto" } }, "text/json": { "schema": { "$ref": "#/components/schemas/LibraryDto" } } } } } } }, "/api/Library/list": { "get": { "tags": [ "Library" ], "summary": "Returns a list of directories for a given path. If path is empty, returns root drives.", "parameters": [ { "name": "path", "in": "query", "description": "", "schema": { "type": "string" } } ], "responses": { "200": { "description": "OK", "content": { "text/plain": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/DirectoryDto" } } }, "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/DirectoryDto" } } }, "text/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/DirectoryDto" } } } } } } } }, "/api/Library/has-files-at-root": { "post": { "tags": [ "Library" ], "summary": "For each root, checks if there are any supported files at root to warn the user during library creation about an invalid setup", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CheckForFilesInFolderRootsDto" } }, "text/json": { "schema": { "$ref": "#/components/schemas/CheckForFilesInFolderRootsDto" } }, "application/*+json": { "schema": { "$ref": "#/components/schemas/CheckForFilesInFolderRootsDto" } } } }, "responses": { "200": { "description": "OK", "content": { "text/plain": { "schema": { "type": "array", "items": { "type": "string" } } }, "application/json": { "schema": { "type": "array", "items": { "type": "string" } } }, "text/json": { "schema": { "type": "array", "items": { "type": "string" } } } } } } } }, "/api/Library": { "get": { "tags": [ "Library" ], "summary": "Return a specific library", "description": "If the user is not an admin, only id, type, and name will be returned (Kavita.Models.DTOs.LiteLibraryDto)", "parameters": [ { "name": "libraryId", "in": "query", "schema": { "type": "integer", "format": "int32" } } ], "responses": { "200": { "description": "OK", "content": { "text/plain": { "schema": { "$ref": "#/components/schemas/LibraryDto" } }, "application/json": { "schema": { "$ref": "#/components/schemas/LibraryDto" } }, "text/json": { "schema": { "$ref": "#/components/schemas/LibraryDto" } } } } } } }, "/api/Library/libraries": { "get": { "tags": [ "Library" ], "summary": "Return all libraries in the Server", "responses": { "200": { "description": "OK", "content": { "text/plain": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/LibraryDto" } } }, "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/LibraryDto" } } }, "text/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/LibraryDto" } } } } } } } }, "/api/Library/user-libraries": { "get": { "tags": [ "Library" ], "summary": "Gets libraries for the given user that you also have access to", "parameters": [ { "name": "userId", "in": "query", "description": "", "schema": { "type": "integer", "format": "int32" } } ], "responses": { "200": { "description": "OK", "content": { "text/plain": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/LibraryDto" } } }, "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/LibraryDto" } } }, "text/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/LibraryDto" } } } } } } } }, "/api/Library/jump-bar": { "get": { "tags": [ "Library" ], "summary": "For a given library, generate the jump bar information", "parameters": [ { "name": "libraryId", "in": "query", "description": "", "schema": { "type": "integer", "format": "int32" } } ], "responses": { "200": { "description": "OK", "content": { "text/plain": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/JumpKeyDto" } } }, "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/JumpKeyDto" } } }, "text/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/JumpKeyDto" } } } } } } } }, "/api/Library/grant-access": { "post": { "tags": [ "Library" ], "summary": "Grants a user account access to a Library", "requestBody": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/UpdateLibraryForUserDto" } }, "text/json": { "schema": { "$ref": "#/components/schemas/UpdateLibraryForUserDto" } }, "application/*+json": { "schema": { "$ref": "#/components/schemas/UpdateLibraryForUserDto" } } } }, "responses": { "200": { "description": "OK", "content": { "text/plain": { "schema": { "$ref": "#/components/schemas/MemberDto" } }, "application/json": { "schema": { "$ref": "#/components/schemas/MemberDto" } }, "text/json": { "schema": { "$ref": "#/components/schemas/MemberDto" } } } } } } }, "/api/Library/scan": { "post": { "tags": [ "Library" ], "summary": "Scans a given library for file changes.", "parameters": [ { "name": "libraryId", "in": "query", "description": "", "schema": { "type": "integer", "format": "int32" } }, { "name": "force", "in": "query", "description": "If true, will ignore any optimizations to avoid file I/O and will treat similar to a first scan", "schema": { "type": "boolean", "default": false } } ], "responses": { "200": { "description": "OK" } } } }, "/api/Library/scan-multiple": { "post": { "tags": [ "Library" ], "summary": "Enqueues a bunch of library scans", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/BulkActionDto" } }, "text/json": { "schema": { "$ref": "#/components/schemas/BulkActionDto" } }, "application/*+json": { "schema": { "$ref": "#/components/schemas/BulkActionDto" } } } }, "responses": { "200": { "description": "OK" } } } }, "/api/Library/scan-all": { "post": { "tags": [ "Library" ], "summary": "Scans a given library for file changes. If another scan task is in progress, will reschedule the invocation for 3 hours in future.", "parameters": [ { "name": "force", "in": "query", "description": "If true, will ignore any optimizations to avoid file I/O and will treat similar to a first scan", "schema": { "type": "boolean", "default": false } } ], "responses": { "200": { "description": "OK" } } } }, "/api/Library/refresh-metadata": { "post": { "tags": [ "Library" ], "parameters": [ { "name": "libraryId", "in": "query", "schema": { "type": "integer", "format": "int32" } }, { "name": "force", "in": "query", "schema": { "type": "boolean", "default": true } }, { "name": "forceColorscape", "in": "query", "schema": { "type": "boolean", "default": true } } ], "responses": { "200": { "description": "OK" } } } }, "/api/Library/refresh-metadata-multiple": { "post": { "tags": [ "Library" ], "parameters": [ { "name": "forceColorscape", "in": "query", "schema": { "type": "boolean", "default": true } } ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/BulkActionDto" } }, "text/json": { "schema": { "$ref": "#/components/schemas/BulkActionDto" } }, "application/*+json": { "schema": { "$ref": "#/components/schemas/BulkActionDto" } } } }, "responses": { "200": { "description": "OK" } } } }, "/api/Library/copy-settings-from": { "post": { "tags": [ "Library" ], "summary": "Copy the library settings (adv tab + optional type) to a set of other libraries.", "requestBody": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CopySettingsFromLibraryDto" } }, "text/json": { "schema": { "$ref": "#/components/schemas/CopySettingsFromLibraryDto" } }, "application/*+json": { "schema": { "$ref": "#/components/schemas/CopySettingsFromLibraryDto" } } } }, "responses": { "200": { "description": "OK" } } } }, "/api/Library/scan-folder": { "post": { "tags": [ "Library" ], "summary": "Given a valid path, will invoke either a Scan Series or Scan Library. If the folder does not exist within Kavita, the request will be ignored", "requestBody": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ScanFolderDto" } }, "text/json": { "schema": { "$ref": "#/components/schemas/ScanFolderDto" } }, "application/*+json": { "schema": { "$ref": "#/components/schemas/ScanFolderDto" } } } }, "responses": { "200": { "description": "OK" } } } }, "/api/Library/delete": { "delete": { "tags": [ "Library" ], "summary": "Deletes the library and all series within it.", "description": "This does not touch any files", "parameters": [ { "name": "libraryId", "in": "query", "description": "", "schema": { "type": "integer", "format": "int32" } } ], "responses": { "200": { "description": "OK", "content": { "text/plain": { "schema": { "type": "boolean" } }, "application/json": { "schema": { "type": "boolean" } }, "text/json": { "schema": { "type": "boolean" } } } } } } }, "/api/Library/delete-multiple": { "delete": { "tags": [ "Library" ], "summary": "Deletes multiple libraries and all series within it.", "description": "This does not touch any files", "parameters": [ { "name": "libraryIds", "in": "query", "description": "", "schema": { "type": "array", "items": { "type": "integer", "format": "int32" } } } ], "responses": { "200": { "description": "OK", "content": { "text/plain": { "schema": { "type": "boolean" } }, "application/json": { "schema": { "type": "boolean" } }, "text/json": { "schema": { "type": "boolean" } } } } } } }, "/api/Library/name-exists": { "get": { "tags": [ "Library" ], "summary": "Checks if the library name exists or not", "parameters": [ { "name": "name", "in": "query", "description": "If empty or null, will return true as that is invalid", "schema": { "type": "string" } } ], "responses": { "200": { "description": "OK", "content": { "text/plain": { "schema": { "type": "boolean" } }, "application/json": { "schema": { "type": "boolean" } }, "text/json": { "schema": { "type": "boolean" } } } } } } }, "/api/Library/update": { "post": { "tags": [ "Library" ], "summary": "Updates an existing Library with new name, folders, and/or type.", "description": "Any folder or type change will invoke a scan.", "requestBody": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/UpdateLibraryDto" } }, "text/json": { "schema": { "$ref": "#/components/schemas/UpdateLibraryDto" } }, "application/*+json": { "schema": { "$ref": "#/components/schemas/UpdateLibraryDto" } } } }, "responses": { "200": { "description": "OK" } } } }, "/api/Library/type": { "get": { "tags": [ "Library" ], "summary": "Returns the type of the underlying library", "parameters": [ { "name": "libraryId", "in": "query", "description": "", "schema": { "type": "integer", "format": "int32" } } ], "responses": { "200": { "description": "OK", "content": { "text/plain": { "schema": { "enum": [ 0, 1, 2, 3, 4, 5 ], "type": "integer", "format": "int32" } }, "application/json": { "schema": { "enum": [ 0, 1, 2, 3, 4, 5 ], "type": "integer", "format": "int32" } }, "text/json": { "schema": { "enum": [ 0, 1, 2, 3, 4, 5 ], "type": "integer", "format": "int32" } } } } } } }, "/api/License/valid-license": { "get": { "tags": [ "License" ], "summary": "Checks if the user's license is valid or not", "parameters": [ { "name": "forceCheck", "in": "query", "schema": { "type": "boolean", "default": false } } ], "responses": { "200": { "description": "OK", "content": { "text/plain": { "schema": { "type": "boolean" } }, "application/json": { "schema": { "type": "boolean" } }, "text/json": { "schema": { "type": "boolean" } } } } } } }, "/api/License/has-license": { "get": { "tags": [ "License" ], "summary": "Has any license registered with the instance. Does not validate against Kavita+ API", "responses": { "200": { "description": "OK", "content": { "text/plain": { "schema": { "type": "boolean" } }, "application/json": { "schema": { "type": "boolean" } }, "text/json": { "schema": { "type": "boolean" } } } } } } }, "/api/License/info": { "get": { "tags": [ "License" ], "summary": "Asks Kavita+ for the latest license info", "parameters": [ { "name": "forceCheck", "in": "query", "description": "Force checking the API and skip the 8-hour cache", "schema": { "type": "boolean", "default": false } } ], "responses": { "200": { "description": "OK", "content": { "text/plain": { "schema": { "$ref": "#/components/schemas/LicenseInfoDto" } }, "application/json": { "schema": { "$ref": "#/components/schemas/LicenseInfoDto" } }, "text/json": { "schema": { "$ref": "#/components/schemas/LicenseInfoDto" } } } } } } }, "/api/License": { "delete": { "tags": [ "License" ], "summary": "Remove the Kavita+ License on the Server", "responses": { "200": { "description": "OK" } } }, "post": { "tags": [ "License" ], "summary": "Updates server license", "description": "Caches the result", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/UpdateLicenseDto" } }, "text/json": { "schema": { "$ref": "#/components/schemas/UpdateLicenseDto" } }, "application/*+json": { "schema": { "$ref": "#/components/schemas/UpdateLicenseDto" } } } }, "responses": { "200": { "description": "OK" } } } }, "/api/License/reset": { "post": { "tags": [ "License" ], "summary": "Break the registration between Kavita+ and this instance", "requestBody": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/UpdateLicenseDto" } }, "text/json": { "schema": { "$ref": "#/components/schemas/UpdateLicenseDto" } }, "application/*+json": { "schema": { "$ref": "#/components/schemas/UpdateLicenseDto" } } } }, "responses": { "200": { "description": "OK" } } } }, "/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": [ "Locale" ], "summary": "Returns all applicable locales on the server", "description": "This can be cached as it will not change per version.", "responses": { "200": { "description": "OK", "content": { "text/plain": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/KavitaLocale" } } }, "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/KavitaLocale" } } }, "text/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/KavitaLocale" } } } } } } } }, "/api/Manage/series-metadata": { "post": { "tags": [ "Manage" ], "summary": "Returns a list of all Series that is Kavita+ applicable to metadata match and the status of it", "parameters": [ { "name": "PageNumber", "in": "query", "schema": { "type": "integer", "format": "int32" } }, { "name": "PageSize", "in": "query", "schema": { "type": "integer", "format": "int32" } } ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ManageMatchFilterDto" } }, "text/json": { "schema": { "$ref": "#/components/schemas/ManageMatchFilterDto" } }, "application/*+json": { "schema": { "$ref": "#/components/schemas/ManageMatchFilterDto" } } } }, "responses": { "200": { "description": "OK", "content": { "text/plain": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/ManageMatchSeriesDto" } } }, "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/ManageMatchSeriesDto" } } }, "text/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/ManageMatchSeriesDto" } } } } } } } }, "/api/Metadata/genres": { "get": { "tags": [ "Metadata" ], "summary": "Fetches genres from the instance", "parameters": [ { "name": "libraryIds", "in": "query", "description": "String separated libraryIds or null for all genres", "schema": { "type": "string" } }, { "name": "context", "in": "query", "description": "Context from which this API was invoked", "schema": { "enum": [ 1, 2, 3, 4 ], "type": "integer", "format": "int32", "default": 1 } } ], "responses": { "200": { "description": "OK", "content": { "text/plain": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/GenreTagDto" } } }, "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/GenreTagDto" } } }, "text/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/GenreTagDto" } } } } } } } }, "/api/Metadata/genres-with-counts": { "post": { "tags": [ "Metadata" ], "summary": "Returns a list of Genres with counts for counts when Genre is on Series/Chapter", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/UserParams" } }, "text/json": { "schema": { "$ref": "#/components/schemas/UserParams" } }, "application/*+json": { "schema": { "$ref": "#/components/schemas/UserParams" } } } }, "responses": { "200": { "description": "OK", "content": { "text/plain": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/BrowseGenreDto" } } }, "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/BrowseGenreDto" } } }, "text/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/BrowseGenreDto" } } } } } } } }, "/api/Metadata/people-by-role": { "get": { "tags": [ "Metadata" ], "summary": "Fetches people from the instance by role", "parameters": [ { "name": "role", "in": "query", "description": "role", "schema": { "enum": [ 1, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15 ], "type": "integer", "format": "int32" } } ], "responses": { "200": { "description": "OK", "content": { "text/plain": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/PersonDto" } } }, "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/PersonDto" } } }, "text/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/PersonDto" } } } } } } } }, "/api/Metadata/people": { "get": { "tags": [ "Metadata" ], "summary": "Fetches people from the instance", "parameters": [ { "name": "libraryIds", "in": "query", "description": "String separated libraryIds or null for all people", "schema": { "type": "string" } } ], "responses": { "200": { "description": "OK", "content": { "text/plain": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/PersonDto" } } }, "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/PersonDto" } } }, "text/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/PersonDto" } } } } } } } }, "/api/Metadata/tags": { "get": { "tags": [ "Metadata" ], "summary": "Fetches all tags from the instance", "parameters": [ { "name": "libraryIds", "in": "query", "description": "String separated libraryIds or null for all tags", "schema": { "type": "string" } } ], "responses": { "200": { "description": "OK", "content": { "text/plain": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/TagDto" } } }, "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/TagDto" } } }, "text/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/TagDto" } } } } } } } }, "/api/Metadata/tags-with-counts": { "post": { "tags": [ "Metadata" ], "summary": "Returns a list of Tags with counts for counts when Tag is on Series/Chapter", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/UserParams" } }, "text/json": { "schema": { "$ref": "#/components/schemas/UserParams" } }, "application/*+json": { "schema": { "$ref": "#/components/schemas/UserParams" } } } }, "responses": { "200": { "description": "OK", "content": { "text/plain": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/BrowseTagDto" } } }, "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/BrowseTagDto" } } }, "text/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/BrowseTagDto" } } } } } } } }, "/api/Metadata/age-ratings": { "get": { "tags": [ "Metadata" ], "summary": "Fetches all age ratings from the instance", "description": "This API is cached for 1 hour, varying by libraryIds", "parameters": [ { "name": "libraryIds", "in": "query", "description": "String separated libraryIds or null for all ratings", "schema": { "type": "string" } } ], "responses": { "200": { "description": "OK", "content": { "text/plain": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/AgeRatingDto" } } }, "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/AgeRatingDto" } } }, "text/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/AgeRatingDto" } } } } } } } }, "/api/Metadata/publication-status": { "get": { "tags": [ "Metadata" ], "summary": "Fetches all publication status' from the instance", "description": "This API is cached for 1 hour, varying by libraryIds", "parameters": [ { "name": "libraryIds", "in": "query", "description": "String separated libraryIds or null for all publication status", "schema": { "type": "string" } } ], "responses": { "200": { "description": "OK", "content": { "text/plain": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/AgeRatingDto" } } }, "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/AgeRatingDto" } } }, "text/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/AgeRatingDto" } } } } } } } }, "/api/Metadata/languages": { "get": { "tags": [ "Metadata" ], "summary": "Fetches all age languages from the libraries passed (or if none passed, all in the server)", "description": "This does not perform RBS for the user if they have Library access due to the non-sensitive nature of languages", "parameters": [ { "name": "libraryIds", "in": "query", "description": "String separated libraryIds or null for all ratings", "schema": { "type": "string" } } ], "responses": { "200": { "description": "OK", "content": { "text/plain": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/LanguageDto" } } }, "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/LanguageDto" } } }, "text/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/LanguageDto" } } } } } } } }, "/api/Metadata/all-languages": { "get": { "tags": [ "Metadata" ], "summary": "Returns all languages Kavita can accept", "responses": { "200": { "description": "OK", "content": { "text/plain": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/LanguageDto" } } }, "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/LanguageDto" } } }, "text/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/LanguageDto" } } } } } } } }, "/api/Metadata/language-title": { "get": { "tags": [ "Metadata" ], "summary": "Given a language code returns the display name", "parameters": [ { "name": "code", "in": "query", "description": "", "schema": { "type": "string" } } ], "responses": { "200": { "description": "OK", "content": { "text/plain": { "schema": { "type": "string" } }, "application/json": { "schema": { "type": "string" } }, "text/json": { "schema": { "type": "string" } } } } } } }, "/api/Metadata/series-detail-plus": { "get": { "tags": [ "Metadata" ], "summary": "Fetches the details needed from Kavita+ for Series Detail page", "description": "This will hit upstream K+ if the data in local db is 2 weeks old", "parameters": [ { "name": "seriesId", "in": "query", "description": "Series Id", "schema": { "type": "integer", "format": "int32" } }, { "name": "libraryType", "in": "query", "description": "Library Type", "schema": { "enum": [ 0, 1, 2, 3, 4, 5 ], "type": "integer", "format": "int32" } } ], "responses": { "200": { "description": "OK", "content": { "text/plain": { "schema": { "$ref": "#/components/schemas/SeriesDetailPlusDto" } }, "application/json": { "schema": { "$ref": "#/components/schemas/SeriesDetailPlusDto" } }, "text/json": { "schema": { "$ref": "#/components/schemas/SeriesDetailPlusDto" } } } } } } }, "/Oidc/login": { "get": { "tags": [ "Oidc" ], "parameters": [ { "name": "returnUrl", "in": "query", "schema": { "type": "string", "default": "/" } } ], "responses": { "200": { "description": "OK" } } } }, "/Oidc/logout": { "get": { "tags": [ "Oidc" ], "responses": { "200": { "description": "OK" } } } }, "/api/Opds/{apiKey}": { "post": { "tags": [ "Opds" ], "summary": "Returns the Catalogue for Kavita's OPDS Service", "parameters": [ { "name": "apiKey", "in": "path", "description": "", "required": true, "schema": { "type": "string" } } ], "responses": { "200": { "description": "OK" } } }, "get": { "tags": [ "Opds" ], "summary": "Returns the Catalogue for Kavita's OPDS Service", "parameters": [ { "name": "apiKey", "in": "path", "description": "", "required": true, "schema": { "type": "string" } } ], "responses": { "200": { "description": "OK" } } } }, "/api/Opds/{apiKey}/smart-filters/{filterId}": { "get": { "tags": [ "Opds" ], "summary": "Get the User's Smart Filter series - Supports Pagination", "parameters": [ { "name": "apiKey", "in": "path", "required": true, "schema": { "type": "string" } }, { "name": "filterId", "in": "path", "required": true, "schema": { "type": "integer", "format": "int32" } }, { "name": "pageNumber", "in": "query", "schema": { "type": "integer", "format": "int32", "default": 1 } } ], "responses": { "200": { "description": "OK" } } } }, "/api/Opds/{apiKey}/smart-filters": { "get": { "tags": [ "Opds" ], "summary": "Get the User's Smart Filters (Dashboard Context) - Supports Pagination", "parameters": [ { "name": "apiKey", "in": "path", "description": "", "required": true, "schema": { "type": "string" } }, { "name": "pageNumber", "in": "query", "description": "", "schema": { "type": "integer", "format": "int32", "default": 1 } } ], "responses": { "200": { "description": "OK" } } } }, "/api/Opds/{apiKey}/libraries": { "get": { "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": { "200": { "description": "OK" } } } }, "/api/Opds/{apiKey}/want-to-read": { "get": { "tags": [ "Opds" ], "summary": "Get the User's Want to Read list - Supports Pagination", "parameters": [ { "name": "apiKey", "in": "path", "description": "", "required": true, "schema": { "type": "string" } }, { "name": "pageNumber", "in": "query", "description": "", "schema": { "type": "integer", "format": "int32", "default": 1 } } ], "responses": { "200": { "description": "OK" } } } }, "/api/Opds/{apiKey}/collections": { "get": { "tags": [ "Opds" ], "summary": "Get all Collections - Supports Pagination", "parameters": [ { "name": "apiKey", "in": "path", "description": "", "required": true, "schema": { "type": "string" } }, { "name": "pageNumber", "in": "query", "description": "", "schema": { "type": "integer", "format": "int32", "default": 1 } } ], "responses": { "200": { "description": "OK" } } } }, "/api/Opds/{apiKey}/collections/{collectionId}": { "get": { "tags": [ "Opds" ], "summary": "Get Series for a given Collection - Supports Pagination", "parameters": [ { "name": "collectionId", "in": "path", "description": "", "required": true, "schema": { "type": "integer", "format": "int32" } }, { "name": "apiKey", "in": "path", "description": "", "required": true, "schema": { "type": "string" } }, { "name": "pageNumber", "in": "query", "description": "", "schema": { "type": "integer", "format": "int32", "default": 1 } } ], "responses": { "200": { "description": "OK" } } } }, "/api/Opds/{apiKey}/reading-list": { "get": { "tags": [ "Opds" ], "summary": "Get a User's Reading Lists - Supports Pagination", "parameters": [ { "name": "apiKey", "in": "path", "description": "", "required": true, "schema": { "type": "string" } }, { "name": "pageNumber", "in": "query", "description": "", "schema": { "type": "integer", "format": "int32", "default": 1 } } ], "responses": { "200": { "description": "OK" } } } }, "/api/Opds/{apiKey}/reading-list/{readingListId}": { "get": { "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", "format": "int32" } }, { "name": "apiKey", "in": "path", "description": "", "required": true, "schema": { "type": "string" } }, { "name": "pageNumber", "in": "query", "description": "", "schema": { "type": "integer", "format": "int32", "default": 1 } } ], "responses": { "200": { "description": "OK" } } } }, "/api/Opds/{apiKey}/libraries/{libraryId}": { "get": { "tags": [ "Opds" ], "summary": "Returns Series from the Library - Supports Pagination", "parameters": [ { "name": "libraryId", "in": "path", "description": "", "required": true, "schema": { "type": "integer", "format": "int32" } }, { "name": "apiKey", "in": "path", "description": "", "required": true, "schema": { "type": "string" } }, { "name": "pageNumber", "in": "query", "description": "", "schema": { "type": "integer", "format": "int32", "default": 1 } } ], "responses": { "200": { "description": "OK" } } } }, "/api/Opds/{apiKey}/recently-added": { "get": { "tags": [ "Opds" ], "summary": "Returns Recently Added (Dashboard Feed) - Supports Pagination", "parameters": [ { "name": "apiKey", "in": "path", "description": "", "required": true, "schema": { "type": "string" } }, { "name": "pageNumber", "in": "query", "description": "", "schema": { "type": "integer", "format": "int32", "default": 1 } } ], "responses": { "200": { "description": "OK" } } } }, "/api/Opds/{apiKey}/more-in-genre": { "get": { "tags": [ "Opds" ], "summary": "Returns More In a Genre (Dashboard Feed) - Supports Pagination", "parameters": [ { "name": "apiKey", "in": "path", "description": "", "required": true, "schema": { "type": "string" } }, { "name": "genreId", "in": "query", "description": "", "schema": { "type": "integer", "format": "int32" } }, { "name": "pageNumber", "in": "query", "description": "", "schema": { "type": "integer", "format": "int32", "default": 1 } } ], "responses": { "200": { "description": "OK" } } } }, "/api/Opds/{apiKey}/recently-updated": { "get": { "tags": [ "Opds" ], "summary": "Get the Recently Updated Series (Dashboard) - Pagination available, total pages will not be filled due to underlying implementation", "parameters": [ { "name": "apiKey", "in": "path", "description": "", "required": true, "schema": { "type": "string" } }, { "name": "pageNumber", "in": "query", "description": "", "schema": { "type": "integer", "format": "int32", "default": 1 } } ], "responses": { "200": { "description": "OK" } } } }, "/api/Opds/{apiKey}/on-deck": { "get": { "tags": [ "Opds" ], "summary": "Get the On Deck (Dashboard) - Supports Pagination", "parameters": [ { "name": "apiKey", "in": "path", "description": "", "required": true, "schema": { "type": "string" } }, { "name": "pageNumber", "in": "query", "description": "", "schema": { "type": "integer", "format": "int32", "default": 1 } } ], "responses": { "200": { "description": "OK" } } } }, "/api/Opds/{apiKey}/series": { "get": { "tags": [ "Opds" ], "summary": "OPDS Search endpoint", "parameters": [ { "name": "apiKey", "in": "path", "description": "", "required": true, "schema": { "type": "string" } }, { "name": "query", "in": "query", "description": "", "schema": { "type": "string" } } ], "responses": { "200": { "description": "OK" } } } }, "/api/Opds/{apiKey}/search": { "get": { "tags": [ "Opds" ], "parameters": [ { "name": "apiKey", "in": "path", "required": true, "schema": { "type": "string" } } ], "responses": { "200": { "description": "OK" } } } }, "/api/Opds/{apiKey}/series/{seriesId}": { "get": { "tags": [ "Opds" ], "summary": "Returns the items within a Series (Series Detail)", "parameters": [ { "name": "apiKey", "in": "path", "description": "", "required": true, "schema": { "type": "string" } }, { "name": "seriesId", "in": "path", "description": "", "required": true, "schema": { "type": "integer", "format": "int32" } } ], "responses": { "200": { "description": "OK" } } } }, "/api/Opds/{apiKey}/series/{seriesId}/volume/{volumeId}": { "get": { "tags": [ "Opds" ], "summary": "Returns items for a given Volume", "parameters": [ { "name": "apiKey", "in": "path", "description": "", "required": true, "schema": { "type": "string" } }, { "name": "seriesId", "in": "path", "description": "", "required": true, "schema": { "type": "integer", "format": "int32" } }, { "name": "volumeId", "in": "path", "description": "", "required": true, "schema": { "type": "integer", "format": "int32" } } ], "responses": { "200": { "description": "OK" } } } }, "/api/Opds/{apiKey}/series/{seriesId}/volume/{volumeId}/chapter/{chapterId}": { "get": { "tags": [ "Opds" ], "summary": "Gets items for a given Chapter", "parameters": [ { "name": "apiKey", "in": "path", "description": "", "required": true, "schema": { "type": "string" } }, { "name": "seriesId", "in": "path", "description": "", "required": true, "schema": { "type": "integer", "format": "int32" } }, { "name": "volumeId", "in": "path", "description": "", "required": true, "schema": { "type": "integer", "format": "int32" } }, { "name": "chapterId", "in": "path", "description": "", "required": true, "schema": { "type": "integer", "format": "int32" } } ], "responses": { "200": { "description": "OK" } } } }, "/api/Opds/{apiKey}/series/{seriesId}/volume/{volumeId}/chapter/{chapterId}/download/{filename}": { "get": { "tags": [ "Opds" ], "summary": "Downloads a file (user must have download permission)", "parameters": [ { "name": "apiKey", "in": "path", "description": "User's API Key", "required": true, "schema": { "type": "string" } }, { "name": "seriesId", "in": "path", "description": "", "required": true, "schema": { "type": "integer", "format": "int32" } }, { "name": "volumeId", "in": "path", "description": "", "required": true, "schema": { "type": "integer", "format": "int32" } }, { "name": "chapterId", "in": "path", "description": "", "required": true, "schema": { "type": "integer", "format": "int32" } }, { "name": "filename", "in": "path", "description": "Not used. Only for Chunky to allow download links", "required": true, "schema": { "type": "string" } } ], "responses": { "200": { "description": "OK" } } } }, "/api/Opds/{apiKey}/image": { "get": { "tags": [ "Opds" ], "summary": "This returns a streamed image following OPDS-PS v1.2", "parameters": [ { "name": "apiKey", "in": "path", "description": "", "required": true, "schema": { "type": "string" } }, { "name": "libraryId", "in": "query", "description": "", "schema": { "type": "integer", "format": "int32" } }, { "name": "seriesId", "in": "query", "description": "", "schema": { "type": "integer", "format": "int32" } }, { "name": "volumeId", "in": "query", "description": "", "schema": { "type": "integer", "format": "int32" } }, { "name": "chapterId", "in": "query", "description": "", "schema": { "type": "integer", "format": "int32" } }, { "name": "pageNumber", "in": "query", "description": "", "schema": { "type": "integer", "format": "int32" } }, { "name": "saveProgress", "in": "query", "description": "Optional parameter. Can pass false and progress saving will be suppressed", "schema": { "type": "boolean", "default": true } } ], "responses": { "200": { "description": "OK" } } } }, "/api/Opds/{apiKey}/favicon": { "get": { "tags": [ "Opds" ], "parameters": [ { "name": "apiKey", "in": "path", "required": true, "schema": { "type": "string" } } ], "responses": { "200": { "description": "OK" } } } }, "/api/Panels/save-progress": { "post": { "tags": [ "Panels" ], "summary": "Saves the progress of a given chapter. This will generate a reading session with the estimated time from the\nlast progress till the current", "parameters": [ { "name": "apiKey", "in": "query", "description": "", "schema": { "type": "string" } } ], "requestBody": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ProgressDto" } }, "text/json": { "schema": { "$ref": "#/components/schemas/ProgressDto" } }, "application/*+json": { "schema": { "$ref": "#/components/schemas/ProgressDto" } } } }, "responses": { "200": { "description": "OK" } } } }, "/api/Panels/get-progress": { "get": { "tags": [ "Panels" ], "summary": "Gets the Progress of a given chapter", "parameters": [ { "name": "chapterId", "in": "query", "description": "", "schema": { "type": "integer", "format": "int32" } }, { "name": "apiKey", "in": "query", "description": "", "schema": { "type": "string" } } ], "responses": { "200": { "description": "OK", "content": { "text/plain": { "schema": { "$ref": "#/components/schemas/ProgressDto" } }, "application/json": { "schema": { "$ref": "#/components/schemas/ProgressDto" } }, "text/json": { "schema": { "$ref": "#/components/schemas/ProgressDto" } } } } } } }, "/api/Person": { "get": { "tags": [ "Person" ], "parameters": [ { "name": "name", "in": "query", "schema": { "type": "string" } } ], "responses": { "200": { "description": "OK", "content": { "text/plain": { "schema": { "$ref": "#/components/schemas/PersonDto" } }, "application/json": { "schema": { "$ref": "#/components/schemas/PersonDto" } }, "text/json": { "schema": { "$ref": "#/components/schemas/PersonDto" } } } } } } }, "/api/Person/search": { "get": { "tags": [ "Person" ], "summary": "Find a person by name or alias against a query string", "parameters": [ { "name": "queryString", "in": "query", "description": "", "schema": { "type": "string" } } ], "responses": { "200": { "description": "OK", "content": { "text/plain": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/PersonDto" } } }, "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/PersonDto" } } }, "text/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/PersonDto" } } } } } } } }, "/api/Person/roles": { "get": { "tags": [ "Person" ], "summary": "Returns all roles for a Person", "parameters": [ { "name": "personId", "in": "query", "description": "", "schema": { "type": "integer", "format": "int32" } } ], "responses": { "200": { "description": "OK", "content": { "text/plain": { "schema": { "type": "array", "items": { "enum": [ 1, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15 ], "type": "integer", "format": "int32" } } }, "application/json": { "schema": { "type": "array", "items": { "enum": [ 1, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15 ], "type": "integer", "format": "int32" } } }, "text/json": { "schema": { "type": "array", "items": { "enum": [ 1, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15 ], "type": "integer", "format": "int32" } } } } } } } }, "/api/Person/all": { "post": { "tags": [ "Person" ], "summary": "Returns a list of authors and artists for browsing", "parameters": [ { "name": "PageNumber", "in": "query", "schema": { "type": "integer", "format": "int32" } }, { "name": "PageSize", "in": "query", "schema": { "type": "integer", "format": "int32" } } ], "requestBody": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/BrowsePersonFilterDto" } }, "text/json": { "schema": { "$ref": "#/components/schemas/BrowsePersonFilterDto" } }, "application/*+json": { "schema": { "$ref": "#/components/schemas/BrowsePersonFilterDto" } } } }, "responses": { "200": { "description": "OK", "content": { "text/plain": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/BrowsePersonDto" } } }, "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/BrowsePersonDto" } } }, "text/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/BrowsePersonDto" } } } } } } } }, "/api/Person/update": { "post": { "tags": [ "Person" ], "summary": "Updates the Person", "requestBody": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/UpdatePersonDto" } }, "text/json": { "schema": { "$ref": "#/components/schemas/UpdatePersonDto" } }, "application/*+json": { "schema": { "$ref": "#/components/schemas/UpdatePersonDto" } } } }, "responses": { "200": { "description": "OK", "content": { "text/plain": { "schema": { "$ref": "#/components/schemas/PersonDto" } }, "application/json": { "schema": { "$ref": "#/components/schemas/PersonDto" } }, "text/json": { "schema": { "$ref": "#/components/schemas/PersonDto" } } } } } } }, "/api/Person/fetch-cover": { "post": { "tags": [ "Person" ], "summary": "Attempts to download the cover from CoversDB (Note: Not yet release in Kavita)", "parameters": [ { "name": "personId", "in": "query", "description": "", "schema": { "type": "integer", "format": "int32" } } ], "responses": { "200": { "description": "OK", "content": { "text/plain": { "schema": { "type": "string" } }, "application/json": { "schema": { "type": "string" } }, "text/json": { "schema": { "type": "string" } } } } } } }, "/api/Person/series-known-for": { "get": { "tags": [ "Person" ], "summary": "Returns the top 20 series that the \"person\" is known for. This will use Average Rating when applicable (Kavita+ field), else it's a random sort", "parameters": [ { "name": "personId", "in": "query", "description": "", "schema": { "type": "integer", "format": "int32" } } ], "responses": { "200": { "description": "OK", "content": { "text/plain": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/SeriesDto" } } }, "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/SeriesDto" } } }, "text/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/SeriesDto" } } } } } } } }, "/api/Person/chapters-by-role": { "get": { "tags": [ "Person" ], "summary": "Returns all individual chapters by role. Limited to 20 results.", "parameters": [ { "name": "personId", "in": "query", "description": "", "schema": { "type": "integer", "format": "int32" } }, { "name": "role", "in": "query", "description": "", "schema": { "enum": [ 1, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15 ], "type": "integer", "format": "int32" } } ], "responses": { "200": { "description": "OK", "content": { "text/plain": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/StandaloneChapterDto" } } }, "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/StandaloneChapterDto" } } }, "text/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/StandaloneChapterDto" } } } } } } } }, "/api/Person/merge": { "post": { "tags": [ "Person" ], "summary": "Merges Persons into one, this action is irreversible", "requestBody": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PersonMergeDto" } }, "text/json": { "schema": { "$ref": "#/components/schemas/PersonMergeDto" } }, "application/*+json": { "schema": { "$ref": "#/components/schemas/PersonMergeDto" } } } }, "responses": { "200": { "description": "OK", "content": { "text/plain": { "schema": { "$ref": "#/components/schemas/PersonDto" } }, "application/json": { "schema": { "$ref": "#/components/schemas/PersonDto" } }, "text/json": { "schema": { "$ref": "#/components/schemas/PersonDto" } } } } } } }, "/api/Person/valid-alias": { "post": { "tags": [ "Person" ], "summary": "Ensure the alias is valid to be added. For example, the alias cannot be on another person or be the same as the current person name/alias.", "requestBody": { "description": "alias check request", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PersonAliasCheckDto" } }, "text/json": { "schema": { "$ref": "#/components/schemas/PersonAliasCheckDto" } }, "application/*+json": { "schema": { "$ref": "#/components/schemas/PersonAliasCheckDto" } } } }, "responses": { "200": { "description": "OK", "content": { "text/plain": { "schema": { "type": "boolean" } }, "application/json": { "schema": { "type": "boolean" } }, "text/json": { "schema": { "type": "boolean" } } } } } } }, "/api/Plugin/authenticate": { "post": { "tags": [ "Plugin" ], "summary": "Authenticate with the Server given an auth key. This will log you in by returning the user object and the JWT token.", "description": "This API is not fully built out and may require more information in later releases", "parameters": [ { "name": "apiKey", "in": "query", "description": "Auth key which will be used to authenticate and return a valid user token back", "required": true, "schema": { "type": "string" } }, { "name": "pluginName", "in": "query", "description": "Name of the Plugin", "required": true, "schema": { "type": "string" } } ], "responses": { "200": { "description": "OK", "content": { "text/plain": { "schema": { "$ref": "#/components/schemas/UserDto" } }, "application/json": { "schema": { "$ref": "#/components/schemas/UserDto" } }, "text/json": { "schema": { "$ref": "#/components/schemas/UserDto" } } } } } } }, "/api/Plugin/version": { "get": { "tags": [ "Plugin" ], "summary": "Returns the version of the Kavita install", "description": "This will log unauthorized requests to Security log", "parameters": [ { "name": "apiKey", "in": "query", "description": "Required for authenticating to get result", "required": true, "schema": { "type": "string" } } ], "responses": { "200": { "description": "OK", "content": { "text/plain": { "schema": { "type": "string" } }, "application/json": { "schema": { "type": "string" } }, "text/json": { "schema": { "type": "string" } } } } } } }, "/api/Plugin/authkey-expires": { "get": { "tags": [ "Plugin" ], "summary": "Returns the expiration (UTC) of the authenticated Auth key (or null if none set)", "description": "Will always return null if the Auth Key does not belong to this account", "responses": { "200": { "description": "OK", "content": { "text/plain": { "schema": { "$ref": "#/components/schemas/AuthKeyExpiresAtDto" } }, "application/json": { "schema": { "$ref": "#/components/schemas/AuthKeyExpiresAtDto" } }, "text/json": { "schema": { "$ref": "#/components/schemas/AuthKeyExpiresAtDto" } } } } } } }, "/api/Plugin/parse": { "get": { "tags": [ "Plugin" ], "summary": "Parse a string and return Parsed information from it. Does not support any directory fallback parsing", "parameters": [ { "name": "name", "in": "query", "description": "String to parse", "schema": { "maxLength": 1000, "minLength": 0, "type": "string" } }, { "name": "libraryType", "in": "query", "description": "Determines the set of pattern matching to use", "schema": { "enum": [ 0, 1, 2, 3, 4, 5 ], "type": "integer", "format": "int32" } } ], "responses": { "200": { "description": "OK", "content": { "text/plain": { "schema": { "$ref": "#/components/schemas/ParseResultDto" } }, "application/json": { "schema": { "$ref": "#/components/schemas/ParseResultDto" } }, "text/json": { "schema": { "$ref": "#/components/schemas/ParseResultDto" } } } } } } }, "/api/Plugin/parse-bulk": { "post": { "tags": [ "Plugin" ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ParseBulkRequestDto" } }, "text/json": { "schema": { "$ref": "#/components/schemas/ParseBulkRequestDto" } }, "application/*+json": { "schema": { "$ref": "#/components/schemas/ParseBulkRequestDto" } } } }, "responses": { "200": { "description": "OK", "content": { "text/plain": { "schema": { "$ref": "#/components/schemas/ParseBulkResponseDto" } }, "application/json": { "schema": { "$ref": "#/components/schemas/ParseBulkResponseDto" } }, "text/json": { "schema": { "$ref": "#/components/schemas/ParseBulkResponseDto" } } } } } } }, "/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" } } ], "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/Reader/pdf": { "get": { "tags": [ "Reader" ], "summary": "Returns the PDF for the chapterId.", "parameters": [ { "name": "chapterId", "in": "query", "description": "", "schema": { "type": "integer", "format": "int32" } }, { "name": "apiKey", "in": "query", "description": "Auth Key for authentication", "schema": { "type": "string" } }, { "name": "extractPdf", "in": "query", "description": "Converts PDF into images per-page - Used for Mihon mainly", "schema": { "type": "boolean", "default": false } } ], "responses": { "200": { "description": "OK" } } } }, "/api/Reader/image": { "get": { "tags": [ "Reader" ], "summary": "Returns an image for a given chapter. Will perform bounding checks", "description": "This will cache the chapter images for reading", "parameters": [ { "name": "chapterId", "in": "query", "description": "Chapter Id", "schema": { "type": "integer", "format": "int32" } }, { "name": "page", "in": "query", "description": "Page in question", "schema": { "type": "integer", "format": "int32" } }, { "name": "apiKey", "in": "query", "description": "User's API Key for authentication", "schema": { "type": "string" } }, { "name": "extractPdf", "in": "query", "description": "Should Kavita extract pdf into images. Defaults to false.", "schema": { "type": "boolean", "default": false } } ], "responses": { "200": { "description": "OK" } } } }, "/api/Reader/thumbnail": { "get": { "tags": [ "Reader" ], "summary": "Returns a thumbnail for the given page number", "parameters": [ { "name": "chapterId", "in": "query", "description": "", "schema": { "type": "integer", "format": "int32" } }, { "name": "pageNum", "in": "query", "description": "", "schema": { "type": "integer", "format": "int32" } }, { "name": "apiKey", "in": "query", "description": "", "schema": { "type": "string" } } ], "responses": { "200": { "description": "OK" } } } }, "/api/Reader/bookmark-image": { "get": { "tags": [ "Reader" ], "summary": "Returns an image for a given bookmark series. Side effect: This will cache the bookmark images for reading.", "description": "We must use api key as bookmarks could be leaked to other users via the API", "parameters": [ { "name": "seriesId", "in": "query", "description": "", "schema": { "type": "integer", "format": "int32" } }, { "name": "apiKey", "in": "query", "description": "Api key for the user the bookmarks are on", "schema": { "type": "string" } }, { "name": "page", "in": "query", "description": "", "schema": { "type": "integer", "format": "int32" } } ], "responses": { "200": { "description": "OK" } } } }, "/api/Reader/file-dimensions": { "get": { "tags": [ "Reader" ], "summary": "Returns the file dimensions for all pages in a chapter. If the underlying chapter is PDF, use extractPDF to unpack as images.", "description": "This has a side effect of caching the images.\n This will only be populated on archive filetypes and not in bookmark mode", "parameters": [ { "name": "chapterId", "in": "query", "description": "", "schema": { "type": "integer", "format": "int32" } }, { "name": "extractPdf", "in": "query", "description": "", "schema": { "type": "boolean", "default": false } } ], "responses": { "200": { "description": "OK", "content": { "text/plain": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/FileDimensionDto" } } }, "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/FileDimensionDto" } } }, "text/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/FileDimensionDto" } } } } } } } }, "/api/Reader/chapter-info": { "get": { "tags": [ "Reader" ], "summary": "Returns various information about a Chapter. Side effect: This will cache the chapter images for reading.", "description": "This is generally the first call when attempting to read to allow pre-generation of assets needed for reading", "parameters": [ { "name": "chapterId", "in": "query", "description": "", "schema": { "type": "integer", "format": "int32" } }, { "name": "extractPdf", "in": "query", "description": "Should Kavita extract pdf into images. Defaults to false.", "schema": { "type": "boolean", "default": false } }, { "name": "includeDimensions", "in": "query", "description": "Include file dimensions. Only useful for image-based reading", "schema": { "type": "boolean", "default": false } } ], "responses": { "200": { "description": "OK", "content": { "text/plain": { "schema": { "$ref": "#/components/schemas/ChapterInfoDto" } }, "application/json": { "schema": { "$ref": "#/components/schemas/ChapterInfoDto" } }, "text/json": { "schema": { "$ref": "#/components/schemas/ChapterInfoDto" } } } } } } }, "/api/Reader/bookmark-info": { "get": { "tags": [ "Reader" ], "summary": "Returns various information about all bookmark files for a Series. Side effect: This will cache the bookmark images for reading.", "parameters": [ { "name": "seriesId", "in": "query", "description": "Series Id for all bookmarks", "schema": { "type": "integer", "format": "int32" } }, { "name": "includeDimensions", "in": "query", "description": "Include file dimensions (extra I/O). Defaults to true.", "schema": { "type": "boolean", "default": true } } ], "responses": { "200": { "description": "OK", "content": { "text/plain": { "schema": { "$ref": "#/components/schemas/BookmarkInfoDto" } }, "application/json": { "schema": { "$ref": "#/components/schemas/BookmarkInfoDto" } }, "text/json": { "schema": { "$ref": "#/components/schemas/BookmarkInfoDto" } } } } } } }, "/api/Reader/mark-chapter-read": { "post": { "tags": [ "Reader" ], "summary": "Mark a single chapter as read", "requestBody": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/MarkChapterReadDto" } }, "text/json": { "schema": { "$ref": "#/components/schemas/MarkChapterReadDto" } }, "application/*+json": { "schema": { "$ref": "#/components/schemas/MarkChapterReadDto" } } } }, "responses": { "200": { "description": "OK" } } } }, "/api/Reader/mark-read": { "post": { "tags": [ "Reader" ], "summary": "Marks a Series as read. All volumes and chapters will be marked as read during this process.", "requestBody": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/MarkReadDto" } }, "text/json": { "schema": { "$ref": "#/components/schemas/MarkReadDto" } }, "application/*+json": { "schema": { "$ref": "#/components/schemas/MarkReadDto" } } } }, "responses": { "200": { "description": "OK" } } } }, "/api/Reader/mark-unread": { "post": { "tags": [ "Reader" ], "summary": "Marks a Series as Unread. All volumes and chapters will be marked as unread during this process.", "requestBody": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/MarkReadDto" } }, "text/json": { "schema": { "$ref": "#/components/schemas/MarkReadDto" } }, "application/*+json": { "schema": { "$ref": "#/components/schemas/MarkReadDto" } } } }, "responses": { "200": { "description": "OK" } } } }, "/api/Reader/mark-volume-unread": { "post": { "tags": [ "Reader" ], "summary": "Marks all chapters within a volume as unread", "requestBody": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/MarkVolumeReadDto" } }, "text/json": { "schema": { "$ref": "#/components/schemas/MarkVolumeReadDto" } }, "application/*+json": { "schema": { "$ref": "#/components/schemas/MarkVolumeReadDto" } } } }, "responses": { "200": { "description": "OK" } } } }, "/api/Reader/mark-volume-read": { "post": { "tags": [ "Reader" ], "summary": "Marks all chapters within a volume as Read", "requestBody": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/MarkVolumeReadDto" } }, "text/json": { "schema": { "$ref": "#/components/schemas/MarkVolumeReadDto" } }, "application/*+json": { "schema": { "$ref": "#/components/schemas/MarkVolumeReadDto" } } } }, "responses": { "200": { "description": "OK" } } } }, "/api/Reader/mark-multiple-read": { "post": { "tags": [ "Reader" ], "summary": "Marks all chapters within a list of volumes as Read. All volumes must belong to the same Series.", "requestBody": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/MarkVolumesReadDto" } }, "text/json": { "schema": { "$ref": "#/components/schemas/MarkVolumesReadDto" } }, "application/*+json": { "schema": { "$ref": "#/components/schemas/MarkVolumesReadDto" } } } }, "responses": { "200": { "description": "OK" } } } }, "/api/Reader/mark-multiple-unread": { "post": { "tags": [ "Reader" ], "summary": "Marks all chapters within a list of volumes as Unread. All volumes must belong to the same Series.", "requestBody": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/MarkVolumesReadDto" } }, "text/json": { "schema": { "$ref": "#/components/schemas/MarkVolumesReadDto" } }, "application/*+json": { "schema": { "$ref": "#/components/schemas/MarkVolumesReadDto" } } } }, "responses": { "200": { "description": "OK" } } } }, "/api/Reader/mark-multiple-series-read": { "post": { "tags": [ "Reader" ], "summary": "Marks all chapters within a list of series as Read.", "requestBody": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/MarkMultipleSeriesAsReadDto" } }, "text/json": { "schema": { "$ref": "#/components/schemas/MarkMultipleSeriesAsReadDto" } }, "application/*+json": { "schema": { "$ref": "#/components/schemas/MarkMultipleSeriesAsReadDto" } } } }, "responses": { "200": { "description": "OK" } } } }, "/api/Reader/mark-multiple-series-unread": { "post": { "tags": [ "Reader" ], "summary": "Marks all chapters within a list of series as Unread.", "requestBody": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/MarkMultipleSeriesAsReadDto" } }, "text/json": { "schema": { "$ref": "#/components/schemas/MarkMultipleSeriesAsReadDto" } }, "application/*+json": { "schema": { "$ref": "#/components/schemas/MarkMultipleSeriesAsReadDto" } } } }, "responses": { "200": { "description": "OK" } } } }, "/api/Reader/get-progress": { "get": { "tags": [ "Reader" ], "summary": "Returns Progress (page number) for a chapter for the logged in user", "parameters": [ { "name": "chapterId", "in": "query", "description": "", "schema": { "type": "integer", "format": "int32" } } ], "responses": { "200": { "description": "OK", "content": { "text/plain": { "schema": { "$ref": "#/components/schemas/ProgressDto" } }, "application/json": { "schema": { "$ref": "#/components/schemas/ProgressDto" } }, "text/json": { "schema": { "$ref": "#/components/schemas/ProgressDto" } } } } } } }, "/api/Reader/progress": { "post": { "tags": [ "Reader" ], "summary": "Save page against Chapter for authenticated user", "requestBody": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ProgressDto" } }, "text/json": { "schema": { "$ref": "#/components/schemas/ProgressDto" } }, "application/*+json": { "schema": { "$ref": "#/components/schemas/ProgressDto" } } } }, "responses": { "200": { "description": "OK" } } } }, "/api/Reader/continue-point": { "get": { "tags": [ "Reader" ], "summary": "Continue point is the chapter which you should start reading again from. If there is no progress on a series, then the first chapter will be returned (non-special unless only specials).\nOtherwise, loop through the chapters and volumes in order to find the next chapter which has progress.", "parameters": [ { "name": "seriesId", "in": "query", "schema": { "type": "integer", "format": "int32" } } ], "responses": { "200": { "description": "OK", "content": { "text/plain": { "schema": { "$ref": "#/components/schemas/ChapterDto" } }, "application/json": { "schema": { "$ref": "#/components/schemas/ChapterDto" } }, "text/json": { "schema": { "$ref": "#/components/schemas/ChapterDto" } } } } } } }, "/api/Reader/has-progress": { "get": { "tags": [ "Reader" ], "summary": "Returns if the user has reading progress on the Series", "parameters": [ { "name": "seriesId", "in": "query", "description": "", "schema": { "type": "integer", "format": "int32" } } ], "responses": { "200": { "description": "OK", "content": { "text/plain": { "schema": { "type": "boolean" } }, "application/json": { "schema": { "type": "boolean" } }, "text/json": { "schema": { "type": "boolean" } } } } } } }, "/api/Reader/chapter-bookmarks": { "get": { "tags": [ "Reader" ], "summary": "Returns a list of bookmarked pages for a given Chapter", "parameters": [ { "name": "chapterId", "in": "query", "description": "", "schema": { "type": "integer", "format": "int32" } } ], "responses": { "200": { "description": "OK", "content": { "text/plain": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/BookmarkDto" } } }, "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/BookmarkDto" } } }, "text/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/BookmarkDto" } } } } } } } }, "/api/Reader/all-bookmarks": { "post": { "tags": [ "Reader" ], "summary": "Returns a list of all bookmarked pages for a User", "requestBody": { "description": "Only supports SeriesNameQuery", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/FilterV2Dto" } }, "text/json": { "schema": { "$ref": "#/components/schemas/FilterV2Dto" } }, "application/*+json": { "schema": { "$ref": "#/components/schemas/FilterV2Dto" } } } }, "responses": { "200": { "description": "OK", "content": { "text/plain": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/BookmarkDto" } } }, "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/BookmarkDto" } } }, "text/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/BookmarkDto" } } } } } } } }, "/api/Reader/remove-bookmarks": { "post": { "tags": [ "Reader" ], "summary": "Removes all bookmarks for all chapters linked to a Series", "requestBody": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/RemoveBookmarkForSeriesDto" } }, "text/json": { "schema": { "$ref": "#/components/schemas/RemoveBookmarkForSeriesDto" } }, "application/*+json": { "schema": { "$ref": "#/components/schemas/RemoveBookmarkForSeriesDto" } } } }, "responses": { "200": { "description": "OK" } } } }, "/api/Reader/bulk-remove-bookmarks": { "post": { "tags": [ "Reader" ], "summary": "Removes all bookmarks for all chapters linked to a Series", "requestBody": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/BulkRemoveBookmarkForSeriesDto" } }, "text/json": { "schema": { "$ref": "#/components/schemas/BulkRemoveBookmarkForSeriesDto" } }, "application/*+json": { "schema": { "$ref": "#/components/schemas/BulkRemoveBookmarkForSeriesDto" } } } }, "responses": { "200": { "description": "OK" } } } }, "/api/Reader/volume-bookmarks": { "get": { "tags": [ "Reader" ], "summary": "Returns all bookmarked pages for a given volume", "parameters": [ { "name": "volumeId", "in": "query", "description": "", "schema": { "type": "integer", "format": "int32" } } ], "responses": { "200": { "description": "OK", "content": { "text/plain": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/BookmarkDto" } } }, "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/BookmarkDto" } } }, "text/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/BookmarkDto" } } } } } } } }, "/api/Reader/series-bookmarks": { "get": { "tags": [ "Reader" ], "summary": "Returns all bookmarked pages for a given series", "parameters": [ { "name": "seriesId", "in": "query", "description": "", "schema": { "type": "integer", "format": "int32" } } ], "responses": { "200": { "description": "OK", "content": { "text/plain": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/BookmarkDto" } } }, "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/BookmarkDto" } } }, "text/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/BookmarkDto" } } } } } } } }, "/api/Reader/bookmark": { "post": { "tags": [ "Reader" ], "summary": "Bookmarks a page against a Chapter", "description": "This has a side effect of caching the chapter files to disk", "requestBody": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/BookmarkDto" } }, "text/json": { "schema": { "$ref": "#/components/schemas/BookmarkDto" } }, "application/*+json": { "schema": { "$ref": "#/components/schemas/BookmarkDto" } } } }, "responses": { "200": { "description": "OK" } } } }, "/api/Reader/unbookmark": { "post": { "tags": [ "Reader" ], "summary": "Removes a bookmarked page for a Chapter", "requestBody": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/BookmarkDto" } }, "text/json": { "schema": { "$ref": "#/components/schemas/BookmarkDto" } }, "application/*+json": { "schema": { "$ref": "#/components/schemas/BookmarkDto" } } } }, "responses": { "200": { "description": "OK" } } } }, "/api/Reader/next-chapter": { "get": { "tags": [ "Reader" ], "summary": "Returns the next logical chapter from the series.", "parameters": [ { "name": "seriesId", "in": "query", "description": "", "schema": { "type": "integer", "format": "int32" } }, { "name": "volumeId", "in": "query", "description": "", "schema": { "type": "integer", "format": "int32" } }, { "name": "currentChapterId", "in": "query", "description": "", "schema": { "type": "integer", "format": "int32" } } ], "responses": { "200": { "description": "OK", "content": { "text/plain": { "schema": { "type": "integer", "format": "int32" } }, "application/json": { "schema": { "type": "integer", "format": "int32" } }, "text/json": { "schema": { "type": "integer", "format": "int32" } } } } } } }, "/api/Reader/prev-chapter": { "get": { "tags": [ "Reader" ], "summary": "Returns the previous logical chapter from the series.", "parameters": [ { "name": "seriesId", "in": "query", "description": "", "schema": { "type": "integer", "format": "int32" } }, { "name": "volumeId", "in": "query", "description": "", "schema": { "type": "integer", "format": "int32" } }, { "name": "currentChapterId", "in": "query", "description": "", "schema": { "type": "integer", "format": "int32" } } ], "responses": { "200": { "description": "OK", "content": { "text/plain": { "schema": { "type": "integer", "format": "int32" } }, "application/json": { "schema": { "type": "integer", "format": "int32" } }, "text/json": { "schema": { "type": "integer", "format": "int32" } } } } } } }, "/api/Reader/time-left": { "get": { "tags": [ "Reader" ], "summary": "For the current user, returns an estimate on how long it would take to finish reading the series.", "description": "For Epubs, this does not check words inside a chapter due to overhead so may not work in all cases.", "parameters": [ { "name": "seriesId", "in": "query", "description": "", "schema": { "type": "integer", "format": "int32" } } ], "responses": { "200": { "description": "OK", "content": { "text/plain": { "schema": { "$ref": "#/components/schemas/HourEstimateRangeDto" } }, "application/json": { "schema": { "$ref": "#/components/schemas/HourEstimateRangeDto" } }, "text/json": { "schema": { "$ref": "#/components/schemas/HourEstimateRangeDto" } } } } } } }, "/api/Reader/time-left-for-chapter": { "get": { "tags": [ "Reader" ], "summary": "For the current user, returns an estimate on how long it would take to finish reading the chapter.", "description": "For Epubs, this does not check words inside a chapter due to overhead so may not work in all cases.", "parameters": [ { "name": "seriesId", "in": "query", "description": "", "schema": { "type": "integer", "format": "int32" } }, { "name": "chapterId", "in": "query", "description": "", "schema": { "type": "integer", "format": "int32" } } ], "responses": { "200": { "description": "OK", "content": { "text/plain": { "schema": { "$ref": "#/components/schemas/HourEstimateRangeDto" } }, "application/json": { "schema": { "$ref": "#/components/schemas/HourEstimateRangeDto" } }, "text/json": { "schema": { "$ref": "#/components/schemas/HourEstimateRangeDto" } } } } } } }, "/api/Reader/ptoc": { "get": { "tags": [ "Reader" ], "summary": "Returns the user's personal table of contents for the given chapter", "parameters": [ { "name": "chapterId", "in": "query", "description": "", "schema": { "type": "integer", "format": "int32" } } ], "responses": { "200": { "description": "OK", "content": { "text/plain": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/PersonalToCDto" } } }, "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/PersonalToCDto" } } }, "text/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/PersonalToCDto" } } } } } } }, "delete": { "tags": [ "Reader" ], "summary": "Deletes the user's personal table of content for the given chapter", "parameters": [ { "name": "chapterId", "in": "query", "description": "", "schema": { "type": "integer", "format": "int32" } }, { "name": "pageNum", "in": "query", "description": "", "schema": { "type": "integer", "format": "int32" } }, { "name": "title", "in": "query", "description": "", "schema": { "type": "string" } } ], "responses": { "200": { "description": "OK" } } } }, "/api/Reader/create-ptoc": { "post": { "tags": [ "Reader" ], "summary": "Create a new personal table of content entry for a given chapter", "description": "The title and page number must be unique to that book", "requestBody": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CreatePersonalToCDto" } }, "text/json": { "schema": { "$ref": "#/components/schemas/CreatePersonalToCDto" } }, "application/*+json": { "schema": { "$ref": "#/components/schemas/CreatePersonalToCDto" } } } }, "responses": { "200": { "description": "OK" } } } }, "/api/Reader/prompt-reread/series": { "get": { "tags": [ "Reader" ], "summary": "Check if we should prompt the user for rereads for the given series", "parameters": [ { "name": "seriesId", "in": "query", "description": "", "schema": { "type": "integer", "format": "int32" } }, { "name": "libraryId", "in": "query", "description": "", "schema": { "type": "integer", "format": "int32" } } ], "responses": { "200": { "description": "OK", "content": { "text/plain": { "schema": { "$ref": "#/components/schemas/RereadDto" } }, "application/json": { "schema": { "$ref": "#/components/schemas/RereadDto" } }, "text/json": { "schema": { "$ref": "#/components/schemas/RereadDto" } } } } } } }, "/api/Reader/prompt-reread/volume": { "get": { "tags": [ "Reader" ], "summary": "Check if we should prompt the user for rereads for the given volume", "parameters": [ { "name": "libraryId", "in": "query", "description": "", "schema": { "type": "integer", "format": "int32" } }, { "name": "seriesId", "in": "query", "description": "", "schema": { "type": "integer", "format": "int32" } }, { "name": "volumeId", "in": "query", "description": "", "schema": { "type": "integer", "format": "int32" } } ], "responses": { "200": { "description": "OK", "content": { "text/plain": { "schema": { "$ref": "#/components/schemas/RereadDto" } }, "application/json": { "schema": { "$ref": "#/components/schemas/RereadDto" } }, "text/json": { "schema": { "$ref": "#/components/schemas/RereadDto" } } } } } } }, "/api/Reader/prompt-reread/chapter": { "get": { "tags": [ "Reader" ], "summary": "Check if we should prompt the user for rereads for the given chapter", "parameters": [ { "name": "libraryId", "in": "query", "description": "", "schema": { "type": "integer", "format": "int32" } }, { "name": "seriesId", "in": "query", "description": "", "schema": { "type": "integer", "format": "int32" } }, { "name": "chapterId", "in": "query", "description": "", "schema": { "type": "integer", "format": "int32" } } ], "responses": { "200": { "description": "OK", "content": { "text/plain": { "schema": { "$ref": "#/components/schemas/RereadDto" } }, "application/json": { "schema": { "$ref": "#/components/schemas/RereadDto" } }, "text/json": { "schema": { "$ref": "#/components/schemas/RereadDto" } } } } } } }, "/api/Reader/first-progress-date": { "get": { "tags": [ "Reader" ], "parameters": [ { "name": "userId", "in": "query", "schema": { "type": "integer", "format": "int32" } } ], "responses": { "200": { "description": "OK", "content": { "text/plain": { "schema": { "type": "string", "format": "date-time" } }, "application/json": { "schema": { "type": "string", "format": "date-time" } }, "text/json": { "schema": { "type": "string", "format": "date-time" } } } } } } }, "/api/ReadingList": { "get": { "tags": [ "ReadingList" ], "summary": "Fetches a single Reading List", "parameters": [ { "name": "readingListId", "in": "query", "description": "", "schema": { "type": "integer", "format": "int32" } } ], "responses": { "200": { "description": "OK", "content": { "text/plain": { "schema": { "$ref": "#/components/schemas/ReadingListDto" } }, "application/json": { "schema": { "$ref": "#/components/schemas/ReadingListDto" } }, "text/json": { "schema": { "$ref": "#/components/schemas/ReadingListDto" } } } } } }, "delete": { "tags": [ "ReadingList" ], "summary": "Deletes a reading list", "parameters": [ { "name": "readingListId", "in": "query", "description": "", "schema": { "type": "integer", "format": "int32" } } ], "responses": { "200": { "description": "OK" } } } }, "/api/ReadingList/lists": { "post": { "tags": [ "ReadingList" ], "summary": "Returns reading lists (paginated) for a given user.", "parameters": [ { "name": "PageNumber", "in": "query", "schema": { "type": "integer", "format": "int32" } }, { "name": "PageSize", "in": "query", "schema": { "type": "integer", "format": "int32" } }, { "name": "includePromoted", "in": "query", "description": "Include Promoted Reading Lists along with user's Reading Lists. Defaults to true", "schema": { "type": "boolean", "default": true } }, { "name": "sortByLastModified", "in": "query", "description": "Sort by last modified (most recent first) or by title (alphabetical)", "schema": { "type": "boolean", "default": false } } ], "responses": { "200": { "description": "OK", "content": { "text/plain": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/ReadingListDto" } } }, "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/ReadingListDto" } } }, "text/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/ReadingListDto" } } } } } } } }, "/api/ReadingList/lists-for-series": { "get": { "tags": [ "ReadingList" ], "summary": "Returns all Reading Lists the user has access to that the given series within it.", "parameters": [ { "name": "seriesId", "in": "query", "description": "", "schema": { "type": "integer", "format": "int32" } } ], "responses": { "200": { "description": "OK", "content": { "text/plain": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/ReadingListDto" } } }, "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/ReadingListDto" } } }, "text/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/ReadingListDto" } } } } } } } }, "/api/ReadingList/lists-for-chapter": { "get": { "tags": [ "ReadingList" ], "summary": "Returns all Reading Lists the user has access to that has the given chapter within it.", "parameters": [ { "name": "chapterId", "in": "query", "description": "", "schema": { "type": "integer", "format": "int32" } } ], "responses": { "200": { "description": "OK", "content": { "text/plain": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/ReadingListDto" } } }, "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/ReadingListDto" } } }, "text/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/ReadingListDto" } } } } } } } }, "/api/ReadingList/items": { "get": { "tags": [ "ReadingList" ], "summary": "Fetches all reading list items for a given list including rich metadata around series, volume, chapters, and progress", "description": "This call is expensive", "parameters": [ { "name": "readingListId", "in": "query", "description": "", "schema": { "type": "integer", "format": "int32" } } ], "responses": { "200": { "description": "OK", "content": { "text/plain": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/ReadingListItemDto" } } }, "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/ReadingListItemDto" } } }, "text/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/ReadingListItemDto" } } } } } } } }, "/api/ReadingList/update-position": { "post": { "tags": [ "ReadingList" ], "summary": "Updates an items position", "requestBody": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/UpdateReadingListPosition" } }, "text/json": { "schema": { "$ref": "#/components/schemas/UpdateReadingListPosition" } }, "application/*+json": { "schema": { "$ref": "#/components/schemas/UpdateReadingListPosition" } } } }, "responses": { "200": { "description": "OK" } } } }, "/api/ReadingList/delete-item": { "post": { "tags": [ "ReadingList" ], "summary": "Deletes a list item from the list. Item orders will update as a result.", "requestBody": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/UpdateReadingListPosition" } }, "text/json": { "schema": { "$ref": "#/components/schemas/UpdateReadingListPosition" } }, "application/*+json": { "schema": { "$ref": "#/components/schemas/UpdateReadingListPosition" } } } }, "responses": { "200": { "description": "OK" } } } }, "/api/ReadingList/remove-read": { "post": { "tags": [ "ReadingList" ], "summary": "Removes all entries that are fully read from the reading list", "parameters": [ { "name": "readingListId", "in": "query", "description": "", "schema": { "type": "integer", "format": "int32" } } ], "responses": { "200": { "description": "OK" } } } }, "/api/ReadingList/create": { "post": { "tags": [ "ReadingList" ], "summary": "Creates a new List with a unique title. Returns the new ReadingList back", "requestBody": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CreateReadingListDto" } }, "text/json": { "schema": { "$ref": "#/components/schemas/CreateReadingListDto" } }, "application/*+json": { "schema": { "$ref": "#/components/schemas/CreateReadingListDto" } } } }, "responses": { "200": { "description": "OK", "content": { "text/plain": { "schema": { "$ref": "#/components/schemas/ReadingListDto" } }, "application/json": { "schema": { "$ref": "#/components/schemas/ReadingListDto" } }, "text/json": { "schema": { "$ref": "#/components/schemas/ReadingListDto" } } } } } } }, "/api/ReadingList/update": { "post": { "tags": [ "ReadingList" ], "summary": "Update the properties (title, summary) of a reading list", "requestBody": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/UpdateReadingListDto" } }, "text/json": { "schema": { "$ref": "#/components/schemas/UpdateReadingListDto" } }, "application/*+json": { "schema": { "$ref": "#/components/schemas/UpdateReadingListDto" } } } }, "responses": { "200": { "description": "OK" } } } }, "/api/ReadingList/update-by-series": { "post": { "tags": [ "ReadingList" ], "summary": "Adds all chapters from a Series to a reading list", "requestBody": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/UpdateReadingListBySeriesDto" } }, "text/json": { "schema": { "$ref": "#/components/schemas/UpdateReadingListBySeriesDto" } }, "application/*+json": { "schema": { "$ref": "#/components/schemas/UpdateReadingListBySeriesDto" } } } }, "responses": { "200": { "description": "OK" } } } }, "/api/ReadingList/update-by-multiple": { "post": { "tags": [ "ReadingList" ], "summary": "Adds all chapters from a list of volumes and chapters to a reading list", "requestBody": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/UpdateReadingListByMultipleDto" } }, "text/json": { "schema": { "$ref": "#/components/schemas/UpdateReadingListByMultipleDto" } }, "application/*+json": { "schema": { "$ref": "#/components/schemas/UpdateReadingListByMultipleDto" } } } }, "responses": { "200": { "description": "OK" } } } }, "/api/ReadingList/update-by-multiple-series": { "post": { "tags": [ "ReadingList" ], "summary": "Adds all chapters from a list of series to a reading list", "requestBody": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/UpdateReadingListByMultipleSeriesDto" } }, "text/json": { "schema": { "$ref": "#/components/schemas/UpdateReadingListByMultipleSeriesDto" } }, "application/*+json": { "schema": { "$ref": "#/components/schemas/UpdateReadingListByMultipleSeriesDto" } } } }, "responses": { "200": { "description": "OK" } } } }, "/api/ReadingList/update-by-volume": { "post": { "tags": [ "ReadingList" ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/UpdateReadingListByVolumeDto" } }, "text/json": { "schema": { "$ref": "#/components/schemas/UpdateReadingListByVolumeDto" } }, "application/*+json": { "schema": { "$ref": "#/components/schemas/UpdateReadingListByVolumeDto" } } } }, "responses": { "200": { "description": "OK" } } } }, "/api/ReadingList/update-by-chapter": { "post": { "tags": [ "ReadingList" ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/UpdateReadingListByChapterDto" } }, "text/json": { "schema": { "$ref": "#/components/schemas/UpdateReadingListByChapterDto" } }, "application/*+json": { "schema": { "$ref": "#/components/schemas/UpdateReadingListByChapterDto" } } } }, "responses": { "200": { "description": "OK" } } } }, "/api/ReadingList/people": { "get": { "tags": [ "ReadingList" ], "summary": "Returns a list of a given role associated with the reading list", "parameters": [ { "name": "readingListId", "in": "query", "description": "", "schema": { "type": "integer", "format": "int32" } }, { "name": "role", "in": "query", "description": "PersonRole", "schema": { "enum": [ 1, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15 ], "type": "integer", "format": "int32" } } ], "responses": { "200": { "description": "OK", "content": { "text/plain": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/PersonDto" } } }, "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/PersonDto" } } }, "text/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/PersonDto" } } } } } } } }, "/api/ReadingList/all-people": { "get": { "tags": [ "ReadingList" ], "summary": "Returns all people in given roles for a reading list", "parameters": [ { "name": "readingListId", "in": "query", "description": "", "schema": { "type": "integer", "format": "int32" } } ], "responses": { "200": { "description": "OK", "content": { "text/plain": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/PersonDto" } } }, "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/PersonDto" } } }, "text/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/PersonDto" } } } } } } } }, "/api/ReadingList/next-chapter": { "get": { "tags": [ "ReadingList" ], "summary": "Returns the next chapter within the reading list", "parameters": [ { "name": "currentChapterId", "in": "query", "description": "", "schema": { "type": "integer", "format": "int32" } }, { "name": "readingListId", "in": "query", "description": "", "schema": { "type": "integer", "format": "int32" } } ], "responses": { "200": { "description": "OK", "content": { "text/plain": { "schema": { "type": "integer", "format": "int32" } }, "application/json": { "schema": { "type": "integer", "format": "int32" } }, "text/json": { "schema": { "type": "integer", "format": "int32" } } } } } } }, "/api/ReadingList/prev-chapter": { "get": { "tags": [ "ReadingList" ], "summary": "Returns the prev chapter within the reading list", "parameters": [ { "name": "currentChapterId", "in": "query", "description": "", "schema": { "type": "integer", "format": "int32" } }, { "name": "readingListId", "in": "query", "description": "", "schema": { "type": "integer", "format": "int32" } } ], "responses": { "200": { "description": "OK", "content": { "text/plain": { "schema": { "type": "integer", "format": "int32" } }, "application/json": { "schema": { "type": "integer", "format": "int32" } }, "text/json": { "schema": { "type": "integer", "format": "int32" } } } } } } }, "/api/ReadingList/name-exists": { "get": { "tags": [ "ReadingList" ], "summary": "Checks if a reading list exists with the name", "parameters": [ { "name": "name", "in": "query", "description": "If empty or null, will return true as that is invalid", "schema": { "type": "string" } } ], "responses": { "200": { "description": "OK", "content": { "text/plain": { "schema": { "type": "boolean" } }, "application/json": { "schema": { "type": "boolean" } }, "text/json": { "schema": { "type": "boolean" } } } } } } }, "/api/ReadingList/promote-multiple": { "post": { "tags": [ "ReadingList" ], "summary": "Promote/UnPromote multiple reading lists in one go. Will only update the authenticated user's reading lists and will only work if the user has promotion role", "requestBody": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PromoteReadingListsDto" } }, "text/json": { "schema": { "$ref": "#/components/schemas/PromoteReadingListsDto" } }, "application/*+json": { "schema": { "$ref": "#/components/schemas/PromoteReadingListsDto" } } } }, "responses": { "200": { "description": "OK" } } } }, "/api/ReadingList/delete-multiple": { "post": { "tags": [ "ReadingList" ], "summary": "Delete multiple reading lists in one go", "requestBody": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/DeleteReadingListsDto" } }, "text/json": { "schema": { "$ref": "#/components/schemas/DeleteReadingListsDto" } }, "application/*+json": { "schema": { "$ref": "#/components/schemas/DeleteReadingListsDto" } } } }, "responses": { "200": { "description": "OK" } } } }, "/api/ReadingList/info": { "get": { "tags": [ "ReadingList" ], "summary": "Returns random information about a Reading List", "parameters": [ { "name": "readingListId", "in": "query", "description": "", "schema": { "type": "integer", "format": "int32" } } ], "responses": { "200": { "description": "OK", "content": { "text/plain": { "schema": { "$ref": "#/components/schemas/ReadingListInfoDto" } }, "application/json": { "schema": { "$ref": "#/components/schemas/ReadingListInfoDto" } }, "text/json": { "schema": { "$ref": "#/components/schemas/ReadingListInfoDto" } } } } } } }, "/api/ReadingList/export-as-cbl": { "post": { "tags": [ "ReadingList" ], "summary": "Export a Reading List to CBL format", "parameters": [ { "name": "readingListId", "in": "query", "description": "", "schema": { "type": "integer", "format": "int32" } }, { "name": "asV2", "in": "query", "description": "", "schema": { "type": "boolean", "default": false } } ], "responses": { "200": { "description": "OK" } } } }, "/api/reading-profile/all": { "get": { "tags": [ "ReadingProfile" ], "summary": "Gets all non-implicit reading profiles for a user", "responses": { "200": { "description": "OK", "content": { "text/plain": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/UserReadingProfileDto" } } }, "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/UserReadingProfileDto" } } }, "text/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/UserReadingProfileDto" } } } } } } } }, "/api/reading-profile/{libraryId}/{seriesId}": { "get": { "tags": [ "ReadingProfile" ], "summary": "Returns the ReadingProfile that should be applied to the given series, walks up the tree.\nSeries -> Library -> Default", "parameters": [ { "name": "libraryId", "in": "path", "description": "", "required": true, "schema": { "type": "integer", "format": "int32" } }, { "name": "seriesId", "in": "path", "description": "", "required": true, "schema": { "type": "integer", "format": "int32" } }, { "name": "skipImplicit", "in": "query", "description": "", "schema": { "type": "boolean" } }, { "name": "deviceId", "in": "query", "description": "Defaults to currently active device", "schema": { "type": "integer", "format": "int32" } } ], "responses": { "200": { "description": "OK", "content": { "text/plain": { "schema": { "$ref": "#/components/schemas/UserReadingProfileDto" } }, "application/json": { "schema": { "$ref": "#/components/schemas/UserReadingProfileDto" } }, "text/json": { "schema": { "$ref": "#/components/schemas/UserReadingProfileDto" } } } } } } }, "/api/reading-profile/series": { "get": { "tags": [ "ReadingProfile" ], "summary": "Returns all Reading Profiles bound to a series", "parameters": [ { "name": "seriesId", "in": "query", "description": "", "schema": { "type": "integer", "format": "int32" } } ], "responses": { "200": { "description": "OK", "content": { "text/plain": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/UserReadingProfileDto" } } }, "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/UserReadingProfileDto" } } }, "text/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/UserReadingProfileDto" } } } } } } }, "post": { "tags": [ "ReadingProfile" ], "summary": "Update the implicit reading profile for a series, creates one if none exists", "description": "Any modification to the reader settings during reading will create an implicit profile. Use \"update-parent\" to save to the bound series profile.", "parameters": [ { "name": "libraryId", "in": "query", "description": "", "schema": { "type": "integer", "format": "int32" } }, { "name": "seriesId", "in": "query", "description": "", "schema": { "type": "integer", "format": "int32" } }, { "name": "deviceId", "in": "query", "description": "Defaults to the currently active device", "schema": { "type": "integer", "format": "int32" } } ], "requestBody": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/UserReadingProfileDto" } }, "text/json": { "schema": { "$ref": "#/components/schemas/UserReadingProfileDto" } }, "application/*+json": { "schema": { "$ref": "#/components/schemas/UserReadingProfileDto" } } } }, "responses": { "200": { "description": "OK", "content": { "text/plain": { "schema": { "$ref": "#/components/schemas/UserReadingProfileDto" } }, "application/json": { "schema": { "$ref": "#/components/schemas/UserReadingProfileDto" } }, "text/json": { "schema": { "$ref": "#/components/schemas/UserReadingProfileDto" } } } } } } }, "/api/reading-profile/library": { "get": { "tags": [ "ReadingProfile" ], "summary": "Returns all the Reading rofiles bound to the library", "parameters": [ { "name": "libraryId", "in": "query", "description": "", "schema": { "type": "integer", "format": "int32" } } ], "responses": { "200": { "description": "OK", "content": { "text/plain": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/UserReadingProfileDto" } } }, "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/UserReadingProfileDto" } } }, "text/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/UserReadingProfileDto" } } } } } } } }, "/api/reading-profile/create": { "post": { "tags": [ "ReadingProfile" ], "summary": "Creates a new reading profile for the current user", "requestBody": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/UserReadingProfileDto" } }, "text/json": { "schema": { "$ref": "#/components/schemas/UserReadingProfileDto" } }, "application/*+json": { "schema": { "$ref": "#/components/schemas/UserReadingProfileDto" } } } }, "responses": { "200": { "description": "OK", "content": { "text/plain": { "schema": { "$ref": "#/components/schemas/UserReadingProfileDto" } }, "application/json": { "schema": { "$ref": "#/components/schemas/UserReadingProfileDto" } }, "text/json": { "schema": { "$ref": "#/components/schemas/UserReadingProfileDto" } } } } } } }, "/api/reading-profile/promote": { "post": { "tags": [ "ReadingProfile" ], "summary": "Promotes the implicit profile to a user profile. Removes the series from other profiles", "parameters": [ { "name": "profileId", "in": "query", "description": "", "schema": { "type": "integer", "format": "int32" } }, { "name": "deviceId", "in": "query", "description": "Defaults to the currently active device", "schema": { "type": "integer", "format": "int32" } } ], "responses": { "200": { "description": "OK", "content": { "text/plain": { "schema": { "$ref": "#/components/schemas/UserReadingProfileDto" } }, "application/json": { "schema": { "$ref": "#/components/schemas/UserReadingProfileDto" } }, "text/json": { "schema": { "$ref": "#/components/schemas/UserReadingProfileDto" } } } } } } }, "/api/reading-profile/update-parent": { "post": { "tags": [ "ReadingProfile" ], "summary": "Updates the non-implicit reading profile for the given series, and removes implicit profiles", "parameters": [ { "name": "libraryId", "in": "query", "description": "", "schema": { "type": "integer", "format": "int32" } }, { "name": "seriesId", "in": "query", "description": "", "schema": { "type": "integer", "format": "int32" } }, { "name": "deviceId", "in": "query", "description": "Defaults to currently active device", "schema": { "type": "integer", "format": "int32" } } ], "requestBody": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/UserReadingProfileDto" } }, "text/json": { "schema": { "$ref": "#/components/schemas/UserReadingProfileDto" } }, "application/*+json": { "schema": { "$ref": "#/components/schemas/UserReadingProfileDto" } } } }, "responses": { "200": { "description": "OK", "content": { "text/plain": { "schema": { "$ref": "#/components/schemas/UserReadingProfileDto" } }, "application/json": { "schema": { "$ref": "#/components/schemas/UserReadingProfileDto" } }, "text/json": { "schema": { "$ref": "#/components/schemas/UserReadingProfileDto" } } } } } } }, "/api/reading-profile": { "post": { "tags": [ "ReadingProfile" ], "summary": "Updates the given reading profile, must belong to the current user", "description": "This does not update connected series and libraries.", "requestBody": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/UserReadingProfileDto" } }, "text/json": { "schema": { "$ref": "#/components/schemas/UserReadingProfileDto" } }, "application/*+json": { "schema": { "$ref": "#/components/schemas/UserReadingProfileDto" } } } }, "responses": { "200": { "description": "OK", "content": { "text/plain": { "schema": { "$ref": "#/components/schemas/UserReadingProfileDto" } }, "application/json": { "schema": { "$ref": "#/components/schemas/UserReadingProfileDto" } }, "text/json": { "schema": { "$ref": "#/components/schemas/UserReadingProfileDto" } } } } } }, "delete": { "tags": [ "ReadingProfile" ], "summary": "Deletes the given profile, requires the profile to belong to the logged-in user", "parameters": [ { "name": "profileId", "in": "query", "description": "", "schema": { "type": "integer", "format": "int32" } } ], "responses": { "200": { "description": "OK" } } } }, "/api/reading-profile/series/{seriesId}": { "post": { "tags": [ "ReadingProfile" ], "summary": "Sets the reading profile for a given series, removes the old one", "parameters": [ { "name": "seriesId", "in": "path", "description": "", "required": true, "schema": { "type": "integer", "format": "int32" } } ], "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" } } }, "delete": { "tags": [ "ReadingProfile" ], "summary": "Clears the reading profile for the given series for the currently logged-in user", "parameters": [ { "name": "seriesId", "in": "path", "description": "", "required": true, "schema": { "type": "integer", "format": "int32" } } ], "responses": { "200": { "description": "OK" } } } }, "/api/reading-profile/library/{libraryId}": { "post": { "tags": [ "ReadingProfile" ], "summary": "Sets the reading profile for a given library, removes the old one", "parameters": [ { "name": "libraryId", "in": "path", "description": "", "required": true, "schema": { "type": "integer", "format": "int32" } } ], "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" } } }, "delete": { "tags": [ "ReadingProfile" ], "summary": "Clears the reading profile for the given library for the currently logged-in user", "parameters": [ { "name": "libraryId", "in": "path", "description": "", "required": true, "schema": { "type": "integer", "format": "int32" } } ], "responses": { "200": { "description": "OK" } } } }, "/api/reading-profile/bulk": { "post": { "tags": [ "ReadingProfile" ], "summary": "Assigns the reading profile to all passes series, and deletes their implicit profiles", "requestBody": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/BulkSetSeriesProfiles" } }, "text/json": { "schema": { "$ref": "#/components/schemas/BulkSetSeriesProfiles" } }, "application/*+json": { "schema": { "$ref": "#/components/schemas/BulkSetSeriesProfiles" } } } }, "responses": { "200": { "description": "OK" } } } }, "/api/reading-profile/set-devices": { "post": { "tags": [ "ReadingProfile" ], "summary": "Set the assigned devices for a reading profile", "parameters": [ { "name": "profileId", "in": "query", "description": "", "schema": { "type": "integer", "format": "int32" } } ], "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/Review/series": { "post": { "tags": [ "Review" ], "summary": "Updates the user's review for a given series", "requestBody": { "description": "", "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 series", "parameters": [ { "name": "seriesId", "in": "query", "schema": { "type": "integer", "format": "int32" } } ], "responses": { "200": { "description": "OK" } } } }, "/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/Review/all": { "get": { "tags": [ "Review" ], "summary": "Returns all reviews for the user. If you are authenticated as the user, will always return data, regardless of ShareReviews setting", "parameters": [ { "name": "userId", "in": "query", "description": "User to load, if your own, will bypass RBS and ShareReviews restrictions", "schema": { "type": "integer", "format": "int32" } }, { "name": "rating", "in": "query", "description": "Null to ignore filtering. >= rating", "schema": { "type": "number", "format": "float" } }, { "name": "filterQuery", "in": "query", "description": "Null to ignore filtering on Series name", "schema": { "type": "string" } } ], "responses": { "200": { "description": "OK", "content": { "text/plain": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/UserReviewExtendedDto" } } }, "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/UserReviewExtendedDto" } } }, "text/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/UserReviewExtendedDto" } } } } } } } }, "/api/Scrobbling/anilist-token": { "get": { "tags": [ "Scrobbling" ], "summary": "Get the current user's AniList token", "responses": { "200": { "description": "OK", "content": { "text/plain": { "schema": { "type": "string" } }, "application/json": { "schema": { "type": "string" } }, "text/json": { "schema": { "type": "string" } } } } } } }, "/api/Scrobbling/mal-token": { "get": { "tags": [ "Scrobbling" ], "summary": "Get the current user's MAL token and username", "responses": { "200": { "description": "OK", "content": { "text/plain": { "schema": { "$ref": "#/components/schemas/MalUserInfoDto" } }, "application/json": { "schema": { "$ref": "#/components/schemas/MalUserInfoDto" } }, "text/json": { "schema": { "$ref": "#/components/schemas/MalUserInfoDto" } } } } } } }, "/api/Scrobbling/update-anilist-token": { "post": { "tags": [ "Scrobbling" ], "summary": "Update the current user's AniList token", "requestBody": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/AniListUpdateDto" } }, "text/json": { "schema": { "$ref": "#/components/schemas/AniListUpdateDto" } }, "application/*+json": { "schema": { "$ref": "#/components/schemas/AniListUpdateDto" } } } }, "responses": { "200": { "description": "OK", "content": { "text/plain": { "schema": { "type": "boolean" } }, "application/json": { "schema": { "type": "boolean" } }, "text/json": { "schema": { "type": "boolean" } } } } } } }, "/api/Scrobbling/update-mal-token": { "post": { "tags": [ "Scrobbling" ], "summary": "Update the current user's MAL token (Client ID) and Username", "requestBody": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/MalUserInfoDto" } }, "text/json": { "schema": { "$ref": "#/components/schemas/MalUserInfoDto" } }, "application/*+json": { "schema": { "$ref": "#/components/schemas/MalUserInfoDto" } } } }, "responses": { "200": { "description": "OK", "content": { "text/plain": { "schema": { "type": "boolean" } }, "application/json": { "schema": { "type": "boolean" } }, "text/json": { "schema": { "type": "boolean" } } } } } } }, "/api/Scrobbling/generate-scrobble-events": { "post": { "tags": [ "Scrobbling" ], "summary": "When a user request to generate scrobble events from history. Should only be ran once per user.", "responses": { "200": { "description": "OK" } } } }, "/api/Scrobbling/token-expired": { "get": { "tags": [ "Scrobbling" ], "summary": "Checks if the current Scrobbling token for the given Provider has expired for the current user", "parameters": [ { "name": "provider", "in": "query", "description": "", "schema": { "enum": [ 0, 1, 2, 3, 4, 5 ], "type": "integer", "format": "int32" } } ], "responses": { "200": { "description": "OK", "content": { "text/plain": { "schema": { "type": "boolean" } }, "application/json": { "schema": { "type": "boolean" } }, "text/json": { "schema": { "type": "boolean" } } } } } } }, "/api/Scrobbling/scrobble-errors": { "get": { "tags": [ "Scrobbling" ], "summary": "Returns all scrobbling errors for the instance", "description": "Requires admin", "responses": { "200": { "description": "OK", "content": { "text/plain": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/ScrobbleErrorDto" } } }, "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/ScrobbleErrorDto" } } }, "text/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/ScrobbleErrorDto" } } } } } } } }, "/api/Scrobbling/clear-errors": { "post": { "tags": [ "Scrobbling" ], "summary": "Clears the scrobbling errors table", "responses": { "200": { "description": "OK" } } } }, "/api/Scrobbling/scrobble-events": { "post": { "tags": [ "Scrobbling" ], "summary": "Returns the scrobbling history for the user", "description": "User must have a valid license", "parameters": [ { "name": "PageNumber", "in": "query", "schema": { "type": "integer", "format": "int32" } }, { "name": "PageSize", "in": "query", "schema": { "type": "integer", "format": "int32" } } ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ScrobbleEventFilter" } }, "text/json": { "schema": { "$ref": "#/components/schemas/ScrobbleEventFilter" } }, "application/*+json": { "schema": { "$ref": "#/components/schemas/ScrobbleEventFilter" } } } }, "responses": { "200": { "description": "OK", "content": { "text/plain": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/ScrobbleEventDto" } } }, "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/ScrobbleEventDto" } } }, "text/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/ScrobbleEventDto" } } } } } } } }, "/api/Scrobbling/holds": { "get": { "tags": [ "Scrobbling" ], "summary": "Returns all scrobble holds for the current user", "responses": { "200": { "description": "OK", "content": { "text/plain": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/ScrobbleHoldDto" } } }, "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/ScrobbleHoldDto" } } }, "text/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/ScrobbleHoldDto" } } } } } } } }, "/api/Scrobbling/has-hold": { "get": { "tags": [ "Scrobbling" ], "summary": "If there is an active hold on the series", "parameters": [ { "name": "seriesId", "in": "query", "description": "", "schema": { "type": "integer", "format": "int32" } } ], "responses": { "200": { "description": "OK", "content": { "text/plain": { "schema": { "type": "boolean" } }, "application/json": { "schema": { "type": "boolean" } }, "text/json": { "schema": { "type": "boolean" } } } } } } }, "/api/Scrobbling/library-allows-scrobbling": { "get": { "tags": [ "Scrobbling" ], "summary": "Does the library the series is in allow scrobbling?", "parameters": [ { "name": "seriesId", "in": "query", "description": "", "schema": { "type": "integer", "format": "int32" } } ], "responses": { "200": { "description": "OK", "content": { "text/plain": { "schema": { "type": "boolean" } }, "application/json": { "schema": { "type": "boolean" } }, "text/json": { "schema": { "type": "boolean" } } } } } } }, "/api/Scrobbling/add-hold": { "post": { "tags": [ "Scrobbling" ], "summary": "Adds a hold against the Series for user's scrobbling", "parameters": [ { "name": "seriesId", "in": "query", "description": "", "schema": { "type": "integer", "format": "int32" } } ], "responses": { "200": { "description": "OK" } } } }, "/api/Scrobbling/remove-hold": { "delete": { "tags": [ "Scrobbling" ], "summary": "Remove a hold against the Series for user's scrobbling", "parameters": [ { "name": "seriesId", "in": "query", "description": "", "schema": { "type": "integer", "format": "int32" } } ], "responses": { "200": { "description": "OK" } } } }, "/api/Scrobbling/has-ran-scrobble-gen": { "get": { "tags": [ "Scrobbling" ], "summary": "Has the logged in user ran scrobble generation", "responses": { "200": { "description": "OK", "content": { "text/plain": { "schema": { "type": "boolean" } }, "application/json": { "schema": { "type": "boolean" } }, "text/json": { "schema": { "type": "boolean" } } } } } } }, "/api/Scrobbling/bulk-remove-events": { "post": { "tags": [ "Scrobbling" ], "summary": "Delete the given scrobble events if they belong to that user", "requestBody": { "description": "", "content": { "application/json": { "schema": { "type": "array", "items": { "type": "integer", "format": "int64" } } }, "text/json": { "schema": { "type": "array", "items": { "type": "integer", "format": "int64" } } }, "application/*+json": { "schema": { "type": "array", "items": { "type": "integer", "format": "int64" } } } } }, "responses": { "200": { "description": "OK" } } } }, "/api/Search/series-for-mangafile": { "get": { "tags": [ "Search" ], "summary": "Returns the series for the MangaFile id. If the user does not have access (shouldn't happen by the UI),\nthen null is returned", "parameters": [ { "name": "mangaFileId", "in": "query", "description": "", "schema": { "type": "integer", "format": "int32" } } ], "responses": { "200": { "description": "OK", "content": { "text/plain": { "schema": { "$ref": "#/components/schemas/SeriesDto" } }, "application/json": { "schema": { "$ref": "#/components/schemas/SeriesDto" } }, "text/json": { "schema": { "$ref": "#/components/schemas/SeriesDto" } } } } } } }, "/api/Search/series-for-chapter": { "get": { "tags": [ "Search" ], "summary": "Returns the series for the Chapter id. If the user does not have access (shouldn't happen by the UI),\nthen null is returned", "parameters": [ { "name": "chapterId", "in": "query", "description": "", "schema": { "type": "integer", "format": "int32" } } ], "responses": { "200": { "description": "OK", "content": { "text/plain": { "schema": { "$ref": "#/components/schemas/SeriesDto" } }, "application/json": { "schema": { "$ref": "#/components/schemas/SeriesDto" } }, "text/json": { "schema": { "$ref": "#/components/schemas/SeriesDto" } } } } } } }, "/api/Search/search": { "get": { "tags": [ "Search" ], "summary": "Searches against different entities in the system against a query string", "parameters": [ { "name": "queryString", "in": "query", "description": "", "schema": { "type": "string" } }, { "name": "includeChapterAndFiles", "in": "query", "description": "Include Chapter and Filenames in the entities. This can slow down the search on larger systems", "schema": { "type": "boolean", "default": true } } ], "responses": { "200": { "description": "OK", "content": { "text/plain": { "schema": { "$ref": "#/components/schemas/SearchResultGroupDto" } }, "application/json": { "schema": { "$ref": "#/components/schemas/SearchResultGroupDto" } }, "text/json": { "schema": { "$ref": "#/components/schemas/SearchResultGroupDto" } } } } } } }, "/api/Series/v2": { "post": { "tags": [ "Series" ], "summary": "Gets series with the applied Filter", "parameters": [ { "name": "PageNumber", "in": "query", "schema": { "type": "integer", "format": "int32" } }, { "name": "PageSize", "in": "query", "schema": { "type": "integer", "format": "int32" } } ], "requestBody": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/FilterV2Dto" } }, "text/json": { "schema": { "$ref": "#/components/schemas/FilterV2Dto" } }, "application/*+json": { "schema": { "$ref": "#/components/schemas/FilterV2Dto" } } } }, "responses": { "200": { "description": "OK", "content": { "text/plain": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/SeriesDto" } } }, "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/SeriesDto" } } }, "text/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/SeriesDto" } } } } } } } }, "/api/Series/{seriesId}": { "get": { "tags": [ "Series" ], "summary": "Fetches a Series for a given Id", "parameters": [ { "name": "seriesId", "in": "path", "description": "Series Id to fetch details for", "required": true, "schema": { "type": "integer", "format": "int32" } } ], "responses": { "200": { "description": "OK", "content": { "text/plain": { "schema": { "$ref": "#/components/schemas/SeriesDto" } }, "application/json": { "schema": { "$ref": "#/components/schemas/SeriesDto" } }, "text/json": { "schema": { "$ref": "#/components/schemas/SeriesDto" } } } } } }, "delete": { "tags": [ "Series" ], "summary": "Deletes a series from Kavita", "parameters": [ { "name": "seriesId", "in": "path", "description": "", "required": true, "schema": { "type": "integer", "format": "int32" } } ], "responses": { "200": { "description": "OK", "content": { "text/plain": { "schema": { "type": "boolean" } }, "application/json": { "schema": { "type": "boolean" } }, "text/json": { "schema": { "type": "boolean" } } } } } } }, "/api/Series/delete-multiple": { "post": { "tags": [ "Series" ], "summary": "Deletes multiple series from Kavita at once", "requestBody": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/DeleteSeriesDto" } }, "text/json": { "schema": { "$ref": "#/components/schemas/DeleteSeriesDto" } }, "application/*+json": { "schema": { "$ref": "#/components/schemas/DeleteSeriesDto" } } } }, "responses": { "200": { "description": "OK" } } } }, "/api/Series/volumes": { "get": { "tags": [ "Series" ], "summary": "Returns All volumes for a series with progress information and Chapters", "parameters": [ { "name": "seriesId", "in": "query", "description": "", "schema": { "type": "integer", "format": "int32" } } ], "responses": { "200": { "description": "OK", "content": { "text/plain": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/VolumeDto" } } }, "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/VolumeDto" } } }, "text/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/VolumeDto" } } } } } } } }, "/api/Series/volume": { "get": { "tags": [ "Series" ], "summary": "Returns a single Volume with progress information and Chapters", "parameters": [ { "name": "volumeId", "in": "query", "description": "", "schema": { "type": "integer", "format": "int32" } } ], "responses": { "200": { "description": "OK", "content": { "text/plain": { "schema": { "$ref": "#/components/schemas/VolumeDto" } }, "application/json": { "schema": { "$ref": "#/components/schemas/VolumeDto" } }, "text/json": { "schema": { "$ref": "#/components/schemas/VolumeDto" } } } } } } }, "/api/Series/chapter": { "get": { "tags": [ "Series" ], "summary": "Returns a single Chapter with progress information", "parameters": [ { "name": "chapterId", "in": "query", "description": "", "schema": { "type": "integer", "format": "int32" } } ], "responses": { "200": { "description": "OK", "content": { "text/plain": { "schema": { "$ref": "#/components/schemas/ChapterDto" } }, "application/json": { "schema": { "$ref": "#/components/schemas/ChapterDto" } }, "text/json": { "schema": { "$ref": "#/components/schemas/ChapterDto" } } } } } } }, "/api/Series/update": { "post": { "tags": [ "Series" ], "summary": "Updates the Series", "requestBody": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/UpdateSeriesDto" } }, "text/json": { "schema": { "$ref": "#/components/schemas/UpdateSeriesDto" } }, "application/*+json": { "schema": { "$ref": "#/components/schemas/UpdateSeriesDto" } } } }, "responses": { "200": { "description": "OK", "content": { "text/plain": { "schema": { "$ref": "#/components/schemas/SeriesDto" } }, "application/json": { "schema": { "$ref": "#/components/schemas/SeriesDto" } }, "text/json": { "schema": { "$ref": "#/components/schemas/SeriesDto" } } } } } } }, "/api/Series/recently-added-v2": { "post": { "tags": [ "Series" ], "summary": "Gets all recently added series", "parameters": [ { "name": "PageNumber", "in": "query", "schema": { "type": "integer", "format": "int32" } }, { "name": "PageSize", "in": "query", "schema": { "type": "integer", "format": "int32" } } ], "requestBody": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/FilterV2Dto" } }, "text/json": { "schema": { "$ref": "#/components/schemas/FilterV2Dto" } }, "application/*+json": { "schema": { "$ref": "#/components/schemas/FilterV2Dto" } } } }, "responses": { "200": { "description": "OK", "content": { "text/plain": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/SeriesDto" } } }, "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/SeriesDto" } } }, "text/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/SeriesDto" } } } } } } } }, "/api/Series/recently-updated-series": { "post": { "tags": [ "Series" ], "summary": "Returns series that were recently updated, like adding or removing a chapter", "parameters": [ { "name": "PageNumber", "in": "query", "schema": { "type": "integer", "format": "int32" } }, { "name": "PageSize", "in": "query", "schema": { "type": "integer", "format": "int32" } } ], "responses": { "200": { "description": "OK", "content": { "text/plain": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/GroupedSeriesDto" } } }, "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/GroupedSeriesDto" } } }, "text/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/GroupedSeriesDto" } } } } } } } }, "/api/Series/all-v2": { "post": { "tags": [ "Series" ], "summary": "Returns all series for the library", "parameters": [ { "name": "PageNumber", "in": "query", "schema": { "type": "integer", "format": "int32" } }, { "name": "PageSize", "in": "query", "schema": { "type": "integer", "format": "int32" } }, { "name": "userId", "in": "query", "description": "Optional user id to request the OnDeck for someone else. They must have profile sharing enabled when doing so", "schema": { "type": "integer", "format": "int32" } }, { "name": "libraryId", "in": "query", "description": "This is not in use", "schema": { "type": "integer", "format": "int32", "default": 0 } }, { "name": "context", "in": "query", "description": "", "schema": { "enum": [ 1, 2, 3, 4 ], "type": "integer", "format": "int32", "default": 1 } } ], "requestBody": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/FilterV2Dto" } }, "text/json": { "schema": { "$ref": "#/components/schemas/FilterV2Dto" } }, "application/*+json": { "schema": { "$ref": "#/components/schemas/FilterV2Dto" } } } }, "responses": { "200": { "description": "OK", "content": { "text/plain": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/SeriesDto" } } }, "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/SeriesDto" } } }, "text/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/SeriesDto" } } } } } } } }, "/api/Series/on-deck": { "post": { "tags": [ "Series" ], "summary": "Fetches series that are on deck aka have progress on them.", "parameters": [ { "name": "PageNumber", "in": "query", "schema": { "type": "integer", "format": "int32" } }, { "name": "PageSize", "in": "query", "schema": { "type": "integer", "format": "int32" } }, { "name": "libraryId", "in": "query", "description": "Default of 0 meaning all libraries", "schema": { "type": "integer", "format": "int32", "default": 0 } } ], "responses": { "200": { "description": "OK", "content": { "text/plain": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/SeriesDto" } } }, "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/SeriesDto" } } }, "text/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/SeriesDto" } } } } } } } }, "/api/Series/remove-from-on-deck": { "post": { "tags": [ "Series" ], "summary": "Removes a series from displaying on deck until the next read event on that series", "parameters": [ { "name": "seriesId", "in": "query", "description": "", "schema": { "type": "integer", "format": "int32" } } ], "responses": { "200": { "description": "OK" } } } }, "/api/Series/currently-reading": { "get": { "tags": [ "Series" ], "summary": "Get series a user is currently reading, requires the user to share their profile", "parameters": [ { "name": "PageNumber", "in": "query", "schema": { "type": "integer", "format": "int32" } }, { "name": "PageSize", "in": "query", "schema": { "type": "integer", "format": "int32" } }, { "name": "userId", "in": "query", "description": "", "schema": { "type": "integer", "format": "int32" } } ], "responses": { "200": { "description": "OK", "content": { "text/plain": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/SeriesDto" } } }, "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/SeriesDto" } } }, "text/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/SeriesDto" } } } } } } } }, "/api/Series/refresh-metadata": { "post": { "tags": [ "Series" ], "summary": "Runs a Cover Image Generation task", "requestBody": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/RefreshSeriesDto" } }, "text/json": { "schema": { "$ref": "#/components/schemas/RefreshSeriesDto" } }, "application/*+json": { "schema": { "$ref": "#/components/schemas/RefreshSeriesDto" } } } }, "responses": { "200": { "description": "OK" } } } }, "/api/Series/scan": { "post": { "tags": [ "Series" ], "summary": "Scan a series and force each file to be updated. This should be invoked via the User, hence why we force.", "requestBody": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/RefreshSeriesDto" } }, "text/json": { "schema": { "$ref": "#/components/schemas/RefreshSeriesDto" } }, "application/*+json": { "schema": { "$ref": "#/components/schemas/RefreshSeriesDto" } } } }, "responses": { "200": { "description": "OK" } } } }, "/api/Series/analyze": { "post": { "tags": [ "Series" ], "summary": "Run a file analysis on the series.", "requestBody": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/RefreshSeriesDto" } }, "text/json": { "schema": { "$ref": "#/components/schemas/RefreshSeriesDto" } }, "application/*+json": { "schema": { "$ref": "#/components/schemas/RefreshSeriesDto" } } } }, "responses": { "200": { "description": "OK" } } } }, "/api/Series/metadata": { "get": { "tags": [ "Series" ], "summary": "Returns metadata 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/SeriesMetadataDto" } }, "application/json": { "schema": { "$ref": "#/components/schemas/SeriesMetadataDto" } }, "text/json": { "schema": { "$ref": "#/components/schemas/SeriesMetadataDto" } } } } } }, "post": { "tags": [ "Series" ], "summary": "Update series metadata", "requestBody": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/UpdateSeriesMetadataDto" } }, "text/json": { "schema": { "$ref": "#/components/schemas/UpdateSeriesMetadataDto" } }, "application/*+json": { "schema": { "$ref": "#/components/schemas/UpdateSeriesMetadataDto" } } } }, "responses": { "200": { "description": "OK" } } } }, "/api/Series/series-by-collection": { "get": { "tags": [ "Series" ], "summary": "Returns all Series grouped by the passed Collection Id with Pagination.", "parameters": [ { "name": "collectionId", "in": "query", "description": "Collection Id to pull series from", "schema": { "type": "integer", "format": "int32" } }, { "name": "PageNumber", "in": "query", "schema": { "type": "integer", "format": "int32" } }, { "name": "PageSize", "in": "query", "schema": { "type": "integer", "format": "int32" } } ], "responses": { "200": { "description": "OK", "content": { "text/plain": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/SeriesDto" } } }, "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/SeriesDto" } } }, "text/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/SeriesDto" } } } } } } } }, "/api/Series/series-by-ids": { "post": { "tags": [ "Series" ], "summary": "Fetches Series for a set of Ids. This will check User for permission access and filter out any Ids that don't exist or\nthe user does not have access to.", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/SeriesByIdsDto" } }, "text/json": { "schema": { "$ref": "#/components/schemas/SeriesByIdsDto" } }, "application/*+json": { "schema": { "$ref": "#/components/schemas/SeriesByIdsDto" } } } }, "responses": { "200": { "description": "OK", "content": { "text/plain": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/SeriesDto" } } }, "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/SeriesDto" } } }, "text/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/SeriesDto" } } } } } } } }, "/api/Series/age-rating": { "get": { "tags": [ "Series" ], "summary": "Get the age rating for the Kavita.Models.Entities.Enums.AgeRating enum value", "parameters": [ { "name": "ageRating", "in": "query", "description": "", "schema": { "type": "integer", "format": "int32" } } ], "responses": { "200": { "description": "OK", "content": { "text/plain": { "schema": { "type": "string" } }, "application/json": { "schema": { "type": "string" } }, "text/json": { "schema": { "type": "string" } } } } } } }, "/api/Series/series-detail": { "get": { "tags": [ "Series" ], "summary": "Get a special DTO for Series Detail page.", "description": "Do not rely on this API externally. May change without hesitation.", "parameters": [ { "name": "seriesId", "in": "query", "description": "", "schema": { "type": "integer", "format": "int32" } } ], "responses": { "200": { "description": "OK", "content": { "text/plain": { "schema": { "$ref": "#/components/schemas/SeriesDetailDto" } }, "application/json": { "schema": { "$ref": "#/components/schemas/SeriesDetailDto" } }, "text/json": { "schema": { "$ref": "#/components/schemas/SeriesDetailDto" } } } } } } }, "/api/Series/related": { "get": { "tags": [ "Series" ], "summary": "Fetches the related series for a given series", "parameters": [ { "name": "seriesId", "in": "query", "description": "", "schema": { "type": "integer", "format": "int32" } }, { "name": "relation", "in": "query", "description": "Type of Relationship to pull back", "schema": { "enum": [ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14 ], "type": "integer", "format": "int32" } } ], "responses": { "200": { "description": "OK", "content": { "text/plain": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/SeriesDto" } } }, "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/SeriesDto" } } }, "text/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/SeriesDto" } } } } } } } }, "/api/Series/all-related": { "get": { "tags": [ "Series" ], "summary": "Returns all related series against the passed series Id", "parameters": [ { "name": "seriesId", "in": "query", "description": "", "schema": { "type": "integer", "format": "int32" } } ], "responses": { "200": { "description": "OK", "content": { "text/plain": { "schema": { "$ref": "#/components/schemas/RelatedSeriesDto" } }, "application/json": { "schema": { "$ref": "#/components/schemas/RelatedSeriesDto" } }, "text/json": { "schema": { "$ref": "#/components/schemas/RelatedSeriesDto" } } } } } } }, "/api/Series/update-related": { "post": { "tags": [ "Series" ], "summary": "Update the relations attached to the Series. Does not generate associated Sequel/Prequel pairs on target series.", "requestBody": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/UpdateRelatedSeriesDto" } }, "text/json": { "schema": { "$ref": "#/components/schemas/UpdateRelatedSeriesDto" } }, "application/*+json": { "schema": { "$ref": "#/components/schemas/UpdateRelatedSeriesDto" } } } }, "responses": { "200": { "description": "OK" } } } }, "/api/Series/external-series-detail": { "get": { "tags": [ "Series" ], "parameters": [ { "name": "aniListId", "in": "query", "schema": { "type": "integer", "format": "int32" } }, { "name": "malId", "in": "query", "schema": { "type": "integer", "format": "int64" } }, { "name": "seriesId", "in": "query", "schema": { "type": "integer", "format": "int32" } } ], "responses": { "200": { "description": "OK", "content": { "text/plain": { "schema": { "$ref": "#/components/schemas/ExternalSeriesDto" } }, "application/json": { "schema": { "$ref": "#/components/schemas/ExternalSeriesDto" } }, "text/json": { "schema": { "$ref": "#/components/schemas/ExternalSeriesDto" } } } } } } }, "/api/Series/next-expected": { "get": { "tags": [ "Series" ], "summary": "Based on the delta times between when chapters are added, for series that are not Completed/Cancelled/Hiatus, forecast the next\ndate when it will be available.", "parameters": [ { "name": "seriesId", "in": "query", "description": "", "schema": { "type": "integer", "format": "int32" } } ], "responses": { "200": { "description": "OK", "content": { "text/plain": { "schema": { "$ref": "#/components/schemas/NextExpectedChapterDto" } }, "application/json": { "schema": { "$ref": "#/components/schemas/NextExpectedChapterDto" } }, "text/json": { "schema": { "$ref": "#/components/schemas/NextExpectedChapterDto" } } } } } } }, "/api/Series/match": { "post": { "tags": [ "Series" ], "summary": "Sends a request to Kavita+ API for all potential matches, sorted by relevance", "requestBody": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/MatchSeriesDto" } }, "text/json": { "schema": { "$ref": "#/components/schemas/MatchSeriesDto" } }, "application/*+json": { "schema": { "$ref": "#/components/schemas/MatchSeriesDto" } } } }, "responses": { "200": { "description": "OK", "content": { "text/plain": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/ExternalSeriesMatchDto" } } }, "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/ExternalSeriesMatchDto" } } }, "text/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/ExternalSeriesMatchDto" } } } } } } } }, "/api/Series/update-match": { "post": { "tags": [ "Series" ], "summary": "This will perform the fix match", "parameters": [ { "name": "seriesId", "in": "query", "description": "", "schema": { "type": "integer", "format": "int32" } }, { "name": "aniListId", "in": "query", "description": "", "schema": { "type": "integer", "format": "int32" } }, { "name": "malId", "in": "query", "description": "", "schema": { "type": "integer", "format": "int64" } }, { "name": "cbrId", "in": "query", "description": "", "schema": { "type": "integer", "format": "int32" } } ], "responses": { "200": { "description": "OK" } } } }, "/api/Series/dont-match": { "post": { "tags": [ "Series" ], "summary": "When true, will not perform a match and will prevent Kavita from attempting to match/scrobble against this series", "parameters": [ { "name": "seriesId", "in": "query", "description": "", "schema": { "type": "integer", "format": "int32" } }, { "name": "dontMatch", "in": "query", "description": "", "schema": { "type": "boolean" } } ], "responses": { "200": { "description": "OK" } } } }, "/api/Series/series-with-annotations": { "get": { "tags": [ "Series" ], "summary": "Returns all Series that a user has access to", "responses": { "200": { "description": "OK", "content": { "text/plain": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/SeriesDto" } } }, "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/SeriesDto" } } }, "text/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/SeriesDto" } } } } } } } }, "/api/Server/clear-cache": { "post": { "tags": [ "Server" ], "summary": "Performs an ad-hoc cleanup of Cache", "responses": { "200": { "description": "OK" } } } }, "/api/Server/cleanup-want-to-read": { "post": { "tags": [ "Server" ], "summary": "Performs an ad-hoc cleanup of Want To Read, by removing want to read series for users, where the series are fully read and in Completed publication status.", "responses": { "200": { "description": "OK" } } } }, "/api/Server/cleanup": { "post": { "tags": [ "Server" ], "summary": "Performs the nightly maintenance work on the Server. Can be heavy.", "responses": { "200": { "description": "OK" } } } }, "/api/Server/backup-db": { "post": { "tags": [ "Server" ], "summary": "Performs an ad-hoc backup of the Database", "responses": { "200": { "description": "OK" } } } }, "/api/Server/analyze-files": { "post": { "tags": [ "Server" ], "summary": "This is a one time task that needs to be ran for v0.7 statistics to work", "responses": { "200": { "description": "OK" } } } }, "/api/Server/server-info-slim": { "get": { "tags": [ "Server" ], "summary": "Returns non-sensitive information about the current system", "description": "This is just for the UI and is extremely lightweight", "responses": { "200": { "description": "OK", "content": { "text/plain": { "schema": { "$ref": "#/components/schemas/ServerInfoSlimDto" } }, "application/json": { "schema": { "$ref": "#/components/schemas/ServerInfoSlimDto" } }, "text/json": { "schema": { "$ref": "#/components/schemas/ServerInfoSlimDto" } } } } } } }, "/api/Server/convert-media": { "post": { "tags": [ "Server" ], "summary": "Triggers the scheduling of the convert media job. This will convert all media to the target encoding (except for PNG). Only one job will run at a time.", "responses": { "200": { "description": "OK" } } } }, "/api/Server/logs": { "get": { "tags": [ "Server" ], "summary": "Downloads all the log files via a zip", "responses": { "200": { "description": "OK" } } } }, "/api/Server/check-for-updates": { "get": { "tags": [ "Server" ], "summary": "Checks for updates and pushes an event to the UI", "description": "Some users have websocket issues so this is not always reliable to alert the user", "responses": { "200": { "description": "OK" } } } }, "/api/Server/check-update": { "get": { "tags": [ "Server" ], "summary": "Checks for updates, if no updates that are > current version installed, returns null", "responses": { "200": { "description": "OK", "content": { "text/plain": { "schema": { "$ref": "#/components/schemas/UpdateNotificationDto" } }, "application/json": { "schema": { "$ref": "#/components/schemas/UpdateNotificationDto" } }, "text/json": { "schema": { "$ref": "#/components/schemas/UpdateNotificationDto" } } } } } } }, "/api/Server/check-out-of-date": { "get": { "tags": [ "Server" ], "summary": "Returns how many versions out of date this install is", "parameters": [ { "name": "stableOnly", "in": "query", "description": "Only count Stable releases", "schema": { "type": "boolean", "default": true } } ], "responses": { "200": { "description": "OK", "content": { "text/plain": { "schema": { "type": "integer", "format": "int32" } }, "application/json": { "schema": { "type": "integer", "format": "int32" } }, "text/json": { "schema": { "type": "integer", "format": "int32" } } } } } } }, "/api/Server/changelog": { "get": { "tags": [ "Server" ], "summary": "Pull the Changelog for Kavita from Github and display", "parameters": [ { "name": "count", "in": "query", "description": "How many releases from the latest to return", "schema": { "type": "integer", "format": "int32", "default": 0 } } ], "responses": { "200": { "description": "OK", "content": { "text/plain": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/UpdateNotificationDto" } } }, "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/UpdateNotificationDto" } } }, "text/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/UpdateNotificationDto" } } } } } } } }, "/api/Server/jobs": { "get": { "tags": [ "Server" ], "summary": "Returns a list of reoccurring jobs. Scheduled ad-hoc jobs will not be returned.", "responses": { "200": { "description": "OK", "content": { "text/plain": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/JobDto" } } }, "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/JobDto" } } }, "text/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/JobDto" } } } } } } } }, "/api/Server/media-errors": { "get": { "tags": [ "Server" ], "summary": "Returns a list of issues found during scanning or reading in which files may have corruption or bad metadata (structural metadata)", "responses": { "200": { "description": "OK", "content": { "text/plain": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/MediaErrorDto" } } }, "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/MediaErrorDto" } } }, "text/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/MediaErrorDto" } } } } } } } }, "/api/Server/clear-media-alerts": { "post": { "tags": [ "Server" ], "summary": "Deletes all media errors", "responses": { "200": { "description": "OK" } } } }, "/api/Server/bust-kavitaplus-cache": { "post": { "tags": [ "Server" ], "summary": "Bust Kavita+ Cache", "responses": { "200": { "description": "OK" } } } }, "/api/Server/sync-themes": { "post": { "tags": [ "Server" ], "summary": "Runs the Sync Themes task", "responses": { "200": { "description": "OK" } } } }, "/api/Settings/base-url": { "get": { "tags": [ "Settings" ], "summary": "Returns the base url for this instance (if set)", "responses": { "200": { "description": "OK", "content": { "text/plain": { "schema": { "type": "string" } }, "application/json": { "schema": { "type": "string" } }, "text/json": { "schema": { "type": "string" } } } } } } }, "/api/Settings": { "get": { "tags": [ "Settings" ], "summary": "Returns the server settings", "responses": { "200": { "description": "OK", "content": { "text/plain": { "schema": { "$ref": "#/components/schemas/ServerSettingDto" } }, "application/json": { "schema": { "$ref": "#/components/schemas/ServerSettingDto" } }, "text/json": { "schema": { "$ref": "#/components/schemas/ServerSettingDto" } } } } } }, "post": { "tags": [ "Settings" ], "summary": "Update Server settings", "requestBody": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ServerSettingDto" } }, "text/json": { "schema": { "$ref": "#/components/schemas/ServerSettingDto" } }, "application/*+json": { "schema": { "$ref": "#/components/schemas/ServerSettingDto" } } } }, "responses": { "200": { "description": "OK", "content": { "text/plain": { "schema": { "$ref": "#/components/schemas/ServerSettingDto" } }, "application/json": { "schema": { "$ref": "#/components/schemas/ServerSettingDto" } }, "text/json": { "schema": { "$ref": "#/components/schemas/ServerSettingDto" } } } } } } }, "/api/Settings/reset": { "post": { "tags": [ "Settings" ], "responses": { "200": { "description": "OK", "content": { "text/plain": { "schema": { "$ref": "#/components/schemas/ServerSettingDto" } }, "application/json": { "schema": { "$ref": "#/components/schemas/ServerSettingDto" } }, "text/json": { "schema": { "$ref": "#/components/schemas/ServerSettingDto" } } } } } } }, "/api/Settings/reset-ip-addresses": { "post": { "tags": [ "Settings" ], "summary": "Resets the IP Addresses", "responses": { "200": { "description": "OK", "content": { "text/plain": { "schema": { "$ref": "#/components/schemas/ServerSettingDto" } }, "application/json": { "schema": { "$ref": "#/components/schemas/ServerSettingDto" } }, "text/json": { "schema": { "$ref": "#/components/schemas/ServerSettingDto" } } } } } } }, "/api/Settings/reset-base-url": { "post": { "tags": [ "Settings" ], "summary": "Resets the Base url", "responses": { "200": { "description": "OK", "content": { "text/plain": { "schema": { "$ref": "#/components/schemas/ServerSettingDto" } }, "application/json": { "schema": { "$ref": "#/components/schemas/ServerSettingDto" } }, "text/json": { "schema": { "$ref": "#/components/schemas/ServerSettingDto" } } } } } } }, "/api/Settings/is-email-setup": { "get": { "tags": [ "Settings" ], "summary": "Is the minimum information setup for Email to work", "responses": { "200": { "description": "OK", "content": { "text/plain": { "schema": { "type": "boolean" } }, "application/json": { "schema": { "type": "boolean" } }, "text/json": { "schema": { "type": "boolean" } } } } } } }, "/api/Settings/task-frequencies": { "get": { "tags": [ "Settings" ], "summary": "All values allowed for Task Scheduling APIs. A custom cron job is not included. Disabled is not applicable for Cleanup.", "responses": { "200": { "description": "OK", "content": { "text/plain": { "schema": { "type": "array", "items": { "type": "string" } } }, "application/json": { "schema": { "type": "array", "items": { "type": "string" } } }, "text/json": { "schema": { "type": "array", "items": { "type": "string" } } } } } } } }, "/api/Settings/library-types": { "get": { "tags": [ "Settings" ], "responses": { "200": { "description": "OK", "content": { "text/plain": { "schema": { "type": "array", "items": { "type": "string" } } }, "application/json": { "schema": { "type": "array", "items": { "type": "string" } } }, "text/json": { "schema": { "type": "array", "items": { "type": "string" } } } } } } } }, "/api/Settings/log-levels": { "get": { "tags": [ "Settings" ], "responses": { "200": { "description": "OK", "content": { "text/plain": { "schema": { "type": "array", "items": { "type": "string" } } }, "application/json": { "schema": { "type": "array", "items": { "type": "string" } } }, "text/json": { "schema": { "type": "array", "items": { "type": "string" } } } } } } } }, "/api/Settings/opds-enabled": { "get": { "tags": [ "Settings" ], "responses": { "200": { "description": "OK", "content": { "text/plain": { "schema": { "type": "boolean" } }, "application/json": { "schema": { "type": "boolean" } }, "text/json": { "schema": { "type": "boolean" } } } } } } }, "/api/Settings/is-valid-cron": { "get": { "tags": [ "Settings" ], "summary": "Is the cron expression valid for Kavita's scheduler", "parameters": [ { "name": "cronExpression", "in": "query", "description": "", "schema": { "type": "string" } } ], "responses": { "200": { "description": "OK", "content": { "text/plain": { "schema": { "type": "boolean" } }, "application/json": { "schema": { "type": "boolean" } }, "text/json": { "schema": { "type": "boolean" } } } } } } }, "/api/Settings/test-email-url": { "post": { "tags": [ "Settings" ], "summary": "Sends a test email to see if email settings are hooked up correctly", "responses": { "200": { "description": "OK", "content": { "text/plain": { "schema": { "$ref": "#/components/schemas/EmailTestResultDto" } }, "application/json": { "schema": { "$ref": "#/components/schemas/EmailTestResultDto" } }, "text/json": { "schema": { "$ref": "#/components/schemas/EmailTestResultDto" } } } } } } }, "/api/Settings/metadata-settings": { "get": { "tags": [ "Settings" ], "summary": "Get the metadata settings for Kavita+ users.", "responses": { "200": { "description": "OK", "content": { "text/plain": { "schema": { "$ref": "#/components/schemas/MetadataSettingsDto" } }, "application/json": { "schema": { "$ref": "#/components/schemas/MetadataSettingsDto" } }, "text/json": { "schema": { "$ref": "#/components/schemas/MetadataSettingsDto" } } } } } }, "post": { "tags": [ "Settings" ], "summary": "Update the metadata settings for Kavita+ Metadata feature", "requestBody": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/MetadataSettingsDto" } }, "text/json": { "schema": { "$ref": "#/components/schemas/MetadataSettingsDto" } }, "application/*+json": { "schema": { "$ref": "#/components/schemas/MetadataSettingsDto" } } } }, "responses": { "200": { "description": "OK", "content": { "text/plain": { "schema": { "$ref": "#/components/schemas/MetadataSettingsDto" } }, "application/json": { "schema": { "$ref": "#/components/schemas/MetadataSettingsDto" } }, "text/json": { "schema": { "$ref": "#/components/schemas/MetadataSettingsDto" } } } } } } }, "/api/Settings/import-field-mappings": { "post": { "tags": [ "Settings" ], "summary": "Import field mappings", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ImportFieldMappingsDto" } }, "text/json": { "schema": { "$ref": "#/components/schemas/ImportFieldMappingsDto" } }, "application/*+json": { "schema": { "$ref": "#/components/schemas/ImportFieldMappingsDto" } } } }, "responses": { "200": { "description": "OK", "content": { "text/plain": { "schema": { "$ref": "#/components/schemas/FieldMappingsImportResultDto" } }, "application/json": { "schema": { "$ref": "#/components/schemas/FieldMappingsImportResultDto" } }, "text/json": { "schema": { "$ref": "#/components/schemas/FieldMappingsImportResultDto" } } } } } } }, "/api/Settings/oidc": { "get": { "tags": [ "Settings" ], "summary": "Retrieve publicly required configuration regarding Oidc", "responses": { "200": { "description": "OK", "content": { "text/plain": { "schema": { "$ref": "#/components/schemas/OidcPublicConfigDto" } }, "application/json": { "schema": { "$ref": "#/components/schemas/OidcPublicConfigDto" } }, "text/json": { "schema": { "$ref": "#/components/schemas/OidcPublicConfigDto" } } } } } } }, "/api/Settings/reset-external-ids": { "post": { "tags": [ "Settings" ], "responses": { "200": { "description": "OK" } } } }, "/api/Settings/is-valid-authority": { "post": { "tags": [ "Settings" ], "summary": "Validate if the given authority is reachable from the server", "requestBody": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/AuthorityValidationDto" } }, "text/json": { "schema": { "$ref": "#/components/schemas/AuthorityValidationDto" } }, "application/*+json": { "schema": { "$ref": "#/components/schemas/AuthorityValidationDto" } } } }, "responses": { "200": { "description": "OK", "content": { "text/plain": { "schema": { "type": "boolean" } }, "application/json": { "schema": { "type": "boolean" } }, "text/json": { "schema": { "type": "boolean" } } } } } } }, "/api/Stats/server/stats": { "get": { "tags": [ "Stats" ], "responses": { "200": { "description": "OK", "content": { "text/plain": { "schema": { "$ref": "#/components/schemas/ServerStatisticsDto" } }, "application/json": { "schema": { "$ref": "#/components/schemas/ServerStatisticsDto" } }, "text/json": { "schema": { "$ref": "#/components/schemas/ServerStatisticsDto" } } } } } } }, "/api/Stats/server/count/publication-status": { "get": { "tags": [ "Stats" ], "responses": { "200": { "description": "OK", "content": { "text/plain": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/PublicationStatusStatCount" } } }, "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/PublicationStatusStatCount" } } }, "text/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/PublicationStatusStatCount" } } } } } } } }, "/api/Stats/server/count/manga-format": { "get": { "tags": [ "Stats" ], "responses": { "200": { "description": "OK", "content": { "text/plain": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/MangaFormatStatCount" } } }, "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/MangaFormatStatCount" } } }, "text/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/MangaFormatStatCount" } } } } } } } }, "/api/Stats/popular-decades": { "get": { "tags": [ "Stats" ], "responses": { "200": { "description": "OK", "content": { "text/plain": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/StatBucketDto" } } }, "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/StatBucketDto" } } }, "text/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/StatBucketDto" } } } } } } } }, "/api/Stats/popular-libraries": { "get": { "tags": [ "Stats" ], "responses": { "200": { "description": "OK", "content": { "text/plain": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/LibraryDtoStatCount" } } }, "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/LibraryDtoStatCount" } } }, "text/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/LibraryDtoStatCount" } } } } } } } }, "/api/Stats/popular-series": { "get": { "tags": [ "Stats" ], "responses": { "200": { "description": "OK", "content": { "text/plain": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/SeriesDtoStatCount" } } }, "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/SeriesDtoStatCount" } } }, "text/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/SeriesDtoStatCount" } } } } } } } }, "/api/Stats/popular-reading-list": { "get": { "tags": [ "Stats" ], "summary": "Gets the top 5 most popular reading lists. Counts a reading list as active if a user has read at least some", "responses": { "200": { "description": "OK", "content": { "text/plain": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/SeriesDtoStatCount" } } }, "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/SeriesDtoStatCount" } } }, "text/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/SeriesDtoStatCount" } } } } } } } }, "/api/Stats/popular-genres": { "get": { "tags": [ "Stats" ], "responses": { "200": { "description": "OK", "content": { "text/plain": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/GenreTagDtoStatCount" } } }, "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/GenreTagDtoStatCount" } } }, "text/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/GenreTagDtoStatCount" } } } } } } } }, "/api/Stats/popular-tags": { "get": { "tags": [ "Stats" ], "responses": { "200": { "description": "OK", "content": { "text/plain": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/TagDtoStatCount" } } }, "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/TagDtoStatCount" } } }, "text/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/TagDtoStatCount" } } } } } } } }, "/api/Stats/popular-people": { "get": { "tags": [ "Stats" ], "parameters": [ { "name": "role", "in": "query", "schema": { "enum": [ 1, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15 ], "type": "integer", "format": "int32" } } ], "responses": { "200": { "description": "OK", "content": { "text/plain": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/PersonDtoStatCount" } } }, "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/PersonDtoStatCount" } } }, "text/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/PersonDtoStatCount" } } } } } } } }, "/api/Stats/most-active-users": { "get": { "tags": [ "Stats" ], "summary": "Top 5 most active readers for the given timeframe", "parameters": [ { "name": "StartDate", "in": "query", "schema": { "type": "string", "format": "date-time" } }, { "name": "TimeZoneId", "in": "query", "schema": { "type": "string" } }, { "name": "EndDate", "in": "query", "schema": { "type": "string", "format": "date-time" } }, { "name": "Libraries", "in": "query", "schema": { "type": "array", "items": { "type": "integer", "format": "int32" } } } ], "responses": { "200": { "description": "OK", "content": { "text/plain": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/TopReadDto" } } }, "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/TopReadDto" } } }, "text/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/TopReadDto" } } } } } } } }, "/api/Stats/server/file-breakdown": { "get": { "tags": [ "Stats" ], "summary": "A breakdown of different files, their size, and format", "responses": { "200": { "description": "OK", "content": { "text/plain": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/FileExtensionBreakdownDto" } } }, "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/FileExtensionBreakdownDto" } } }, "text/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/FileExtensionBreakdownDto" } } } } } } } }, "/api/Stats/server/file-extension": { "get": { "tags": [ "Stats" ], "summary": "Generates a csv of all file paths for a given extension", "parameters": [ { "name": "fileExtension", "in": "query", "schema": { "type": "string" } } ], "responses": { "200": { "description": "OK" } } } }, "/api/Stats/reading-counts": { "get": { "tags": [ "Stats" ], "summary": "Returns reading history events for a give or all users, broken up by day, and format", "parameters": [ { "name": "StartDate", "in": "query", "schema": { "type": "string", "format": "date-time" } }, { "name": "TimeZoneId", "in": "query", "schema": { "type": "string" } }, { "name": "EndDate", "in": "query", "schema": { "type": "string", "format": "date-time" } }, { "name": "Libraries", "in": "query", "schema": { "type": "array", "items": { "type": "integer", "format": "int32" } } }, { "name": "userId", "in": "query", "description": "If 0, defaults to all users, else just userId", "schema": { "type": "integer", "format": "int32" } } ], "responses": { "200": { "description": "OK", "content": { "text/plain": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/DateTimeStatCountWithFormat" } } }, "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/DateTimeStatCountWithFormat" } } }, "text/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/DateTimeStatCountWithFormat" } } } } } } } }, "/api/Stats/day-breakdown": { "get": { "tags": [ "Stats" ], "parameters": [ { "name": "userId", "in": "query", "schema": { "type": "integer", "format": "int32", "default": 0 } } ], "responses": { "200": { "description": "OK", "content": { "text/plain": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/DayOfWeekStatCount" } } }, "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/DayOfWeekStatCount" } } }, "text/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/DayOfWeekStatCount" } } } } } } } }, "/api/Stats/pages-per-year": { "get": { "tags": [ "Stats" ], "summary": "Returns a count of pages read per year for a given userId.", "parameters": [ { "name": "userId", "in": "query", "description": "", "schema": { "type": "integer", "format": "int32" } } ], "responses": { "200": { "description": "OK", "content": { "text/plain": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/Int32StatCount" } } }, "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/Int32StatCount" } } }, "text/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/Int32StatCount" } } } } } } } }, "/api/Stats/words-per-year": { "get": { "tags": [ "Stats" ], "summary": "Returns a count of words read per year for a given userId.", "parameters": [ { "name": "userId", "in": "query", "description": "", "schema": { "type": "integer", "format": "int32" } } ], "responses": { "200": { "description": "OK", "content": { "text/plain": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/Int32StatCount" } } }, "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/Int32StatCount" } } }, "text/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/Int32StatCount" } } } } } } } }, "/api/Stats/files-added-over-time": { "get": { "tags": [ "Stats" ], "responses": { "200": { "description": "OK", "content": { "text/plain": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/DateTimeStatCountWithFormat" } } }, "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/DateTimeStatCountWithFormat" } } }, "text/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/DateTimeStatCountWithFormat" } } } } } } } }, "/api/Stats/device/client-type": { "get": { "tags": [ "Stats" ], "summary": "Returns client type breakdown for the current month", "responses": { "200": { "description": "OK", "content": { "text/plain": { "schema": { "$ref": "#/components/schemas/DeviceClientBreakdownDto" } }, "application/json": { "schema": { "$ref": "#/components/schemas/DeviceClientBreakdownDto" } }, "text/json": { "schema": { "$ref": "#/components/schemas/DeviceClientBreakdownDto" } } } } } } }, "/api/Stats/device/device-type": { "get": { "tags": [ "Stats" ], "summary": "Desktop vs Mobile spread over this month", "responses": { "200": { "description": "OK", "content": { "text/plain": { "schema": { "$ref": "#/components/schemas/StringStatCount" } }, "application/json": { "schema": { "$ref": "#/components/schemas/StringStatCount" } }, "text/json": { "schema": { "$ref": "#/components/schemas/StringStatCount" } } } } } } }, "/api/Stats/reading-activity": { "get": { "tags": [ "Stats" ], "parameters": [ { "name": "StartDate", "in": "query", "schema": { "type": "string", "format": "date-time" } }, { "name": "TimeZoneId", "in": "query", "schema": { "type": "string" } }, { "name": "EndDate", "in": "query", "schema": { "type": "string", "format": "date-time" } }, { "name": "Libraries", "in": "query", "schema": { "type": "array", "items": { "type": "integer", "format": "int32" } } }, { "name": "userId", "in": "query", "schema": { "type": "integer", "format": "int32" } }, { "name": "year", "in": "query", "schema": { "type": "integer", "format": "int32" } } ], "responses": { "200": { "description": "OK", "content": { "text/plain": { "schema": { "type": "object", "additionalProperties": { "$ref": "#/components/schemas/ReadingActivityGraphEntryDto" } } }, "application/json": { "schema": { "type": "object", "additionalProperties": { "$ref": "#/components/schemas/ReadingActivityGraphEntryDto" } } }, "text/json": { "schema": { "type": "object", "additionalProperties": { "$ref": "#/components/schemas/ReadingActivityGraphEntryDto" } } } } } } } }, "/api/Stats/reading-pace": { "get": { "tags": [ "Stats" ], "summary": "", "parameters": [ { "name": "StartDate", "in": "query", "schema": { "type": "string", "format": "date-time" } }, { "name": "TimeZoneId", "in": "query", "schema": { "type": "string" } }, { "name": "EndDate", "in": "query", "schema": { "type": "string", "format": "date-time" } }, { "name": "Libraries", "in": "query", "schema": { "type": "array", "items": { "type": "integer", "format": "int32" } } }, { "name": "userId", "in": "query", "description": "", "schema": { "type": "integer", "format": "int32" } }, { "name": "year", "in": "query", "description": "", "schema": { "type": "integer", "format": "int32" } }, { "name": "booksOnly", "in": "query", "description": "This API only returns for Books (epub/pdf) and Comics (Image/Archive) regardless of Library type", "schema": { "type": "boolean" } } ], "responses": { "200": { "description": "OK", "content": { "text/plain": { "schema": { "$ref": "#/components/schemas/ReadingPaceDto" } }, "application/json": { "schema": { "$ref": "#/components/schemas/ReadingPaceDto" } }, "text/json": { "schema": { "$ref": "#/components/schemas/ReadingPaceDto" } } } } } } }, "/api/Stats/genre-breakdown": { "get": { "tags": [ "Stats" ], "summary": "Returns the top 10 genres that the user likes reading", "parameters": [ { "name": "StartDate", "in": "query", "schema": { "type": "string", "format": "date-time" } }, { "name": "TimeZoneId", "in": "query", "schema": { "type": "string" } }, { "name": "EndDate", "in": "query", "schema": { "type": "string", "format": "date-time" } }, { "name": "Libraries", "in": "query", "schema": { "type": "array", "items": { "type": "integer", "format": "int32" } } }, { "name": "userId", "in": "query", "description": "", "schema": { "type": "integer", "format": "int32" } } ], "responses": { "200": { "description": "OK", "content": { "text/plain": { "schema": { "$ref": "#/components/schemas/StringBreakDownDto" } }, "application/json": { "schema": { "$ref": "#/components/schemas/StringBreakDownDto" } }, "text/json": { "schema": { "$ref": "#/components/schemas/StringBreakDownDto" } } } } } } }, "/api/Stats/tag-breakdown": { "get": { "tags": [ "Stats" ], "summary": "Returns top 10 tags that user likes reading", "parameters": [ { "name": "StartDate", "in": "query", "schema": { "type": "string", "format": "date-time" } }, { "name": "TimeZoneId", "in": "query", "schema": { "type": "string" } }, { "name": "EndDate", "in": "query", "schema": { "type": "string", "format": "date-time" } }, { "name": "Libraries", "in": "query", "schema": { "type": "array", "items": { "type": "integer", "format": "int32" } } }, { "name": "userId", "in": "query", "description": "", "schema": { "type": "integer", "format": "int32" } } ], "responses": { "200": { "description": "OK", "content": { "text/plain": { "schema": { "$ref": "#/components/schemas/StringBreakDownDto" } }, "application/json": { "schema": { "$ref": "#/components/schemas/StringBreakDownDto" } }, "text/json": { "schema": { "$ref": "#/components/schemas/StringBreakDownDto" } } } } } } }, "/api/Stats/page-spread": { "get": { "tags": [ "Stats" ], "parameters": [ { "name": "StartDate", "in": "query", "schema": { "type": "string", "format": "date-time" } }, { "name": "TimeZoneId", "in": "query", "schema": { "type": "string" } }, { "name": "EndDate", "in": "query", "schema": { "type": "string", "format": "date-time" } }, { "name": "Libraries", "in": "query", "schema": { "type": "array", "items": { "type": "integer", "format": "int32" } } }, { "name": "userId", "in": "query", "schema": { "type": "integer", "format": "int32" } } ], "responses": { "200": { "description": "OK", "content": { "text/plain": { "schema": { "$ref": "#/components/schemas/SpreadStatsDto" } }, "application/json": { "schema": { "$ref": "#/components/schemas/SpreadStatsDto" } }, "text/json": { "schema": { "$ref": "#/components/schemas/SpreadStatsDto" } } } } } } }, "/api/Stats/word-spread": { "get": { "tags": [ "Stats" ], "parameters": [ { "name": "StartDate", "in": "query", "schema": { "type": "string", "format": "date-time" } }, { "name": "TimeZoneId", "in": "query", "schema": { "type": "string" } }, { "name": "EndDate", "in": "query", "schema": { "type": "string", "format": "date-time" } }, { "name": "Libraries", "in": "query", "schema": { "type": "array", "items": { "type": "integer", "format": "int32" } } }, { "name": "userId", "in": "query", "schema": { "type": "integer", "format": "int32" } } ], "responses": { "200": { "description": "OK", "content": { "text/plain": { "schema": { "$ref": "#/components/schemas/SpreadStatsDto" } }, "application/json": { "schema": { "$ref": "#/components/schemas/SpreadStatsDto" } }, "text/json": { "schema": { "$ref": "#/components/schemas/SpreadStatsDto" } } } } } } }, "/api/Stats/favorite-authors": { "get": { "tags": [ "Stats" ], "parameters": [ { "name": "StartDate", "in": "query", "schema": { "type": "string", "format": "date-time" } }, { "name": "TimeZoneId", "in": "query", "schema": { "type": "string" } }, { "name": "EndDate", "in": "query", "schema": { "type": "string", "format": "date-time" } }, { "name": "Libraries", "in": "query", "schema": { "type": "array", "items": { "type": "integer", "format": "int32" } } }, { "name": "userId", "in": "query", "schema": { "type": "integer", "format": "int32" } } ], "responses": { "200": { "description": "OK", "content": { "text/plain": { "schema": { "$ref": "#/components/schemas/MostReadAuthorsDto" } }, "application/json": { "schema": { "$ref": "#/components/schemas/MostReadAuthorsDto" } }, "text/json": { "schema": { "$ref": "#/components/schemas/MostReadAuthorsDto" } } } } } } }, "/api/Stats/avg-time-by-hour": { "get": { "tags": [ "Stats" ], "summary": "Returns the avg time read by hour in the given filter", "parameters": [ { "name": "StartDate", "in": "query", "schema": { "type": "string", "format": "date-time" } }, { "name": "TimeZoneId", "in": "query", "schema": { "type": "string" } }, { "name": "EndDate", "in": "query", "schema": { "type": "string", "format": "date-time" } }, { "name": "Libraries", "in": "query", "schema": { "type": "array", "items": { "type": "integer", "format": "int32" } } }, { "name": "userId", "in": "query", "description": "", "schema": { "type": "integer", "format": "int32" } } ], "responses": { "200": { "description": "OK", "content": { "text/plain": { "schema": { "$ref": "#/components/schemas/ReadTimeByHourDto" } }, "application/json": { "schema": { "$ref": "#/components/schemas/ReadTimeByHourDto" } }, "text/json": { "schema": { "$ref": "#/components/schemas/ReadTimeByHourDto" } } } } } } }, "/api/Stats/reads-by-month": { "get": { "tags": [ "Stats" ], "parameters": [ { "name": "StartDate", "in": "query", "schema": { "type": "string", "format": "date-time" } }, { "name": "TimeZoneId", "in": "query", "schema": { "type": "string" } }, { "name": "EndDate", "in": "query", "schema": { "type": "string", "format": "date-time" } }, { "name": "Libraries", "in": "query", "schema": { "type": "array", "items": { "type": "integer", "format": "int32" } } }, { "name": "userId", "in": "query", "schema": { "type": "integer", "format": "int32" } } ], "responses": { "200": { "description": "OK", "content": { "text/plain": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/YearMonthGroupingDtoStatCount" } } }, "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/YearMonthGroupingDtoStatCount" } } }, "text/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/YearMonthGroupingDtoStatCount" } } } } } } } }, "/api/Stats/total-reads": { "get": { "tags": [ "Stats" ], "summary": "Returns the total amount reads in the given filter", "parameters": [ { "name": "userId", "in": "query", "description": "", "schema": { "type": "integer", "format": "int32" } } ], "responses": { "200": { "description": "OK", "content": { "text/plain": { "schema": { "type": "integer", "format": "int32" } }, "application/json": { "schema": { "type": "integer", "format": "int32" } }, "text/json": { "schema": { "type": "integer", "format": "int32" } } } } } } }, "/api/Stats/user-stats": { "get": { "tags": [ "Stats" ], "parameters": [ { "name": "StartDate", "in": "query", "schema": { "type": "string", "format": "date-time" } }, { "name": "TimeZoneId", "in": "query", "schema": { "type": "string" } }, { "name": "EndDate", "in": "query", "schema": { "type": "string", "format": "date-time" } }, { "name": "Libraries", "in": "query", "schema": { "type": "array", "items": { "type": "integer", "format": "int32" } } }, { "name": "userId", "in": "query", "schema": { "type": "integer", "format": "int32" } } ], "responses": { "200": { "description": "OK", "content": { "text/plain": { "schema": { "$ref": "#/components/schemas/ProfileStatBarDto" } }, "application/json": { "schema": { "$ref": "#/components/schemas/ProfileStatBarDto" } }, "text/json": { "schema": { "$ref": "#/components/schemas/ProfileStatBarDto" } } } } } } }, "/api/Stats/user-read": { "get": { "tags": [ "Stats" ], "parameters": [ { "name": "userId", "in": "query", "schema": { "type": "integer", "format": "int32" } } ], "responses": { "200": { "description": "OK", "content": { "text/plain": { "schema": { "$ref": "#/components/schemas/UserReadStatistics" } }, "application/json": { "schema": { "$ref": "#/components/schemas/UserReadStatistics" } }, "text/json": { "schema": { "$ref": "#/components/schemas/UserReadStatistics" } } } } } } }, "/api/Stats/reading-history": { "get": { "tags": [ "Stats" ], "summary": "Return a user's reading session history", "parameters": [ { "name": "StartDate", "in": "query", "schema": { "type": "string", "format": "date-time" } }, { "name": "TimeZoneId", "in": "query", "schema": { "type": "string" } }, { "name": "EndDate", "in": "query", "schema": { "type": "string", "format": "date-time" } }, { "name": "Libraries", "in": "query", "schema": { "type": "array", "items": { "type": "integer", "format": "int32" } } }, { "name": "PageNumber", "in": "query", "schema": { "type": "integer", "format": "int32" } }, { "name": "PageSize", "in": "query", "schema": { "type": "integer", "format": "int32" } } ], "responses": { "200": { "description": "OK", "content": { "text/plain": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/ReadingHistoryItemDto" } } }, "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/ReadingHistoryItemDto" } } }, "text/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/ReadingHistoryItemDto" } } } } } } } }, "/api/Stream/dashboard": { "get": { "tags": [ "Stream" ], "summary": "Returns the layout of the user's dashboard", "parameters": [ { "name": "visibleOnly", "in": "query", "schema": { "type": "boolean", "default": true } } ], "responses": { "200": { "description": "OK", "content": { "text/plain": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/DashboardStreamDto" } } }, "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/DashboardStreamDto" } } }, "text/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/DashboardStreamDto" } } } } } } } }, "/api/Stream/sidenav": { "get": { "tags": [ "Stream" ], "summary": "Return's the user's side nav", "parameters": [ { "name": "visibleOnly", "in": "query", "schema": { "type": "boolean", "default": true } } ], "responses": { "200": { "description": "OK", "content": { "text/plain": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/SideNavStreamDto" } } }, "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/SideNavStreamDto" } } }, "text/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/SideNavStreamDto" } } } } } } } }, "/api/Stream/external-sources": { "get": { "tags": [ "Stream" ], "summary": "Return's the user's external sources", "responses": { "200": { "description": "OK", "content": { "text/plain": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/ExternalSourceDto" } } }, "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/ExternalSourceDto" } } }, "text/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/ExternalSourceDto" } } } } } } } }, "/api/Stream/create-external-source": { "post": { "tags": [ "Stream" ], "summary": "Create an external Source", "requestBody": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ExternalSourceDto" } }, "text/json": { "schema": { "$ref": "#/components/schemas/ExternalSourceDto" } }, "application/*+json": { "schema": { "$ref": "#/components/schemas/ExternalSourceDto" } } } }, "responses": { "200": { "description": "OK", "content": { "text/plain": { "schema": { "$ref": "#/components/schemas/ExternalSourceDto" } }, "application/json": { "schema": { "$ref": "#/components/schemas/ExternalSourceDto" } }, "text/json": { "schema": { "$ref": "#/components/schemas/ExternalSourceDto" } } } } } } }, "/api/Stream/update-external-source": { "post": { "tags": [ "Stream" ], "summary": "Updates an existing external source", "requestBody": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ExternalSourceDto" } }, "text/json": { "schema": { "$ref": "#/components/schemas/ExternalSourceDto" } }, "application/*+json": { "schema": { "$ref": "#/components/schemas/ExternalSourceDto" } } } }, "responses": { "200": { "description": "OK", "content": { "text/plain": { "schema": { "$ref": "#/components/schemas/ExternalSourceDto" } }, "application/json": { "schema": { "$ref": "#/components/schemas/ExternalSourceDto" } }, "text/json": { "schema": { "$ref": "#/components/schemas/ExternalSourceDto" } } } } } } }, "/api/Stream/external-source-exists": { "post": { "tags": [ "Stream" ], "summary": "Validates the external source by host is unique (for this user)", "requestBody": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ExternalSourceDto" } }, "text/json": { "schema": { "$ref": "#/components/schemas/ExternalSourceDto" } }, "application/*+json": { "schema": { "$ref": "#/components/schemas/ExternalSourceDto" } } } }, "responses": { "200": { "description": "OK", "content": { "text/plain": { "schema": { "type": "boolean" } }, "application/json": { "schema": { "type": "boolean" } }, "text/json": { "schema": { "type": "boolean" } } } } } } }, "/api/Stream/delete-external-source": { "delete": { "tags": [ "Stream" ], "summary": "Delete's the external source", "parameters": [ { "name": "externalSourceId", "in": "query", "description": "", "schema": { "type": "integer", "format": "int32" } } ], "responses": { "200": { "description": "OK" } } } }, "/api/Stream/add-dashboard-stream": { "post": { "tags": [ "Stream" ], "summary": "Creates a Dashboard Stream from a SmartFilter and adds it to the user's dashboard as visible", "parameters": [ { "name": "smartFilterId", "in": "query", "description": "", "schema": { "type": "integer", "format": "int32" } } ], "responses": { "200": { "description": "OK", "content": { "text/plain": { "schema": { "$ref": "#/components/schemas/DashboardStreamDto" } }, "application/json": { "schema": { "$ref": "#/components/schemas/DashboardStreamDto" } }, "text/json": { "schema": { "$ref": "#/components/schemas/DashboardStreamDto" } } } } } } }, "/api/Stream/update-dashboard-stream": { "post": { "tags": [ "Stream" ], "summary": "Updates the visibility of a dashboard stream", "requestBody": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/DashboardStreamDto" } }, "text/json": { "schema": { "$ref": "#/components/schemas/DashboardStreamDto" } }, "application/*+json": { "schema": { "$ref": "#/components/schemas/DashboardStreamDto" } } } }, "responses": { "200": { "description": "OK" } } } }, "/api/Stream/update-dashboard-position": { "post": { "tags": [ "Stream" ], "summary": "Updates the position of a dashboard stream", "requestBody": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/UpdateStreamPositionDto" } }, "text/json": { "schema": { "$ref": "#/components/schemas/UpdateStreamPositionDto" } }, "application/*+json": { "schema": { "$ref": "#/components/schemas/UpdateStreamPositionDto" } } } }, "responses": { "200": { "description": "OK" } } } }, "/api/Stream/add-sidenav-stream": { "post": { "tags": [ "Stream" ], "summary": "Creates a SideNav Stream from a SmartFilter and adds it to the user's sidenav as visible", "parameters": [ { "name": "smartFilterId", "in": "query", "description": "", "schema": { "type": "integer", "format": "int32" } } ], "responses": { "200": { "description": "OK", "content": { "text/plain": { "schema": { "$ref": "#/components/schemas/SideNavStreamDto" } }, "application/json": { "schema": { "$ref": "#/components/schemas/SideNavStreamDto" } }, "text/json": { "schema": { "$ref": "#/components/schemas/SideNavStreamDto" } } } } } } }, "/api/Stream/add-sidenav-stream-from-external-source": { "post": { "tags": [ "Stream" ], "summary": "Creates a SideNav Stream from a SmartFilter and adds it to the user's sidenav as visible", "parameters": [ { "name": "externalSourceId", "in": "query", "description": "", "schema": { "type": "integer", "format": "int32" } } ], "responses": { "200": { "description": "OK", "content": { "text/plain": { "schema": { "$ref": "#/components/schemas/SideNavStreamDto" } }, "application/json": { "schema": { "$ref": "#/components/schemas/SideNavStreamDto" } }, "text/json": { "schema": { "$ref": "#/components/schemas/SideNavStreamDto" } } } } } } }, "/api/Stream/update-sidenav-stream": { "post": { "tags": [ "Stream" ], "summary": "Updates the visibility of a dashboard stream", "requestBody": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/SideNavStreamDto" } }, "text/json": { "schema": { "$ref": "#/components/schemas/SideNavStreamDto" } }, "application/*+json": { "schema": { "$ref": "#/components/schemas/SideNavStreamDto" } } } }, "responses": { "200": { "description": "OK" } } } }, "/api/Stream/update-sidenav-position": { "post": { "tags": [ "Stream" ], "summary": "Updates the position of a dashboard stream", "requestBody": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/UpdateStreamPositionDto" } }, "text/json": { "schema": { "$ref": "#/components/schemas/UpdateStreamPositionDto" } }, "application/*+json": { "schema": { "$ref": "#/components/schemas/UpdateStreamPositionDto" } } } }, "responses": { "200": { "description": "OK" } } } }, "/api/Stream/bulk-sidenav-stream-visibility": { "post": { "tags": [ "Stream" ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/BulkUpdateSideNavStreamVisibilityDto" } }, "text/json": { "schema": { "$ref": "#/components/schemas/BulkUpdateSideNavStreamVisibilityDto" } }, "application/*+json": { "schema": { "$ref": "#/components/schemas/BulkUpdateSideNavStreamVisibilityDto" } } } }, "responses": { "200": { "description": "OK" } } } }, "/api/Stream/smart-filter-side-nav-stream": { "delete": { "tags": [ "Stream" ], "summary": "Removes a Smart Filter from a user's SideNav Streams", "parameters": [ { "name": "sideNavStreamId", "in": "query", "description": "", "schema": { "type": "integer", "format": "int32" } } ], "responses": { "200": { "description": "OK" } } } }, "/api/Stream/smart-filter-dashboard-stream": { "delete": { "tags": [ "Stream" ], "summary": "Removes a Smart Filter from a user's Dashboard Streams", "parameters": [ { "name": "dashboardStreamId", "in": "query", "description": "", "schema": { "type": "integer", "format": "int32" } } ], "responses": { "200": { "description": "OK" } } } }, "/api/Tachiyomi/latest-chapter": { "get": { "tags": [ "Tachiyomi" ], "summary": "Given the series Id, this should return the latest chapter that has been fully read.", "parameters": [ { "name": "seriesId", "in": "query", "description": "", "schema": { "type": "integer", "format": "int32" } } ], "responses": { "200": { "description": "OK", "content": { "text/plain": { "schema": { "$ref": "#/components/schemas/ChapterDto" } }, "application/json": { "schema": { "$ref": "#/components/schemas/ChapterDto" } }, "text/json": { "schema": { "$ref": "#/components/schemas/ChapterDto" } } } } } } }, "/api/Tachiyomi/mark-chapter-until-as-read": { "post": { "tags": [ "Tachiyomi" ], "summary": "Marks every chapter that is sorted below the passed number as Read. This will not mark any specials as read.", "description": "This is built for Tachiyomi and is not expected to be called by any other place", "parameters": [ { "name": "seriesId", "in": "query", "schema": { "type": "integer", "format": "int32" } }, { "name": "chapterNumber", "in": "query", "schema": { "type": "number", "format": "float" } } ], "responses": { "200": { "description": "OK", "content": { "text/plain": { "schema": { "type": "boolean" } }, "application/json": { "schema": { "type": "boolean" } }, "text/json": { "schema": { "type": "boolean" } } } } } } }, "/api/Theme": { "get": { "tags": [ "Theme" ], "responses": { "200": { "description": "OK", "content": { "text/plain": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/SiteThemeDto" } } }, "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/SiteThemeDto" } } }, "text/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/SiteThemeDto" } } } } } } }, "delete": { "tags": [ "Theme" ], "summary": "Attempts to delete a theme. If already in use by users, will not allow", "parameters": [ { "name": "themeId", "in": "query", "description": "", "schema": { "type": "integer", "format": "int32" } } ], "responses": { "200": { "description": "OK", "content": { "text/plain": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/DownloadableSiteThemeDto" } } }, "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/DownloadableSiteThemeDto" } } }, "text/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/DownloadableSiteThemeDto" } } } } } } } }, "/api/Theme/update-default": { "post": { "tags": [ "Theme" ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/UpdateDefaultThemeDto" } }, "text/json": { "schema": { "$ref": "#/components/schemas/UpdateDefaultThemeDto" } }, "application/*+json": { "schema": { "$ref": "#/components/schemas/UpdateDefaultThemeDto" } } } }, "responses": { "200": { "description": "OK" } } } }, "/api/Theme/download-content": { "get": { "tags": [ "Theme" ], "summary": "Returns css content to the UI. UI is expected to escape the content", "parameters": [ { "name": "themeId", "in": "query", "schema": { "type": "integer", "format": "int32" } } ], "responses": { "200": { "description": "OK", "content": { "text/plain": { "schema": { "type": "string" } }, "application/json": { "schema": { "type": "string" } }, "text/json": { "schema": { "type": "string" } } } } } } }, "/api/Theme/browse": { "get": { "tags": [ "Theme" ], "summary": "Browse themes that can be used on this server", "responses": { "200": { "description": "OK", "content": { "text/plain": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/DownloadableSiteThemeDto" } } }, "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/DownloadableSiteThemeDto" } } }, "text/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/DownloadableSiteThemeDto" } } } } } } } }, "/api/Theme/download-theme": { "post": { "tags": [ "Theme" ], "summary": "Downloads a SiteTheme from upstream", "requestBody": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/DownloadableSiteThemeDto" } }, "text/json": { "schema": { "$ref": "#/components/schemas/DownloadableSiteThemeDto" } }, "application/*+json": { "schema": { "$ref": "#/components/schemas/DownloadableSiteThemeDto" } } } }, "responses": { "200": { "description": "OK", "content": { "text/plain": { "schema": { "$ref": "#/components/schemas/SiteThemeDto" } }, "application/json": { "schema": { "$ref": "#/components/schemas/SiteThemeDto" } }, "text/json": { "schema": { "$ref": "#/components/schemas/SiteThemeDto" } } } } } } }, "/api/Theme/upload-theme": { "post": { "tags": [ "Theme" ], "summary": "Uploads a new theme file", "requestBody": { "content": { "multipart/form-data": { "schema": { "type": "object", "properties": { "formFile": { "type": "string", "description": "", "format": "binary" } } }, "encoding": { "formFile": { "style": "form" } } } } }, "responses": { "200": { "description": "OK", "content": { "text/plain": { "schema": { "$ref": "#/components/schemas/SiteThemeDto" } }, "application/json": { "schema": { "$ref": "#/components/schemas/SiteThemeDto" } }, "text/json": { "schema": { "$ref": "#/components/schemas/SiteThemeDto" } } } } } } }, "/api/Upload/upload-by-url": { "post": { "tags": [ "Upload" ], "summary": "This stores a file (image) in temp directory for use in a cover image replacement flow.\nThis is automatically cleaned up.", "requestBody": { "description": "Escaped url to download from", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/UploadUrlDto" } }, "text/json": { "schema": { "$ref": "#/components/schemas/UploadUrlDto" } }, "application/*+json": { "schema": { "$ref": "#/components/schemas/UploadUrlDto" } } } }, "responses": { "200": { "description": "OK", "content": { "text/plain": { "schema": { "type": "string" } }, "application/json": { "schema": { "type": "string" } }, "text/json": { "schema": { "type": "string" } } } } } } }, "/api/Upload/series": { "post": { "tags": [ "Upload" ], "summary": "Replaces series cover image and locks it with a base64 encoded image", "requestBody": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/UploadFileDto" } }, "text/json": { "schema": { "$ref": "#/components/schemas/UploadFileDto" } }, "application/*+json": { "schema": { "$ref": "#/components/schemas/UploadFileDto" } } } }, "responses": { "200": { "description": "OK" } } } }, "/api/Upload/collection": { "post": { "tags": [ "Upload" ], "summary": "Replaces collection tag cover image and locks it with a base64 encoded image", "requestBody": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/UploadFileDto" } }, "text/json": { "schema": { "$ref": "#/components/schemas/UploadFileDto" } }, "application/*+json": { "schema": { "$ref": "#/components/schemas/UploadFileDto" } } } }, "responses": { "200": { "description": "OK" } } } }, "/api/Upload/reading-list": { "post": { "tags": [ "Upload" ], "summary": "Replaces reading list cover image and locks it with a base64 encoded image", "description": "This is the only API that can be called by non-admins, but the authenticated user must have a readinglist permission", "requestBody": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/UploadFileDto" } }, "text/json": { "schema": { "$ref": "#/components/schemas/UploadFileDto" } }, "application/*+json": { "schema": { "$ref": "#/components/schemas/UploadFileDto" } } } }, "responses": { "200": { "description": "OK" } } } }, "/api/Upload/chapter": { "post": { "tags": [ "Upload" ], "summary": "Replaces chapter cover image and locks it with a base64 encoded image. This will update the parent volume's cover image.", "requestBody": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/UploadFileDto" } }, "text/json": { "schema": { "$ref": "#/components/schemas/UploadFileDto" } }, "application/*+json": { "schema": { "$ref": "#/components/schemas/UploadFileDto" } } } }, "responses": { "200": { "description": "OK" } } } }, "/api/Upload/volume": { "post": { "tags": [ "Upload" ], "summary": "Replaces volume cover image and locks it with a base64 encoded image.", "description": "This will not update the underlying chapter", "requestBody": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/UploadFileDto" } }, "text/json": { "schema": { "$ref": "#/components/schemas/UploadFileDto" } }, "application/*+json": { "schema": { "$ref": "#/components/schemas/UploadFileDto" } } } }, "responses": { "200": { "description": "OK" } } } }, "/api/Upload/library": { "post": { "tags": [ "Upload" ], "summary": "Replaces library cover image with a base64 encoded image. If empty string passed, will reset to null.", "requestBody": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/UploadFileDto" } }, "text/json": { "schema": { "$ref": "#/components/schemas/UploadFileDto" } }, "application/*+json": { "schema": { "$ref": "#/components/schemas/UploadFileDto" } } } }, "responses": { "200": { "description": "OK" } } } }, "/api/Upload/person": { "post": { "tags": [ "Upload" ], "summary": "Replaces person tag cover image and locks it with a base64 encoded image", "requestBody": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/UploadFileDto" } }, "text/json": { "schema": { "$ref": "#/components/schemas/UploadFileDto" } }, "application/*+json": { "schema": { "$ref": "#/components/schemas/UploadFileDto" } } } }, "responses": { "200": { "description": "OK" } } } }, "/api/Upload/user": { "post": { "tags": [ "Upload" ], "summary": "Replaces user cover image and locks it with a base64 encoded image", "description": "You MUST be the user in question", "requestBody": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/UploadFileDto" } }, "text/json": { "schema": { "$ref": "#/components/schemas/UploadFileDto" } }, "application/*+json": { "schema": { "$ref": "#/components/schemas/UploadFileDto" } } } }, "responses": { "200": { "description": "OK" } } } }, "/api/Users/delete-user": { "delete": { "tags": [ "Users" ], "parameters": [ { "name": "username", "in": "query", "schema": { "type": "string" } } ], "responses": { "200": { "description": "OK" } } } }, "/api/Users": { "get": { "tags": [ "Users" ], "summary": "Returns all users of this server", "parameters": [ { "name": "includePending", "in": "query", "description": "This will include pending members", "schema": { "type": "boolean", "default": false } } ], "responses": { "200": { "description": "OK", "content": { "text/plain": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/MemberDto" } } }, "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/MemberDto" } } }, "text/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/MemberDto" } } } } } } } }, "/api/Users/profile-info": { "get": { "tags": [ "Users" ], "summary": "Get Information about a given user", "parameters": [ { "name": "userId", "in": "query", "schema": { "type": "integer", "format": "int32" } } ], "responses": { "200": { "description": "OK", "content": { "text/plain": { "schema": { "$ref": "#/components/schemas/MemberInfoDto" } }, "application/json": { "schema": { "$ref": "#/components/schemas/MemberInfoDto" } }, "text/json": { "schema": { "$ref": "#/components/schemas/MemberInfoDto" } } } } } } }, "/api/Users/has-profile-shared": { "get": { "tags": [ "Users" ], "summary": "Does the requested user have their profile sharing on", "parameters": [ { "name": "userId", "in": "query", "description": "", "schema": { "type": "integer", "format": "int32" } } ], "responses": { "200": { "description": "OK", "content": { "text/plain": { "schema": { "type": "boolean" } }, "application/json": { "schema": { "type": "boolean" } }, "text/json": { "schema": { "type": "boolean" } } } } } } }, "/api/Users/has-reading-progress": { "get": { "tags": [ "Users" ], "summary": "Is there any reading progress on this library", "parameters": [ { "name": "libraryId", "in": "query", "description": "", "schema": { "type": "integer", "format": "int32" } } ], "responses": { "200": { "description": "OK", "content": { "text/plain": { "schema": { "type": "boolean" } }, "application/json": { "schema": { "type": "boolean" } }, "text/json": { "schema": { "type": "boolean" } } } } } } }, "/api/Users/has-library-access": { "get": { "tags": [ "Users" ], "summary": "Does the user have access to this library", "parameters": [ { "name": "libraryId", "in": "query", "description": "", "schema": { "type": "integer", "format": "int32" } } ], "responses": { "200": { "description": "OK", "content": { "text/plain": { "schema": { "type": "boolean" } }, "application/json": { "schema": { "type": "boolean" } }, "text/json": { "schema": { "type": "boolean" } } } } } } }, "/api/Users/update-preferences": { "post": { "tags": [ "Users" ], "summary": "Update the user preferences", "description": "If the user has ReadOnly role, they will not be able to perform this action", "requestBody": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/UserPreferencesDto" } }, "text/json": { "schema": { "$ref": "#/components/schemas/UserPreferencesDto" } }, "application/*+json": { "schema": { "$ref": "#/components/schemas/UserPreferencesDto" } } } }, "responses": { "200": { "description": "OK", "content": { "text/plain": { "schema": { "$ref": "#/components/schemas/UserPreferencesDto" } }, "application/json": { "schema": { "$ref": "#/components/schemas/UserPreferencesDto" } }, "text/json": { "schema": { "$ref": "#/components/schemas/UserPreferencesDto" } } } } } } }, "/api/Users/get-preferences": { "get": { "tags": [ "Users" ], "summary": "Returns the preferences of the user", "responses": { "200": { "description": "OK", "content": { "text/plain": { "schema": { "$ref": "#/components/schemas/UserPreferencesDto" } }, "application/json": { "schema": { "$ref": "#/components/schemas/UserPreferencesDto" } }, "text/json": { "schema": { "$ref": "#/components/schemas/UserPreferencesDto" } } } } } } }, "/api/Users/names": { "get": { "tags": [ "Users" ], "summary": "Returns a list of the user names within the system", "responses": { "200": { "description": "OK", "content": { "text/plain": { "schema": { "type": "array", "items": { "type": "string" } } }, "application/json": { "schema": { "type": "array", "items": { "type": "string" } } }, "text/json": { "schema": { "type": "array", "items": { "type": "string" } } } } } } } }, "/api/Users/tokens": { "get": { "tags": [ "Users" ], "summary": "Returns all users with tokens registered and their token information. Does not send the tokens.", "description": "Kavita+ only", "responses": { "200": { "description": "OK", "content": { "text/plain": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/UserTokenInfo" } } }, "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/UserTokenInfo" } } }, "text/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/UserTokenInfo" } } } } } } } }, "/api/Volume": { "get": { "tags": [ "Volume" ], "summary": "Returns the appropriate Volume", "parameters": [ { "name": "volumeId", "in": "query", "description": "", "schema": { "type": "integer", "format": "int32" } } ], "responses": { "200": { "description": "OK", "content": { "text/plain": { "schema": { "$ref": "#/components/schemas/VolumeDto" } }, "application/json": { "schema": { "$ref": "#/components/schemas/VolumeDto" } }, "text/json": { "schema": { "$ref": "#/components/schemas/VolumeDto" } } } } } }, "delete": { "tags": [ "Volume" ], "summary": "Delete the Volume from the DB", "parameters": [ { "name": "volumeId", "in": "query", "description": "", "schema": { "type": "integer", "format": "int32" } } ], "responses": { "200": { "description": "OK", "content": { "text/plain": { "schema": { "type": "boolean" } }, "application/json": { "schema": { "type": "boolean" } }, "text/json": { "schema": { "type": "boolean" } } } } } } }, "/api/Volume/update": { "post": { "tags": [ "Volume" ], "summary": "Updates the information on the Volume", "requestBody": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/UpdateVolumeDto" } }, "text/json": { "schema": { "$ref": "#/components/schemas/UpdateVolumeDto" } }, "application/*+json": { "schema": { "$ref": "#/components/schemas/UpdateVolumeDto" } } } }, "responses": { "200": { "description": "OK", "content": { "text/plain": { "schema": { "$ref": "#/components/schemas/VolumeDto" } }, "application/json": { "schema": { "$ref": "#/components/schemas/VolumeDto" } }, "text/json": { "schema": { "$ref": "#/components/schemas/VolumeDto" } } } } } } }, "/api/Volume/multiple": { "post": { "tags": [ "Volume" ], "summary": "Delete multiple Volumes from the DB", "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", "content": { "text/plain": { "schema": { "type": "boolean" } }, "application/json": { "schema": { "type": "boolean" } }, "text/json": { "schema": { "type": "boolean" } } } } } } }, "/api/want-to-read/v2": { "post": { "tags": [ "WantToRead" ], "summary": "Return all Series that are in the current logged in user's Want to Read list, filtered", "parameters": [ { "name": "PageNumber", "in": "query", "schema": { "type": "integer", "format": "int32" } }, { "name": "PageSize", "in": "query", "schema": { "type": "integer", "format": "int32" } }, { "name": "userId", "in": "query", "description": "Optional user id to request the OnDeck for someone else. They must have profile sharing enabled when doing so", "schema": { "type": "integer", "format": "int32" } } ], "requestBody": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/FilterV2Dto" } }, "text/json": { "schema": { "$ref": "#/components/schemas/FilterV2Dto" } }, "application/*+json": { "schema": { "$ref": "#/components/schemas/FilterV2Dto" } } } }, "responses": { "200": { "description": "OK", "content": { "text/plain": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/SeriesDto" } } }, "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/SeriesDto" } } }, "text/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/SeriesDto" } } } } } } } }, "/api/want-to-read/add-series": { "post": { "tags": [ "WantToRead" ], "summary": "Given a list of Series Ids, add them to the current logged in user's Want To Read list", "requestBody": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/UpdateWantToReadDto" } }, "text/json": { "schema": { "$ref": "#/components/schemas/UpdateWantToReadDto" } }, "application/*+json": { "schema": { "$ref": "#/components/schemas/UpdateWantToReadDto" } } } }, "responses": { "200": { "description": "OK" } } } }, "/api/want-to-read/remove-series": { "post": { "tags": [ "WantToRead" ], "summary": "Given a list of Series Ids, remove them from the current logged in user's Want To Read list", "requestBody": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/UpdateWantToReadDto" } }, "text/json": { "schema": { "$ref": "#/components/schemas/UpdateWantToReadDto" } }, "application/*+json": { "schema": { "$ref": "#/components/schemas/UpdateWantToReadDto" } } } }, "responses": { "200": { "description": "OK" } } } } }, "components": { "schemas": { "ALMediaTitle": { "type": "object", "properties": { "englishTitle": { "type": "string", "nullable": true }, "romajiTitle": { "type": "string", "nullable": true }, "nativeTitle": { "type": "string", "nullable": true }, "preferredTitle": { "type": "string", "nullable": true } }, "additionalProperties": false }, "AgeRatingDto": { "required": [ "title" ], "type": "object", "properties": { "value": { "enum": [ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, -1 ], "type": "integer", "format": "int32" }, "title": { "type": "string", "nullable": true } }, "additionalProperties": false }, "AgeRestrictionDto": { "required": [ "ageRating", "includeUnknowns" ], "type": "object", "properties": { "ageRating": { "enum": [ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, -1 ], "type": "integer", "format": "int32" }, "includeUnknowns": { "type": "boolean" } }, "additionalProperties": false }, "AniListUpdateDto": { "type": "object", "properties": { "token": { "type": "string", "nullable": true } }, "additionalProperties": false }, "AnnotationDto": { "required": [ "chapterId", "libraryId", "ownerUserId", "seriesId", "volumeId", "xPath" ], "type": "object", "properties": { "id": { "type": "integer", "format": "int32" }, "xPath": { "type": "string", "nullable": true }, "endingXPath": { "type": "string", "nullable": true }, "selectedText": { "type": "string", "nullable": true }, "comment": { "type": "string", "nullable": true }, "commentHtml": { "type": "string", "nullable": true }, "commentPlainText": { "type": "string", "nullable": true }, "chapterTitle": { "type": "string", "nullable": true }, "context": { "type": "string", "nullable": true }, "highlightCount": { "type": "integer", "format": "int32" }, "containsSpoiler": { "type": "boolean" }, "pageNumber": { "type": "integer", "format": "int32" }, "selectedSlotIndex": { "type": "integer", "format": "int32" }, "likes": { "type": "array", "items": { "type": "integer", "format": "int32" }, "nullable": true }, "seriesName": { "type": "string", "nullable": true }, "libraryName": { "type": "string", "nullable": true }, "chapterId": { "type": "integer", "format": "int32" }, "volumeId": { "type": "integer", "format": "int32" }, "seriesId": { "type": "integer", "format": "int32" }, "libraryId": { "type": "integer", "format": "int32" }, "ownerUserId": { "type": "integer", "format": "int32" }, "ownerUsername": { "type": "string", "nullable": true }, "ageRating": { "enum": [ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, -1 ], "type": "integer", "format": "int32" }, "createdUtc": { "type": "string", "format": "date-time" }, "lastModifiedUtc": { "type": "string", "format": "date-time" } }, "additionalProperties": false }, "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, 7, 8, 9 ], "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 }, "AppUserCollectionDto": { "type": "object", "properties": { "id": { "type": "integer", "format": "int32" }, "title": { "type": "string", "nullable": true }, "summary": { "type": "string", "nullable": true }, "promoted": { "type": "boolean" }, "ageRating": { "enum": [ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, -1 ], "type": "integer", "format": "int32" }, "coverImage": { "type": "string", "nullable": true }, "primaryColor": { "type": "string", "nullable": true }, "secondaryColor": { "type": "string", "nullable": true }, "coverImageLocked": { "type": "boolean" }, "itemCount": { "type": "integer", "format": "int32" }, "owner": { "type": "string", "nullable": true }, "lastSyncUtc": { "type": "string", "format": "date-time" }, "source": { "enum": [ 0, 1, 2, 3, 4, 5 ], "type": "integer", "format": "int32" }, "sourceUrl": { "type": "string", "nullable": true }, "totalSourceCount": { "type": "integer", "format": "int32" }, "missingSeriesFromSource": { "type": "string", "nullable": true } }, "additionalProperties": false }, "AppUserOpdsPreferences": { "type": "object", "properties": { "embedProgressIndicator": { "type": "boolean" }, "includeContinueFrom": { "type": "boolean" } }, "additionalProperties": false }, "AppUserSocialPreferences": { "type": "object", "properties": { "shareReviews": { "type": "boolean" }, "shareAnnotations": { "type": "boolean" }, "viewOtherAnnotations": { "type": "boolean" }, "socialLibraries": { "type": "array", "items": { "type": "integer", "format": "int32" }, "nullable": true }, "socialMaxAgeRating": { "enum": [ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, -1 ], "type": "integer", "format": "int32" }, "socialIncludeUnknowns": { "type": "boolean" }, "shareProfile": { "type": "boolean" } }, "additionalProperties": false }, "AuthKeyDto": { "required": [ "key", "name" ], "type": "object", "properties": { "id": { "type": "integer", "format": "int32" }, "key": { "type": "string", "nullable": true }, "name": { "type": "string", "nullable": true }, "createdAtUtc": { "type": "string", "format": "date-time" }, "expiresAtUtc": { "type": "string", "format": "date-time", "nullable": true }, "lastAccessedAtUtc": { "type": "string", "format": "date-time", "nullable": true }, "provider": { "enum": [ 0, 1 ], "type": "integer", "format": "int32" } }, "additionalProperties": false }, "AuthKeyExpiresAtDto": { "required": [ "expiresAt" ], "type": "object", "properties": { "expiresAt": { "type": "string", "format": "date-time", "nullable": true } }, "additionalProperties": false }, "AuthorChapterDto": { "type": "object", "properties": { "libraryId": { "type": "integer", "format": "int32" }, "seriesId": { "type": "integer", "format": "int32" }, "chapterId": { "type": "integer", "format": "int32" }, "title": { "type": "string", "nullable": true } }, "additionalProperties": false }, "AuthorityValidationDto": { "type": "object", "properties": { "authority": { "type": "string", "nullable": true } }, "additionalProperties": false }, "BookChapterItem": { "type": "object", "properties": { "title": { "type": "string", "nullable": true }, "part": { "type": "string", "nullable": true }, "page": { "type": "integer", "format": "int32" }, "children": { "type": "array", "items": { "$ref": "#/components/schemas/BookChapterItem" }, "nullable": true } }, "additionalProperties": false }, "BookInfoDto": { "type": "object", "properties": { "bookTitle": { "type": "string", "nullable": true }, "seriesId": { "type": "integer", "format": "int32" }, "volumeId": { "type": "integer", "format": "int32" }, "seriesFormat": { "enum": [ 0, 1, 2, 3, 4 ], "type": "integer", "format": "int32" }, "seriesName": { "type": "string", "nullable": true }, "chapterNumber": { "type": "string", "nullable": true }, "volumeNumber": { "type": "string", "nullable": true }, "libraryId": { "type": "integer", "format": "int32" }, "pages": { "type": "integer", "format": "int32" }, "isSpecial": { "type": "boolean" }, "chapterTitle": { "type": "string", "nullable": true } }, "additionalProperties": false }, "BookmarkDto": { "required": [ "chapterId", "page", "seriesId", "volumeId" ], "type": "object", "properties": { "id": { "type": "integer", "format": "int32" }, "page": { "type": "integer", "format": "int32" }, "volumeId": { "type": "integer", "format": "int32" }, "seriesId": { "type": "integer", "format": "int32" }, "chapterId": { "type": "integer", "format": "int32" }, "imageOffset": { "type": "integer", "format": "int32" }, "xPath": { "type": "string", "nullable": true }, "series": { "$ref": "#/components/schemas/SeriesDto" }, "chapterTitle": { "type": "string", "nullable": true } }, "additionalProperties": false }, "BookmarkInfoDto": { "type": "object", "properties": { "seriesName": { "type": "string", "nullable": true }, "seriesFormat": { "enum": [ 0, 1, 2, 3, 4 ], "type": "integer", "format": "int32" }, "seriesId": { "type": "integer", "format": "int32" }, "libraryId": { "type": "integer", "format": "int32" }, "libraryType": { "enum": [ 0, 1, 2, 3, 4, 5 ], "type": "integer", "format": "int32" }, "pages": { "type": "integer", "format": "int32" }, "pageDimensions": { "type": "array", "items": { "$ref": "#/components/schemas/FileDimensionDto" }, "nullable": true }, "doublePairs": { "type": "object", "additionalProperties": { "type": "integer", "format": "int32" }, "nullable": true } }, "additionalProperties": false }, "BookmarkSearchResultDto": { "type": "object", "properties": { "libraryId": { "type": "integer", "format": "int32" }, "volumeId": { "type": "integer", "format": "int32" }, "seriesId": { "type": "integer", "format": "int32" }, "chapterId": { "type": "integer", "format": "int32" }, "seriesName": { "type": "string", "nullable": true }, "localizedSeriesName": { "type": "string", "nullable": true } }, "additionalProperties": false }, "BrowseAnnotationFilterDto": { "type": "object", "properties": { "id": { "type": "integer", "format": "int32" }, "name": { "type": "string", "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", "format": "int32" } }, "additionalProperties": false }, "BrowseGenreDto": { "required": [ "title" ], "type": "object", "properties": { "id": { "type": "integer", "format": "int32" }, "title": { "type": "string", "nullable": true }, "seriesCount": { "type": "integer", "format": "int32" }, "chapterCount": { "type": "integer", "format": "int32" } }, "additionalProperties": false }, "BrowsePersonDto": { "required": [ "name" ], "type": "object", "properties": { "id": { "type": "integer", "format": "int32" }, "name": { "type": "string", "nullable": true }, "coverImageLocked": { "type": "boolean" }, "primaryColor": { "type": "string", "nullable": true }, "secondaryColor": { "type": "string", "nullable": true }, "coverImage": { "type": "string", "nullable": true }, "aliases": { "type": "array", "items": { "type": "string" }, "nullable": true }, "description": { "type": "string", "nullable": true }, "asin": { "type": "string", "nullable": true }, "aniListId": { "type": "integer", "format": "int32" }, "malId": { "type": "integer", "format": "int64" }, "hardcoverId": { "type": "string", "nullable": true }, "webLinks": { "type": "array", "items": { "type": "string" }, "nullable": true }, "roles": { "type": "array", "items": { "enum": [ 1, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15 ], "type": "integer", "format": "int32" }, "nullable": true }, "seriesCount": { "type": "integer", "format": "int32" }, "chapterCount": { "type": "integer", "format": "int32" } }, "additionalProperties": false }, "BrowsePersonFilterDto": { "type": "object", "properties": { "id": { "type": "integer", "format": "int32" }, "name": { "type": "string", "nullable": true }, "statements": { "type": "array", "items": { "$ref": "#/components/schemas/PersonFilterStatementDto" }, "nullable": true }, "combination": { "enum": [ 0, 1 ], "type": "integer", "format": "int32" }, "sortOptions": { "$ref": "#/components/schemas/PersonSortOptions" }, "limitTo": { "type": "integer", "format": "int32" } }, "additionalProperties": false }, "BrowseTagDto": { "required": [ "title" ], "type": "object", "properties": { "id": { "type": "integer", "format": "int32" }, "title": { "type": "string", "nullable": true }, "seriesCount": { "type": "integer", "format": "int32" }, "chapterCount": { "type": "integer", "format": "int32" } }, "additionalProperties": false }, "BulkActionDto": { "type": "object", "properties": { "ids": { "type": "array", "items": { "type": "integer", "format": "int32" }, "nullable": true }, "force": { "type": "boolean", "nullable": true } }, "additionalProperties": false }, "BulkChapterSizeRequest": { "type": "object", "properties": { "chapterIds": { "type": "array", "items": { "type": "integer", "format": "int32" }, "nullable": true } }, "additionalProperties": false }, "BulkReadingListSizeRequest": { "type": "object", "properties": { "readingListIds": { "type": "array", "items": { "type": "integer", "format": "int32" }, "nullable": true } }, "additionalProperties": false }, "BulkRemoveBookmarkForSeriesDto": { "type": "object", "properties": { "seriesIds": { "type": "array", "items": { "type": "integer", "format": "int32" }, "nullable": true } }, "additionalProperties": false }, "BulkSeriesSizeRequest": { "type": "object", "properties": { "seriesIds": { "type": "array", "items": { "type": "integer", "format": "int32" }, "nullable": true } }, "additionalProperties": false }, "BulkSetSeriesProfiles": { "type": "object", "properties": { "profileIds": { "type": "array", "items": { "type": "integer", "format": "int32" }, "nullable": true }, "seriesIds": { "type": "array", "items": { "type": "integer", "format": "int32" }, "nullable": true } }, "additionalProperties": false }, "BulkUpdateSideNavStreamVisibilityDto": { "required": [ "ids", "visibility" ], "type": "object", "properties": { "ids": { "type": "array", "items": { "type": "integer", "format": "int32" }, "nullable": true }, "visibility": { "type": "boolean" } }, "additionalProperties": false }, "BulkVolumeSizeRequest": { "type": "object", "properties": { "volumeIds": { "type": "array", "items": { "type": "integer", "format": "int32" }, "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 }, "ChapterDto": { "type": "object", "properties": { "id": { "type": "integer", "format": "int32" }, "range": { "type": "string", "nullable": true }, "number": { "type": "string", "nullable": true, "deprecated": true }, "minNumber": { "type": "number", "format": "float" }, "maxNumber": { "type": "number", "format": "float" }, "sortOrder": { "type": "number", "format": "float" }, "pages": { "type": "integer", "format": "int32" }, "isSpecial": { "type": "boolean" }, "title": { "type": "string", "nullable": true }, "files": { "type": "array", "items": { "$ref": "#/components/schemas/MangaFileDto" }, "nullable": true }, "pagesRead": { "type": "integer", "format": "int32" }, "totalReads": { "type": "integer", "format": "int32" }, "lastReadingProgressUtc": { "type": "string", "format": "date-time" }, "lastReadingProgress": { "type": "string", "format": "date-time" }, "coverImageLocked": { "type": "boolean" }, "volumeId": { "type": "integer", "format": "int32" }, "createdUtc": { "type": "string", "format": "date-time" }, "lastModifiedUtc": { "type": "string", "format": "date-time" }, "created": { "type": "string", "format": "date-time" }, "releaseDate": { "type": "string", "format": "date-time" }, "titleName": { "type": "string", "nullable": true }, "summary": { "type": "string", "nullable": true }, "ageRating": { "enum": [ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, -1 ], "type": "integer", "format": "int32" }, "wordCount": { "type": "integer", "format": "int64" }, "volumeTitle": { "type": "string", "nullable": true }, "minHoursToRead": { "type": "integer", "format": "int32" }, "maxHoursToRead": { "type": "integer", "format": "int32" }, "avgHoursToRead": { "type": "number", "format": "float" }, "webLinks": { "type": "string", "nullable": true }, "isbn": { "type": "string", "nullable": true }, "writers": { "type": "array", "items": { "$ref": "#/components/schemas/PersonDto" }, "nullable": true }, "coverArtists": { "type": "array", "items": { "$ref": "#/components/schemas/PersonDto" }, "nullable": true }, "publishers": { "type": "array", "items": { "$ref": "#/components/schemas/PersonDto" }, "nullable": true }, "characters": { "type": "array", "items": { "$ref": "#/components/schemas/PersonDto" }, "nullable": true }, "pencillers": { "type": "array", "items": { "$ref": "#/components/schemas/PersonDto" }, "nullable": true }, "inkers": { "type": "array", "items": { "$ref": "#/components/schemas/PersonDto" }, "nullable": true }, "imprints": { "type": "array", "items": { "$ref": "#/components/schemas/PersonDto" }, "nullable": true }, "colorists": { "type": "array", "items": { "$ref": "#/components/schemas/PersonDto" }, "nullable": true }, "letterers": { "type": "array", "items": { "$ref": "#/components/schemas/PersonDto" }, "nullable": true }, "editors": { "type": "array", "items": { "$ref": "#/components/schemas/PersonDto" }, "nullable": true }, "translators": { "type": "array", "items": { "$ref": "#/components/schemas/PersonDto" }, "nullable": true }, "teams": { "type": "array", "items": { "$ref": "#/components/schemas/PersonDto" }, "nullable": true }, "locations": { "type": "array", "items": { "$ref": "#/components/schemas/PersonDto" }, "nullable": true }, "genres": { "type": "array", "items": { "$ref": "#/components/schemas/GenreTagDto" }, "nullable": true }, "tags": { "type": "array", "items": { "$ref": "#/components/schemas/TagDto" }, "nullable": true }, "publicationStatus": { "enum": [ 0, 1, 2, 3, 4 ], "type": "integer", "format": "int32" }, "language": { "type": "string", "nullable": true }, "count": { "type": "integer", "format": "int32" }, "totalCount": { "type": "integer", "format": "int32" }, "languageLocked": { "type": "boolean" }, "summaryLocked": { "type": "boolean" }, "ageRatingLocked": { "type": "boolean" }, "publicationStatusLocked": { "type": "boolean" }, "genresLocked": { "type": "boolean" }, "tagsLocked": { "type": "boolean" }, "writerLocked": { "type": "boolean" }, "characterLocked": { "type": "boolean" }, "coloristLocked": { "type": "boolean" }, "editorLocked": { "type": "boolean" }, "inkerLocked": { "type": "boolean" }, "imprintLocked": { "type": "boolean" }, "lettererLocked": { "type": "boolean" }, "pencillerLocked": { "type": "boolean" }, "publisherLocked": { "type": "boolean" }, "translatorLocked": { "type": "boolean" }, "teamLocked": { "type": "boolean" }, "locationLocked": { "type": "boolean" }, "coverArtistLocked": { "type": "boolean" }, "releaseDateLocked": { "type": "boolean" }, "titleNameLocked": { "type": "boolean" }, "sortOrderLocked": { "type": "boolean" }, "coverImage": { "type": "string", "nullable": true }, "primaryColor": { "type": "string", "nullable": true }, "secondaryColor": { "type": "string", "nullable": true }, "format": { "enum": [ 0, 1, 2, 3, 4 ], "type": "integer", "format": "int32", "nullable": true, "readOnly": true }, "aniListId": { "type": "integer", "format": "int32" }, "malId": { "type": "integer", "format": "int64" }, "hardcoverId": { "type": "integer", "format": "int32" }, "metronId": { "type": "integer", "format": "int64" }, "comicVineId": { "type": "string", "nullable": true }, "mangaBakaId": { "type": "integer", "format": "int64" } }, "additionalProperties": false }, "ChapterInfoDto": { "type": "object", "properties": { "chapterNumber": { "type": "string", "nullable": true }, "volumeNumber": { "type": "string", "nullable": true }, "volumeId": { "type": "integer", "format": "int32" }, "seriesName": { "type": "string", "nullable": true }, "seriesFormat": { "enum": [ 0, 1, 2, 3, 4 ], "type": "integer", "format": "int32" }, "seriesId": { "type": "integer", "format": "int32" }, "libraryId": { "type": "integer", "format": "int32" }, "libraryType": { "enum": [ 0, 1, 2, 3, 4, 5 ], "type": "integer", "format": "int32" }, "chapterTitle": { "type": "string", "nullable": true }, "pages": { "type": "integer", "format": "int32" }, "fileName": { "type": "string", "nullable": true }, "isSpecial": { "type": "boolean" }, "subtitle": { "type": "string", "nullable": true }, "title": { "type": "string", "nullable": true }, "seriesTotalPages": { "type": "integer", "format": "int32" }, "seriesTotalPagesRead": { "type": "integer", "format": "int32" }, "pageDimensions": { "type": "array", "items": { "$ref": "#/components/schemas/FileDimensionDto" }, "nullable": true }, "doublePairs": { "type": "object", "additionalProperties": { "type": "integer", "format": "int32" }, "nullable": true } }, "additionalProperties": false }, "ChapterMetadataDto": { "type": "object", "properties": { "id": { "type": "integer", "format": "int32" }, "chapterId": { "type": "integer", "format": "int32" }, "title": { "type": "string", "nullable": true }, "writers": { "type": "array", "items": { "$ref": "#/components/schemas/PersonDto" }, "nullable": true }, "coverArtists": { "type": "array", "items": { "$ref": "#/components/schemas/PersonDto" }, "nullable": true }, "publishers": { "type": "array", "items": { "$ref": "#/components/schemas/PersonDto" }, "nullable": true }, "characters": { "type": "array", "items": { "$ref": "#/components/schemas/PersonDto" }, "nullable": true }, "pencillers": { "type": "array", "items": { "$ref": "#/components/schemas/PersonDto" }, "nullable": true }, "inkers": { "type": "array", "items": { "$ref": "#/components/schemas/PersonDto" }, "nullable": true }, "imprints": { "type": "array", "items": { "$ref": "#/components/schemas/PersonDto" }, "nullable": true }, "colorists": { "type": "array", "items": { "$ref": "#/components/schemas/PersonDto" }, "nullable": true }, "letterers": { "type": "array", "items": { "$ref": "#/components/schemas/PersonDto" }, "nullable": true }, "editors": { "type": "array", "items": { "$ref": "#/components/schemas/PersonDto" }, "nullable": true }, "translators": { "type": "array", "items": { "$ref": "#/components/schemas/PersonDto" }, "nullable": true }, "teams": { "type": "array", "items": { "$ref": "#/components/schemas/PersonDto" }, "nullable": true }, "locations": { "type": "array", "items": { "$ref": "#/components/schemas/PersonDto" }, "nullable": true }, "genres": { "type": "array", "items": { "$ref": "#/components/schemas/GenreTagDto" }, "nullable": true }, "tags": { "type": "array", "items": { "$ref": "#/components/schemas/TagDto" }, "nullable": true }, "ageRating": { "enum": [ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, -1 ], "type": "integer", "format": "int32" }, "releaseDate": { "type": "string", "nullable": true }, "publicationStatus": { "enum": [ 0, 1, 2, 3, 4 ], "type": "integer", "format": "int32" }, "summary": { "type": "string", "nullable": true }, "language": { "type": "string", "nullable": true }, "count": { "type": "integer", "format": "int32" }, "totalCount": { "type": "integer", "format": "int32" }, "wordCount": { "type": "integer", "format": "int64" } }, "additionalProperties": false }, "CheckForFilesInFolderRootsDto": { "type": "object", "properties": { "roots": { "type": "array", "items": { "type": "string" }, "nullable": true } }, "additionalProperties": false }, "ClientDeviceDto": { "type": "object", "properties": { "id": { "type": "integer", "format": "int32" }, "friendlyName": { "type": "string", "nullable": true }, "uiFingerprint": { "type": "string", "nullable": true }, "currentClientInfo": { "$ref": "#/components/schemas/ClientInfoDto" }, "firstSeenUtc": { "type": "string", "format": "date-time" }, "lastSeenUtc": { "type": "string", "format": "date-time" }, "ownerUsername": { "type": "string", "nullable": true }, "ownerUserId": { "type": "integer", "format": "int32" } }, "additionalProperties": false }, "ClientDeviceTypeStatCount": { "type": "object", "properties": { "value": { "enum": [ 0, 1, 2, 3, 4, 5, 6 ], "type": "integer", "format": "int32" }, "count": { "type": "integer", "format": "int64" } }, "additionalProperties": false }, "ClientInfoDto": { "type": "object", "properties": { "userAgent": { "type": "string", "nullable": true }, "ipAddress": { "type": "string", "nullable": true }, "authType": { "enum": [ 0, 1, 2, 3 ], "type": "integer", "format": "int32" }, "clientType": { "enum": [ 0, 1, 2, 3, 4, 5, 6 ], "type": "integer", "format": "int32" }, "appVersion": { "type": "string", "nullable": true }, "browser": { "type": "string", "nullable": true }, "browserVersion": { "type": "string", "nullable": true }, "platform": { "enum": [ 0, 1, 2, 3, 4, 5 ], "type": "integer", "format": "int32" }, "deviceType": { "type": "string", "nullable": true }, "screenWidth": { "type": "integer", "format": "int32", "nullable": true }, "screenHeight": { "type": "integer", "format": "int32", "nullable": true }, "orientation": { "type": "string", "nullable": true } }, "additionalProperties": false }, "CollectionTagBulkAddDto": { "type": "object", "properties": { "collectionTagId": { "type": "integer", "format": "int32" }, "collectionTagTitle": { "type": "string", "nullable": true }, "seriesIds": { "type": "array", "items": { "type": "integer", "format": "int32" }, "nullable": true } }, "additionalProperties": false }, "ColorScapeDto": { "type": "object", "properties": { "primary": { "type": "string", "nullable": true }, "secondary": { "type": "string", "nullable": true } }, "additionalProperties": false }, "ConfirmEmailDto": { "required": [ "email", "password", "token", "username" ], "type": "object", "properties": { "email": { "minLength": 1, "type": "string" }, "token": { "minLength": 1, "type": "string" }, "password": { "maxLength": 256, "minLength": 6, "type": "string" }, "username": { "minLength": 1, "type": "string" } }, "additionalProperties": false }, "ConfirmEmailUpdateDto": { "required": [ "email", "token" ], "type": "object", "properties": { "email": { "minLength": 1, "type": "string" }, "token": { "minLength": 1, "type": "string" } }, "additionalProperties": false }, "ConfirmMigrationEmailDto": { "type": "object", "properties": { "email": { "type": "string", "nullable": true }, "token": { "type": "string", "nullable": true } }, "additionalProperties": false }, "ConfirmPasswordResetDto": { "required": [ "email", "password", "token" ], "type": "object", "properties": { "email": { "minLength": 1, "type": "string" }, "token": { "minLength": 1, "type": "string" }, "password": { "maxLength": 256, "minLength": 6, "type": "string" } }, "additionalProperties": false }, "CopySettingsFromLibraryDto": { "type": "object", "properties": { "sourceLibraryId": { "type": "integer", "format": "int32" }, "targetLibraryIds": { "type": "array", "items": { "type": "integer", "format": "int32" }, "nullable": true }, "includeType": { "type": "boolean" } }, "additionalProperties": false }, "CreateEmailDeviceDto": { "required": [ "emailAddress", "name", "platform" ], "type": "object", "properties": { "name": { "minLength": 1, "type": "string" }, "platform": { "enum": [ 0, 1, 2, 3 ], "type": "integer", "format": "int32" }, "emailAddress": { "minLength": 1, "type": "string" } }, "additionalProperties": false }, "CreatePersonalToCDto": { "required": [ "chapterId", "libraryId", "pageNumber", "seriesId", "title", "volumeId" ], "type": "object", "properties": { "chapterId": { "type": "integer", "format": "int32" }, "volumeId": { "type": "integer", "format": "int32" }, "seriesId": { "type": "integer", "format": "int32" }, "libraryId": { "type": "integer", "format": "int32" }, "pageNumber": { "type": "integer", "format": "int32" }, "title": { "type": "string", "nullable": true }, "bookScrollId": { "type": "string", "nullable": true }, "selectedText": { "type": "string", "nullable": true } }, "additionalProperties": false }, "CreateReadingListDto": { "type": "object", "properties": { "title": { "type": "string", "nullable": true } }, "additionalProperties": false }, "DashboardStreamDto": { "required": [ "name" ], "type": "object", "properties": { "id": { "type": "integer", "format": "int32" }, "name": { "type": "string", "nullable": true }, "isProvided": { "type": "boolean" }, "order": { "type": "integer", "format": "int32" }, "smartFilterEncoded": { "type": "string", "nullable": true }, "smartFilterId": { "type": "integer", "format": "int32", "nullable": true }, "streamType": { "enum": [ 1, 2, 3, 4, 5 ], "type": "integer", "format": "int32" }, "visible": { "type": "boolean" } }, "additionalProperties": false }, "DateTimeStatCountWithFormat": { "type": "object", "properties": { "value": { "type": "string", "format": "date-time" }, "count": { "type": "integer", "format": "int64" }, "format": { "enum": [ 0, 1, 2, 3, 4 ], "type": "integer", "format": "int32" } }, "additionalProperties": false }, "DayOfWeekStatCount": { "type": "object", "properties": { "value": { "enum": [ 0, 1, 2, 3, 4, 5, 6 ], "type": "integer", "format": "int32" }, "count": { "type": "integer", "format": "int64" } }, "additionalProperties": false }, "DecodeFilterDto": { "type": "object", "properties": { "encodedFilter": { "type": "string", "nullable": true } }, "additionalProperties": false }, "DeleteChaptersDto": { "type": "object", "properties": { "chapterIds": { "type": "array", "items": { "type": "integer", "format": "int32" }, "nullable": true } }, "additionalProperties": false }, "DeleteCollectionsDto": { "required": [ "collectionIds" ], "type": "object", "properties": { "collectionIds": { "type": "array", "items": { "type": "integer", "format": "int32" } } }, "additionalProperties": false }, "DeleteReadingListsDto": { "required": [ "readingListIds" ], "type": "object", "properties": { "readingListIds": { "type": "array", "items": { "type": "integer", "format": "int32" } } }, "additionalProperties": false }, "DeleteSeriesDto": { "type": "object", "properties": { "seriesIds": { "type": "array", "items": { "type": "integer", "format": "int32" }, "nullable": true } }, "additionalProperties": false }, "DeviceClientBreakdownDto": { "type": "object", "properties": { "records": { "type": "array", "items": { "$ref": "#/components/schemas/ClientDeviceTypeStatCount" }, "nullable": true }, "totalCount": { "type": "integer", "format": "int32" } }, "additionalProperties": false }, "DirectoryDto": { "type": "object", "properties": { "name": { "type": "string", "nullable": true }, "fullPath": { "type": "string", "nullable": true } }, "additionalProperties": false }, "DownloadBookmarkDto": { "required": [ "bookmarks" ], "type": "object", "properties": { "bookmarks": { "type": "array", "items": { "$ref": "#/components/schemas/BookmarkDto" } } }, "additionalProperties": false }, "DownloadableSiteThemeDto": { "type": "object", "properties": { "name": { "type": "string", "nullable": true }, "cssUrl": { "type": "string", "nullable": true }, "cssFile": { "type": "string", "nullable": true }, "previewUrls": { "type": "array", "items": { "type": "string" }, "nullable": true }, "alreadyDownloaded": { "type": "boolean" }, "sha": { "type": "string", "nullable": true }, "path": { "type": "string", "nullable": true }, "author": { "type": "string", "nullable": true }, "lastCompatibleVersion": { "type": "string", "nullable": true }, "isCompatible": { "type": "boolean" }, "description": { "type": "string", "nullable": true } }, "additionalProperties": false }, "EmailDeviceDto": { "type": "object", "properties": { "id": { "type": "integer", "format": "int32" }, "name": { "type": "string", "nullable": true }, "emailAddress": { "type": "string", "nullable": true }, "platform": { "enum": [ 0, 1, 2, 3 ], "type": "integer", "format": "int32" } }, "additionalProperties": false }, "EmailHistoryDto": { "type": "object", "properties": { "id": { "type": "integer", "format": "int64" }, "sent": { "type": "boolean" }, "sendDate": { "type": "string", "format": "date-time" }, "emailTemplate": { "type": "string", "nullable": true }, "errorMessage": { "type": "string", "nullable": true }, "toUserName": { "type": "string", "nullable": true } }, "additionalProperties": false }, "EmailTestResultDto": { "type": "object", "properties": { "successful": { "type": "boolean" }, "errorMessage": { "type": "string", "nullable": true }, "emailAddress": { "type": "string", "nullable": true } }, "additionalProperties": false }, "EpubFontDto": { "type": "object", "properties": { "id": { "type": "integer", "format": "int32" }, "name": { "type": "string", "nullable": true }, "provider": { "enum": [ 1, 2 ], "type": "integer", "format": "int32" }, "fileName": { "type": "string", "nullable": true } }, "additionalProperties": false }, "ExternalChapterDto": { "type": "object", "properties": { "title": { "type": "string", "nullable": true }, "issueNumber": { "type": "string", "nullable": true }, "criticRating": { "type": "number", "format": "double", "nullable": true }, "userRating": { "type": "number", "format": "double", "nullable": true }, "summary": { "type": "string", "nullable": true }, "writers": { "type": "array", "items": { "type": "string" }, "nullable": true }, "artists": { "type": "array", "items": { "type": "string" }, "nullable": true }, "releaseDate": { "type": "string", "format": "date-time", "nullable": true }, "publisher": { "type": "string", "nullable": true }, "coverImageUrl": { "type": "string", "nullable": true }, "issueUrl": { "type": "string", "nullable": true }, "criticReviews": { "type": "array", "items": { "$ref": "#/components/schemas/UserReviewDto" }, "nullable": true }, "userReviews": { "type": "array", "items": { "$ref": "#/components/schemas/UserReviewDto" }, "nullable": true } }, "additionalProperties": false }, "ExternalSeriesDetailDto": { "type": "object", "properties": { "name": { "type": "string", "nullable": true }, "aniListId": { "type": "integer", "format": "int32", "nullable": true }, "malId": { "type": "integer", "format": "int64", "nullable": true }, "cbrId": { "type": "integer", "format": "int32", "nullable": true }, "synonyms": { "type": "array", "items": { "type": "string" }, "nullable": true }, "plusMediaFormat": { "enum": [ 1, 2, 3, 4, 5 ], "type": "integer", "format": "int32" }, "siteUrl": { "type": "string", "nullable": true }, "coverUrl": { "type": "string", "nullable": true }, "genres": { "type": "array", "items": { "type": "string" }, "nullable": true }, "staff": { "type": "array", "items": { "$ref": "#/components/schemas/SeriesStaffDto" }, "nullable": true }, "tags": { "type": "array", "items": { "$ref": "#/components/schemas/MetadataTagDto" }, "nullable": true }, "summary": { "type": "string", "nullable": true }, "provider": { "enum": [ 0, 1, 2, 3, 4, 5 ], "type": "integer", "format": "int32" }, "startDate": { "type": "string", "format": "date-time", "nullable": true }, "endDate": { "type": "string", "format": "date-time", "nullable": true }, "averageScore": { "type": "integer", "format": "int32" }, "chapters": { "type": "integer", "format": "int32" }, "volumes": { "type": "integer", "format": "int32" }, "relations": { "type": "array", "items": { "$ref": "#/components/schemas/SeriesRelationship" }, "nullable": true }, "characters": { "type": "array", "items": { "$ref": "#/components/schemas/SeriesCharacter" }, "nullable": true }, "publisher": { "type": "string", "nullable": true }, "chapterDtos": { "type": "array", "items": { "$ref": "#/components/schemas/ExternalChapterDto" }, "nullable": true } }, "additionalProperties": false }, "ExternalSeriesDto": { "required": [ "coverUrl", "name", "url" ], "type": "object", "properties": { "name": { "type": "string", "nullable": true }, "coverUrl": { "type": "string", "nullable": true }, "url": { "type": "string", "nullable": true }, "summary": { "type": "string", "nullable": true }, "aniListId": { "type": "integer", "format": "int32", "nullable": true }, "malId": { "type": "integer", "format": "int64", "nullable": true }, "provider": { "enum": [ 0, 1, 2, 3, 4, 5 ], "type": "integer", "format": "int32" } }, "additionalProperties": false }, "ExternalSeriesMatchDto": { "type": "object", "properties": { "series": { "$ref": "#/components/schemas/ExternalSeriesDetailDto" }, "matchRating": { "type": "number", "format": "float" } }, "additionalProperties": false }, "ExternalSourceDto": { "required": [ "apiKey", "host", "id", "name" ], "type": "object", "properties": { "id": { "type": "integer", "format": "int32" }, "name": { "type": "string", "nullable": true }, "host": { "type": "string", "nullable": true }, "apiKey": { "type": "string", "nullable": true } }, "additionalProperties": false }, "FieldMappingsDto": { "type": "object", "properties": { "blacklist": { "type": "array", "items": { "type": "string" }, "nullable": true }, "whitelist": { "type": "array", "items": { "type": "string" }, "nullable": true }, "ageRatingMappings": { "type": "object", "additionalProperties": { "enum": [ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, -1 ], "type": "integer", "format": "int32" }, "nullable": true }, "fieldMappings": { "type": "array", "items": { "$ref": "#/components/schemas/MetadataFieldMappingDto" }, "nullable": true } }, "additionalProperties": false }, "FieldMappingsImportResultDto": { "type": "object", "properties": { "success": { "type": "boolean" }, "resultingMetadataSettings": { "$ref": "#/components/schemas/MetadataSettingsDto" }, "ageRatingConflicts": { "type": "array", "items": { "type": "string" }, "nullable": true } }, "additionalProperties": false }, "FileDimensionDto": { "type": "object", "properties": { "width": { "type": "integer", "format": "int32" }, "height": { "type": "integer", "format": "int32" }, "pageNumber": { "type": "integer", "format": "int32" }, "fileName": { "type": "string", "nullable": true }, "isWide": { "type": "boolean" } }, "additionalProperties": false }, "FileExtensionBreakdownDto": { "type": "object", "properties": { "totalFileSize": { "type": "integer", "format": "int64" }, "fileBreakdown": { "type": "array", "items": { "$ref": "#/components/schemas/FileExtensionDto" }, "nullable": true } }, "additionalProperties": false }, "FileExtensionDto": { "type": "object", "properties": { "extension": { "type": "string", "nullable": true }, "format": { "enum": [ 0, 1, 2, 3, 4 ], "type": "integer", "format": "int32" }, "totalSize": { "type": "integer", "format": "int64" }, "totalFiles": { "type": "integer", "format": "int64" } }, "additionalProperties": false }, "FilterDto": { "type": "object", "properties": { "formats": { "type": "array", "items": { "enum": [ 0, 1, 2, 3, 4 ], "type": "integer", "format": "int32" }, "nullable": true }, "readStatus": { "$ref": "#/components/schemas/ReadStatus" }, "libraries": { "type": "array", "items": { "type": "integer", "format": "int32" }, "nullable": true }, "genres": { "type": "array", "items": { "type": "integer", "format": "int32" }, "nullable": true }, "writers": { "type": "array", "items": { "type": "integer", "format": "int32" }, "nullable": true }, "penciller": { "type": "array", "items": { "type": "integer", "format": "int32" }, "nullable": true }, "inker": { "type": "array", "items": { "type": "integer", "format": "int32" }, "nullable": true }, "colorist": { "type": "array", "items": { "type": "integer", "format": "int32" }, "nullable": true }, "letterer": { "type": "array", "items": { "type": "integer", "format": "int32" }, "nullable": true }, "coverArtist": { "type": "array", "items": { "type": "integer", "format": "int32" }, "nullable": true }, "editor": { "type": "array", "items": { "type": "integer", "format": "int32" }, "nullable": true }, "publisher": { "type": "array", "items": { "type": "integer", "format": "int32" }, "nullable": true }, "character": { "type": "array", "items": { "type": "integer", "format": "int32" }, "nullable": true }, "translators": { "type": "array", "items": { "type": "integer", "format": "int32" }, "nullable": true }, "collectionTags": { "type": "array", "items": { "type": "integer", "format": "int32" }, "nullable": true }, "tags": { "type": "array", "items": { "type": "integer", "format": "int32" }, "nullable": true }, "rating": { "type": "integer", "format": "int32" }, "sortOptions": { "$ref": "#/components/schemas/SortOptions" }, "ageRating": { "type": "array", "items": { "enum": [ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, -1 ], "type": "integer", "format": "int32" }, "nullable": true }, "languages": { "type": "array", "items": { "type": "string" }, "nullable": true }, "publicationStatus": { "type": "array", "items": { "enum": [ 0, 1, 2, 3, 4 ], "type": "integer", "format": "int32" }, "nullable": true }, "seriesNameQuery": { "type": "string", "nullable": true }, "releaseYearRange": { "$ref": "#/components/schemas/Int32Range" } }, "additionalProperties": false }, "FilterStatementDto": { "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": [ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33 ], "type": "integer", "format": "int32" }, "value": { "type": "string", "nullable": true } }, "additionalProperties": false }, "FilterV2Dto": { "type": "object", "properties": { "id": { "type": "integer", "format": "int32" }, "name": { "type": "string", "nullable": true }, "statements": { "type": "array", "items": { "$ref": "#/components/schemas/FilterStatementDto" }, "nullable": true }, "combination": { "enum": [ 0, 1 ], "type": "integer", "format": "int32" }, "sortOptions": { "$ref": "#/components/schemas/SortOptions" }, "limitTo": { "type": "integer", "format": "int32" } }, "additionalProperties": false }, "FullProgressDto": { "type": "object", "properties": { "id": { "type": "integer", "format": "int32" }, "chapterId": { "type": "integer", "format": "int32" }, "pagesRead": { "type": "integer", "format": "int32" }, "lastModified": { "type": "string", "format": "date-time" }, "lastModifiedUtc": { "type": "string", "format": "date-time" }, "created": { "type": "string", "format": "date-time" }, "createdUtc": { "type": "string", "format": "date-time" }, "appUserId": { "type": "integer", "format": "int32" }, "userName": { "type": "string", "nullable": true } }, "additionalProperties": false }, "GenreTagDto": { "required": [ "title" ], "type": "object", "properties": { "id": { "type": "integer", "format": "int32" }, "title": { "type": "string", "nullable": true } }, "additionalProperties": false }, "GenreTagDtoStatCount": { "type": "object", "properties": { "value": { "$ref": "#/components/schemas/GenreTagDto" }, "count": { "type": "integer", "format": "int64" } }, "additionalProperties": false }, "GroupedSeriesDto": { "type": "object", "properties": { "seriesName": { "type": "string", "nullable": true }, "seriesId": { "type": "integer", "format": "int32" }, "libraryId": { "type": "integer", "format": "int32" }, "libraryType": { "enum": [ 0, 1, 2, 3, 4, 5 ], "type": "integer", "format": "int32" }, "created": { "type": "string", "format": "date-time" }, "chapterId": { "type": "integer", "format": "int32" }, "volumeId": { "type": "integer", "format": "int32" }, "id": { "type": "integer", "format": "int32" }, "format": { "enum": [ 0, 1, 2, 3, 4 ], "type": "integer", "format": "int32" }, "count": { "type": "integer", "format": "int32" } }, "additionalProperties": false }, "HighlightSlot": { "type": "object", "properties": { "id": { "type": "integer", "format": "int32" }, "slotNumber": { "type": "integer", "format": "int32" }, "color": { "$ref": "#/components/schemas/RgbaColor" } }, "additionalProperties": false }, "HourEstimateRangeDto": { "type": "object", "properties": { "minHours": { "type": "integer", "format": "int32" }, "maxHours": { "type": "integer", "format": "int32" }, "avgHours": { "type": "number", "format": "float" }, "wordCount": { "type": "integer", "format": "int64" }, "pageCount": { "type": "integer", "format": "int32" } }, "additionalProperties": false }, "ImportFieldMappingsDto": { "type": "object", "properties": { "settings": { "$ref": "#/components/schemas/ImportSettingsDto" }, "data": { "$ref": "#/components/schemas/FieldMappingsDto" } }, "additionalProperties": false }, "ImportSettingsDto": { "type": "object", "properties": { "importMode": { "enum": [ 0, 1 ], "type": "integer", "format": "int32" }, "resolution": { "enum": [ 0, 1, 2 ], "type": "integer", "format": "int32" }, "whitelist": { "type": "boolean" }, "blacklist": { "type": "boolean" }, "ageRatings": { "type": "boolean" }, "fieldMappings": { "type": "boolean" }, "ageRatingConflictResolutions": { "type": "object", "additionalProperties": { "enum": [ 0, 1, 2 ], "type": "integer", "format": "int32" }, "nullable": true } }, "additionalProperties": false }, "Int32Range": { "type": "object", "properties": { "min": { "type": "integer", "format": "int32" }, "max": { "type": "integer", "format": "int32" } }, "additionalProperties": false }, "Int32StatCount": { "type": "object", "properties": { "value": { "type": "integer", "format": "int32" }, "count": { "type": "integer", "format": "int64" } }, "additionalProperties": false }, "InviteUserDto": { "required": [ "email" ], "type": "object", "properties": { "email": { "minLength": 1, "type": "string" }, "roles": { "type": "array", "items": { "type": "string" }, "nullable": true }, "libraries": { "type": "array", "items": { "type": "integer", "format": "int32" }, "nullable": true }, "ageRestriction": { "$ref": "#/components/schemas/AgeRestrictionDto" } }, "additionalProperties": false }, "InviteUserResponse": { "type": "object", "properties": { "emailLink": { "type": "string", "nullable": true }, "emailSent": { "type": "boolean" }, "invalidEmail": { "type": "boolean" } }, "additionalProperties": false }, "JobDto": { "type": "object", "properties": { "id": { "type": "string", "nullable": true }, "title": { "type": "string", "nullable": true }, "createdAtUtc": { "type": "string", "format": "date-time", "nullable": true }, "lastExecutionUtc": { "type": "string", "format": "date-time", "nullable": true }, "cron": { "type": "string", "nullable": true } }, "additionalProperties": false }, "JumpKeyDto": { "type": "object", "properties": { "size": { "type": "integer", "format": "int32" }, "key": { "type": "string", "nullable": true }, "title": { "type": "string", "nullable": true } }, "additionalProperties": false }, "KavitaLocale": { "type": "object", "properties": { "fileName": { "type": "string", "nullable": true }, "renderName": { "type": "string", "nullable": true }, "translationCompletion": { "type": "number", "format": "float" }, "isRtL": { "type": "boolean" }, "hash": { "type": "string", "nullable": true } }, "additionalProperties": false }, "KeyBind": { "type": "object", "properties": { "key": { "type": "string", "nullable": true }, "control": { "type": "boolean" }, "shift": { "type": "boolean" }, "meta": { "type": "boolean" }, "alt": { "type": "boolean" }, "controllerSequence": { "type": "array", "items": { "type": "string" }, "nullable": true } }, "additionalProperties": false }, "KoreaderBookDto": { "type": "object", "properties": { "document": { "type": "string", "nullable": true }, "device_id": { "type": "string", "nullable": true }, "device": { "type": "string", "nullable": true }, "percentage": { "type": "number", "format": "float" }, "progress": { "type": "string", "nullable": true }, "timestamp": { "type": "integer", "format": "int64" } }, "additionalProperties": false }, "KoreaderProgressUpdateDto": { "type": "object", "properties": { "document": { "type": "string", "nullable": true }, "timestamp": { "type": "string", "format": "date-time" } }, "additionalProperties": false }, "LanguageDto": { "required": [ "isoCode", "title" ], "type": "object", "properties": { "isoCode": { "type": "string", "nullable": true }, "title": { "type": "string", "nullable": true } }, "additionalProperties": false }, "LibraryDto": { "type": "object", "properties": { "id": { "type": "integer", "format": "int32" }, "name": { "type": "string", "nullable": true }, "type": { "enum": [ 0, 1, 2, 3, 4, 5 ], "type": "integer", "format": "int32" }, "lastScanned": { "type": "string", "format": "date-time" }, "coverImage": { "type": "string", "nullable": true }, "folderWatching": { "type": "boolean" }, "includeInDashboard": { "type": "boolean" }, "includeInRecommended": { "type": "boolean" }, "manageCollections": { "type": "boolean" }, "manageReadingLists": { "type": "boolean" }, "includeInSearch": { "type": "boolean" }, "allowScrobbling": { "type": "boolean" }, "folders": { "type": "array", "items": { "type": "string" }, "nullable": true }, "collapseSeriesRelationships": { "type": "boolean" }, "libraryFileTypes": { "type": "array", "items": { "enum": [ 1, 2, 3, 4 ], "type": "integer", "format": "int32" }, "nullable": true }, "excludePatterns": { "type": "array", "items": { "type": "string" }, "nullable": true }, "allowMetadataMatching": { "type": "boolean" }, "enableMetadata": { "type": "boolean" }, "removePrefixForSortName": { "type": "boolean" }, "inheritWebLinksFromFirstChapter": { "type": "boolean" }, "defaultLanguage": { "type": "string", "nullable": true } }, "additionalProperties": false }, "LibraryDtoStatCount": { "type": "object", "properties": { "value": { "$ref": "#/components/schemas/LibraryDto" }, "count": { "type": "integer", "format": "int64" } }, "additionalProperties": false }, "LicenseInfoDto": { "type": "object", "properties": { "expirationDate": { "type": "string", "format": "date-time" }, "isActive": { "type": "boolean" }, "isCancelled": { "type": "boolean" }, "isValidVersion": { "type": "boolean" }, "registeredEmail": { "type": "string", "nullable": true }, "totalMonthsSubbed": { "type": "integer", "format": "int32" }, "hasLicense": { "type": "boolean" }, "installId": { "type": "string", "nullable": true } }, "additionalProperties": false }, "LoginDto": { "type": "object", "properties": { "username": { "type": "string", "nullable": true }, "password": { "type": "string", "nullable": true }, "apiKey": { "type": "string", "nullable": true } }, "additionalProperties": false }, "MalStackDto": { "required": [ "author", "restackCount", "seriesCount", "stackId", "title", "url" ], "type": "object", "properties": { "title": { "type": "string", "nullable": true }, "stackId": { "type": "integer", "format": "int64" }, "url": { "type": "string", "nullable": true }, "author": { "type": "string", "nullable": true }, "seriesCount": { "type": "integer", "format": "int32" }, "restackCount": { "type": "integer", "format": "int32" }, "existingId": { "type": "integer", "format": "int32" } }, "additionalProperties": false }, "MalUserInfoDto": { "required": [ "accessToken", "username" ], "type": "object", "properties": { "username": { "type": "string", "nullable": true }, "accessToken": { "type": "string", "nullable": true } }, "additionalProperties": false }, "ManageMatchFilterDto": { "type": "object", "properties": { "matchStateOption": { "enum": [ 0, 1, 2, 3, 4 ], "type": "integer", "format": "int32" }, "libraryType": { "type": "integer", "format": "int32" }, "searchTerm": { "type": "string", "nullable": true } }, "additionalProperties": false }, "ManageMatchSeriesDto": { "type": "object", "properties": { "series": { "$ref": "#/components/schemas/SeriesDto" }, "isMatched": { "type": "boolean" }, "validUntilUtc": { "type": "string", "format": "date-time" } }, "additionalProperties": false }, "MangaFileDto": { "type": "object", "properties": { "id": { "type": "integer", "format": "int32" }, "filePath": { "type": "string", "nullable": true }, "pages": { "type": "integer", "format": "int32" }, "bytes": { "type": "integer", "format": "int64" }, "format": { "enum": [ 0, 1, 2, 3, 4 ], "type": "integer", "format": "int32" }, "created": { "type": "string", "format": "date-time" }, "extension": { "type": "string", "nullable": true }, "koreaderHash": { "type": "string", "nullable": true } }, "additionalProperties": false }, "MangaFormatStatCount": { "type": "object", "properties": { "value": { "enum": [ 0, 1, 2, 3, 4 ], "type": "integer", "format": "int32" }, "count": { "type": "integer", "format": "int64" } }, "additionalProperties": false }, "MarkChapterReadDto": { "type": "object", "properties": { "seriesId": { "type": "integer", "format": "int32" }, "chapterId": { "type": "integer", "format": "int32" }, "generateReadingSession": { "type": "boolean" } }, "additionalProperties": false }, "MarkMultipleSeriesAsReadDto": { "type": "object", "properties": { "seriesIds": { "type": "array", "items": { "type": "integer", "format": "int32" }, "nullable": true }, "generateReadingSession": { "type": "boolean" } }, "additionalProperties": false }, "MarkReadDto": { "type": "object", "properties": { "seriesId": { "type": "integer", "format": "int32" }, "generateReadingSession": { "type": "boolean" } }, "additionalProperties": false }, "MarkVolumeReadDto": { "type": "object", "properties": { "seriesId": { "type": "integer", "format": "int32" }, "volumeId": { "type": "integer", "format": "int32" }, "generateReadingSession": { "type": "boolean" } }, "additionalProperties": false }, "MarkVolumesReadDto": { "type": "object", "properties": { "seriesId": { "type": "integer", "format": "int32" }, "volumeIds": { "type": "array", "items": { "type": "integer", "format": "int32" }, "nullable": true }, "chapterIds": { "type": "array", "items": { "type": "integer", "format": "int32" }, "nullable": true }, "generateReadingSession": { "type": "boolean" } }, "additionalProperties": false }, "MatchSeriesDto": { "type": "object", "properties": { "dontMatch": { "type": "boolean" }, "seriesId": { "type": "integer", "format": "int32" }, "query": { "type": "string", "nullable": true } }, "additionalProperties": false }, "MediaErrorDto": { "required": [ "extension", "filePath" ], "type": "object", "properties": { "extension": { "type": "string", "nullable": true }, "filePath": { "type": "string", "nullable": true }, "comment": { "type": "string", "nullable": true }, "details": { "type": "string", "nullable": true }, "createdUtc": { "type": "string", "format": "date-time" } }, "additionalProperties": false }, "MemberDto": { "type": "object", "properties": { "id": { "type": "integer", "format": "int32" }, "username": { "type": "string", "nullable": true }, "email": { "type": "string", "nullable": true }, "isPending": { "type": "boolean" }, "ageRestriction": { "$ref": "#/components/schemas/AgeRestrictionDto" }, "created": { "type": "string", "format": "date-time" }, "createdUtc": { "type": "string", "format": "date-time" }, "lastActive": { "type": "string", "format": "date-time" }, "lastActiveUtc": { "type": "string", "format": "date-time" }, "libraries": { "type": "array", "items": { "$ref": "#/components/schemas/LibraryDto" }, "nullable": true }, "roles": { "type": "array", "items": { "type": "string" }, "nullable": true }, "identityProvider": { "enum": [ 0, 1 ], "type": "integer", "format": "int32" } }, "additionalProperties": false }, "MemberInfoDto": { "type": "object", "properties": { "id": { "type": "integer", "format": "int32" }, "username": { "type": "string", "nullable": true }, "created": { "type": "string", "format": "date-time" }, "createdUtc": { "type": "string", "format": "date-time" }, "coverImage": { "type": "string", "nullable": true } }, "additionalProperties": false }, "MetadataFieldMappingDto": { "type": "object", "properties": { "id": { "type": "integer", "format": "int32" }, "sourceType": { "enum": [ 0, 1 ], "type": "integer", "format": "int32" }, "destinationType": { "enum": [ 0, 1 ], "type": "integer", "format": "int32" }, "sourceValue": { "type": "string", "nullable": true }, "destinationValue": { "type": "string", "nullable": true }, "excludeFromSource": { "type": "boolean" } }, "additionalProperties": false }, "MetadataSettingsDto": { "type": "object", "properties": { "blacklist": { "type": "array", "items": { "type": "string" }, "nullable": true }, "whitelist": { "type": "array", "items": { "type": "string" }, "nullable": true }, "ageRatingMappings": { "type": "object", "additionalProperties": { "enum": [ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, -1 ], "type": "integer", "format": "int32" }, "nullable": true }, "fieldMappings": { "type": "array", "items": { "$ref": "#/components/schemas/MetadataFieldMappingDto" }, "nullable": true }, "enabled": { "type": "boolean" }, "enableExtendedMetadataProcessing": { "type": "boolean" }, "enableSummary": { "type": "boolean" }, "enablePublicationStatus": { "type": "boolean" }, "enableRelationships": { "type": "boolean" }, "enablePeople": { "type": "boolean" }, "enableStartDate": { "type": "boolean" }, "enableLocalizedName": { "type": "boolean" }, "enableCoverImage": { "type": "boolean" }, "enableChapterSummary": { "type": "boolean" }, "enableChapterReleaseDate": { "type": "boolean" }, "enableChapterTitle": { "type": "boolean" }, "enableChapterPublisher": { "type": "boolean" }, "enableChapterCoverImage": { "type": "boolean" }, "enableGenres": { "type": "boolean" }, "enableTags": { "type": "boolean" }, "firstLastPeopleNaming": { "type": "boolean" }, "overrides": { "type": "array", "items": { "enum": [ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14 ], "type": "integer", "format": "int32" }, "nullable": true }, "personRoles": { "type": "array", "items": { "enum": [ 1, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15 ], "type": "integer", "format": "int32" }, "nullable": true } }, "additionalProperties": false }, "MetadataTagDto": { "type": "object", "properties": { "name": { "type": "string", "nullable": true }, "description": { "type": "string", "nullable": true, "readOnly": true }, "rank": { "type": "integer", "format": "int32", "nullable": true, "readOnly": true }, "isGeneralSpoiler": { "type": "boolean", "readOnly": true }, "isMediaSpoiler": { "type": "boolean", "readOnly": true }, "isAdult": { "type": "boolean", "readOnly": true } }, "additionalProperties": false }, "MostReadAuthorsDto": { "type": "object", "properties": { "authorId": { "type": "integer", "format": "int32" }, "authorName": { "type": "string", "nullable": true }, "totalChaptersRead": { "type": "integer", "format": "int32" }, "chapters": { "type": "array", "items": { "$ref": "#/components/schemas/AuthorChapterDto" }, "nullable": true } }, "additionalProperties": false }, "NextExpectedChapterDto": { "type": "object", "properties": { "chapterNumber": { "type": "number", "format": "float" }, "volumeNumber": { "type": "number", "format": "float" }, "expectedDate": { "type": "string", "format": "date-time", "nullable": true }, "title": { "type": "string", "nullable": true } }, "additionalProperties": false }, "OidcConfigDto": { "type": "object", "properties": { "autoLogin": { "type": "boolean" }, "disablePasswordAuthentication": { "type": "boolean" }, "providerName": { "type": "string", "nullable": true }, "authority": { "type": "string", "nullable": true }, "clientId": { "type": "string", "nullable": true }, "secret": { "type": "string", "nullable": true }, "provisionAccounts": { "type": "boolean" }, "requireVerifiedEmail": { "type": "boolean" }, "syncUserSettings": { "type": "boolean" }, "rolesPrefix": { "type": "string", "nullable": true }, "rolesClaim": { "type": "string", "nullable": true }, "customScopes": { "type": "array", "items": { "type": "string" }, "nullable": true }, "defaultRoles": { "type": "array", "items": { "type": "string" }, "nullable": true }, "defaultLibraries": { "type": "array", "items": { "type": "integer", "format": "int32" }, "nullable": true }, "defaultAgeRestriction": { "enum": [ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, -1 ], "type": "integer", "format": "int32" }, "defaultIncludeUnknowns": { "type": "boolean" }, "enabled": { "type": "boolean", "readOnly": true } }, "additionalProperties": false }, "OidcPublicConfigDto": { "type": "object", "properties": { "autoLogin": { "type": "boolean" }, "disablePasswordAuthentication": { "type": "boolean" }, "providerName": { "type": "string", "nullable": true }, "enabled": { "type": "boolean" } }, "additionalProperties": false }, "ParseBulkRequestDto": { "type": "object", "properties": { "names": { "type": "array", "items": { "type": "string" }, "nullable": true }, "libraryType": { "enum": [ 0, 1, 2, 3, 4, 5 ], "type": "integer", "format": "int32" } }, "additionalProperties": false }, "ParseBulkResponseDto": { "type": "object", "properties": { "results": { "type": "object", "additionalProperties": { "$ref": "#/components/schemas/ParseResultDto" }, "nullable": true }, "errors": { "type": "object", "additionalProperties": { "type": "string", "nullable": true }, "nullable": true }, "errorCounts": { "type": "integer", "format": "int32", "readOnly": true } }, "additionalProperties": false }, "ParseResultDto": { "type": "object", "properties": { "seriesName": { "type": "string", "nullable": true }, "seriesYear": { "type": "string", "nullable": true }, "minChapterNumber": { "type": "number", "format": "float" }, "maxChapterNumber": { "type": "number", "format": "float" }, "minVolumeNumber": { "type": "number", "format": "float" }, "maxVolumeNumber": { "type": "number", "format": "float" } }, "additionalProperties": false }, "PersonAliasCheckDto": { "required": [ "alias", "name", "personId" ], "type": "object", "properties": { "personId": { "type": "integer", "format": "int32" }, "name": { "minLength": 1, "type": "string" }, "alias": { "minLength": 1, "type": "string" } }, "additionalProperties": false }, "PersonDto": { "required": [ "name" ], "type": "object", "properties": { "id": { "type": "integer", "format": "int32" }, "name": { "type": "string", "nullable": true }, "coverImageLocked": { "type": "boolean" }, "primaryColor": { "type": "string", "nullable": true }, "secondaryColor": { "type": "string", "nullable": true }, "coverImage": { "type": "string", "nullable": true }, "aliases": { "type": "array", "items": { "type": "string" }, "nullable": true }, "description": { "type": "string", "nullable": true }, "asin": { "type": "string", "nullable": true }, "aniListId": { "type": "integer", "format": "int32" }, "malId": { "type": "integer", "format": "int64" }, "hardcoverId": { "type": "string", "nullable": true }, "webLinks": { "type": "array", "items": { "type": "string" }, "nullable": true }, "roles": { "type": "array", "items": { "enum": [ 1, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15 ], "type": "integer", "format": "int32" }, "nullable": true } }, "additionalProperties": false }, "PersonDtoStatCount": { "type": "object", "properties": { "value": { "$ref": "#/components/schemas/PersonDto" }, "count": { "type": "integer", "format": "int64" } }, "additionalProperties": false }, "PersonFilterStatementDto": { "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 ], "type": "integer", "format": "int32" }, "value": { "type": "string", "nullable": true } }, "additionalProperties": false }, "PersonMergeDto": { "required": [ "destId", "srcId" ], "type": "object", "properties": { "destId": { "type": "integer", "format": "int32" }, "srcId": { "type": "integer", "format": "int32" } }, "additionalProperties": false }, "PersonSortOptions": { "type": "object", "properties": { "sortField": { "enum": [ 1, 2, 3 ], "type": "integer", "format": "int32" }, "isAscending": { "type": "boolean" } }, "additionalProperties": false }, "PersonalToCDto": { "required": [ "chapterId", "id", "pageNumber", "title" ], "type": "object", "properties": { "id": { "type": "integer", "format": "int32" }, "chapterId": { "type": "integer", "format": "int32" }, "pageNumber": { "type": "integer", "format": "int32" }, "title": { "type": "string", "nullable": true }, "bookScrollId": { "type": "string", "nullable": true }, "selectedText": { "type": "string", "nullable": true }, "chapterTitle": { "type": "string", "nullable": true } }, "additionalProperties": false }, "ProfileStatBarDto": { "type": "object", "properties": { "booksRead": { "type": "integer", "format": "int32" }, "comicsRead": { "type": "integer", "format": "int32" }, "pagesRead": { "type": "integer", "format": "int32" }, "wordsRead": { "type": "integer", "format": "int32" }, "authorsRead": { "type": "integer", "format": "int32" }, "reviews": { "type": "integer", "format": "int32" }, "ratings": { "type": "integer", "format": "int32" } }, "additionalProperties": false }, "ProgressDto": { "required": [ "chapterId", "libraryId", "pageNum", "seriesId", "volumeId" ], "type": "object", "properties": { "volumeId": { "type": "integer", "format": "int32" }, "chapterId": { "type": "integer", "format": "int32" }, "pageNum": { "type": "integer", "format": "int32" }, "seriesId": { "type": "integer", "format": "int32" }, "libraryId": { "type": "integer", "format": "int32" }, "bookScrollId": { "type": "string", "nullable": true }, "lastModifiedUtc": { "type": "string", "format": "date-time" } }, "additionalProperties": false }, "PromoteCollectionsDto": { "type": "object", "properties": { "collectionIds": { "type": "array", "items": { "type": "integer", "format": "int32" }, "nullable": true }, "promoted": { "type": "boolean" } }, "additionalProperties": false }, "PromoteReadingListsDto": { "type": "object", "properties": { "readingListIds": { "type": "array", "items": { "type": "integer", "format": "int32" }, "nullable": true }, "promoted": { "type": "boolean" } }, "additionalProperties": false }, "PublicationStatusStatCount": { "type": "object", "properties": { "value": { "enum": [ 0, 1, 2, 3, 4 ], "type": "integer", "format": "int32" }, "count": { "type": "integer", "format": "int64" } }, "additionalProperties": false }, "RatingDto": { "type": "object", "properties": { "averageScore": { "type": "integer", "format": "int32" }, "favoriteCount": { "type": "integer", "format": "int32" }, "provider": { "enum": [ 0, 1, 2, 3, 4, 5 ], "type": "integer", "format": "int32" }, "authority": { "enum": [ 0, 1 ], "type": "integer", "format": "int32" }, "providerUrl": { "type": "string", "nullable": true } }, "additionalProperties": false }, "ReadHistoryEvent": { "required": [ "chapterNumber", "seriesName", "userName" ], "type": "object", "properties": { "userId": { "type": "integer", "format": "int32" }, "userName": { "type": "string", "nullable": true }, "libraryId": { "type": "integer", "format": "int32" }, "seriesId": { "type": "integer", "format": "int32" }, "seriesName": { "type": "string", "nullable": true }, "readDate": { "type": "string", "format": "date-time" }, "readDateUtc": { "type": "string", "format": "date-time" }, "chapterId": { "type": "integer", "format": "int32" }, "chapterNumber": { "type": "number", "format": "float" } }, "additionalProperties": false }, "ReadStatus": { "type": "object", "properties": { "notRead": { "type": "boolean" }, "inProgress": { "type": "boolean" }, "read": { "type": "boolean" } }, "additionalProperties": false }, "ReadTimeByHourDto": { "type": "object", "properties": { "dataSince": { "type": "string", "format": "date-time" }, "stats": { "type": "array", "items": { "$ref": "#/components/schemas/Int32StatCount" }, "nullable": true } }, "additionalProperties": false }, "ReadingActivityDataDto": { "type": "object", "properties": { "chapterId": { "type": "integer", "format": "int32" }, "volumeId": { "type": "integer", "format": "int32" }, "seriesId": { "type": "integer", "format": "int32" }, "libraryId": { "type": "integer", "format": "int32" }, "startPage": { "type": "integer", "format": "int32" }, "endPage": { "type": "integer", "format": "int32" }, "startTimeUtc": { "type": "string", "format": "date-time" }, "endTimeUtc": { "type": "string", "format": "date-time", "nullable": true }, "pagesRead": { "type": "integer", "format": "int32" }, "wordsRead": { "type": "integer", "format": "int32" }, "totalPages": { "type": "integer", "format": "int32" }, "totalWords": { "type": "integer", "format": "int32" }, "libraryName": { "type": "string", "nullable": true }, "seriesName": { "type": "string", "nullable": true }, "chapterTitle": { "type": "string", "nullable": true }, "clientInfo": { "$ref": "#/components/schemas/ClientInfoDto" } }, "additionalProperties": false }, "ReadingActivityGraphEntryDto": { "type": "object", "properties": { "date": { "type": "string", "format": "date-time" }, "totalTimeReadingSeconds": { "type": "integer", "format": "int32" }, "totalPages": { "type": "integer", "format": "int32" }, "totalWords": { "type": "integer", "format": "int32" }, "totalChaptersFullyRead": { "type": "integer", "format": "int32" } }, "additionalProperties": false }, "ReadingHistoryChapterItemDto": { "type": "object", "properties": { "chapterId": { "type": "integer", "format": "int32" }, "label": { "type": "string", "nullable": true }, "startTimeUtc": { "type": "string", "format": "date-time" }, "endTimeUtc": { "type": "string", "format": "date-time" }, "pagesRead": { "type": "integer", "format": "int32" }, "wordsRead": { "type": "integer", "format": "int32" }, "durationSeconds": { "type": "integer", "format": "int32" }, "startPage": { "type": "integer", "format": "int32" }, "endPage": { "type": "integer", "format": "int32" }, "totalPages": { "type": "integer", "format": "int32" }, "completed": { "type": "boolean" } }, "additionalProperties": false }, "ReadingHistoryItemDto": { "type": "object", "properties": { "sessionDataIds": { "type": "array", "items": { "type": "integer", "format": "int32" }, "nullable": true }, "sessionId": { "type": "integer", "format": "int32" }, "isGeneratedSession": { "type": "boolean" }, "startTimeUtc": { "type": "string", "format": "date-time" }, "endTimeUtc": { "type": "string", "format": "date-time" }, "localDate": { "type": "string", "format": "date-time" }, "seriesId": { "type": "integer", "format": "int32" }, "seriesName": { "type": "string", "nullable": true }, "seriesFormat": { "enum": [ 0, 1, 2, 3, 4 ], "type": "integer", "format": "int32" }, "chapters": { "type": "array", "items": { "$ref": "#/components/schemas/ReadingHistoryChapterItemDto" }, "nullable": true }, "libraryId": { "type": "integer", "format": "int32" }, "libraryName": { "type": "string", "nullable": true }, "pagesRead": { "type": "integer", "format": "int32" }, "wordsRead": { "type": "integer", "format": "int32" }, "durationSeconds": { "type": "integer", "format": "int32" }, "totalPages": { "type": "integer", "format": "int32" } }, "additionalProperties": false }, "ReadingListDto": { "required": [ "ageRating" ], "type": "object", "properties": { "id": { "type": "integer", "format": "int32" }, "title": { "type": "string", "nullable": true }, "summary": { "type": "string", "nullable": true }, "promoted": { "type": "boolean" }, "coverImageLocked": { "type": "boolean" }, "coverImage": { "type": "string", "nullable": true }, "primaryColor": { "type": "string", "nullable": true }, "secondaryColor": { "type": "string", "nullable": true }, "itemCount": { "type": "integer", "format": "int32" }, "startingYear": { "type": "integer", "format": "int32" }, "startingMonth": { "type": "integer", "format": "int32" }, "endingYear": { "type": "integer", "format": "int32" }, "endingMonth": { "type": "integer", "format": "int32" }, "ageRating": { "enum": [ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, -1 ], "type": "integer", "format": "int32" }, "ownerUserName": { "type": "string", "nullable": true } }, "additionalProperties": false }, "ReadingListInfoDto": { "type": "object", "properties": { "pages": { "type": "integer", "format": "int32" }, "wordCount": { "type": "integer", "format": "int64" }, "isAllEpub": { "type": "boolean" }, "minHoursToRead": { "type": "integer", "format": "int32" }, "maxHoursToRead": { "type": "integer", "format": "int32" }, "avgHoursToRead": { "type": "number", "format": "float" } }, "additionalProperties": false }, "ReadingListItemDto": { "type": "object", "properties": { "id": { "type": "integer", "format": "int32" }, "order": { "type": "integer", "format": "int32" }, "chapterId": { "type": "integer", "format": "int32" }, "seriesId": { "type": "integer", "format": "int32" }, "seriesName": { "type": "string", "nullable": true }, "seriesSortName": { "type": "string", "nullable": true }, "seriesFormat": { "enum": [ 0, 1, 2, 3, 4 ], "type": "integer", "format": "int32" }, "pagesRead": { "type": "integer", "format": "int32" }, "pagesTotal": { "type": "integer", "format": "int32" }, "chapterNumber": { "type": "string", "nullable": true }, "volumeNumber": { "type": "string", "nullable": true }, "chapterTitleName": { "type": "string", "nullable": true }, "volumeId": { "type": "integer", "format": "int32" }, "libraryId": { "type": "integer", "format": "int32" }, "title": { "type": "string", "nullable": true }, "libraryType": { "enum": [ 0, 1, 2, 3, 4, 5 ], "type": "integer", "format": "int32" }, "libraryName": { "type": "string", "nullable": true }, "releaseDate": { "type": "string", "format": "date-time", "nullable": true }, "readingListId": { "type": "integer", "format": "int32" }, "lastReadingProgressUtc": { "type": "string", "format": "date-time", "nullable": true }, "fileSize": { "type": "integer", "format": "int64" }, "summary": { "type": "string", "nullable": true }, "isSpecial": { "type": "boolean" } }, "additionalProperties": false }, "ReadingPaceDto": { "type": "object", "properties": { "hoursRead": { "type": "integer", "format": "int32" }, "pagesRead": { "type": "integer", "format": "int32" }, "wordsRead": { "type": "integer", "format": "int32" }, "booksRead": { "type": "integer", "format": "int32" }, "comicsRead": { "type": "integer", "format": "int32" }, "daysInRange": { "type": "integer", "format": "int32" } }, "additionalProperties": false }, "ReadingSessionDto": { "type": "object", "properties": { "id": { "type": "integer", "format": "int32" }, "startTimeUtc": { "type": "string", "format": "date-time" }, "endTimeUtc": { "type": "string", "format": "date-time", "nullable": true }, "isActive": { "type": "boolean" }, "activityData": { "type": "array", "items": { "$ref": "#/components/schemas/ReadingActivityDataDto" }, "nullable": true }, "userId": { "type": "integer", "format": "int32" }, "username": { "type": "string", "nullable": true } }, "additionalProperties": false }, "RecommendationDto": { "type": "object", "properties": { "ownedSeries": { "type": "array", "items": { "$ref": "#/components/schemas/SeriesDto" }, "nullable": true }, "externalSeries": { "type": "array", "items": { "$ref": "#/components/schemas/ExternalSeriesDto" }, "nullable": true } }, "additionalProperties": false }, "RefreshSeriesDto": { "type": "object", "properties": { "libraryId": { "type": "integer", "format": "int32" }, "seriesId": { "type": "integer", "format": "int32" }, "forceUpdate": { "type": "boolean" }, "forceColorscape": { "type": "boolean" } }, "additionalProperties": false }, "RegisterDto": { "required": [ "password", "username" ], "type": "object", "properties": { "username": { "minLength": 1, "type": "string" }, "email": { "type": "string", "nullable": true }, "password": { "maxLength": 256, "minLength": 6, "type": "string" } }, "additionalProperties": false }, "RelatedSeriesDto": { "type": "object", "properties": { "sourceSeriesId": { "type": "integer", "format": "int32" }, "sequels": { "type": "array", "items": { "$ref": "#/components/schemas/SeriesDto" }, "nullable": true }, "prequels": { "type": "array", "items": { "$ref": "#/components/schemas/SeriesDto" }, "nullable": true }, "spinOffs": { "type": "array", "items": { "$ref": "#/components/schemas/SeriesDto" }, "nullable": true }, "adaptations": { "type": "array", "items": { "$ref": "#/components/schemas/SeriesDto" }, "nullable": true }, "sideStories": { "type": "array", "items": { "$ref": "#/components/schemas/SeriesDto" }, "nullable": true }, "characters": { "type": "array", "items": { "$ref": "#/components/schemas/SeriesDto" }, "nullable": true }, "contains": { "type": "array", "items": { "$ref": "#/components/schemas/SeriesDto" }, "nullable": true }, "others": { "type": "array", "items": { "$ref": "#/components/schemas/SeriesDto" }, "nullable": true }, "alternativeSettings": { "type": "array", "items": { "$ref": "#/components/schemas/SeriesDto" }, "nullable": true }, "alternativeVersions": { "type": "array", "items": { "$ref": "#/components/schemas/SeriesDto" }, "nullable": true }, "doujinshis": { "type": "array", "items": { "$ref": "#/components/schemas/SeriesDto" }, "nullable": true }, "parent": { "type": "array", "items": { "$ref": "#/components/schemas/SeriesDto" }, "nullable": true }, "editions": { "type": "array", "items": { "$ref": "#/components/schemas/SeriesDto" }, "nullable": true }, "annuals": { "type": "array", "items": { "$ref": "#/components/schemas/SeriesDto" }, "nullable": true } }, "additionalProperties": false }, "RemoveBookmarkForSeriesDto": { "type": "object", "properties": { "seriesId": { "type": "integer", "format": "int32" } }, "additionalProperties": false }, "RereadChapterDto": { "type": "object", "properties": { "libraryId": { "type": "integer", "format": "int32" }, "seriesId": { "type": "integer", "format": "int32" }, "volumeId": { "type": "integer", "format": "int32" }, "chapterId": { "type": "integer", "format": "int32" }, "label": { "type": "string", "nullable": true }, "format": { "enum": [ 0, 1, 2, 3, 4 ], "type": "integer", "format": "int32", "nullable": true } }, "additionalProperties": false }, "RereadDto": { "required": [ "shouldPrompt" ], "type": "object", "properties": { "shouldPrompt": { "type": "boolean" }, "timePrompt": { "type": "boolean" }, "fullReread": { "type": "boolean" }, "daysSinceLastRead": { "type": "integer", "format": "int32" }, "chapterOnContinue": { "$ref": "#/components/schemas/RereadChapterDto" }, "chapterOnReread": { "$ref": "#/components/schemas/RereadChapterDto" } }, "additionalProperties": false }, "ResetPasswordDto": { "required": [ "password", "userName" ], "type": "object", "properties": { "userName": { "minLength": 1, "type": "string" }, "password": { "maxLength": 256, "minLength": 6, "type": "string" }, "oldPassword": { "type": "string", "nullable": true } }, "additionalProperties": false }, "RgbaColor": { "type": "object", "properties": { "r": { "type": "integer", "format": "int32" }, "g": { "type": "integer", "format": "int32" }, "b": { "type": "integer", "format": "int32" }, "a": { "type": "number", "format": "float" } }, "additionalProperties": false }, "RotateAuthKeyRequestDto": { "required": [ "keyLength", "name" ], "type": "object", "properties": { "keyLength": { "maximum": 32, "minimum": 8, "type": "integer", "format": "int32" }, "name": { "minLength": 1, "type": "string" }, "expiresUtc": { "type": "string", "nullable": true } }, "additionalProperties": false }, "ScanFolderDto": { "type": "object", "properties": { "apiKey": { "type": "string", "nullable": true }, "folderPath": { "type": "string", "nullable": true }, "abortOnNoSeriesMatch": { "type": "boolean" } }, "additionalProperties": false }, "ScrobbleErrorDto": { "type": "object", "properties": { "comment": { "type": "string", "nullable": true }, "details": { "type": "string", "nullable": true }, "seriesId": { "type": "integer", "format": "int32" }, "libraryId": { "type": "integer", "format": "int32" }, "created": { "type": "string", "format": "date-time" } }, "additionalProperties": false }, "ScrobbleEventDto": { "type": "object", "properties": { "id": { "type": "integer", "format": "int64" }, "seriesName": { "type": "string", "nullable": true }, "seriesId": { "type": "integer", "format": "int32" }, "libraryId": { "type": "integer", "format": "int32" }, "isProcessed": { "type": "boolean" }, "volumeNumber": { "type": "number", "format": "float", "nullable": true }, "chapterNumber": { "type": "integer", "format": "int32", "nullable": true }, "lastModifiedUtc": { "type": "string", "format": "date-time" }, "createdUtc": { "type": "string", "format": "date-time" }, "rating": { "type": "number", "format": "float", "nullable": true }, "scrobbleEventType": { "enum": [ 0, 1, 2, 3, 4 ], "type": "integer", "format": "int32" }, "isErrored": { "type": "boolean" }, "errorDetails": { "type": "string", "nullable": true } }, "additionalProperties": false }, "ScrobbleEventFilter": { "type": "object", "properties": { "field": { "enum": [ 0, 1, 2, 3, 4, 5, 6 ], "type": "integer", "format": "int32" }, "isDescending": { "type": "boolean" }, "query": { "type": "string", "nullable": true }, "includeReviews": { "type": "boolean" } }, "additionalProperties": false }, "ScrobbleHoldDto": { "type": "object", "properties": { "seriesName": { "type": "string", "nullable": true }, "seriesId": { "type": "integer", "format": "int32" }, "libraryId": { "type": "integer", "format": "int32" }, "created": { "type": "string", "format": "date-time" }, "createdUtc": { "type": "string", "format": "date-time" } }, "additionalProperties": false }, "SearchResultDto": { "type": "object", "properties": { "seriesId": { "type": "integer", "format": "int32" }, "name": { "type": "string", "nullable": true }, "originalName": { "type": "string", "nullable": true }, "sortName": { "type": "string", "nullable": true }, "localizedName": { "type": "string", "nullable": true }, "format": { "enum": [ 0, 1, 2, 3, 4 ], "type": "integer", "format": "int32" }, "libraryName": { "type": "string", "nullable": true }, "libraryId": { "type": "integer", "format": "int32" } }, "additionalProperties": false }, "SearchResultGroupDto": { "type": "object", "properties": { "libraries": { "type": "array", "items": { "$ref": "#/components/schemas/LibraryDto" }, "nullable": true }, "series": { "type": "array", "items": { "$ref": "#/components/schemas/SearchResultDto" }, "nullable": true }, "collections": { "type": "array", "items": { "$ref": "#/components/schemas/AppUserCollectionDto" }, "nullable": true }, "readingLists": { "type": "array", "items": { "$ref": "#/components/schemas/ReadingListDto" }, "nullable": true }, "persons": { "type": "array", "items": { "$ref": "#/components/schemas/PersonDto" }, "nullable": true }, "genres": { "type": "array", "items": { "$ref": "#/components/schemas/GenreTagDto" }, "nullable": true }, "tags": { "type": "array", "items": { "$ref": "#/components/schemas/TagDto" }, "nullable": true }, "files": { "type": "array", "items": { "$ref": "#/components/schemas/MangaFileDto" }, "nullable": true }, "chapters": { "type": "array", "items": { "$ref": "#/components/schemas/ChapterDto" }, "nullable": true }, "bookmarks": { "type": "array", "items": { "$ref": "#/components/schemas/BookmarkSearchResultDto" }, "nullable": true }, "annotations": { "type": "array", "items": { "$ref": "#/components/schemas/AnnotationDto" }, "nullable": true } }, "additionalProperties": false }, "SendSeriesToEmailDeviceDto": { "type": "object", "properties": { "deviceId": { "type": "integer", "format": "int32" }, "seriesId": { "type": "integer", "format": "int32" } }, "additionalProperties": false }, "SendToEmailDeviceDto": { "type": "object", "properties": { "deviceId": { "type": "integer", "format": "int32" }, "chapterIds": { "type": "array", "items": { "type": "integer", "format": "int32" }, "nullable": true } }, "additionalProperties": false }, "SeriesByIdsDto": { "type": "object", "properties": { "seriesIds": { "type": "array", "items": { "type": "integer", "format": "int32" }, "nullable": true } }, "additionalProperties": false }, "SeriesCharacter": { "required": [ "description", "url" ], "type": "object", "properties": { "name": { "type": "string", "nullable": true }, "description": { "type": "string", "nullable": true }, "url": { "type": "string", "nullable": true }, "imageUrl": { "type": "string", "nullable": true }, "role": { "enum": [ 0, 1, 2 ], "type": "integer", "format": "int32" } }, "additionalProperties": false }, "SeriesDetailDto": { "type": "object", "properties": { "specials": { "type": "array", "items": { "$ref": "#/components/schemas/ChapterDto" }, "nullable": true }, "chapters": { "type": "array", "items": { "$ref": "#/components/schemas/ChapterDto" }, "nullable": true }, "volumes": { "type": "array", "items": { "$ref": "#/components/schemas/VolumeDto" }, "nullable": true }, "storylineChapters": { "type": "array", "items": { "$ref": "#/components/schemas/ChapterDto" }, "nullable": true }, "unreadCount": { "type": "integer", "format": "int32" }, "totalCount": { "type": "integer", "format": "int32" } }, "additionalProperties": false }, "SeriesDetailPlusDto": { "type": "object", "properties": { "recommendations": { "$ref": "#/components/schemas/RecommendationDto" }, "reviews": { "type": "array", "items": { "$ref": "#/components/schemas/UserReviewDto" }, "nullable": true }, "ratings": { "type": "array", "items": { "$ref": "#/components/schemas/RatingDto" }, "nullable": true }, "series": { "$ref": "#/components/schemas/ExternalSeriesDetailDto" } }, "additionalProperties": false }, "SeriesDto": { "type": "object", "properties": { "id": { "type": "integer", "format": "int32" }, "name": { "type": "string", "nullable": true }, "originalName": { "type": "string", "nullable": true }, "localizedName": { "type": "string", "nullable": true }, "sortName": { "type": "string", "nullable": true }, "pages": { "type": "integer", "format": "int32" }, "coverImageLocked": { "type": "boolean" }, "lastChapterAdded": { "type": "string", "format": "date-time" }, "lastChapterAddedUtc": { "type": "string", "format": "date-time" }, "userRating": { "type": "number", "format": "float" }, "hasUserRated": { "type": "boolean" }, "totalReads": { "type": "integer", "format": "int32" }, "pagesRead": { "type": "integer", "format": "int32" }, "latestReadDate": { "type": "string", "format": "date-time" }, "format": { "enum": [ 0, 1, 2, 3, 4 ], "type": "integer", "format": "int32" }, "created": { "type": "string", "format": "date-time" }, "sortNameLocked": { "type": "boolean" }, "localizedNameLocked": { "type": "boolean" }, "wordCount": { "type": "integer", "format": "int64" }, "libraryId": { "type": "integer", "format": "int32" }, "libraryName": { "type": "string", "nullable": true }, "minHoursToRead": { "type": "integer", "format": "int32" }, "maxHoursToRead": { "type": "integer", "format": "int32" }, "avgHoursToRead": { "type": "number", "format": "float" }, "folderPath": { "type": "string", "nullable": true }, "lowestFolderPath": { "type": "string", "nullable": true }, "lastFolderScanned": { "type": "string", "format": "date-time" }, "dontMatch": { "type": "boolean" }, "isBlacklisted": { "type": "boolean" }, "coverImage": { "type": "string", "nullable": true }, "primaryColor": { "type": "string", "nullable": true }, "secondaryColor": { "type": "string", "nullable": true }, "aniListId": { "type": "integer", "format": "int32" }, "malId": { "type": "integer", "format": "int64" }, "hardcoverId": { "type": "integer", "format": "int32" }, "metronId": { "type": "integer", "format": "int64" }, "comicVineId": { "type": "string", "nullable": true }, "mangaBakaId": { "type": "integer", "format": "int64" } }, "additionalProperties": false }, "SeriesDtoStatCount": { "type": "object", "properties": { "value": { "$ref": "#/components/schemas/SeriesDto" }, "count": { "type": "integer", "format": "int64" } }, "additionalProperties": false }, "SeriesMetadataDto": { "type": "object", "properties": { "id": { "type": "integer", "format": "int32" }, "summary": { "type": "string", "nullable": true }, "genres": { "type": "array", "items": { "$ref": "#/components/schemas/GenreTagDto" }, "nullable": true }, "tags": { "type": "array", "items": { "$ref": "#/components/schemas/TagDto" }, "nullable": true }, "writers": { "type": "array", "items": { "$ref": "#/components/schemas/PersonDto" }, "nullable": true }, "coverArtists": { "type": "array", "items": { "$ref": "#/components/schemas/PersonDto" }, "nullable": true }, "publishers": { "type": "array", "items": { "$ref": "#/components/schemas/PersonDto" }, "nullable": true }, "characters": { "type": "array", "items": { "$ref": "#/components/schemas/PersonDto" }, "nullable": true }, "pencillers": { "type": "array", "items": { "$ref": "#/components/schemas/PersonDto" }, "nullable": true }, "inkers": { "type": "array", "items": { "$ref": "#/components/schemas/PersonDto" }, "nullable": true }, "imprints": { "type": "array", "items": { "$ref": "#/components/schemas/PersonDto" }, "nullable": true }, "colorists": { "type": "array", "items": { "$ref": "#/components/schemas/PersonDto" }, "nullable": true }, "letterers": { "type": "array", "items": { "$ref": "#/components/schemas/PersonDto" }, "nullable": true }, "editors": { "type": "array", "items": { "$ref": "#/components/schemas/PersonDto" }, "nullable": true }, "translators": { "type": "array", "items": { "$ref": "#/components/schemas/PersonDto" }, "nullable": true }, "teams": { "type": "array", "items": { "$ref": "#/components/schemas/PersonDto" }, "nullable": true }, "locations": { "type": "array", "items": { "$ref": "#/components/schemas/PersonDto" }, "nullable": true }, "ageRating": { "enum": [ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, -1 ], "type": "integer", "format": "int32" }, "releaseYear": { "type": "integer", "format": "int32" }, "language": { "type": "string", "nullable": true }, "maxCount": { "type": "integer", "format": "int32" }, "totalCount": { "type": "integer", "format": "int32" }, "publicationStatus": { "enum": [ 0, 1, 2, 3, 4 ], "type": "integer", "format": "int32" }, "webLinks": { "type": "string", "nullable": true }, "languageLocked": { "type": "boolean" }, "summaryLocked": { "type": "boolean" }, "ageRatingLocked": { "type": "boolean" }, "publicationStatusLocked": { "type": "boolean" }, "genresLocked": { "type": "boolean" }, "tagsLocked": { "type": "boolean" }, "writerLocked": { "type": "boolean" }, "characterLocked": { "type": "boolean" }, "coloristLocked": { "type": "boolean" }, "editorLocked": { "type": "boolean" }, "inkerLocked": { "type": "boolean" }, "imprintLocked": { "type": "boolean" }, "lettererLocked": { "type": "boolean" }, "pencillerLocked": { "type": "boolean" }, "publisherLocked": { "type": "boolean" }, "translatorLocked": { "type": "boolean" }, "teamLocked": { "type": "boolean" }, "locationLocked": { "type": "boolean" }, "coverArtistLocked": { "type": "boolean" }, "releaseYearLocked": { "type": "boolean" }, "seriesId": { "type": "integer", "format": "int32" } }, "additionalProperties": false }, "SeriesRelationship": { "type": "object", "properties": { "aniListId": { "type": "integer", "format": "int32" }, "malId": { "type": "integer", "format": "int32", "nullable": true }, "seriesName": { "$ref": "#/components/schemas/ALMediaTitle" }, "relation": { "enum": [ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14 ], "type": "integer", "format": "int32" }, "provider": { "enum": [ 0, 1, 2, 3, 4, 5 ], "type": "integer", "format": "int32" }, "plusMediaFormat": { "enum": [ 1, 2, 3, 4, 5 ], "type": "integer", "format": "int32" } }, "additionalProperties": false }, "SeriesStaffDto": { "required": [ "name", "role", "url" ], "type": "object", "properties": { "name": { "type": "string", "nullable": true }, "firstName": { "type": "string", "nullable": true }, "lastName": { "type": "string", "nullable": true }, "url": { "type": "string", "nullable": true }, "role": { "type": "string", "nullable": true }, "imageUrl": { "type": "string", "nullable": true }, "gender": { "type": "string", "nullable": true }, "description": { "type": "string", "nullable": true } }, "additionalProperties": false }, "ServerInfoSlimDto": { "required": [ "installId", "kavitaVersion" ], "type": "object", "properties": { "installId": { "type": "string", "nullable": true }, "isDocker": { "type": "boolean" }, "kavitaVersion": { "type": "string", "nullable": true }, "firstInstallDate": { "type": "string", "format": "date-time", "nullable": true }, "firstInstallVersion": { "type": "string", "nullable": true } }, "additionalProperties": false }, "ServerSettingDto": { "type": "object", "properties": { "cacheDirectory": { "type": "string", "nullable": true }, "taskScan": { "type": "string", "nullable": true }, "taskBackup": { "type": "string", "nullable": true }, "taskCleanup": { "type": "string", "nullable": true }, "loggingLevel": { "type": "string", "nullable": true }, "port": { "type": "integer", "format": "int32" }, "ipAddresses": { "type": "string", "nullable": true }, "allowStatCollection": { "type": "boolean" }, "enableOpds": { "type": "boolean" }, "baseUrl": { "type": "string", "nullable": true }, "bookmarksDirectory": { "type": "string", "nullable": true }, "installVersion": { "type": "string", "nullable": true }, "installId": { "type": "string", "nullable": true }, "encodeMediaAs": { "enum": [ 0, 1, 2 ], "type": "integer", "format": "int32" }, "totalBackups": { "type": "integer", "format": "int32" }, "enableFolderWatching": { "type": "boolean" }, "totalLogs": { "type": "integer", "format": "int32" }, "hostName": { "type": "string", "nullable": true }, "cacheSize": { "type": "integer", "format": "int64" }, "onDeckProgressDays": { "type": "integer", "format": "int32" }, "onDeckUpdateDays": { "type": "integer", "format": "int32" }, "coverImageSize": { "enum": [ 1, 2, 3, 4 ], "type": "integer", "format": "int32" }, "pdfRenderResolution": { "enum": [ 1, 2, 3 ], "type": "integer", "format": "int32" }, "smtpConfig": { "$ref": "#/components/schemas/SmtpConfigDto" }, "oidcConfig": { "$ref": "#/components/schemas/OidcConfigDto" }, "firstInstallDate": { "type": "string", "format": "date-time", "nullable": true }, "firstInstallVersion": { "type": "string", "nullable": true }, "statsApiHits": { "type": "integer", "format": "int32" } }, "additionalProperties": false }, "ServerStatisticsDto": { "type": "object", "properties": { "chapterCount": { "type": "integer", "format": "int64" }, "volumeCount": { "type": "integer", "format": "int64" }, "seriesCount": { "type": "integer", "format": "int64" }, "totalFiles": { "type": "integer", "format": "int64" }, "totalSize": { "type": "integer", "format": "int64" }, "totalGenres": { "type": "integer", "format": "int64" }, "totalTags": { "type": "integer", "format": "int64" }, "totalPeople": { "type": "integer", "format": "int64" }, "totalReadingTime": { "type": "integer", "format": "int64" } }, "additionalProperties": false }, "SideNavStreamDto": { "required": [ "name" ], "type": "object", "properties": { "id": { "type": "integer", "format": "int32" }, "name": { "type": "string", "nullable": true }, "isProvided": { "type": "boolean" }, "order": { "type": "integer", "format": "int32" }, "smartFilterEncoded": { "type": "string", "nullable": true }, "smartFilterId": { "type": "integer", "format": "int32", "nullable": true }, "externalSourceId": { "type": "integer", "format": "int32" }, "externalSource": { "$ref": "#/components/schemas/ExternalSourceDto" }, "streamType": { "enum": [ 1, 2, 3, 4, 5, 6, 7, 8, 9 ], "type": "integer", "format": "int32" }, "visible": { "type": "boolean" }, "libraryId": { "type": "integer", "format": "int32", "nullable": true }, "library": { "$ref": "#/components/schemas/LibraryDto" } }, "additionalProperties": false }, "SiteThemeDto": { "required": [ "fileName", "name", "normalizedName" ], "type": "object", "properties": { "id": { "type": "integer", "format": "int32" }, "name": { "type": "string", "nullable": true }, "normalizedName": { "type": "string", "nullable": true }, "fileName": { "type": "string", "nullable": true }, "isDefault": { "type": "boolean" }, "provider": { "enum": [ 1, 2 ], "type": "integer", "format": "int32" }, "previewUrls": { "type": "array", "items": { "type": "string" }, "nullable": true }, "description": { "type": "string", "nullable": true }, "author": { "type": "string", "nullable": true }, "compatibleVersion": { "type": "string", "nullable": true }, "selector": { "type": "string", "nullable": true, "readOnly": true } }, "additionalProperties": false }, "SmartFilterDto": { "required": [ "filter", "name" ], "type": "object", "properties": { "id": { "type": "integer", "format": "int32" }, "name": { "type": "string", "nullable": true }, "filter": { "type": "string", "nullable": true } }, "additionalProperties": false }, "SmtpConfigDto": { "type": "object", "properties": { "senderAddress": { "type": "string", "nullable": true }, "senderDisplayName": { "type": "string", "nullable": true }, "userName": { "type": "string", "nullable": true }, "password": { "type": "string", "nullable": true }, "host": { "type": "string", "nullable": true }, "port": { "type": "integer", "format": "int32" }, "enableSsl": { "type": "boolean" }, "sizeLimit": { "type": "integer", "format": "int32" }, "customizedTemplates": { "type": "boolean" } }, "additionalProperties": false }, "SortOptions": { "type": "object", "properties": { "sortField": { "enum": [ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 ], "type": "integer", "format": "int32" }, "isAscending": { "type": "boolean" } }, "additionalProperties": false }, "SpreadStatsDto": { "type": "object", "properties": { "buckets": { "type": "array", "items": { "$ref": "#/components/schemas/StatBucketDto" }, "nullable": true }, "totalCount": { "type": "integer", "format": "int32" } }, "additionalProperties": false }, "StandaloneChapterDto": { "type": "object", "properties": { "id": { "type": "integer", "format": "int32" }, "range": { "type": "string", "nullable": true }, "number": { "type": "string", "nullable": true, "deprecated": true }, "minNumber": { "type": "number", "format": "float" }, "maxNumber": { "type": "number", "format": "float" }, "sortOrder": { "type": "number", "format": "float" }, "pages": { "type": "integer", "format": "int32" }, "isSpecial": { "type": "boolean" }, "title": { "type": "string", "nullable": true }, "files": { "type": "array", "items": { "$ref": "#/components/schemas/MangaFileDto" }, "nullable": true }, "pagesRead": { "type": "integer", "format": "int32" }, "totalReads": { "type": "integer", "format": "int32" }, "lastReadingProgressUtc": { "type": "string", "format": "date-time" }, "lastReadingProgress": { "type": "string", "format": "date-time" }, "coverImageLocked": { "type": "boolean" }, "volumeId": { "type": "integer", "format": "int32" }, "createdUtc": { "type": "string", "format": "date-time" }, "lastModifiedUtc": { "type": "string", "format": "date-time" }, "created": { "type": "string", "format": "date-time" }, "releaseDate": { "type": "string", "format": "date-time" }, "titleName": { "type": "string", "nullable": true }, "summary": { "type": "string", "nullable": true }, "ageRating": { "enum": [ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, -1 ], "type": "integer", "format": "int32" }, "wordCount": { "type": "integer", "format": "int64" }, "minHoursToRead": { "type": "integer", "format": "int32" }, "maxHoursToRead": { "type": "integer", "format": "int32" }, "avgHoursToRead": { "type": "number", "format": "float" }, "webLinks": { "type": "string", "nullable": true }, "isbn": { "type": "string", "nullable": true }, "writers": { "type": "array", "items": { "$ref": "#/components/schemas/PersonDto" }, "nullable": true }, "coverArtists": { "type": "array", "items": { "$ref": "#/components/schemas/PersonDto" }, "nullable": true }, "publishers": { "type": "array", "items": { "$ref": "#/components/schemas/PersonDto" }, "nullable": true }, "characters": { "type": "array", "items": { "$ref": "#/components/schemas/PersonDto" }, "nullable": true }, "pencillers": { "type": "array", "items": { "$ref": "#/components/schemas/PersonDto" }, "nullable": true }, "inkers": { "type": "array", "items": { "$ref": "#/components/schemas/PersonDto" }, "nullable": true }, "imprints": { "type": "array", "items": { "$ref": "#/components/schemas/PersonDto" }, "nullable": true }, "colorists": { "type": "array", "items": { "$ref": "#/components/schemas/PersonDto" }, "nullable": true }, "letterers": { "type": "array", "items": { "$ref": "#/components/schemas/PersonDto" }, "nullable": true }, "editors": { "type": "array", "items": { "$ref": "#/components/schemas/PersonDto" }, "nullable": true }, "translators": { "type": "array", "items": { "$ref": "#/components/schemas/PersonDto" }, "nullable": true }, "teams": { "type": "array", "items": { "$ref": "#/components/schemas/PersonDto" }, "nullable": true }, "locations": { "type": "array", "items": { "$ref": "#/components/schemas/PersonDto" }, "nullable": true }, "genres": { "type": "array", "items": { "$ref": "#/components/schemas/GenreTagDto" }, "nullable": true }, "tags": { "type": "array", "items": { "$ref": "#/components/schemas/TagDto" }, "nullable": true }, "publicationStatus": { "enum": [ 0, 1, 2, 3, 4 ], "type": "integer", "format": "int32" }, "language": { "type": "string", "nullable": true }, "count": { "type": "integer", "format": "int32" }, "totalCount": { "type": "integer", "format": "int32" }, "languageLocked": { "type": "boolean" }, "summaryLocked": { "type": "boolean" }, "ageRatingLocked": { "type": "boolean" }, "publicationStatusLocked": { "type": "boolean" }, "genresLocked": { "type": "boolean" }, "tagsLocked": { "type": "boolean" }, "writerLocked": { "type": "boolean" }, "characterLocked": { "type": "boolean" }, "coloristLocked": { "type": "boolean" }, "editorLocked": { "type": "boolean" }, "inkerLocked": { "type": "boolean" }, "imprintLocked": { "type": "boolean" }, "lettererLocked": { "type": "boolean" }, "pencillerLocked": { "type": "boolean" }, "publisherLocked": { "type": "boolean" }, "translatorLocked": { "type": "boolean" }, "teamLocked": { "type": "boolean" }, "locationLocked": { "type": "boolean" }, "coverArtistLocked": { "type": "boolean" }, "releaseDateLocked": { "type": "boolean" }, "titleNameLocked": { "type": "boolean" }, "sortOrderLocked": { "type": "boolean" }, "coverImage": { "type": "string", "nullable": true }, "primaryColor": { "type": "string", "nullable": true }, "secondaryColor": { "type": "string", "nullable": true }, "format": { "enum": [ 0, 1, 2, 3, 4 ], "type": "integer", "format": "int32", "nullable": true, "readOnly": true }, "aniListId": { "type": "integer", "format": "int32" }, "malId": { "type": "integer", "format": "int64" }, "hardcoverId": { "type": "integer", "format": "int32" }, "metronId": { "type": "integer", "format": "int64" }, "comicVineId": { "type": "string", "nullable": true }, "mangaBakaId": { "type": "integer", "format": "int64" }, "seriesId": { "type": "integer", "format": "int32" }, "libraryId": { "type": "integer", "format": "int32" }, "libraryType": { "enum": [ 0, 1, 2, 3, 4, 5 ], "type": "integer", "format": "int32" }, "volumeTitle": { "type": "string", "nullable": true } }, "additionalProperties": false }, "StatBucketDto": { "type": "object", "properties": { "rangeStart": { "type": "integer", "format": "int32" }, "rangeEnd": { "type": "integer", "format": "int32", "nullable": true }, "count": { "type": "integer", "format": "int32" }, "percentage": { "type": "number", "format": "double" } }, "additionalProperties": false }, "StringBreakDownDto": { "type": "object", "properties": { "data": { "type": "array", "items": { "$ref": "#/components/schemas/StringStatCount" }, "nullable": true }, "total": { "type": "integer", "format": "int32" }, "totalOptions": { "type": "integer", "format": "int32" }, "missing": { "type": "integer", "format": "int32" } }, "additionalProperties": false }, "StringStatCount": { "type": "object", "properties": { "value": { "type": "string", "nullable": true }, "count": { "type": "integer", "format": "int64" } }, "additionalProperties": false }, "TagDto": { "required": [ "title" ], "type": "object", "properties": { "id": { "type": "integer", "format": "int32" }, "title": { "type": "string", "nullable": true } }, "additionalProperties": false }, "TagDtoStatCount": { "type": "object", "properties": { "value": { "$ref": "#/components/schemas/TagDto" }, "count": { "type": "integer", "format": "int64" } }, "additionalProperties": false }, "TokenRequestDto": { "type": "object", "properties": { "token": { "type": "string", "nullable": true }, "refreshToken": { "type": "string", "nullable": true } }, "additionalProperties": false }, "TopReadDto": { "type": "object", "properties": { "userId": { "type": "integer", "format": "int32" }, "username": { "type": "string", "nullable": true }, "comicsTime": { "type": "number", "format": "float" }, "booksTime": { "type": "number", "format": "float" }, "mangaTime": { "type": "number", "format": "float" } }, "additionalProperties": false }, "UpdateAgeRestrictionDto": { "required": [ "ageRating", "includeUnknowns" ], "type": "object", "properties": { "ageRating": { "enum": [ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, -1 ], "type": "integer", "format": "int32" }, "includeUnknowns": { "type": "boolean" } }, "additionalProperties": false }, "UpdateChapterDto": { "type": "object", "properties": { "id": { "type": "integer", "format": "int32" }, "summary": { "type": "string", "nullable": true }, "genres": { "type": "array", "items": { "$ref": "#/components/schemas/GenreTagDto" }, "nullable": true }, "tags": { "type": "array", "items": { "$ref": "#/components/schemas/TagDto" }, "nullable": true }, "writers": { "type": "array", "items": { "$ref": "#/components/schemas/PersonDto" }, "nullable": true }, "coverArtists": { "type": "array", "items": { "$ref": "#/components/schemas/PersonDto" }, "nullable": true }, "publishers": { "type": "array", "items": { "$ref": "#/components/schemas/PersonDto" }, "nullable": true }, "characters": { "type": "array", "items": { "$ref": "#/components/schemas/PersonDto" }, "nullable": true }, "pencillers": { "type": "array", "items": { "$ref": "#/components/schemas/PersonDto" }, "nullable": true }, "inkers": { "type": "array", "items": { "$ref": "#/components/schemas/PersonDto" }, "nullable": true }, "imprints": { "type": "array", "items": { "$ref": "#/components/schemas/PersonDto" }, "nullable": true }, "colorists": { "type": "array", "items": { "$ref": "#/components/schemas/PersonDto" }, "nullable": true }, "letterers": { "type": "array", "items": { "$ref": "#/components/schemas/PersonDto" }, "nullable": true }, "editors": { "type": "array", "items": { "$ref": "#/components/schemas/PersonDto" }, "nullable": true }, "translators": { "type": "array", "items": { "$ref": "#/components/schemas/PersonDto" }, "nullable": true }, "teams": { "type": "array", "items": { "$ref": "#/components/schemas/PersonDto" }, "nullable": true }, "locations": { "type": "array", "items": { "$ref": "#/components/schemas/PersonDto" }, "nullable": true }, "ageRating": { "enum": [ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, -1 ], "type": "integer", "format": "int32" }, "language": { "type": "string", "nullable": true }, "ageRatingLocked": { "type": "boolean" }, "titleNameLocked": { "type": "boolean" }, "genresLocked": { "type": "boolean" }, "tagsLocked": { "type": "boolean" }, "writerLocked": { "type": "boolean" }, "characterLocked": { "type": "boolean" }, "coloristLocked": { "type": "boolean" }, "editorLocked": { "type": "boolean" }, "inkerLocked": { "type": "boolean" }, "imprintLocked": { "type": "boolean" }, "lettererLocked": { "type": "boolean" }, "pencillerLocked": { "type": "boolean" }, "publisherLocked": { "type": "boolean" }, "translatorLocked": { "type": "boolean" }, "teamLocked": { "type": "boolean" }, "locationLocked": { "type": "boolean" }, "coverArtistLocked": { "type": "boolean" }, "languageLocked": { "type": "boolean" }, "summaryLocked": { "type": "boolean" }, "isbnLocked": { "type": "boolean" }, "releaseDateLocked": { "type": "boolean" }, "sortOrder": { "type": "number", "format": "float" }, "sortOrderLocked": { "type": "boolean" }, "webLinks": { "type": "string", "nullable": true }, "isbn": { "type": "string", "nullable": true }, "releaseDate": { "type": "string", "format": "date-time" }, "titleName": { "type": "string", "nullable": true }, "aniListId": { "type": "integer", "format": "int32", "nullable": true }, "malId": { "type": "integer", "format": "int64", "nullable": true }, "hardcoverId": { "type": "integer", "format": "int32", "nullable": true }, "metronId": { "type": "integer", "format": "int64", "nullable": true }, "comicVineId": { "type": "string", "nullable": true }, "mangaBakaId": { "type": "integer", "format": "int64", "nullable": true } }, "additionalProperties": false }, "UpdateClientDeviceNameDto": { "type": "object", "properties": { "deviceId": { "type": "integer", "format": "int32" }, "name": { "type": "string", "nullable": true } }, "additionalProperties": false }, "UpdateDefaultThemeDto": { "type": "object", "properties": { "themeId": { "type": "integer", "format": "int32" } }, "additionalProperties": false }, "UpdateEmailDeviceDto": { "required": [ "emailAddress", "id", "name", "platform" ], "type": "object", "properties": { "id": { "type": "integer", "format": "int32" }, "name": { "minLength": 1, "type": "string" }, "platform": { "enum": [ 0, 1, 2, 3 ], "type": "integer", "format": "int32" }, "emailAddress": { "minLength": 1, "type": "string" } }, "additionalProperties": false }, "UpdateEmailDto": { "type": "object", "properties": { "email": { "type": "string", "nullable": true }, "password": { "type": "string", "nullable": true } }, "additionalProperties": false }, "UpdateLibraryDto": { "required": [ "allowMetadataMatching", "allowScrobbling", "enableMetadata", "excludePatterns", "fileGroupTypes", "folders", "folderWatching", "id", "includeInDashboard", "includeInSearch", "inheritWebLinksFromFirstChapter", "manageCollections", "manageReadingLists", "name", "removePrefixForSortName", "type" ], "type": "object", "properties": { "id": { "type": "integer", "format": "int32" }, "name": { "minLength": 1, "type": "string" }, "type": { "enum": [ 0, 1, 2, 3, 4, 5 ], "type": "integer", "format": "int32" }, "folders": { "type": "array", "items": { "type": "string" } }, "folderWatching": { "type": "boolean" }, "includeInDashboard": { "type": "boolean" }, "includeInSearch": { "type": "boolean" }, "manageCollections": { "type": "boolean" }, "manageReadingLists": { "type": "boolean" }, "allowScrobbling": { "type": "boolean" }, "allowMetadataMatching": { "type": "boolean" }, "enableMetadata": { "type": "boolean" }, "removePrefixForSortName": { "type": "boolean" }, "inheritWebLinksFromFirstChapter": { "type": "boolean" }, "defaultLanguage": { "type": "string", "nullable": true }, "fileGroupTypes": { "type": "array", "items": { "enum": [ 1, 2, 3, 4 ], "type": "integer", "format": "int32" } }, "excludePatterns": { "type": "array", "items": { "type": "string" } } }, "additionalProperties": false }, "UpdateLibraryForUserDto": { "required": [ "selectedLibraries", "username" ], "type": "object", "properties": { "username": { "type": "string", "nullable": true }, "selectedLibraries": { "type": "array", "items": { "$ref": "#/components/schemas/LibraryDto" }, "nullable": true } }, "additionalProperties": false }, "UpdateLicenseDto": { "required": [ "email", "license" ], "type": "object", "properties": { "license": { "type": "string", "nullable": true }, "email": { "type": "string", "nullable": true }, "discordId": { "type": "string", "nullable": true } }, "additionalProperties": false }, "UpdateNotificationDto": { "required": [ "currentVersion", "publishDate", "updateBody", "updateTitle", "updateUrl", "updateVersion" ], "type": "object", "properties": { "currentVersion": { "type": "string", "nullable": true }, "updateVersion": { "type": "string", "nullable": true }, "updateBody": { "type": "string", "nullable": true }, "updateTitle": { "type": "string", "nullable": true }, "updateUrl": { "type": "string", "nullable": true }, "isDocker": { "type": "boolean" }, "isPrerelease": { "type": "boolean" }, "publishDate": { "type": "string", "nullable": true }, "isOnNightlyInRelease": { "type": "boolean" }, "isReleaseNewer": { "type": "boolean" }, "isReleaseEqual": { "type": "boolean" }, "added": { "type": "array", "items": { "type": "string" }, "nullable": true }, "removed": { "type": "array", "items": { "type": "string" }, "nullable": true }, "changed": { "type": "array", "items": { "type": "string" }, "nullable": true }, "fixed": { "type": "array", "items": { "type": "string" }, "nullable": true }, "theme": { "type": "array", "items": { "type": "string" }, "nullable": true }, "developer": { "type": "array", "items": { "type": "string" }, "nullable": true }, "api": { "type": "array", "items": { "type": "string" }, "nullable": true }, "featureRequests": { "type": "array", "items": { "type": "string" }, "nullable": true }, "knownIssues": { "type": "array", "items": { "type": "string" }, "nullable": true }, "blogPart": { "type": "string", "nullable": true } }, "additionalProperties": false }, "UpdatePersonDto": { "required": [ "coverImageLocked", "id", "name" ], "type": "object", "properties": { "id": { "type": "integer", "format": "int32" }, "coverImageLocked": { "type": "boolean" }, "name": { "minLength": 1, "type": "string" }, "aliases": { "type": "array", "items": { "type": "string" }, "nullable": true }, "description": { "type": "string", "nullable": true }, "aniListId": { "type": "integer", "format": "int32", "nullable": true }, "malId": { "type": "integer", "format": "int64", "nullable": true }, "hardcoverId": { "type": "string", "nullable": true }, "asin": { "type": "string", "nullable": true } }, "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": { "chapterId": { "type": "integer", "format": "int32" }, "seriesId": { "type": "integer", "format": "int32" }, "readingListId": { "type": "integer", "format": "int32" } }, "additionalProperties": false }, "UpdateReadingListByMultipleDto": { "type": "object", "properties": { "seriesId": { "type": "integer", "format": "int32" }, "readingListId": { "type": "integer", "format": "int32" }, "volumeIds": { "type": "array", "items": { "type": "integer", "format": "int32" }, "nullable": true }, "chapterIds": { "type": "array", "items": { "type": "integer", "format": "int32" }, "nullable": true } }, "additionalProperties": false }, "UpdateReadingListByMultipleSeriesDto": { "type": "object", "properties": { "readingListId": { "type": "integer", "format": "int32" }, "seriesIds": { "type": "array", "items": { "type": "integer", "format": "int32" }, "nullable": true } }, "additionalProperties": false }, "UpdateReadingListBySeriesDto": { "type": "object", "properties": { "seriesId": { "type": "integer", "format": "int32" }, "readingListId": { "type": "integer", "format": "int32" } }, "additionalProperties": false }, "UpdateReadingListByVolumeDto": { "type": "object", "properties": { "volumeId": { "type": "integer", "format": "int32" }, "seriesId": { "type": "integer", "format": "int32" }, "readingListId": { "type": "integer", "format": "int32" } }, "additionalProperties": false }, "UpdateReadingListDto": { "required": [ "readingListId" ], "type": "object", "properties": { "readingListId": { "type": "integer", "format": "int32" }, "title": { "type": "string", "nullable": true }, "summary": { "type": "string", "nullable": true }, "promoted": { "type": "boolean" }, "coverImageLocked": { "type": "boolean" }, "startingMonth": { "type": "integer", "format": "int32" }, "startingYear": { "type": "integer", "format": "int32" }, "endingMonth": { "type": "integer", "format": "int32" }, "endingYear": { "type": "integer", "format": "int32" } }, "additionalProperties": false }, "UpdateReadingListPosition": { "required": [ "readingListId", "readingListItemId", "toPosition" ], "type": "object", "properties": { "readingListId": { "type": "integer", "format": "int32" }, "readingListItemId": { "type": "integer", "format": "int32" }, "fromPosition": { "type": "integer", "format": "int32" }, "toPosition": { "type": "integer", "format": "int32" } }, "additionalProperties": false }, "UpdateRelatedSeriesDto": { "type": "object", "properties": { "seriesId": { "type": "integer", "format": "int32" }, "adaptations": { "type": "array", "items": { "type": "integer", "format": "int32" }, "nullable": true }, "characters": { "type": "array", "items": { "type": "integer", "format": "int32" }, "nullable": true }, "contains": { "type": "array", "items": { "type": "integer", "format": "int32" }, "nullable": true }, "others": { "type": "array", "items": { "type": "integer", "format": "int32" }, "nullable": true }, "prequels": { "type": "array", "items": { "type": "integer", "format": "int32" }, "nullable": true }, "sequels": { "type": "array", "items": { "type": "integer", "format": "int32" }, "nullable": true }, "sideStories": { "type": "array", "items": { "type": "integer", "format": "int32" }, "nullable": true }, "spinOffs": { "type": "array", "items": { "type": "integer", "format": "int32" }, "nullable": true }, "alternativeSettings": { "type": "array", "items": { "type": "integer", "format": "int32" }, "nullable": true }, "alternativeVersions": { "type": "array", "items": { "type": "integer", "format": "int32" }, "nullable": true }, "doujinshis": { "type": "array", "items": { "type": "integer", "format": "int32" }, "nullable": true }, "editions": { "type": "array", "items": { "type": "integer", "format": "int32" }, "nullable": true }, "annuals": { "type": "array", "items": { "type": "integer", "format": "int32" }, "nullable": true } }, "additionalProperties": false }, "UpdateSeriesDto": { "type": "object", "properties": { "id": { "type": "integer", "format": "int32" }, "localizedName": { "type": "string", "nullable": true }, "sortName": { "type": "string", "nullable": true }, "coverImageLocked": { "type": "boolean" }, "sortNameLocked": { "type": "boolean" }, "localizedNameLocked": { "type": "boolean" }, "aniListId": { "type": "integer", "format": "int32", "nullable": true }, "malId": { "type": "integer", "format": "int64", "nullable": true }, "hardcoverId": { "type": "integer", "format": "int32", "nullable": true }, "metronId": { "type": "integer", "format": "int64", "nullable": true }, "comicVineId": { "type": "string", "nullable": true }, "mangaBakaId": { "type": "integer", "format": "int64", "nullable": true } }, "additionalProperties": false }, "UpdateSeriesForTagDto": { "type": "object", "properties": { "tag": { "$ref": "#/components/schemas/AppUserCollectionDto" }, "seriesIdsToRemove": { "type": "array", "items": { "type": "integer", "format": "int32" }, "nullable": true } }, "additionalProperties": false }, "UpdateSeriesMetadataDto": { "type": "object", "properties": { "seriesMetadata": { "$ref": "#/components/schemas/SeriesMetadataDto" } }, "additionalProperties": false }, "UpdateStreamPositionDto": { "type": "object", "properties": { "streamName": { "type": "string", "nullable": true }, "id": { "type": "integer", "format": "int32" }, "fromPosition": { "type": "integer", "format": "int32" }, "toPosition": { "type": "integer", "format": "int32" }, "positionIncludesInvisible": { "type": "boolean" } }, "additionalProperties": false }, "UpdateUserDto": { "type": "object", "properties": { "userId": { "type": "integer", "format": "int32" }, "username": { "type": "string", "nullable": true }, "roles": { "type": "array", "items": { "type": "string" }, "nullable": true }, "libraries": { "type": "array", "items": { "type": "integer", "format": "int32" }, "nullable": true }, "ageRestriction": { "$ref": "#/components/schemas/AgeRestrictionDto" }, "email": { "type": "string", "nullable": true }, "identityProvider": { "enum": [ 0, 1 ], "type": "integer", "format": "int32" } }, "additionalProperties": false }, "UpdateUserReviewDto": { "type": "object", "properties": { "seriesId": { "type": "integer", "format": "int32" }, "chapterId": { "type": "integer", "format": "int32", "nullable": true }, "body": { "type": "string", "nullable": true } }, "additionalProperties": false }, "UpdateVolumeDto": { "type": "object", "properties": { "id": { "type": "integer", "format": "int32" }, "aniListId": { "type": "integer", "format": "int32", "nullable": true }, "malId": { "type": "integer", "format": "int64", "nullable": true }, "hardcoverId": { "type": "integer", "format": "int32", "nullable": true }, "metronId": { "type": "integer", "format": "int64", "nullable": true }, "comicVineId": { "type": "string", "nullable": true }, "mangaBakaId": { "type": "integer", "format": "int64", "nullable": true } }, "additionalProperties": false }, "UpdateWantToReadDto": { "type": "object", "properties": { "seriesIds": { "type": "array", "items": { "type": "integer", "format": "int32" }, "nullable": true } }, "additionalProperties": false }, "UploadFileDto": { "required": [ "id", "url" ], "type": "object", "properties": { "id": { "type": "integer", "format": "int32" }, "url": { "type": "string", "nullable": true }, "lockCover": { "type": "boolean" } }, "additionalProperties": false }, "UploadUrlDto": { "required": [ "url" ], "type": "object", "properties": { "url": { "minLength": 1, "type": "string" } }, "additionalProperties": false }, "UserDto": { "type": "object", "properties": { "id": { "type": "integer", "format": "int32" }, "oidcId": { "type": "string", "nullable": true }, "username": { "type": "string", "nullable": true }, "email": { "type": "string", "nullable": true }, "roles": { "type": "array", "items": { "type": "string" }, "nullable": true }, "token": { "type": "string", "nullable": true }, "refreshToken": { "type": "string", "nullable": true }, "apiKey": { "type": "string", "nullable": true }, "preferences": { "$ref": "#/components/schemas/UserPreferencesDto" }, "ageRestriction": { "$ref": "#/components/schemas/AgeRestrictionDto" }, "kavitaVersion": { "type": "string", "nullable": true }, "identityProvider": { "enum": [ 0, 1 ], "type": "integer", "format": "int32" }, "created": { "type": "string", "format": "date-time" }, "createdUtc": { "type": "string", "format": "date-time" }, "authKeys": { "type": "array", "items": { "$ref": "#/components/schemas/AuthKeyDto" }, "nullable": true }, "coverImage": { "type": "string", "nullable": true }, "primaryColor": { "type": "string", "nullable": true }, "secondaryColor": { "type": "string", "nullable": true } }, "additionalProperties": false }, "UserParams": { "type": "object", "properties": { "pageNumber": { "type": "integer", "format": "int32" }, "pageSize": { "type": "integer", "format": "int32" } }, "additionalProperties": false }, "UserPreferencesDto": { "required": [ "blurUnreadSummaries", "bookReaderHighlightSlots", "collapseSeriesRelationships", "colorScapeEnabled", "customKeyBinds", "dataSaver", "locale", "noTransitions", "opdsPreferences", "promptForDownloadSize", "promptForRereadsAfter", "socialPreferences", "theme" ], "type": "object", "properties": { "theme": { "$ref": "#/components/schemas/SiteThemeDto" }, "globalPageLayoutMode": { "enum": [ 0, 1 ], "type": "integer", "format": "int32" }, "blurUnreadSummaries": { "type": "boolean" }, "promptForDownloadSize": { "type": "boolean" }, "noTransitions": { "type": "boolean" }, "collapseSeriesRelationships": { "type": "boolean" }, "locale": { "minLength": 1, "type": "string" }, "colorScapeEnabled": { "type": "boolean" }, "dataSaver": { "type": "boolean" }, "promptForRereadsAfter": { "type": "integer", "format": "int32" }, "customKeyBinds": { "type": "object", "properties": { "NavigateToSettings": { "type": "array", "items": { "$ref": "#/components/schemas/KeyBind" } }, "OpenSearch": { "type": "array", "items": { "$ref": "#/components/schemas/KeyBind" } }, "NavigateToScrobbling": { "type": "array", "items": { "$ref": "#/components/schemas/KeyBind" } }, "ToggleFullScreen": { "type": "array", "items": { "$ref": "#/components/schemas/KeyBind" } }, "BookmarkPage": { "type": "array", "items": { "$ref": "#/components/schemas/KeyBind" } }, "OpenHelp": { "type": "array", "items": { "$ref": "#/components/schemas/KeyBind" } }, "GoTo": { "type": "array", "items": { "$ref": "#/components/schemas/KeyBind" } }, "ToggleMenu": { "type": "array", "items": { "$ref": "#/components/schemas/KeyBind" } }, "PageLeft": { "type": "array", "items": { "$ref": "#/components/schemas/KeyBind" } }, "PageRight": { "type": "array", "items": { "$ref": "#/components/schemas/KeyBind" } }, "Escape": { "type": "array", "items": { "$ref": "#/components/schemas/KeyBind" } }, "PageUp": { "type": "array", "items": { "$ref": "#/components/schemas/KeyBind" } }, "PageDown": { "type": "array", "items": { "$ref": "#/components/schemas/KeyBind" } }, "OffsetDoublePage": { "type": "array", "items": { "$ref": "#/components/schemas/KeyBind" } } }, "additionalProperties": false }, "aniListScrobblingEnabled": { "type": "boolean" }, "wantToReadSync": { "type": "boolean" }, "bookReaderHighlightSlots": { "type": "array", "items": { "$ref": "#/components/schemas/HighlightSlot" } }, "socialPreferences": { "$ref": "#/components/schemas/AppUserSocialPreferences" }, "opdsPreferences": { "$ref": "#/components/schemas/AppUserOpdsPreferences" } }, "additionalProperties": false }, "UserReadStatistics": { "type": "object", "properties": { "totalPagesRead": { "type": "integer", "format": "int64" }, "totalWordsRead": { "type": "integer", "format": "int64" }, "timeSpentReading": { "type": "integer", "format": "int64" }, "lastActiveUtc": { "type": "string", "format": "date-time", "nullable": true }, "avgHoursPerWeekSpentReading": { "type": "number", "format": "double" } }, "additionalProperties": false }, "UserReadingProfileDto": { "required": [ "allowAutomaticWebtoonReaderDetection", "autoCloseMenu", "backgroundColor", "bookReaderFontFamily", "bookReaderFontSize", "bookReaderImmersiveMode", "bookReaderLayoutMode", "bookReaderLineSpacing", "bookReaderMargin", "bookReaderReadingDirection", "bookReaderTapToPaginate", "bookReaderThemeName", "bookReaderWritingStyle", "emulateBook", "layoutMode", "pageSplitOption", "pdfScrollMode", "pdfSpreadMode", "pdfTheme", "readerMode", "readingDirection", "scalingOption", "showScreenHints", "swipeToPaginate" ], "type": "object", "properties": { "id": { "type": "integer", "format": "int32" }, "userId": { "type": "integer", "format": "int32" }, "name": { "type": "string", "nullable": true }, "kind": { "enum": [ 0, 1, 2 ], "type": "integer", "format": "int32" }, "deviceIds": { "type": "array", "items": { "type": "integer", "format": "int32" }, "nullable": true }, "seriesIds": { "type": "array", "items": { "type": "integer", "format": "int32" }, "nullable": true }, "libraryIds": { "type": "array", "items": { "type": "integer", "format": "int32" }, "nullable": true }, "readingDirection": { "enum": [ 0, 1 ], "type": "integer", "format": "int32" }, "scalingOption": { "enum": [ 0, 1, 2, 3 ], "type": "integer", "format": "int32" }, "pageSplitOption": { "enum": [ 0, 1, 2, 3 ], "type": "integer", "format": "int32" }, "readerMode": { "enum": [ 0, 1, 2 ], "type": "integer", "format": "int32" }, "autoCloseMenu": { "type": "boolean" }, "showScreenHints": { "type": "boolean" }, "emulateBook": { "type": "boolean" }, "layoutMode": { "enum": [ 1, 2, 3 ], "type": "integer", "format": "int32" }, "backgroundColor": { "minLength": 1, "type": "string" }, "swipeToPaginate": { "type": "boolean" }, "allowAutomaticWebtoonReaderDetection": { "type": "boolean" }, "widthOverride": { "type": "integer", "format": "int32", "nullable": true }, "disableWidthOverride": { "enum": [ 0, 1, 2, 3 ], "type": "integer", "format": "int32" }, "bookReaderMargin": { "type": "integer", "format": "int32" }, "bookReaderLineSpacing": { "type": "integer", "format": "int32" }, "bookReaderFontSize": { "type": "integer", "format": "int32" }, "bookReaderFontFamily": { "minLength": 1, "type": "string" }, "bookReaderTapToPaginate": { "type": "boolean" }, "bookReaderReadingDirection": { "enum": [ 0, 1 ], "type": "integer", "format": "int32" }, "bookReaderWritingStyle": { "enum": [ 0, 1 ], "type": "integer", "format": "int32" }, "bookReaderThemeName": { "minLength": 1, "type": "string" }, "bookReaderLayoutMode": { "enum": [ 0, 1, 2 ], "type": "integer", "format": "int32" }, "bookReaderImmersiveMode": { "type": "boolean" }, "pdfTheme": { "enum": [ 0, 1 ], "type": "integer", "format": "int32" }, "pdfScrollMode": { "enum": [ 0, 1, 3 ], "type": "integer", "format": "int32" }, "pdfSpreadMode": { "enum": [ 0, 1, 2 ], "type": "integer", "format": "int32" } }, "additionalProperties": false }, "UserReviewDto": { "type": "object", "properties": { "tagline": { "type": "string", "nullable": true }, "body": { "type": "string", "nullable": true }, "bodyJustText": { "type": "string", "nullable": true }, "seriesId": { "type": "integer", "format": "int32" }, "chapterId": { "type": "integer", "format": "int32", "nullable": true }, "libraryId": { "type": "integer", "format": "int32" }, "username": { "type": "string", "nullable": true }, "userId": { "type": "integer", "format": "int32" }, "totalVotes": { "type": "integer", "format": "int32" }, "rating": { "type": "number", "format": "float" }, "rawBody": { "type": "string", "nullable": true }, "score": { "type": "integer", "format": "int32" }, "siteUrl": { "type": "string", "nullable": true }, "isExternal": { "type": "boolean" }, "provider": { "enum": [ 0, 1, 2, 3, 4, 5 ], "type": "integer", "format": "int32" }, "authority": { "enum": [ 0, 1 ], "type": "integer", "format": "int32" } }, "additionalProperties": false }, "UserReviewExtendedDto": { "type": "object", "properties": { "id": { "type": "integer", "format": "int32" }, "body": { "type": "string", "nullable": true }, "seriesId": { "type": "integer", "format": "int32" }, "chapterId": { "type": "integer", "format": "int32", "nullable": true }, "libraryId": { "type": "integer", "format": "int32" }, "username": { "type": "string", "nullable": true }, "rating": { "type": "number", "format": "float" }, "series": { "$ref": "#/components/schemas/SeriesDto" }, "chapter": { "$ref": "#/components/schemas/ChapterDto" }, "createdUtc": { "type": "string", "format": "date-time" }, "writers": { "type": "array", "items": { "$ref": "#/components/schemas/PersonDto" }, "nullable": true } }, "additionalProperties": false }, "UserTokenInfo": { "type": "object", "properties": { "userId": { "type": "integer", "format": "int32" }, "username": { "type": "string", "nullable": true }, "isAniListTokenSet": { "type": "boolean" }, "isAniListTokenValid": { "type": "boolean" }, "aniListValidUntilUtc": { "type": "string", "format": "date-time" }, "isMalTokenSet": { "type": "boolean" } }, "additionalProperties": false }, "VolumeDto": { "type": "object", "properties": { "id": { "type": "integer", "format": "int32" }, "minNumber": { "type": "number", "format": "float" }, "maxNumber": { "type": "number", "format": "float" }, "name": { "type": "string", "nullable": true }, "number": { "type": "integer", "format": "int32", "deprecated": true }, "pages": { "type": "integer", "format": "int32" }, "pagesRead": { "type": "integer", "format": "int32" }, "lastModifiedUtc": { "type": "string", "format": "date-time" }, "createdUtc": { "type": "string", "format": "date-time" }, "created": { "type": "string", "format": "date-time" }, "lastModified": { "type": "string", "format": "date-time" }, "seriesId": { "type": "integer", "format": "int32" }, "chapters": { "type": "array", "items": { "$ref": "#/components/schemas/ChapterDto" }, "nullable": true }, "minHoursToRead": { "type": "integer", "format": "int32" }, "maxHoursToRead": { "type": "integer", "format": "int32" }, "avgHoursToRead": { "type": "number", "format": "float" }, "wordCount": { "type": "integer", "format": "int64" }, "coverImage": { "type": "string", "nullable": true }, "primaryColor": { "type": "string", "nullable": true }, "secondaryColor": { "type": "string", "nullable": true }, "aniListId": { "type": "integer", "format": "int32" }, "malId": { "type": "integer", "format": "int64" }, "hardcoverId": { "type": "integer", "format": "int32" }, "metronId": { "type": "integer", "format": "int64" }, "comicVineId": { "type": "string", "nullable": true }, "mangaBakaId": { "type": "integer", "format": "int64" } }, "additionalProperties": false }, "YearMonthGroupingDto": { "type": "object", "properties": { "year": { "type": "integer", "format": "int32" }, "month": { "type": "integer", "format": "int32" } }, "additionalProperties": false }, "YearMonthGroupingDtoStatCount": { "type": "object", "properties": { "value": { "$ref": "#/components/schemas/YearMonthGroupingDto" }, "count": { "type": "integer", "format": "int64" } }, "additionalProperties": false } }, "securitySchemes": { "AuthKey": { "type": "apiKey", "description": "Auth Key authentication. Enter your Auth key from your user settings", "name": "x-api-key", "in": "header" } } }, "security": [ { } ], "tags": [ { "name": "Account", "description": "All Account matters" }, { "name": "Activity" }, { "name": "Admin" }, { "name": "Annotation" }, { "name": "Book" }, { "name": "Chapter" }, { "name": "Collection", "description": "APIs for Collections" }, { "name": "ColorScape" }, { "name": "Deprecated", "description": "All APIs here are subject to be removed and are no longer maintained. Will be removed v0.9.0" }, { "name": "WantToRead", "description": "Responsible for all things Want To Read" }, { "name": "Device", "description": "Responsible for interacting and creating Devices" }, { "name": "Download", "description": "All APIs related to downloading entities from the system. Requires Download Role or Admin Role." }, { "name": "Email" }, { "name": "Filter" }, { "name": "Font" }, { "name": "Health" }, { "name": "Image", "description": "Responsible for servicing up images stored in Kavita for entities" }, { "name": "Koreader", "description": "The endpoint to interface with Koreader's Progress Sync plugin." }, { "name": "Library" }, { "name": "License" }, { "name": "Locale" }, { "name": "Manage", "description": "All things centered around Managing the Kavita instance, that isn't aligned with an entity" }, { "name": "Metadata" }, { "name": "Oidc" }, { "name": "Opds" }, { "name": "Panels", "description": "For the Panels app explicitly" }, { "name": "Person" }, { "name": "Plugin" }, { "name": "Rating", "description": "Responsible for providing external ratings for Series" }, { "name": "Reader", "description": "For all things regarding reading, mainly focusing on non-Book related entities" }, { "name": "ReadingList" }, { "name": "ReadingProfile" }, { "name": "Review" }, { "name": "Scrobbling" }, { "name": "Search", "description": "Responsible for the Search interface from the UI" }, { "name": "Series" }, { "name": "Server" }, { "name": "Settings" }, { "name": "Stats" }, { "name": "Stream", "description": "Responsible for anything that deals with Streams (SmartFilters, ExternalSource, DashboardStream, SideNavStream)" }, { "name": "Tachiyomi", "description": "All APIs are for Tachiyomi extension and app. They have hacks for our implementation and should not be used for any\nother purposes." }, { "name": "Theme" }, { "name": "Upload" }, { "name": "Users" }, { "name": "Volume" } ] }