Add concrete OpenAPI data schemas for selected routes

Agent-Logs-Url: https://github.com/fosrl/pangolin/sessions/7b395a8e-7fae-4f4d-952e-4030fea08262

Co-authored-by: oschwartz10612 <4999704+oschwartz10612@users.noreply.github.com>
This commit is contained in:
copilot-swe-agent[bot]
2026-05-17 21:25:53 +00:00
committed by GitHub
parent a0a093ed0b
commit 15a9eb28d9
37 changed files with 403 additions and 342 deletions

View File

@@ -1,5 +1,6 @@
import { Request, Response, NextFunction } from "express";
import { z } from "zod";
import { createApiResponseSchema } from "@server/lib/openapi/createApiResponseSchema";
import { db } from "@server/db";
import { Org, orgs } from "@server/db";
import { eq } from "drizzle-orm";
@@ -17,6 +18,8 @@ const getOrgSchema = z.strictObject({
export type GetOrgResponse = {
org: Org;
};
const GetOrgResponseDataSchema = z.object({org: z.object({}).passthrough()});
registry.registerPath({
method: "get",
@@ -31,13 +34,7 @@ registry.registerPath({
description: "Successful response",
content: {
"application/json": {
schema: z.object({
data: z.unknown().nullable(),
success: z.boolean(),
error: z.boolean(),
message: z.string(),
status: z.number()
})
schema: createApiResponseSchema(GetOrgResponseDataSchema)
}
}
}

View File

@@ -9,6 +9,7 @@ import { sql, inArray, eq } from "drizzle-orm";
import logger from "@server/logger";
import { fromZodError } from "zod-validation-error";
import { OpenAPITags, registry } from "@server/openApi";
import { createApiResponseSchema } from "@server/lib/openapi/createApiResponseSchema";
const listOrgsSchema = z.object({
limit: z
@@ -38,13 +39,7 @@ registry.registerPath({
description: "Successful response",
content: {
"application/json": {
schema: z.object({
data: z.unknown().nullable(),
success: z.boolean(),
error: z.boolean(),
message: z.string(),
status: z.number()
})
schema: createApiResponseSchema(ListOrgsResponseDataSchema)
}
}
}
@@ -56,6 +51,15 @@ export type ListOrgsResponse = {
pagination: { total: number; limit: number; offset: number };
};
const ListOrgsResponseDataSchema = z.object({
orgs: z.array(z.object({}).passthrough()),
pagination: z.object({
total: z.number(),
limit: z.number(),
offset: z.number()
})
});
export async function listOrgs(
req: Request,
res: Response,

View File

@@ -37,22 +37,22 @@ const listOrgsSchema = z.object({
// request: {
// query: listOrgsSchema
// },
// responses: {
200: {
description: "Successful response",
content: {
"application/json": {
schema: z.object({
data: z.unknown().nullable(),
success: z.boolean(),
error: z.boolean(),
message: z.string(),
status: z.number()
})
}
}
}
}
// responses: {
// 200: {
// description: "Successful response",
// content: {
// "application/json": {
// schema: z.object({
// data: z.unknown().nullable(),
// success: z.boolean(),
// error: z.boolean(),
// message: z.string(),
// status: z.number()
// })
// }
// }
// }
// }
// });
type ResponseOrg = Org & {