Search & Feed APIs (api/search.php, api/feed.php)
Standalone Qwiki exposes read-only endpoints for full-text search and category syndication, both enforcing session, visibility, and lifecycle gating.
Full-Text Search (api/search.php)
Endpoint: GET /api/search.php?q=<query>
- Response Format:
{ "success": true, "results": ["user-markdown-and-editor", "tech-headless-publish-api"] } - How Matching Works:
- Checks
Auth::canView($config)βreturns an emptyresultsarray if Private Portal mode is active and the caller is unauthenticated. - Warms remote transclusion caches via
RemoteContentManager::warmAllRemoteCaches(). - Traverses categories, sub-folders, and hyperlinks recursively, skipping
admin_onlyitems for non-admins,logged_initems for unauthenticated guests, anddraft/in_review/archivedchapters viaNavigation::isChapterVisibleForStatus(). - Matches
qcase-insensitively against documenttitle,description, and body text extracted throughExtensionManager::extractSearchableText().
- Checks
RSS / Atom Feed Syndication (api/feed.php)
Endpoint: GET /api/feed.php[?category=<id-or-title>][&token=<feedAccessToken>]
- Access Control:
- If
feedAccessTokenis set in βοΈ Settings β π‘ Feeds & Integrations, or if Private Portal (requireLoginToView) is active, callers must provide?token=<feedAccessToken>(validated withhash_equals()) or hold an authenticated viewer/admin sessionβotherwise the endpoint returns403. - Inherited category visibility is evaluated recursively (
admin_only>logged_in>public), and unpublished lifecycle statuses are excluded.
- If
- Scoping: Omit
categoryto syndicate recent public items across the wiki (capped byfeedItemCount, default10), or pass?category=<id>to syndicate a single category or nested sub-category.