Search ondelva

Developers

ondelva developer resources

Everything here is a public GET. There is no key, no account, and no write API, because this is a static site.

Endpoints

  • openapi.json — An OpenAPI 3.1 description of everything on this page, including the shape of an error response.
  • llms.txt — The whole site as one Markdown index, laid out the way llmstxt.org describes.
  • sitemap.xml — Every indexed URL, with last-modified dates.
  • rss.xml — The full post feed, RSS 2.0.
  • search-index.json — Title, excerpt, category and plain-text body for every post and tool. This is what the site's own search reads.

Markdown for any page

Send Accept: text/markdown and a page answers with Markdown rather than HTML. The same document sits at the page's own path with .md on the end, so /tools.md and Accept: text/markdown on /tools return the same thing. Negotiated responses carry Vary: Accept, Accept-Encoding, so a cache in the middle cannot hand one representation to a client that asked for the other. Quality values are honoured.

A few pages are written directly as HTML rather than Markdown — this one, About, and Privacy — so they have no Markdown variant and answer with HTML whatever you ask for.

Errors

A path that does not exist returns a real 404, never the site wrapped around an empty page. The body follows the same negotiation: Markdown with links back to the sitemap and this page for a client sending Accept: */*, JSON for one sending Accept: application/json, and the ordinary error page for a browser. A request whose Accept header rules out every representation gets a 406 with a JSON body naming the types that page can serve.

Every JSON error has the same shape:

{
  "error": {
    "code": "not_found",
    "status": 404,
    "message": "Nothing is published at /nope.",
    "resolution": "Check the sitemap or llms.txt for the current list of pages.",
    "links": { "sitemap": "...", "llms_txt": "...", "openapi": "...", "developers": "..." }
  }
}

Reusing any of it

Crawl it, mirror it, feed it to a model. There is no rate limit of mine to hit, though Cloudflare will turn away traffic that looks hostile. If something here breaks or you need a shape that is not published, write to im@ondelva.com.