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) |