sources
Discovery-source state and triggers
📄️ List every registered discovery source with its last-poll markers.
List every registered discovery source with its last-poll markers.
📄️ Fan-out trigger for every registered source. Returns a per-source triggered/skipped result without aggregating: callers see the same per-source outcomes a series of single-source calls would have produced.
Fan-out trigger for every registered source. Returns a per-source
📄️ Discovery sources that have linked at least one release, with the count of distinct series each resolved to (sorted by descending count, then name). Powers the admin-only source filter's dropdown. Admin-only (lives in the `require_admin` group) since the filter it feeds is itself admin-only — there's no reason to expose the operator's feed names on a public read.
Discovery sources that have linked at least one release, with the count of
📄️ Trigger an in-process historical backfill for the named source. Runs the same loop as the `tsundoku backfill` CLI, but inside the serve process under the shared per-source mutex, so it cannot race a cron poll (returns `skipped = true` when work is already in flight). Returns `422` when the source's kind does not support backfill.
Trigger an in-process historical backfill for the named source. Runs
📄️ Trigger a one-shot poll for the named source. Uses the same per-source mutex the cron job holds, so a manual kick during a scheduled tick is silently skipped (`skipped = true`).
Trigger a one-shot poll for the named source. Uses the same per-source
📄️ Re-fetch the detail page for the source's already-persisted releases that match `statuses`, refreshing their source-derived columns (files, description, extracted links, information URL) without touching resolution state. Use after a parser change adds or fixes a detail-page field. Shares the per-source mutex, so it cannot race a cron poll / backfill (returns `skipped = true` when work is already in flight).
Re-fetch the detail page for the source's already-persisted releases that