Kavita/openapi.json
2026-03-25 20:24:49 +00:00

32094 lines
789 KiB
JSON

{
"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.29",
"license": {
"name": "GPL-3.0",
"url": "https://github.com/Kareadita/Kavita/blob/develop/LICENSE"
},
"version": "0.8.9.29"
},
"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",
"parameters": [
{
"name": "authKeyName",
"in": "query",
"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/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/Cbl/file-import": {
"post": {
"tags": [
"Cbl"
],
"summary": "Saves an uploaded CBL file to disk without importing. Returns the saved file info.",
"requestBody": {
"content": {
"multipart/form-data": {
"schema": {
"type": "object",
"properties": {
"cblFile": {
"type": "string",
"format": "binary"
}
}
},
"encoding": {
"cblFile": {
"style": "form"
}
}
}
}
},
"responses": {
"200": {
"description": "OK",
"content": {
"text/plain": {
"schema": {
"$ref": "#/components/schemas/CblSavedFileDto"
}
},
"application/json": {
"schema": {
"$ref": "#/components/schemas/CblSavedFileDto"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/CblSavedFileDto"
}
}
}
}
}
}
},
"/api/Cbl/upload-cbl-file": {
"post": {
"tags": [
"Cbl"
],
"summary": "Downloads a CBL file from a URL and saves it to disk without importing.",
"requestBody": {
"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": {
"$ref": "#/components/schemas/CblSavedFileDto"
}
},
"application/json": {
"schema": {
"$ref": "#/components/schemas/CblSavedFileDto"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/CblSavedFileDto"
}
}
}
}
}
}
},
"/api/Cbl/repo-import": {
"post": {
"tags": [
"Cbl"
],
"summary": "Downloads selected CBL files from the GitHub repo and saves them to disk without importing.",
"requestBody": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/CblRepoImportRequestDto"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/CblRepoImportRequestDto"
}
},
"application/*+json": {
"schema": {
"$ref": "#/components/schemas/CblRepoImportRequestDto"
}
}
}
},
"responses": {
"200": {
"description": "OK",
"content": {
"text/plain": {
"schema": {
"type": "array",
"items": {
"$ref": "#/components/schemas/CblSavedFileDto"
}
}
},
"application/json": {
"schema": {
"type": "array",
"items": {
"$ref": "#/components/schemas/CblSavedFileDto"
}
}
},
"text/json": {
"schema": {
"type": "array",
"items": {
"$ref": "#/components/schemas/CblSavedFileDto"
}
}
}
}
}
}
}
},
"/api/Cbl/re-validate": {
"post": {
"tags": [
"Cbl"
],
"summary": "Validates an already-saved CBL file on disk. Called by the import modal after remap rule changes.",
"requestBody": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/CblReValidateRequestDto"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/CblReValidateRequestDto"
}
},
"application/*+json": {
"schema": {
"$ref": "#/components/schemas/CblReValidateRequestDto"
}
}
}
},
"responses": {
"200": {
"description": "OK",
"content": {
"text/plain": {
"schema": {
"$ref": "#/components/schemas/CblImportSummaryDto"
}
},
"application/json": {
"schema": {
"$ref": "#/components/schemas/CblImportSummaryDto"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/CblImportSummaryDto"
}
}
}
}
}
}
},
"/api/Cbl/finalize-import": {
"post": {
"tags": [
"Cbl"
],
"summary": "Finalizes the import of a saved CBL file with user decisions",
"requestBody": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/CblFinalizeRequestDto"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/CblFinalizeRequestDto"
}
},
"application/*+json": {
"schema": {
"$ref": "#/components/schemas/CblFinalizeRequestDto"
}
}
}
},
"responses": {
"200": {
"description": "OK",
"content": {
"text/plain": {
"schema": {
"$ref": "#/components/schemas/CblImportSummaryDto"
}
},
"application/json": {
"schema": {
"$ref": "#/components/schemas/CblImportSummaryDto"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/CblImportSummaryDto"
}
}
}
}
}
}
},
"/api/Cbl/remap-rules": {
"get": {
"tags": [
"Cbl"
],
"summary": "Returns all remap rules accessible to the current user (own rules + global/admin rules).",
"responses": {
"200": {
"description": "OK",
"content": {
"text/plain": {
"schema": {
"type": "array",
"items": {
"$ref": "#/components/schemas/RemapRuleDto"
}
}
},
"application/json": {
"schema": {
"type": "array",
"items": {
"$ref": "#/components/schemas/RemapRuleDto"
}
}
},
"text/json": {
"schema": {
"type": "array",
"items": {
"$ref": "#/components/schemas/RemapRuleDto"
}
}
}
}
}
}
},
"post": {
"tags": [
"Cbl"
],
"summary": "Creates a new series-level remap rule.",
"requestBody": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/CreateRemapRuleDto"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/CreateRemapRuleDto"
}
},
"application/*+json": {
"schema": {
"$ref": "#/components/schemas/CreateRemapRuleDto"
}
}
}
},
"responses": {
"200": {
"description": "OK",
"content": {
"text/plain": {
"schema": {
"$ref": "#/components/schemas/RemapRuleDto"
}
},
"application/json": {
"schema": {
"$ref": "#/components/schemas/RemapRuleDto"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/RemapRuleDto"
}
}
}
}
}
}
},
"/api/Cbl/remap-rules/all": {
"get": {
"tags": [
"Cbl"
],
"summary": "Admin-only: returns all rules across all users.",
"responses": {
"200": {
"description": "OK",
"content": {
"text/plain": {
"schema": {
"type": "array",
"items": {
"$ref": "#/components/schemas/RemapRuleDto"
}
}
},
"application/json": {
"schema": {
"type": "array",
"items": {
"$ref": "#/components/schemas/RemapRuleDto"
}
}
},
"text/json": {
"schema": {
"type": "array",
"items": {
"$ref": "#/components/schemas/RemapRuleDto"
}
}
}
}
}
}
}
},
"/api/Cbl/remap-rules/{id}/promote": {
"post": {
"tags": [
"Cbl"
],
"summary": "Promotes a remap rule to global scope. Admin-only.",
"parameters": [
{
"name": "id",
"in": "path",
"required": true,
"schema": {
"type": "integer",
"format": "int32"
}
}
],
"responses": {
"200": {
"description": "OK",
"content": {
"text/plain": {
"schema": {
"$ref": "#/components/schemas/RemapRuleDto"
}
},
"application/json": {
"schema": {
"$ref": "#/components/schemas/RemapRuleDto"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/RemapRuleDto"
}
}
}
}
}
}
},
"/api/Cbl/remap-rules/{id}/demote": {
"post": {
"tags": [
"Cbl"
],
"summary": "Demotes a global remap rule back to user-scoped. Admin-only.",
"parameters": [
{
"name": "id",
"in": "path",
"required": true,
"schema": {
"type": "integer",
"format": "int32"
}
}
],
"responses": {
"200": {
"description": "OK",
"content": {
"text/plain": {
"schema": {
"$ref": "#/components/schemas/RemapRuleDto"
}
},
"application/json": {
"schema": {
"$ref": "#/components/schemas/RemapRuleDto"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/RemapRuleDto"
}
}
}
}
}
}
},
"/api/Cbl/remap-rules/{id}": {
"put": {
"tags": [
"Cbl"
],
"summary": "Updates a remap rule with issue-level detail (volume/chapter).",
"parameters": [
{
"name": "id",
"in": "path",
"required": true,
"schema": {
"type": "integer",
"format": "int32"
}
}
],
"requestBody": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/UpdateRemapRuleDto"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/UpdateRemapRuleDto"
}
},
"application/*+json": {
"schema": {
"$ref": "#/components/schemas/UpdateRemapRuleDto"
}
}
}
},
"responses": {
"200": {
"description": "OK",
"content": {
"text/plain": {
"schema": {
"$ref": "#/components/schemas/RemapRuleDto"
}
},
"application/json": {
"schema": {
"$ref": "#/components/schemas/RemapRuleDto"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/RemapRuleDto"
}
}
}
}
}
},
"delete": {
"tags": [
"Cbl"
],
"summary": "Deletes a remap rule. Users can only delete their own rules.",
"parameters": [
{
"name": "id",
"in": "path",
"required": true,
"schema": {
"type": "integer",
"format": "int32"
}
}
],
"responses": {
"200": {
"description": "OK"
}
}
}
},
"/api/Cbl/browse": {
"get": {
"tags": [
"Cbl"
],
"summary": "Provides the browse CBL Repo interface. Requires Download role.",
"parameters": [
{
"name": "path",
"in": "query",
"description": "",
"schema": {
"type": "string",
"default": ""
}
}
],
"responses": {
"200": {
"description": "OK",
"content": {
"text/plain": {
"schema": {
"$ref": "#/components/schemas/CblRepoBrowseResultDto"
}
},
"application/json": {
"schema": {
"$ref": "#/components/schemas/CblRepoBrowseResultDto"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/CblRepoBrowseResultDto"
}
}
}
}
}
}
},
"/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.\n<remarks>UI does not contain controls to update title</remarks>",
"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/UploadCoverFileDto"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/UploadCoverFileDto"
}
},
"application/*+json": {
"schema": {
"$ref": "#/components/schemas/UploadCoverFileDto"
}
}
}
},
"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",
"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/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/Search/chapters-by-series": {
"get": {
"tags": [
"Search"
],
"summary": "Returns all chapters for a given series with localized titles. Used for CBL chapter-level matching.",
"parameters": [
{
"name": "seriesId",
"in": "query",
"schema": {
"type": "integer",
"format": "int32"
}
}
],
"responses": {
"200": {
"description": "OK",
"content": {
"text/plain": {
"schema": {
"type": "array",
"items": {
"$ref": "#/components/schemas/ChapterDto"
}
}
},
"application/json": {
"schema": {
"type": "array",
"items": {
"$ref": "#/components/schemas/ChapterDto"
}
}
},
"text/json": {
"schema": {
"type": "array",
"items": {
"$ref": "#/components/schemas/ChapterDto"
}
}
}
}
}
}
}
},
"/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/UploadCoverFileDto"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/UploadCoverFileDto"
}
},
"application/*+json": {
"schema": {
"$ref": "#/components/schemas/UploadCoverFileDto"
}
}
}
},
"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/UploadCoverFileDto"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/UploadCoverFileDto"
}
},
"application/*+json": {
"schema": {
"$ref": "#/components/schemas/UploadCoverFileDto"
}
}
}
},
"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/UploadCoverFileDto"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/UploadCoverFileDto"
}
},
"application/*+json": {
"schema": {
"$ref": "#/components/schemas/UploadCoverFileDto"
}
}
}
},
"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/UploadCoverFileDto"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/UploadCoverFileDto"
}
},
"application/*+json": {
"schema": {
"$ref": "#/components/schemas/UploadCoverFileDto"
}
}
}
},
"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/UploadCoverFileDto"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/UploadCoverFileDto"
}
},
"application/*+json": {
"schema": {
"$ref": "#/components/schemas/UploadCoverFileDto"
}
}
}
},
"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/UploadCoverFileDto"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/UploadCoverFileDto"
}
},
"application/*+json": {
"schema": {
"$ref": "#/components/schemas/UploadCoverFileDto"
}
}
}
},
"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/UploadCoverFileDto"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/UploadCoverFileDto"
}
},
"application/*+json": {
"schema": {
"$ref": "#/components/schemas/UploadCoverFileDto"
}
}
}
},
"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/UploadCoverFileDto"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/UploadCoverFileDto"
}
},
"application/*+json": {
"schema": {
"$ref": "#/components/schemas/UploadCoverFileDto"
}
}
}
},
"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
},
"CblBookResult": {
"type": "object",
"properties": {
"order": {
"type": "integer",
"format": "int32"
},
"series": {
"type": "string",
"nullable": true
},
"volume": {
"type": "string",
"nullable": true
},
"number": {
"type": "string",
"nullable": true
},
"libraryId": {
"type": "integer",
"format": "int32"
},
"seriesId": {
"type": "integer",
"format": "int32"
},
"readingListName": {
"type": "string",
"nullable": true
},
"reason": {
"enum": [
0,
1,
2,
3,
4,
5,
6,
7,
8,
9
],
"type": "integer",
"format": "int32"
},
"matchTier": {
"enum": [
0,
1,
2,
3,
4,
5,
6,
7,
-1
],
"type": "integer",
"format": "int32",
"nullable": true
},
"chapterId": {
"type": "integer",
"format": "int32"
},
"chapterTitle": {
"type": "string",
"nullable": true
},
"matchedSeriesName": {
"type": "string",
"nullable": true
},
"libraryType": {
"enum": [
0,
1,
2,
3,
4,
5
],
"type": "integer",
"format": "int32"
},
"chapterNumber": {
"type": "string",
"nullable": true
},
"candidates": {
"type": "array",
"items": {
"$ref": "#/components/schemas/CblSeriesCandidate"
},
"nullable": true
}
},
"additionalProperties": false
},
"CblFinalizeRequestDto": {
"type": "object",
"properties": {
"fileName": {
"type": "string",
"nullable": true
},
"decisions": {
"$ref": "#/components/schemas/CblImportDecisions"
},
"provider": {
"enum": [
0,
1,
2
],
"type": "integer",
"format": "int32"
},
"repoPath": {
"type": "string",
"nullable": true
},
"downloadUrl": {
"type": "string",
"nullable": true
},
"sha": {
"type": "string",
"nullable": true
}
},
"additionalProperties": false
},
"CblImportDecisions": {
"type": "object",
"properties": {
"itemResolutions": {
"type": "object",
"additionalProperties": {
"$ref": "#/components/schemas/CblItemDecision"
},
"nullable": true
},
"saveAsRemapRules": {
"type": "boolean"
}
},
"additionalProperties": false
},
"CblImportSummaryDto": {
"type": "object",
"properties": {
"cblName": {
"type": "string",
"nullable": true
},
"fileName": {
"type": "string",
"nullable": true
},
"results": {
"type": "array",
"items": {
"$ref": "#/components/schemas/CblBookResult"
},
"nullable": true
},
"success": {
"enum": [
0,
1,
2
],
"type": "integer",
"format": "int32"
},
"successfulInserts": {
"type": "array",
"items": {
"$ref": "#/components/schemas/CblBookResult"
},
"nullable": true
},
"isUpdate": {
"type": "boolean"
}
},
"additionalProperties": false
},
"CblItemDecision": {
"type": "object",
"properties": {
"seriesId": {
"type": "integer",
"format": "int32"
},
"volumeId": {
"type": "integer",
"format": "int32"
},
"chapterId": {
"type": "integer",
"format": "int32"
}
},
"additionalProperties": false
},
"CblReValidateRequestDto": {
"type": "object",
"properties": {
"fileName": {
"type": "string",
"nullable": true
}
},
"additionalProperties": false
},
"CblRepoBrowseResultDto": {
"type": "object",
"properties": {
"items": {
"type": "array",
"items": {
"$ref": "#/components/schemas/CblRepoItemDto"
},
"nullable": true
},
"rateLimitDto": {
"$ref": "#/components/schemas/GithubRateLimitDto"
},
"fromCache": {
"type": "boolean"
}
},
"additionalProperties": false
},
"CblRepoImportRequestDto": {
"type": "object",
"properties": {
"items": {
"type": "array",
"items": {
"$ref": "#/components/schemas/CblRepoItemDto"
},
"nullable": true
}
},
"additionalProperties": false
},
"CblRepoItemDto": {
"type": "object",
"properties": {
"name": {
"type": "string",
"nullable": true
},
"path": {
"type": "string",
"nullable": true
},
"isDirectory": {
"type": "boolean"
},
"sha": {
"type": "string",
"nullable": true
},
"size": {
"type": "integer",
"format": "int64"
},
"downloadUrl": {
"type": "string",
"nullable": true
},
"existingReadingListId": {
"type": "integer",
"format": "int32",
"nullable": true
},
"alreadySynced": {
"type": "boolean",
"readOnly": true
}
},
"additionalProperties": false
},
"CblSavedFileDto": {
"type": "object",
"properties": {
"name": {
"type": "string",
"nullable": true
},
"fileName": {
"type": "string",
"nullable": true
},
"provider": {
"enum": [
0,
1,
2
],
"type": "integer",
"format": "int32"
},
"repoPath": {
"type": "string",
"nullable": true
},
"downloadUrl": {
"type": "string",
"nullable": true
},
"sha": {
"type": "string",
"nullable": true
}
},
"additionalProperties": false
},
"CblSeriesCandidate": {
"type": "object",
"properties": {
"seriesId": {
"type": "integer",
"format": "int32"
},
"libraryId": {
"type": "integer",
"format": "int32"
},
"seriesName": {
"type": "string",
"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
},
"CreateRemapRuleDto": {
"type": "object",
"properties": {
"cblSeriesName": {
"type": "string",
"nullable": true
},
"seriesId": {
"type": "integer",
"format": "int32"
},
"cblVolume": {
"type": "string",
"nullable": true
},
"cblNumber": {
"type": "string",
"nullable": true
},
"volumeId": {
"type": "integer",
"format": "int32",
"nullable": true
},
"chapterId": {
"type": "integer",
"format": "int32",
"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
},
"GithubRateLimitDto": {
"type": "object",
"properties": {
"remaining": {
"type": "integer",
"format": "int32",
"nullable": true
},
"limit": {
"type": "integer",
"format": "int32",
"nullable": true
},
"resetsAtUtc": {
"type": "string",
"format": "date-time",
"nullable": true
},
"isLow": {
"type": "boolean",
"readOnly": true
},
"isExhausted": {
"type": "boolean",
"readOnly": true
}
},
"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
},
"sourcePath": {
"type": "string",
"nullable": true
},
"downloadUrl": {
"type": "string",
"nullable": true
},
"shaHash": {
"type": "string",
"nullable": true
},
"provider": {
"enum": [
0,
1,
2
],
"type": "integer",
"format": "int32"
},
"lastSyncCheckUtc": {
"type": "string",
"format": "date-time",
"nullable": true
},
"lastSyncedUtc": {
"type": "string",
"format": "date-time",
"nullable": true
},
"canSync": {
"type": "boolean",
"readOnly": 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
},
"RemapRuleDto": {
"type": "object",
"properties": {
"id": {
"type": "integer",
"format": "int32"
},
"normalizedCblSeriesName": {
"type": "string",
"nullable": true
},
"cblSeriesName": {
"type": "string",
"nullable": true
},
"cblVolume": {
"type": "string",
"nullable": true
},
"cblNumber": {
"type": "string",
"nullable": true
},
"seriesId": {
"type": "integer",
"format": "int32"
},
"volumeId": {
"type": "integer",
"format": "int32",
"nullable": true
},
"chapterId": {
"type": "integer",
"format": "int32",
"nullable": true
},
"chapterRange": {
"type": "string",
"nullable": true
},
"chapterTitleName": {
"type": "string",
"nullable": true
},
"chapterIsSpecial": {
"type": "boolean"
},
"libraryType": {
"enum": [
0,
1,
2,
3,
4,
5
],
"type": "integer",
"format": "int32"
},
"seriesNameAtMapping": {
"type": "string",
"nullable": true
},
"appUserId": {
"type": "integer",
"format": "int32"
},
"isGlobal": {
"type": "boolean"
},
"createdByUserName": {
"type": "string",
"nullable": true
},
"createdUtc": {
"type": "string",
"format": "date-time"
}
},
"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"
},
"releaseYear": {
"type": "integer",
"format": "int32"
},
"volumeCount": {
"type": "integer",
"format": "int32"
},
"chapterCount": {
"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
},
"UpdateRemapRuleDto": {
"type": "object",
"properties": {
"volumeId": {
"type": "integer",
"format": "int32",
"nullable": true
},
"chapterId": {
"type": "integer",
"format": "int32",
"nullable": true
},
"cblVolume": {
"type": "string",
"nullable": true
},
"cblNumber": {
"type": "string",
"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
},
"UploadCoverFileDto": {
"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": "Cbl",
"description": "Responsible for the CBL import flow"
},
{
"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"
}
]
}