From b8c587e3c3e717263da84522d59c7904715ae22a Mon Sep 17 00:00:00 2001 From: Mohamed Bassem Date: Tue, 11 Mar 2025 20:09:32 +0000 Subject: feat: Add endpoints for whoami and user stats. Fixes #1113 --- packages/open-api/lib/users.ts | 55 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 55 insertions(+) create mode 100644 packages/open-api/lib/users.ts (limited to 'packages/open-api/lib/users.ts') diff --git a/packages/open-api/lib/users.ts b/packages/open-api/lib/users.ts new file mode 100644 index 00000000..657fcdc8 --- /dev/null +++ b/packages/open-api/lib/users.ts @@ -0,0 +1,55 @@ +import { + extendZodWithOpenApi, + OpenAPIRegistry, +} from "@asteasolutions/zod-to-openapi"; +import { z } from "zod"; + +import { + zUserStatsResponseSchema, + zWhoAmIResponseSchema, +} from "@hoarder/shared/types/users"; + +import { BearerAuth } from "./common"; + +export const registry = new OpenAPIRegistry(); +extendZodWithOpenApi(z); + +registry.registerPath({ + method: "get", + path: "/users/me", + description: "Returns info about the current user", + summary: "Get current user info", + tags: ["Users"], + security: [{ [BearerAuth.name]: [] }], + request: {}, + responses: { + 200: { + description: "Object with user data.", + content: { + "application/json": { + schema: zWhoAmIResponseSchema, + }, + }, + }, + }, +}); + +registry.registerPath({ + method: "get", + path: "/users/me/stats", + description: "Returns stats about the current user", + summary: "Get current user stats", + tags: ["Users"], + security: [{ [BearerAuth.name]: [] }], + request: {}, + responses: { + 200: { + description: "Object with user stats.", + content: { + "application/json": { + schema: zUserStatsResponseSchema, + }, + }, + }, + }, +}); -- cgit v1.2.3-70-g09d2