Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

HTTP service

Production endpoints for a dedicated content store plus one root. Full design: service.md.

The demo server: clojure -M:service --port 8080 --store mem (or file / lmdb).

MethodPathRole
GET/node/{64-hex}Pack-filled chunk (literals under the hash)
PUT/node/{64-hex}Single-node put (EDN) → novelty
HEAD / DELETE/node/{64-hex}Existence / optional delete
POST/nodesApply one pack chunk (write)
POST/nodes/getBulk pack (admin/sync; demoted)
GET/root{:root hex-or-nil}
POST/root/cas{:expected hex-or-nil :new hex} → 200 / 409
GET/eventsSSE event: root on CAS

Pack GET/POST prefer application/vnd.dacite.chunk.v1 (wire-v1). Root CAS and novelty stay EDN.

Write-back clients: GET /node on miss, POST /nodes on flush, then POST /root/cas. They do not PUT every node.

No query opt-outs on GET (?raw=, ?nodes=, ?near= are gone).

Throttle: empty bucket is 429 (Retry-After); oversized body is 413. remote-store retries 429/503. See service.md inbound throttle.

Static demos: /app/ (todo), /app/explorer/ (trailing slash).