EvilFlowers Catalog (0.13.0)

Download OpenAPI specification:

A e-book catalog server compatible with OPDS 1.2, written in Python with a straightforward management REST API for CRUD operations.

API Keys

List API keys

Retrieve a paginated list of API keys in the system. Returns API key metadata including creation date, user association, and key status. Supports filtering and pagination. Superusers can view all keys, while regular users see only their own keys.

Authorizations:
basicAuthbearerAuth
query Parameters
user_id
string <uuid>

Filter by user_id (exact)

name
string

Filter by name (unaccent, icontains)

last_seen_at__gte
string <date-time>

Filter by last_seen_at__gte (gte)

last_seen_at__lte
string <date-time>

Filter by last_seen_at__lte (lte)

Responses

Response samples

Content type
application/json
{
  • "metadata": {
    },
  • "items": [
    ]
}

Create new API key

Generate a new API key for the authenticated user. Creates a unique API key that can be used for programmatic access to the API. Superusers can create keys for other users by specifying a user_id. Returns the generated key details including the key value for initial setup.

Authorizations:
basicAuthbearerAuth
Request Body schema: application/json
user_id
string <uuid> (user_id)
name
string (name) <= 100 characters
is_active
boolean (is_active)

Responses

Request samples

Content type
application/json
{
  • "user_id": "a169451c-8525-4352-b8ca-070dd449a1a5",
  • "name": "string",
  • "is_active": true
}

Response samples

Content type
application/json
{
  • "response": {
    }
}

Delete API key

Permanently delete an API key, immediately revoking its access to the API. Only the key owner or superusers can delete keys. Once deleted, the key cannot be recovered and any applications using it will lose access. Returns 404 if key doesn't exist or user lacks permission.

Authorizations:
basicAuthbearerAuth
path Parameters
api_key_id
required
string <uuid>

Responses

Response samples

Content type
application/json
{ }

Users

List system users

Retrieve a paginated list of users in the system. Supports filtering by username, name, surname, active status, and last login date. Requires appropriate permissions to access user information.

Authorizations:
basicAuthbearerAuth
query Parameters
id
string <uuid>

Filter by id (exact)

username
string

Filter by username (icontains)

name
string

Filter by name (unaccent, icontains)

surname
string

Filter by surname (unaccent, icontains)

is_active
boolean

Filter by is_active (exact)

last_login_gte
string <date-time>

Filter by last_login_gte (gte)

last_login_lte
string <date-time>

Filter by last_login_lte (lte)

Responses

Response samples

Content type
application/json
{
  • "metadata": {
    },
  • "items": [
    ]
}

Create a new user account

Create a new user account with authentication credentials and profile information. The user will be able to authenticate and access catalogs based on assigned permissions.

Authorizations:
basicAuthbearerAuth
Request Body schema: application/json
name
required
string (name) <= 30 characters
surname
required
string (surname) <= 150 characters
password
required
string (password)
is_active
boolean (is_active)
username
required
string (username) <= 200 characters

Responses

Request samples

Content type
application/json
{
  • "name": "string",
  • "surname": "string",
  • "password": "string",
  • "is_active": true,
  • "username": "string"
}

Response samples

Content type
application/json
{
  • "response": {
    }
}

Get current user profile

Get detailed information about the currently authenticated user including profile data, permissions, and accessible catalogs. This endpoint allows users to view their own account information.

Authorizations:
basicAuthbearerAuth

Responses

Response samples

Content type
application/json
{
  • "response": {
    }
}

Get user details

Retrieve detailed information about a specific user, including their profile information, permissions, and catalog access. Requires appropriate permissions to view user details.

Authorizations:
basicAuthbearerAuth
path Parameters
user_id
required
string <uuid>

Responses

Response samples

Content type
application/json
{
  • "response": {
    }
}

Update user profile

Update user profile information including name, surname, email, and active status. Requires appropriate permissions to modify user accounts.

Authorizations:
basicAuthbearerAuth
path Parameters
user_id
required
string <uuid>
Request Body schema: application/json
name
required
string (name) <= 30 characters
surname
required
string (surname) <= 150 characters
password
string (password)
is_active
boolean (is_active)

Responses

Request samples

Content type
application/json
{
  • "name": "string",
  • "surname": "string",
  • "password": "string",
  • "is_active": true
}

Response samples

Content type
application/json
{
  • "response": {
    }
}

Delete user account

Permanently delete a user account and all associated data including annotations, shelf records, and access permissions. This action is irreversible and requires appropriate permissions.

Authorizations:
basicAuthbearerAuth
path Parameters
user_id
required
string <uuid>

Responses

Response samples

Content type
application/json
{ }

Catalogs

List accessible catalogs

Retrieve a paginated list of catalogs accessible to the authenticated user. Supports filtering by title and URL name. Returns both public catalogs and private catalogs the user has access to.

Authorizations:
basicAuthbearerAuth
query Parameters
title
string

Filter by title (unaccent, icontains)

url_name
string

Filter by url_name (unaccent, icontains)

