diff --git a/api/src/routes/users/#id/index.ts b/api/src/routes/users/#id/index.ts
new file mode 100644
index 00000000..a2ad3ae6
--- /dev/null
+++ b/api/src/routes/users/#id/index.ts
@@ -0,0 +1,13 @@
+import { Router, Request, Response } from "express";
+import { getPublicUser } from "../../../util/User";
+import { HTTPError } from "lambert-server";
+
+const router: Router = Router();
+
+router.get("/", async (req: Request, res: Response) => {
+ const { id } = req.params;
+
+ res.json(await getPublicUser(id));
+});
+
+export default router;
diff --git a/api/src/routes/users/#id/profile.ts b/api/src/routes/users/#id/profile.ts
new file mode 100644
index 00000000..4b4b9439
--- /dev/null
+++ b/api/src/routes/users/#id/profile.ts
@@ -0,0 +1,27 @@
+import { Router, Request, Response } from "express";
+import { getPublicUser } from "../../../util/User";
+
+const router: Router = Router();
+
+router.get("/", async (req: Request, res: Response) => {
+ const user = await getPublicUser(req.params.id, { user_data: true })
+
+ res.json({
+ connected_accounts: user.user_data.connected_accounts,
+ premium_guild_since: null, // TODO
+ premium_since: null, // TODO
+ user: {
+ username: user.username,
+ discriminator: user.discriminator,
+ id: user.id,
+ public_flags: user.public_flags,
+ avatar: user.avatar,
+ accent_color: user.accent_color,
+ banner: user.banner,
+ bio: req.user_bot ? null : user.bio,
+ bot: user.bot,
+ }
+ });
+});
+
+export default router;
|