Research: tt-rss JSON API surface for MVP #2

Closed
opened 2026-08-02 15:15:19 +00:00 by TheAnachronism · 1 comment

Part of #1

Question

What is the exact tt-rss JSON API surface this MVP needs — endpoints, parameters, response shapes, auth/session rules, and nested-category semantics — drawn from the local clone at /home/theanachronism/git/github/tt-rss/ (primarily classes/API.php and related helpers)?

Cover at least: login/logout/session; getApiLevel; getCategories (nesting / parent relationships); getFeeds; getHeadlines (feed vs category, unread-only, virtual feed ids for All/Fresh/Starred); getArticle; updateArticle (read/unread, starred); getCounters / getUnread; any gotchas for multi-instance clients (base URL, cookies/session_id, API disabled prefs).

Part of #1 ## Question What is the exact tt-rss JSON API surface this MVP needs — endpoints, parameters, response shapes, auth/session rules, and nested-category semantics — drawn from the local clone at `/home/theanachronism/git/github/tt-rss/` (primarily `classes/API.php` and related helpers)? Cover at least: login/logout/session; getApiLevel; getCategories (nesting / parent relationships); getFeeds; getHeadlines (feed vs category, unread-only, virtual feed ids for All/Fresh/Starred); getArticle; updateArticle (read/unread, starred); getCounters / getUnread; any gotchas for multi-instance clients (base URL, cookies/session_id, API disabled prefs).
Author
Owner

Resolution

Documented the MVP tt-rss JSON API surface from the local clone (classes/API.php et al.).

Gist: API level 23; JSON POST to {base}/api/ with sid (cookies disabled); virtual feeds All=-4 / Fresh=-3 / Starred=-1 (disambiguate negative ids with is_cat); getCategories omits parent_cat — nest via recursive getFeeds(include_nested) or getFeedTree; category lists need include_nested for descendants; ENABLE_API_ACCESS defaults off.

Doc: docs/research/tt-rss-api-surface.md on master (endpoints, params, response shapes, auth, nesting, multi-instance gotchas).

## Resolution Documented the MVP tt-rss JSON API surface from the local clone (`classes/API.php` et al.). **Gist:** API level 23; JSON `POST` to `{base}/api/` with `sid` (cookies disabled); virtual feeds All=`-4` / Fresh=`-3` / Starred=`-1` (disambiguate negative ids with `is_cat`); `getCategories` omits `parent_cat` — nest via recursive `getFeeds(include_nested)` or `getFeedTree`; category lists need `include_nested` for descendants; `ENABLE_API_ACCESS` defaults off. **Doc:** [`docs/research/tt-rss-api-surface.md`](https://git.anachronis.dev/TheAnachronism/tt-rss-viewer/src/branch/master/docs/research/tt-rss-api-surface.md) on `master` (endpoints, params, response shapes, auth, nesting, multi-instance gotchas).
Sign in to join this conversation.
No description provided.