diff --git a/src/api/routes/guilds/templates/index.ts b/src/api/routes/guilds/templates/index.ts
index bfbb7d3b..8f718a21 100644
--- a/src/api/routes/guilds/templates/index.ts
+++ b/src/api/routes/guilds/templates/index.ts
@@ -16,72 +16,91 @@
along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
-import { Request, Response, Router } from "express";
+import { route } from "@spacebar/api";
import {
- Template,
+ Config,
+ DiscordApiErrors,
Guild,
+ GuildTemplateCreateSchema,
+ Member,
Role,
Snowflake,
- Config,
- Member,
- GuildTemplateCreateSchema,
+ Template,
} from "@spacebar/util";
-import { route } from "@spacebar/api";
-import { DiscordApiErrors } from "@spacebar/util";
+import { Request, Response, Router } from "express";
import fetch from "node-fetch";
const router: Router = Router();
-router.get("/:code", route({}), async (req: Request, res: Response) => {
- const { allowDiscordTemplates, allowRaws, enabled } =
- Config.get().templates;
- if (!enabled)
- res.json({
- code: 403,
- message: "Template creation & usage is disabled on this instance.",
- }).sendStatus(403);
-
- const { code } = req.params;
+router.get(
+ "/:code",
+ route({
+ responses: {
+ 200: {
+ body: "Template",
+ },
+ 403: {
+ body: "APIErrorResponse",
+ },
+ 404: {
+ body: "APIErrorResponse",
+ },
+ },
+ }),
+ async (req: Request, res: Response) => {
+ const { allowDiscordTemplates, allowRaws, enabled } =
+ Config.get().templates;
+ if (!enabled)
+ res.json({
+ code: 403,
+ message:
+ "Template creation & usage is disabled on this instance.",
+ }).sendStatus(403);
- if (code.startsWith("discord:")) {
- if (!allowDiscordTemplates)
- return res
- .json({
- code: 403,
- message:
- "Discord templates cannot be used on this instance.",
- })
- .sendStatus(403);
- const discordTemplateID = code.split("discord:", 2)[1];
+ const { code } = req.params;
- const discordTemplateData = await fetch(
- `https://discord.com/api/v9/guilds/templates/${discordTemplateID}`,
- {
- method: "get",
- headers: { "Content-Type": "application/json" },
- },
- );
- return res.json(await discordTemplateData.json());
- }
+ if (code.startsWith("discord:")) {
+ if (!allowDiscordTemplates)
+ return res
+ .json({
+ code: 403,
+ message:
+ "Discord templates cannot be used on this instance.",
+ })
+ .sendStatus(403);
+ const discordTemplateID = code.split("discord:", 2)[1];
+
+ const discordTemplateData = await fetch(
+ `https://discord.com/api/v9/guilds/templates/${discordTemplateID}`,
+ {
+ method: "get",
+ headers: { "Content-Type": "application/json" },
+ },
+ );
+ return res.json(await discordTemplateData.json());
+ }
- if (code.startsWith("external:")) {
- if (!allowRaws)
- return res
- .json({
- code: 403,
- message: "Importing raws is disabled on this instance.",
- })
- .sendStatus(403);
+ if (code.startsWith("external:")) {
+ if (!allowRaws)
+ return res
+ .json({
+ code: 403,
+ message: "Importing raws is disabled on this instance.",
+ })
+ .sendStatus(403);
- return res.json(code.split("external:", 2)[1]);
- }
+ return res.json(code.split("external:", 2)[1]);
+ }
- const template = await Template.findOneOrFail({ where: { code: code } });
- res.json(template);
-});
+ const template = await Template.findOneOrFail({
+ where: { code: code },
+ });
+ res.json(template);
+ },
+);
router.post(
"/:code",
- route({ body: "GuildTemplateCreateSchema" }),
+ route({ requestBody: "GuildTemplateCreateSchema" }),
async (req: Request, res: Response) => {
const {
enabled,
|