Skip to main content

Elements Directory

Every element on the periodic table, its route, backend mount, and auth model, in one table. "Public reads" means unauthenticated GETs; writes always need a token unless noted.

ElementRouteBackend mountAuth modelWhat it is
Journal/journal/api/journalpublic reads; scoped writescollaborative wiki-journal, see Journal API
Documentation/docs(frontend only)fully publicthese docs; /llms.txt, /llms-full.txt
Courses/courses/api/coursespublic reads; scoped writesAI-classified course catalog, see Courses API
Trips/trips/api/tripspublic reads AND anonymous createtrip itinerary pastebin, see Trips API
Knowledge/knowledge/api/knowledgepublic reads; scoped writesAI-classified knowledge base, see Knowledge API
Vocabulary/vocabulary/api/vocabularypublic reads; knowledge:write writesnarrower view of the same data
Scoreboard/scoreboard/api/scoreboardpublic reads; entries:write writesIRL game scoreboard (games, players, live matches)
Tea/journal/tea/api/tea-entriesauthed author; PIN-gated sharesprivate entries unlocked per-entry via the X-Tea-Pin header
Skincare/skincare/api/skincareauthed only, owner-scopedAM/PM routine tracker
Practice/practice/api/practiceauthed, practice:write writestraining sessions + vocab SRS
RNG Capitalist/rng-capitalist/api/rngauthed (any PAT), no scopeAI purchase-decision roulette; evaluate costs an LLM call, 10/min
Who Owes Me/who-owes-me/api/loansauthed, no scopepersonal loan ledger; non-owner mutations 403
Slot assignments(homepage)/api/slot-assignmentsauthedperiodic-table layout persistence; PUT replaces the whole map
Activities(journal sidebar)/api/activities/:datepublic read onlydaily activity feed; ingest is cron/admin only

Cross-element gotchas

  • Tea PIN flow: GET /api/tea-entries/:id returns 401 PIN required without a valid 4-digit X-Tea-Pin header, 403 on a wrong PIN, 429 after 10 failures per entry per minute. Distinguish the three.
  • Skincare reorder is POST /api/skincare/reorder (declared before /:id) and requires the COMPLETE ordered id list for that routine.
  • Scoreboard GET /icons/search requires auth because it spends GitHub API quota; deleting a player with match history is a 409.
  • RNG evaluate auto-bans a denied category for 30 days; there is no unban endpoint.
  • Admin-gated or machine-only surfaces (practice settings PATCH, activity ingest, wechat ingest, calendar connect) are not usable with PATs; skip them.