app.rocksky/sdk is an idiomatic Clojure client.
- Plain maps in, plain maps out — no records, no protocols.
- Client-first arg — every endpoint threads through
->. - No global state — clients are values you can pass around and reuse.
- Two real verbs —
query(GET) andprocedure(POST) cover the whole XRPC surface; resource namespaces are thin wrappers on top.
Install
deps.edn:
Quickstart
Pipe-friendly composition
Calling URLs the SDK doesn’t wrap
Errors
Concurrency
Clients are immutable values — share them across threads:Available namespaces
Conventions
- Kebab-case Clojure, camelCase wire. The SDK translates
:start-date→startDate,:album-art→albumArt, etc. Raw HTTP bodies still use camelCase, matching the lexicons. - Nil values are dropped. Pass
:limit niland the param won’t appear on the wire — handy forcond->chains. - Booleans round-trip.
:enabled falseis preserved.
Types
Lexicon-derived schemas (in malli form) are exposed asrocksky.generated.types/schemas, a map keyed by :TypeName keywords covering every lex *View* / *Record / *Input / *Output / *Params shape from the Rocksky lexicons. Regenerate with bun run lexgen:types at the repo root.
License
MIT © Tsiry Sandratraina. Source:sdk/clojure.