Responses

Response samples

Content type
application/json
{
  • "metadata": {
    },
  • "items": [
    ]
}

Create a new catalog

Create a new catalog to organize and manage publications. A catalog is a container for entries (books, articles, etc.) and can be configured with access permissions, visibility settings, and custom metadata.

Authorizations:
basicAuthbearerAuth
Request Body schema: application/json
url_name
required
string (url_name)
title
required
string (title) <= 100 characters
is_public
boolean (is_public)
Array of objects (users)

Responses

Request samples

Content type
application/json
{
  • "url_name": "string",
  • "title": "string",
  • "is_public": true,
  • "users": [
    ]
}

Response samples

Content type
application/json
{
  • "response": {
    }
}

Get catalog details

Retrieve detailed information about a specific catalog, including its metadata, statistics, and access permissions. This endpoint provides comprehensive information about the catalog's configuration and contents.

Authorizations:
basicAuthbearerAuth
path Parameters
catalog_id
required
string <uuid>

Responses

Response samples

Content type
application/json
{
  • "response": {
    }
}

Update catalog metadata

Update the metadata and configuration of an existing catalog. This includes title, description, visibility settings, and access permissions. Only users with manage permissions can update a catalog.

Authorizations:
basicAuthbearerAuth
path Parameters
catalog_id
required
string <uuid>
Request Body schema: application/json
url_name
required
string (url_name)
title
required
string (title) <= 100 characters
is_public
boolean (is_public)
Array of objects (users)

Responses

Request samples

Content type
application/json
{
  • "url_name": "string",
  • "title": "string",
  • "is_public": true,
  • "users": [
    ]
}

Response samples

Content type
application/json
{
  • "response": {
    }
}

Delete catalog

Permanently delete a catalog and all its associated entries, acquisition files, and user data. This action is irreversible and requires appropriate permissions. All content within the catalog will be lost.

Authorizations:
basicAuthbearerAuth
path Parameters
catalog_id
required
string <uuid>

Responses

Response samples

Content type
application/json
{ }

Feeds

List feeds with filtering

Retrieve a paginated list of feeds with filtering options. Supports filtering by creator, catalog, title, kind (navigation/acquisition), and parent feed relationships.

Authorizations:
basicAuthbearerAuth
query Parameters
creator_id
string <uuid>

Filter by creator_id (exact)

catalog_id
string <uuid>

Filter by catalog_id (exact)

title
string

Filter by title (unaccent, icontains)

kind
string
Enum: "navigation" "acquisition"

Filter by kind (exact)

parent_id
string

Filter by parent_id (exact)

Responses

Response samples

Content type
application/json
{
  • "metadata": {
    },
  • "items": [
    ]
}

Create a new feed

Create a new feed to organize and categorize entries within a catalog. Feeds can be used to group related publications, create reading lists, or organize content by topic, genre, or any custom criteria.

Authorizations:
basicAuthbearerAuth
Request Body schema: application/json
catalog_id
required
string <uuid> (catalog_id)
title
required
string (title) <= 100 characters
url_name
required
string (url_name) <= 50 characters
kind
required
string (kind)
Enum: "navigation" "acquisition"
content
required
string (content)
per_page
integer (per_page) >= 1
entries
string <uuid> (entries)
parents
string <uuid> (parents)

Responses

Request samples

Content type
application/json
{
  • "catalog_id": "de71ec92-2e85-49a4-a1c0-bcbd8d385f9e",
  • "title": "string",
  • "url_name": "string",
  • "kind": "navigation",
  • "content": "string",
  • "per_page": 1,
  • "entries": "c5e7e228-423f-4bf8-9a7f-3d8bcde9b8d4",
  • "parents": "4a2a1780-dcad-496e-bb7c-2bbf3a673e26"
}

Response samples

Content type
application/json
{
  • "response": {
    }
}

Get feed details

Retrieve detailed information about a specific feed including its metadata, content, associated entries, and hierarchical relationships with parent and child feeds.

Authorizations:
basicAuthbearerAuth
path Parameters
feed_id
required
string <uuid>

Responses

Response samples

Content type
application/json
{
  • "response": {
    }
}

Update feed metadata

Update feed metadata including title, content, associated entries, and feed relationships. Allows modification of feed organization and content curation.

Authorizations:
basicAuthbearerAuth
path Parameters
feed_id
required
string <uuid>
Request Body schema: application/json
catalog_id
required
string <uuid> (catalog_id)
title
required
string (title) <= 100 characters
url_name
required
string (url_name) <= 50 characters
kind
required
string (kind)
Enum: "navigation" "acquisition"
content
required
string (content)
per_page
integer (per_page) >= 1
entries
string <uuid> (entries)
parents
string <uuid> (parents)

Responses

Request samples

Content type
application/json
{
  • "catalog_id": "de71ec92-2e85-49a4-a1c0-bcbd8d385f9e",
  • "title": "string",
  • "url_name": "string",
  • "kind": "navigation",
  • "content": "string",
  • "per_page": 1,
  • "entries": "c5e7e228-423f-4bf8-9a7f-3d8bcde9b8d4",
  • "parents": "4a2a1780-dcad-496e-bb7c-2bbf3a673e26"
}

