mirror of
https://github.com/Kareadita/Kavita.git
synced 2026-01-17 09:30:44 -05:00
30513 lines
781 KiB
JSON
30513 lines
781 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.8.24",
|
|
"license": {
|
|
"name": "GPL-3.0",
|
|
"url": "https://github.com/Kareadita/Kavita/blob/develop/LICENSE"
|
|
},
|
|
"version": "0.8.8.24"
|
|
},
|
|
"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 API.Extensions.IdentityServiceExtensions.OpenIdConnect\nscheme has been registered",
|
|
"description": "Makes not 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": {
|
|
"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 API.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 API.Entities.AppUser.IdentityProvider is not API.Entities.Enums.IdentityProvider.Kavita cannot be edited if API.DTOs.Settings.OidcConfigDto.SyncUserSettings is true",
|
|
"requestBody": {
|
|
"description": "",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/UpdateUserDto"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/UpdateUserDto"
|
|
}
|
|
},
|
|
"application/*+json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/UpdateUserDto"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"responses": {
|
|
"200": {
|
|
"description": "OK"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/api/Account/invite-url": {
|
|
"get": {
|
|
"tags": [
|
|
"Account"
|
|
],
|
|
"summary": "Requests the Invite Url for the AppUserId. Will return error if user is already validated.",
|
|
"parameters": [
|
|
{
|
|
"name": "userId",
|
|
"in": "query",
|
|
"description": "",
|
|
"schema": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
}
|
|
},
|
|
{
|
|
"name": "withBaseUrl",
|
|
"in": "query",
|
|
"description": "Include the \"https://ip:port/\" in the generated link",
|
|
"schema": {
|
|
"type": "boolean"
|
|
}
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "OK",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/api/Account/invite": {
|
|
"post": {
|
|
"tags": [
|
|
"Account"
|
|
],
|
|
"summary": "Invites a user to the server. Will generate a setup link for continuing setup. If email is not setup, a link will be presented to user to continue setup.",
|
|
"requestBody": {
|
|
"description": "",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/InviteUserDto"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/InviteUserDto"
|
|
}
|
|
},
|
|
"application/*+json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/InviteUserDto"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"responses": {
|
|
"200": {
|
|
"description": "OK",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/api/Account/confirm-email": {
|
|
"post": {
|
|
"tags": [
|
|
"Account"
|
|
],
|
|
"summary": "Last step in authentication flow, confirms the email token for email",
|
|
"requestBody": {
|
|
"description": "",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ConfirmEmailDto"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ConfirmEmailDto"
|
|
}
|
|
},
|
|
"application/*+json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ConfirmEmailDto"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"responses": {
|
|
"200": {
|
|
"description": "OK",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/UserDto"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/UserDto"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/UserDto"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/api/Account/confirm-email-update": {
|
|
"post": {
|
|
"tags": [
|
|
"Account"
|
|
],
|
|
"summary": "Final step in email update change. Given a confirmation token and the email, this will finish the email change.",
|
|
"description": "This will force connected clients to re-authenticate",
|
|
"requestBody": {
|
|
"description": "",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ConfirmEmailUpdateDto"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ConfirmEmailUpdateDto"
|
|
}
|
|
},
|
|
"application/*+json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ConfirmEmailUpdateDto"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"responses": {
|
|
"200": {
|
|
"description": "OK"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/api/Account/confirm-password-reset": {
|
|
"post": {
|
|
"tags": [
|
|
"Account"
|
|
],
|
|
"requestBody": {
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ConfirmPasswordResetDto"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ConfirmPasswordResetDto"
|
|
}
|
|
},
|
|
"application/*+json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ConfirmPasswordResetDto"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"responses": {
|
|
"200": {
|
|
"description": "OK",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/api/Account/forgot-password": {
|
|
"post": {
|
|
"tags": [
|
|
"Account"
|
|
],
|
|
"summary": "Will send user a link to update their password to their email or prompt them if not accessible",
|
|
"parameters": [
|
|
{
|
|
"name": "email",
|
|
"in": "query",
|
|
"description": "",
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "OK",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/api/Account/email-confirmed": {
|
|
"get": {
|
|
"tags": [
|
|
"Account"
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "OK",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"type": "boolean"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "boolean"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"type": "boolean"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/api/Account/confirm-migration-email": {
|
|
"post": {
|
|
"tags": [
|
|
"Account"
|
|
],
|
|
"requestBody": {
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ConfirmMigrationEmailDto"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ConfirmMigrationEmailDto"
|
|
}
|
|
},
|
|
"application/*+json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ConfirmMigrationEmailDto"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"responses": {
|
|
"200": {
|
|
"description": "OK",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/UserDto"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/UserDto"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/UserDto"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/api/Account/resend-confirmation-email": {
|
|
"post": {
|
|
"tags": [
|
|
"Account"
|
|
],
|
|
"summary": "Resend an invite to a user already invited",
|
|
"parameters": [
|
|
{
|
|
"name": "userId",
|
|
"in": "query",
|
|
"description": "",
|
|
"schema": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
}
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "OK",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/InviteUserResponse"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/InviteUserResponse"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/InviteUserResponse"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/api/Account/opds-url": {
|
|
"get": {
|
|
"tags": [
|
|
"Account"
|
|
],
|
|
"summary": "Returns the OPDS url for this user",
|
|
"responses": {
|
|
"200": {
|
|
"description": "OK",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/api/Account/is-email-valid": {
|
|
"get": {
|
|
"tags": [
|
|
"Account"
|
|
],
|
|
"summary": "Is the user's current email valid or not",
|
|
"responses": {
|
|
"200": {
|
|
"description": "OK",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"type": "boolean"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "boolean"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"type": "boolean"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/api/Account/auth-keys": {
|
|
"get": {
|
|
"tags": [
|
|
"Account"
|
|
],
|
|
"summary": "Returns all Auth Keys with the account",
|
|
"responses": {
|
|
"200": {
|
|
"description": "OK",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/components/schemas/AuthKeyDto"
|
|
}
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/components/schemas/AuthKeyDto"
|
|
}
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/components/schemas/AuthKeyDto"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/api/Account/rotate-auth-key": {
|
|
"post": {
|
|
"tags": [
|
|
"Account"
|
|
],
|
|
"summary": "Rotate the Auth Key",
|
|
"parameters": [
|
|
{
|
|
"name": "authKeyId",
|
|
"in": "query",
|
|
"description": "",
|
|
"schema": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
}
|
|
}
|
|
],
|
|
"requestBody": {
|
|
"description": "",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/RotateAuthKeyRequestDto"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/RotateAuthKeyRequestDto"
|
|
}
|
|
},
|
|
"application/*+json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/RotateAuthKeyRequestDto"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"responses": {
|
|
"200": {
|
|
"description": "OK",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/AuthKeyDto"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/AuthKeyDto"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/AuthKeyDto"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/api/Account/create-auth-key": {
|
|
"post": {
|
|
"tags": [
|
|
"Account"
|
|
],
|
|
"summary": "Creates a new Auth Key for a user.",
|
|
"requestBody": {
|
|
"description": "",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/RotateAuthKeyRequestDto"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/RotateAuthKeyRequestDto"
|
|
}
|
|
},
|
|
"application/*+json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/RotateAuthKeyRequestDto"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"responses": {
|
|
"200": {
|
|
"description": "OK",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/AuthKeyDto"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/AuthKeyDto"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/AuthKeyDto"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/api/Account/auth-key": {
|
|
"delete": {
|
|
"tags": [
|
|
"Account"
|
|
],
|
|
"summary": "Delete the Auth Key",
|
|
"parameters": [
|
|
{
|
|
"name": "authKeyId",
|
|
"in": "query",
|
|
"description": "",
|
|
"schema": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
}
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "OK"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/api/Activity/current": {
|
|
"get": {
|
|
"tags": [
|
|
"Activity"
|
|
],
|
|
"summary": "Returns active reading sessions on the Server",
|
|
"responses": {
|
|
"200": {
|
|
"description": "OK",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/components/schemas/ReadingSessionDto"
|
|
}
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/components/schemas/ReadingSessionDto"
|
|
}
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/components/schemas/ReadingSessionDto"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/api/Admin/exists": {
|
|
"get": {
|
|
"tags": [
|
|
"Admin"
|
|
],
|
|
"summary": "Checks if an admin exists on the system. This is essentially a check to validate if the system has been set up.",
|
|
"responses": {
|
|
"200": {
|
|
"description": "OK",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"type": "boolean"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "boolean"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"type": "boolean"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/api/Annotation/all-filtered": {
|
|
"post": {
|
|
"tags": [
|
|
"Annotation"
|
|
],
|
|
"summary": "Returns a list of annotations for browsing",
|
|
"parameters": [
|
|
{
|
|
"name": "PageNumber",
|
|
"in": "query",
|
|
"schema": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
}
|
|
},
|
|
{
|
|
"name": "PageSize",
|
|
"in": "query",
|
|
"description": "If set to 0, will set as MaxInt",
|
|
"schema": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
}
|
|
}
|
|
],
|
|
"requestBody": {
|
|
"description": "",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/BrowseAnnotationFilterDto"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/BrowseAnnotationFilterDto"
|
|
}
|
|
},
|
|
"application/*+json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/BrowseAnnotationFilterDto"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"responses": {
|
|
"200": {
|
|
"description": "OK",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/components/schemas/AnnotationDto"
|
|
}
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/components/schemas/AnnotationDto"
|
|
}
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/components/schemas/AnnotationDto"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/api/Annotation/all": {
|
|
"get": {
|
|
"tags": [
|
|
"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",
|
|
"description": "If set to 0, will set as MaxInt",
|
|
"schema": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
}
|
|
}
|
|
],
|
|
"requestBody": {
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/BrowseAnnotationFilterDto"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/BrowseAnnotationFilterDto"
|
|
}
|
|
},
|
|
"application/*+json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/BrowseAnnotationFilterDto"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"responses": {
|
|
"200": {
|
|
"description": "OK"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/api/Annotation/export": {
|
|
"post": {
|
|
"tags": [
|
|
"Annotation"
|
|
],
|
|
"summary": "Exports Annotations for the User",
|
|
"requestBody": {
|
|
"description": "Export annotations with the given ids",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
}
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
}
|
|
}
|
|
},
|
|
"application/*+json": {
|
|
"schema": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"responses": {
|
|
"200": {
|
|
"description": "OK"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/api/Book/{chapterId}/book-info": {
|
|
"get": {
|
|
"tags": [
|
|
"Book"
|
|
],
|
|
"summary": "Retrieves information for the PDF and Epub reader. This will cache the file.",
|
|
"description": "This only applies to Epub or PDF files",
|
|
"parameters": [
|
|
{
|
|
"name": "chapterId",
|
|
"in": "path",
|
|
"description": "",
|
|
"required": true,
|
|
"schema": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
}
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "OK",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/BookInfoDto"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/BookInfoDto"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/BookInfoDto"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/api/Book/{chapterId}/book-resources": {
|
|
"get": {
|
|
"tags": [
|
|
"Book"
|
|
],
|
|
"summary": "This is an entry point to fetch resources from within an epub chapter/book.",
|
|
"parameters": [
|
|
{
|
|
"name": "chapterId",
|
|
"in": "path",
|
|
"description": "",
|
|
"required": true,
|
|
"schema": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
}
|
|
},
|
|
{
|
|
"name": "file",
|
|
"in": "query",
|
|
"description": "",
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "OK"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/api/Book/{chapterId}/chapters": {
|
|
"get": {
|
|
"tags": [
|
|
"Book"
|
|
],
|
|
"summary": "This will return a list of mappings from ID -> page num. ID will be the xhtml key and page num will be the reading order\nthis is used to rewrite anchors in the book text so that we always load properly in our reader.",
|
|
"description": "This is essentially building the table of contents",
|
|
"parameters": [
|
|
{
|
|
"name": "chapterId",
|
|
"in": "path",
|
|
"description": "",
|
|
"required": true,
|
|
"schema": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
}
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "OK",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/components/schemas/BookChapterItem"
|
|
}
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/components/schemas/BookChapterItem"
|
|
}
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/components/schemas/BookChapterItem"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/api/Book/{chapterId}/book-page": {
|
|
"get": {
|
|
"tags": [
|
|
"Book"
|
|
],
|
|
"summary": "This returns a single page within the epub book. All html will be rewritten to be scoped within our reader,\nall css is scoped, etc.",
|
|
"parameters": [
|
|
{
|
|
"name": "chapterId",
|
|
"in": "path",
|
|
"description": "",
|
|
"required": true,
|
|
"schema": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
}
|
|
},
|
|
{
|
|
"name": "page",
|
|
"in": "query",
|
|
"description": "",
|
|
"schema": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
}
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "OK",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/api/Chapter": {
|
|
"get": {
|
|
"tags": [
|
|
"Chapter"
|
|
],
|
|
"summary": "Gets a single chapter",
|
|
"parameters": [
|
|
{
|
|
"name": "chapterId",
|
|
"in": "query",
|
|
"description": "",
|
|
"schema": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
}
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "OK",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ChapterDto"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ChapterDto"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ChapterDto"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"delete": {
|
|
"tags": [
|
|
"Chapter"
|
|
],
|
|
"summary": "Removes a Chapter",
|
|
"parameters": [
|
|
{
|
|
"name": "chapterId",
|
|
"in": "query",
|
|
"description": "",
|
|
"schema": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
}
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "OK",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"type": "boolean"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "boolean"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"type": "boolean"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/api/Chapter/delete-multiple": {
|
|
"post": {
|
|
"tags": [
|
|
"Chapter"
|
|
],
|
|
"summary": "Deletes multiple chapters and any volumes with no leftover chapters",
|
|
"parameters": [
|
|
{
|
|
"name": "seriesId",
|
|
"in": "query",
|
|
"description": "The ID of the series",
|
|
"schema": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
}
|
|
}
|
|
],
|
|
"requestBody": {
|
|
"description": "The IDs of the chapters to be deleted",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/DeleteChaptersDto"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/DeleteChaptersDto"
|
|
}
|
|
},
|
|
"application/*+json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/DeleteChaptersDto"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"responses": {
|
|
"200": {
|
|
"description": "OK",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"type": "boolean"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "boolean"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"type": "boolean"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/api/Chapter/update": {
|
|
"post": {
|
|
"tags": [
|
|
"Chapter"
|
|
],
|
|
"summary": "Update chapter metadata",
|
|
"requestBody": {
|
|
"description": "",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/UpdateChapterDto"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/UpdateChapterDto"
|
|
}
|
|
},
|
|
"application/*+json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/UpdateChapterDto"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"responses": {
|
|
"200": {
|
|
"description": "OK"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/api/Chapter/chapter-detail-plus": {
|
|
"get": {
|
|
"tags": [
|
|
"Chapter"
|
|
],
|
|
"summary": "Returns Ratings and Reviews for an individual Chapter",
|
|
"parameters": [
|
|
{
|
|
"name": "chapterId",
|
|
"in": "query",
|
|
"description": "",
|
|
"schema": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
}
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "OK",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ChapterDetailPlusDto"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ChapterDetailPlusDto"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ChapterDetailPlusDto"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/api/Collection": {
|
|
"get": {
|
|
"tags": [
|
|
"Collection"
|
|
],
|
|
"summary": "Returns all Collection tags for a given User",
|
|
"parameters": [
|
|
{
|
|
"name": "ownedOnly",
|
|
"in": "query",
|
|
"schema": {
|
|
"type": "boolean",
|
|
"default": false
|
|
}
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "OK",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/components/schemas/AppUserCollectionDto"
|
|
}
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/components/schemas/AppUserCollectionDto"
|
|
}
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/components/schemas/AppUserCollectionDto"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"delete": {
|
|
"tags": [
|
|
"Collection"
|
|
],
|
|
"summary": "Removes the collection tag from the user",
|
|
"parameters": [
|
|
{
|
|
"name": "tagId",
|
|
"in": "query",
|
|
"description": "",
|
|
"schema": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
}
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "OK"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/api/Collection/single": {
|
|
"get": {
|
|
"tags": [
|
|
"Collection"
|
|
],
|
|
"summary": "Returns a single Collection tag by Id for a given user",
|
|
"parameters": [
|
|
{
|
|
"name": "collectionId",
|
|
"in": "query",
|
|
"description": "",
|
|
"schema": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
}
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "OK",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"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/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"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/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",
|
|
"description": "If set to 0, will set as MaxInt",
|
|
"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",
|
|
"description": "If set to 0, will set as MaxInt",
|
|
"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",
|
|
"description": "If set to 0, will set as MaxInt",
|
|
"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",
|
|
"description": "If set to 0, will set as MaxInt",
|
|
"schema": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
}
|
|
},
|
|
{
|
|
"name": "libraryId",
|
|
"in": "query",
|
|
"description": "",
|
|
"schema": {
|
|
"type": "integer",
|
|
"format": "int32",
|
|
"default": 0
|
|
}
|
|
}
|
|
],
|
|
"requestBody": {
|
|
"description": "",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/FilterDto"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/FilterDto"
|
|
}
|
|
},
|
|
"application/*+json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/FilterDto"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"responses": {
|
|
"200": {
|
|
"description": "OK",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/components/schemas/SeriesDto"
|
|
}
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/components/schemas/SeriesDto"
|
|
}
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/components/schemas/SeriesDto"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"deprecated": true
|
|
}
|
|
},
|
|
"/api/upload/reset-chapter-lock": {
|
|
"post": {
|
|
"tags": [
|
|
"Deprecated"
|
|
],
|
|
"summary": "Replaces chapter cover image and locks it with a base64 encoded image. This will update the parent volume's cover image.",
|
|
"requestBody": {
|
|
"description": "Does not use Url property",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/UploadFileDto"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/UploadFileDto"
|
|
}
|
|
},
|
|
"application/*+json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/UploadFileDto"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"responses": {
|
|
"200": {
|
|
"description": "OK"
|
|
}
|
|
},
|
|
"deprecated": true
|
|
}
|
|
},
|
|
"/api/stats/user/reading-history": {
|
|
"get": {
|
|
"tags": [
|
|
"Deprecated"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"name": "userId",
|
|
"in": "query",
|
|
"schema": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
}
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "OK",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/components/schemas/ReadHistoryEvent"
|
|
}
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/components/schemas/ReadHistoryEvent"
|
|
}
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/components/schemas/ReadHistoryEvent"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"deprecated": true
|
|
}
|
|
},
|
|
"/api/stats/server/top/years": {
|
|
"get": {
|
|
"tags": [
|
|
"Deprecated"
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "OK",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/components/schemas/Int32StatCount"
|
|
}
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/components/schemas/Int32StatCount"
|
|
}
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/components/schemas/Int32StatCount"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"deprecated": true
|
|
}
|
|
},
|
|
"/api/stats/reading-count-by-day": {
|
|
"get": {
|
|
"tags": [
|
|
"Deprecated"
|
|
],
|
|
"summary": "Returns reading history events for a give or all users, broken up by day, and format",
|
|
"parameters": [
|
|
{
|
|
"name": "userId",
|
|
"in": "query",
|
|
"description": "If 0, defaults to all users, else just userId",
|
|
"schema": {
|
|
"type": "integer",
|
|
"format": "int32",
|
|
"default": 0
|
|
}
|
|
},
|
|
{
|
|
"name": "days",
|
|
"in": "query",
|
|
"description": "If 0, defaults to all time, else just those days asked for",
|
|
"schema": {
|
|
"type": "integer",
|
|
"format": "int32",
|
|
"default": 0
|
|
}
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "OK",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/components/schemas/DateTimeStatCountWithFormat"
|
|
}
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/components/schemas/DateTimeStatCountWithFormat"
|
|
}
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/components/schemas/DateTimeStatCountWithFormat"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"deprecated": true
|
|
}
|
|
},
|
|
"/api/server/count/year": {
|
|
"get": {
|
|
"tags": [
|
|
"Deprecated"
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "OK",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/components/schemas/Int32StatCount"
|
|
}
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/components/schemas/Int32StatCount"
|
|
}
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/components/schemas/Int32StatCount"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"deprecated": true
|
|
}
|
|
},
|
|
"/api/stats/server/top/users": {
|
|
"get": {
|
|
"tags": [
|
|
"Deprecated"
|
|
],
|
|
"summary": "Returns users with the top reads in the server",
|
|
"parameters": [
|
|
{
|
|
"name": "days",
|
|
"in": "query",
|
|
"description": "",
|
|
"schema": {
|
|
"type": "integer",
|
|
"format": "int32",
|
|
"default": 0
|
|
}
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "OK",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/components/schemas/TopReadDto"
|
|
}
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/components/schemas/TopReadDto"
|
|
}
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/components/schemas/TopReadDto"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"deprecated": true
|
|
}
|
|
},
|
|
"/api/reader/all-chapter-progress": {
|
|
"get": {
|
|
"tags": [
|
|
"Deprecated"
|
|
],
|
|
"summary": "Get all progress events for a given chapter",
|
|
"parameters": [
|
|
{
|
|
"name": "chapterId",
|
|
"in": "query",
|
|
"description": "",
|
|
"schema": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
}
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "OK",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/components/schemas/FullProgressDto"
|
|
}
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/components/schemas/FullProgressDto"
|
|
}
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/components/schemas/FullProgressDto"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"deprecated": true
|
|
}
|
|
},
|
|
"/api/recommended/quick-reads": {
|
|
"get": {
|
|
"tags": [
|
|
"Deprecated"
|
|
],
|
|
"summary": "Quick Reads are series that should be readable in less than 10 in total and are not Ongoing in release.",
|
|
"parameters": [
|
|
{
|
|
"name": "libraryId",
|
|
"in": "query",
|
|
"description": "Library to restrict series to",
|
|
"schema": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
}
|
|
},
|
|
{
|
|
"name": "PageNumber",
|
|
"in": "query",
|
|
"schema": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
}
|
|
},
|
|
{
|
|
"name": "PageSize",
|
|
"in": "query",
|
|
"description": "If set to 0, will set as MaxInt",
|
|
"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",
|
|
"description": "If set to 0, will set as MaxInt",
|
|
"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",
|
|
"description": "If set to 0, will set as MaxInt",
|
|
"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",
|
|
"description": "If set to 0, will set as MaxInt",
|
|
"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",
|
|
"description": "If set to 0, will set as MaxInt",
|
|
"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/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/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/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"
|
|
}
|
|
}
|
|
],
|
|
"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"
|
|
}
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "OK"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/api/Download/series": {
|
|
"get": {
|
|
"tags": [
|
|
"Download"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"name": "seriesId",
|
|
"in": "query",
|
|
"schema": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
}
|
|
}
|
|
],
|
|
"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 API.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"
|
|
}
|
|
},
|
|
{
|
|
"name": "apiKey",
|
|
"in": "query",
|
|
"description": "",
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
],
|
|
"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"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/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",
|
|
"parameters": [
|
|
{
|
|
"name": "libraryId",
|
|
"in": "query",
|
|
"schema": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
}
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "OK",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/LibraryDto"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/LibraryDto"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/LibraryDto"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/api/Library/libraries": {
|
|
"get": {
|
|
"tags": [
|
|
"Library"
|
|
],
|
|
"summary": "Return all libraries in the Server",
|
|
"responses": {
|
|
"200": {
|
|
"description": "OK",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/components/schemas/LibraryDto"
|
|
}
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/components/schemas/LibraryDto"
|
|
}
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/components/schemas/LibraryDto"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/api/Library/user-libraries": {
|
|
"get": {
|
|
"tags": [
|
|
"Library"
|
|
],
|
|
"summary": "Gets libraries for the given user that you also have access to",
|
|
"parameters": [
|
|
{
|
|
"name": "userId",
|
|
"in": "query",
|
|
"description": "",
|
|
"schema": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
}
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "OK",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/components/schemas/LibraryDto"
|
|
}
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/components/schemas/LibraryDto"
|
|
}
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/components/schemas/LibraryDto"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/api/Library/jump-bar": {
|
|
"get": {
|
|
"tags": [
|
|
"Library"
|
|
],
|
|
"summary": "For a given library, generate the jump bar information",
|
|
"parameters": [
|
|
{
|
|
"name": "libraryId",
|
|
"in": "query",
|
|
"description": "",
|
|
"schema": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
}
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "OK",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/components/schemas/JumpKeyDto"
|
|
}
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/components/schemas/JumpKeyDto"
|
|
}
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/components/schemas/JumpKeyDto"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/api/Library/grant-access": {
|
|
"post": {
|
|
"tags": [
|
|
"Library"
|
|
],
|
|
"summary": "Grants a user account access to a Library",
|
|
"requestBody": {
|
|
"description": "",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/UpdateLibraryForUserDto"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/UpdateLibraryForUserDto"
|
|
}
|
|
},
|
|
"application/*+json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/UpdateLibraryForUserDto"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"responses": {
|
|
"200": {
|
|
"description": "OK",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/MemberDto"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/MemberDto"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/MemberDto"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/api/Library/scan": {
|
|
"post": {
|
|
"tags": [
|
|
"Library"
|
|
],
|
|
"summary": "Scans a given library for file changes.",
|
|
"parameters": [
|
|
{
|
|
"name": "libraryId",
|
|
"in": "query",
|
|
"description": "",
|
|
"schema": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
}
|
|
},
|
|
{
|
|
"name": "force",
|
|
"in": "query",
|
|
"description": "If true, will ignore any optimizations to avoid file I/O and will treat similar to a first scan",
|
|
"schema": {
|
|
"type": "boolean",
|
|
"default": false
|
|
}
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "OK"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/api/Library/scan-multiple": {
|
|
"post": {
|
|
"tags": [
|
|
"Library"
|
|
],
|
|
"summary": "Enqueues a bunch of library scans",
|
|
"requestBody": {
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/BulkActionDto"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/BulkActionDto"
|
|
}
|
|
},
|
|
"application/*+json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/BulkActionDto"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"responses": {
|
|
"200": {
|
|
"description": "OK"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/api/Library/scan-all": {
|
|
"post": {
|
|
"tags": [
|
|
"Library"
|
|
],
|
|
"summary": "Scans a given library for file changes. If another scan task is in progress, will reschedule the invocation for 3 hours in future.",
|
|
"parameters": [
|
|
{
|
|
"name": "force",
|
|
"in": "query",
|
|
"description": "If true, will ignore any optimizations to avoid file I/O and will treat similar to a first scan",
|
|
"schema": {
|
|
"type": "boolean",
|
|
"default": false
|
|
}
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "OK"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/api/Library/refresh-metadata": {
|
|
"post": {
|
|
"tags": [
|
|
"Library"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"name": "libraryId",
|
|
"in": "query",
|
|
"schema": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
}
|
|
},
|
|
{
|
|
"name": "force",
|
|
"in": "query",
|
|
"schema": {
|
|
"type": "boolean",
|
|
"default": true
|
|
}
|
|
},
|
|
{
|
|
"name": "forceColorscape",
|
|
"in": "query",
|
|
"schema": {
|
|
"type": "boolean",
|
|
"default": true
|
|
}
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "OK"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/api/Library/refresh-metadata-multiple": {
|
|
"post": {
|
|
"tags": [
|
|
"Library"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"name": "forceColorscape",
|
|
"in": "query",
|
|
"schema": {
|
|
"type": "boolean",
|
|
"default": true
|
|
}
|
|
}
|
|
],
|
|
"requestBody": {
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/BulkActionDto"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/BulkActionDto"
|
|
}
|
|
},
|
|
"application/*+json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/BulkActionDto"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"responses": {
|
|
"200": {
|
|
"description": "OK"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/api/Library/copy-settings-from": {
|
|
"post": {
|
|
"tags": [
|
|
"Library"
|
|
],
|
|
"summary": "Copy the library settings (adv tab + optional type) to a set of other libraries.",
|
|
"requestBody": {
|
|
"description": "",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/CopySettingsFromLibraryDto"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/CopySettingsFromLibraryDto"
|
|
}
|
|
},
|
|
"application/*+json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/CopySettingsFromLibraryDto"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"responses": {
|
|
"200": {
|
|
"description": "OK"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/api/Library/scan-folder": {
|
|
"post": {
|
|
"tags": [
|
|
"Library"
|
|
],
|
|
"summary": "Given a valid path, will invoke either a Scan Series or Scan Library. If the folder does not exist within Kavita, the request will be ignored",
|
|
"requestBody": {
|
|
"description": "",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ScanFolderDto"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ScanFolderDto"
|
|
}
|
|
},
|
|
"application/*+json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ScanFolderDto"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"responses": {
|
|
"200": {
|
|
"description": "OK"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/api/Library/delete": {
|
|
"delete": {
|
|
"tags": [
|
|
"Library"
|
|
],
|
|
"summary": "Deletes the library and all series within it.",
|
|
"description": "This does not touch any files",
|
|
"parameters": [
|
|
{
|
|
"name": "libraryId",
|
|
"in": "query",
|
|
"description": "",
|
|
"schema": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
}
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "OK",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"type": "boolean"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "boolean"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"type": "boolean"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/api/Library/delete-multiple": {
|
|
"delete": {
|
|
"tags": [
|
|
"Library"
|
|
],
|
|
"summary": "Deletes multiple libraries and all series within it.",
|
|
"description": "This does not touch any files",
|
|
"parameters": [
|
|
{
|
|
"name": "libraryIds",
|
|
"in": "query",
|
|
"description": "",
|
|
"schema": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
}
|
|
}
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "OK",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"type": "boolean"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "boolean"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"type": "boolean"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/api/Library/name-exists": {
|
|
"get": {
|
|
"tags": [
|
|
"Library"
|
|
],
|
|
"summary": "Checks if the library name exists or not",
|
|
"parameters": [
|
|
{
|
|
"name": "name",
|
|
"in": "query",
|
|
"description": "If empty or null, will return true as that is invalid",
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "OK",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"type": "boolean"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "boolean"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"type": "boolean"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/api/Library/update": {
|
|
"post": {
|
|
"tags": [
|
|
"Library"
|
|
],
|
|
"summary": "Updates an existing Library with new name, folders, and/or type.",
|
|
"description": "Any folder or type change will invoke a scan.",
|
|
"requestBody": {
|
|
"description": "",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/UpdateLibraryDto"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/UpdateLibraryDto"
|
|
}
|
|
},
|
|
"application/*+json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/UpdateLibraryDto"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"responses": {
|
|
"200": {
|
|
"description": "OK"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/api/Library/type": {
|
|
"get": {
|
|
"tags": [
|
|
"Library"
|
|
],
|
|
"summary": "Returns the type of the underlying library",
|
|
"parameters": [
|
|
{
|
|
"name": "libraryId",
|
|
"in": "query",
|
|
"description": "",
|
|
"schema": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
}
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "OK",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"enum": [
|
|
0,
|
|
1,
|
|
2,
|
|
3,
|
|
4,
|
|
5
|
|
],
|
|
"type": "integer",
|
|
"format": "int32"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"enum": [
|
|
0,
|
|
1,
|
|
2,
|
|
3,
|
|
4,
|
|
5
|
|
],
|
|
"type": "integer",
|
|
"format": "int32"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"enum": [
|
|
0,
|
|
1,
|
|
2,
|
|
3,
|
|
4,
|
|
5
|
|
],
|
|
"type": "integer",
|
|
"format": "int32"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/api/License/valid-license": {
|
|
"get": {
|
|
"tags": [
|
|
"License"
|
|
],
|
|
"summary": "Checks if the user's license is valid or not",
|
|
"parameters": [
|
|
{
|
|
"name": "forceCheck",
|
|
"in": "query",
|
|
"schema": {
|
|
"type": "boolean",
|
|
"default": false
|
|
}
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "OK",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"type": "boolean"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "boolean"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"type": "boolean"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/api/License/has-license": {
|
|
"get": {
|
|
"tags": [
|
|
"License"
|
|
],
|
|
"summary": "Has any license registered with the instance. Does not validate against Kavita+ API",
|
|
"responses": {
|
|
"200": {
|
|
"description": "OK",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"type": "boolean"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "boolean"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"type": "boolean"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/api/License/info": {
|
|
"get": {
|
|
"tags": [
|
|
"License"
|
|
],
|
|
"summary": "Asks Kavita+ for the latest license info",
|
|
"parameters": [
|
|
{
|
|
"name": "forceCheck",
|
|
"in": "query",
|
|
"description": "Force checking the API and skip the 8 hour cache",
|
|
"schema": {
|
|
"type": "boolean",
|
|
"default": false
|
|
}
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "OK",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/LicenseInfoDto"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/LicenseInfoDto"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/LicenseInfoDto"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/api/License": {
|
|
"delete": {
|
|
"tags": [
|
|
"License"
|
|
],
|
|
"summary": "Remove the Kavita+ License on the Server",
|
|
"responses": {
|
|
"200": {
|
|
"description": "OK"
|
|
}
|
|
}
|
|
},
|
|
"post": {
|
|
"tags": [
|
|
"License"
|
|
],
|
|
"summary": "Updates server license",
|
|
"description": "Caches the result",
|
|
"requestBody": {
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/UpdateLicenseDto"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/UpdateLicenseDto"
|
|
}
|
|
},
|
|
"application/*+json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/UpdateLicenseDto"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"responses": {
|
|
"200": {
|
|
"description": "OK"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/api/License/reset": {
|
|
"post": {
|
|
"tags": [
|
|
"License"
|
|
],
|
|
"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/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",
|
|
"description": "If set to 0, will set as MaxInt",
|
|
"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",
|
|
"description": "For complex queries, Library has certain restrictions where the library should not be included in results.\nThis enum dictates which field to use for the lookup.",
|
|
"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.",
|
|
"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",
|
|
"description": "If set to 0, will set as MaxInt",
|
|
"schema": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
}
|
|
}
|
|
],
|
|
"requestBody": {
|
|
"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",
|
|
"parameters": [
|
|
{
|
|
"name": "authKey",
|
|
"in": "query",
|
|
"required": true,
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "OK",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"type": "string",
|
|
"format": "date-time",
|
|
"nullable": true
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "string",
|
|
"format": "date-time",
|
|
"nullable": true
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"type": "string",
|
|
"format": "date-time",
|
|
"nullable": true
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/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-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",
|
|
"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",
|
|
"description": "If set to 0, will set as MaxInt",
|
|
"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/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 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 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
|
|
],
|
|
"type": "integer",
|
|
"description": "Misleading name but is the source of data (like a review coming from AniList)",
|
|
"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",
|
|
"description": "If set to 0, will set as MaxInt",
|
|
"schema": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
}
|
|
}
|
|
],
|
|
"requestBody": {
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ScrobbleEventFilter"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ScrobbleEventFilter"
|
|
}
|
|
},
|
|
"application/*+json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ScrobbleEventFilter"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"responses": {
|
|
"200": {
|
|
"description": "OK",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/components/schemas/ScrobbleEventDto"
|
|
}
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/components/schemas/ScrobbleEventDto"
|
|
}
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/components/schemas/ScrobbleEventDto"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/api/Scrobbling/holds": {
|
|
"get": {
|
|
"tags": [
|
|
"Scrobbling"
|
|
],
|
|
"summary": "Returns all scrobble holds for the current user",
|
|
"responses": {
|
|
"200": {
|
|
"description": "OK",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/components/schemas/ScrobbleHoldDto"
|
|
}
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/components/schemas/ScrobbleHoldDto"
|
|
}
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/components/schemas/ScrobbleHoldDto"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/api/Scrobbling/has-hold": {
|
|
"get": {
|
|
"tags": [
|
|
"Scrobbling"
|
|
],
|
|
"summary": "If there is an active hold on the series",
|
|
"parameters": [
|
|
{
|
|
"name": "seriesId",
|
|
"in": "query",
|
|
"description": "",
|
|
"schema": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
}
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "OK",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"type": "boolean"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "boolean"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"type": "boolean"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/api/Scrobbling/library-allows-scrobbling": {
|
|
"get": {
|
|
"tags": [
|
|
"Scrobbling"
|
|
],
|
|
"summary": "Does the library the series is in allow scrobbling?",
|
|
"parameters": [
|
|
{
|
|
"name": "seriesId",
|
|
"in": "query",
|
|
"description": "",
|
|
"schema": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
}
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "OK",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"type": "boolean"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "boolean"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"type": "boolean"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/api/Scrobbling/add-hold": {
|
|
"post": {
|
|
"tags": [
|
|
"Scrobbling"
|
|
],
|
|
"summary": "Adds a hold against the Series for user's scrobbling",
|
|
"parameters": [
|
|
{
|
|
"name": "seriesId",
|
|
"in": "query",
|
|
"description": "",
|
|
"schema": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
}
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "OK"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/api/Scrobbling/remove-hold": {
|
|
"delete": {
|
|
"tags": [
|
|
"Scrobbling"
|
|
],
|
|
"summary": "Remove a hold against the Series for user's scrobbling",
|
|
"parameters": [
|
|
{
|
|
"name": "seriesId",
|
|
"in": "query",
|
|
"description": "",
|
|
"schema": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
}
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "OK"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/api/Scrobbling/has-ran-scrobble-gen": {
|
|
"get": {
|
|
"tags": [
|
|
"Scrobbling"
|
|
],
|
|
"summary": "Has the logged in user ran scrobble generation",
|
|
"responses": {
|
|
"200": {
|
|
"description": "OK",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"type": "boolean"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "boolean"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"type": "boolean"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/api/Scrobbling/bulk-remove-events": {
|
|
"post": {
|
|
"tags": [
|
|
"Scrobbling"
|
|
],
|
|
"summary": "Delete the given scrobble events if they belong to that user",
|
|
"requestBody": {
|
|
"description": "",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "integer",
|
|
"format": "int64"
|
|
}
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "integer",
|
|
"format": "int64"
|
|
}
|
|
}
|
|
},
|
|
"application/*+json": {
|
|
"schema": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "integer",
|
|
"format": "int64"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"responses": {
|
|
"200": {
|
|
"description": "OK"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/api/Search/series-for-mangafile": {
|
|
"get": {
|
|
"tags": [
|
|
"Search"
|
|
],
|
|
"summary": "Returns the series for the MangaFile id. If the user does not have access (shouldn't happen by the UI),\nthen null is returned",
|
|
"parameters": [
|
|
{
|
|
"name": "mangaFileId",
|
|
"in": "query",
|
|
"description": "",
|
|
"schema": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
}
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "OK",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/SeriesDto"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/SeriesDto"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/SeriesDto"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/api/Search/series-for-chapter": {
|
|
"get": {
|
|
"tags": [
|
|
"Search"
|
|
],
|
|
"summary": "Returns the series for the Chapter id. If the user does not have access (shouldn't happen by the UI),\nthen null is returned",
|
|
"parameters": [
|
|
{
|
|
"name": "chapterId",
|
|
"in": "query",
|
|
"description": "",
|
|
"schema": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
}
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "OK",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/SeriesDto"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/SeriesDto"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/SeriesDto"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/api/Search/search": {
|
|
"get": {
|
|
"tags": [
|
|
"Search"
|
|
],
|
|
"summary": "Searches against different entities in the system against a query string",
|
|
"parameters": [
|
|
{
|
|
"name": "queryString",
|
|
"in": "query",
|
|
"description": "",
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
{
|
|
"name": "includeChapterAndFiles",
|
|
"in": "query",
|
|
"description": "Include Chapter and Filenames in the entities. This can slow down the search on larger systems",
|
|
"schema": {
|
|
"type": "boolean",
|
|
"default": true
|
|
}
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "OK",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/SearchResultGroupDto"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/SearchResultGroupDto"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/SearchResultGroupDto"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/api/Series/v2": {
|
|
"post": {
|
|
"tags": [
|
|
"Series"
|
|
],
|
|
"summary": "Gets series with the applied Filter",
|
|
"parameters": [
|
|
{
|
|
"name": "PageNumber",
|
|
"in": "query",
|
|
"schema": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
}
|
|
},
|
|
{
|
|
"name": "PageSize",
|
|
"in": "query",
|
|
"description": "If set to 0, will set as MaxInt",
|
|
"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"
|
|
],
|
|
"requestBody": {
|
|
"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"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"name": "volumeId",
|
|
"in": "query",
|
|
"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"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"name": "chapterId",
|
|
"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/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"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/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",
|
|
"description": "If set to 0, will set as MaxInt",
|
|
"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",
|
|
"description": "If set to 0, will set as MaxInt",
|
|
"schema": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
}
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "OK",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/components/schemas/RecentlyAddedItemDto"
|
|
}
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/components/schemas/RecentlyAddedItemDto"
|
|
}
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/components/schemas/RecentlyAddedItemDto"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/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",
|
|
"description": "If set to 0, will set as MaxInt",
|
|
"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",
|
|
"description": "For complex queries, Library has certain restrictions where the library should not be included in results.\nThis enum dictates which field to use for the lookup.",
|
|
"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",
|
|
"description": "If set to 0, will set as MaxInt",
|
|
"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",
|
|
"description": "If set to 0, will set as MaxInt",
|
|
"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",
|
|
"description": "If set to 0, will set as MaxInt",
|
|
"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 API.Entities.Enums.AgeRating enum value",
|
|
"description": "This is cached for an hour",
|
|
"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",
|
|
"description": "Represents a relationship between Series",
|
|
"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",
|
|
"schema": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
}
|
|
},
|
|
{
|
|
"name": "malId",
|
|
"in": "query",
|
|
"schema": {
|
|
"type": "integer",
|
|
"format": "int64"
|
|
}
|
|
},
|
|
{
|
|
"name": "cbrId",
|
|
"in": "query",
|
|
"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",
|
|
"description": "Timezone of the user, will zone to this TimeZone",
|
|
"schema": {
|
|
"type": "string",
|
|
"example": "America/Los_Angeles"
|
|
},
|
|
"example": "America/Los_Angeles"
|
|
},
|
|
{
|
|
"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",
|
|
"description": "Timezone of the user, will zone to this TimeZone",
|
|
"schema": {
|
|
"type": "string",
|
|
"example": "America/Los_Angeles"
|
|
},
|
|
"example": "America/Los_Angeles"
|
|
},
|
|
{
|
|
"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 last 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",
|
|
"description": "Timezone of the user, will zone to this TimeZone",
|
|
"schema": {
|
|
"type": "string",
|
|
"example": "America/Los_Angeles"
|
|
},
|
|
"example": "America/Los_Angeles"
|
|
},
|
|
{
|
|
"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",
|
|
"description": "Timezone of the user, will zone to this TimeZone",
|
|
"schema": {
|
|
"type": "string",
|
|
"example": "America/Los_Angeles"
|
|
},
|
|
"example": "America/Los_Angeles"
|
|
},
|
|
{
|
|
"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 top 10 genres that user likes reading",
|
|
"parameters": [
|
|
{
|
|
"name": "StartDate",
|
|
"in": "query",
|
|
"schema": {
|
|
"type": "string",
|
|
"format": "date-time"
|
|
}
|
|
},
|
|
{
|
|
"name": "TimeZoneId",
|
|
"in": "query",
|
|
"description": "Timezone of the user, will zone to this TimeZone",
|
|
"schema": {
|
|
"type": "string",
|
|
"example": "America/Los_Angeles"
|
|
},
|
|
"example": "America/Los_Angeles"
|
|
},
|
|
{
|
|
"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",
|
|
"description": "Timezone of the user, will zone to this TimeZone",
|
|
"schema": {
|
|
"type": "string",
|
|
"example": "America/Los_Angeles"
|
|
},
|
|
"example": "America/Los_Angeles"
|
|
},
|
|
{
|
|
"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",
|
|
"description": "Timezone of the user, will zone to this TimeZone",
|
|
"schema": {
|
|
"type": "string",
|
|
"example": "America/Los_Angeles"
|
|
},
|
|
"example": "America/Los_Angeles"
|
|
},
|
|
{
|
|
"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",
|
|
"description": "Timezone of the user, will zone to this TimeZone",
|
|
"schema": {
|
|
"type": "string",
|
|
"example": "America/Los_Angeles"
|
|
},
|
|
"example": "America/Los_Angeles"
|
|
},
|
|
{
|
|
"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",
|
|
"description": "Timezone of the user, will zone to this TimeZone",
|
|
"schema": {
|
|
"type": "string",
|
|
"example": "America/Los_Angeles"
|
|
},
|
|
"example": "America/Los_Angeles"
|
|
},
|
|
{
|
|
"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",
|
|
"description": "Timezone of the user, will zone to this TimeZone",
|
|
"schema": {
|
|
"type": "string",
|
|
"example": "America/Los_Angeles"
|
|
},
|
|
"example": "America/Los_Angeles"
|
|
},
|
|
{
|
|
"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",
|
|
"description": "Timezone of the user, will zone to this TimeZone",
|
|
"schema": {
|
|
"type": "string",
|
|
"example": "America/Los_Angeles"
|
|
},
|
|
"example": "America/Los_Angeles"
|
|
},
|
|
{
|
|
"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",
|
|
"description": "Timezone of the user, will zone to this TimeZone",
|
|
"schema": {
|
|
"type": "string",
|
|
"example": "America/Los_Angeles"
|
|
},
|
|
"example": "America/Los_Angeles"
|
|
},
|
|
{
|
|
"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",
|
|
"description": "Timezone of the user, will zone to this TimeZone",
|
|
"schema": {
|
|
"type": "string",
|
|
"example": "America/Los_Angeles"
|
|
},
|
|
"example": "America/Los_Angeles"
|
|
},
|
|
{
|
|
"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",
|
|
"description": "If set to 0, will set as MaxInt",
|
|
"schema": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
}
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "OK",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/components/schemas/ReadingHistoryItemDto"
|
|
}
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/components/schemas/ReadingHistoryItemDto"
|
|
}
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/components/schemas/ReadingHistoryItemDto"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/api/Stream/dashboard": {
|
|
"get": {
|
|
"tags": [
|
|
"Stream"
|
|
],
|
|
"summary": "Returns the layout of the user's dashboard",
|
|
"parameters": [
|
|
{
|
|
"name": "visibleOnly",
|
|
"in": "query",
|
|
"schema": {
|
|
"type": "boolean",
|
|
"default": true
|
|
}
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "OK",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/components/schemas/DashboardStreamDto"
|
|
}
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/components/schemas/DashboardStreamDto"
|
|
}
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/components/schemas/DashboardStreamDto"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/api/Stream/sidenav": {
|
|
"get": {
|
|
"tags": [
|
|
"Stream"
|
|
],
|
|
"summary": "Return's the user's side nav",
|
|
"parameters": [
|
|
{
|
|
"name": "visibleOnly",
|
|
"in": "query",
|
|
"schema": {
|
|
"type": "boolean",
|
|
"default": true
|
|
}
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "OK",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/components/schemas/SideNavStreamDto"
|
|
}
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/components/schemas/SideNavStreamDto"
|
|
}
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/components/schemas/SideNavStreamDto"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/api/Stream/external-sources": {
|
|
"get": {
|
|
"tags": [
|
|
"Stream"
|
|
],
|
|
"summary": "Return's the user's external sources",
|
|
"responses": {
|
|
"200": {
|
|
"description": "OK",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/components/schemas/ExternalSourceDto"
|
|
}
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/components/schemas/ExternalSourceDto"
|
|
}
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/components/schemas/ExternalSourceDto"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/api/Stream/create-external-source": {
|
|
"post": {
|
|
"tags": [
|
|
"Stream"
|
|
],
|
|
"summary": "Create an external Source",
|
|
"requestBody": {
|
|
"description": "",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ExternalSourceDto"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ExternalSourceDto"
|
|
}
|
|
},
|
|
"application/*+json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ExternalSourceDto"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"responses": {
|
|
"200": {
|
|
"description": "OK",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ExternalSourceDto"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ExternalSourceDto"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ExternalSourceDto"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/api/Stream/update-external-source": {
|
|
"post": {
|
|
"tags": [
|
|
"Stream"
|
|
],
|
|
"summary": "Updates an existing external source",
|
|
"requestBody": {
|
|
"description": "",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ExternalSourceDto"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ExternalSourceDto"
|
|
}
|
|
},
|
|
"application/*+json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ExternalSourceDto"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"responses": {
|
|
"200": {
|
|
"description": "OK",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ExternalSourceDto"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ExternalSourceDto"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ExternalSourceDto"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/api/Stream/external-source-exists": {
|
|
"post": {
|
|
"tags": [
|
|
"Stream"
|
|
],
|
|
"summary": "Validates the external source by host is unique (for this user)",
|
|
"requestBody": {
|
|
"description": "",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ExternalSourceDto"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ExternalSourceDto"
|
|
}
|
|
},
|
|
"application/*+json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ExternalSourceDto"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"responses": {
|
|
"200": {
|
|
"description": "OK",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"type": "boolean"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "boolean"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"type": "boolean"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/api/Stream/delete-external-source": {
|
|
"delete": {
|
|
"tags": [
|
|
"Stream"
|
|
],
|
|
"summary": "Delete's the external source",
|
|
"parameters": [
|
|
{
|
|
"name": "externalSourceId",
|
|
"in": "query",
|
|
"description": "",
|
|
"schema": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
}
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "OK"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/api/Stream/add-dashboard-stream": {
|
|
"post": {
|
|
"tags": [
|
|
"Stream"
|
|
],
|
|
"summary": "Creates a Dashboard Stream from a SmartFilter and adds it to the user's dashboard as visible",
|
|
"parameters": [
|
|
{
|
|
"name": "smartFilterId",
|
|
"in": "query",
|
|
"description": "",
|
|
"schema": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
}
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "OK",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/DashboardStreamDto"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/DashboardStreamDto"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/DashboardStreamDto"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/api/Stream/update-dashboard-stream": {
|
|
"post": {
|
|
"tags": [
|
|
"Stream"
|
|
],
|
|
"summary": "Updates the visibility of a dashboard stream",
|
|
"requestBody": {
|
|
"description": "",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/DashboardStreamDto"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/DashboardStreamDto"
|
|
}
|
|
},
|
|
"application/*+json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/DashboardStreamDto"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"responses": {
|
|
"200": {
|
|
"description": "OK"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/api/Stream/update-dashboard-position": {
|
|
"post": {
|
|
"tags": [
|
|
"Stream"
|
|
],
|
|
"summary": "Updates the position of a dashboard stream",
|
|
"requestBody": {
|
|
"description": "",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/UpdateStreamPositionDto"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/UpdateStreamPositionDto"
|
|
}
|
|
},
|
|
"application/*+json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/UpdateStreamPositionDto"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"responses": {
|
|
"200": {
|
|
"description": "OK"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/api/Stream/add-sidenav-stream": {
|
|
"post": {
|
|
"tags": [
|
|
"Stream"
|
|
],
|
|
"summary": "Creates a SideNav Stream from a SmartFilter and adds it to the user's sidenav as visible",
|
|
"parameters": [
|
|
{
|
|
"name": "smartFilterId",
|
|
"in": "query",
|
|
"description": "",
|
|
"schema": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
}
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "OK",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/SideNavStreamDto"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/SideNavStreamDto"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/SideNavStreamDto"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/api/Stream/add-sidenav-stream-from-external-source": {
|
|
"post": {
|
|
"tags": [
|
|
"Stream"
|
|
],
|
|
"summary": "Creates a SideNav Stream from a SmartFilter and adds it to the user's sidenav as visible",
|
|
"parameters": [
|
|
{
|
|
"name": "externalSourceId",
|
|
"in": "query",
|
|
"description": "",
|
|
"schema": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
}
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "OK",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/SideNavStreamDto"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/SideNavStreamDto"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/SideNavStreamDto"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/api/Stream/update-sidenav-stream": {
|
|
"post": {
|
|
"tags": [
|
|
"Stream"
|
|
],
|
|
"summary": "Updates the visibility of a dashboard stream",
|
|
"requestBody": {
|
|
"description": "",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/SideNavStreamDto"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/SideNavStreamDto"
|
|
}
|
|
},
|
|
"application/*+json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/SideNavStreamDto"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"responses": {
|
|
"200": {
|
|
"description": "OK"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/api/Stream/update-sidenav-position": {
|
|
"post": {
|
|
"tags": [
|
|
"Stream"
|
|
],
|
|
"summary": "Updates the position of a dashboard stream",
|
|
"requestBody": {
|
|
"description": "",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/UpdateStreamPositionDto"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/UpdateStreamPositionDto"
|
|
}
|
|
},
|
|
"application/*+json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/UpdateStreamPositionDto"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"responses": {
|
|
"200": {
|
|
"description": "OK"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/api/Stream/bulk-sidenav-stream-visibility": {
|
|
"post": {
|
|
"tags": [
|
|
"Stream"
|
|
],
|
|
"requestBody": {
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/BulkUpdateSideNavStreamVisibilityDto"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/BulkUpdateSideNavStreamVisibilityDto"
|
|
}
|
|
},
|
|
"application/*+json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/BulkUpdateSideNavStreamVisibilityDto"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"responses": {
|
|
"200": {
|
|
"description": "OK"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/api/Stream/smart-filter-side-nav-stream": {
|
|
"delete": {
|
|
"tags": [
|
|
"Stream"
|
|
],
|
|
"summary": "Removes a Smart Filter from a user's SideNav Streams",
|
|
"parameters": [
|
|
{
|
|
"name": "sideNavStreamId",
|
|
"in": "query",
|
|
"description": "",
|
|
"schema": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
}
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "OK"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/api/Stream/smart-filter-dashboard-stream": {
|
|
"delete": {
|
|
"tags": [
|
|
"Stream"
|
|
],
|
|
"summary": "Removes a Smart Filter from a user's Dashboard Streams",
|
|
"parameters": [
|
|
{
|
|
"name": "dashboardStreamId",
|
|
"in": "query",
|
|
"description": "",
|
|
"schema": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
}
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "OK"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/api/Tachiyomi/latest-chapter": {
|
|
"get": {
|
|
"tags": [
|
|
"Tachiyomi"
|
|
],
|
|
"summary": "Given the series Id, this should return the latest chapter that has been fully read.",
|
|
"parameters": [
|
|
{
|
|
"name": "seriesId",
|
|
"in": "query",
|
|
"description": "",
|
|
"schema": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
}
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "OK",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ChapterDto"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ChapterDto"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ChapterDto"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/api/Tachiyomi/mark-chapter-until-as-read": {
|
|
"post": {
|
|
"tags": [
|
|
"Tachiyomi"
|
|
],
|
|
"summary": "Marks every chapter that is sorted below the passed number as Read. This will not mark any specials as read.",
|
|
"description": "This is built for Tachiyomi and is not expected to be called by any other place",
|
|
"parameters": [
|
|
{
|
|
"name": "seriesId",
|
|
"in": "query",
|
|
"schema": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
}
|
|
},
|
|
{
|
|
"name": "chapterNumber",
|
|
"in": "query",
|
|
"schema": {
|
|
"type": "number",
|
|
"format": "float"
|
|
}
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "OK",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"type": "boolean"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "boolean"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"type": "boolean"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/api/Theme": {
|
|
"get": {
|
|
"tags": [
|
|
"Theme"
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "OK",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/components/schemas/SiteThemeDto"
|
|
}
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/components/schemas/SiteThemeDto"
|
|
}
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/components/schemas/SiteThemeDto"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"delete": {
|
|
"tags": [
|
|
"Theme"
|
|
],
|
|
"summary": "Attempts to delete a theme. If already in use by users, will not allow",
|
|
"parameters": [
|
|
{
|
|
"name": "themeId",
|
|
"in": "query",
|
|
"description": "",
|
|
"schema": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
}
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "OK",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/components/schemas/DownloadableSiteThemeDto"
|
|
}
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/components/schemas/DownloadableSiteThemeDto"
|
|
}
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/components/schemas/DownloadableSiteThemeDto"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/api/Theme/update-default": {
|
|
"post": {
|
|
"tags": [
|
|
"Theme"
|
|
],
|
|
"requestBody": {
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/UpdateDefaultThemeDto"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/UpdateDefaultThemeDto"
|
|
}
|
|
},
|
|
"application/*+json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/UpdateDefaultThemeDto"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"responses": {
|
|
"200": {
|
|
"description": "OK"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/api/Theme/download-content": {
|
|
"get": {
|
|
"tags": [
|
|
"Theme"
|
|
],
|
|
"summary": "Returns css content to the UI. UI is expected to escape the content",
|
|
"parameters": [
|
|
{
|
|
"name": "themeId",
|
|
"in": "query",
|
|
"schema": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
}
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "OK",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/api/Theme/browse": {
|
|
"get": {
|
|
"tags": [
|
|
"Theme"
|
|
],
|
|
"summary": "Browse themes that can be used on this server",
|
|
"responses": {
|
|
"200": {
|
|
"description": "OK",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/components/schemas/DownloadableSiteThemeDto"
|
|
}
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/components/schemas/DownloadableSiteThemeDto"
|
|
}
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/components/schemas/DownloadableSiteThemeDto"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/api/Theme/download-theme": {
|
|
"post": {
|
|
"tags": [
|
|
"Theme"
|
|
],
|
|
"summary": "Downloads a SiteTheme from upstream",
|
|
"requestBody": {
|
|
"description": "",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/DownloadableSiteThemeDto"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/DownloadableSiteThemeDto"
|
|
}
|
|
},
|
|
"application/*+json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/DownloadableSiteThemeDto"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"responses": {
|
|
"200": {
|
|
"description": "OK",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/SiteThemeDto"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/SiteThemeDto"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/SiteThemeDto"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/api/Theme/upload-theme": {
|
|
"post": {
|
|
"tags": [
|
|
"Theme"
|
|
],
|
|
"summary": "Uploads a new theme file",
|
|
"requestBody": {
|
|
"content": {
|
|
"multipart/form-data": {
|
|
"schema": {
|
|
"type": "object",
|
|
"properties": {
|
|
"formFile": {
|
|
"type": "string",
|
|
"description": "",
|
|
"format": "binary"
|
|
}
|
|
}
|
|
},
|
|
"encoding": {
|
|
"formFile": {
|
|
"style": "form"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"responses": {
|
|
"200": {
|
|
"description": "OK",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/SiteThemeDto"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/SiteThemeDto"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/SiteThemeDto"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/api/Upload/upload-by-url": {
|
|
"post": {
|
|
"tags": [
|
|
"Upload"
|
|
],
|
|
"summary": "This stores a file (image) in temp directory for use in a cover image replacement flow.\nThis is automatically cleaned up.",
|
|
"requestBody": {
|
|
"description": "Escaped url to download from",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/UploadUrlDto"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/UploadUrlDto"
|
|
}
|
|
},
|
|
"application/*+json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/UploadUrlDto"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"responses": {
|
|
"200": {
|
|
"description": "OK",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/api/Upload/series": {
|
|
"post": {
|
|
"tags": [
|
|
"Upload"
|
|
],
|
|
"summary": "Replaces series cover image and locks it with a base64 encoded image",
|
|
"requestBody": {
|
|
"description": "",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/UploadFileDto"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/UploadFileDto"
|
|
}
|
|
},
|
|
"application/*+json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/UploadFileDto"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"responses": {
|
|
"200": {
|
|
"description": "OK"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/api/Upload/collection": {
|
|
"post": {
|
|
"tags": [
|
|
"Upload"
|
|
],
|
|
"summary": "Replaces collection tag cover image and locks it with a base64 encoded image",
|
|
"requestBody": {
|
|
"description": "",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/UploadFileDto"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/UploadFileDto"
|
|
}
|
|
},
|
|
"application/*+json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/UploadFileDto"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"responses": {
|
|
"200": {
|
|
"description": "OK"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/api/Upload/reading-list": {
|
|
"post": {
|
|
"tags": [
|
|
"Upload"
|
|
],
|
|
"summary": "Replaces reading list cover image and locks it with a base64 encoded image",
|
|
"description": "This is the only API that can be called by non-admins, but the authenticated user must have a readinglist permission",
|
|
"requestBody": {
|
|
"description": "",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/UploadFileDto"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/UploadFileDto"
|
|
}
|
|
},
|
|
"application/*+json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/UploadFileDto"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"responses": {
|
|
"200": {
|
|
"description": "OK"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/api/Upload/chapter": {
|
|
"post": {
|
|
"tags": [
|
|
"Upload"
|
|
],
|
|
"summary": "Replaces chapter cover image and locks it with a base64 encoded image. This will update the parent volume's cover image.",
|
|
"requestBody": {
|
|
"description": "",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/UploadFileDto"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/UploadFileDto"
|
|
}
|
|
},
|
|
"application/*+json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/UploadFileDto"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"responses": {
|
|
"200": {
|
|
"description": "OK"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/api/Upload/volume": {
|
|
"post": {
|
|
"tags": [
|
|
"Upload"
|
|
],
|
|
"summary": "Replaces volume cover image and locks it with a base64 encoded image.",
|
|
"description": "This will not update the underlying chapter",
|
|
"requestBody": {
|
|
"description": "",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/UploadFileDto"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/UploadFileDto"
|
|
}
|
|
},
|
|
"application/*+json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/UploadFileDto"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"responses": {
|
|
"200": {
|
|
"description": "OK"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/api/Upload/library": {
|
|
"post": {
|
|
"tags": [
|
|
"Upload"
|
|
],
|
|
"summary": "Replaces library cover image with a base64 encoded image. If empty string passed, will reset to null.",
|
|
"requestBody": {
|
|
"description": "",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/UploadFileDto"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/UploadFileDto"
|
|
}
|
|
},
|
|
"application/*+json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/UploadFileDto"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"responses": {
|
|
"200": {
|
|
"description": "OK"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/api/Upload/person": {
|
|
"post": {
|
|
"tags": [
|
|
"Upload"
|
|
],
|
|
"summary": "Replaces person tag cover image and locks it with a base64 encoded image",
|
|
"requestBody": {
|
|
"description": "",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/UploadFileDto"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/UploadFileDto"
|
|
}
|
|
},
|
|
"application/*+json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/UploadFileDto"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"responses": {
|
|
"200": {
|
|
"description": "OK"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/api/Upload/user": {
|
|
"post": {
|
|
"tags": [
|
|
"Upload"
|
|
],
|
|
"summary": "Replaces user cover image and locks it with a base64 encoded image",
|
|
"description": "You MUST be the user in question",
|
|
"requestBody": {
|
|
"description": "",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/UploadFileDto"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/UploadFileDto"
|
|
}
|
|
},
|
|
"application/*+json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/UploadFileDto"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"responses": {
|
|
"200": {
|
|
"description": "OK"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/api/Users/delete-user": {
|
|
"delete": {
|
|
"tags": [
|
|
"Users"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"name": "username",
|
|
"in": "query",
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "OK"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/api/Users": {
|
|
"get": {
|
|
"tags": [
|
|
"Users"
|
|
],
|
|
"summary": "Returns all users of this server",
|
|
"parameters": [
|
|
{
|
|
"name": "includePending",
|
|
"in": "query",
|
|
"description": "This will include pending members",
|
|
"schema": {
|
|
"type": "boolean",
|
|
"default": false
|
|
}
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "OK",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/components/schemas/MemberDto"
|
|
}
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/components/schemas/MemberDto"
|
|
}
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/components/schemas/MemberDto"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/api/Users/profile-info": {
|
|
"get": {
|
|
"tags": [
|
|
"Users"
|
|
],
|
|
"summary": "Get Information about a given user",
|
|
"parameters": [
|
|
{
|
|
"name": "userId",
|
|
"in": "query",
|
|
"schema": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
}
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "OK",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/MemberInfoDto"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/MemberInfoDto"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/MemberInfoDto"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/api/Users/has-profile-shared": {
|
|
"get": {
|
|
"tags": [
|
|
"Users"
|
|
],
|
|
"summary": "Does the requested user have their profile sharing on",
|
|
"parameters": [
|
|
{
|
|
"name": "userId",
|
|
"in": "query",
|
|
"description": "",
|
|
"schema": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
}
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "OK",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"type": "boolean"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "boolean"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"type": "boolean"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/api/Users/has-reading-progress": {
|
|
"get": {
|
|
"tags": [
|
|
"Users"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"name": "libraryId",
|
|
"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/Users/has-library-access": {
|
|
"get": {
|
|
"tags": [
|
|
"Users"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"name": "libraryId",
|
|
"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/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"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"name": "volumeId",
|
|
"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/Volume/multiple": {
|
|
"post": {
|
|
"tags": [
|
|
"Volume"
|
|
],
|
|
"requestBody": {
|
|
"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",
|
|
"description": "If set to 0, will set as MaxInt",
|
|
"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",
|
|
"description": "Represents Age Rating for content.",
|
|
"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",
|
|
"description": "The maximum age rating a user has access to. -1 if not applicable",
|
|
"format": "int32"
|
|
},
|
|
"includeUnknowns": {
|
|
"type": "boolean",
|
|
"description": "Are Unknowns explicitly allowed against age rating"
|
|
}
|
|
},
|
|
"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",
|
|
"description": "Starting point of the Highlight",
|
|
"nullable": true
|
|
},
|
|
"endingXPath": {
|
|
"type": "string",
|
|
"description": "Ending point of the Highlight. Can be the same as API.DTOs.Reader.AnnotationDto.XPath",
|
|
"nullable": true
|
|
},
|
|
"selectedText": {
|
|
"type": "string",
|
|
"description": "The text selected.",
|
|
"nullable": true
|
|
},
|
|
"comment": {
|
|
"type": "string",
|
|
"description": "Rich text Comment",
|
|
"nullable": true
|
|
},
|
|
"commentHtml": {
|
|
"type": "string",
|
|
"nullable": true
|
|
},
|
|
"commentPlainText": {
|
|
"type": "string",
|
|
"nullable": true
|
|
},
|
|
"chapterTitle": {
|
|
"type": "string",
|
|
"description": "Title of the TOC Chapter within Epub (not Chapter Entity)",
|
|
"nullable": true
|
|
},
|
|
"context": {
|
|
"type": "string",
|
|
"description": "A calculated selection of the surrounding text. This does not update after creation.",
|
|
"nullable": true
|
|
},
|
|
"highlightCount": {
|
|
"type": "integer",
|
|
"description": "The number of characters selected",
|
|
"format": "int32"
|
|
},
|
|
"containsSpoiler": {
|
|
"type": "boolean"
|
|
},
|
|
"pageNumber": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
},
|
|
"selectedSlotIndex": {
|
|
"type": "integer",
|
|
"description": "Selected Highlight Slot Index [0-4]",
|
|
"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",
|
|
"description": "The age rating of the series this annotation is linked to",
|
|
"format": "int32"
|
|
},
|
|
"createdUtc": {
|
|
"type": "string",
|
|
"format": "date-time"
|
|
},
|
|
"lastModifiedUtc": {
|
|
"type": "string",
|
|
"format": "date-time"
|
|
}
|
|
},
|
|
"additionalProperties": false,
|
|
"description": "Represents an annotation on a book"
|
|
},
|
|
"AnnotationFilterStatementDto": {
|
|
"type": "object",
|
|
"properties": {
|
|
"comparison": {
|
|
"enum": [
|
|
0,
|
|
1,
|
|
2,
|
|
3,
|
|
4,
|
|
5,
|
|
6,
|
|
7,
|
|
8,
|
|
9,
|
|
10,
|
|
11,
|
|
12,
|
|
13,
|
|
14,
|
|
15,
|
|
16
|
|
],
|
|
"type": "integer",
|
|
"format": "int32"
|
|
},
|
|
"field": {
|
|
"enum": [
|
|
1,
|
|
2,
|
|
3,
|
|
4,
|
|
5,
|
|
6,
|
|
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,
|
|
"description": "All Sorting Options for a query related to Annotation Entity"
|
|
},
|
|
"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",
|
|
"description": "Represents Age Rating for content.",
|
|
"format": "int32"
|
|
},
|
|
"coverImage": {
|
|
"type": "string",
|
|
"description": "This is used to tell the UI if it should request a Cover Image or not. If null or empty, it has not been set.",
|
|
"nullable": true
|
|
},
|
|
"primaryColor": {
|
|
"type": "string",
|
|
"nullable": true
|
|
},
|
|
"secondaryColor": {
|
|
"type": "string",
|
|
"nullable": true
|
|
},
|
|
"coverImageLocked": {
|
|
"type": "boolean"
|
|
},
|
|
"itemCount": {
|
|
"type": "integer",
|
|
"description": "Number of Series in the Collection",
|
|
"format": "int32"
|
|
},
|
|
"owner": {
|
|
"type": "string",
|
|
"description": "Owner of the Collection",
|
|
"nullable": true
|
|
},
|
|
"lastSyncUtc": {
|
|
"type": "string",
|
|
"description": "Last time Kavita Synced the Collection with an upstream source (for non Kavita sourced collections)",
|
|
"format": "date-time"
|
|
},
|
|
"source": {
|
|
"enum": [
|
|
0,
|
|
1,
|
|
2,
|
|
3,
|
|
4
|
|
],
|
|
"type": "integer",
|
|
"description": "Who created/manages the list. Non-Kavita lists are not editable by the user, except to promote",
|
|
"format": "int32"
|
|
},
|
|
"sourceUrl": {
|
|
"type": "string",
|
|
"description": "For Non-Kavita sourced collections, the url to sync from",
|
|
"nullable": true
|
|
},
|
|
"totalSourceCount": {
|
|
"type": "integer",
|
|
"description": "Total number of items as of the last sync. Not applicable for Kavita managed collections.",
|
|
"format": "int32"
|
|
},
|
|
"missingSeriesFromSource": {
|
|
"type": "string",
|
|
"description": "A \n separated string of all missing series",
|
|
"nullable": true
|
|
}
|
|
},
|
|
"additionalProperties": false
|
|
},
|
|
"AppUserOpdsPreferences": {
|
|
"type": "object",
|
|
"properties": {
|
|
"embedProgressIndicator": {
|
|
"type": "boolean",
|
|
"description": "Embed Progress Indicator in Title"
|
|
},
|
|
"includeContinueFrom": {
|
|
"type": "boolean",
|
|
"description": "Insert a \"Continue From X\" entry in OPDS fields to avoid finding your last reading point (Emulates Kavita's Continue button)"
|
|
}
|
|
},
|
|
"additionalProperties": false
|
|
},
|
|
"AppUserSocialPreferences": {
|
|
"type": "object",
|
|
"properties": {
|
|
"shareReviews": {
|
|
"type": "boolean",
|
|
"description": "UI Site Global Setting: Should series reviews be shared with all users in the server"
|
|
},
|
|
"shareAnnotations": {
|
|
"type": "boolean",
|
|
"description": "UI Site Global Setting: Share your annotations with other users"
|
|
},
|
|
"viewOtherAnnotations": {
|
|
"type": "boolean",
|
|
"description": "UI Site Global Setting: See other users' annotations while reading"
|
|
},
|
|
"socialLibraries": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
},
|
|
"description": "UI Site Global Setting: For which libraries should social features be enabled",
|
|
"nullable": true
|
|
},
|
|
"socialMaxAgeRating": {
|
|
"enum": [
|
|
0,
|
|
1,
|
|
2,
|
|
3,
|
|
4,
|
|
5,
|
|
6,
|
|
7,
|
|
8,
|
|
9,
|
|
10,
|
|
11,
|
|
12,
|
|
13,
|
|
14,
|
|
-1
|
|
],
|
|
"type": "integer",
|
|
"description": "UI Site Global Setting: Highest age rating for which social features are enabled",
|
|
"format": "int32"
|
|
},
|
|
"socialIncludeUnknowns": {
|
|
"type": "boolean",
|
|
"description": "UI Site Global Setting: Enable social features for unknown age ratings"
|
|
},
|
|
"shareProfile": {
|
|
"type": "boolean",
|
|
"description": "UI Site Global Setting: Enable sharing of Profile with other users"
|
|
}
|
|
},
|
|
"additionalProperties": false
|
|
},
|
|
"AuthKeyDto": {
|
|
"required": [
|
|
"key",
|
|
"name"
|
|
],
|
|
"type": "object",
|
|
"properties": {
|
|
"id": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
},
|
|
"key": {
|
|
"type": "string",
|
|
"description": "Actual key",
|
|
"nullable": true
|
|
},
|
|
"name": {
|
|
"type": "string",
|
|
"description": "Name of the key",
|
|
"nullable": true
|
|
},
|
|
"createdAtUtc": {
|
|
"type": "string",
|
|
"format": "date-time"
|
|
},
|
|
"expiresAtUtc": {
|
|
"type": "string",
|
|
"description": "An Optional time which the Key expires",
|
|
"format": "date-time",
|
|
"nullable": true
|
|
},
|
|
"lastAccessedAtUtc": {
|
|
"type": "string",
|
|
"format": "date-time",
|
|
"nullable": true
|
|
},
|
|
"provider": {
|
|
"enum": [
|
|
0,
|
|
1
|
|
],
|
|
"type": "integer",
|
|
"description": "Kavita will have a short-lived key",
|
|
"format": "int32"
|
|
}
|
|
},
|
|
"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",
|
|
"description": "Name of the Chapter",
|
|
"nullable": true
|
|
},
|
|
"part": {
|
|
"type": "string",
|
|
"description": "A part represents the id of the anchor so we can scroll to it. 01_values.xhtml#h_sVZPaxUSy/",
|
|
"nullable": true
|
|
},
|
|
"page": {
|
|
"type": "integer",
|
|
"description": "Page Number to load for the chapter",
|
|
"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",
|
|
"description": "Represents the format of the file",
|
|
"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",
|
|
"description": "Only applicable for Epubs",
|
|
"format": "int32"
|
|
},
|
|
"xPath": {
|
|
"type": "string",
|
|
"description": "Only applicable for Epubs",
|
|
"nullable": true
|
|
},
|
|
"series": {
|
|
"$ref": "#/components/schemas/SeriesDto"
|
|
},
|
|
"chapterTitle": {
|
|
"type": "string",
|
|
"description": "Not required, will be filled out at API before saving to the DB",
|
|
"nullable": true
|
|
}
|
|
},
|
|
"additionalProperties": false
|
|
},
|
|
"BookmarkInfoDto": {
|
|
"type": "object",
|
|
"properties": {
|
|
"seriesName": {
|
|
"type": "string",
|
|
"nullable": true
|
|
},
|
|
"seriesFormat": {
|
|
"enum": [
|
|
0,
|
|
1,
|
|
2,
|
|
3,
|
|
4
|
|
],
|
|
"type": "integer",
|
|
"description": "Represents the format of the file",
|
|
"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"
|
|
},
|
|
"description": "List of all files with their inner archive structure maintained in filename and dimensions",
|
|
"nullable": true
|
|
},
|
|
"doublePairs": {
|
|
"type": "object",
|
|
"additionalProperties": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
},
|
|
"description": "For Double Page reader, this will contain snap points to ensure the reader always resumes on correct page",
|
|
"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",
|
|
"description": "Not used - For parity with Series Filter",
|
|
"format": "int32"
|
|
},
|
|
"name": {
|
|
"type": "string",
|
|
"description": "Not used - For parity with Series Filter",
|
|
"nullable": true
|
|
},
|
|
"statements": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/components/schemas/AnnotationFilterStatementDto"
|
|
},
|
|
"nullable": true
|
|
},
|
|
"combination": {
|
|
"enum": [
|
|
0,
|
|
1
|
|
],
|
|
"type": "integer",
|
|
"format": "int32"
|
|
},
|
|
"sortOptions": {
|
|
"$ref": "#/components/schemas/AnnotationSortOptions"
|
|
},
|
|
"limitTo": {
|
|
"type": "integer",
|
|
"description": "Limit the number of rows returned. Defaults to not applying a limit (aka 0)",
|
|
"format": "int32"
|
|
}
|
|
},
|
|
"additionalProperties": false
|
|
},
|
|
"BrowseGenreDto": {
|
|
"required": [
|
|
"title"
|
|
],
|
|
"type": "object",
|
|
"properties": {
|
|
"id": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
},
|
|
"title": {
|
|
"type": "string",
|
|
"nullable": true
|
|
},
|
|
"seriesCount": {
|
|
"type": "integer",
|
|
"description": "Number of Series this Entity is on",
|
|
"format": "int32"
|
|
},
|
|
"chapterCount": {
|
|
"type": "integer",
|
|
"description": "Number of Chapters this Entity is on",
|
|
"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",
|
|
"description": "ASIN for person",
|
|
"nullable": true
|
|
},
|
|
"aniListId": {
|
|
"type": "integer",
|
|
"description": "https://anilist.co/staff/{AniListId}/",
|
|
"format": "int32"
|
|
},
|
|
"malId": {
|
|
"type": "integer",
|
|
"description": "https://myanimelist.net/people/{MalId}/\nhttps://myanimelist.net/character/{MalId}/CharacterName",
|
|
"format": "int64"
|
|
},
|
|
"hardcoverId": {
|
|
"type": "string",
|
|
"description": "https://hardcover.app/authors/{HardcoverId}",
|
|
"nullable": true
|
|
},
|
|
"webLinks": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "string"
|
|
},
|
|
"description": "Web links derived from the various id of external websites",
|
|
"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"
|
|
},
|
|
"description": "All roles as if returned by the /api/person/roles endpoint",
|
|
"nullable": true
|
|
},
|
|
"seriesCount": {
|
|
"type": "integer",
|
|
"description": "Number of Series this Person is the Writer for",
|
|
"format": "int32"
|
|
},
|
|
"chapterCount": {
|
|
"type": "integer",
|
|
"description": "Number of Issues this Person is the Writer for",
|
|
"format": "int32"
|
|
}
|
|
},
|
|
"additionalProperties": false,
|
|
"description": "Used to browse writers and click in to see their series"
|
|
},
|
|
"BrowsePersonFilterDto": {
|
|
"type": "object",
|
|
"properties": {
|
|
"id": {
|
|
"type": "integer",
|
|
"description": "Not used - For parity with Series Filter",
|
|
"format": "int32"
|
|
},
|
|
"name": {
|
|
"type": "string",
|
|
"description": "Not used - For parity with Series Filter",
|
|
"nullable": true
|
|
},
|
|
"statements": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/components/schemas/PersonFilterStatementDto"
|
|
},
|
|
"nullable": true
|
|
},
|
|
"combination": {
|
|
"enum": [
|
|
0,
|
|
1
|
|
],
|
|
"type": "integer",
|
|
"format": "int32"
|
|
},
|
|
"sortOptions": {
|
|
"$ref": "#/components/schemas/PersonSortOptions"
|
|
},
|
|
"limitTo": {
|
|
"type": "integer",
|
|
"description": "Limit the number of rows returned. Defaults to not applying a limit (aka 0)",
|
|
"format": "int32"
|
|
}
|
|
},
|
|
"additionalProperties": false
|
|
},
|
|
"BrowseTagDto": {
|
|
"required": [
|
|
"title"
|
|
],
|
|
"type": "object",
|
|
"properties": {
|
|
"id": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
},
|
|
"title": {
|
|
"type": "string",
|
|
"nullable": true
|
|
},
|
|
"seriesCount": {
|
|
"type": "integer",
|
|
"description": "Number of Series this Entity is on",
|
|
"format": "int32"
|
|
},
|
|
"chapterCount": {
|
|
"type": "integer",
|
|
"description": "Number of Chapters this Entity is on",
|
|
"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
|
|
},
|
|
"BulkRemoveBookmarkForSeriesDto": {
|
|
"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
|
|
},
|
|
"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"
|
|
},
|
|
"description": "The files that represent this Chapter",
|
|
"nullable": true
|
|
},
|
|
"pagesRead": {
|
|
"type": "integer",
|
|
"description": "Calculated at API time. Number of pages read for this Chapter for logged-in user.",
|
|
"format": "int32"
|
|
},
|
|
"totalReads": {
|
|
"type": "integer",
|
|
"description": "Total number of complete reads",
|
|
"format": "int32"
|
|
},
|
|
"lastReadingProgressUtc": {
|
|
"type": "string",
|
|
"description": "The last time a chapter was read by current authenticated user",
|
|
"format": "date-time"
|
|
},
|
|
"lastReadingProgress": {
|
|
"type": "string",
|
|
"description": "The last time a chapter was read by current authenticated user",
|
|
"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",
|
|
"description": "Represents Age Rating for content.",
|
|
"format": "int32"
|
|
},
|
|
"wordCount": {
|
|
"type": "integer",
|
|
"format": "int64"
|
|
},
|
|
"volumeTitle": {
|
|
"type": "string",
|
|
"description": "Formatted Volume title ie) Volume 2.",
|
|
"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"
|
|
},
|
|
"description": "Collection of all Tags from underlying chapters for a Series",
|
|
"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
|
|
}
|
|
},
|
|
"additionalProperties": false,
|
|
"description": "A Chapter is the lowest grouping of a reading medium. A Chapter contains a set of MangaFiles which represents the underlying\nfile (abstracted from type)."
|
|
},
|
|
"ChapterInfoDto": {
|
|
"type": "object",
|
|
"properties": {
|
|
"chapterNumber": {
|
|
"type": "string",
|
|
"description": "The Chapter Number",
|
|
"nullable": true
|
|
},
|
|
"volumeNumber": {
|
|
"type": "string",
|
|
"description": "The Volume Number",
|
|
"nullable": true
|
|
},
|
|
"volumeId": {
|
|
"type": "integer",
|
|
"description": "Volume entity Id",
|
|
"format": "int32"
|
|
},
|
|
"seriesName": {
|
|
"type": "string",
|
|
"description": "Series Name",
|
|
"nullable": true
|
|
},
|
|
"seriesFormat": {
|
|
"enum": [
|
|
0,
|
|
1,
|
|
2,
|
|
3,
|
|
4
|
|
],
|
|
"type": "integer",
|
|
"description": "Series Format",
|
|
"format": "int32"
|
|
},
|
|
"seriesId": {
|
|
"type": "integer",
|
|
"description": "Series entity Id",
|
|
"format": "int32"
|
|
},
|
|
"libraryId": {
|
|
"type": "integer",
|
|
"description": "Library entity Id",
|
|
"format": "int32"
|
|
},
|
|
"libraryType": {
|
|
"enum": [
|
|
0,
|
|
1,
|
|
2,
|
|
3,
|
|
4,
|
|
5
|
|
],
|
|
"type": "integer",
|
|
"description": "Library type",
|
|
"format": "int32"
|
|
},
|
|
"chapterTitle": {
|
|
"type": "string",
|
|
"description": "Chapter's title if set via ComicInfo.xml (Title field)",
|
|
"nullable": true
|
|
},
|
|
"pages": {
|
|
"type": "integer",
|
|
"description": "Total Number of pages in this Chapter",
|
|
"format": "int32"
|
|
},
|
|
"fileName": {
|
|
"type": "string",
|
|
"description": "File name of the chapter",
|
|
"nullable": true
|
|
},
|
|
"isSpecial": {
|
|
"type": "boolean",
|
|
"description": "If this is marked as a special in Kavita"
|
|
},
|
|
"subtitle": {
|
|
"type": "string",
|
|
"description": "The subtitle to render on the reader",
|
|
"nullable": true
|
|
},
|
|
"title": {
|
|
"type": "string",
|
|
"description": "Series Title",
|
|
"nullable": true
|
|
},
|
|
"seriesTotalPages": {
|
|
"type": "integer",
|
|
"description": "Total pages for the series",
|
|
"format": "int32"
|
|
},
|
|
"seriesTotalPagesRead": {
|
|
"type": "integer",
|
|
"description": "Total pages read for the series",
|
|
"format": "int32"
|
|
},
|
|
"pageDimensions": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/components/schemas/FileDimensionDto"
|
|
},
|
|
"description": "List of all files with their inner archive structure maintained in filename and dimensions",
|
|
"nullable": true
|
|
},
|
|
"doublePairs": {
|
|
"type": "object",
|
|
"additionalProperties": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
},
|
|
"description": "For Double Page reader, this will contain snap points to ensure the reader always resumes on correct page",
|
|
"nullable": true
|
|
}
|
|
},
|
|
"additionalProperties": false,
|
|
"description": "Information about the Chapter for the Reader to render"
|
|
},
|
|
"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"
|
|
},
|
|
"description": "Collection of all Tags from underlying chapters for a Series",
|
|
"nullable": true
|
|
},
|
|
"ageRating": {
|
|
"enum": [
|
|
0,
|
|
1,
|
|
2,
|
|
3,
|
|
4,
|
|
5,
|
|
6,
|
|
7,
|
|
8,
|
|
9,
|
|
10,
|
|
11,
|
|
12,
|
|
13,
|
|
14,
|
|
-1
|
|
],
|
|
"type": "integer",
|
|
"description": "Represents Age Rating for content.",
|
|
"format": "int32"
|
|
},
|
|
"releaseDate": {
|
|
"type": "string",
|
|
"nullable": true
|
|
},
|
|
"publicationStatus": {
|
|
"enum": [
|
|
0,
|
|
1,
|
|
2,
|
|
3,
|
|
4
|
|
],
|
|
"type": "integer",
|
|
"format": "int32"
|
|
},
|
|
"summary": {
|
|
"type": "string",
|
|
"description": "Summary for the Chapter/Issue",
|
|
"nullable": true
|
|
},
|
|
"language": {
|
|
"type": "string",
|
|
"description": "Language for the Chapter/Issue",
|
|
"nullable": true
|
|
},
|
|
"count": {
|
|
"type": "integer",
|
|
"description": "Number in the TotalCount of issues",
|
|
"format": "int32"
|
|
},
|
|
"totalCount": {
|
|
"type": "integer",
|
|
"description": "Total number of issues for the series",
|
|
"format": "int32"
|
|
},
|
|
"wordCount": {
|
|
"type": "integer",
|
|
"description": "Number of Words for this chapter. Only applies to Epub",
|
|
"format": "int64"
|
|
}
|
|
},
|
|
"additionalProperties": false,
|
|
"description": "Exclusively metadata about a given chapter"
|
|
},
|
|
"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",
|
|
"description": "User-friendly name, defaults to generated name like \"Chrome on Windows\"",
|
|
"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",
|
|
"description": "Raw User-Agent string from request header",
|
|
"nullable": true
|
|
},
|
|
"ipAddress": {
|
|
"type": "string",
|
|
"description": "Client IP address (respecting X-Forwarded-For if present)",
|
|
"nullable": true
|
|
},
|
|
"authType": {
|
|
"enum": [
|
|
0,
|
|
1,
|
|
2,
|
|
3
|
|
],
|
|
"type": "integer",
|
|
"description": "How the user authenticated (JWT token vs API key)",
|
|
"format": "int32"
|
|
},
|
|
"clientType": {
|
|
"enum": [
|
|
0,
|
|
1,
|
|
2,
|
|
3,
|
|
4,
|
|
5,
|
|
6
|
|
],
|
|
"type": "integer",
|
|
"description": "Parsed client type from User-Agent or custom Kavita header\nExamples: Web App, OPDS Reader, KOReader, Tachiyomi, etc.",
|
|
"format": "int32"
|
|
},
|
|
"appVersion": {
|
|
"type": "string",
|
|
"description": "Application version (from web app or mobile app)",
|
|
"nullable": true
|
|
},
|
|
"browser": {
|
|
"type": "string",
|
|
"description": "Browser name (Chrome, Firefox, Safari, Edge) - Web clients only",
|
|
"nullable": true
|
|
},
|
|
"browserVersion": {
|
|
"type": "string",
|
|
"description": "Browser version - Web clients only",
|
|
"nullable": true
|
|
},
|
|
"platform": {
|
|
"enum": [
|
|
0,
|
|
1,
|
|
2,
|
|
3,
|
|
4,
|
|
5
|
|
],
|
|
"type": "integer",
|
|
"description": "Platform/OS (Windows, macOS, Linux, iOS, Android)",
|
|
"format": "int32"
|
|
},
|
|
"deviceType": {
|
|
"type": "string",
|
|
"description": "Device type (Desktop, Mobile, Tablet)",
|
|
"nullable": true
|
|
},
|
|
"screenWidth": {
|
|
"type": "integer",
|
|
"description": "Screen width in pixels - Web clients only",
|
|
"format": "int32",
|
|
"nullable": true
|
|
},
|
|
"screenHeight": {
|
|
"type": "integer",
|
|
"description": "Screen height in pixels - Web clients only",
|
|
"format": "int32",
|
|
"nullable": true
|
|
},
|
|
"orientation": {
|
|
"type": "string",
|
|
"description": "Screen orientation (portrait, landscape) - Web clients only",
|
|
"nullable": true
|
|
}
|
|
},
|
|
"additionalProperties": false
|
|
},
|
|
"CollectionTagBulkAddDto": {
|
|
"type": "object",
|
|
"properties": {
|
|
"collectionTagId": {
|
|
"type": "integer",
|
|
"description": "Collection Tag Id",
|
|
"format": "int32"
|
|
},
|
|
"collectionTagTitle": {
|
|
"type": "string",
|
|
"nullable": true
|
|
},
|
|
"seriesIds": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
},
|
|
"description": "Series Ids to add onto Collection Tag",
|
|
"nullable": true
|
|
}
|
|
},
|
|
"additionalProperties": false
|
|
},
|
|
"ColorScapeDto": {
|
|
"type": "object",
|
|
"properties": {
|
|
"primary": {
|
|
"type": "string",
|
|
"nullable": true
|
|
},
|
|
"secondary": {
|
|
"type": "string",
|
|
"nullable": true
|
|
}
|
|
},
|
|
"additionalProperties": false,
|
|
"description": "A set of colors for the color scape system in the UI"
|
|
},
|
|
"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",
|
|
"description": "Include copying over the type"
|
|
}
|
|
},
|
|
"additionalProperties": false
|
|
},
|
|
"CreateEmailDeviceDto": {
|
|
"required": [
|
|
"emailAddress",
|
|
"name",
|
|
"platform"
|
|
],
|
|
"type": "object",
|
|
"properties": {
|
|
"name": {
|
|
"minLength": 1,
|
|
"type": "string"
|
|
},
|
|
"platform": {
|
|
"enum": [
|
|
0,
|
|
1,
|
|
2,
|
|
3
|
|
],
|
|
"type": "integer",
|
|
"description": "Platform of the device. If not know, defaults to \"Custom\"",
|
|
"format": "int32"
|
|
},
|
|
"emailAddress": {
|
|
"minLength": 1,
|
|
"type": "string"
|
|
}
|
|
},
|
|
"additionalProperties": false
|
|
},
|
|
"CreatePersonalToCDto": {
|
|
"required": [
|
|
"chapterId",
|
|
"libraryId",
|
|
"pageNumber",
|
|
"seriesId",
|
|
"title",
|
|
"volumeId"
|
|
],
|
|
"type": "object",
|
|
"properties": {
|
|
"chapterId": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
},
|
|
"volumeId": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
},
|
|
"seriesId": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
},
|
|
"libraryId": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
},
|
|
"pageNumber": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
},
|
|
"title": {
|
|
"type": "string",
|
|
"nullable": true
|
|
},
|
|
"bookScrollId": {
|
|
"type": "string",
|
|
"nullable": true
|
|
},
|
|
"selectedText": {
|
|
"type": "string",
|
|
"nullable": true
|
|
}
|
|
},
|
|
"additionalProperties": false
|
|
},
|
|
"CreateReadingListDto": {
|
|
"type": "object",
|
|
"properties": {
|
|
"title": {
|
|
"type": "string",
|
|
"nullable": true
|
|
}
|
|
},
|
|
"additionalProperties": false
|
|
},
|
|
"DashboardStreamDto": {
|
|
"required": [
|
|
"name"
|
|
],
|
|
"type": "object",
|
|
"properties": {
|
|
"id": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
},
|
|
"name": {
|
|
"type": "string",
|
|
"nullable": true
|
|
},
|
|
"isProvided": {
|
|
"type": "boolean",
|
|
"description": "Is System Provided"
|
|
},
|
|
"order": {
|
|
"type": "integer",
|
|
"description": "Sort Order on the Dashboard",
|
|
"format": "int32"
|
|
},
|
|
"smartFilterEncoded": {
|
|
"type": "string",
|
|
"description": "If Not IsProvided, the appropriate smart filter",
|
|
"nullable": true
|
|
},
|
|
"smartFilterId": {
|
|
"type": "integer",
|
|
"format": "int32",
|
|
"nullable": true
|
|
},
|
|
"streamType": {
|
|
"enum": [
|
|
1,
|
|
2,
|
|
3,
|
|
4,
|
|
5
|
|
],
|
|
"type": "integer",
|
|
"description": "For system provided",
|
|
"format": "int32"
|
|
},
|
|
"visible": {
|
|
"type": "boolean"
|
|
}
|
|
},
|
|
"additionalProperties": false
|
|
},
|
|
"DateTimeStatCountWithFormat": {
|
|
"type": "object",
|
|
"properties": {
|
|
"value": {
|
|
"type": "string",
|
|
"description": "The day of the readings",
|
|
"format": "date-time"
|
|
},
|
|
"count": {
|
|
"type": "integer",
|
|
"description": "Number of pages read",
|
|
"format": "int64"
|
|
},
|
|
"format": {
|
|
"enum": [
|
|
0,
|
|
1,
|
|
2,
|
|
3,
|
|
4
|
|
],
|
|
"type": "integer",
|
|
"description": "Format of those files",
|
|
"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,
|
|
"description": "For requesting an encoded filter to be decoded"
|
|
},
|
|
"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",
|
|
"description": "Name of the directory",
|
|
"nullable": true
|
|
},
|
|
"fullPath": {
|
|
"type": "string",
|
|
"description": "Full Directory Path",
|
|
"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",
|
|
"description": "Theme Name",
|
|
"nullable": true
|
|
},
|
|
"cssUrl": {
|
|
"type": "string",
|
|
"description": "Url to download css file",
|
|
"nullable": true
|
|
},
|
|
"cssFile": {
|
|
"type": "string",
|
|
"nullable": true
|
|
},
|
|
"previewUrls": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "string"
|
|
},
|
|
"description": "Url to preview image",
|
|
"nullable": true
|
|
},
|
|
"alreadyDownloaded": {
|
|
"type": "boolean",
|
|
"description": "If Already downloaded"
|
|
},
|
|
"sha": {
|
|
"type": "string",
|
|
"description": "Sha of the file",
|
|
"nullable": true
|
|
},
|
|
"path": {
|
|
"type": "string",
|
|
"description": "Path of the Folder the files reside in",
|
|
"nullable": true
|
|
},
|
|
"author": {
|
|
"type": "string",
|
|
"description": "Author of the theme",
|
|
"nullable": true
|
|
},
|
|
"lastCompatibleVersion": {
|
|
"type": "string",
|
|
"description": "Last version tested against",
|
|
"nullable": true
|
|
},
|
|
"isCompatible": {
|
|
"type": "boolean",
|
|
"description": "If version compatible with version"
|
|
},
|
|
"description": {
|
|
"type": "string",
|
|
"description": "Small blurb about the Theme",
|
|
"nullable": true
|
|
}
|
|
},
|
|
"additionalProperties": false
|
|
},
|
|
"EmailDeviceDto": {
|
|
"type": "object",
|
|
"properties": {
|
|
"id": {
|
|
"type": "integer",
|
|
"description": "The device Id",
|
|
"format": "int32"
|
|
},
|
|
"name": {
|
|
"type": "string",
|
|
"description": "A name given to this device",
|
|
"nullable": true,
|
|
"example": "Pixel 3a, John's Kindle"
|
|
},
|
|
"emailAddress": {
|
|
"type": "string",
|
|
"description": "An email address associated with the device (ie Kindle). Will be used with Send to functionality",
|
|
"nullable": true
|
|
},
|
|
"platform": {
|
|
"enum": [
|
|
0,
|
|
1,
|
|
2,
|
|
3
|
|
],
|
|
"type": "integer",
|
|
"description": "Platform (ie) Windows 10",
|
|
"format": "int32"
|
|
}
|
|
},
|
|
"additionalProperties": false,
|
|
"description": "A Device is an entity that can receive data from Kavita (kindle)"
|
|
},
|
|
"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,
|
|
"description": "Represents if Test Email Service URL was successful or not and if any error occured"
|
|
},
|
|
"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,
|
|
"description": "Information about an individual issue/chapter/book from Kavita+"
|
|
},
|
|
"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",
|
|
"description": "Represents PlusMediaFormat",
|
|
"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
|
|
],
|
|
"type": "integer",
|
|
"description": "Misleading name but is the source of data (like a review coming from AniList)",
|
|
"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"
|
|
},
|
|
"description": "Only from CBR for API.Services.Plus.ScrobbleProvider.Cbr. Full metadata about issues",
|
|
"nullable": true
|
|
}
|
|
},
|
|
"additionalProperties": false,
|
|
"description": "This is AniListSeries"
|
|
},
|
|
"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
|
|
],
|
|
"type": "integer",
|
|
"description": "Misleading name but is the source of data (like a review coming from AniList)",
|
|
"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"
|
|
},
|
|
"description": "Do not allow any Genre/Tag in this list to be written to Kavita",
|
|
"nullable": true
|
|
},
|
|
"whitelist": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "string"
|
|
},
|
|
"description": "Only allow these Tags to be written to Kavita",
|
|
"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",
|
|
"description": "Represents Age Rating for content.",
|
|
"format": "int32"
|
|
},
|
|
"description": "Any Genres or Tags that if present, will trigger an Age Rating Override. Highest rating will be prioritized for matching.",
|
|
"nullable": true
|
|
},
|
|
"fieldMappings": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/components/schemas/MetadataFieldMappingDto"
|
|
},
|
|
"description": "A list of rules that allow mapping a genre/tag to another genre/tag",
|
|
"nullable": true
|
|
}
|
|
},
|
|
"additionalProperties": false,
|
|
"description": "Decoupled from API.DTOs.KavitaPlus.Metadata.MetadataSettingsDto to allow reuse without requiring the full metadata settings in\nAPI.DTOs.Settings.ImportFieldMappingsDto"
|
|
},
|
|
"FieldMappingsImportResultDto": {
|
|
"type": "object",
|
|
"properties": {
|
|
"success": {
|
|
"type": "boolean"
|
|
},
|
|
"resultingMetadataSettings": {
|
|
"$ref": "#/components/schemas/MetadataSettingsDto"
|
|
},
|
|
"ageRatingConflicts": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "string"
|
|
},
|
|
"description": "Keys of the conflicting age ratings mappings",
|
|
"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",
|
|
"description": "The filename of the cached file. If this was nested in a subfolder, the foldername will be appended with _",
|
|
"nullable": true,
|
|
"example": "chapter01_page01.png"
|
|
},
|
|
"isWide": {
|
|
"type": "boolean"
|
|
}
|
|
},
|
|
"additionalProperties": false
|
|
},
|
|
"FileExtensionBreakdownDto": {
|
|
"type": "object",
|
|
"properties": {
|
|
"totalFileSize": {
|
|
"type": "integer",
|
|
"description": "Total bytes for all files",
|
|
"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",
|
|
"description": "Represents the format of the file",
|
|
"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",
|
|
"description": "Represents the format of the file",
|
|
"format": "int32"
|
|
},
|
|
"description": "The type of Formats you want to be returned. An empty list will return all formats back",
|
|
"nullable": true
|
|
},
|
|
"readStatus": {
|
|
"$ref": "#/components/schemas/ReadStatus"
|
|
},
|
|
"libraries": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
},
|
|
"description": "A list of library ids to restrict search to. Defaults to all libraries by passing empty list",
|
|
"nullable": true
|
|
},
|
|
"genres": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
},
|
|
"description": "A list of Genre ids to restrict search to. Defaults to all genres by passing an empty list",
|
|
"nullable": true
|
|
},
|
|
"writers": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
},
|
|
"description": "A list of Writers to restrict search to. Defaults to all Writers by passing an empty list",
|
|
"nullable": true
|
|
},
|
|
"penciller": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
},
|
|
"description": "A list of Penciller ids to restrict search to. Defaults to all Pencillers by passing an empty list",
|
|
"nullable": true
|
|
},
|
|
"inker": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
},
|
|
"description": "A list of Inker ids to restrict search to. Defaults to all Inkers by passing an empty list",
|
|
"nullable": true
|
|
},
|
|
"colorist": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
},
|
|
"description": "A list of Colorist ids to restrict search to. Defaults to all Colorists by passing an empty list",
|
|
"nullable": true
|
|
},
|
|
"letterer": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
},
|
|
"description": "A list of Letterer ids to restrict search to. Defaults to all Letterers by passing an empty list",
|
|
"nullable": true
|
|
},
|
|
"coverArtist": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
},
|
|
"description": "A list of CoverArtist ids to restrict search to. Defaults to all CoverArtists by passing an empty list",
|
|
"nullable": true
|
|
},
|
|
"editor": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
},
|
|
"description": "A list of Editor ids to restrict search to. Defaults to all Editors by passing an empty list",
|
|
"nullable": true
|
|
},
|
|
"publisher": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
},
|
|
"description": "A list of Publisher ids to restrict search to. Defaults to all Publishers by passing an empty list",
|
|
"nullable": true
|
|
},
|
|
"character": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
},
|
|
"description": "A list of Character ids to restrict search to. Defaults to all Characters by passing an empty list",
|
|
"nullable": true
|
|
},
|
|
"translators": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
},
|
|
"description": "A list of Translator ids to restrict search to. Defaults to all Translatorss by passing an empty list",
|
|
"nullable": true
|
|
},
|
|
"collectionTags": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
},
|
|
"description": "A list of Collection Tag ids to restrict search to. Defaults to all Collection Tags by passing an empty list",
|
|
"nullable": true
|
|
},
|
|
"tags": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
},
|
|
"description": "A list of Tag ids to restrict search to. Defaults to all Tags by passing an empty list",
|
|
"nullable": true
|
|
},
|
|
"rating": {
|
|
"type": "integer",
|
|
"description": "Will return back everything with the rating and above\nAPI.Entities.AppUserRating.Rating",
|
|
"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",
|
|
"description": "Represents Age Rating for content.",
|
|
"format": "int32"
|
|
},
|
|
"description": "Age Ratings. Empty list will return everything back",
|
|
"nullable": true
|
|
},
|
|
"languages": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "string"
|
|
},
|
|
"description": "Languages (ISO 639-1 code) to filter by. Empty list will return everything back",
|
|
"nullable": true
|
|
},
|
|
"publicationStatus": {
|
|
"type": "array",
|
|
"items": {
|
|
"enum": [
|
|
0,
|
|
1,
|
|
2,
|
|
3,
|
|
4
|
|
],
|
|
"type": "integer",
|
|
"format": "int32"
|
|
},
|
|
"description": "Publication statuses to filter by. Empty list will return everything back",
|
|
"nullable": true
|
|
},
|
|
"seriesNameQuery": {
|
|
"type": "string",
|
|
"description": "An optional name string to filter by. Empty string will ignore.",
|
|
"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",
|
|
"description": "Represents the field which will dictate the value type and the Extension used for filtering",
|
|
"format": "int32"
|
|
},
|
|
"value": {
|
|
"type": "string",
|
|
"nullable": true
|
|
}
|
|
},
|
|
"additionalProperties": false
|
|
},
|
|
"FilterV2Dto": {
|
|
"type": "object",
|
|
"properties": {
|
|
"id": {
|
|
"type": "integer",
|
|
"description": "Not used in the UI.",
|
|
"format": "int32"
|
|
},
|
|
"name": {
|
|
"type": "string",
|
|
"description": "The name of the filter",
|
|
"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",
|
|
"description": "Limit the number of rows returned. Defaults to not applying a limit (aka 0)",
|
|
"format": "int32"
|
|
}
|
|
},
|
|
"additionalProperties": false,
|
|
"description": "Metadata filtering for v2 API only"
|
|
},
|
|
"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,
|
|
"description": "A full progress Record from the DB (not all data, only what's needed for API)"
|
|
},
|
|
"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
|
|
},
|
|
"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",
|
|
"description": "Min hours to read the selection",
|
|
"format": "int32"
|
|
},
|
|
"maxHours": {
|
|
"type": "integer",
|
|
"description": "Max hours to read the selection",
|
|
"format": "int32"
|
|
},
|
|
"avgHours": {
|
|
"type": "number",
|
|
"description": "Estimated average hours to read the selection",
|
|
"format": "float"
|
|
}
|
|
},
|
|
"additionalProperties": false,
|
|
"description": "A range of time to read a selection (series, chapter, etc)"
|
|
},
|
|
"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",
|
|
"description": "How Kavita should import the new settings",
|
|
"format": "int32"
|
|
},
|
|
"resolution": {
|
|
"enum": [
|
|
0,
|
|
1,
|
|
2
|
|
],
|
|
"type": "integer",
|
|
"description": "Default conflict resolution, override with API.DTOs.ImportSettingsDto.AgeRatingConflictResolutions and !:FieldMappingsConflictResolutions",
|
|
"format": "int32"
|
|
},
|
|
"whitelist": {
|
|
"type": "boolean",
|
|
"description": "Import !:MetadataSettingsDto.Whitelist"
|
|
},
|
|
"blacklist": {
|
|
"type": "boolean",
|
|
"description": "Import !:MetadataSettingsDto.Blacklist"
|
|
},
|
|
"ageRatings": {
|
|
"type": "boolean",
|
|
"description": "Import !:MetadataSettingsDto.AgeRatingMappings"
|
|
},
|
|
"fieldMappings": {
|
|
"type": "boolean",
|
|
"description": "Import !:MetadataSettingsDto.FieldMappings"
|
|
},
|
|
"ageRatingConflictResolutions": {
|
|
"type": "object",
|
|
"additionalProperties": {
|
|
"enum": [
|
|
0,
|
|
1,
|
|
2
|
|
],
|
|
"type": "integer",
|
|
"description": "How Kavita should resolve conflicts",
|
|
"format": "int32"
|
|
},
|
|
"description": "Override the API.DTOs.ImportSettingsDto.Resolution for specific age ratings",
|
|
"nullable": true
|
|
}
|
|
},
|
|
"additionalProperties": false
|
|
},
|
|
"Int32Range": {
|
|
"type": "object",
|
|
"properties": {
|
|
"min": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
},
|
|
"max": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
}
|
|
},
|
|
"additionalProperties": false,
|
|
"description": "Represents a range between two int/float/double"
|
|
},
|
|
"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"
|
|
},
|
|
"description": "List of Roles to assign to user. If admin not present, Pleb will be applied.\nIf admin present, all libraries will be granted access and will ignore those from DTO.",
|
|
"nullable": true
|
|
},
|
|
"libraries": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
},
|
|
"description": "A list of libraries to grant access to",
|
|
"nullable": true
|
|
},
|
|
"ageRestriction": {
|
|
"$ref": "#/components/schemas/AgeRestrictionDto"
|
|
}
|
|
},
|
|
"additionalProperties": false
|
|
},
|
|
"InviteUserResponse": {
|
|
"type": "object",
|
|
"properties": {
|
|
"emailLink": {
|
|
"type": "string",
|
|
"description": "Email link used to setup the user account",
|
|
"nullable": true
|
|
},
|
|
"emailSent": {
|
|
"type": "boolean",
|
|
"description": "Was an email sent (ie is this server accessible)"
|
|
},
|
|
"invalidEmail": {
|
|
"type": "boolean",
|
|
"description": "When a user has an invalid email and is attempting to perform a flow."
|
|
}
|
|
},
|
|
"additionalProperties": false
|
|
},
|
|
"JobDto": {
|
|
"type": "object",
|
|
"properties": {
|
|
"id": {
|
|
"type": "string",
|
|
"description": "Job Id",
|
|
"nullable": true
|
|
},
|
|
"title": {
|
|
"type": "string",
|
|
"description": "Human Readable title for the Job",
|
|
"nullable": true
|
|
},
|
|
"createdAtUtc": {
|
|
"type": "string",
|
|
"description": "When the job was created",
|
|
"format": "date-time",
|
|
"nullable": true
|
|
},
|
|
"lastExecutionUtc": {
|
|
"type": "string",
|
|
"description": "Last time the job was run",
|
|
"format": "date-time",
|
|
"nullable": true
|
|
},
|
|
"cron": {
|
|
"type": "string",
|
|
"nullable": true
|
|
}
|
|
},
|
|
"additionalProperties": false
|
|
},
|
|
"JumpKeyDto": {
|
|
"type": "object",
|
|
"properties": {
|
|
"size": {
|
|
"type": "integer",
|
|
"description": "Number of items in this Key",
|
|
"format": "int32"
|
|
},
|
|
"key": {
|
|
"type": "string",
|
|
"description": "Code to use in URL (url encoded)",
|
|
"nullable": true
|
|
},
|
|
"title": {
|
|
"type": "string",
|
|
"description": "What is visible to user",
|
|
"nullable": true
|
|
}
|
|
},
|
|
"additionalProperties": false,
|
|
"description": "Represents an individual button in a Jump Bar"
|
|
},
|
|
"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",
|
|
"description": "This is the Koreader hash of the book. It is used to identify the book.",
|
|
"nullable": true
|
|
},
|
|
"device_id": {
|
|
"type": "string",
|
|
"description": "A randomly generated id from the koreader device. Only used to maintain the Koreader interface.",
|
|
"nullable": true
|
|
},
|
|
"device": {
|
|
"type": "string",
|
|
"description": "The Koreader device name. Only used to maintain the Koreader interface.",
|
|
"nullable": true
|
|
},
|
|
"percentage": {
|
|
"type": "number",
|
|
"description": "Percent progress of the book. Only used to maintain the Koreader interface.",
|
|
"format": "float"
|
|
},
|
|
"progress": {
|
|
"type": "string",
|
|
"description": "An XPath string read by Koreader to determine the location within the epub.\nEssentially, it is Koreader's equivalent to ProgressDto.BookScrollId.",
|
|
"nullable": true
|
|
},
|
|
"timestamp": {
|
|
"type": "integer",
|
|
"description": "Last Progress in Unix seconds since epoch",
|
|
"format": "int64"
|
|
}
|
|
},
|
|
"additionalProperties": false,
|
|
"description": "This is the interface for receiving and sending updates to Koreader. The only fields\nthat are actually used are the Document and Progress fields."
|
|
},
|
|
"KoreaderProgressUpdateDto": {
|
|
"type": "object",
|
|
"properties": {
|
|
"document": {
|
|
"type": "string",
|
|
"description": "This is the Koreader hash of the book. It is used to identify the book.",
|
|
"nullable": true
|
|
},
|
|
"timestamp": {
|
|
"type": "string",
|
|
"description": "UTC Timestamp to return to KOReader",
|
|
"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
|
|
},
|
|
"lastScanned": {
|
|
"type": "string",
|
|
"description": "Last time Library was scanned",
|
|
"format": "date-time"
|
|
},
|
|
"type": {
|
|
"enum": [
|
|
0,
|
|
1,
|
|
2,
|
|
3,
|
|
4,
|
|
5
|
|
],
|
|
"type": "integer",
|
|
"format": "int32"
|
|
},
|
|
"coverImage": {
|
|
"type": "string",
|
|
"description": "An optional Cover Image or null",
|
|
"nullable": true
|
|
},
|
|
"folderWatching": {
|
|
"type": "boolean",
|
|
"description": "If Folder Watching is enabled for this library"
|
|
},
|
|
"includeInDashboard": {
|
|
"type": "boolean",
|
|
"description": "Include Library series on Dashboard Streams"
|
|
},
|
|
"includeInRecommended": {
|
|
"type": "boolean",
|
|
"description": "Include Library series on Recommended Streams"
|
|
},
|
|
"manageCollections": {
|
|
"type": "boolean",
|
|
"description": "Should this library create and manage collections from Metadata"
|
|
},
|
|
"manageReadingLists": {
|
|
"type": "boolean",
|
|
"description": "Should this library create and manage reading lists from Metadata"
|
|
},
|
|
"includeInSearch": {
|
|
"type": "boolean",
|
|
"description": "Include library series in Search"
|
|
},
|
|
"allowScrobbling": {
|
|
"type": "boolean",
|
|
"description": "Should this library allow Scrobble events to emit from it"
|
|
},
|
|
"folders": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "string"
|
|
},
|
|
"nullable": true
|
|
},
|
|
"collapseSeriesRelationships": {
|
|
"type": "boolean",
|
|
"description": "When showing series, only parent series or series with no relationships will be returned"
|
|
},
|
|
"libraryFileTypes": {
|
|
"type": "array",
|
|
"items": {
|
|
"enum": [
|
|
1,
|
|
2,
|
|
3,
|
|
4
|
|
],
|
|
"type": "integer",
|
|
"description": "Represents a set of file types that can be scanned",
|
|
"format": "int32"
|
|
},
|
|
"description": "The types of file type groups the library will scan for",
|
|
"nullable": true
|
|
},
|
|
"excludePatterns": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "string"
|
|
},
|
|
"description": "A set of globs that will exclude matching content from being scanned",
|
|
"nullable": true
|
|
},
|
|
"allowMetadataMatching": {
|
|
"type": "boolean",
|
|
"description": "Allow any series within this Library to download metadata."
|
|
},
|
|
"enableMetadata": {
|
|
"type": "boolean",
|
|
"description": "Allow Kavita to read metadata (ComicInfo.xml, Epub, PDF)"
|
|
},
|
|
"removePrefixForSortName": {
|
|
"type": "boolean",
|
|
"description": "Should Kavita remove sort articles \"The\" for the sort name"
|
|
},
|
|
"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",
|
|
"description": "If cancelled, will represent cancellation date. If not, will represent repayment date",
|
|
"format": "date-time"
|
|
},
|
|
"isActive": {
|
|
"type": "boolean",
|
|
"description": "If cancelled or not"
|
|
},
|
|
"isCancelled": {
|
|
"type": "boolean",
|
|
"description": "If will be or is cancelled"
|
|
},
|
|
"isValidVersion": {
|
|
"type": "boolean",
|
|
"description": "Is the installed version valid for Kavita+ (aka within 3 releases)"
|
|
},
|
|
"registeredEmail": {
|
|
"type": "string",
|
|
"description": "The email on file",
|
|
"nullable": true
|
|
},
|
|
"totalMonthsSubbed": {
|
|
"type": "integer",
|
|
"description": "Number of months user has been subscribed",
|
|
"format": "int32"
|
|
},
|
|
"hasLicense": {
|
|
"type": "boolean",
|
|
"description": "A license is stored within Kavita"
|
|
},
|
|
"installId": {
|
|
"type": "string",
|
|
"description": "InstallId which can be given to support",
|
|
"nullable": true
|
|
}
|
|
},
|
|
"additionalProperties": false
|
|
},
|
|
"LoginDto": {
|
|
"type": "object",
|
|
"properties": {
|
|
"username": {
|
|
"type": "string",
|
|
"nullable": true
|
|
},
|
|
"password": {
|
|
"type": "string",
|
|
"nullable": true
|
|
},
|
|
"apiKey": {
|
|
"type": "string",
|
|
"description": "If ApiKey is passed, will ignore username/password for validation",
|
|
"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",
|
|
"description": "If an existing collection exists within Kavita",
|
|
"format": "int32"
|
|
}
|
|
},
|
|
"additionalProperties": false,
|
|
"description": "Represents an Interest Stack from MAL"
|
|
},
|
|
"MalUserInfoDto": {
|
|
"required": [
|
|
"accessToken",
|
|
"username"
|
|
],
|
|
"type": "object",
|
|
"properties": {
|
|
"username": {
|
|
"type": "string",
|
|
"nullable": true
|
|
},
|
|
"accessToken": {
|
|
"type": "string",
|
|
"description": "This is actually the Client Id",
|
|
"nullable": true
|
|
}
|
|
},
|
|
"additionalProperties": false,
|
|
"description": "Information about a User's MAL connection"
|
|
},
|
|
"ManageMatchFilterDto": {
|
|
"type": "object",
|
|
"properties": {
|
|
"matchStateOption": {
|
|
"enum": [
|
|
0,
|
|
1,
|
|
2,
|
|
3,
|
|
4
|
|
],
|
|
"type": "integer",
|
|
"description": "Represents an option in the UI layer for Filtering",
|
|
"format": "int32"
|
|
},
|
|
"libraryType": {
|
|
"type": "integer",
|
|
"description": "Library Type in int form. -1 indicates to ignore the field.",
|
|
"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",
|
|
"description": "Absolute path to the archive file (normalized)",
|
|
"nullable": true
|
|
},
|
|
"pages": {
|
|
"type": "integer",
|
|
"description": "Number of pages for the given file",
|
|
"format": "int32"
|
|
},
|
|
"bytes": {
|
|
"type": "integer",
|
|
"description": "How many bytes make up this file",
|
|
"format": "int64"
|
|
},
|
|
"format": {
|
|
"enum": [
|
|
0,
|
|
1,
|
|
2,
|
|
3,
|
|
4
|
|
],
|
|
"type": "integer",
|
|
"description": "Represents the format of the file",
|
|
"format": "int32"
|
|
},
|
|
"created": {
|
|
"type": "string",
|
|
"format": "date-time"
|
|
},
|
|
"extension": {
|
|
"type": "string",
|
|
"description": "File extension",
|
|
"nullable": true
|
|
},
|
|
"koreaderHash": {
|
|
"type": "string",
|
|
"description": "A hash of the document using Koreader's unique hashing algorithm",
|
|
"nullable": true
|
|
}
|
|
},
|
|
"additionalProperties": false
|
|
},
|
|
"MangaFormatStatCount": {
|
|
"type": "object",
|
|
"properties": {
|
|
"value": {
|
|
"enum": [
|
|
0,
|
|
1,
|
|
2,
|
|
3,
|
|
4
|
|
],
|
|
"type": "integer",
|
|
"description": "Represents the format of the file",
|
|
"format": "int32"
|
|
},
|
|
"count": {
|
|
"type": "integer",
|
|
"format": "int64"
|
|
}
|
|
},
|
|
"additionalProperties": false
|
|
},
|
|
"MarkMultipleSeriesAsReadDto": {
|
|
"type": "object",
|
|
"properties": {
|
|
"seriesIds": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
},
|
|
"nullable": true
|
|
}
|
|
},
|
|
"additionalProperties": false
|
|
},
|
|
"MarkReadDto": {
|
|
"type": "object",
|
|
"properties": {
|
|
"seriesId": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
}
|
|
},
|
|
"additionalProperties": false
|
|
},
|
|
"MarkVolumeReadDto": {
|
|
"type": "object",
|
|
"properties": {
|
|
"seriesId": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
},
|
|
"volumeId": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
}
|
|
},
|
|
"additionalProperties": false
|
|
},
|
|
"MarkVolumesReadDto": {
|
|
"type": "object",
|
|
"properties": {
|
|
"seriesId": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
},
|
|
"volumeIds": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
},
|
|
"description": "A list of Volumes to mark read",
|
|
"nullable": true
|
|
},
|
|
"chapterIds": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
},
|
|
"description": "A list of additional Chapters to mark as read",
|
|
"nullable": true
|
|
}
|
|
},
|
|
"additionalProperties": false,
|
|
"description": "This is used for bulk updating a set of volume and or chapters in one go"
|
|
},
|
|
"MatchSeriesDto": {
|
|
"type": "object",
|
|
"properties": {
|
|
"dontMatch": {
|
|
"type": "boolean",
|
|
"description": "When set, Kavita will stop attempting to match this series and will not perform any scrobbling"
|
|
},
|
|
"seriesId": {
|
|
"type": "integer",
|
|
"description": "Series Id to pull internal metadata from to improve matching",
|
|
"format": "int32"
|
|
},
|
|
"query": {
|
|
"type": "string",
|
|
"description": "Free form text to query for. Can be a url and ids will be parsed from it",
|
|
"nullable": true
|
|
}
|
|
},
|
|
"additionalProperties": false,
|
|
"description": "Used for matching a series with Kavita+ for metadata and scrobbling"
|
|
},
|
|
"MediaErrorDto": {
|
|
"required": [
|
|
"extension",
|
|
"filePath"
|
|
],
|
|
"type": "object",
|
|
"properties": {
|
|
"extension": {
|
|
"type": "string",
|
|
"description": "Format Type (RAR, ZIP, 7Zip, Epub, PDF)",
|
|
"nullable": true
|
|
},
|
|
"filePath": {
|
|
"type": "string",
|
|
"description": "Full Filepath to the file that has some issue",
|
|
"nullable": true
|
|
},
|
|
"comment": {
|
|
"type": "string",
|
|
"description": "Developer defined string",
|
|
"nullable": true
|
|
},
|
|
"details": {
|
|
"type": "string",
|
|
"description": "Exception message",
|
|
"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",
|
|
"description": "If the member is still pending or not"
|
|
},
|
|
"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",
|
|
"description": "Who provides the identity of the user",
|
|
"format": "int32"
|
|
}
|
|
},
|
|
"additionalProperties": false,
|
|
"description": "Represents a member of a Kavita server."
|
|
},
|
|
"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",
|
|
"description": "The string in the source",
|
|
"nullable": true
|
|
},
|
|
"destinationValue": {
|
|
"type": "string",
|
|
"description": "Write the string as this in the Destination (can also just be the Source)",
|
|
"nullable": true
|
|
},
|
|
"excludeFromSource": {
|
|
"type": "boolean",
|
|
"description": "If true, the tag will be Moved over vs Copied over"
|
|
}
|
|
},
|
|
"additionalProperties": false
|
|
},
|
|
"MetadataSettingsDto": {
|
|
"type": "object",
|
|
"properties": {
|
|
"blacklist": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "string"
|
|
},
|
|
"description": "Do not allow any Genre/Tag in this list to be written to Kavita",
|
|
"nullable": true
|
|
},
|
|
"whitelist": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "string"
|
|
},
|
|
"description": "Only allow these Tags to be written to Kavita",
|
|
"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",
|
|
"description": "Represents Age Rating for content.",
|
|
"format": "int32"
|
|
},
|
|
"description": "Any Genres or Tags that if present, will trigger an Age Rating Override. Highest rating will be prioritized for matching.",
|
|
"nullable": true
|
|
},
|
|
"fieldMappings": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/components/schemas/MetadataFieldMappingDto"
|
|
},
|
|
"description": "A list of rules that allow mapping a genre/tag to another genre/tag",
|
|
"nullable": true
|
|
},
|
|
"enabled": {
|
|
"type": "boolean",
|
|
"description": "If writing any sort of metadata from upstream (AniList, Hardcover) source is allowed"
|
|
},
|
|
"enableExtendedMetadataProcessing": {
|
|
"type": "boolean",
|
|
"description": "Enable processing of metadata outside K+; e.g. disk and API"
|
|
},
|
|
"enableSummary": {
|
|
"type": "boolean",
|
|
"description": "Allow the Summary to be written"
|
|
},
|
|
"enablePublicationStatus": {
|
|
"type": "boolean",
|
|
"description": "Allow Publication status to be derived and updated"
|
|
},
|
|
"enableRelationships": {
|
|
"type": "boolean",
|
|
"description": "Allow Relationships between series to be set"
|
|
},
|
|
"enablePeople": {
|
|
"type": "boolean",
|
|
"description": "Allow People to be created (including downloading images)"
|
|
},
|
|
"enableStartDate": {
|
|
"type": "boolean",
|
|
"description": "Allow Start date to be set within the Series"
|
|
},
|
|
"enableLocalizedName": {
|
|
"type": "boolean",
|
|
"description": "Allow setting the Localized name"
|
|
},
|
|
"enableCoverImage": {
|
|
"type": "boolean",
|
|
"description": "Allow setting the cover image"
|
|
},
|
|
"enableChapterSummary": {
|
|
"type": "boolean",
|
|
"description": "Allow Summary to be set within Chapter/Issue"
|
|
},
|
|
"enableChapterReleaseDate": {
|
|
"type": "boolean",
|
|
"description": "Allow Release Date to be set within Chapter/Issue"
|
|
},
|
|
"enableChapterTitle": {
|
|
"type": "boolean",
|
|
"description": "Allow Title to be set within Chapter/Issue"
|
|
},
|
|
"enableChapterPublisher": {
|
|
"type": "boolean",
|
|
"description": "Allow Publisher to be set within Chapter/Issue"
|
|
},
|
|
"enableChapterCoverImage": {
|
|
"type": "boolean",
|
|
"description": "Allow setting the cover image for the Chapter/Issue"
|
|
},
|
|
"enableGenres": {
|
|
"type": "boolean"
|
|
},
|
|
"enableTags": {
|
|
"type": "boolean"
|
|
},
|
|
"firstLastPeopleNaming": {
|
|
"type": "boolean",
|
|
"description": "For Authors and Writers, how should names be stored (Exclusively applied for AniList). This does not affect Character names."
|
|
},
|
|
"overrides": {
|
|
"type": "array",
|
|
"items": {
|
|
"enum": [
|
|
1,
|
|
2,
|
|
3,
|
|
4,
|
|
5,
|
|
6,
|
|
7,
|
|
8,
|
|
9,
|
|
10,
|
|
11,
|
|
12,
|
|
13,
|
|
14
|
|
],
|
|
"type": "integer",
|
|
"description": "Represents which field that can be written to as an override when already locked",
|
|
"format": "int32"
|
|
},
|
|
"description": "A list of overrides that will enable writing to locked fields",
|
|
"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"
|
|
},
|
|
"description": "Which Roles to allow metadata downloading for",
|
|
"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",
|
|
"description": "Null if not applicable",
|
|
"format": "date-time",
|
|
"nullable": true
|
|
},
|
|
"title": {
|
|
"type": "string",
|
|
"description": "The localized title to render on the card",
|
|
"nullable": true
|
|
}
|
|
},
|
|
"additionalProperties": false
|
|
},
|
|
"OidcConfigDto": {
|
|
"type": "object",
|
|
"properties": {
|
|
"autoLogin": {
|
|
"type": "boolean",
|
|
"description": "Automatically redirect to the Oidc login screen"
|
|
},
|
|
"disablePasswordAuthentication": {
|
|
"type": "boolean",
|
|
"description": "Disables password authentication for non-admin users"
|
|
},
|
|
"providerName": {
|
|
"type": "string",
|
|
"description": "Name of your provider, used to display on the login screen",
|
|
"nullable": true
|
|
},
|
|
"authority": {
|
|
"type": "string",
|
|
"description": "Optional OpenID Connect Authority URL. Not managed in DB. Managed in appsettings.json and synced to DB.",
|
|
"nullable": true
|
|
},
|
|
"clientId": {
|
|
"type": "string",
|
|
"description": "Optional OpenID Connect ClientId, defaults to kavita. Not managed in DB. Managed in appsettings.json and synced to DB.",
|
|
"nullable": true
|
|
},
|
|
"secret": {
|
|
"type": "string",
|
|
"description": "Optional OpenID Connect Secret. Not managed in DB. Managed in appsettings.json and synced to DB.",
|
|
"nullable": true
|
|
},
|
|
"provisionAccounts": {
|
|
"type": "boolean",
|
|
"description": "If true, auto creates a new account when someone logs in via OpenID Connect"
|
|
},
|
|
"requireVerifiedEmail": {
|
|
"type": "boolean",
|
|
"description": "Require emails to be verified by the OpenID Connect provider when creating accounts on login"
|
|
},
|
|
"syncUserSettings": {
|
|
"type": "boolean",
|
|
"description": "Overwrite Kavita roles, libraries and age rating with OpenIDConnect provided roles on log in."
|
|
},
|
|
"rolesPrefix": {
|
|
"type": "string",
|
|
"description": "A prefix that all roles Kavita checks for during sync must have",
|
|
"nullable": true
|
|
},
|
|
"rolesClaim": {
|
|
"type": "string",
|
|
"description": "The JWT claim roles are mapped under, defaults to System.Security.Claims.ClaimTypes.Role",
|
|
"nullable": true
|
|
},
|
|
"customScopes": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "string"
|
|
},
|
|
"description": "Custom scopes Kavita should request from your OIDC provider",
|
|
"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",
|
|
"description": "Represents Age Rating for content.",
|
|
"format": "int32"
|
|
},
|
|
"defaultIncludeUnknowns": {
|
|
"type": "boolean"
|
|
},
|
|
"enabled": {
|
|
"type": "boolean",
|
|
"description": "Returns true if the !:OidcPublicConfigDto.Authority has been set",
|
|
"readOnly": true
|
|
}
|
|
},
|
|
"additionalProperties": false,
|
|
"description": "All configuration regarding OIDC"
|
|
},
|
|
"OidcPublicConfigDto": {
|
|
"type": "object",
|
|
"properties": {
|
|
"autoLogin": {
|
|
"type": "boolean",
|
|
"description": "Automatically redirect to the Oidc login screen"
|
|
},
|
|
"disablePasswordAuthentication": {
|
|
"type": "boolean",
|
|
"description": "Disables password authentication for non-admin users"
|
|
},
|
|
"providerName": {
|
|
"type": "string",
|
|
"description": "Name of your provider, used to display on the login screen",
|
|
"nullable": true
|
|
},
|
|
"enabled": {
|
|
"type": "boolean"
|
|
}
|
|
},
|
|
"additionalProperties": false
|
|
},
|
|
"PersonAliasCheckDto": {
|
|
"required": [
|
|
"alias",
|
|
"name",
|
|
"personId"
|
|
],
|
|
"type": "object",
|
|
"properties": {
|
|
"personId": {
|
|
"type": "integer",
|
|
"description": "The person to check against",
|
|
"format": "int32"
|
|
},
|
|
"name": {
|
|
"minLength": 1,
|
|
"type": "string",
|
|
"description": "The persons name in the form. In case it differs from the one in the database"
|
|
},
|
|
"alias": {
|
|
"minLength": 1,
|
|
"type": "string",
|
|
"description": "The alias to check"
|
|
}
|
|
},
|
|
"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",
|
|
"description": "ASIN for person",
|
|
"nullable": true
|
|
},
|
|
"aniListId": {
|
|
"type": "integer",
|
|
"description": "https://anilist.co/staff/{AniListId}/",
|
|
"format": "int32"
|
|
},
|
|
"malId": {
|
|
"type": "integer",
|
|
"description": "https://myanimelist.net/people/{MalId}/\nhttps://myanimelist.net/character/{MalId}/CharacterName",
|
|
"format": "int64"
|
|
},
|
|
"hardcoverId": {
|
|
"type": "string",
|
|
"description": "https://hardcover.app/authors/{HardcoverId}",
|
|
"nullable": true
|
|
},
|
|
"webLinks": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "string"
|
|
},
|
|
"description": "Web links derived from the various id of external websites",
|
|
"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"
|
|
},
|
|
"description": "All roles as if returned by the /api/person/roles endpoint",
|
|
"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",
|
|
"description": "The id of the person being merged into",
|
|
"format": "int32"
|
|
},
|
|
"srcId": {
|
|
"type": "integer",
|
|
"description": "The id of the person being merged. This person will be removed, and become an alias of API.DTOs.PersonMergeDto.DestId",
|
|
"format": "int32"
|
|
}
|
|
},
|
|
"additionalProperties": false
|
|
},
|
|
"PersonSortOptions": {
|
|
"type": "object",
|
|
"properties": {
|
|
"sortField": {
|
|
"enum": [
|
|
1,
|
|
2,
|
|
3
|
|
],
|
|
"type": "integer",
|
|
"format": "int32"
|
|
},
|
|
"isAscending": {
|
|
"type": "boolean"
|
|
}
|
|
},
|
|
"additionalProperties": false,
|
|
"description": "All Sorting Options for a query related to Person Entity"
|
|
},
|
|
"PersonalToCDto": {
|
|
"required": [
|
|
"chapterId",
|
|
"id",
|
|
"pageNumber",
|
|
"title"
|
|
],
|
|
"type": "object",
|
|
"properties": {
|
|
"id": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
},
|
|
"chapterId": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
},
|
|
"pageNumber": {
|
|
"type": "integer",
|
|
"description": "The page to bookmark",
|
|
"format": "int32"
|
|
},
|
|
"title": {
|
|
"type": "string",
|
|
"description": "The title of the bookmark. Defaults to Page {PageNumber} if not set",
|
|
"nullable": true
|
|
},
|
|
"bookScrollId": {
|
|
"type": "string",
|
|
"description": "For Book Reader, represents the nearest passed anchor on the screen that can be used to resume scroll point. If empty, the ToC point is the beginning of the page",
|
|
"nullable": true
|
|
},
|
|
"selectedText": {
|
|
"type": "string",
|
|
"description": "Text of the bookmark",
|
|
"nullable": true
|
|
},
|
|
"chapterTitle": {
|
|
"type": "string",
|
|
"description": "Title of the Chapter this PToC was created in",
|
|
"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",
|
|
"description": "For EPUB reader, this can be an optional string of the id of a part marker, to help resume reading position\non pages that combine multiple \"chapters\".",
|
|
"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
|
|
],
|
|
"type": "integer",
|
|
"description": "Misleading name but is the source of data (like a review coming from AniList)",
|
|
"format": "int32"
|
|
},
|
|
"authority": {
|
|
"enum": [
|
|
0,
|
|
1
|
|
],
|
|
"type": "integer",
|
|
"format": "int32"
|
|
},
|
|
"providerUrl": {
|
|
"type": "string",
|
|
"nullable": true
|
|
}
|
|
},
|
|
"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,
|
|
"description": "Represents a single User's reading event"
|
|
},
|
|
"ReadStatus": {
|
|
"type": "object",
|
|
"properties": {
|
|
"notRead": {
|
|
"type": "boolean"
|
|
},
|
|
"inProgress": {
|
|
"type": "boolean"
|
|
},
|
|
"read": {
|
|
"type": "boolean"
|
|
}
|
|
},
|
|
"additionalProperties": false,
|
|
"description": "Represents the Reading Status. This is a flag and allows multiple statues"
|
|
},
|
|
"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",
|
|
"description": "Only applicable for Book entries",
|
|
"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"
|
|
},
|
|
"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",
|
|
"description": "Represents the format of the file",
|
|
"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",
|
|
"description": "Reading lists that are promoted are only done by admins"
|
|
},
|
|
"coverImageLocked": {
|
|
"type": "boolean"
|
|
},
|
|
"coverImage": {
|
|
"type": "string",
|
|
"description": "This is used to tell the UI if it should request a Cover Image or not. If null or empty, it has not been set.",
|
|
"nullable": true
|
|
},
|
|
"primaryColor": {
|
|
"type": "string",
|
|
"nullable": true
|
|
},
|
|
"secondaryColor": {
|
|
"type": "string",
|
|
"nullable": true
|
|
},
|
|
"itemCount": {
|
|
"type": "integer",
|
|
"description": "Number of Items in the Reading List",
|
|
"format": "int32"
|
|
},
|
|
"startingYear": {
|
|
"type": "integer",
|
|
"description": "Minimum Year the Reading List starts",
|
|
"format": "int32"
|
|
},
|
|
"startingMonth": {
|
|
"type": "integer",
|
|
"description": "Minimum Month the Reading List starts",
|
|
"format": "int32"
|
|
},
|
|
"endingYear": {
|
|
"type": "integer",
|
|
"description": "Maximum Year the Reading List starts",
|
|
"format": "int32"
|
|
},
|
|
"endingMonth": {
|
|
"type": "integer",
|
|
"description": "Maximum Month the Reading List starts",
|
|
"format": "int32"
|
|
},
|
|
"ageRating": {
|
|
"enum": [
|
|
0,
|
|
1,
|
|
2,
|
|
3,
|
|
4,
|
|
5,
|
|
6,
|
|
7,
|
|
8,
|
|
9,
|
|
10,
|
|
11,
|
|
12,
|
|
13,
|
|
14,
|
|
-1
|
|
],
|
|
"type": "integer",
|
|
"description": "The highest age rating from all Series within the reading list",
|
|
"format": "int32"
|
|
},
|
|
"ownerUserName": {
|
|
"type": "string",
|
|
"description": "Username of the User that owns (in the case of a promoted list)",
|
|
"nullable": true
|
|
}
|
|
},
|
|
"additionalProperties": false
|
|
},
|
|
"ReadingListInfoDto": {
|
|
"type": "object",
|
|
"properties": {
|
|
"pages": {
|
|
"type": "integer",
|
|
"description": "Total Pages across all Reading List Items",
|
|
"format": "int32"
|
|
},
|
|
"wordCount": {
|
|
"type": "integer",
|
|
"description": "Total Word count across all Reading List Items",
|
|
"format": "int64"
|
|
},
|
|
"isAllEpub": {
|
|
"type": "boolean",
|
|
"description": "Are ALL Reading List Items epub"
|
|
},
|
|
"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",
|
|
"description": "Represents the format of the file",
|
|
"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",
|
|
"description": "Release Date from Chapter",
|
|
"format": "date-time",
|
|
"nullable": true
|
|
},
|
|
"readingListId": {
|
|
"type": "integer",
|
|
"description": "Used internally only",
|
|
"format": "int32"
|
|
},
|
|
"lastReadingProgressUtc": {
|
|
"type": "string",
|
|
"description": "The last time a reading list item (underlying chapter) was read by current authenticated user",
|
|
"format": "date-time",
|
|
"nullable": true
|
|
},
|
|
"fileSize": {
|
|
"type": "integer",
|
|
"description": "File size of underlying item",
|
|
"format": "int64"
|
|
},
|
|
"summary": {
|
|
"type": "string",
|
|
"description": "The chapter summary",
|
|
"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
|
|
},
|
|
"RecentlyAddedItemDto": {
|
|
"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"
|
|
},
|
|
"title": {
|
|
"type": "string",
|
|
"description": "This will automatically map to Volume X, Chapter Y, etc.",
|
|
"nullable": true
|
|
},
|
|
"created": {
|
|
"type": "string",
|
|
"format": "date-time"
|
|
},
|
|
"chapterId": {
|
|
"type": "integer",
|
|
"description": "Chapter Id if this is a chapter. Not guaranteed to be set.",
|
|
"format": "int32"
|
|
},
|
|
"volumeId": {
|
|
"type": "integer",
|
|
"description": "Volume Id if this is a chapter. Not guaranteed to be set.",
|
|
"format": "int32"
|
|
},
|
|
"id": {
|
|
"type": "integer",
|
|
"description": "This is used only on the UI. It is just index of being added.",
|
|
"format": "int32"
|
|
},
|
|
"format": {
|
|
"enum": [
|
|
0,
|
|
1,
|
|
2,
|
|
3,
|
|
4
|
|
],
|
|
"type": "integer",
|
|
"description": "Represents the format of the file",
|
|
"format": "int32"
|
|
}
|
|
},
|
|
"additionalProperties": false,
|
|
"description": "A mesh of data for Recently added volume/chapters"
|
|
},
|
|
"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",
|
|
"description": "Library Id series belongs to",
|
|
"format": "int32"
|
|
},
|
|
"seriesId": {
|
|
"type": "integer",
|
|
"description": "Series Id",
|
|
"format": "int32"
|
|
},
|
|
"forceUpdate": {
|
|
"type": "boolean",
|
|
"description": "Should the task force opening/re-calculation."
|
|
},
|
|
"forceColorscape": {
|
|
"type": "boolean",
|
|
"description": "Should the task force re-calculation of colorscape."
|
|
}
|
|
},
|
|
"additionalProperties": false,
|
|
"description": "Used for running some task against a Series."
|
|
},
|
|
"RegisterDto": {
|
|
"required": [
|
|
"password",
|
|
"username"
|
|
],
|
|
"type": "object",
|
|
"properties": {
|
|
"username": {
|
|
"minLength": 1,
|
|
"type": "string"
|
|
},
|
|
"email": {
|
|
"type": "string",
|
|
"description": "An email to register with. Optional. Provides Forgot Password functionality",
|
|
"nullable": true
|
|
},
|
|
"password": {
|
|
"maxLength": 256,
|
|
"minLength": 6,
|
|
"type": "string"
|
|
}
|
|
},
|
|
"additionalProperties": false
|
|
},
|
|
"RelatedSeriesDto": {
|
|
"type": "object",
|
|
"properties": {
|
|
"sourceSeriesId": {
|
|
"type": "integer",
|
|
"description": "The parent relationship Series",
|
|
"format": "int32"
|
|
},
|
|
"sequels": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/components/schemas/SeriesDto"
|
|
},
|
|
"nullable": true
|
|
},
|
|
"prequels": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/components/schemas/SeriesDto"
|
|
},
|
|
"nullable": true
|
|
},
|
|
"spinOffs": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/components/schemas/SeriesDto"
|
|
},
|
|
"nullable": true
|
|
},
|
|
"adaptations": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/components/schemas/SeriesDto"
|
|
},
|
|
"nullable": true
|
|
},
|
|
"sideStories": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/components/schemas/SeriesDto"
|
|
},
|
|
"nullable": true
|
|
},
|
|
"characters": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/components/schemas/SeriesDto"
|
|
},
|
|
"nullable": true
|
|
},
|
|
"contains": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/components/schemas/SeriesDto"
|
|
},
|
|
"nullable": true
|
|
},
|
|
"others": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/components/schemas/SeriesDto"
|
|
},
|
|
"nullable": true
|
|
},
|
|
"alternativeSettings": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/components/schemas/SeriesDto"
|
|
},
|
|
"nullable": true
|
|
},
|
|
"alternativeVersions": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/components/schemas/SeriesDto"
|
|
},
|
|
"nullable": true
|
|
},
|
|
"doujinshis": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/components/schemas/SeriesDto"
|
|
},
|
|
"nullable": true
|
|
},
|
|
"parent": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/components/schemas/SeriesDto"
|
|
},
|
|
"nullable": true
|
|
},
|
|
"editions": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/components/schemas/SeriesDto"
|
|
},
|
|
"nullable": true
|
|
},
|
|
"annuals": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/components/schemas/SeriesDto"
|
|
},
|
|
"nullable": true
|
|
}
|
|
},
|
|
"additionalProperties": false
|
|
},
|
|
"RemoveBookmarkForSeriesDto": {
|
|
"type": "object",
|
|
"properties": {
|
|
"seriesId": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
}
|
|
},
|
|
"additionalProperties": false
|
|
},
|
|
"RereadChapterDto": {
|
|
"type": "object",
|
|
"properties": {
|
|
"libraryId": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
},
|
|
"seriesId": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
},
|
|
"volumeId": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
},
|
|
"chapterId": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
},
|
|
"label": {
|
|
"type": "string",
|
|
"nullable": true
|
|
},
|
|
"format": {
|
|
"enum": [
|
|
0,
|
|
1,
|
|
2,
|
|
3,
|
|
4
|
|
],
|
|
"type": "integer",
|
|
"format": "int32",
|
|
"nullable": true
|
|
}
|
|
},
|
|
"additionalProperties": false
|
|
},
|
|
"RereadDto": {
|
|
"required": [
|
|
"shouldPrompt"
|
|
],
|
|
"type": "object",
|
|
"properties": {
|
|
"shouldPrompt": {
|
|
"type": "boolean",
|
|
"description": "Should the prompt be shown"
|
|
},
|
|
"timePrompt": {
|
|
"type": "boolean",
|
|
"description": "If the prompt is triggered because of time, false when triggered because of fully read"
|
|
},
|
|
"fullReread": {
|
|
"type": "boolean",
|
|
"description": "True if the entity is not atomic and will be fully reread on reread (I.e. rereading a series on volume)"
|
|
},
|
|
"daysSinceLastRead": {
|
|
"type": "integer",
|
|
"description": "Days elapsed since API.DTOs.Reader.RereadDto.ChapterOnReread was last read",
|
|
"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",
|
|
"description": "The Username of the User"
|
|
},
|
|
"password": {
|
|
"maxLength": 256,
|
|
"minLength": 6,
|
|
"type": "string",
|
|
"description": "The new password"
|
|
},
|
|
"oldPassword": {
|
|
"type": "string",
|
|
"description": "The old, existing password. If an admin is performing the change, this is not required. Otherwise, it is.",
|
|
"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",
|
|
"description": "Api key for a user with Admin permissions",
|
|
"nullable": true
|
|
},
|
|
"folderPath": {
|
|
"type": "string",
|
|
"description": "Folder Path to Scan",
|
|
"nullable": true
|
|
},
|
|
"abortOnNoSeriesMatch": {
|
|
"type": "boolean",
|
|
"description": "If true, only runs the scan if a matches series is found. I.e. prevent library scans"
|
|
}
|
|
},
|
|
"additionalProperties": false,
|
|
"description": "DTO for requesting a folder to be scanned"
|
|
},
|
|
"ScrobbleErrorDto": {
|
|
"type": "object",
|
|
"properties": {
|
|
"comment": {
|
|
"type": "string",
|
|
"description": "Developer defined string",
|
|
"nullable": true
|
|
},
|
|
"details": {
|
|
"type": "string",
|
|
"description": "List of providers that could not",
|
|
"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",
|
|
"description": "Which field to sort on",
|
|
"format": "int32"
|
|
},
|
|
"isDescending": {
|
|
"type": "boolean",
|
|
"description": "If the sort should be a descending sort"
|
|
},
|
|
"query": {
|
|
"type": "string",
|
|
"description": "A query to search against",
|
|
"nullable": true
|
|
},
|
|
"includeReviews": {
|
|
"type": "boolean",
|
|
"description": "Include reviews in the result - Note: Review Scrobbling is disabled"
|
|
}
|
|
},
|
|
"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",
|
|
"description": "Represents the format of the file",
|
|
"format": "int32"
|
|
},
|
|
"libraryName": {
|
|
"type": "string",
|
|
"nullable": true
|
|
},
|
|
"libraryId": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
}
|
|
},
|
|
"additionalProperties": false
|
|
},
|
|
"SearchResultGroupDto": {
|
|
"type": "object",
|
|
"properties": {
|
|
"libraries": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/components/schemas/LibraryDto"
|
|
},
|
|
"nullable": true
|
|
},
|
|
"series": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/components/schemas/SearchResultDto"
|
|
},
|
|
"nullable": true
|
|
},
|
|
"collections": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/components/schemas/AppUserCollectionDto"
|
|
},
|
|
"nullable": true
|
|
},
|
|
"readingLists": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/components/schemas/ReadingListDto"
|
|
},
|
|
"nullable": true
|
|
},
|
|
"persons": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/components/schemas/PersonDto"
|
|
},
|
|
"nullable": true
|
|
},
|
|
"genres": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/components/schemas/GenreTagDto"
|
|
},
|
|
"nullable": true
|
|
},
|
|
"tags": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/components/schemas/TagDto"
|
|
},
|
|
"nullable": true
|
|
},
|
|
"files": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/components/schemas/MangaFileDto"
|
|
},
|
|
"nullable": true
|
|
},
|
|
"chapters": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/components/schemas/ChapterDto"
|
|
},
|
|
"nullable": true
|
|
},
|
|
"bookmarks": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/components/schemas/BookmarkSearchResultDto"
|
|
},
|
|
"nullable": true
|
|
},
|
|
"annotations": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/components/schemas/AnnotationDto"
|
|
},
|
|
"nullable": true
|
|
}
|
|
},
|
|
"additionalProperties": false,
|
|
"description": "Represents all Search results for a query"
|
|
},
|
|
"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"
|
|
},
|
|
"description": "Specials for the Series. These will have their title and range cleaned to remove the special marker and prepare",
|
|
"nullable": true
|
|
},
|
|
"chapters": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/components/schemas/ChapterDto"
|
|
},
|
|
"description": "All Chapters, excluding Specials and single chapters (0 chapter) for a volume",
|
|
"nullable": true
|
|
},
|
|
"volumes": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/components/schemas/VolumeDto"
|
|
},
|
|
"description": "Just the Volumes for the Series (Excludes Volume 0)",
|
|
"nullable": true
|
|
},
|
|
"storylineChapters": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/components/schemas/ChapterDto"
|
|
},
|
|
"description": "These are chapters that are in Volume 0 and should be read AFTER the volumes",
|
|
"nullable": true
|
|
},
|
|
"unreadCount": {
|
|
"type": "integer",
|
|
"description": "How many chapters are unread",
|
|
"format": "int32"
|
|
},
|
|
"totalCount": {
|
|
"type": "integer",
|
|
"description": "How many chapters are there",
|
|
"format": "int32"
|
|
}
|
|
},
|
|
"additionalProperties": false,
|
|
"description": "This is a special DTO for a UI page in Kavita. This performs sorting and grouping and returns exactly what UI requires for layout.\nThis is subject to change, do not rely on this Data model."
|
|
},
|
|
"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,
|
|
"description": "All the data from Kavita+ for Series Detail"
|
|
},
|
|
"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",
|
|
"description": "Rating from logged-in user",
|
|
"format": "float"
|
|
},
|
|
"hasUserRated": {
|
|
"type": "boolean",
|
|
"description": "If the user has set the rating or not"
|
|
},
|
|
"totalReads": {
|
|
"type": "integer",
|
|
"description": "Min API.DTOs.ChapterDto.TotalReads across the series",
|
|
"format": "int32"
|
|
},
|
|
"pagesRead": {
|
|
"type": "integer",
|
|
"description": "Sum of pages read from linked Volumes. Calculated at API-time.",
|
|
"format": "int32"
|
|
},
|
|
"latestReadDate": {
|
|
"type": "string",
|
|
"description": "DateTime representing last time the series was Read. Calculated at API-time.",
|
|
"format": "date-time"
|
|
},
|
|
"format": {
|
|
"enum": [
|
|
0,
|
|
1,
|
|
2,
|
|
3,
|
|
4
|
|
],
|
|
"type": "integer",
|
|
"description": "Represents the format of the file",
|
|
"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
|
|
}
|
|
},
|
|
"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"
|
|
},
|
|
"description": "Genres for the Series",
|
|
"nullable": true
|
|
},
|
|
"tags": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/components/schemas/TagDto"
|
|
},
|
|
"description": "Collection of all Tags from underlying chapters for a Series",
|
|
"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",
|
|
"description": "Highest Age Rating from all Chapters",
|
|
"format": "int32"
|
|
},
|
|
"releaseYear": {
|
|
"type": "integer",
|
|
"description": "Earliest Year from all chapters",
|
|
"format": "int32"
|
|
},
|
|
"language": {
|
|
"type": "string",
|
|
"description": "Language of the content (BCP-47 code)",
|
|
"nullable": true
|
|
},
|
|
"maxCount": {
|
|
"type": "integer",
|
|
"description": "Max number of issues/volumes in the series (Max of Volume/Issue field in ComicInfo)",
|
|
"format": "int32"
|
|
},
|
|
"totalCount": {
|
|
"type": "integer",
|
|
"description": "Total number of issues/volumes for the series",
|
|
"format": "int32"
|
|
},
|
|
"publicationStatus": {
|
|
"enum": [
|
|
0,
|
|
1,
|
|
2,
|
|
3,
|
|
4
|
|
],
|
|
"type": "integer",
|
|
"description": "Publication status of the Series",
|
|
"format": "int32"
|
|
},
|
|
"webLinks": {
|
|
"type": "string",
|
|
"description": "A comma-separated list of Urls",
|
|
"nullable": true
|
|
},
|
|
"languageLocked": {
|
|
"type": "boolean"
|
|
},
|
|
"summaryLocked": {
|
|
"type": "boolean"
|
|
},
|
|
"ageRatingLocked": {
|
|
"type": "boolean",
|
|
"description": "Locked by user so metadata updates from scan loop will not override AgeRating"
|
|
},
|
|
"publicationStatusLocked": {
|
|
"type": "boolean",
|
|
"description": "Locked by user so metadata updates from scan loop will not override PublicationStatus"
|
|
},
|
|
"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",
|
|
"description": "Represents a relationship between Series",
|
|
"format": "int32"
|
|
},
|
|
"provider": {
|
|
"enum": [
|
|
0,
|
|
1,
|
|
2,
|
|
3,
|
|
4
|
|
],
|
|
"type": "integer",
|
|
"description": "Misleading name but is the source of data (like a review coming from AniList)",
|
|
"format": "int32"
|
|
},
|
|
"plusMediaFormat": {
|
|
"enum": [
|
|
1,
|
|
2,
|
|
3,
|
|
4,
|
|
5
|
|
],
|
|
"type": "integer",
|
|
"description": "Represents PlusMediaFormat",
|
|
"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",
|
|
"description": "Unique Id that represents a unique install",
|
|
"nullable": true
|
|
},
|
|
"isDocker": {
|
|
"type": "boolean",
|
|
"description": "If the Kavita install is using Docker"
|
|
},
|
|
"kavitaVersion": {
|
|
"type": "string",
|
|
"description": "Version of Kavita",
|
|
"nullable": true
|
|
},
|
|
"firstInstallDate": {
|
|
"type": "string",
|
|
"description": "The Date Kavita was first installed",
|
|
"format": "date-time",
|
|
"nullable": true
|
|
},
|
|
"firstInstallVersion": {
|
|
"type": "string",
|
|
"description": "The Version of Kavita on the first run",
|
|
"nullable": true
|
|
}
|
|
},
|
|
"additionalProperties": false,
|
|
"description": "This is just for the Server tab on UI"
|
|
},
|
|
"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",
|
|
"description": "Logging level for server. Managed in appsettings.json.",
|
|
"nullable": true
|
|
},
|
|
"port": {
|
|
"type": "integer",
|
|
"description": "Port the server listens on. Managed in appsettings.json.",
|
|
"format": "int32"
|
|
},
|
|
"ipAddresses": {
|
|
"type": "string",
|
|
"description": "Comma separated list of ip addresses the server listens on. Managed in appsettings.json",
|
|
"nullable": true
|
|
},
|
|
"allowStatCollection": {
|
|
"type": "boolean",
|
|
"description": "Allows anonymous information to be collected and sent to KavitaStats"
|
|
},
|
|
"enableOpds": {
|
|
"type": "boolean",
|
|
"description": "Enables OPDS connections to be made to the server."
|
|
},
|
|
"baseUrl": {
|
|
"type": "string",
|
|
"description": "Base Url for the kavita. Requires restart to take effect.",
|
|
"nullable": true
|
|
},
|
|
"bookmarksDirectory": {
|
|
"type": "string",
|
|
"description": "Where Bookmarks are stored.",
|
|
"nullable": true
|
|
},
|
|
"installVersion": {
|
|
"type": "string",
|
|
"nullable": true
|
|
},
|
|
"installId": {
|
|
"type": "string",
|
|
"description": "Represents a unique Id to this Kavita installation. Only used in Stats to identify unique installs.",
|
|
"nullable": true
|
|
},
|
|
"encodeMediaAs": {
|
|
"enum": [
|
|
0,
|
|
1,
|
|
2
|
|
],
|
|
"type": "integer",
|
|
"description": "The format that should be used when saving media for Kavita",
|
|
"format": "int32",
|
|
"example": "This includes things like: Covers, Bookmarks, Favicons"
|
|
},
|
|
"totalBackups": {
|
|
"type": "integer",
|
|
"description": "The amount of Backups before cleanup",
|
|
"format": "int32"
|
|
},
|
|
"enableFolderWatching": {
|
|
"type": "boolean",
|
|
"description": "If Kavita should watch the library folders and process changes"
|
|
},
|
|
"totalLogs": {
|
|
"type": "integer",
|
|
"description": "Total number of days worth of logs to keep at a given time.",
|
|
"format": "int32"
|
|
},
|
|
"hostName": {
|
|
"type": "string",
|
|
"description": "The Host name (ie Reverse proxy domain name) for the server",
|
|
"nullable": true
|
|
},
|
|
"cacheSize": {
|
|
"type": "integer",
|
|
"description": "The size in MB for Caching API data",
|
|
"format": "int64"
|
|
},
|
|
"onDeckProgressDays": {
|
|
"type": "integer",
|
|
"description": "How many Days since today in the past for reading progress, should content be considered for On Deck, before it gets removed automatically",
|
|
"format": "int32"
|
|
},
|
|
"onDeckUpdateDays": {
|
|
"type": "integer",
|
|
"description": "How many Days since today in the past for chapter updates, should content be considered for On Deck, before it gets removed automatically",
|
|
"format": "int32"
|
|
},
|
|
"coverImageSize": {
|
|
"enum": [
|
|
1,
|
|
2,
|
|
3,
|
|
4
|
|
],
|
|
"type": "integer",
|
|
"description": "How large the cover images should be",
|
|
"format": "int32"
|
|
},
|
|
"pdfRenderResolution": {
|
|
"enum": [
|
|
1,
|
|
2,
|
|
3
|
|
],
|
|
"type": "integer",
|
|
"description": "How large rendered PDF images should be",
|
|
"format": "int32"
|
|
},
|
|
"smtpConfig": {
|
|
"$ref": "#/components/schemas/SmtpConfigDto"
|
|
},
|
|
"oidcConfig": {
|
|
"$ref": "#/components/schemas/OidcConfigDto"
|
|
},
|
|
"firstInstallDate": {
|
|
"type": "string",
|
|
"description": "The Date Kavita was first installed",
|
|
"format": "date-time",
|
|
"nullable": true
|
|
},
|
|
"firstInstallVersion": {
|
|
"type": "string",
|
|
"description": "The Version of Kavita on the first run",
|
|
"nullable": true
|
|
},
|
|
"statsApiHits": {
|
|
"type": "integer",
|
|
"description": "How many times Kavita has hit the Stats API",
|
|
"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",
|
|
"description": "Is System Provided"
|
|
},
|
|
"order": {
|
|
"type": "integer",
|
|
"description": "Sort Order on the Dashboard",
|
|
"format": "int32"
|
|
},
|
|
"smartFilterEncoded": {
|
|
"type": "string",
|
|
"description": "If Not IsProvided, the appropriate smart filter",
|
|
"nullable": true
|
|
},
|
|
"smartFilterId": {
|
|
"type": "integer",
|
|
"format": "int32",
|
|
"nullable": true
|
|
},
|
|
"externalSourceId": {
|
|
"type": "integer",
|
|
"description": "External Source Url if configured",
|
|
"format": "int32"
|
|
},
|
|
"externalSource": {
|
|
"$ref": "#/components/schemas/ExternalSourceDto"
|
|
},
|
|
"streamType": {
|
|
"enum": [
|
|
1,
|
|
2,
|
|
3,
|
|
4,
|
|
5,
|
|
6,
|
|
7,
|
|
8,
|
|
9
|
|
],
|
|
"type": "integer",
|
|
"description": "For system provided",
|
|
"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",
|
|
"description": "Name of the Theme",
|
|
"nullable": true
|
|
},
|
|
"normalizedName": {
|
|
"type": "string",
|
|
"description": "Normalized name for lookups",
|
|
"nullable": true
|
|
},
|
|
"fileName": {
|
|
"type": "string",
|
|
"description": "File path to the content. Stored under API.Services.DirectoryService.SiteThemeDirectory.\nMust be a .css file",
|
|
"nullable": true
|
|
},
|
|
"isDefault": {
|
|
"type": "boolean",
|
|
"description": "Only one theme can have this. Will auto-set this as default for new user accounts"
|
|
},
|
|
"provider": {
|
|
"enum": [
|
|
1,
|
|
2
|
|
],
|
|
"type": "integer",
|
|
"description": "Where did the theme come from",
|
|
"format": "int32"
|
|
},
|
|
"previewUrls": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "string"
|
|
},
|
|
"nullable": true
|
|
},
|
|
"description": {
|
|
"type": "string",
|
|
"description": "Information about the theme",
|
|
"nullable": true
|
|
},
|
|
"author": {
|
|
"type": "string",
|
|
"description": "Author of the Theme (only applies to non-system provided themes)",
|
|
"nullable": true
|
|
},
|
|
"compatibleVersion": {
|
|
"type": "string",
|
|
"description": "Last compatible version. System provided will always be most current",
|
|
"nullable": true
|
|
},
|
|
"selector": {
|
|
"type": "string",
|
|
"nullable": true,
|
|
"readOnly": true
|
|
}
|
|
},
|
|
"additionalProperties": false,
|
|
"description": "Represents a set of css overrides the user can upload to Kavita and will load into webui"
|
|
},
|
|
"SmartFilterDto": {
|
|
"required": [
|
|
"filter",
|
|
"name"
|
|
],
|
|
"type": "object",
|
|
"properties": {
|
|
"id": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
},
|
|
"name": {
|
|
"type": "string",
|
|
"nullable": true
|
|
},
|
|
"filter": {
|
|
"type": "string",
|
|
"description": "This is the Filter url encoded. It is decoded and reconstructed into a API.DTOs.Filtering.v2.FilterV2Dto",
|
|
"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",
|
|
"description": "Limit in bytes for allowing files to be added as attachments. Defaults to 25MB",
|
|
"format": "int32"
|
|
},
|
|
"customizedTemplates": {
|
|
"type": "boolean",
|
|
"description": "Should Kavita use config/templates for Email templates or the default ones"
|
|
}
|
|
},
|
|
"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,
|
|
"description": "Sorting Options for a query"
|
|
},
|
|
"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"
|
|
},
|
|
"description": "The files that represent this Chapter",
|
|
"nullable": true
|
|
},
|
|
"pagesRead": {
|
|
"type": "integer",
|
|
"description": "Calculated at API time. Number of pages read for this Chapter for logged-in user.",
|
|
"format": "int32"
|
|
},
|
|
"totalReads": {
|
|
"type": "integer",
|
|
"description": "Total number of complete reads",
|
|
"format": "int32"
|
|
},
|
|
"lastReadingProgressUtc": {
|
|
"type": "string",
|
|
"description": "The last time a chapter was read by current authenticated user",
|
|
"format": "date-time"
|
|
},
|
|
"lastReadingProgress": {
|
|
"type": "string",
|
|
"description": "The last time a chapter was read by current authenticated user",
|
|
"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",
|
|
"description": "Represents Age Rating for content.",
|
|
"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"
|
|
},
|
|
"description": "Collection of all Tags from underlying chapters for a Series",
|
|
"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
|
|
},
|
|
"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,
|
|
"description": "Used on Person Profile page"
|
|
},
|
|
"StatBucketDto": {
|
|
"type": "object",
|
|
"properties": {
|
|
"rangeStart": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
},
|
|
"rangeEnd": {
|
|
"type": "integer",
|
|
"description": "Null for the last range (1000+)",
|
|
"format": "int32",
|
|
"nullable": true
|
|
},
|
|
"count": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
},
|
|
"percentage": {
|
|
"type": "number",
|
|
"description": "Percentage of total chapters",
|
|
"format": "double"
|
|
}
|
|
},
|
|
"additionalProperties": false,
|
|
"description": "A bucket of items (fixed) from 0-X, X-X*2"
|
|
},
|
|
"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",
|
|
"description": "Amount of time read on Comic libraries",
|
|
"format": "float"
|
|
},
|
|
"booksTime": {
|
|
"type": "number",
|
|
"description": "Amount of time read on",
|
|
"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",
|
|
"description": "Represents Age Rating for content.",
|
|
"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"
|
|
},
|
|
"description": "Genres for the Chapter",
|
|
"nullable": true
|
|
},
|
|
"tags": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/components/schemas/TagDto"
|
|
},
|
|
"description": "Collection of all Tags from underlying chapters for a Chapter",
|
|
"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",
|
|
"description": "Highest Age Rating from all Chapters",
|
|
"format": "int32"
|
|
},
|
|
"language": {
|
|
"type": "string",
|
|
"description": "Language of the content (BCP-47 code)",
|
|
"nullable": true
|
|
},
|
|
"ageRatingLocked": {
|
|
"type": "boolean",
|
|
"description": "Locked by user so metadata updates from scan loop will not override AgeRating"
|
|
},
|
|
"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",
|
|
"description": "The sorting order of the Chapter. Inherits from MinNumber, but can be overridden.",
|
|
"format": "float"
|
|
},
|
|
"sortOrderLocked": {
|
|
"type": "boolean",
|
|
"description": "Can the sort order be updated on scan or is it locked from UI"
|
|
},
|
|
"webLinks": {
|
|
"type": "string",
|
|
"description": "Comma-separated link of urls to external services that have some relation to the Chapter",
|
|
"nullable": true
|
|
},
|
|
"isbn": {
|
|
"type": "string",
|
|
"nullable": true
|
|
},
|
|
"releaseDate": {
|
|
"type": "string",
|
|
"description": "Date which chapter was released",
|
|
"format": "date-time"
|
|
},
|
|
"titleName": {
|
|
"type": "string",
|
|
"description": "Chapter title",
|
|
"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",
|
|
"description": "Platform of the device. If not know, defaults to \"Custom\"",
|
|
"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",
|
|
"description": "Represents a set of file types that can be scanned",
|
|
"format": "int32"
|
|
},
|
|
"description": "What types of files to allow the scanner to pickup"
|
|
},
|
|
"excludePatterns": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "string"
|
|
},
|
|
"description": "A set of Glob patterns that the scanner will exclude processing"
|
|
}
|
|
},
|
|
"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",
|
|
"description": "License Key received from Kavita+",
|
|
"nullable": true
|
|
},
|
|
"email": {
|
|
"type": "string",
|
|
"description": "Email registered with Stripe",
|
|
"nullable": true
|
|
},
|
|
"discordId": {
|
|
"type": "string",
|
|
"description": "Optional DiscordId",
|
|
"nullable": true
|
|
}
|
|
},
|
|
"additionalProperties": false
|
|
},
|
|
"UpdateNotificationDto": {
|
|
"required": [
|
|
"currentVersion",
|
|
"publishDate",
|
|
"updateBody",
|
|
"updateTitle",
|
|
"updateUrl",
|
|
"updateVersion"
|
|
],
|
|
"type": "object",
|
|
"properties": {
|
|
"currentVersion": {
|
|
"type": "string",
|
|
"description": "Current installed Version",
|
|
"nullable": true
|
|
},
|
|
"updateVersion": {
|
|
"type": "string",
|
|
"description": "Semver of the release version\n<example>0.4.3</example>",
|
|
"nullable": true
|
|
},
|
|
"updateBody": {
|
|
"type": "string",
|
|
"description": "Release body in HTML",
|
|
"nullable": true
|
|
},
|
|
"updateTitle": {
|
|
"type": "string",
|
|
"description": "Title of the release",
|
|
"nullable": true
|
|
},
|
|
"updateUrl": {
|
|
"type": "string",
|
|
"description": "Github Url",
|
|
"nullable": true
|
|
},
|
|
"isDocker": {
|
|
"type": "boolean",
|
|
"description": "If this install is within Docker"
|
|
},
|
|
"isPrerelease": {
|
|
"type": "boolean",
|
|
"description": "Is this a pre-release"
|
|
},
|
|
"publishDate": {
|
|
"type": "string",
|
|
"description": "Date of the publish",
|
|
"nullable": true
|
|
},
|
|
"isOnNightlyInRelease": {
|
|
"type": "boolean",
|
|
"description": "Is the server on a nightly within this release"
|
|
},
|
|
"isReleaseNewer": {
|
|
"type": "boolean",
|
|
"description": "Is the server on an older version"
|
|
},
|
|
"isReleaseEqual": {
|
|
"type": "boolean",
|
|
"description": "Is the server on this version"
|
|
},
|
|
"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",
|
|
"description": "The part above the changelog part",
|
|
"nullable": true
|
|
}
|
|
},
|
|
"additionalProperties": false,
|
|
"description": "Update Notification denoting a new release available for user to update to"
|
|
},
|
|
"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,
|
|
"description": "DTO for moving a reading list item to another position within the same list"
|
|
},
|
|
"UpdateRelatedSeriesDto": {
|
|
"type": "object",
|
|
"properties": {
|
|
"seriesId": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
},
|
|
"adaptations": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
},
|
|
"nullable": true
|
|
},
|
|
"characters": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
},
|
|
"nullable": true
|
|
},
|
|
"contains": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
},
|
|
"nullable": true
|
|
},
|
|
"others": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
},
|
|
"nullable": true
|
|
},
|
|
"prequels": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
},
|
|
"nullable": true
|
|
},
|
|
"sequels": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
},
|
|
"nullable": true
|
|
},
|
|
"sideStories": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
},
|
|
"nullable": true
|
|
},
|
|
"spinOffs": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
},
|
|
"nullable": true
|
|
},
|
|
"alternativeSettings": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
},
|
|
"nullable": true
|
|
},
|
|
"alternativeVersions": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
},
|
|
"nullable": true
|
|
},
|
|
"doujinshis": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
},
|
|
"nullable": true
|
|
},
|
|
"editions": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
},
|
|
"nullable": true
|
|
},
|
|
"annuals": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
},
|
|
"nullable": true
|
|
}
|
|
},
|
|
"additionalProperties": false
|
|
},
|
|
"UpdateSeriesDto": {
|
|
"type": "object",
|
|
"properties": {
|
|
"id": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
},
|
|
"localizedName": {
|
|
"type": "string",
|
|
"nullable": true
|
|
},
|
|
"sortName": {
|
|
"type": "string",
|
|
"nullable": true
|
|
},
|
|
"coverImageLocked": {
|
|
"type": "boolean"
|
|
},
|
|
"sortNameLocked": {
|
|
"type": "boolean"
|
|
},
|
|
"localizedNameLocked": {
|
|
"type": "boolean"
|
|
}
|
|
},
|
|
"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",
|
|
"description": "If the API.DTOs.Dashboard.UpdateStreamPositionDto.ToPosition has taken into account non-visible items"
|
|
}
|
|
},
|
|
"additionalProperties": false
|
|
},
|
|
"UpdateUserDto": {
|
|
"type": "object",
|
|
"properties": {
|
|
"userId": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
},
|
|
"username": {
|
|
"type": "string",
|
|
"nullable": true
|
|
},
|
|
"roles": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "string"
|
|
},
|
|
"description": "List of Roles to assign to user. If admin not present, Pleb will be applied.\nIf admin present, all libraries will be granted access and will ignore those from DTO.",
|
|
"nullable": true
|
|
},
|
|
"libraries": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
},
|
|
"description": "A list of libraries to grant access to",
|
|
"nullable": true
|
|
},
|
|
"ageRestriction": {
|
|
"$ref": "#/components/schemas/AgeRestrictionDto"
|
|
},
|
|
"email": {
|
|
"type": "string",
|
|
"nullable": true
|
|
},
|
|
"identityProvider": {
|
|
"enum": [
|
|
0,
|
|
1
|
|
],
|
|
"type": "integer",
|
|
"description": "Who provides the identity of the user",
|
|
"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
|
|
},
|
|
"UpdateWantToReadDto": {
|
|
"type": "object",
|
|
"properties": {
|
|
"seriesIds": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
},
|
|
"description": "List of Series Ids that will be Added/Removed",
|
|
"nullable": true
|
|
}
|
|
},
|
|
"additionalProperties": false,
|
|
"description": "A list of Series to pass when working with Want To Read APIs"
|
|
},
|
|
"UploadFileDto": {
|
|
"required": [
|
|
"id",
|
|
"url"
|
|
],
|
|
"type": "object",
|
|
"properties": {
|
|
"id": {
|
|
"type": "integer",
|
|
"description": "Id of the Entity",
|
|
"format": "int32"
|
|
},
|
|
"url": {
|
|
"type": "string",
|
|
"description": "Base Url encoding of the file to upload from (can be null)",
|
|
"nullable": true
|
|
},
|
|
"lockCover": {
|
|
"type": "boolean",
|
|
"description": "Lock the cover or not"
|
|
}
|
|
},
|
|
"additionalProperties": false
|
|
},
|
|
"UploadUrlDto": {
|
|
"required": [
|
|
"url"
|
|
],
|
|
"type": "object",
|
|
"properties": {
|
|
"url": {
|
|
"minLength": 1,
|
|
"type": "string",
|
|
"description": "External url"
|
|
}
|
|
},
|
|
"additionalProperties": false
|
|
},
|
|
"UserDto": {
|
|
"type": "object",
|
|
"properties": {
|
|
"id": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
},
|
|
"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",
|
|
"description": "Who provides the identity of the user",
|
|
"format": "int32"
|
|
},
|
|
"created": {
|
|
"type": "string",
|
|
"format": "date-time"
|
|
},
|
|
"createdUtc": {
|
|
"type": "string",
|
|
"format": "date-time"
|
|
},
|
|
"authKeys": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/components/schemas/AuthKeyDto"
|
|
},
|
|
"description": "Only System-provided Auth Keys",
|
|
"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",
|
|
"description": "If set to 0, will set as MaxInt",
|
|
"format": "int32"
|
|
}
|
|
},
|
|
"additionalProperties": false,
|
|
"description": "User params should be used together with [FromQuery] to add optional pagination to endpoint. If no pagination params are\nprovided, the default (int.MaxValue) will be used. When adding pagination to an endpoint, ensure the UI sets the correct\nquery params."
|
|
},
|
|
"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",
|
|
"description": "Total number of pages read",
|
|
"format": "int64"
|
|
},
|
|
"totalWordsRead": {
|
|
"type": "integer",
|
|
"description": "Total number of words read",
|
|
"format": "int64"
|
|
},
|
|
"timeSpentReading": {
|
|
"type": "integer",
|
|
"description": "Total time spent reading",
|
|
"format": "int64"
|
|
},
|
|
"lastActiveUtc": {
|
|
"type": "string",
|
|
"description": "Last time user read anything",
|
|
"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",
|
|
"description": "Represents the writing styles for the book-reader",
|
|
"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",
|
|
"description": "Enum values match PdfViewer's enums",
|
|
"format": "int32"
|
|
},
|
|
"pdfSpreadMode": {
|
|
"enum": [
|
|
0,
|
|
1,
|
|
2
|
|
],
|
|
"type": "integer",
|
|
"format": "int32"
|
|
}
|
|
},
|
|
"additionalProperties": false
|
|
},
|
|
"UserReviewDto": {
|
|
"type": "object",
|
|
"properties": {
|
|
"tagline": {
|
|
"type": "string",
|
|
"description": "A tagline for the review",
|
|
"nullable": true
|
|
},
|
|
"body": {
|
|
"type": "string",
|
|
"description": "The main review",
|
|
"nullable": true
|
|
},
|
|
"bodyJustText": {
|
|
"type": "string",
|
|
"description": "The main body with just text, for review preview",
|
|
"nullable": true
|
|
},
|
|
"seriesId": {
|
|
"type": "integer",
|
|
"description": "The series this is for",
|
|
"format": "int32"
|
|
},
|
|
"chapterId": {
|
|
"type": "integer",
|
|
"format": "int32",
|
|
"nullable": true
|
|
},
|
|
"libraryId": {
|
|
"type": "integer",
|
|
"description": "The library this series belongs in",
|
|
"format": "int32"
|
|
},
|
|
"username": {
|
|
"type": "string",
|
|
"description": "The user who wrote this",
|
|
"nullable": true
|
|
},
|
|
"userId": {
|
|
"type": "integer",
|
|
"description": "UserId of the reviewer, only applicable for API.Services.Plus.ScrobbleProvider.Kavita",
|
|
"format": "int32"
|
|
},
|
|
"totalVotes": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
},
|
|
"rating": {
|
|
"type": "number",
|
|
"format": "float"
|
|
},
|
|
"rawBody": {
|
|
"type": "string",
|
|
"nullable": true
|
|
},
|
|
"score": {
|
|
"type": "integer",
|
|
"description": "How many upvotes this review has gotten",
|
|
"format": "int32"
|
|
},
|
|
"siteUrl": {
|
|
"type": "string",
|
|
"description": "If External, the url of the review",
|
|
"nullable": true
|
|
},
|
|
"isExternal": {
|
|
"type": "boolean",
|
|
"description": "Does this review come from an external Source"
|
|
},
|
|
"provider": {
|
|
"enum": [
|
|
0,
|
|
1,
|
|
2,
|
|
3,
|
|
4
|
|
],
|
|
"type": "integer",
|
|
"description": "If this review is External, which Provider did it come from",
|
|
"format": "int32"
|
|
},
|
|
"authority": {
|
|
"enum": [
|
|
0,
|
|
1
|
|
],
|
|
"type": "integer",
|
|
"description": "Source of the Rating",
|
|
"format": "int32"
|
|
}
|
|
},
|
|
"additionalProperties": false,
|
|
"description": "Represents a User Review for a given Series"
|
|
},
|
|
"UserReviewExtendedDto": {
|
|
"type": "object",
|
|
"properties": {
|
|
"id": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
},
|
|
"body": {
|
|
"type": "string",
|
|
"description": "The main review",
|
|
"nullable": true
|
|
},
|
|
"seriesId": {
|
|
"type": "integer",
|
|
"description": "The series this is for",
|
|
"format": "int32"
|
|
},
|
|
"chapterId": {
|
|
"type": "integer",
|
|
"format": "int32",
|
|
"nullable": true
|
|
},
|
|
"libraryId": {
|
|
"type": "integer",
|
|
"description": "The library this series belongs in",
|
|
"format": "int32"
|
|
},
|
|
"username": {
|
|
"type": "string",
|
|
"description": "The user who wrote this",
|
|
"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,
|
|
"description": "Represents information around a user's tokens and their status"
|
|
},
|
|
"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",
|
|
"description": "This will map to MinNumber. Number was removed in v0.7.13.8/v0.7.14",
|
|
"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",
|
|
"description": "When chapter was created in local server time",
|
|
"format": "date-time"
|
|
},
|
|
"lastModified": {
|
|
"type": "string",
|
|
"description": "When chapter was last modified in local server time",
|
|
"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
|
|
}
|
|
},
|
|
"additionalProperties": false
|
|
},
|
|
"YearMonthGroupingDto": {
|
|
"type": "object",
|
|
"properties": {
|
|
"year": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
},
|
|
"month": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
}
|
|
},
|
|
"additionalProperties": false
|
|
},
|
|
"YearMonthGroupingDtoStatCount": {
|
|
"type": "object",
|
|
"properties": {
|
|
"value": {
|
|
"$ref": "#/components/schemas/YearMonthGroupingDto"
|
|
},
|
|
"count": {
|
|
"type": "integer",
|
|
"format": "int64"
|
|
}
|
|
},
|
|
"additionalProperties": false
|
|
}
|
|
},
|
|
"securitySchemes": {
|
|
"AuthKey": {
|
|
"type": "apiKey",
|
|
"description": "Auth Key authentication. Enter your Auth key from your user settings",
|
|
"name": "x-api-key",
|
|
"in": "header"
|
|
}
|
|
}
|
|
},
|
|
"security": [
|
|
{ }
|
|
],
|
|
"tags": [
|
|
{
|
|
"name": "Account",
|
|
"description": "All Account matters"
|
|
},
|
|
{
|
|
"name": "Activity"
|
|
},
|
|
{
|
|
"name": "Admin"
|
|
},
|
|
{
|
|
"name": "Annotation"
|
|
},
|
|
{
|
|
"name": "Book"
|
|
},
|
|
{
|
|
"name": "Chapter"
|
|
},
|
|
{
|
|
"name": "Collection",
|
|
"description": "APIs for Collections"
|
|
},
|
|
{
|
|
"name": "ColorScape"
|
|
},
|
|
{
|
|
"name": "Deprecated",
|
|
"description": "All APIs here are subject to be removed and are no longer maintained. Will be removed v0.9.0"
|
|
},
|
|
{
|
|
"name": "WantToRead",
|
|
"description": "Responsible for all things Want To Read"
|
|
},
|
|
{
|
|
"name": "Device",
|
|
"description": "Responsible 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"
|
|
}
|
|
]
|
|
} |