diff --git a/api/src/routes/downloads.ts b/api/src/routes/downloads.ts
new file mode 100644
index 00000000..de261702
--- /dev/null
+++ b/api/src/routes/downloads.ts
@@ -0,0 +1,19 @@
+import { Router, Response, Request } from "express";
+import { route } from "@fosscord/api";
+import { Relase, Config } from "@fosscord/util";
+
+const router = Router();
+
+router.get("/:branch", route({}), async (req: Request, res: Response) => {
+ const { client } = Config.get();
+ const { branch } = req.params;
+ const { platform } = req.query;
+
+ if(!platform || !["linux", "osx", "win"].includes(platform.toString())) return res.status(404)
+
+ const relase = await Relase.findOneOrFail({ name: client.relases.upstreamVersion });
+
+ res.redirect(relase[`win_url`]);
+});
+
+export default router;
diff --git a/api/src/routes/updates.ts b/api/src/routes/updates.ts
new file mode 100644
index 00000000..4682ce7c
--- /dev/null
+++ b/api/src/routes/updates.ts
@@ -0,0 +1,20 @@
+import { Router, Response, Request } from "express";
+import { route } from "@fosscord/api";
+import { Config, Relase } from "@fosscord/util";
+
+const router = Router();
+
+router.get("/", route({}), async (req: Request, res: Response) => {
+ const { client } = Config.get();
+
+ const relase = await Relase.findOneOrFail({ name: client.relases.upstreamVersion})
+
+ res.json({
+ name: relase.name,
+ pub_date: relase.pub_date,
+ url: relase.url,
+ notes: relase.notes
+ });
+});
+
+export default router;
|