Response samples

Content type
application/json
{
  • "response": {
    }
}

Delete feed

Permanently delete a feed and remove its organizational structure. This does not delete the entries within the feed, only the feed container itself. This action is irreversible.

Authorizations:
basicAuthbearerAuth
path Parameters
feed_id
required
string <uuid>

Responses

Response samples

Content type
application/json
{ }

Authors

List all authors

Retrieve a paginated list of authors across all catalogs. Returns detailed author information including name, surname, and catalog associations. Supports filtering by various author attributes and provides comprehensive author metadata for content management.

Authorizations:
basicAuthbearerAuth
query Parameters
catalog_id
string <uuid>

Filter by catalog_id (exact)

name
string

Filter by name (unaccent, icontains)

surname
string

Filter by surname (unaccent, icontains)

query
string

Filter by query (exact)

Responses

Response samples

Content type
application/json
{
  • "metadata": {
    },
  • "items": [
    ]
}

Create new author

Create a new author record in a specific catalog. Requires catalog write permissions and validates that the author name/surname combination is unique within the target catalog. Returns the created author with detailed information including catalog association.

Authorizations:
basicAuthbearerAuth
Request Body schema: application/json
name
required
string (name) <= 255 characters
surname
required
string (surname) <= 255 characters
catalog_id
required
string <uuid> (catalog_id)

Responses

Request samples

Content type
application/json
{
  • "name": "string",
  • "surname": "string",
  • "catalog_id": "de71ec92-2e85-49a4-a1c0-bcbd8d385f9e"
}

Response samples

Content type
application/json
{
  • "response": {
    }
}

Get author details

Retrieve detailed information about a specific author. Returns comprehensive author data including name, surname, catalog information, and associated metadata. Requires catalog read permissions for the author's catalog.

Authorizations:
basicAuthbearerAuth
path Parameters
author_id
required
string <uuid>

Responses

Response samples

Content type
application/json
{
  • "response": {
    }
}

Update author information

Update an existing author's information. Allows modification of author name, surname, and catalog association. Validates uniqueness constraints and requires catalog manage permissions. Returns the updated author with all current information.

Authorizations:
basicAuthbearerAuth
path Parameters
author_id
required
string <uuid>
Request Body schema: application/json
name
required
string (name) <= 255 characters
surname
required
string (surname) <= 255 characters
catalog_id
required
string <uuid> (catalog_id)

Responses

Request samples

Content type
application/json
{
  • "name": "string",
  • "surname": "string",
  • "catalog_id": "de71ec92-2e85-49a4-a1c0-bcbd8d385f9e"
}

Response samples

Content type
application/json
{
  • "response": {
    }
}

Delete author

Permanently delete an author from the catalog. Requires catalog manage permissions and will remove all associations with entries. This action cannot be undone and may affect content that references this author.

Authorizations:
basicAuthbearerAuth
path Parameters
author_id
required
string <uuid>

Responses

Response samples

Content type
application/json
{ }

Categories

List all categories

Retrieve a paginated list of categories across all catalogs. Returns detailed category information including terms, descriptions, and catalog associations. Supports filtering by various category attributes to help manage content organization.

Authorizations:
basicAuthbearerAuth
query Parameters
catalog_id
string <uuid>

Filter by catalog_id (exact)

term
string

Filter by term (unaccent, iexact)

label
string

Filter by label (unaccent, icontains)

scheme
string

Filter by scheme (unaccent, icontains)

query
string

Filter by query (exact)

Responses

Response samples

Content type
application/json
{
  • "metadata": {
    },
  • "items": [
    ]
}

Create new category

Create a new category within a specific catalog. Requires catalog manage permissions and validates that the category term is unique within the system. Categories help organize and classify catalog entries for better content discovery and management.

Authorizations:
basicAuthbearerAuth
Request Body schema: application/json
catalog_id
string <uuid> (catalog_id)
term
required
string (term) <= 255 characters
label
string (label) <= 255 characters
scheme
string (scheme) <= 255 characters

Responses

Request samples

Content type
application/json
{
  • "catalog_id": "de71ec92-2e85-49a4-a1c0-bcbd8d385f9e",
  • "term": "string",
  • "label": "string",
  • "scheme": "string"
}

Response samples

Content type
application/json
{
  • "response": {
    }
}

Get category details

Retrieve detailed information about a specific category. Returns comprehensive category data including term, description, catalog association, and metadata. Requires catalog read permissions for the category's catalog.

Authorizations:
basicAuthbearerAuth
path Parameters
category_id
required
string <uuid>

Responses

Response samples

Content type
application/json
{
  • "response": {
    }
}

Update category information

Update an existing category's information. Allows modification of category term, description, and catalog association. Validates uniqueness constraints and requires catalog manage permissions. Returns the updated category with all current information.

