Skip to content

GET (query) requests don't wrap input in {json: ...}, breaking every parameterized read against tRPC servers using the superjson transformer #46

Description

@afifsagent

Bug

apiPost in dist/client.js correctly wraps mutation payloads as { json: data } before sending, matching tRPC's superjson transformer convention:

export async function apiPost(endpoint, data) {
    const client = createClient();
    const response = await client.post(`/trpc/${endpoint}`, data ? { json: data } : undefined);
    ...
}

apiGet does not — it sends the raw params object as the query string, unwrapped:

export async function apiGet(endpoint, params) {
    const client = createClient();
    const query = params
        ? `?input=${encodeURIComponent(JSON.stringify(params))}`
        : "";
    ...
}

Against a Dokploy server using the superjson transformer, any query procedure that requires input parameters fails with a 400:

{
  "error": {
    "json": {
      "message": "[\n  {\n    \"expected\": \"object\",\n    \"code\": \"invalid_type\",\n    \"path\": [],\n    \"message\": \"Invalid input: expected object, received undefined\"\n  }\n]",
      "code": -32600,
      "data": { "code": "BAD_REQUEST", "httpStatus": 400, "path": "application.one", ... }
    }
  }
}

Repro

dokploy application one --applicationId <id>
# Request failed with status code 400

No-argument queries (e.g. project all) work fine, since an empty/undefined input happens to satisfy those procedures' schemas either way — which is why this doesn't show up immediately.

Expected

apiGet should wrap params the same way apiPost wraps data:

const query = params
    ? `?input=${encodeURIComponent(JSON.stringify({ json: params }))}`
    : "";

Environment

  • @dokploy/cli 0.29.4 (reports dokploy --version → 0.3.0)
  • Dokploy server v0.29.11
  • Affects any query command that takes parameters: application one, deployment all, mounts list-by-service-id, log reads, etc.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions