Design endpoints, validate inputs, and return data while keeping HTTP concerns at the boundary.
Building APIs in Clojure is usually a “pure core / HTTP shell” story: parse and validate request data, call pure domain functions, then serialize the result into a response.
This section focuses on practical API concerns—JSON, validation, error shape, and versioning—without drifting into framework-specific trivia.