You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
GET commands with parameters fail with HTTP 400 (missing SuperJSON input envelope) #1
Every generated GET command that takes parameters fails with HTTP 400 — dokploy compose one --composeId <valid-id> --json returns "Request failed with status code 400". Parameterless GETs (project all) and all POST commands work, which is why this slipped through.
apiGet() sends the params as a bare JSON object (?input={"composeId":"..."} in src/client.ts), but the Dokploy server runs tRPC with the SuperJSON transformer, so input has to arrive as { "json": { ... } }. A bare object deserializes to undefined and the server rejects the call before the procedure runs; replaying the same request with input={"json":{"composeId":"..."}} returns 200. apiPost() already wraps its body this way, which is why writes work. 141 of the 223 GET operations in openapi.json take query parameters, and every generated GET command routes through apiGet().
Seen on @dokploy/cli 0.30.2 against Dokploy server v0.30.2; the same failure is reported upstream against 0.29.x servers (Dokploy/cli#39, #46, #48). #2 is the immediate, transitional fix — one line, works against every server version with the SuperJSON transformer, and identical to upstream PR #52. The bigger question is upstream PR #45 (building on #40): migrating the whole client off tRPC onto the server's REST surface. That's the strategic direction to weigh separately; if it ever lands, the envelope fix here becomes obsolete.
changed the title [-]Fix parameterized GET input encoding for tRPC/SuperJSON[/-][+]GET commands with parameters fail with HTTP 400 (missing SuperJSON input envelope)[/+]on Aug 21, 2026
Activity
[-]Fix parameterized GET input encoding for tRPC/SuperJSON[/-][+]GET commands with parameters fail with HTTP 400 (missing SuperJSON input envelope)[/+]WilliamAGH commentedon Aug 21, 2026
Closing as duplicate tracking. The canonical implementation is Dokploy#52; no separate fork issue is needed.