Authorizations:
basicAuthbearerAuth
path Parameters
category_id
required
string <uuid>
Request Body schema: application/json
catalog_id
string <uuid> (catalog_id)
term
required
string (term) <= 255 characters
label
string (label) <= 255 characters
scheme
string (scheme) <= 255 characters

Responses

Request samples

Content type
application/json
{
  • "catalog_id": "de71ec92-2e85-49a4-a1c0-bcbd8d385f9e",
  • "term": "string",
  • "label": "string",
  • "scheme": "string"
}

Response samples

Content type
application/json
{
  • "response": {
    }
}

Delete category

Permanently delete a category from the catalog. Requires catalog manage permissions and will remove all associations with entries. This action cannot be undone and may affect content organization that references this category.

Authorizations:
basicAuthbearerAuth
path Parameters
category_id
required
string <uuid>

Responses

Response samples

Content type
application/json
{ }

Entries

List catalog entries with filtering and pagination

Retrieve a paginated list of entries from the catalog. Supports advanced filtering by catalog, author, category, language, publication date, and full-text search across titles, summaries, and content.

Authorizations:
basicAuthbearerAuth
query Parameters
creator_id
string <uuid>

Filter by creator_id (exact)

catalog_id
string <uuid>

Filter by catalog_id (exact)

catalog_title
string

Filter by catalog_title (unaccent, icontains)

author_id
string <uuid>

Filter by author_id (exact)

author
string

Filter by author (exact)

category_id
string <uuid>

Filter by category_id (exact)

category_term
string

Filter by category_term (exact)

language_id
string <uuid>

Filter by language_id (exact)

language_code
string

Filter by language_code (exact)

title
string

Filter by title (unaccent, icontains)

summary
string

Filter by summary (unaccent, icontains)

query
string

Filter by query (exact)

feed_id
string <uuid>

Filter by feed_id (exact)

published_at__gte
string

Filter by published_at__gte (exact)

published_at__lte
string

Filter by published_at__lte (exact)

config__readium_enabled
boolean

Filter by config__readium_enabled (exact)

Responses

Response samples

Content type
application/json
{
  • "metadata": {
    },
  • "items": [
    ]
}

Fetch entry metadata from external sources

Fetch metadata for a publication from external sources using various identifiers (ISBN, DOI, etc.). This endpoint allows you to retrieve detailed information about a book or publication before creating an entry in the catalog.

Authorizations:
basicAuthbearerAuth

Responses

Response samples

Content type
application/json
{ }

Create a new catalog entry

Create a new entry in the specified catalog. An entry represents a publication (book, article, etc.) with metadata like title, authors, publication date, and associated acquisition files.

Authorizations:
basicAuthbearerAuth
path Parameters
catalog_id
required
string <uuid>
Request Body schema: application/json
id
string (id)
language_code
required
string (language_code) <= 3 characters
category_ids
string <uuid> (category_ids)
Array of objects (authors)
author_ids
string <uuid> (author_ids)
feeds
string <uuid> (feeds)
Array of objects (categories)
title
required
string (title) <= 255 characters
publisher
string (publisher) <= 255 characters
published_at
string (published_at)
summary
string (summary)
content
string (content)
Array of objects (acquisitions)
identifiers
string (identifiers)
image
string <uri> (image)
object (EntryConfigForm)
citation
string (citation)

Responses

Request samples

Content type
application/json
{
  • "id": "string",
  • "language_code": "str",
  • "category_ids": "1f6df996-f8f0-4483-ba5d-fd35f7dee4e8",
  • "authors": [
    ],
  • "author_ids": "7150eaec-4824-44f2-8271-22403cce7e08",
  • "feeds": "fa541e7b-3e51-43a5-beea-0fd4442a973a",
  • "categories": [
    ],
  • "title": "string",
  • "publisher": "string",
  • "published_at": "string",
  • "summary": "string",
  • "content": "string",
  • "acquisitions": [
    ],
  • "identifiers": "string",
  • "image": "http://example.com",
  • "config": {
    },
  • "citation": "string"
}

Response samples

Content type
application/json
{
  • "response": {
    }
}

Get entry details

Retrieve detailed information about a specific entry including its metadata, authors, categories, acquisition files, and user-specific information like shelf status.

Authorizations:
basicAuthbearerAuth
path Parameters
catalog_id
required
string <uuid>
entry_id
required
string <uuid>

Responses

Response samples

Content type
application/json
{
  • "response": {
    }
}

Create acquisition file for entry

Create a new acquisition file for the specified entry. Acquisitions represent downloadable content (PDF, EPUB, etc.) associated with an entry, including file metadata and optional pricing information.

Authorizations:
basicAuthbearerAuth
path Parameters
catalog_id
required
string <uuid>
entry_id
required
string <uuid>
Request Body schema: application/json
relation
string (relation)
Enum: "acquisition" "open-access" "borrow"
Array of objects (prices)

Responses

Request samples

Content type
application/json
{
  • "relation": "acquisition",
  • "prices": [
    ]
}

