Skip to main content
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 verbsquery (GET) and procedure (POST) cover the whole XRPC surface; resource namespaces are thin wrappers on top.

Install

deps.edn:
Leiningen / Boot:
Or track a specific commit:

Quickstart

For authenticated endpoints:

Pipe-friendly composition

Reshape responses inline:

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-datestartDate, :album-artalbumArt, etc. Raw HTTP bodies still use camelCase, matching the lexicons.
  • Nil values are dropped. Pass :limit nil and the param won’t appear on the wire — handy for cond-> chains.
  • Booleans round-trip. :enabled false is preserved.

Types

Lexicon-derived schemas (in malli form) are exposed as rocksky.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.