aboutsummaryrefslogtreecommitdiffstats
path: root/packages/open-api/lib/users.ts
diff options
context:
space:
mode:
Diffstat (limited to 'packages/open-api/lib/users.ts')
-rw-r--r--packages/open-api/lib/users.ts55
1 files changed, 55 insertions, 0 deletions
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,
+ },
+ },
+ },
+ },
+});