From 3a238429249a9a0d061dc49fab4bbc3b54320314 Mon Sep 17 00:00:00 2001 From: Puyodead1 Date: Sat, 25 Mar 2023 18:28:12 -0400 Subject: [PATCH] oapi: root level routes --- assets/openapi.json | Bin 441586 -> 450358 bytes assets/schemas.json | Bin 15523974 -> 16262850 bytes src/api/routes/discoverable-guilds.ts | 84 ++++++++++-------- src/api/routes/discovery.ts | 34 ++++--- src/api/routes/download.ts | 49 ++++++---- src/api/routes/guild-recommendations.ts | 52 ++++++----- src/api/routes/ping.ts | 46 ++++++---- src/api/routes/science.ts | 18 ++-- src/api/routes/stop.ts | 12 ++- src/api/routes/updates.ts | 64 ++++++++----- .../responses/DiscoverableGuildsResponse.ts | 8 ++ .../responses/DiscoveryCategoriesResponse.ts | 3 + .../responses/GuildRecommendationsResponse.ts | 6 ++ .../schemas/responses/InstancePingResponse.ts | 13 +++ src/util/schemas/responses/UpdatesResponse.ts | 6 ++ src/util/schemas/responses/index.ts | 5 ++ 16 files changed, 263 insertions(+), 137 deletions(-) create mode 100644 src/util/schemas/responses/DiscoverableGuildsResponse.ts create mode 100644 src/util/schemas/responses/DiscoveryCategoriesResponse.ts create mode 100644 src/util/schemas/responses/GuildRecommendationsResponse.ts create mode 100644 src/util/schemas/responses/InstancePingResponse.ts create mode 100644 src/util/schemas/responses/UpdatesResponse.ts diff --git a/assets/openapi.json b/assets/openapi.json index 21863efaac8e9cb543c16fd5d6776592cfc898e9..a45cafa2f0f811bcfb84cb68cef385afe2f7a361 100644 GIT binary patch delta 1147 zcmah|Uuaup6z99=epyo5Evfyp=AT(tm(H~{u5&1^v)XFs7`7ERr=v}7o7-}?=H`;L zmgU7OB2k&N__6&!26p%&zSzO&o#?g%d=W%4Uj%1nMA(Z8Ql_j9r}w5V>Vx+2obPvj z-|w9BJF9E{mCFJ10(+sz22eObVU)VqkSHDO6y9GR65bo*V)08ZX*pbNle)xm(;knO zjT;#)rDSmKf)s}Lw4@`^%mTcc7m0d>4vlf-v@6ctOY`!Uf-?IPB_AB7*}O?Z#9HxU_S0hphVUziPB#pu_2gwfRv zev9>@bW|FvB8B*%6*t#dh^MEfvMNSDXKfg1rdE*%g=_zv98hM}>2yYeGEbdY+)Ibu zwba!)xd}15d+S3l-QKlnGM!4PdJ;dqLdSg>^{-G(#;2=_&vAC@-_qonw2~Cc>QgXx zvmvr0;R^-p|5*xOKaaxfq$cbAee|eb9?|q^oR3qI8K^W;L>RAo-&O;n61~sWZlv|; zZQ{X)TSVfJEPn3m5t|S8ppciIv3GMX5+&vn-Xnwdg0|HHm>)}>PUJ;lSc;;Ol4SHB zqA11=OKx1-PI07ly5F9$`@a$2glIFagvfw@C9omRY@;0;Q0?_o$Nxh5 zv6z#9a)=rneN|~5*a~)`(B^8!i(zVU2t2TVtHYB9g~huU{p+d64C*+uD!cFnNmW!G zE{16<3O?qx$J<)nn>}L>)FnGTpO-sCC9(ze&ym~u{s^tK%SKX}b<8t`${35wa})6- zioZ$D-uj^5W@D0`7H0QO7{}SrI^WW8ko5E{d@1JVhEpMyehlEVH(0NzEXdZ`lhj_u z@<+7B9d;GU3gxWQbxM+@J}>8d&RYzzU-<#cdyJoDXDr*JuW9mW4@P3HI1ED`w2E1I z%RLVAR{hg@c2?0R)pc)~@}<1pi8Y_+4g1jlIRD-A>|HbCk0<1p5&4P+5D74DJ@6@i zwS{_PyTRV!b65_zdMsnXb&6R>ukr1yO5b?*cx%U0ReVV-zU8)dmU(a;R=c^sZ`|(7 QLDk_znR~1|*ZIxzpMH&`Z2$lO delta 155 zcmdnCPx{kOsfI0#kq4(=&}L$77dXPWUEl~)p#Sz5apvFJ+gH0XTS{%8lEu7DX}kCY zX4SjX9r#(6Z8Ga=9!}r{i z^SI|~I?r2t{*~UMsM)0WON)83+;q8WlXhpm6X<={ECl@zuD+ly_t!$xRV%)!q5wKo zCIK)!<=hN@PKtVy0%~W9{GsV1NhK7i*SWrZXi{eC_U;ogz7FotR2VY@rEz|(Qke9_ z-i0MeOfgAfw(B?vlT|tLu*#8tod_qfHAji9g@6VJY7;99sODK&vJt)jNBEYVCuz*e zfl+N@4RkuK*zMQWc>A?Y&oLT_i7&@s;!9gI8i~wh&<C;IL2M887^kukk{ z$D((ysDTCt!@tz>S*6YqD|Od6>W9q{5j2~JZt z(Sbjp=)eb^6zW=~tYYsB ztl0bE1tJ`;I2d`wGl|jx_~eIpT$-l(P|(VbdrACg(53 z@^CDc&j}>@He{#F#q5-bhfM@=jB7mAtL6)sP&N;RvdDU(4dj@pUbWy94GxAEEaI`g zWec%y*`MNRn2clM@Pfs|G&rNg+OR0B4U2w2MCEe^qL(QF`#Hc!E5^VGnzG)Zl{Tw~6{1TqX0tj!|Y!1Zs|;`%r1 z0*In-pwA-#OL&!r39r&qXe5GxSvZt|g+ualG)(sW)AjiMQ^gG;oa)gAR6WY5u=8vP9PKyZG8ijxXGQlnV$uDqpJ>7XWLyoO2t}psA*}3<63gzWMraJc zI0ImKSN2L89E3G&wq|QOHsP9%oQ6+nf{}rF_hK&Iy_nZX!(<#2!y59>(cp|`y;T2a zyi~vC5e-x8XD?zIhYK*{@K&neFj&3~2g?he(kNtmc5lZ$yLUVx!cE>$gp+sd{Ei0a z5UI#nr`nvpNw#)l`ocWL#0h zJuA|4Sb5E5EU#%L`o~yL-Y)FP`{*%IC&S?^7`OkJtuB_*Bm>4(iMU`vck!T#e4X*wx4zAuam8h053>bS?mSFG7y?UCjkx}Q?CHrvelG0d8+m=U` zVR>Zv)kYd0GT2r;zXHYcwSAPfZ4Rx(=Ft6*DVed;4`A$cpk%@~U&PunQ@?{~>USuV zsFgEp>Kl*4_{O7(>LAU)lsNqjB~I0pOuOaj>r`1;>B=-&u0o|W=6uUdzdnTQIWyh= zZ>BffsFFeUDKlpnW(g8V-8UnC^pSS1v&jD4GU;h4^3jrl_18?p{+j8VDcv^I?g)n3 z)lgcMC72(@1oPU5G&&jQJvjVJ9Z?}{i0;5$9}%#cAM3H^$4`iK8o@*T$1Pdp^G`AI z`LO}Y+`@rzsQ-kFkO@)u`PR&>_cL_sJ^3w-HyM+6N6#tj=sA6jFp&bsG-uJe28`C7 zAsTkWP{&yTJ94WLkKAg~5+#^XCQqtR$_*Wsi5hC-%$!E!rx5g2rViTw^t+pTsZ~n3 zCuH;Dfi}%5>nR&(jIWAt1+U9%^lCv}-XxqTO=*BM=LQ{@O z`RFrSD9zGXz?RJS{!jr+6dK9f_ZmdvN|weG)cL{Ikea2j8C}5f zKyZLH=v(=o5UtQyLF4GcMGEl*&<}XKfk&Lg9GW(GIl&aAMhM9th{l2L>#>dy^ujIz z#{b|dfa_8Bgl3#*;+Bqa*2bZZb3;T&>xWv-1b0UkDX5Zwqp@|2ZhFpdPx%Z>ai?nBbI{4hxUfv_z%O%BY$lP%7;a5y6kVuMbbHX4(>Okt%f3Ll z>`RiXt=zpLgHGqfuh2R1_9050Im>%6XSwb)QGDx*x`TaDcTdr{4~vYrhmjHgsG%v7 z8MljgG~&Sk4bJE^i{||k7tQ;c>UhiGsLw)r@ma`2s)p9UED8DsOM?2I5qSbC#@ delta 2178 zcmY*aYgm(I7`|kV0m~3DBePs)D$_icndYIg44pV4fq)WSF)`^d5D$QYm-Lzn4h236 z#px9S4pa{FMr;IQNfN|CQBE= zFZY(SHq3~{&$ttlrw2@);xwAXk`Rl>b)0#cq?eNv;j>5)dJ4F>UYU`P`#g&7`dXYa7Y)3CMFW!p zOB^$$gD*llIJv!uS9HSs5>A+3R$S(B-oq)#dnh@^mnY5ESI}&oD$?@txRF;8H!|%$ z)hrl#4T7QR7ifOqzzhTq%sk4+8BNbD5joKBhXei6-Lx^5gr;ZqgL1y;yxXs1-t9R> z6z>?CiycGrXye3So)3e0K{`EjxNjkb``)Of_11O2iFMtJbQEja--4!nvAs#3Yj4Bn z+LG%up4zk&sZH;cQ+%U-8E(`spHG{}uUmoqx|MV3d8+Dnp{jnb>jJOWVt5}G!zwNP zexd#YEYyE!$B9^tM0^xZtehOV~SQM3bDJvY8vLY(D@n$DiocS5VnV(;y7A2}TB2gVVx0JWUKWh{G zvo^VA z87n3wk=s!c8Gqi16o&19Fl=Xm6S*O17d8a#zQvQIMV5dTSz;Gg-Y6&QS0`cp>OH+& zoW*S`_o8iOau3BpOHvTDWM3cszI!G?_sj#m^Z|xU{{bP>4~E#~N)ACLIV>&ajh!G# z!vsmXfsfnX`>shxuxpZf4u3l~a*b~W*7zQ!Cvhaht_xSjD7VPS6z^l0;+^T@RLCgK zf>E4Zcb+$gTQO2k22#%)TMK$Qzhc~eM3LK1wmvB-b;*U)<+wAc9X$^1=m~#%D_l+H zaUPh*C+*YCk=a%avaP2aNfC)R|BQHZewc$!R}yDBgE&(`C-0(7lC`4{){Y{lhDmJO zS;V$!`yDfx!&lC^lQE6O7}HoX=ulWl*a!|^Ilsw?RM%X9x~BA=V+|syDubk|+~{Z( z!;-EfO<#dDz0S7v*|$-{w4aK=%Yw1WB zv^6kjYtPcSN1*{8g>_qajb!|3BgUWpZIF&scJ38q=hpYqeD9p!;hl4J1|6ZBOapE* ze^_Y##*9X6%xG$+J+oLyS`Yn+)c$fN!m zq~>!%x}y8h75%q;PB}7EaT}ouvzgu. */ -import { Guild, Config } from "@spacebar/util"; +import { Config, Guild } from "@spacebar/util"; -import { Router, Request, Response } from "express"; import { route } from "@spacebar/api"; +import { Request, Response, Router } from "express"; import { Like } from "typeorm"; const router = Router(); -router.get("/", route({}), async (req: Request, res: Response) => { - const { offset, limit, categories } = req.query; - const showAllGuilds = Config.get().guild.discovery.showAllGuilds; - const configLimit = Config.get().guild.discovery.limit; - let guilds; - if (categories == undefined) { - guilds = showAllGuilds - ? await Guild.find({ take: Math.abs(Number(limit || configLimit)) }) - : await Guild.find({ - where: { features: Like(`%DISCOVERABLE%`) }, - take: Math.abs(Number(limit || configLimit)), - }); - } else { - guilds = showAllGuilds - ? await Guild.find({ - where: { primary_category_id: categories.toString() }, - take: Math.abs(Number(limit || configLimit)), - }) - : await Guild.find({ - where: { - primary_category_id: categories.toString(), - features: Like("%DISCOVERABLE%"), - }, - take: Math.abs(Number(limit || configLimit)), - }); - } +router.get( + "/", + route({ + responses: { + 200: { + body: "DiscoverableGuildsResponse", + }, + }, + }), + async (req: Request, res: Response) => { + const { offset, limit, categories } = req.query; + const showAllGuilds = Config.get().guild.discovery.showAllGuilds; + const configLimit = Config.get().guild.discovery.limit; + let guilds; + if (categories == undefined) { + guilds = showAllGuilds + ? await Guild.find({ + take: Math.abs(Number(limit || configLimit)), + }) + : await Guild.find({ + where: { features: Like(`%DISCOVERABLE%`) }, + take: Math.abs(Number(limit || configLimit)), + }); + } else { + guilds = showAllGuilds + ? await Guild.find({ + where: { primary_category_id: categories.toString() }, + take: Math.abs(Number(limit || configLimit)), + }) + : await Guild.find({ + where: { + primary_category_id: categories.toString(), + features: Like("%DISCOVERABLE%"), + }, + take: Math.abs(Number(limit || configLimit)), + }); + } - const total = guilds ? guilds.length : undefined; + const total = guilds ? guilds.length : undefined; - res.send({ - total: total, - guilds: guilds, - offset: Number(offset || Config.get().guild.discovery.offset), - limit: Number(limit || configLimit), - }); -}); + res.send({ + total: total, + guilds: guilds, + offset: Number(offset || Config.get().guild.discovery.offset), + limit: Number(limit || configLimit), + }); + }, +); export default router; diff --git a/src/api/routes/discovery.ts b/src/api/routes/discovery.ts index 0c8089e4..79bbc686 100644 --- a/src/api/routes/discovery.ts +++ b/src/api/routes/discovery.ts @@ -16,24 +16,34 @@ along with this program. If not, see . */ -import { Categories } from "@spacebar/util"; -import { Router, Response, Request } from "express"; import { route } from "@spacebar/api"; +import { Categories } from "@spacebar/util"; +import { Request, Response, Router } from "express"; const router = Router(); -router.get("/categories", route({}), async (req: Request, res: Response) => { - // TODO: - // Get locale instead +router.get( + "/categories", + route({ + responses: { + 200: { + body: "DiscoveryCategoriesResponse", + }, + }, + }), + async (req: Request, res: Response) => { + // TODO: + // Get locale instead - // const { locale, primary_only } = req.query; - const { primary_only } = req.query; + // const { locale, primary_only } = req.query; + const { primary_only } = req.query; - const out = primary_only - ? await Categories.find() - : await Categories.find({ where: { is_primary: true } }); + const out = primary_only + ? await Categories.find() + : await Categories.find({ where: { is_primary: true } }); - res.send(out); -}); + res.send(out); + }, +); export default router; diff --git a/src/api/routes/download.ts b/src/api/routes/download.ts index c4eea8e8..85fb41be 100644 --- a/src/api/routes/download.ts +++ b/src/api/routes/download.ts @@ -16,32 +16,43 @@ along with this program. If not, see . */ -import { Router, Response, Request } from "express"; import { route } from "@spacebar/api"; import { FieldErrors, Release } from "@spacebar/util"; +import { Request, Response, Router } from "express"; const router = Router(); -router.get("/", route({}), async (req: Request, res: Response) => { - const { platform } = req.query; - - if (!platform) - throw FieldErrors({ - platform: { - code: "BASE_TYPE_REQUIRED", - message: req.t("common:field.BASE_TYPE_REQUIRED"), +router.get( + "/", + route({ + responses: { + 302: {}, + 404: { + body: "APIErrorResponse", }, + }, + }), + async (req: Request, res: Response) => { + const { platform } = req.query; + + if (!platform) + throw FieldErrors({ + platform: { + code: "BASE_TYPE_REQUIRED", + message: req.t("common:field.BASE_TYPE_REQUIRED"), + }, + }); + + const release = await Release.findOneOrFail({ + where: { + enabled: true, + platform: platform as string, + }, + order: { pub_date: "DESC" }, }); - const release = await Release.findOneOrFail({ - where: { - enabled: true, - platform: platform as string, - }, - order: { pub_date: "DESC" }, - }); - - res.redirect(release.url); -}); + res.redirect(release.url); + }, +); export default router; diff --git a/src/api/routes/guild-recommendations.ts b/src/api/routes/guild-recommendations.ts index 67f43c14..876780df 100644 --- a/src/api/routes/guild-recommendations.ts +++ b/src/api/routes/guild-recommendations.ts @@ -16,34 +16,44 @@ along with this program. If not, see . */ -import { Guild, Config } from "@spacebar/util"; +import { Config, Guild } from "@spacebar/util"; -import { Router, Request, Response } from "express"; import { route } from "@spacebar/api"; +import { Request, Response, Router } from "express"; import { Like } from "typeorm"; const router = Router(); -router.get("/", route({}), async (req: Request, res: Response) => { - // const { limit, personalization_disabled } = req.query; - const { limit } = req.query; - const showAllGuilds = Config.get().guild.discovery.showAllGuilds; +router.get( + "/", + route({ + responses: { + 200: { + body: "GuildRecommendationsResponse", + }, + }, + }), + async (req: Request, res: Response) => { + // const { limit, personalization_disabled } = req.query; + const { limit } = req.query; + const showAllGuilds = Config.get().guild.discovery.showAllGuilds; - const genLoadId = (size: number) => - [...Array(size)] - .map(() => Math.floor(Math.random() * 16).toString(16)) - .join(""); + const genLoadId = (size: number) => + [...Array(size)] + .map(() => Math.floor(Math.random() * 16).toString(16)) + .join(""); - const guilds = showAllGuilds - ? await Guild.find({ take: Math.abs(Number(limit || 24)) }) - : await Guild.find({ - where: { features: Like("%DISCOVERABLE%") }, - take: Math.abs(Number(limit || 24)), - }); - res.send({ - recommended_guilds: guilds, - load_id: `server_recs/${genLoadId(32)}`, - }).status(200); -}); + const guilds = showAllGuilds + ? await Guild.find({ take: Math.abs(Number(limit || 24)) }) + : await Guild.find({ + where: { features: Like("%DISCOVERABLE%") }, + take: Math.abs(Number(limit || 24)), + }); + res.send({ + recommended_guilds: guilds, + load_id: `server_recs/${genLoadId(32)}`, + }).status(200); + }, +); export default router; diff --git a/src/api/routes/ping.ts b/src/api/routes/ping.ts index 0fb6d9d0..73330239 100644 --- a/src/api/routes/ping.ts +++ b/src/api/routes/ping.ts @@ -16,29 +16,39 @@ along with this program. If not, see . */ -import { Router, Response, Request } from "express"; import { route } from "@spacebar/api"; import { Config } from "@spacebar/util"; +import { Request, Response, Router } from "express"; const router = Router(); -router.get("/", route({}), (req: Request, res: Response) => { - const { general } = Config.get(); - res.send({ - ping: "pong!", - instance: { - id: general.instanceId, - name: general.instanceName, - description: general.instanceDescription, - image: general.image, - - correspondenceEmail: general.correspondenceEmail, - correspondenceUserID: general.correspondenceUserID, - - frontPage: general.frontPage, - tosPage: general.tosPage, +router.get( + "/", + route({ + responses: { + 200: { + body: "InstancePingResponse", + }, }, - }); -}); + }), + (req: Request, res: Response) => { + const { general } = Config.get(); + res.send({ + ping: "pong!", + instance: { + id: general.instanceId, + name: general.instanceName, + description: general.instanceDescription, + image: general.image, + + correspondenceEmail: general.correspondenceEmail, + correspondenceUserID: general.correspondenceUserID, + + frontPage: general.frontPage, + tosPage: general.tosPage, + }, + }); + }, +); export default router; diff --git a/src/api/routes/science.ts b/src/api/routes/science.ts index 099da18b..d5cdc173 100644 --- a/src/api/routes/science.ts +++ b/src/api/routes/science.ts @@ -16,14 +16,22 @@ along with this program. If not, see . */ -import { Router, Response, Request } from "express"; import { route } from "@spacebar/api"; +import { Request, Response, Router } from "express"; const router = Router(); -router.post("/", route({}), (req: Request, res: Response) => { - // TODO: - res.sendStatus(204); -}); +router.post( + "/", + route({ + responses: { + 204: {}, + }, + }), + (req: Request, res: Response) => { + // TODO: + res.sendStatus(204); + }, +); export default router; diff --git a/src/api/routes/stop.ts b/src/api/routes/stop.ts index 6a6e6277..79e132d7 100644 --- a/src/api/routes/stop.ts +++ b/src/api/routes/stop.ts @@ -16,14 +16,22 @@ along with this program. If not, see . */ -import { Router, Request, Response } from "express"; import { route } from "@spacebar/api"; +import { Request, Response, Router } from "express"; const router: Router = Router(); router.post( "/", - route({ right: "OPERATOR" }), + route({ + right: "OPERATOR", + responses: { + 200: {}, + 403: { + body: "APIErrorResponse", + }, + }, + }), async (req: Request, res: Response) => { console.log(`/stop was called by ${req.user_id} at ${new Date()}`); res.sendStatus(200); diff --git a/src/api/routes/updates.ts b/src/api/routes/updates.ts index f7403899..101bd3bc 100644 --- a/src/api/routes/updates.ts +++ b/src/api/routes/updates.ts @@ -16,37 +16,53 @@ along with this program. If not, see . */ -import { Router, Response, Request } from "express"; import { route } from "@spacebar/api"; import { FieldErrors, Release } from "@spacebar/util"; +import { Request, Response, Router } from "express"; const router = Router(); -router.get("/", route({}), async (req: Request, res: Response) => { - const platform = req.query.platform; - - if (!platform) - throw FieldErrors({ - platform: { - code: "BASE_TYPE_REQUIRED", - message: req.t("common:field.BASE_TYPE_REQUIRED"), +router.get( + "/", + route({ + responses: { + 200: { + body: "UpdatesResponse", }, + 400: { + body: "APIErrorResponse", + }, + 404: { + body: "APIErrorResponse", + }, + }, + }), + async (req: Request, res: Response) => { + const platform = req.query.platform; + + if (!platform) + throw FieldErrors({ + platform: { + code: "BASE_TYPE_REQUIRED", + message: req.t("common:field.BASE_TYPE_REQUIRED"), + }, + }); + + const release = await Release.findOneOrFail({ + where: { + enabled: true, + platform: platform as string, + }, + order: { pub_date: "DESC" }, }); - const release = await Release.findOneOrFail({ - where: { - enabled: true, - platform: platform as string, - }, - order: { pub_date: "DESC" }, - }); - - res.json({ - name: release.name, - pub_date: release.pub_date, - url: release.url, - notes: release.notes, - }); -}); + res.json({ + name: release.name, + pub_date: release.pub_date, + url: release.url, + notes: release.notes, + }); + }, +); export default router; diff --git a/src/util/schemas/responses/DiscoverableGuildsResponse.ts b/src/util/schemas/responses/DiscoverableGuildsResponse.ts new file mode 100644 index 00000000..2a9fb1bd --- /dev/null +++ b/src/util/schemas/responses/DiscoverableGuildsResponse.ts @@ -0,0 +1,8 @@ +import { Guild } from "../../entities"; + +export interface DiscoverableGuildsResponse { + total: number; + guilds: Guild[]; + offset: number; + limit: number; +} diff --git a/src/util/schemas/responses/DiscoveryCategoriesResponse.ts b/src/util/schemas/responses/DiscoveryCategoriesResponse.ts new file mode 100644 index 00000000..c23f4f88 --- /dev/null +++ b/src/util/schemas/responses/DiscoveryCategoriesResponse.ts @@ -0,0 +1,3 @@ +import { Categories } from "../../entities"; + +export type DiscoveryCategoriesResponse = Categories[]; diff --git a/src/util/schemas/responses/GuildRecommendationsResponse.ts b/src/util/schemas/responses/GuildRecommendationsResponse.ts new file mode 100644 index 00000000..211670a6 --- /dev/null +++ b/src/util/schemas/responses/GuildRecommendationsResponse.ts @@ -0,0 +1,6 @@ +import { Guild } from "../../entities"; + +export interface GuildRecommendationsResponse { + recommended_guilds: Guild[]; + load_id: string; +} diff --git a/src/util/schemas/responses/InstancePingResponse.ts b/src/util/schemas/responses/InstancePingResponse.ts new file mode 100644 index 00000000..5f1a9488 --- /dev/null +++ b/src/util/schemas/responses/InstancePingResponse.ts @@ -0,0 +1,13 @@ +export interface InstancePingResponse { + ping: "pong!"; + instance: { + id: string; + name: string; + description: string | null; + image: string | null; + correspondenceEmail: string | null; + correspondenceUserID: string | null; + frontPage: string | null; + tosPage: string | null; + }; +} diff --git a/src/util/schemas/responses/UpdatesResponse.ts b/src/util/schemas/responses/UpdatesResponse.ts new file mode 100644 index 00000000..6b8566f4 --- /dev/null +++ b/src/util/schemas/responses/UpdatesResponse.ts @@ -0,0 +1,6 @@ +export interface UpdatesResponse { + name: string; + pub_date: string; + url: string; + notes: string | null; +} diff --git a/src/util/schemas/responses/index.ts b/src/util/schemas/responses/index.ts index e75ab382..282c4a41 100644 --- a/src/util/schemas/responses/index.ts +++ b/src/util/schemas/responses/index.ts @@ -9,6 +9,8 @@ export * from "./CaptchaRequiredResponse"; export * from "./ChannelInvitesResponse"; export * from "./ChannelPinsResponse"; export * from "./ChannelWebhooksResponse"; +export * from "./DiscoverableGuildsResponse"; +export * from "./DiscoveryCategoriesResponse"; export * from "./GatewayBotResponse"; export * from "./GatewayResponse"; export * from "./GeneralConfigurationResponse"; @@ -22,6 +24,7 @@ export * from "./GuildInvitesResponse"; export * from "./GuildMembersResponse"; export * from "./GuildMessagesSearchResponse"; export * from "./GuildPruneResponse"; +export * from "./GuildRecommendationsResponse"; export * from "./GuildResponse"; export * from "./GuildRolesResponse"; export * from "./GuildStickersResponse"; @@ -31,6 +34,7 @@ export * from "./GuildVoiceRegionsResponse"; export * from "./GuildWidgetJsonResponse"; export * from "./GuildWidgetSettingsResponse"; export * from "./InstanceDomainsResponse"; +export * from "./InstancePingResponse"; export * from "./InstanceStatsResponse"; export * from "./LimitsConfigurationResponse"; export * from "./LocationMetadataResponse"; @@ -39,6 +43,7 @@ export * from "./OAuthAuthorizeResponse"; export * from "./StickerPacksResponse"; export * from "./Tenor"; export * from "./TokenResponse"; +export * from "./UpdatesResponse"; export * from "./UserNoteResponse"; export * from "./UserProfileResponse"; export * from "./UserRelationshipsResponse";