Skip to content

API status ​

Which parts of the source API Mana uses today. Everything not listed here is used. Methods marked "not used yet" are part of the API and safe to implement, but Mana does not call them, so they have no effect for now.

Not used yet ​

AreaMethods / propertiesNotes
First-run setupgetSetupMenu, validateSetupForm, isSourceSetupMana shows no setup forms.
Password sign-inhandleBasicAuth, BasicAuthenticationUIIdentifierOnly OAuth is offered, for sources and trackers.
Web sign-ingetWebAuthRequestURL, didReceiveSessionCookieFromWebAuthResponseOnly OAuth is offered.
Marking chaptersonChaptersMarkedNever called, but still required for reading events (see below).
Library eventsonContentsAddedToLibrary, onContentsRemovedFromLibraryAdding or removing titles does not notify the source.
Library linksgetLibraryPageLinksThe links are not shown anywhere.
Progress syncgetProgressStateLibrary updates don't ask the source which chapters were read.
Library syncsyncUserLibrary, getGroupedUpdatesLibrary updates check titles one by one.
Extra profile sectionsgetAdditionalInfoSectionItemsSections show only the items in Content.additionalInfo; hasMore has no effect.

Partly used ​

MethodWhat Mana usesWhat it ignores
onChapterRead, onPageReadCalls from the book reader (EPUB, PDF, text)The image reader does not send reading events.

Things to watch for ​

Reading events are only switched on when the source defines both onChaptersMarked and onChapterRead, even though Mana never calls onChaptersMarked today.

Reading events
onChaptersMarked must exist for onChapterRead and onPageRead to arrive
ts
import { Body } from "@mana-app/types";

// Define it, even as a no-op, so the reading events reach your source.
async onChaptersMarked(contentId: string, chapterIds: string[], completed: boolean): Promise<void> {}

async onChapterRead(contentId: string, chapterId: string): Promise<void> {
  await this.http.post("/api/history", Body.json({ series: contentId, chapter: chapterId }));
}

One name differs from @mana-app/types:

Use thisNot thisWhy
BasicAuthenticationUIIdentifierBasicAuthUIIdentifierThe build reads this name to label the sign-in field.