Route catalog for the Kdenlive scripting fork's HTTP transport — pure data.
The catalog is the single source: each route names its id, HTTP method, path template, and required/optional params. The client boundary walks this data; adding an endpoint is a catalog entry, never new client code.
Portable: core + string only.
Route catalog for the Kdenlive scripting fork's HTTP transport — pure data. The catalog is the single source: each route names its id, HTTP method, path template, and required/optional params. The client boundary walks this data; adding an endpoint is a catalog entry, never new client code. Portable: core + string only.
Every endpoint the transport knows. Path templates use {param} holes, filled from the call's :params. :result names the response field the server wraps the payload in, where the C++ names one.
Verified against the scripting fork's route table (kdenlive-mcp/kdenlive-server/src/scripting/routetable.cpp, 2026-09-13, extended 2026-09-15, re-read 2026-09-20): every :method/:path below is registered there. Params use the server's camelCase wire names; a {id} path hole is the fork's clipId.
A row declares what a CALLER may send, which is not always what the fork binds: see :timeline/insert-clip, where the headless transport accepts two params the HTTP one has to reach by a second call.
Every endpoint the transport knows. Path templates use {param} holes,
filled from the call's :params. :result names the response field the
server wraps the payload in, where the C++ names one.
Verified against the scripting fork's route table
(kdenlive-mcp/kdenlive-server/src/scripting/routetable.cpp, 2026-09-13,
extended 2026-09-15, re-read 2026-09-20): every :method/:path below is
registered there. Params use the server's camelCase wire names; a {id}
path hole is the fork's clipId.
A row declares what a CALLER may send, which is not always what the fork
binds: see :timeline/insert-clip, where the headless transport accepts two
params the HTTP one has to reach by a second call.(declared-params entry)Every param key entry accepts: required, optional and path holes.
Every param key `entry` accepts: required, optional and path holes.
(request id params)Build a request map from a route id and call params. Returns {:ok {:method :get|:post|:put|:delete :path string :body map-or-nil}} or {:error :routes/unknown-route | :routes/missing-params | :routes/undeclared-params ...}. :post and :put carry the params as the body: the fork reads PUT bodies too (/project/profile, /timeline/clips/{id}/opacity).
A param the route does not declare is REFUSED rather than passed along. The body used to be whatever the caller handed over, so a key the fork does not bind was encoded, sent, ignored and never mentioned; that is how an insert-clip trim went missing. The catalog is the single source for a route's surface, and this is where that claim is enforced.
Build a request map from a route id and call params.
Returns {:ok {:method :get|:post|:put|:delete :path string :body map-or-nil}}
or {:error :routes/unknown-route | :routes/missing-params
| :routes/undeclared-params ...}.
:post and :put carry the params as the body: the fork reads PUT bodies too
(/project/profile, /timeline/clips/{id}/opacity).
A param the route does not declare is REFUSED rather than passed along.
The body used to be whatever the caller handed over, so a key the fork
does not bind was encoded, sent, ignored and never mentioned; that is how
an insert-clip trim went missing. The catalog is the single source for a
route's surface, and this is where that claim is enforced.(route id)Catalog entry for id, or nil.
Catalog entry for `id`, or nil.
cljdoc builds & hosts documentation for Clojure/Script libraries
| Ctrl+k | Jump to recent docs |
| ← | Move to previous article |
| → | Move to next article |
| Ctrl+/ | Jump to the search field |