Response samples

Content type
application/json
{
  • "response": {
    }
}

Update entry metadata

Update the metadata of an existing entry. This includes title, summary, authors, categories, publication information, and configuration settings for features like OCR and annotations.

Authorizations:
basicAuthbearerAuth
path Parameters
catalog_id
required
string <uuid>
entry_id
required
string <uuid>
Request Body schema: application/json
id
string (id)
language_code
required
string (language_code) <= 3 characters
category_ids
string <uuid> (category_ids)
Array of objects (authors)
author_ids
string <uuid> (author_ids)
feeds
string <uuid> (feeds)
Array of objects (categories)
title
required
string (title) <= 255 characters
publisher
string (publisher) <= 255 characters
published_at
string (published_at)
summary
string (summary)
content
string (content)
Array of objects (acquisitions)
identifiers
string (identifiers)
image
string <uri> (image)
object (EntryConfigForm)
citation
string (citation)

Responses

Request samples

Content type
application/json
{
  • "id": "string",
  • "language_code": "str",
  • "category_ids": "1f6df996-f8f0-4483-ba5d-fd35f7dee4e8",
  • "authors": [
    ],
  • "author_ids": "7150eaec-4824-44f2-8271-22403cce7e08",
  • "feeds": "fa541e7b-3e51-43a5-beea-0fd4442a973a",
  • "categories": [
    ],
  • "title": "string",
  • "publisher": "string",
  • "published_at": "string",
  • "summary": "string",
  • "content": "string",
  • "acquisitions": [
    ],
  • "identifiers": "string",
  • "image": "http://example.com",
  • "config": {
    },
  • "citation": "string"
}

Response samples

Content type
application/json
{
  • "response": {
    }
}

Delete catalog entry

Remove an entry from the catalog. This will also delete all associated acquisition files and user data (annotations, shelf records). This action is irreversible.

Authorizations:
basicAuthbearerAuth
path Parameters
catalog_id
required
string <uuid>
entry_id
required
string <uuid>

Responses

Response samples

Content type
application/json
{ }

Acquisitions

List acquisition files

Retrieve a paginated list of acquisition files with filtering options. Supports filtering by entry, file type, media type, and availability status. Acquisitions represent downloadable content associated with catalog entries.

Authorizations:
basicAuthbearerAuth
query Parameters
entry_id
string <uuid>

Filter by entry_id (exact)

relation
string
Enum: "acquisition" "open-access" "borrow"

Filter by relation (exact)

mime
string

Filter by mime (exact)

Responses

Response samples

Content type
application/json
{
  • "metadata": {
    },
  • "items": [
    ]
}

Create acquisition file

Create a new acquisition file for an entry. Acquisitions represent downloadable content (PDF, EPUB, etc.) with associated metadata, pricing information, and access controls. Note: This endpoint is currently not implemented.

Authorizations:
basicAuthbearerAuth

Responses

Response samples

Content type
application/json
{
  • "title": "string",
  • "type": null,
  • "detail": null,
  • "trace": null,
  • "additional_data": null
}

Get acquisition details

Retrieve detailed information about a specific acquisition file including its metadata, file properties, pricing information, and download availability.

Authorizations:
basicAuthbearerAuth
path Parameters
acquisition_id
required
string <uuid>

Responses

Response samples

Content type
application/json
{
  • "response": {
    }
}

Update acquisition metadata

Update acquisition metadata including type, relation, pricing information, and availability settings. The actual file content is immutable - only metadata can be modified through the API. This allows for price updates, availability changes, and metadata corrections.

Authorizations:
basicAuthbearerAuth
path Parameters
acquisition_id
required
string <uuid>
Request Body schema: application/json
relation
string (relation)
Enum: "acquisition" "open-access" "borrow"
Array of objects (prices)

Responses

Request samples

Content type
application/json
{
  • "relation": "acquisition",
  • "prices": [
    ]
}

Response samples

Content type
application/json
{
  • "response": {
    }
}

Delete acquisition file

Remove an acquisition file from the catalog. This deletes the database record immediately, while the actual file removal occurs later during the orphaned files cleanup process. This action is irreversible.

Authorizations:
basicAuthbearerAuth
path Parameters
acquisition_id
required
string <uuid>

Responses

Response samples

Content type
application/json
{ }

Shelf Records

List user's shelf records

Retrieve a paginated list of shelf records for the authenticated user. Returns all books, entries, and catalog items that the user has added to their personal shelf. Requires authentication and filters results to only show the current user's shelf items.

Authorizations:
basicAuthbearerAuth
query Parameters
catalog_id
string <uuid>

Filter by catalog_id (exact)

catalog_title
string

Filter by catalog_title (unaccent, icontains)

entry_id
string <uuid>

Filter by entry_id (exact)

user_id
string <uuid>

Filter by user_id (exact)

author_id
string <uuid>

Filter by author_id (exact)

author
string

Filter by author (exact)

category_id
string <uuid>

Filter by category_id (exact)

category_term
string

Filter by category_term (exact)

