An extension is an Android app with no screens. Katari finds it among the installed apps, loads its code, and asks it for sources. On Linux, Katari converts the APK when it installs it and runs its code on stand-ins for the parts of Android it uses. A source is one site, usually in one language, and Katari calls these methods on it:
suspendfun getPopularContent( page: Int ): EntryPageResult<SEntry> - For the source's Popular list, one page at a time.
suspendfun getLatestUpdates( page: Int ): EntryPageResult<SEntry> - For the source's Latest list, one page at a time.
suspendfun getSearchContent( page: Int, query: String, filters: EntryFilterList ): EntryPageResult<SEntry> - For a search in the source, with the user's filters.
suspendfun refresh( entry: SEntry, existingChapters: List<SEntryChapter>, fetchDetails: Boolean, fetchChapters: Boolean ): EntryRefresh - When a title's page opens or is refreshed, for its details, its chapters or both, and when library updates look for new chapters.
suspendfun getMedia( chapter: SEntryChapter, selection: PlaybackSelection = PlaybackSelection() ): EntryMedia - When a chapter or episode opens or is downloaded.
The source covers each of them. One source can serve comics, video and books, even mixed in one list, since every title it returns says which kind it is.