trpc-openapi
trpc-openapi copied to clipboard
zod array objects break this
heres' an example:
if I have this code defining a schema and try to make TRPC calls (on ANY API, not just this one), I'll get this error:
error - TRPCError: [query.question.read] - Input parser key: "labels" must be ZodString, ZodNumber, ZodBoolean, ZodBigInt or ZodDate
at /Users/david/Projects/WORK/DFDF/DDQ360/node_modules/trpc-openapi/dist/generator/schema.js:72:27
at Array.map (<anonymous>)
at getParameterObjects (/Users/david/Projects/WORK/DFDF/DDQ360/node_modules/trpc-openapi/dist/generator/schema.js:65:10)
at /Users/david/Projects/WORK/DFDF/DDQ360/node_modules/trpc-openapi/dist/generator/paths.js:61:66
at forEachOpenApiProcedure (/Users/david/Projects/WORK/DFDF/DDQ360/node_modules/trpc-openapi/dist/utils/procedure.js:34:13)
at getOpenApiPathsObject (/Users/david/Projects/WORK/DFDF/DDQ360/node_modules/trpc-openapi/dist/generator/paths.js:13:45)
at generateOpenApiDocument (/Users/david/Projects/WORK/DFDF/DDQ360/node_modules/trpc-openapi/dist/generator/index.js:27:50)
at eval (webpack-internal:///(api)/./src/server/api/root.ts:51:98)
at process.processTicksAndRejections (node:internal/process/task_queues:95:5) {
code: 'INTERNAL_SERVER_ERROR',
[cause]: undefined
}
I believe this happens because there is no "default" way to pass an array of values as a query parameter. It might work for tRPC, but there's no easy widely adopted method of passing arrays as a query parameter and most implementations are framework specific. Which one of the following endpoints should even be generated?
?cars[]=Saab&cars[]=Audi
?cars=Saab&cars=Audi
?cars=Saab,Audi
I suggest using a POST request instead and passing everything in the body. Alternatively, you can make "labels" into a string, and parse it manually (using the format you chose) inside the procedure. But that's a bit weird IMO.
I've also been unable to use arrays in inputs for PUT. See #255
+1
I'm building a pagination router with the above schema but also facing the same ordeal. Hope this get fixed soon :(
I'm building a pagination router with the above schema but also facing the same ordeal. Hope this get fixed soon :(
Or maybe just comment the .meta() method and move on.

I'm building a pagination router with the above schema but also facing the same ordeal. Hope this get fixed soon :(