language_id
string <uuid>

Filter by language_id (exact)

language_code
string

Filter by language_code (exact)

title
string

Filter by title (unaccent, icontains)

summary
string

Filter by summary (unaccent, icontains)

query
string

Filter by query (exact)

feed_id
string <uuid>

Filter by feed_id (exact)

Responses

Response samples

Content type
application/json
{
  • "metadata": {
    },
  • "items": [
    ]
}

Add entry to user's shelf

Add a new entry to the user's shelf. Creates a shelf record linking the authenticated user to a specific catalog entry. If the entry is already on the user's shelf, returns the existing record with HTTP 200 status. Requires authentication and valid entry ID.

Authorizations:
basicAuthbearerAuth
Request Body schema: application/json
entry_id
required
string <uuid> (entry_id)

Responses

Request samples

Content type
application/json
{
  • "entry_id": "31513983-613b-4481-b270-ae929f358bae"
}

Response samples

Content type
application/json
{
  • "response": {
    }
}

Remove entry from user's shelf

Remove a specific entry from the user's shelf. Permanently deletes the shelf record identified by the provided UUID. Only the shelf record owner can delete their own records. Returns 404 if the record doesn't exist or the user lacks permission.

Authorizations:
basicAuthbearerAuth
path Parameters
shelf_record_id
required
string <uuid>

Responses

Response samples

Content type
application/json
{ }

User Acquisitions

List all user acquisitions

Retrieve a paginated list of user acquisitions across the system. Returns acquisition records that represent user access to specific catalog entries. Supports filtering and pagination to manage large result sets. Includes acquisition details, user information, and associated entry metadata.

Authorizations:
basicAuthbearerAuth
query Parameters
user_id
string <uuid>

Filter by user_id (exact)

acquisition_id
string <uuid>

Filter by acquisition_id (exact)

type
string

Filter by type (iexact)

title
string

Filter by title (unaccent, icontains)

expire_at__gte
string <date-time>

Filter by expire_at__gte (gte)

expire_at__lte
string <date-time>

Filter by expire_at__lte (lte)

created_at__gte
string <date-time>

Filter by created_at__gte (gte)

created_at__lte
string <date-time>

Filter by created_at__lte (lte)

Responses

Response samples

Content type
application/json
{
  • "metadata": {
    },
  • "items": [
    ]
}

Create new user acquisition

Create a new user acquisition record, granting a user access to a specific catalog entry. Supports both personal and shared acquisition types. Validates user permissions for the target entry and handles single acquisition mode restrictions. Returns existing acquisition with redirect if already exists in single mode.

Authorizations:
basicAuthbearerAuth
Request Body schema: application/json
acquisition_id
required
string <uuid> (acquisition_id)
type
required
string (type)
Enum: "shared" "personal"
range
string (range)
expire_at
string <date-time> (expire_at)

Responses

Request samples

Content type
application/json
{
  • "acquisition_id": "5ab5272f-98fe-4d27-aa74-e5caaf7da967",
  • "type": "shared",
  • "range": "string",
  • "expire_at": "2019-08-24T14:15:22Z"
}

Response samples

Content type
application/json
{
  • "response": {
    }
}

Get user acquisition details

Retrieve detailed information about a specific user acquisition record. Returns acquisition metadata, associated entry details, user information, and access permissions. Validates that the requesting user has permission to view the acquisition record.

Authorizations:
basicAuthbearerAuth
path Parameters
user_acquisition_id
required
string <uuid>

UserAcquisition UUID

Responses

Response samples

Content type
application/json
{
  • "response": {
    }
}

Annotations

List user annotations

Retrieve a paginated list of annotations created by users. Annotations include highlights, notes, bookmarks, and other user-generated content associated with entries. Supports filtering by user, entry, and annotation type.

Authorizations:
basicAuthbearerAuth
query Parameters
user_acquisition_id
string <uuid>

Filter by user_acquisition_id (exact)

title
string

Filter by title (icontains)

user_id
string <uuid>

Filter by user_id (exact)

Responses

Response samples

Content type
application/json
{
  • "metadata": {
    },
  • "items": [
    ]
}

Create annotation

Create a new annotation for an entry. Annotations can be highlights, notes, bookmarks, or other user-generated content that enhances the reading experience. Each annotation is associated with a specific location within the entry.

Authorizations:
basicAuthbearerAuth
Request Body schema: application/json
user_acquisition_id
required
string <uuid> (user_acquisition_id)
title
required
string (title)

Responses

Request samples

Content type
application/json
{
  • "user_acquisition_id": "5839a804-7206-46c5-8771-3311902b8d95",
  • "title": "string"
}

Response samples

Content type
application/json
{
  • "response": {
    }
}

Get annotation details

Retrieve detailed information about a specific annotation including its content, position, type, and associated entry information.

Authorizations:
basicAuthbearerAuth
path Parameters
annotation_id
required
string <uuid>

Responses

Response samples

Content type
application/json
{
  • "response": {
    }
}

Update annotation

