API

This is a list of the endpoints in the site. It includes both those that would be adequately described as API endpoints, as well as internal endpoints that are used for the UI. They are automatically created from the CLOS methods, hence the format: it follow's Snooze's approach, and so&OPTIONAL arguments are URI path components, and &KEY arguments are URL query parameters

Method Path Type Args Description
get /about text/html
get /agent application/json (&optional slug)
get /agent application/ld+json (&optional slug)
get /agent text/html (&optional slug) A minimal page for SLUG. Show name/title/affiliation when known, the bare slug otherwise.
get /api-doc text/html List every Snooze route (verb, path, content-type, args, docstring) in a web page.
get /auth-callback text/html (&key code) Exchange the auth code for tokens, verify, set the session cookie. CODE and the error params are read off the request, not Snooze's &key arg.
post /auth-delete-account application/x-www-form-urlencoded Permanently delete the current user's Supabase account and sign them out. Irreversible; the /settings UI gates this behind an in-page confirmation step before submitting.
get /auth-email text/html (&key sent) SENT is read off the query string, not Snooze's &key arg.
post /auth-email application/x-www-form-urlencoded (&key sent) Request a magic-link sign-in/registration email. Register and sign-in are the same flow. SENT is unused here (POST never receives it) but CLOS requires every method's lambda list to be congruent.
get /auth-login text/html (&key provider) Begin the OAuth dance: stash a fresh PKCE verifier in a cookie and redirect to Supabase's /authorize endpoint. PROVIDER is read off the query string, not Snooze's &key arg.
get /auth-logout text/html Clear the session cookie and redirect home.
post /db-webhook application/json
post /db-webhook application/json
get /entity text/turtle (&optional id)
get /entity application/json (&optional id)
get /entity application/ld+json (&optional id)
get /entity text/html (&optional id) Redirect to ID's real page with a 303 (correct Linked Data dereferencing).
get /events text/turtle (&optional id)
get /events application/json (&optional id)
get /events application/ld+json (&optional id)
get /events text/html (&optional id) Event page for ID, the list of every event otherwise.
get /graph text/html (&optional entity &key generations all contextual) Render the graph page. See file header for URL semantics.
get /lang text/html (&key code) Set the UI language cookie to CODE and redirect back.
get /mapping text/html (&optional id)
get /model text/html
get /og image/svg+xml (&optional kind id) The unrasterized SVG, regenerated on every request so template edits show up on reload.
get /og image/png (&optional kind id) The rasterized card - see SERVE-OG-CARD-FILE for the shared headers.
get /og-p image/svg+xml (&optional public-id) The unrasterized SVG: the design/debugging entry point, never cached.
get /og-p image/png (&optional public-id) The rasterized profile card (PROFILE-SOCIAL-CARD's og:image). Uses the shared cache/lock/semaphore machinery (ENSURE-OG-CARD-FOR).
get /orgs text/turtle (&optional id)
get /orgs application/json (&optional id)
get /orgs application/ld+json (&optional id)
get /orgs text/html (&optional id) Organization page for ID, the list of every organization otherwise.
get /p text/html (&optional public-id)
get /persons text/turtle (&optional id)
get /persons application/json (&optional id)
get /persons application/ld+json (&optional id)
get /persons text/html (&optional id) Person page for ID, the list of every person otherwise.
get /places text/turtle (&optional id)
get /places application/json (&optional id)
get /places application/ld+json (&optional id)
get /places text/html (&optional id) Place page for ID, the list of every place otherwise.
get /privacy text/html
get /profile text/html
get /ranking-methodology text/html
get /rankings text/html
get /reload text/html Trigger a manual reload. Dev-only; requires login.
get /settings text/html
get /sources text/turtle (&optional id)
get /sources application/json (&optional id)
get /sources application/ld+json (&optional id)
get /sources text/html (&optional id) Source page for ID, the list of every source otherwise.
get /sparql application/sparql-results+json (&key query &allow-other-keys) The endpoint *SPARQL-QUERY-ENDPOINT* points the explorer at. Gated as the page route; a 404 (not a redirect) when not visible, since this is a data API. &ALLOW-OTHER-KEYS keeps the lambda list congruent with the resource's.
get /sparql text/html (&key query &allow-other-keys) QUERY is declared only so Snooze accepts ?query=...; it is read client-side, never server-side. &ALLOW-OTHER-KEYS lets ?center= through.
post /sparql application/sparql-results+json (&key query &allow-other-keys) Same as the GET route; POST allows queries too long for a URL query string. &ALLOW-OTHER-KEYS for the same lambda-list-congruence reason.
get /style-graph text/html (&optional entity)
get /styles text/turtle (&optional id)
get /styles application/json (&optional id)
get /styles application/ld+json (&optional id)
get /styles text/html (&optional id) Style page for ID, the list of every style otherwise.
get /stylesheet text/css (&optional id)
get /ui-graph-contextual text/html (&key datastar)
get /ui-graph-expand application/json (p &key contextual)
get /ui-graph-focus text/html (s &key datastar (graph-kind graph))
get /ui-graph-focus text/html (p &key datastar graph-kind)
get /ui-graph-reset text/html (&key datastar)
get /ui-listing text/html (&key datastar (kind persons)) Re-render the filtered/sorted listing fragment for KIND. Validates KIND before opening the SSE stream, since an error raised inside WITH-SSE can no longer become a clean HTTP status.
get /ui-live text/html (&key datastar topics)
post /ui-profile-link application/json (&key datastar) Claim the picked person as the current lineage link, then patch #profile-current-link with the updated card. Patches only on success.
post /ui-profile-publish application/json (&key datastar) Publish or unpublish. A Datastar boolean signal is T when checked and :FALSE (not NIL) when unchecked, so normalise before saving.
post /ui-profile-save application/json (&key datastar) Display name and bio only. PHOTO-URL is never accepted: the photo always follows the OAuth avatar.
post /ui-profile-set-style application/json (&key datastar) Set STYLE-ID on the current link, then patch the updated card.
post /ui-profile-unlink application/json (&key datastar) Remove the current link, then clear the card. Patches only on success.
post /ui-profile-unset-style application/json (&key datastar) Remove the style from the current link, then patch the updated card.
get /ui-search text/html (&key datastar (mode navigate)) Search for persons and styles by name, or run a registered picker (see REGISTER-PICKER) when MODE names one.
post /ui-settings-focus application/json (&key datastar)
post /ui-settings-locale application/json (&key datastar)
post /ui-settings-marketing application/json (&key datastar) Save or withdraw the newsletter opt-in (GDPR Art. 7(3): withdrawing must be as easy as giving consent). A Datastar boolean is T when checked and :FALSE (not NIL) when unchecked, so normalise before saving. Report success only when UPSERT-USER-SETTING actually succeeds.
get /ui-show-all text/html (&key datastar)
post /ui-suggestion-save application/json (&key datastar)