Update an existing annotation's content, position, or type. Only the annotation creator can modify their annotations. This allows users to edit their notes, adjust highlights, or change annotation properties.

Authorizations:
basicAuthbearerAuth
path Parameters
annotation_id
required
string <uuid>
Request Body schema: application/json
title
required
string (title)

Responses

Request samples

Content type
application/json
{
  • "title": "string"
}

Response samples

Content type
application/json
{
  • "response": {
    }
}

Delete annotation

Permanently delete an annotation. Only the annotation creator can delete their annotations. This action is irreversible and will remove all associated data.

Authorizations:
basicAuthbearerAuth
path Parameters
annotation_id
required
string <uuid>

Responses

Response samples

Content type
application/json
{ }

Annotation Items

AnnotationItemManagement.get

List AnnotationItems

Authorizations:
basicAuthbearerAuth
query Parameters
annotation_id
string <uuid>

Filter by annotation_id (exact)

page_number
integer <int32>

Filter by page_number (exact)

Responses

Response samples

Content type
application/json
{
  • "metadata": {
    },
  • "items": [
    ]
}

AnnotationItemManagement.post

Create AnnotationItem

Authorizations:
basicAuthbearerAuth
Request Body schema: application/json
annotation_id
required
string <uuid> (annotation_id)
content
required
string (content)
page
required
integer (page)

Responses

Request samples

Content type
application/json
{
  • "annotation_id": "4ed848c0-ec87-421a-9ec8-c4a4b0948c2a",
  • "content": "string",
  • "page": 0
}

Response samples

Content type
application/json
{
  • "response": {
    }
}

AnnotationItemDetail.get

Get AnnotationItem detail

Authorizations:
basicAuthbearerAuth
path Parameters
annotation_item_id
required
string <uuid>

Responses

Response samples

Content type
application/json
{
  • "response": {
    }
}

AnnotationItemDetail.put

Update AnnotationItem detail

Authorizations:
basicAuthbearerAuth
path Parameters
annotation_item_id
required
string <uuid>
Request Body schema: application/json
annotation_id
required
string <uuid> (annotation_id)
content
required
string (content)
page
required
integer (page)

Responses

Request samples

Content type
application/json
{
  • "annotation_id": "4ed848c0-ec87-421a-9ec8-c4a4b0948c2a",
  • "content": "string",
  • "page": 0
}

Response samples

Content type
application/json
{
  • "response": {
    }
}

AnnotationItemDetail.delete

Delete AnnotationItem

Authorizations:
basicAuthbearerAuth
path Parameters
annotation_item_id
required
string <uuid>

Responses

Response samples

Content type
application/json
{ }

Status

System status and health check

System status and health check endpoint that provides real-time information about the application's operational status. Returns system statistics, process states, and version information. Includes supervisord process monitoring and fails with 503 if critical processes are not running properly.

Authorizations:
basicAuthbearerAuth

Responses

Response samples

Content type
application/json
{ }

Tokens

Refresh access token

Generate a new access token using a valid refresh token. Validates the refresh token against the cache and returns a new access token for continued API access. The refresh token must be previously issued and not expired.

Authorizations:
basicAuthbearerAuth
Request Body schema: application/json
refresh
required
string (refresh)

Responses

Request samples

Content type
application/json
{
  • "refresh": "string"
}

Response samples

Content type
application/json
{
  • "response": {
    }
}

Create access token

Generate a new access token and refresh token pair using username and password authentication. Returns both an access token for immediate API access and a refresh token for obtaining new access tokens. Requires valid user credentials and creates a cached refresh token session.

Authorizations:
basicAuthbearerAuth
Request Body schema: application/json
username
required
string (username) <= 200 characters
password
required
string (password)

Responses

Request samples

Content type
application/json
{
  • "username": "string",
  • "password": "string"
}

Response samples

Content type
application/json
{
  • "response": {
    }
}

Enums

List available languages

Retrieve a paginated list of available languages that can be assigned to entries. This includes ISO language codes, native names, and English translations for internationalization support.

Authorizations:
basicAuthbearerAuth

Responses

Response samples

Content type
application/json
{
  • "metadata": {
    },
  • "items": [
    ]
}

Licenses

List all licenses

Retrieve a paginated list of licenses in the system. Returns license information including duration, start/end dates, user associations, and status. Supports filtering by various license attributes to help manage user access and permissions.

Authorizations:
basicAuthbearerAuth
query Parameters
user_id
string <uuid>

Filter by user_id (exact)

entry_id
string <uuid>

Filter by entry_id (exact)

state
string
Enum: "ready" "active" "returned" "expired" "revoked" "cancelled"

Filter by state (exact)

starts_at__gte
string <date-time>

Filter by starts_at__gte (gte)

starts_at__lte
string <date-time>

Filter by starts_at__lte (lte)

expires_at__gte
string <date-time>

Filter by expires_at__gte (gte)

expires_at__lte
string <date-time>

Filter by expires_at__lte (lte)

Responses

Response samples

Content type
application/json
{
  • "metadata": {
    },
  • "items": [
    ]
}

Create new license

Create a new license for the authenticated user. Generates a license with specified duration, automatically setting start and expiration dates. If no start date is provided, defaults to current timestamp. Returns the created license with all metadata.

Authorizations:
basicAuthbearerAuth
Request Body schema: application/json
entry_id
required
string <uuid> (entry_id)
state
required
string (state)
Enum: "ready" "active" "returned" "expired" "revoked" "cancelled"
duration
required
string (duration) ^P(?!P)(?:(\d+Y)?(\d+M)?(\d+D)?(T(?:(\d+H)?(\...

Duration in ISO 8601 format. Example: "PT1H30M" for 1 hour and 30 minutes. The format is defined as follows:

  • "P" indicates the period.
  • "Y" for years, "M" for months, "D" for days.
  • "T" indicates the start of the time section.
  • "H" for hours, "M" for minutes, "S" for seconds.
  • Valid examples include:
    • "PT30M" (30 minutes)
    • "P1Y2M10DT5H30M" (1 year, 2 months, 10 days, 5 hours, and 30 minutes)
starts_at
string <date-time> (starts_at)

Responses

Request samples

Content type
application/json
{
  • "entry_id": "31513983-613b-4481-b270-ae929f358bae",
  • "state": "ready",
  • "duration": "P14D",
  • "starts_at": "2019-08-24T14:15:22Z"
}

Response samples

Content type
application/json
{
  • "response": {
    }
}

Get license details

Retrieve detailed information about a specific license. Returns comprehensive license data including duration, start/end dates, user information, and current status. Requires license manage permissions for the license owner.

Authorizations:
basicAuthbearerAuth
path Parameters
license_id
required
string <uuid>

Responses

Response samples

Content type
application/json
{
  • "response": {
    }
}

Update license state

Update license state and properties. Supports state transitions like 'active', 'returned', 'renewed' etc. LCP operations are handled automatically based on state changes.

Authorizations:
basicAuthbearerAuth
path Parameters
license_id
required
string <uuid>
Request Body schema: application/json
state
required
string (state)
Enum: "ready" "active" "returned" "expired" "revoked" "cancelled"
duration
required
string (duration) ^P(?!P)(?:(\d+Y)?(\d+M)?(\d+D)?(T(?:(\d+H)?(\...

Duration in ISO 8601 format. Example: "PT1H30M" for 1 hour and 30 minutes. The format is defined as follows:

  • "P" indicates the period.
  • "Y" for years, "M" for months, "D" for days.
  • "T" indicates the start of the time section.
  • "H" for hours, "M" for minutes, "S" for seconds.
  • Valid examples include:
    • "PT30M" (30 minutes)
    • "P1Y2M10DT5H30M" (1 year, 2 months, 10 days, 5 hours, and 30 minutes)

Responses

Request samples

Content type
application/json
{
  • "state": "ready",
  • "duration": "P14D"
}

Response samples

Content type
application/json
{
  • "response": {
    }
}

Download LCP license file

Download the LCP license file for a specific license. Returns the actual LCP license JSON that can be imported into reading applications.

Authorizations:
basicAuthbearerAuth
path Parameters
license_id
required
string <uuid>

Responses

Response samples

Content type
application/json
{
  • "title": "string",
  • "type": null,
  • "detail": null,
  • "trace": null,
  • "additional_data": null
}

Readium

Get entry availability calendar

Get availability calendar for a readium-enabled entry. Returns information about available borrowing slots over a specified date range, suitable for displaying a calendar interface.

Authorizations:
basicAuthbearerAuth
path Parameters
entry_id
required
string <uuid>

Responses

Response samples

Content type
application/json
{ }

Files

AcquisitionDownload.get

Download Acquisition content

Authorizations:
basicAuthbearerAuth
path Parameters
acquisition_id
required
string <uuid>

Responses

Response samples

Content type
application/json
{
  • "title": "string",
  • "type": null,
  • "detail": null,
  • "trace": null,
  • "additional_data": null
}

UserAcquisitionDownload.get

Download UserAcquisition content

Authorizations:
basicAuthbearerAuth
path Parameters
user_acquisition_id
required
string <uuid>

Responses

Response samples

Content type
application/json
{
  • "title": "string",
  • "type": null,
  • "detail": null,
  • "trace": null,
  • "additional_data": null
}

EntryImageDownload.get

Download Entry cover image

Authorizations:
basicAuthbearerAuth
path Parameters
entry_id
required
string <uuid>

Responses

Response samples

Content type
application/json
{
  • "title": "string",
  • "type": null,
  • "detail": null,
  • "trace": null,
  • "additional_data": null
}

EntryThumbnailDownload.get

Download Entry thumbnail

Authorizations:
basicAuthbearerAuth
path Parameters
entry_id
required
string <uuid>

Responses

Response samples

Content type
application/json
{
  • "title": "string",
  • "type": null,
  • "detail": null,
  • "trace": null,
  • "additional_data": null
}