From 129c0a2c331ffc17b6821d47176189668977f7d3 Mon Sep 17 00:00:00 2001 From: Tahmid Ahmed Date: Wed, 21 Jan 2026 21:03:48 -0500 Subject: [PATCH 1/2] 644: Add MHC++ Discord Club --- .../V0069__Add_mhc_plus_plus_club_tag.SQL | 1 + ...070__Add_mhc_plus_plus_to_discord_club.SQL | 64 + js/public/brands/Mhcpp_logo.png | Bin 0 -> 9500 bytes js/src/lib/api/types/schema.ts | 3401 +++++++++++++++++ js/src/lib/api/utils/metadata/tag/index.ts | 7 + .../common/db/models/usertag/Tag.java | 3 +- .../options/LeaderboardFilterGenerator.java | 2 + .../options/LeaderboardFilterOptions.java | 3 + 8 files changed, 3480 insertions(+), 1 deletion(-) create mode 100644 db/migration/V0069__Add_mhc_plus_plus_club_tag.SQL create mode 100644 db/migration/V0070__Add_mhc_plus_plus_to_discord_club.SQL create mode 100644 js/public/brands/Mhcpp_logo.png create mode 100644 js/src/lib/api/types/schema.ts diff --git a/db/migration/V0069__Add_mhc_plus_plus_club_tag.SQL b/db/migration/V0069__Add_mhc_plus_plus_club_tag.SQL new file mode 100644 index 000000000..b981ae54b --- /dev/null +++ b/db/migration/V0069__Add_mhc_plus_plus_club_tag.SQL @@ -0,0 +1 @@ +ALTER TYPE "Tag" ADD VALUE 'MHCPlusPlus'; diff --git a/db/migration/V0070__Add_mhc_plus_plus_to_discord_club.SQL b/db/migration/V0070__Add_mhc_plus_plus_to_discord_club.SQL new file mode 100644 index 000000000..d86af9212 --- /dev/null +++ b/db/migration/V0070__Add_mhc_plus_plus_to_discord_club.SQL @@ -0,0 +1,64 @@ +INSERT INTO "DiscordClub" + (id, name, description, tag) +VALUES + (gen_random_uuid(), 'MHC++', NULL, 'MHCPlusPlus'); + + +DO $$ +BEGIN + CASE current_database() + WHEN 'codebloom-prod' THEN + WITH CLUB AS ( + SELECT + * + FROM + "DiscordClub" + WHERE + name = 'MHC++' + ) + INSERT INTO "DiscordClubMetadata" + (id, "guildId", "leaderboardChannelId", "discordClubId") + SELECT + gen_random_uuid(), + '1048355383728672829', + '1074033436404228206', + CLUB.id + FROM CLUB; + + WHEN 'codebloom-stg' THEN + WITH CLUB AS ( + SELECT + * + FROM + "DiscordClub" + WHERE + name = 'MHC++' + ) + INSERT INTO "DiscordClubMetadata" + (id, "guildId", "leaderboardChannelId", "discordClubId") + SELECT + gen_random_uuid(), + '1389762654452580373', + '1417161536014778388', + CLUB.id + FROM CLUB; + + ELSE + WITH CLUB AS ( + SELECT + * + FROM + "DiscordClub" + WHERE + name = 'MHC++' + ) + INSERT INTO "DiscordClubMetadata" + (id, "guildId", "leaderboardChannelId", "discordClubId") + SELECT + gen_random_uuid(), + '1389762654452580373', + '1463703700697518113', + CLUB.id + FROM CLUB; + END CASE; +END $$; diff --git a/js/public/brands/Mhcpp_logo.png b/js/public/brands/Mhcpp_logo.png new file mode 100644 index 0000000000000000000000000000000000000000..2df2a539578b0f289343b550c43ca04fe5e96c91 GIT binary patch literal 9500 zcmeHtdsI?s+rGV1Q)X%9m`!FnHDzV$Xr<+eVQjL}GBd^Sz!;etDw%me1tx8B%oJxT z%RG=-Y9cbGh$6^LrkLiT5Ks|$^Oz7afT*0m?acQ!^IPk;*0;X3zCY)Wy;#6=xDVHT zU)Qtu&N*}1d;Qw2YYhwx)}J_j^sIrw3fc0t=2PI84L|t~03Rz7&w77jP}jF@7WlF< z3VaG|U{H@U(nPERz8hXSem>E_z-ZI*wc;%wqcJe}vi`(T@VV4*F+YbAc|OeQca6{a zPq)Twq`r^8baBIH*AGYBzVM~7e~F`$>7gAfUpzVX>leEdzRug&@WMJj$7xU24&pD> zi#0Wb8bWJLD}st*ghW9kp7j3o8Cps|eQ{AGKQE$CMWcy*V`^W4TS!+a;WPLXKPnR`ECdhL1fw_qi6nA{gMECA$$O>rX*D&7Yg_hpqv`;J zF9+#DxH8=i189#G`82veCCRR~4{fE6UN%Kx3!w&aY%|p_B>K7Wd0U45*mo|f z$o^!Qh74?y#vGU3XN;0R_1y*R5mkVviR*Jk5K^)osehQF32g-(xMz(I60MUV?%Uh- z(Z$3b$lHz0L|rX488%Owa!k<5rs~Xp-IAH{g#4*8JZy<>at)Z<*C2^rh^*T*$+~O_ z-i}PcYl~d?sUfsC+2p}+o^&&fG8VB7?D>|OH=^0;0hru@G>JU@S{D!%Qnk z!){GHaa^ESA$=_hr*qURt&ITVc4xZlYNIU2{feRD{xHBcqSMPdetLvtDeY22X(>Ri#%I%_bAx zl*%pW_8Jbdi5KQ&D2quNw8kOdx}nq)#iG;a(<8QH<5u93f#Bq=Qik&v-M*^Vgti!+wNjT~vdTZ}){nYOS?GNz;v=zt1J7BlZD)7+Xv(YC1_S+>{dGya@*8GJ-Oc&F<=&0gyZr4Wz?Eui#S4YWwDl z%J{K}u;uhcWV*LaU#oyosGZcMDC|gHnrCK4nxRa&90AM8RtIzh_YS*R^VH!G?|js9 z2p(7q2JxHYpOhu@e)7a@@hb3h0DFRf#8qaww+&yu=c3q;-BQ8s+q&%5voFkGh!JRi zLS2LY-Fp7}nJ>Dk?px#W)>bhS;5LZ#Kn3BdY%h!-3ol)^X3$!I;;hBGx%-Gqs}f9S zLRTv1H%-b-fp~cp;4@S?buQkCvm|{DU3UmrCMY0N(`KT@PrGhkZzg!_Tgt(WM*G2)^3eDwdS;$+B-l)-c_{7`XC?aL_iqtyzKtJr53T<&bs9rRJNe zu#>B~s#0C6!+9|b_1RxW?e1C>j)9i6br4pmYEBYemuULuVnCoQd#4~!KTv)1(tYe3 z^5H&qL)7BGwD-gcBDHMEtYLJ1_s3utXKDs1SRXDSW}NrVS>Y2!T&@$}0+^23`mm?2 zaZXdy!ETkzK}+T|>DXuVF*9yUN*f)Kkn~pu0t&ogb^H`0w?Wz@Cb+IrHf}YYoEcl- zOh30Jm{Rs**D9*#v@q;f>LX_OVbViue0XLC1}F~VS{dC{@52~S#M0tg@0YG)8q$z=j~#~-L!p)*6Uo~=DfO5Q7+reWut0SVEH;)kr-L$) z_sH@OZoD|+qt2De5@yV8HSbE#Ew<##lBx9~23_)H;mWg!fb)U{1RY|<&ua5O1cB24Cb~+NSy-_!>5)@ zV)ZIz32#>Chk1_J1p=2nS*eT$QV_RZ#u6;vs>^O~dUwAMx(p#OxJ`3%u=6URTHDrQ zXYu!;OPTjY_Z?E`8BcPtx+w8f)1#HjM%O)E6LT}1tKP(=%I1lq1vY!Zo)3XKMr37> z7K~o9NE+R=6YtEQ_S)bVo=gKnkF*6x-dTzIdDCPC&`_F=bYkCN%PAlf7OLdk4(V2+1>nEmD%fqrb-J;1hYw|@cB+j7g~0W?xM=i<)zyE6}MyC!C~ zK@^0GQQ?Y;Fr;~pDeX}IAXSgl9V@9U@L69C=~##_~wj9Eu;H{BOPjLkj(Typ?i3si!_E#k=M5m(ycV@9m5n_ zi*jhtRXYKqZELj_m=>7T>< z+munoJ;cX-v^nQ*MuAuv83ATU)@J6Ru9+qEd$s4nn@b^tX4Az@sz^Y{yRbJivaiRTezrv`s8(Ij(i!JZwvv)o@Nl^p9J5r}UUtF21353s*W z^mPdF7awykS|d9^Qq@npBS`f6@Yd9N5g@fLuz-H_c;?Xkut2^X!FWr)b}b4c4D59d z3Zn4elIO4deR?idWz&n|gtZD}Ki7G?tdU6pqKp!#Dti0n^)3x61w_lyOS?&Md;H_uBM@qI3p$z{sPWPN@xvFRAw zCwwUHRu&*{I2$Jc4@38a$cYUqyzSaQb~4fNXO>&`Lip_VU9bD;aP279f5@d1iG4E7vzUZrfxaQMyDR@WGJ`XiHbEdS(6O#@qulRz|e(YAb57xUIaUZ{mzwKYC>3#Wx>)2K4#ZzF4~k;Vs6IF&qE@ z+pG+~(N`W^%xE-Ux72ZuRn_X>=lA#VFMp^ZkM0wd36>OfWank8K1Bs%CU|!k&s*m1 zDxNU++oQ)P`0qJ?6O)erH*P2%ytt?CaUWd-O8H|>ep09ZrM zP=JQO&7}bdGzfcOPjPhpdx^S@t_v3I!9U18p@>4KSd=d%H%yZ zsWyJ2Z$Gp{FO$S;eqTyE|L^YrMR01ha`|-DqA3^k*<3?-E<2E3U@l$dG^1mM6k0JF zRZiX=y(v=1votq@+sjs6D`1|AAx@cuNEd&B0~-Jb7w&eN$SAh~sT*czt5|;fPwRhO zw8v#F-8ua4D?q=ICQlT((2}RjU;~bv77ByhlHWeKe1xZPvP#qYTOW!JU(VBp{M(43 zE$*GdLCrCePr{4{iOO94U@XFn+?-5AL?(_C7nkn>|U-JMY9!WK(9`fzPm6Lg<2_#RhNTal^aaU+bE98W79a6E>;9}QQ+r3u`{P`8NC6{ zm}w25q`3Awx4pAAHEUfj8*oKX?h%^d#!*GEPsgDO{f;N@$#>;-V=yMFwJz5hZ*4q! zHpN5g=wk8`n>H{^w;As&2=zmOXGT^X*ESN zoh0n)GI`b(Y-0H%eEK~3ZTPdRQsrA0#$*I*mGbh-g*e5|7ZtuBV_w>E%g4o3Ywv-1 z^#;-op9f4rcRLhw@j1l-C+9H~4VKJX+L4h;M~l~sU?&x^h7JRg0eT3F1S~O|wWj^UdOakXv^b2+5CV0lW zv)f4m&sufD0PlHHfr1jFaVwO-Lg5x2P5XMj{Z?T?6y!nD9ua(>%3PbzR6o`}*PV4F zVl~E==@BjB^u=Q@nfuk2Tx~KO-_%#6lUf|QhOwgrlB|ew#BqA4U8gx3r{IbUQ6jm0 zeg_baF)wC-heu~1?oi!z-KsEIx)Au^$F|QuQG#ZHy|M5>n`Dwjf*qS2RQ41rqQD9gax@ z8ZT}BE%_toYaiIZu}N##<#8i5y5u3rl2|}b*hFQV6sk##HFdp3*h}BzWmjSRH4%A#(7lj zHi%lB>qI;^Uk@t$LXmnwtM&lEhfqAj>~cFer+O7WT&bXW@eVFPUbhN#HR?@rJ2gZs zFV}98cfu7-KSr9IozB}@@j7JDZ6xlLm1~)BmMDM3I5mV{hVsf9lL08AOf~L&ZO2P+ zxGyScOE;~4E}9Vf*@aTYs{qPIQJ%6wXmp0JhZY4bGBAPXNN#2Bca!cz_IkmIY6z0G zSNo&$$#gB|u2Pi5^*h+Til%8*6vhe$f^QC*6I3T&gWE@gux8n7~7AB>%sJhHKVgMdDyv zmJl;Mv(jm#fmj8CZn0(~YhX9Hp zpaZhcSzS?F54Lz%=5uWloq|#emPwZxxq@CR))N%xsc7!bxXNtW<(Wk7S%t0Mn z^lZjN0rv`Y2=D{lO0zn~_UjUQ<_*K(O)-RV=>;=&#_^(*>dxEsWmo|Cd`4Pp{^#n! zxEH#W$}iZfL($fpo6~z)H&5Rv-+H+!Xqw0k8?^C5XEGZ!s>GHcc6Vct1v;siSfh4S zOxgocJo*(^@?~QU!?Gvjx%6@!ZIu;Ln&&T}r0w?#a_lU3&gQ&%=-HV6OiSPf^jis; zH*3Nx%P{8@A@3Eu#w2{_2a+SNF;JRXe+%vTz%FO} zlRD20|H*g@suBiosd)q`gGLk@P$K34PG;TameS{fIN{_ZA&U%R+j4;wX6q<5O>}$uc>AZ&*P*%q% zL_`w4Ct*WeVT__V`}T09*6~|5@;d1P-ej-5(4tcn*h$Af&##7#!p}4zJj#}X8BI8Z zj{g7VTWI8)ank~M3a5R3gG0?#O+MpQgCN@y&)$nkvLIT-j!zx3Nq zOd$p1ogiNtw|vJYMh8edy_mrp^@nN+EtDhtF63v zWM2ZWmV)pA%=cnt=O0+GS?>KyqEG6b5Be1aS^cgExju!AnD}x(62(QD%vF)+9($t3 z^|`WJ2WvvVd<;_X#AH=G?}38~ifs%3*S^a8F$tN4xnQj_iH}>8=|rckeV-jGo~E&b zMMmNCd-qe|N!Q;?NL2jO&QOEg=e~{pV@cJ_U|4E}*vX@FOB|O+W#Ey0A$j%T-gK>S zf*9oI5aD*o>aK(BFw$xeoud?8$&U-(ZmVW694<#fu_~}|f;u`Hg!j|pPQ;%U@HlVq z?;+X*-{I_tZf7Fn^|P^=B)t%hjOIr|=Sd~7gxb5a3Rj_X@2Wv$7;$bfq!RR5h=uk;O55VEy*l_ASrXk8dB zyC#TK1xt8y+qAjbixHRv5*q2x040-Ft5}s$4OJ7y7T_Q&hss#oR7V^>?yaCdGR>p& zJ+>$u$xx*d*sPF1P)rfk1j=h|g7LIC2O+aEIG$yH4azoYP~E%47(ZOSK8~fkQ%vnP zz46%7^ABefrXq|2SB1vW>6k&eaZcMDMJu$~Rql(^agANMqIwBeQmty9{%*OB?)+l5 zE+V?jiHP0t(hz78{Vvlt)+wCOidQU6{aM8V zff-By$ib-w`;##sVBYt`im&=|aeijJMo`m`M6s~}17l}@KETk3BFMg|O#m4>u z0%MLRykK5GZ&iZ+lN_M#o6WPT_u9aRko<(JcbOqJC-<9@`g$f-=Q&Q}nB7iZCtDq1 zvyk&h{fo~pKyQ0&$3^^|7D#3@q4cH(q&U8#1%Ro4o1D)BK5$^vrGfF5tcjsA2P()(Mp| zbab8Bgj>GE*#LN};p{(8@Bevv|35vw|K}~3|J|!UPsqU<>}?+A; +export interface components { + schemas: { + IngestLogBody: { + info: string; + }; + ApiResponderEmpty: { + success: boolean; + payload: components["schemas"]["Empty"]; + message: string; + }; + Empty: Record; + IngestErrorsBody: { + trace: string; + }; + UnsafeGenericFailureResponse: { + /** @default false */ + success: boolean; + message: string; + }; + UnsafeEmptySuccessResponse: { + /** @default true */ + success: boolean; + message: string; + }; + LeetcodeUsernameObject: { + leetcodeUsername: string; + }; + UnsafeRateLimitResponse: { + /** @default false */ + success: boolean; + /** @default 28 */ + message: string; + }; + AcceptedSubmission: { + title: string; + questionId: string; + /** Format: int32 */ + points: number; + }; + ApiResponderArrayListAcceptedSubmission: { + success: boolean; + payload: components["schemas"]["AcceptedSubmission"][]; + message: string; + }; + AchievementDto: { + id: string; + userId: string; + /** + * @description AchievementPlaceEnum + * @enum {string} + */ + place: AchievementPlaceEnum; + /** + * @description Tag + * @enum {string|null} + */ + leaderboard: Tag; + title: string; + description?: string | null; + /** Format: date-time */ + createdAt: string; + /** Format: date-time */ + deletedAt?: string | null; + active?: boolean; + }; + DuelData: { + lobby: components["schemas"]["LobbyDto"]; + questions: components["schemas"]["QuestionBankDto"][]; + players: components["schemas"]["UserDto"][]; + playerQuestions: { + [key: string]: components["schemas"]["QuestionDto"][]; + }; + }; + LobbyDto: { + id: string; + joinCode: string; + /** + * @description LobbyStatus + * @enum {string} + */ + status: LobbyStatus; + /** Format: date-time */ + expiresAt: string | null; + /** Format: date-time */ + createdAt: string; + /** Format: int32 */ + playerCount: number; + winnerId: string | null; + }; + QuestionBankDto: { + id: string; + questionSlug: string; + /** + * @description QuestionDifficulty + * @enum {string} + */ + questionDifficulty: QuestionDifficulty; + questionTitle: string; + /** Format: int32 */ + questionNumber: number; + questionLink: string; + description?: string | null; + /** Format: float */ + acceptanceRate: number; + /** Format: date-time */ + createdAt: string; + topics: components["schemas"]["QuestionTopicDto"][]; + }; + QuestionDto: { + id: string; + userId: string; + questionSlug: string; + questionTitle: string; + /** + * @description QuestionDifficulty + * @enum {string} + */ + questionDifficulty: QuestionDifficulty; + /** Format: int32 */ + questionNumber: number; + questionLink: string; + description: string | null; + /** Format: int32 */ + pointsAwarded: number | null; + /** Format: float */ + acceptanceRate: number; + /** Format: date-time */ + createdAt: string; + /** Format: date-time */ + submittedAt: string; + runtime: string | null; + memory: string | null; + code: string | null; + language: string | null; + submissionId: string | null; + topics: components["schemas"]["QuestionTopicDto"][]; + }; + QuestionTopicDto: { + id: string; + questionId: string; + topicSlug: string; + /** + * @description LeetcodeTopicEnum + * @enum {string} + */ + topic: LeetcodeTopicEnum; + /** Format: date-time */ + createdAt: string; + }; + SseWrapperApiResponderDuelData: { + success: boolean; + payload: components["schemas"]["DuelData"]; + message: string; + }; + UserDto: { + id: string; + discordId: string; + discordName: string; + leetcodeUsername: string | null; + nickname: string | null; + admin: boolean; + profileUrl: string | null; + tags: components["schemas"]["UserTag"][]; + achievements: components["schemas"]["AchievementDto"][]; + }; + UserTag: { + id: string; + /** Format: date-time */ + createdAt: string; + userId: string; + /** + * @description Tag + * @enum {string} + */ + tag: Tag; + }; + JoinLobbyBody: { + partyCode: string; + }; + ApiResponderPartyCodeBody: { + success: boolean; + payload: components["schemas"]["PartyCodeBody"]; + message: string; + }; + PartyCodeBody: { + code: string; + }; + RegisterClubBody: { + userId: string; + password: string; + clubSlug: string; + }; + ApiResponderUserTag: { + success: boolean; + payload: components["schemas"]["UserTag"]; + message: string; + }; + EmailBody: { + email: string; + }; + UpdateAdminBody: { + id: string; + toggleTo: boolean; + }; + ApiResponderUserDto: { + success: boolean; + payload: components["schemas"]["UserDto"]; + message: string; + }; + NewLeaderboardBody: { + name: string; + /** Format: date-time */ + shouldExpireBy?: string; + syntaxHighlightingLanguage?: string; + }; + DeleteAnnouncementBody: { + id: string; + }; + CreateAnnouncementBody: { + message: string; + /** Format: date-time */ + expiresAt: string; + showTimer?: boolean; + }; + Announcement: { + id: string; + /** Format: date-time */ + createdAt: string; + /** Format: date-time */ + expiresAt: string; + showTimer: boolean; + message: string; + }; + ApiResponderAnnouncement: { + success: boolean; + payload: components["schemas"]["Announcement"]; + message: string; + }; + ApiResponderServerMetadataObject: { + success: boolean; + payload: components["schemas"]["ServerMetadataObject"]; + message: string; + }; + ServerMetadataObject: { + name: string; + version: string; + description: string; + authors: string[]; + }; + ApiResponderPageQuestionDto: { + success: boolean; + payload: components["schemas"]["PageQuestionDto"]; + message: string; + }; + PageQuestionDto: { + hasNextPage: boolean; + items: components["schemas"]["QuestionDto"][]; + /** Format: int32 */ + pages: number; + /** Format: int32 */ + pageSize: number; + }; + ApiResponderPageUserDto: { + success: boolean; + payload: components["schemas"]["PageUserDto"]; + message: string; + }; + PageUserDto: { + hasNextPage: boolean; + items: components["schemas"]["UserDto"][]; + /** Format: int32 */ + pages: number; + /** Format: int32 */ + pageSize: number; + }; + ApiResponderQuestionWithUserDto: { + success: boolean; + payload: components["schemas"]["QuestionWithUserDto"]; + message: string; + }; + QuestionWithUserDto: { + id: string; + userId: string; + questionSlug: string; + questionTitle: string; + /** + * @description QuestionDifficulty + * @enum {string} + */ + questionDifficulty: QuestionDifficulty; + /** Format: int32 */ + questionNumber: number; + questionLink: string; + description: string | null; + /** Format: int32 */ + pointsAwarded: number | null; + /** Format: float */ + acceptanceRate: number; + /** Format: date-time */ + createdAt: string; + /** Format: date-time */ + submittedAt: string; + runtime: string | null; + memory: string | null; + code: string | null; + language: string | null; + submissionId: string | null; + topics: components["schemas"]["QuestionTopicDto"][]; + discordName: string | null; + leetcodeUsername: string | null; + nickname: string | null; + }; + ApiResponderPotdDto: { + success: boolean; + payload: components["schemas"]["PotdDto"]; + message: string; + }; + PotdDto: { + id: string; + title: string; + slug: string; + /** Format: float */ + multiplier: number; + /** Format: date-time */ + createdAt: string; + }; + ApiResponderString: { + success: boolean; + payload: string; + message: string; + }; + ApiResponderPageIndexedUserWithScoreDto: { + success: boolean; + payload: components["schemas"]["PageIndexedUserWithScoreDto"]; + message: string; + }; + IndexedUserWithScoreDto: { + /** Format: int32 */ + index: number; + id: string; + discordId: string; + discordName: string; + leetcodeUsername: string | null; + nickname: string | null; + admin: boolean; + profileUrl: string | null; + tags: components["schemas"]["UserTag"][]; + achievements: components["schemas"]["AchievementDto"][]; + /** Format: int32 */ + totalScore: number; + }; + PageIndexedUserWithScoreDto: { + hasNextPage: boolean; + items: components["schemas"]["IndexedUserWithScoreDto"][]; + /** Format: int32 */ + pages: number; + /** Format: int32 */ + pageSize: number; + }; + UserWithScoreDto: { + id: string; + discordId: string; + discordName: string; + leetcodeUsername: string | null; + nickname: string | null; + admin: boolean; + profileUrl: string | null; + tags: components["schemas"]["UserTag"][]; + achievements: components["schemas"]["AchievementDto"][]; + /** Format: int32 */ + totalScore: number; + }; + ApiResponderLeaderboardDto: { + success: boolean; + payload: components["schemas"]["LeaderboardDto"]; + message: string; + }; + LeaderboardDto: { + id: string; + name: string; + /** Format: date-time */ + createdAt: string; + /** Format: date-time */ + deletedAt: string | null; + /** Format: date-time */ + shouldExpireBy: string | null; + syntaxHighlightingLanguage: string | null; + }; + ApiResponderUserWithScoreDto: { + success: boolean; + payload: components["schemas"]["UserWithScoreDto"]; + message: string; + }; + ApiResponderIndexedUserWithScoreDto: { + success: boolean; + payload: components["schemas"]["IndexedUserWithScoreDto"]; + message: string; + }; + ApiResponderPageLeaderboardDto: { + success: boolean; + payload: components["schemas"]["PageLeaderboardDto"]; + message: string; + }; + PageLeaderboardDto: { + hasNextPage: boolean; + items: components["schemas"]["LeaderboardDto"][]; + /** Format: int32 */ + pages: number; + /** Format: int32 */ + pageSize: number; + }; + Achievement: { + id: string; + userId: string; + /** + * @description AchievementPlaceEnum + * @enum {string} + */ + place: AchievementPlaceEnum; + /** + * @description Tag + * @enum {string} + */ + leaderboard: Tag; + title: string; + description: string; + /** Format: date-time */ + createdAt: string; + /** Format: date-time */ + deletedAt: string; + active: boolean; + }; + ApiResponderListUserWithScore: { + success: boolean; + payload: components["schemas"]["UserWithScore"][]; + message: string; + }; + UserWithScore: { + id: string; + discordId: string; + discordName: string; + leetcodeUsername: string; + nickname: string; + admin: boolean; + profileUrl: string; + verifyKey: string; + schoolEmail: string; + tags: components["schemas"]["UserTag"][]; + achievements: components["schemas"]["Achievement"][]; + /** Format: int32 */ + totalScore: number; + }; + ApiResponderClubDto: { + success: boolean; + payload: components["schemas"]["ClubDto"]; + message: string; + }; + ClubDto: { + id: string; + name: string; + description: string; + slug: string; + splashIconUrl: string; + /** + * @description Tag + * @enum {string} + */ + tag: Tag; + }; + ApiResponderAuthenticationObjectDto: { + success: boolean; + payload: components["schemas"]["AuthenticationObjectDto"]; + message: string; + }; + AuthenticationObjectDto: { + user: components["schemas"]["PrivateUserDto"]; + session: components["schemas"]["SessionDto"]; + }; + PrivateUserDto: { + id: string; + discordId: string; + discordName: string; + leetcodeUsername: string | null; + nickname: string | null; + admin: boolean; + profileUrl: string | null; + tags: components["schemas"]["UserTag"][]; + verifyKey: string; + schoolEmail: string | null; + achievements: components["schemas"]["AchievementDto"][]; + }; + SessionDto: { + id: string; + userId: string; + /** Format: date-time */ + expiresAt: string; + }; + ApplicationContext: { + applicationName: string; + /** Format: int64 */ + startupDate: number; + autowireCapableBeanFactory: components["schemas"]["AutowireCapableBeanFactory"]; + parent: components["schemas"]["ApplicationContext"]; + id: string; + displayName: string; + environment: components["schemas"]["Environment"]; + /** Format: int32 */ + beanDefinitionCount: number; + beanDefinitionNames: string[]; + parentBeanFactory: components["schemas"]["BeanFactory"]; + classLoader: { + name: string; + registeredAsParallelCapable: boolean; + parent: { + name: string; + registeredAsParallelCapable: boolean; + unnamedModule: { + name: string; + descriptor: { + open: boolean; + automatic: boolean; + }; + named: boolean; + annotations: Record[]; + declaredAnnotations: Record[]; + packages: string[]; + nativeAccessEnabled: boolean; + layer: Record; + }; + definedPackages: { + name: string; + sealed: boolean; + annotations: Record[]; + declaredAnnotations: Record[]; + specificationTitle: string; + specificationVersion: string; + specificationVendor: string; + implementationTitle: string; + implementationVersion: string; + implementationVendor: string; + }[]; + defaultAssertionStatus: boolean; + }; + unnamedModule: { + name: string; + descriptor: { + open: boolean; + automatic: boolean; + }; + named: boolean; + annotations: Record[]; + declaredAnnotations: Record[]; + packages: string[]; + nativeAccessEnabled: boolean; + layer: Record; + }; + definedPackages: { + name: string; + sealed: boolean; + annotations: Record[]; + declaredAnnotations: Record[]; + specificationTitle: string; + specificationVersion: string; + specificationVendor: string; + implementationTitle: string; + implementationVersion: string; + implementationVendor: string; + }[]; + defaultAssertionStatus: boolean; + }; + }; + AutowireCapableBeanFactory: Record; + BeanFactory: Record; + Environment: { + activeProfiles: string[]; + defaultProfiles: string[]; + }; + FilterRegistration: { + servletNameMappings: string[]; + urlPatternMappings: string[]; + initParameters: { + [key: string]: string; + }; + name: string; + className: string; + }; + HttpStatusCode: { + is4xxClientError: boolean; + is5xxServerError: boolean; + is1xxInformational: boolean; + is2xxSuccessful: boolean; + is3xxRedirection: boolean; + error: boolean; + }; + JspConfigDescriptor: { + taglibs: components["schemas"]["TaglibDescriptor"][]; + jspPropertyGroups: components["schemas"]["JspPropertyGroupDescriptor"][]; + }; + JspPropertyGroupDescriptor: { + elIgnored: string; + pageEncoding: string; + isXml: string; + includePreludes: string[]; + includeCodas: string[]; + urlPatterns: string[]; + defaultContentType: string; + errorOnELNotFound: string; + scriptingInvalid: string; + deferredSyntaxAllowedAsLiteral: string; + trimDirectiveWhitespaces: string; + errorOnUndeclaredNamespace: string; + buffer: string; + }; + RedirectView: { + applicationContext: components["schemas"]["ApplicationContext"]; + servletContext: components["schemas"]["ServletContext"]; + contentType: string; + requestContextAttribute: string; + staticAttributes: { + [key: string]: Record; + }; + exposePathVariables: boolean; + exposeContextBeansAsAttributes: boolean; + exposedContextBeanNames: string[]; + beanName: string; + url: string; + contextRelative: boolean; + http10Compatible: boolean; + exposeModelAttributes: boolean; + encodingScheme: string; + statusCode: components["schemas"]["HttpStatusCode"]; + expandUriTemplateVariables: boolean; + propagateQueryParams: boolean; + hosts: string[]; + redirectView: boolean; + propagateQueryProperties: boolean; + attributesCSV: string; + attributesMap: { + [key: string]: Record; + }; + attributes: { + [key: string]: string; + }; + }; + ServletContext: { + contextPath: string; + serverInfo: string; + /** Format: int32 */ + sessionTimeout: number; + attributeNames: Record; + initParameterNames: Record; + /** Format: int32 */ + effectiveMajorVersion: number; + /** Format: int32 */ + effectiveMinorVersion: number; + servletContextName: string; + servletRegistrations: { + [key: string]: components["schemas"]["ServletRegistration"]; + }; + filterRegistrations: { + [key: string]: components["schemas"]["FilterRegistration"]; + }; + sessionCookieConfig: components["schemas"]["SessionCookieConfig"]; + sessionTrackingModes: ServletContextSessionTrackingModes[]; + defaultSessionTrackingModes: ServletContextSessionTrackingModes[]; + effectiveSessionTrackingModes: ServletContextSessionTrackingModes[]; + jspConfigDescriptor: components["schemas"]["JspConfigDescriptor"]; + virtualServerName: string; + requestCharacterEncoding: string; + responseCharacterEncoding: string; + classLoader: { + name: string; + registeredAsParallelCapable: boolean; + unnamedModule: { + name: string; + descriptor: { + open: boolean; + automatic: boolean; + }; + named: boolean; + annotations: Record[]; + declaredAnnotations: Record[]; + packages: string[]; + nativeAccessEnabled: boolean; + layer: Record; + }; + definedPackages: { + name: string; + sealed: boolean; + annotations: Record[]; + declaredAnnotations: Record[]; + specificationTitle: string; + specificationVersion: string; + specificationVendor: string; + implementationTitle: string; + implementationVersion: string; + implementationVendor: string; + }[]; + defaultAssertionStatus: boolean; + }; + /** Format: int32 */ + majorVersion: number; + /** Format: int32 */ + minorVersion: number; + }; + ServletRegistration: { + mappings: string[]; + runAsRole: string; + initParameters: { + [key: string]: string; + }; + name: string; + className: string; + }; + SessionCookieConfig: { + secure: boolean; + /** Format: int32 */ + maxAge: number; + httpOnly: boolean; + path: string; + domain: string; + name: string; + attributes: { + [key: string]: string; + }; + /** @deprecated */ + comment: string; + }; + TaglibDescriptor: { + taglibURI: string; + taglibLocation: string; + }; + AnnouncementDto: { + id: string; + /** Format: date-time */ + createdAt: string; + /** Format: date-time */ + expiresAt: string; + showTimer: boolean | null; + message: string; + }; + ApiResponderAnnouncementDto: { + success: boolean; + payload: components["schemas"]["AnnouncementDto"]; + message: string; + }; + ApiResponderListQuestionWithUserDto: { + success: boolean; + payload: components["schemas"]["QuestionWithUserDto"][]; + message: string; + }; + }; + responses: never; + parameters: never; + requestBodies: never; + headers: never; + pathItems: never; +} +export type $defs = Record; +export interface operations { + ingestLog: { + parameters: { + query?: never; + header?: never; + path?: never; + cookie?: never; + }; + requestBody: { + content: { + "application/json": components["schemas"]["IngestLogBody"]; + }; + }; + responses: { + /** @description OK */ + 200: { + headers: { + [name: string]: unknown; + }; + content: { + "*/*": components["schemas"]["ApiResponderEmpty"]; + }; + }; + }; + }; + ingestErrors: { + parameters: { + query?: never; + header?: never; + path?: never; + cookie?: never; + }; + requestBody: { + content: { + "application/json": components["schemas"]["IngestErrorsBody"]; + }; + }; + responses: { + /** @description OK */ + 200: { + headers: { + [name: string]: unknown; + }; + content: { + "*/*": components["schemas"]["ApiResponderEmpty"]; + }; + }; + }; + }; + setLeetcodeUsername: { + parameters: { + query?: never; + header?: never; + path?: never; + cookie?: never; + }; + requestBody: { + content: { + "application/json": components["schemas"]["LeetcodeUsernameObject"]; + }; + }; + responses: { + /** @description Name has been set successfully */ + 200: { + headers: { + [name: string]: unknown; + }; + content: { + "*/*": components["schemas"]["UnsafeEmptySuccessResponse"]; + }; + }; + /** @description Invalid username */ + 400: { + headers: { + [name: string]: unknown; + }; + content: { + "*/*": components["schemas"]["UnsafeGenericFailureResponse"]; + }; + }; + /** @description Not authenticated */ + 401: { + headers: { + [name: string]: unknown; + }; + content: { + "*/*": components["schemas"]["UnsafeGenericFailureResponse"]; + }; + }; + /** @description Attempt to set name that's already been set */ + 409: { + headers: { + [name: string]: unknown; + }; + content: { + "*/*": components["schemas"]["UnsafeGenericFailureResponse"]; + }; + }; + }; + }; + checkLatestSubmissions: { + parameters: { + query?: never; + header?: never; + path?: never; + cookie?: never; + }; + requestBody?: never; + responses: { + /** @description The check was completed successfuly */ + 200: { + headers: { + [name: string]: unknown; + }; + content: { + "*/*": components["schemas"]["ApiResponderArrayListAcceptedSubmission"]; + }; + }; + /** @description Invalid username */ + 400: { + headers: { + [name: string]: unknown; + }; + content: { + "*/*": components["schemas"]["UnsafeGenericFailureResponse"]; + }; + }; + /** @description Not authenticated */ + 401: { + headers: { + [name: string]: unknown; + }; + content: { + "*/*": components["schemas"]["UnsafeGenericFailureResponse"]; + }; + }; + /** @description Leetcode username hasn't been set */ + 412: { + headers: { + [name: string]: unknown; + }; + content: { + "*/*": components["schemas"]["UnsafeGenericFailureResponse"]; + }; + }; + /** @description Rate limited */ + 429: { + headers: { + [name: string]: unknown; + }; + content: { + "*/*": components["schemas"]["UnsafeRateLimitResponse"]; + }; + }; + }; + }; + getDuelData: { + parameters: { + query?: never; + header?: never; + path: { + lobbyCode: string; + }; + cookie?: never; + }; + requestBody?: never; + responses: { + /** @description Sending live duel data */ + 200: { + headers: { + [name: string]: unknown; + }; + content: { + "*/*": components["schemas"]["SseWrapperApiResponderDuelData"]; + }; + }; + /** @description Endpoint is currently non-functional */ + 403: { + headers: { + [name: string]: unknown; + }; + content: { + "*/*": components["schemas"]["UnsafeGenericFailureResponse"]; + }; + }; + /** @description A duel with the given code cannot be found. */ + 404: { + headers: { + [name: string]: unknown; + }; + content: { + "*/*": components["schemas"]["UnsafeGenericFailureResponse"]; + }; + }; + }; + }; + startDuel: { + parameters: { + query?: never; + header?: never; + path?: never; + cookie?: never; + }; + requestBody?: never; + responses: { + /** @description Duel successfully started! */ + 200: { + headers: { + [name: string]: unknown; + }; + content: { + "*/*": components["schemas"]["ApiResponderEmpty"]; + }; + }; + /** @description Unauthorized */ + 401: { + headers: { + [name: string]: unknown; + }; + content: { + "*/*": components["schemas"]["UnsafeGenericFailureResponse"]; + }; + }; + /** @description Endpoint is currently non-functional */ + 403: { + headers: { + [name: string]: unknown; + }; + content: { + "*/*": components["schemas"]["UnsafeGenericFailureResponse"]; + }; + }; + /** @description The user is not currently in a party. */ + 404: { + headers: { + [name: string]: unknown; + }; + content: { + "*/*": components["schemas"]["UnsafeGenericFailureResponse"]; + }; + }; + /** @description There is a conflict with the request; check message */ + 409: { + headers: { + [name: string]: unknown; + }; + content: { + "*/*": components["schemas"]["UnsafeGenericFailureResponse"]; + }; + }; + }; + }; + processSolvedProblemsInDuel: { + parameters: { + query?: never; + header?: never; + path?: never; + cookie?: never; + }; + requestBody?: never; + responses: { + /** @description The user's solved questions were processed (could still mean no new points were awarded) */ + 200: { + headers: { + [name: string]: unknown; + }; + content: { + "*/*": components["schemas"]["ApiResponderEmpty"]; + }; + }; + /** @description Unauthorized */ + 401: { + headers: { + [name: string]: unknown; + }; + content: { + "*/*": components["schemas"]["UnsafeGenericFailureResponse"]; + }; + }; + /** @description Endpoint is currently non-functional */ + 403: { + headers: { + [name: string]: unknown; + }; + content: { + "*/*": components["schemas"]["UnsafeGenericFailureResponse"]; + }; + }; + /** @description The user is not currently in a duel. */ + 404: { + headers: { + [name: string]: unknown; + }; + content: { + "*/*": components["schemas"]["UnsafeGenericFailureResponse"]; + }; + }; + }; + }; + leaveParty: { + parameters: { + query?: never; + header?: never; + path?: never; + cookie?: never; + }; + requestBody?: never; + responses: { + /** @description Party left successfully */ + 200: { + headers: { + [name: string]: unknown; + }; + content: { + "*/*": components["schemas"]["ApiResponderEmpty"]; + }; + }; + /** @description Unauthorized */ + 401: { + headers: { + [name: string]: unknown; + }; + content: { + "*/*": components["schemas"]["UnsafeGenericFailureResponse"]; + }; + }; + /** @description Endpoint is currently non-functional */ + 403: { + headers: { + [name: string]: unknown; + }; + content: { + "*/*": components["schemas"]["UnsafeGenericFailureResponse"]; + }; + }; + /** @description The user is not currently in a party. */ + 404: { + headers: { + [name: string]: unknown; + }; + content: { + "*/*": components["schemas"]["UnsafeGenericFailureResponse"]; + }; + }; + }; + }; + joinParty: { + parameters: { + query?: never; + header?: never; + path?: never; + cookie?: never; + }; + requestBody: { + content: { + "application/json": components["schemas"]["JoinLobbyBody"]; + }; + }; + responses: { + /** @description Party has been successfully joined! */ + 200: { + headers: { + [name: string]: unknown; + }; + content: { + "*/*": components["schemas"]["ApiResponderEmpty"]; + }; + }; + /** @description Unauthorized */ + 401: { + headers: { + [name: string]: unknown; + }; + content: { + "*/*": components["schemas"]["UnsafeGenericFailureResponse"]; + }; + }; + /** @description Endpoint is currently non-functional */ + 403: { + headers: { + [name: string]: unknown; + }; + content: { + "*/*": components["schemas"]["UnsafeGenericFailureResponse"]; + }; + }; + /** @description Party with the given code cannot be found */ + 404: { + headers: { + [name: string]: unknown; + }; + content: { + "*/*": components["schemas"]["UnsafeGenericFailureResponse"]; + }; + }; + /** @description There is a conflict with the request; check message */ + 409: { + headers: { + [name: string]: unknown; + }; + content: { + "*/*": components["schemas"]["UnsafeGenericFailureResponse"]; + }; + }; + /** @description There is an issue with the request; check message */ + 410: { + headers: { + [name: string]: unknown; + }; + content: { + "*/*": components["schemas"]["UnsafeGenericFailureResponse"]; + }; + }; + }; + }; + createParty: { + parameters: { + query?: never; + header?: never; + path?: never; + cookie?: never; + }; + requestBody?: never; + responses: { + /** @description Party created successfully */ + 200: { + headers: { + [name: string]: unknown; + }; + content: { + "*/*": components["schemas"]["ApiResponderPartyCodeBody"]; + }; + }; + /** @description Unauthorized */ + 401: { + headers: { + [name: string]: unknown; + }; + content: { + "*/*": components["schemas"]["UnsafeGenericFailureResponse"]; + }; + }; + /** @description Endpoint is currently non-functional */ + 403: { + headers: { + [name: string]: unknown; + }; + content: { + "*/*": components["schemas"]["UnsafeGenericFailureResponse"]; + }; + }; + /** @description There is a conflict with the request; check message */ + 409: { + headers: { + [name: string]: unknown; + }; + content: { + "*/*": components["schemas"]["UnsafeGenericFailureResponse"]; + }; + }; + }; + }; + endDuel: { + parameters: { + query?: never; + header?: never; + path?: never; + cookie?: never; + }; + requestBody?: never; + responses: { + /** @description Duel has been successfully ended! */ + 200: { + headers: { + [name: string]: unknown; + }; + content: { + "*/*": components["schemas"]["ApiResponderEmpty"]; + }; + }; + /** @description Unauthorized */ + 401: { + headers: { + [name: string]: unknown; + }; + content: { + "*/*": components["schemas"]["UnsafeGenericFailureResponse"]; + }; + }; + /** @description Endpoint is currently non-functional */ + 403: { + headers: { + [name: string]: unknown; + }; + content: { + "*/*": components["schemas"]["UnsafeGenericFailureResponse"]; + }; + }; + /** @description The user is not currently in a duel. */ + 404: { + headers: { + [name: string]: unknown; + }; + content: { + "*/*": components["schemas"]["UnsafeGenericFailureResponse"]; + }; + }; + /** @description There is a conflict with the request; check message */ + 409: { + headers: { + [name: string]: unknown; + }; + content: { + "*/*": components["schemas"]["UnsafeGenericFailureResponse"]; + }; + }; + }; + }; + validatePassword: { + parameters: { + query?: never; + header?: never; + path?: never; + cookie?: never; + }; + requestBody: { + content: { + "application/json": components["schemas"]["RegisterClubBody"]; + }; + }; + responses: { + /** @description OK */ + 200: { + headers: { + [name: string]: unknown; + }; + content: { + "*/*": components["schemas"]["ApiResponderUserTag"]; + }; + }; + }; + }; + enrollSchool: { + parameters: { + query?: never; + header?: never; + path?: never; + cookie?: never; + }; + requestBody: { + content: { + "application/json": components["schemas"]["EmailBody"]; + }; + }; + responses: { + /** @description email send successfully */ + 200: { + headers: { + [name: string]: unknown; + }; + content: { + "*/*": components["schemas"]["ApiResponderEmpty"]; + }; + }; + /** @description not implemented */ + 500: { + headers: { + [name: string]: unknown; + }; + content: { + "*/*": components["schemas"]["ApiResponderEmpty"]; + }; + }; + }; + }; + updateAdmin: { + parameters: { + query?: never; + header?: never; + path?: never; + cookie?: never; + }; + requestBody: { + content: { + "application/json": components["schemas"]["UpdateAdminBody"]; + }; + }; + responses: { + /** @description OK */ + 200: { + headers: { + [name: string]: unknown; + }; + content: { + "*/*": components["schemas"]["ApiResponderUserDto"]; + }; + }; + }; + }; + createLeaderboard: { + parameters: { + query?: never; + header?: never; + path?: never; + cookie?: never; + }; + requestBody: { + content: { + "application/json": components["schemas"]["NewLeaderboardBody"]; + }; + }; + responses: { + /** @description OK */ + 200: { + headers: { + [name: string]: unknown; + }; + content: { + "*/*": components["schemas"]["ApiResponderEmpty"]; + }; + }; + }; + }; + deleteAnnouncement: { + parameters: { + query?: never; + header?: never; + path?: never; + cookie?: never; + }; + requestBody: { + content: { + "application/json": components["schemas"]["DeleteAnnouncementBody"]; + }; + }; + responses: { + /** @description Announcement successfully Deleted */ + 200: { + headers: { + [name: string]: unknown; + }; + content: { + "*/*": components["schemas"]["ApiResponderEmpty"]; + }; + }; + /** @description Not authenticated */ + 401: { + headers: { + [name: string]: unknown; + }; + content: { + "*/*": components["schemas"]["UnsafeGenericFailureResponse"]; + }; + }; + /** @description Something went wrong */ + 500: { + headers: { + [name: string]: unknown; + }; + content: { + "*/*": components["schemas"]["UnsafeGenericFailureResponse"]; + }; + }; + }; + }; + createNewAnnouncement: { + parameters: { + query?: never; + header?: never; + path?: never; + cookie?: never; + }; + requestBody: { + content: { + "application/json": components["schemas"]["CreateAnnouncementBody"]; + }; + }; + responses: { + /** @description Announcement successfully created */ + 200: { + headers: { + [name: string]: unknown; + }; + content: { + "*/*": components["schemas"]["ApiResponderAnnouncement"]; + }; + }; + /** @description Not authenticated */ + 401: { + headers: { + [name: string]: unknown; + }; + content: { + "*/*": components["schemas"]["UnsafeGenericFailureResponse"]; + }; + }; + /** @description Something went wrong */ + 500: { + headers: { + [name: string]: unknown; + }; + content: { + "*/*": components["schemas"]["UnsafeGenericFailureResponse"]; + }; + }; + }; + }; + apiIndex: { + parameters: { + query?: never; + header?: never; + path?: never; + cookie?: never; + }; + requestBody?: never; + responses: { + /** @description OK */ + 200: { + headers: { + [name: string]: unknown; + }; + content: { + "*/*": components["schemas"]["ApiResponderServerMetadataObject"]; + }; + }; + }; + }; + getAllQuestionsForUser: { + parameters: { + query?: { + /** + * @description Page index + * @example 1 + */ + page?: number; + /** + * @description Question Title + * @example Two + */ + query?: string; + /** @description Page size (maximum of 20 */ + pageSize?: number; + /** @description Filter to hide questions with 0 points awarded */ + pointFilter?: boolean; + /** @description Filter for questions with at least one of the topics provided */ + topics?: string[]; + /** @description Start date to filter submissions by createdAt (inclusive) */ + startDate?: string; + /** @description End date to filter submissions by createdAt (inclusive) */ + endDate?: string; + }; + header?: never; + path: { + userId: string; + }; + cookie?: never; + }; + requestBody?: never; + responses: { + /** @description Successful */ + 200: { + headers: { + [name: string]: unknown; + }; + content: { + "*/*": components["schemas"]["ApiResponderPageQuestionDto"]; + }; + }; + /** @description Invalid date range (startDate is after endDate) */ + 400: { + headers: { + [name: string]: unknown; + }; + content: { + "*/*": components["schemas"]["UnsafeGenericFailureResponse"]; + }; + }; + /** @description Not authenticated */ + 401: { + headers: { + [name: string]: unknown; + }; + content: { + "*/*": components["schemas"]["UnsafeGenericFailureResponse"]; + }; + }; + }; + }; + getUserProfileByUserId: { + parameters: { + query?: never; + header?: never; + path: { + userId: string; + }; + cookie?: never; + }; + requestBody?: never; + responses: { + /** @description User profile has been found */ + 200: { + headers: { + [name: string]: unknown; + }; + content: { + "*/*": components["schemas"]["ApiResponderUserDto"]; + }; + }; + /** @description User profile has not been found */ + 404: { + headers: { + [name: string]: unknown; + }; + content: { + "*/*": components["schemas"]["UnsafeGenericFailureResponse"]; + }; + }; + }; + }; + getUserProfileByLeetcodeUsername: { + parameters: { + query?: never; + header?: never; + path: { + leetcodeUsername: string; + }; + cookie?: never; + }; + requestBody?: never; + responses: { + /** @description User profile has been found */ + 200: { + headers: { + [name: string]: unknown; + }; + content: { + "*/*": components["schemas"]["ApiResponderUserDto"]; + }; + }; + /** @description User profile has not been found */ + 404: { + headers: { + [name: string]: unknown; + }; + content: { + "*/*": components["schemas"]["UnsafeGenericFailureResponse"]; + }; + }; + }; + }; + getAllUsers: { + parameters: { + query?: { + /** + * @description Page index + * @example 1 + */ + page?: number; + /** + * @description Question Title + * @example Two + */ + query?: string; + /** @description Page size (maximum of 20 */ + pageSize?: number; + }; + header?: never; + path?: never; + cookie?: never; + }; + requestBody?: never; + responses: { + /** @description All users' metadata has been found. */ + 200: { + headers: { + [name: string]: unknown; + }; + content: { + "*/*": components["schemas"]["ApiResponderPageUserDto"]; + }; + }; + /** @description All users' metadata has not been found. */ + 404: { + headers: { + [name: string]: unknown; + }; + content: { + "*/*": components["schemas"]["UnsafeGenericFailureResponse"]; + }; + }; + }; + }; + getSubmissionBySubmissionId: { + parameters: { + query?: never; + header?: never; + path: { + submissionId: string; + }; + cookie?: never; + }; + requestBody?: never; + responses: { + /** @description Question found */ + 200: { + headers: { + [name: string]: unknown; + }; + content: { + "*/*": components["schemas"]["ApiResponderQuestionWithUserDto"]; + }; + }; + /** @description Not authenticated */ + 401: { + headers: { + [name: string]: unknown; + }; + content: { + "*/*": components["schemas"]["UnsafeGenericFailureResponse"]; + }; + }; + /** @description Question not found */ + 404: { + headers: { + [name: string]: unknown; + }; + content: { + "*/*": components["schemas"]["UnsafeGenericFailureResponse"]; + }; + }; + }; + }; + getCurrentPotd: { + parameters: { + query?: never; + header?: never; + path?: never; + cookie?: never; + }; + requestBody?: never; + responses: { + /** @description POTD found */ + 200: { + headers: { + [name: string]: unknown; + }; + content: { + "*/*": components["schemas"]["ApiResponderPotdDto"]; + }; + }; + /** @description Not authenticated */ + 401: { + headers: { + [name: string]: unknown; + }; + content: { + "*/*": components["schemas"]["UnsafeGenericFailureResponse"]; + }; + }; + /** @description POTD not found */ + 404: { + headers: { + [name: string]: unknown; + }; + content: { + "*/*": components["schemas"]["UnsafeGenericFailureResponse"]; + }; + }; + }; + }; + getCurrentPotdEmbed: { + parameters: { + query?: never; + header?: never; + path?: never; + cookie?: never; + }; + requestBody?: never; + responses: { + /** @description POTD found */ + 200: { + headers: { + [name: string]: unknown; + }; + content: { + "*/*": components["schemas"]["ApiResponderPotdDto"]; + }; + }; + /** @description POTD not found */ + 404: { + headers: { + [name: string]: unknown; + }; + content: { + "*/*": components["schemas"]["UnsafeGenericFailureResponse"]; + }; + }; + }; + }; + getVerificationKey: { + parameters: { + query?: never; + header?: never; + path?: never; + cookie?: never; + }; + requestBody?: never; + responses: { + /** @description Successfully retrieved key */ + 200: { + headers: { + [name: string]: unknown; + }; + content: { + "*/*": components["schemas"]["ApiResponderString"]; + }; + }; + /** @description Not authenticated */ + 401: { + headers: { + [name: string]: unknown; + }; + content: { + "*/*": components["schemas"]["UnsafeGenericFailureResponse"]; + }; + }; + }; + }; + getLeaderboardUsersById: { + parameters: { + query?: { + /** + * @description Page index + * @example 1 + */ + page?: number; + /** @description Page size (maximum of 20 */ + pageSize?: number; + /** + * @description Discord name + * @example tahmid + */ + query?: string; + /** @description Filter for Patina users */ + patina?: boolean; + /** @description Filter for Hunter College users */ + hunter?: boolean; + /** @description Filter for NYU users */ + nyu?: boolean; + /** @description Filter for Baruch College users */ + baruch?: boolean; + /** @description Filter for RPI users */ + rpi?: boolean; + /** @description Filter for GWC users */ + gwc?: boolean; + /** @description Filter for SBU users */ + sbu?: boolean; + /** @description Filter for CCNY users */ + ccny?: boolean; + /** @description Filter for Columbia users */ + columbia?: boolean; + /** @description Filter for Cornell users */ + cornell?: boolean; + /** @description Filter for BMCC users */ + bmcc?: boolean; + /** @description Enable global leaderboard index */ + globalIndex?: boolean; + }; + header?: never; + path: { + leaderboardId: string; + }; + cookie?: never; + }; + requestBody?: never; + responses: { + /** @description OK */ + 200: { + headers: { + [name: string]: unknown; + }; + content: { + "*/*": components["schemas"]["ApiResponderPageIndexedUserWithScoreDto"]; + }; + }; + /** @description Not authenticated */ + 401: { + headers: { + [name: string]: unknown; + }; + content: { + "*/*": components["schemas"]["UnsafeGenericFailureResponse"]; + }; + }; + }; + }; + getLeaderboardMetadataByLeaderboardId: { + parameters: { + query?: never; + header?: never; + path: { + leaderboardId: string; + }; + cookie?: never; + }; + requestBody?: never; + responses: { + /** @description OK */ + 200: { + headers: { + [name: string]: unknown; + }; + content: { + "*/*": components["schemas"]["ApiResponderLeaderboardDto"]; + }; + }; + /** @description Not authenticated */ + 401: { + headers: { + [name: string]: unknown; + }; + content: { + "*/*": components["schemas"]["UnsafeGenericFailureResponse"]; + }; + }; + }; + }; + getUserCurrentLeaderboardFull: { + parameters: { + query?: never; + header?: never; + path: { + userId: string; + }; + cookie?: never; + }; + requestBody?: never; + responses: { + /** @description OK */ + 200: { + headers: { + [name: string]: unknown; + }; + content: { + "*/*": components["schemas"]["ApiResponderUserWithScoreDto"]; + }; + }; + /** @description Not authenticated */ + 401: { + headers: { + [name: string]: unknown; + }; + content: { + "*/*": components["schemas"]["UnsafeGenericFailureResponse"]; + }; + }; + }; + }; + getUserCurrentLeaderboardRank: { + parameters: { + query?: { + /** @description Filter for Patina users */ + patina?: boolean; + /** @description Filter for Hunter College users */ + hunter?: boolean; + /** @description Filter for NYU users */ + nyu?: boolean; + /** @description Filter for Baruch College users */ + baruch?: boolean; + /** @description Filter for RPI users */ + rpi?: boolean; + /** @description Filter for GWC users */ + gwc?: boolean; + /** @description Filter for SBU users */ + sbu?: boolean; + /** @description Filter for CCNY users */ + ccny?: boolean; + /** @description Filter for Cornell users */ + cornell?: boolean; + /** @description Filter for Columbia users */ + columbia?: boolean; + /** @description Filter for BMCC users */ + bmcc?: boolean; + }; + header?: never; + path?: never; + cookie?: never; + }; + requestBody?: never; + responses: { + /** @description Successfully retrieved user rank */ + 200: { + headers: { + [name: string]: unknown; + }; + content: { + "*/*": components["schemas"]["ApiResponderIndexedUserWithScoreDto"]; + }; + }; + /** @description Not authenticated */ + 401: { + headers: { + [name: string]: unknown; + }; + content: { + "*/*": components["schemas"]["UnsafeGenericFailureResponse"]; + }; + }; + /** @description User not found on leaderboard */ + 404: { + headers: { + [name: string]: unknown; + }; + content: { + "*/*": components["schemas"]["ApiResponderIndexedUserWithScoreDto"]; + }; + }; + }; + }; + getCurrentLeaderboardUsers: { + parameters: { + query?: { + /** + * @description Page index + * @example 1 + */ + page?: number; + /** @description Page size (maximum of 20 */ + pageSize?: number; + /** + * @description Discord name + * @example tahmid + */ + query?: string; + /** @description Filter for Patina users */ + patina?: boolean; + /** @description Filter for Hunter College users */ + hunter?: boolean; + /** @description Filter for NYU users */ + nyu?: boolean; + /** @description Filter for Baruch College users */ + baruch?: boolean; + /** @description Filter for RPI users */ + rpi?: boolean; + /** @description Filter for GWC users */ + gwc?: boolean; + /** @description Filter for SBU users */ + sbu?: boolean; + /** @description Filter for CCNY users */ + ccny?: boolean; + /** @description Filter for Columbia users */ + columbia?: boolean; + /** @description Filter for Cornell users */ + cornell?: boolean; + /** @description Filter for BMCC users */ + bmcc?: boolean; + /** @description Enable global leaderboard index */ + globalIndex?: boolean; + }; + header?: never; + path?: never; + cookie?: never; + }; + requestBody?: never; + responses: { + /** @description OK */ + 200: { + headers: { + [name: string]: unknown; + }; + content: { + "*/*": components["schemas"]["ApiResponderPageIndexedUserWithScoreDto"]; + }; + }; + /** @description Not authenticated */ + 401: { + headers: { + [name: string]: unknown; + }; + content: { + "*/*": components["schemas"]["UnsafeGenericFailureResponse"]; + }; + }; + }; + }; + getCurrentLeaderboardMetadata: { + parameters: { + query?: never; + header?: never; + path?: never; + cookie?: never; + }; + requestBody?: never; + responses: { + /** @description OK */ + 200: { + headers: { + [name: string]: unknown; + }; + content: { + "*/*": components["schemas"]["ApiResponderLeaderboardDto"]; + }; + }; + /** @description Not authenticated */ + 401: { + headers: { + [name: string]: unknown; + }; + content: { + "*/*": components["schemas"]["UnsafeGenericFailureResponse"]; + }; + }; + }; + }; + getAllLeaderboardMetadata: { + parameters: { + query?: { + /** + * @description Page index + * @example 1 + */ + page?: number; + /** + * @description Question Title + * @example Two + */ + query?: string; + /** @description Page size (maximum of 20 */ + pageSize?: number; + }; + header?: never; + path?: never; + cookie?: never; + }; + requestBody?: never; + responses: { + /** @description OK */ + 200: { + headers: { + [name: string]: unknown; + }; + content: { + "*/*": components["schemas"]["ApiResponderPageLeaderboardDto"]; + }; + }; + /** @description Not authenticated */ + 401: { + headers: { + [name: string]: unknown; + }; + content: { + "*/*": components["schemas"]["UnsafeGenericFailureResponse"]; + }; + }; + }; + }; + getGwcUsers: { + parameters: { + query: { + leaderboardId: string; + }; + header: { + "X-API-Key": string; + }; + path?: never; + cookie?: never; + }; + requestBody?: never; + responses: { + /** @description Successfully retrieved GWC users */ + 200: { + headers: { + [name: string]: unknown; + }; + content: { + "*/*": components["schemas"]["ApiResponderListUserWithScore"]; + }; + }; + /** @description Invalid API key */ + 401: { + headers: { + [name: string]: unknown; + }; + content: { + "*/*": components["schemas"]["ApiResponderListUserWithScore"]; + }; + }; + /** @description API key does not have required permissions */ + 403: { + headers: { + [name: string]: unknown; + }; + content: { + "*/*": components["schemas"]["ApiResponderListUserWithScore"]; + }; + }; + /** @description Leaderboard not found */ + 404: { + headers: { + [name: string]: unknown; + }; + content: { + "*/*": components["schemas"]["ApiResponderListUserWithScore"]; + }; + }; + }; + }; + getPartyOrDuelCodeForUser: { + parameters: { + query?: never; + header?: never; + path?: never; + cookie?: never; + }; + requestBody?: never; + responses: { + /** @description Party or duel code was successfully found! */ + 200: { + headers: { + [name: string]: unknown; + }; + content: { + "*/*": components["schemas"]["ApiResponderPartyCodeBody"]; + }; + }; + /** @description Unauthorized */ + 401: { + headers: { + [name: string]: unknown; + }; + content: { + "*/*": components["schemas"]["UnsafeGenericFailureResponse"]; + }; + }; + /** @description Endpoint is currently non-functional */ + 403: { + headers: { + [name: string]: unknown; + }; + content: { + "*/*": components["schemas"]["UnsafeGenericFailureResponse"]; + }; + }; + /** @description The user is not currently in a party or duel. */ + 404: { + headers: { + [name: string]: unknown; + }; + content: { + "*/*": components["schemas"]["UnsafeGenericFailureResponse"]; + }; + }; + }; + }; + getClubDataBySlug: { + parameters: { + query?: never; + header?: never; + path: { + clubSlug: string; + }; + cookie?: never; + }; + requestBody?: never; + responses: { + /** @description OK */ + 200: { + headers: { + [name: string]: unknown; + }; + content: { + "*/*": components["schemas"]["ApiResponderClubDto"]; + }; + }; + }; + }; + validateAuth: { + parameters: { + query?: never; + header?: never; + path?: never; + cookie?: never; + }; + requestBody?: never; + responses: { + /** @description Authenticated */ + 200: { + headers: { + [name: string]: unknown; + }; + content: { + "*/*": components["schemas"]["ApiResponderAuthenticationObjectDto"]; + }; + }; + /** @description Not authenticated */ + 401: { + headers: { + [name: string]: unknown; + }; + content: { + "*/*": components["schemas"]["UnsafeGenericFailureResponse"]; + }; + }; + }; + }; + verifySchoolEmail: { + parameters: { + query?: never; + header?: never; + path?: never; + cookie?: never; + }; + requestBody?: never; + responses: { + /** @description Redirect to /settings with success or error message */ + 302: { + headers: { + [name: string]: unknown; + }; + content: { + "*/*": components["schemas"]["RedirectView"]; + }; + }; + }; + }; + logout: { + parameters: { + query?: never; + header?: never; + path?: never; + cookie?: never; + }; + requestBody?: never; + responses: { + /** @description Redirect to `/login?success=true&message="Successful logout message here."` on successful authentication. */ + 302: { + headers: { + [name: string]: unknown; + }; + content?: never; + }; + }; + }; + getLatestAnnouncement: { + parameters: { + query?: never; + header?: never; + path?: never; + cookie?: never; + }; + requestBody?: never; + responses: { + /** @description Successful response (may or may not be announcement, check success key) */ + 200: { + headers: { + [name: string]: unknown; + }; + content: { + "*/*": components["schemas"]["ApiResponderAnnouncementDto"]; + }; + }; + }; + }; + getIncompleteQuestions: { + parameters: { + query?: never; + header?: never; + path?: never; + cookie?: never; + }; + requestBody?: never; + responses: { + /** @description Retrieved incomplete questions */ + 200: { + headers: { + [name: string]: unknown; + }; + content: { + "*/*": components["schemas"]["ApiResponderListQuestionWithUserDto"]; + }; + }; + /** @description No Incomplete Questions */ + 404: { + headers: { + [name: string]: unknown; + }; + content: { + "*/*": components["schemas"]["UnsafeGenericFailureResponse"]; + }; + }; + }; + }; +} +export enum AchievementPlaceEnum { + ONE = "ONE", + TWO = "TWO", + THREE = "THREE" +} +export enum Tag { + Patina = "Patina", + Hunter = "Hunter", + Nyu = "Nyu", + Baruch = "Baruch", + Rpi = "Rpi", + Gwc = "Gwc", + Sbu = "Sbu", + Ccny = "Ccny", + Columbia = "Columbia", + Cornell = "Cornell", + Bmcc = "Bmcc", + MhcPlusPlus = "MhcPlusPlus" +} +export enum LobbyStatus { + CLOSED = "CLOSED", + AVAILABLE = "AVAILABLE", + ACTIVE = "ACTIVE", + COMPLETED = "COMPLETED" +} +export enum QuestionDifficulty { + Easy = "Easy", + Medium = "Medium", + Hard = "Hard" +} +export enum LeetcodeTopicEnum { + STACK = "STACK", + DATA_STREAM = "DATA_STREAM", + REJECTION_SAMPLING = "REJECTION_SAMPLING", + GEOMETRY = "GEOMETRY", + COUNTING = "COUNTING", + DESIGN = "DESIGN", + PROBABILITY_AND_STATISTICS = "PROBABILITY_AND_STATISTICS", + MINIMUM_SPANNING_TREE = "MINIMUM_SPANNING_TREE", + LINE_SWEEP = "LINE_SWEEP", + NUMBER_THEORY = "NUMBER_THEORY", + ROLLING_HASH = "ROLLING_HASH", + SEGMENT_TREE = "SEGMENT_TREE", + BICONNECTED_COMPONENT = "BICONNECTED_COMPONENT", + MONOTONIC_STACK = "MONOTONIC_STACK", + ITERATOR = "ITERATOR", + QUEUE = "QUEUE", + RADIX_SORT = "RADIX_SORT", + BUCKET_SORT = "BUCKET_SORT", + SHELL = "SHELL", + MEMOIZATION = "MEMOIZATION", + STRING = "STRING", + PREFIX_SUM = "PREFIX_SUM", + CONCURRENCY = "CONCURRENCY", + DATABASE = "DATABASE", + SHORTEST_PATH = "SHORTEST_PATH", + SORTING = "SORTING", + LINKED_LIST = "LINKED_LIST", + SLIDING_WINDOW = "SLIDING_WINDOW", + SUFFIX_ARRAY = "SUFFIX_ARRAY", + DOUBLY_LINKED_LIST = "DOUBLY_LINKED_LIST", + SIMULATION = "SIMULATION", + ORDERED_SET = "ORDERED_SET", + GRAPH = "GRAPH", + MATH = "MATH", + ORDERED_MAP = "ORDERED_MAP", + GAME_THEORY = "GAME_THEORY", + DYNAMIC_PROGRAMMING = "DYNAMIC_PROGRAMMING", + RECURSION = "RECURSION", + MONOTONIC_QUEUE = "MONOTONIC_QUEUE", + MATRIX = "MATRIX", + RESERVOIR_SAMPLING = "RESERVOIR_SAMPLING", + MERGE_SORT = "MERGE_SORT", + COMBINATORICS = "COMBINATORICS", + INTERACTIVE = "INTERACTIVE", + BINARY_TREE = "BINARY_TREE", + RANDOMIZED = "RANDOMIZED", + BITMASK = "BITMASK", + BREADTH_FIRST_SEARCH = "BREADTH_FIRST_SEARCH", + STRING_MATCHING = "STRING_MATCHING", + GREEDY = "GREEDY", + BRAINTEASER = "BRAINTEASER", + BACKTRACKING = "BACKTRACKING", + BIT_MANIPULATION = "BIT_MANIPULATION", + UNION_FIND = "UNION_FIND", + BINARY_SEARCH_TREE = "BINARY_SEARCH_TREE", + TWO_POINTERS = "TWO_POINTERS", + ARRAY = "ARRAY", + DEPTH_FIRST_SEARCH = "DEPTH_FIRST_SEARCH", + EULERIAN_CIRCUIT = "EULERIAN_CIRCUIT", + TREE = "TREE", + BINARY_SEARCH = "BINARY_SEARCH", + STRONGLY_CONNECTED_COMPONENT = "STRONGLY_CONNECTED_COMPONENT", + ENUMERATION = "ENUMERATION", + HEAP_PRIORITY_QUEUE = "HEAP_PRIORITY_QUEUE", + DIVIDE_AND_CONQUER = "DIVIDE_AND_CONQUER", + HASH_FUNCTION = "HASH_FUNCTION", + HASH_TABLE = "HASH_TABLE", + TRIE = "TRIE", + TOPOLOGICAL_SORT = "TOPOLOGICAL_SORT", + QUICKSELECT = "QUICKSELECT", + BINARY_INDEXED_TREE = "BINARY_INDEXED_TREE", + COUNTING_SORT = "COUNTING_SORT", + UNKNOWN = "UNKNOWN" +} +export enum ServletContextSessionTrackingModes { + COOKIE = "COOKIE", + URL = "URL", + SSL = "SSL" +} +export enum ApiPaths { + GetApiAuthFlowDiscord = "/api/auth/flow/discord", + GetApiAuthFlowCallbackDiscord = "/api/auth/flow/callback/discord", + ingestLog = "/api/reporter/log", + ingestErrors = "/api/reporter/error", + setLeetcodeUsername = "/api/leetcode/set", + checkLatestSubmissions = "/api/leetcode/check", + getDuelData = "/api/duel/{lobbyCode}/sse", + startDuel = "/api/duel/start", + processSolvedProblemsInDuel = "/api/duel/process", + leaveParty = "/api/duel/party/leave", + joinParty = "/api/duel/party/join", + createParty = "/api/duel/party/create", + endDuel = "/api/duel/end", + validatePassword = "/api/club/verify", + enrollSchool = "/api/auth/school/enroll", + updateAdmin = "/api/admin/user/admin/toggle", + createLeaderboard = "/api/admin/leaderboard/create", + deleteAnnouncement = "/api/admin/announcement/disable", + createNewAnnouncement = "/api/admin/announcement/create", + apiIndex = "/api", + getAllQuestionsForUser = "/api/user/{userId}/submissions", + getUserProfileByUserId = "/api/user/{userId}/profile", + getUserProfileByLeetcodeUsername = "/api/user/v2/{leetcodeUsername}/profile", + getAllUsers = "/api/user/all", + getSubmissionBySubmissionId = "/api/leetcode/submission/{submissionId}", + getCurrentPotd = "/api/leetcode/potd", + getCurrentPotdEmbed = "/api/leetcode/potd/embed", + getVerificationKey = "/api/leetcode/key", + getLeaderboardUsersById = "/api/leaderboard/{leaderboardId}/user/all", + getLeaderboardMetadataByLeaderboardId = "/api/leaderboard/{leaderboardId}/metadata", + getUserCurrentLeaderboardFull = "/api/leaderboard/current/user/{userId}", + getUserCurrentLeaderboardRank = "/api/leaderboard/current/user/rank", + getCurrentLeaderboardUsers = "/api/leaderboard/current/user/all", + getCurrentLeaderboardMetadata = "/api/leaderboard/current/metadata", + getAllLeaderboardMetadata = "/api/leaderboard/all/metadata", + getGwcUsers = "/api/external/gwc/users", + getPartyOrDuelCodeForUser = "/api/duel/current", + getClubDataBySlug = "/api/club/{clubSlug}", + validateAuth = "/api/auth/validate", + verifySchoolEmail = "/api/auth/school/verify", + logout = "/api/auth/logout", + getLatestAnnouncement = "/api/announcement", + getIncompleteQuestions = "/api/admin/questions/incomplete" +} diff --git a/js/src/lib/api/utils/metadata/tag/index.ts b/js/src/lib/api/utils/metadata/tag/index.ts index 3430cf31c..b58f8af3c 100644 --- a/js/src/lib/api/utils/metadata/tag/index.ts +++ b/js/src/lib/api/utils/metadata/tag/index.ts @@ -82,6 +82,13 @@ export const TAG_METADATA_LIST: Record = { icon: "/brands/BMCC_logo.png", alt: "BMCC Logo", }, + MhcPlusPlus: { + shortName: "MHC++", + name: "The MHC++ Club | Macaulay Hunter College", + apiKey: "mhcplusplus", + icon: "/brands/Mhcpp_logo.png", + alt: "MHC++ Logo", + }, } as const; export const UNUSED_TAGS: Tag[] = [Tag.Gwc]; diff --git a/src/main/java/org/patinanetwork/codebloom/common/db/models/usertag/Tag.java b/src/main/java/org/patinanetwork/codebloom/common/db/models/usertag/Tag.java index 2457deb00..6d4eac63a 100644 --- a/src/main/java/org/patinanetwork/codebloom/common/db/models/usertag/Tag.java +++ b/src/main/java/org/patinanetwork/codebloom/common/db/models/usertag/Tag.java @@ -19,7 +19,8 @@ public enum Tag { Ccny("City College of New York"), Columbia("Columbia University"), Cornell("Cornell University"), - Bmcc("Borough of Manhattan Community College"); + Bmcc("Borough of Manhattan Community College"), + MhcPlusPlus("MHC++"); /** Only applies to school tags. */ // CHECKSTYLE:OFF diff --git a/src/main/java/org/patinanetwork/codebloom/common/db/repos/leaderboard/options/LeaderboardFilterGenerator.java b/src/main/java/org/patinanetwork/codebloom/common/db/repos/leaderboard/options/LeaderboardFilterGenerator.java index 0eeb7a8e2..4af02615d 100644 --- a/src/main/java/org/patinanetwork/codebloom/common/db/repos/leaderboard/options/LeaderboardFilterGenerator.java +++ b/src/main/java/org/patinanetwork/codebloom/common/db/repos/leaderboard/options/LeaderboardFilterGenerator.java @@ -22,6 +22,7 @@ public static List> generateAllSupportedTagT list.add(Pair.of(withOnlyTrue(opt -> opt.columbia(true)), Tag.Columbia)); list.add(Pair.of(withOnlyTrue(opt -> opt.cornell(true)), Tag.Cornell)); list.add(Pair.of(withOnlyTrue(opt -> opt.bmcc(true)), Tag.Bmcc)); + list.add(Pair.of(withOnlyTrue(opt -> opt.bmcc(true)), Tag.MhcPlusPlus)); return list; } @@ -39,6 +40,7 @@ public static LeaderboardFilterOptions.LeaderboardFilterOptionsBuilder builderWi case Columbia -> LeaderboardFilterOptions.builder().columbia(true); case Cornell -> LeaderboardFilterOptions.builder().cornell(true); case Bmcc -> LeaderboardFilterOptions.builder().bmcc(true); + case MhcPlusPlus -> LeaderboardFilterOptions.builder().mhcplusplus(true); }; } diff --git a/src/main/java/org/patinanetwork/codebloom/common/db/repos/leaderboard/options/LeaderboardFilterOptions.java b/src/main/java/org/patinanetwork/codebloom/common/db/repos/leaderboard/options/LeaderboardFilterOptions.java index f937c4768..f8697111a 100644 --- a/src/main/java/org/patinanetwork/codebloom/common/db/repos/leaderboard/options/LeaderboardFilterOptions.java +++ b/src/main/java/org/patinanetwork/codebloom/common/db/repos/leaderboard/options/LeaderboardFilterOptions.java @@ -55,6 +55,9 @@ public class LeaderboardFilterOptions { @Builder.Default private final boolean bmcc = false; + @Builder.Default + private final boolean mhcplusplus = false; + public static final LeaderboardFilterOptions DEFAULT = LeaderboardFilterOptions.builder().build(); } From 2c3691a731749fa250bb9a01828b4e932b50e82b Mon Sep 17 00:00:00 2001 From: Tahmid Ahmed Date: Thu, 22 Jan 2026 15:30:42 -0500 Subject: [PATCH 2/2] 662: Delete schema.ts --- js/src/lib/api/types/schema.ts | 3401 -------------------------------- 1 file changed, 3401 deletions(-) delete mode 100644 js/src/lib/api/types/schema.ts diff --git a/js/src/lib/api/types/schema.ts b/js/src/lib/api/types/schema.ts deleted file mode 100644 index 8d0e170d5..000000000 --- a/js/src/lib/api/types/schema.ts +++ /dev/null @@ -1,3401 +0,0 @@ -/** - * This file was auto-generated by openapi-typescript. - * Do not make direct changes to the file. - */ - -export interface paths { - "/api/auth/flow/discord": { - parameters: { - query?: never; - header?: never; - path?: never; - cookie?: never; - }; - /** - * Start Discord OAuth authentication flow - * @description Initiates the OAuth flow by redirecting the user to Discord for authentication. This is a Redirect route that does redirects as responses. - */ - get: { - parameters: { - query?: never; - header?: never; - path?: never; - cookie?: never; - }; - requestBody?: never; - responses: { - /** @description Redirect to Discord's authentication page */ - 302: { - headers: { - [name: string]: unknown; - }; - content?: never; - }; - }; - }; - put?: never; - post?: never; - delete?: never; - options?: never; - head?: never; - patch?: never; - trace?: never; - }; - "/api/auth/flow/callback/discord": { - parameters: { - query?: never; - header?: never; - path?: never; - cookie?: never; - }; - /** - * Discord OAuth authentication flow callback - * @description This route is the callback endpoint for the Discord OAuth authentication flow. - * Once the user successfully authenticates with Discord, they are redirected back to this endpoint - * where the server will then handle the authentication logic. This is a Redirect route that does - * redirects as responses. - * - */ - get: { - parameters: { - query?: never; - header?: never; - path?: never; - cookie?: never; - }; - requestBody?: never; - responses: { - /** @description Redirect to `/dashboard` on successful authentication. */ - 302: { - headers: { - [name: string]: unknown; - }; - content?: never; - }; - /** @description Redirect to `/login?success=false&message=This is my message` on unsuccessful authentication. */ - "302 ": { - headers: { - [name: string]: unknown; - }; - content?: never; - }; - }; - }; - put?: never; - post?: never; - delete?: never; - options?: never; - head?: never; - patch?: never; - trace?: never; - }; - "/api/reporter/log": { - parameters: { - query?: never; - header?: never; - path?: never; - cookie?: never; - }; - get?: never; - put?: never; - post: operations["ingestLog"]; - delete?: never; - options?: never; - head?: never; - patch?: never; - trace?: never; - }; - "/api/reporter/error": { - parameters: { - query?: never; - header?: never; - path?: never; - cookie?: never; - }; - get?: never; - put?: never; - post: operations["ingestErrors"]; - delete?: never; - options?: never; - head?: never; - patch?: never; - trace?: never; - }; - "/api/leetcode/set": { - parameters: { - query?: never; - header?: never; - path?: never; - cookie?: never; - }; - get?: never; - put?: never; - /** - * Set a Leetcode username for the current user - * @description Protected endpoint that allows a user to submit a JSON with the leetcode username they would like to add. - * Cannot re-use this endpoint once a name is set. - * - */ - post: operations["setLeetcodeUsername"]; - delete?: never; - options?: never; - head?: never; - patch?: never; - trace?: never; - }; - "/api/leetcode/check": { - parameters: { - query?: never; - header?: never; - path?: never; - cookie?: never; - }; - get?: never; - put?: never; - /** - * Check the current user's LeetCode submissions and update leaderboard - * @description Protected endpoint that handles the logic of checking the most recent submissions, - * as well as updating the current leaderboard with any new points the user has accumulated. - * There is a rate limit on the route to prevent abuse (currently: 5 minutes). - * - */ - post: operations["checkLatestSubmissions"]; - delete?: never; - options?: never; - head?: never; - patch?: never; - trace?: never; - }; - "/api/duel/{lobbyCode}/sse": { - parameters: { - query?: never; - header?: never; - path?: never; - cookie?: never; - }; - get?: never; - put?: never; - /** - * SSE endpoint for duel data - * @description Server-sent events endpoint for real-time duel updates - * - * NOTE - Our application runs on DigitalOcean, which does not allow SSE over GET requests. As a result, we are forced - * to use a non-standard SSE implementation over a POST method. - * See https://ideas.digitalocean.com/app-platform/p/http-response-streaming-in-app-platform-for-sse-support. - * - */ - post: operations["getDuelData"]; - delete?: never; - options?: never; - head?: never; - patch?: never; - trace?: never; - }; - "/api/duel/start": { - parameters: { - query?: never; - header?: never; - path?: never; - cookie?: never; - }; - get?: never; - put?: never; - /** - * Start duel - * @description Start the duel, given that all conditions are met. - */ - post: operations["startDuel"]; - delete?: never; - options?: never; - head?: never; - patch?: never; - trace?: never; - }; - "/api/duel/process": { - parameters: { - query?: never; - header?: never; - path?: never; - cookie?: never; - }; - get?: never; - put?: never; - /** - * Process solved questions - * @description Process solved questions inside of a duel for a given user, if the given conditions are met. - * - */ - post: operations["processSolvedProblemsInDuel"]; - delete?: never; - options?: never; - head?: never; - patch?: never; - trace?: never; - }; - "/api/duel/party/leave": { - parameters: { - query?: never; - header?: never; - path?: never; - cookie?: never; - }; - get?: never; - put?: never; - /** - * Leave party - * @description Leave the current party - */ - post: operations["leaveParty"]; - delete?: never; - options?: never; - head?: never; - patch?: never; - trace?: never; - }; - "/api/duel/party/join": { - parameters: { - query?: never; - header?: never; - path?: never; - cookie?: never; - }; - get?: never; - put?: never; - /** - * Join party - * @description Join a party by providing the lobby code. - */ - post: operations["joinParty"]; - delete?: never; - options?: never; - head?: never; - patch?: never; - trace?: never; - }; - "/api/duel/party/create": { - parameters: { - query?: never; - header?: never; - path?: never; - cookie?: never; - }; - get?: never; - put?: never; - /** - * Create party - * @description Create a new party. If successful, will return a party code which can be shared and distributed. - */ - post: operations["createParty"]; - delete?: never; - options?: never; - head?: never; - patch?: never; - trace?: never; - }; - "/api/duel/end": { - parameters: { - query?: never; - header?: never; - path?: never; - cookie?: never; - }; - get?: never; - put?: never; - /** - * End duel - * @description This endpoint will end the current duel you are in. The duel will only end if it in a state that is endable. - */ - post: operations["endDuel"]; - delete?: never; - options?: never; - head?: never; - patch?: never; - trace?: never; - }; - "/api/club/verify": { - parameters: { - query?: never; - header?: never; - path?: never; - cookie?: never; - }; - get?: never; - put?: never; - /** Gives user a club tag if the password is correct */ - post: operations["validatePassword"]; - delete?: never; - options?: never; - head?: never; - patch?: never; - trace?: never; - }; - "/api/auth/school/enroll": { - parameters: { - query?: never; - header?: never; - path?: never; - cookie?: never; - }; - get?: never; - put?: never; - /** - * Enroll with a school email (if supported) - * @description Allows users to submit a school-specific email if supported. Emails will be verified with a magic link sent to their email. - * - */ - post: operations["enrollSchool"]; - delete?: never; - options?: never; - head?: never; - patch?: never; - trace?: never; - }; - "/api/admin/user/admin/toggle": { - parameters: { - query?: never; - header?: never; - path?: never; - cookie?: never; - }; - get?: never; - put?: never; - /** Allows current admin to toggle another user's admin status */ - post: operations["updateAdmin"]; - delete?: never; - options?: never; - head?: never; - patch?: never; - trace?: never; - }; - "/api/admin/leaderboard/create": { - parameters: { - query?: never; - header?: never; - path?: never; - cookie?: never; - }; - get?: never; - put?: never; - /** - * Drops current leaderboard and add new one - * @description BE SUPER CAREFUL WITH THIS ROUTE!!!!!!! It will drop the current leaderboard and add a new leaderboard based on the given parameters. - * - */ - post: operations["createLeaderboard"]; - delete?: never; - options?: never; - head?: never; - patch?: never; - trace?: never; - }; - "/api/admin/announcement/disable": { - parameters: { - query?: never; - header?: never; - path?: never; - cookie?: never; - }; - get?: never; - put?: never; - /** Create a delete announcement if exist (only for admins). */ - post: operations["deleteAnnouncement"]; - delete?: never; - options?: never; - head?: never; - patch?: never; - trace?: never; - }; - "/api/admin/announcement/create": { - parameters: { - query?: never; - header?: never; - path?: never; - cookie?: never; - }; - get?: never; - put?: never; - /** Create a new announcement (only for admins). */ - post: operations["createNewAnnouncement"]; - delete?: never; - options?: never; - head?: never; - patch?: never; - trace?: never; - }; - "/api": { - parameters: { - query?: never; - header?: never; - path?: never; - cookie?: never; - }; - /** Basic metadata about the server */ - get: operations["apiIndex"]; - put?: never; - post?: never; - delete?: never; - options?: never; - head?: never; - patch?: never; - trace?: never; - }; - "/api/user/{userId}/submissions": { - parameters: { - query?: never; - header?: never; - path?: never; - cookie?: never; - }; - /** - * Returns a list of the questions successfully submitted by the user. - * @description Protected endpoint that returns the list of questions completed by the user. - * These questions are guaranteed to be completed by the user. - * - */ - get: operations["getAllQuestionsForUser"]; - put?: never; - post?: never; - delete?: never; - options?: never; - head?: never; - patch?: never; - trace?: never; - }; - "/api/user/{userId}/profile": { - parameters: { - query?: never; - header?: never; - path?: never; - cookie?: never; - }; - /** - * Public route that returns the given user's profile - * @description Unprotected endpoint that returns the user profile of the user ID that is passed to the endpoint's path. - * - */ - get: operations["getUserProfileByUserId"]; - put?: never; - post?: never; - delete?: never; - options?: never; - head?: never; - patch?: never; - trace?: never; - }; - "/api/user/v2/{leetcodeUsername}/profile": { - parameters: { - query?: never; - header?: never; - path?: never; - cookie?: never; - }; - /** - * Public route that returns the given user's profile - * @description Unprotected endpoint that returns the user profile of the LeetCode username that is passed to the endpoint's path. - * - */ - get: operations["getUserProfileByLeetcodeUsername"]; - put?: never; - post?: never; - delete?: never; - options?: never; - head?: never; - patch?: never; - trace?: never; - }; - "/api/user/all": { - parameters: { - query?: never; - header?: never; - path?: never; - cookie?: never; - }; - /** - * Public route that returns a list of all the users' metadata. - * @description Unprotected endpoint that returns basic metadata for all users. - * - */ - get: operations["getAllUsers"]; - put?: never; - post?: never; - delete?: never; - options?: never; - head?: never; - patch?: never; - trace?: never; - }; - "/api/leetcode/submission/{submissionId}": { - parameters: { - query?: never; - header?: never; - path?: never; - cookie?: never; - }; - /** - * Returns submission data. - * @description Returns the submission data from any user, as long as the user making the request is authenticated. - * This includes the scraped LeetCode description, which is HTML that has been sanitized by the server, - * so it is safe to use on the frontend. - * - */ - get: operations["getSubmissionBySubmissionId"]; - put?: never; - post?: never; - delete?: never; - options?: never; - head?: never; - patch?: never; - trace?: never; - }; - "/api/leetcode/potd": { - parameters: { - query?: never; - header?: never; - path?: never; - cookie?: never; - }; - /** - * Returns current problem of the day. - * @description Returns the current problem of the day, as long as there is a problem of the day set and the user hasn't completed the problem already. - * - */ - get: operations["getCurrentPotd"]; - put?: never; - post?: never; - delete?: never; - options?: never; - head?: never; - patch?: never; - trace?: never; - }; - "/api/leetcode/potd/embed": { - parameters: { - query?: never; - header?: never; - path?: never; - cookie?: never; - }; - /** - * Returns current problem of the day for embedding. - * @description Returns the current problem of the day for use in embeds, as long as there is a problem of the day set for today. - * This endpoint does not require user authentication and does not check if the user has already completed the problem. - * - */ - get: operations["getCurrentPotdEmbed"]; - put?: never; - post?: never; - delete?: never; - options?: never; - head?: never; - patch?: never; - trace?: never; - }; - "/api/leetcode/key": { - parameters: { - query?: never; - header?: never; - path?: never; - cookie?: never; - }; - /** - * Returns the currently authenticated user's verification key. - * @description Protected endpoint that returns the currently authenticated user's verification key. In order to set their Leetcode username, - * users must change their About Me in order to pass validation. - * - */ - get: operations["getVerificationKey"]; - put?: never; - post?: never; - delete?: never; - options?: never; - head?: never; - patch?: never; - trace?: never; - }; - "/api/leaderboard/{leaderboardId}/user/all": { - parameters: { - query?: never; - header?: never; - path?: never; - cookie?: never; - }; - /** Unprotected route that fetches metadata of a leaderboard via leaderboard ID. */ - get: operations["getLeaderboardUsersById"]; - put?: never; - post?: never; - delete?: never; - options?: never; - head?: never; - patch?: never; - trace?: never; - }; - "/api/leaderboard/{leaderboardId}/metadata": { - parameters: { - query?: never; - header?: never; - path?: never; - cookie?: never; - }; - /** Unprotected route that fetches metadata of a leaderboard via leaderboard ID. */ - get: operations["getLeaderboardMetadataByLeaderboardId"]; - put?: never; - post?: never; - delete?: never; - options?: never; - head?: never; - patch?: never; - trace?: never; - }; - "/api/leaderboard/current/user/{userId}": { - parameters: { - query?: never; - header?: never; - path?: never; - cookie?: never; - }; - /** Fetch the specific user data in the currently active leaderboard data. */ - get: operations["getUserCurrentLeaderboardFull"]; - put?: never; - post?: never; - delete?: never; - options?: never; - head?: never; - patch?: never; - trace?: never; - }; - "/api/leaderboard/current/user/rank": { - parameters: { - query?: never; - header?: never; - path?: never; - cookie?: never; - }; - /** Fetch the authenticated user's current rank/position on the active leaderboard. */ - get: operations["getUserCurrentLeaderboardRank"]; - put?: never; - post?: never; - delete?: never; - options?: never; - head?: never; - patch?: never; - trace?: never; - }; - "/api/leaderboard/current/user/all": { - parameters: { - query?: never; - header?: never; - path?: never; - cookie?: never; - }; - /** Fetch the currently active leaderboard data, attaching the users for each leaderboard. */ - get: operations["getCurrentLeaderboardUsers"]; - put?: never; - post?: never; - delete?: never; - options?: never; - head?: never; - patch?: never; - trace?: never; - }; - "/api/leaderboard/current/metadata": { - parameters: { - query?: never; - header?: never; - path?: never; - cookie?: never; - }; - /** Unprotected route that fetches the currently active leaderboard data, attaching only the top 5 users for each leaderboard. */ - get: operations["getCurrentLeaderboardMetadata"]; - put?: never; - post?: never; - delete?: never; - options?: never; - head?: never; - patch?: never; - trace?: never; - }; - "/api/leaderboard/all/metadata": { - parameters: { - query?: never; - header?: never; - path?: never; - cookie?: never; - }; - /** Returns the metadata for all leaderboards. */ - get: operations["getAllLeaderboardMetadata"]; - put?: never; - post?: never; - delete?: never; - options?: never; - head?: never; - patch?: never; - trace?: never; - }; - "/api/external/gwc/users": { - parameters: { - query?: never; - header?: never; - path?: never; - cookie?: never; - }; - /** - * Get GWC users from a specific leaderboard - * @description Returns a list of users with GWC tags from the specified leaderboard. Requires a valid API key with GWC_READ_BY_USER access. - */ - get: operations["getGwcUsers"]; - put?: never; - post?: never; - delete?: never; - options?: never; - head?: never; - patch?: never; - trace?: never; - }; - "/api/duel/current": { - parameters: { - query?: never; - header?: never; - path?: never; - cookie?: never; - }; - /** - * Get current party or duel code for user - * @description If the user is authenticated, this endpoint will check if the user is - * in a party or duel and return the code associated to the game. - * - */ - get: operations["getPartyOrDuelCodeForUser"]; - put?: never; - post?: never; - delete?: never; - options?: never; - head?: never; - patch?: never; - trace?: never; - }; - "/api/club/{clubSlug}": { - parameters: { - query?: never; - header?: never; - path?: never; - cookie?: never; - }; - get: operations["getClubDataBySlug"]; - put?: never; - post?: never; - delete?: never; - options?: never; - head?: never; - patch?: never; - trace?: never; - }; - "/api/auth/validate": { - parameters: { - query?: never; - header?: never; - path?: never; - cookie?: never; - }; - /** Validate if the user is authenticated or not. */ - get: operations["validateAuth"]; - put?: never; - post?: never; - delete?: never; - options?: never; - head?: never; - patch?: never; - trace?: never; - }; - "/api/auth/school/verify": { - parameters: { - query?: never; - header?: never; - path?: never; - cookie?: never; - }; - /** - * Verifies the JWT - * @description Verifies the magic link sent to the user's email. If successful, the user will be enrolled with the school tag. - */ - get: operations["verifySchoolEmail"]; - put?: never; - post?: never; - delete?: never; - options?: never; - head?: never; - patch?: never; - trace?: never; - }; - "/api/auth/logout": { - parameters: { - query?: never; - header?: never; - path?: never; - cookie?: never; - }; - /** - * Logs user out - * @description Logs the user out if currently authenticated. This is a Redirect route that does redirects as responses. - */ - get: operations["logout"]; - put?: never; - post?: never; - delete?: never; - options?: never; - head?: never; - patch?: never; - trace?: never; - }; - "/api/announcement": { - parameters: { - query?: never; - header?: never; - path?: never; - cookie?: never; - }; - /** - * Fetches the latest announcement, if available and/or not expired. - * @description NOTE - 200 does not mean an announcement was found. The correct way to determine whether there is an announcement or not - * is to use the success key of the payload and check whether it is true (announcement found) or false (no announcement currently) - * - */ - get: operations["getLatestAnnouncement"]; - put?: never; - post?: never; - delete?: never; - options?: never; - head?: never; - patch?: never; - trace?: never; - }; - "/api/admin/questions/incomplete": { - parameters: { - query?: never; - header?: never; - path?: never; - cookie?: never; - }; - /** - * Get all incomplete questions with user information - * @description Returns all questions that are missing runtime, memory, code, or language information, - * ordered by most recently submitted. Only accessible to admins. - * - */ - get: operations["getIncompleteQuestions"]; - put?: never; - post?: never; - delete?: never; - options?: never; - head?: never; - patch?: never; - trace?: never; - }; -} -export type webhooks = Record; -export interface components { - schemas: { - IngestLogBody: { - info: string; - }; - ApiResponderEmpty: { - success: boolean; - payload: components["schemas"]["Empty"]; - message: string; - }; - Empty: Record; - IngestErrorsBody: { - trace: string; - }; - UnsafeGenericFailureResponse: { - /** @default false */ - success: boolean; - message: string; - }; - UnsafeEmptySuccessResponse: { - /** @default true */ - success: boolean; - message: string; - }; - LeetcodeUsernameObject: { - leetcodeUsername: string; - }; - UnsafeRateLimitResponse: { - /** @default false */ - success: boolean; - /** @default 28 */ - message: string; - }; - AcceptedSubmission: { - title: string; - questionId: string; - /** Format: int32 */ - points: number; - }; - ApiResponderArrayListAcceptedSubmission: { - success: boolean; - payload: components["schemas"]["AcceptedSubmission"][]; - message: string; - }; - AchievementDto: { - id: string; - userId: string; - /** - * @description AchievementPlaceEnum - * @enum {string} - */ - place: AchievementPlaceEnum; - /** - * @description Tag - * @enum {string|null} - */ - leaderboard: Tag; - title: string; - description?: string | null; - /** Format: date-time */ - createdAt: string; - /** Format: date-time */ - deletedAt?: string | null; - active?: boolean; - }; - DuelData: { - lobby: components["schemas"]["LobbyDto"]; - questions: components["schemas"]["QuestionBankDto"][]; - players: components["schemas"]["UserDto"][]; - playerQuestions: { - [key: string]: components["schemas"]["QuestionDto"][]; - }; - }; - LobbyDto: { - id: string; - joinCode: string; - /** - * @description LobbyStatus - * @enum {string} - */ - status: LobbyStatus; - /** Format: date-time */ - expiresAt: string | null; - /** Format: date-time */ - createdAt: string; - /** Format: int32 */ - playerCount: number; - winnerId: string | null; - }; - QuestionBankDto: { - id: string; - questionSlug: string; - /** - * @description QuestionDifficulty - * @enum {string} - */ - questionDifficulty: QuestionDifficulty; - questionTitle: string; - /** Format: int32 */ - questionNumber: number; - questionLink: string; - description?: string | null; - /** Format: float */ - acceptanceRate: number; - /** Format: date-time */ - createdAt: string; - topics: components["schemas"]["QuestionTopicDto"][]; - }; - QuestionDto: { - id: string; - userId: string; - questionSlug: string; - questionTitle: string; - /** - * @description QuestionDifficulty - * @enum {string} - */ - questionDifficulty: QuestionDifficulty; - /** Format: int32 */ - questionNumber: number; - questionLink: string; - description: string | null; - /** Format: int32 */ - pointsAwarded: number | null; - /** Format: float */ - acceptanceRate: number; - /** Format: date-time */ - createdAt: string; - /** Format: date-time */ - submittedAt: string; - runtime: string | null; - memory: string | null; - code: string | null; - language: string | null; - submissionId: string | null; - topics: components["schemas"]["QuestionTopicDto"][]; - }; - QuestionTopicDto: { - id: string; - questionId: string; - topicSlug: string; - /** - * @description LeetcodeTopicEnum - * @enum {string} - */ - topic: LeetcodeTopicEnum; - /** Format: date-time */ - createdAt: string; - }; - SseWrapperApiResponderDuelData: { - success: boolean; - payload: components["schemas"]["DuelData"]; - message: string; - }; - UserDto: { - id: string; - discordId: string; - discordName: string; - leetcodeUsername: string | null; - nickname: string | null; - admin: boolean; - profileUrl: string | null; - tags: components["schemas"]["UserTag"][]; - achievements: components["schemas"]["AchievementDto"][]; - }; - UserTag: { - id: string; - /** Format: date-time */ - createdAt: string; - userId: string; - /** - * @description Tag - * @enum {string} - */ - tag: Tag; - }; - JoinLobbyBody: { - partyCode: string; - }; - ApiResponderPartyCodeBody: { - success: boolean; - payload: components["schemas"]["PartyCodeBody"]; - message: string; - }; - PartyCodeBody: { - code: string; - }; - RegisterClubBody: { - userId: string; - password: string; - clubSlug: string; - }; - ApiResponderUserTag: { - success: boolean; - payload: components["schemas"]["UserTag"]; - message: string; - }; - EmailBody: { - email: string; - }; - UpdateAdminBody: { - id: string; - toggleTo: boolean; - }; - ApiResponderUserDto: { - success: boolean; - payload: components["schemas"]["UserDto"]; - message: string; - }; - NewLeaderboardBody: { - name: string; - /** Format: date-time */ - shouldExpireBy?: string; - syntaxHighlightingLanguage?: string; - }; - DeleteAnnouncementBody: { - id: string; - }; - CreateAnnouncementBody: { - message: string; - /** Format: date-time */ - expiresAt: string; - showTimer?: boolean; - }; - Announcement: { - id: string; - /** Format: date-time */ - createdAt: string; - /** Format: date-time */ - expiresAt: string; - showTimer: boolean; - message: string; - }; - ApiResponderAnnouncement: { - success: boolean; - payload: components["schemas"]["Announcement"]; - message: string; - }; - ApiResponderServerMetadataObject: { - success: boolean; - payload: components["schemas"]["ServerMetadataObject"]; - message: string; - }; - ServerMetadataObject: { - name: string; - version: string; - description: string; - authors: string[]; - }; - ApiResponderPageQuestionDto: { - success: boolean; - payload: components["schemas"]["PageQuestionDto"]; - message: string; - }; - PageQuestionDto: { - hasNextPage: boolean; - items: components["schemas"]["QuestionDto"][]; - /** Format: int32 */ - pages: number; - /** Format: int32 */ - pageSize: number; - }; - ApiResponderPageUserDto: { - success: boolean; - payload: components["schemas"]["PageUserDto"]; - message: string; - }; - PageUserDto: { - hasNextPage: boolean; - items: components["schemas"]["UserDto"][]; - /** Format: int32 */ - pages: number; - /** Format: int32 */ - pageSize: number; - }; - ApiResponderQuestionWithUserDto: { - success: boolean; - payload: components["schemas"]["QuestionWithUserDto"]; - message: string; - }; - QuestionWithUserDto: { - id: string; - userId: string; - questionSlug: string; - questionTitle: string; - /** - * @description QuestionDifficulty - * @enum {string} - */ - questionDifficulty: QuestionDifficulty; - /** Format: int32 */ - questionNumber: number; - questionLink: string; - description: string | null; - /** Format: int32 */ - pointsAwarded: number | null; - /** Format: float */ - acceptanceRate: number; - /** Format: date-time */ - createdAt: string; - /** Format: date-time */ - submittedAt: string; - runtime: string | null; - memory: string | null; - code: string | null; - language: string | null; - submissionId: string | null; - topics: components["schemas"]["QuestionTopicDto"][]; - discordName: string | null; - leetcodeUsername: string | null; - nickname: string | null; - }; - ApiResponderPotdDto: { - success: boolean; - payload: components["schemas"]["PotdDto"]; - message: string; - }; - PotdDto: { - id: string; - title: string; - slug: string; - /** Format: float */ - multiplier: number; - /** Format: date-time */ - createdAt: string; - }; - ApiResponderString: { - success: boolean; - payload: string; - message: string; - }; - ApiResponderPageIndexedUserWithScoreDto: { - success: boolean; - payload: components["schemas"]["PageIndexedUserWithScoreDto"]; - message: string; - }; - IndexedUserWithScoreDto: { - /** Format: int32 */ - index: number; - id: string; - discordId: string; - discordName: string; - leetcodeUsername: string | null; - nickname: string | null; - admin: boolean; - profileUrl: string | null; - tags: components["schemas"]["UserTag"][]; - achievements: components["schemas"]["AchievementDto"][]; - /** Format: int32 */ - totalScore: number; - }; - PageIndexedUserWithScoreDto: { - hasNextPage: boolean; - items: components["schemas"]["IndexedUserWithScoreDto"][]; - /** Format: int32 */ - pages: number; - /** Format: int32 */ - pageSize: number; - }; - UserWithScoreDto: { - id: string; - discordId: string; - discordName: string; - leetcodeUsername: string | null; - nickname: string | null; - admin: boolean; - profileUrl: string | null; - tags: components["schemas"]["UserTag"][]; - achievements: components["schemas"]["AchievementDto"][]; - /** Format: int32 */ - totalScore: number; - }; - ApiResponderLeaderboardDto: { - success: boolean; - payload: components["schemas"]["LeaderboardDto"]; - message: string; - }; - LeaderboardDto: { - id: string; - name: string; - /** Format: date-time */ - createdAt: string; - /** Format: date-time */ - deletedAt: string | null; - /** Format: date-time */ - shouldExpireBy: string | null; - syntaxHighlightingLanguage: string | null; - }; - ApiResponderUserWithScoreDto: { - success: boolean; - payload: components["schemas"]["UserWithScoreDto"]; - message: string; - }; - ApiResponderIndexedUserWithScoreDto: { - success: boolean; - payload: components["schemas"]["IndexedUserWithScoreDto"]; - message: string; - }; - ApiResponderPageLeaderboardDto: { - success: boolean; - payload: components["schemas"]["PageLeaderboardDto"]; - message: string; - }; - PageLeaderboardDto: { - hasNextPage: boolean; - items: components["schemas"]["LeaderboardDto"][]; - /** Format: int32 */ - pages: number; - /** Format: int32 */ - pageSize: number; - }; - Achievement: { - id: string; - userId: string; - /** - * @description AchievementPlaceEnum - * @enum {string} - */ - place: AchievementPlaceEnum; - /** - * @description Tag - * @enum {string} - */ - leaderboard: Tag; - title: string; - description: string; - /** Format: date-time */ - createdAt: string; - /** Format: date-time */ - deletedAt: string; - active: boolean; - }; - ApiResponderListUserWithScore: { - success: boolean; - payload: components["schemas"]["UserWithScore"][]; - message: string; - }; - UserWithScore: { - id: string; - discordId: string; - discordName: string; - leetcodeUsername: string; - nickname: string; - admin: boolean; - profileUrl: string; - verifyKey: string; - schoolEmail: string; - tags: components["schemas"]["UserTag"][]; - achievements: components["schemas"]["Achievement"][]; - /** Format: int32 */ - totalScore: number; - }; - ApiResponderClubDto: { - success: boolean; - payload: components["schemas"]["ClubDto"]; - message: string; - }; - ClubDto: { - id: string; - name: string; - description: string; - slug: string; - splashIconUrl: string; - /** - * @description Tag - * @enum {string} - */ - tag: Tag; - }; - ApiResponderAuthenticationObjectDto: { - success: boolean; - payload: components["schemas"]["AuthenticationObjectDto"]; - message: string; - }; - AuthenticationObjectDto: { - user: components["schemas"]["PrivateUserDto"]; - session: components["schemas"]["SessionDto"]; - }; - PrivateUserDto: { - id: string; - discordId: string; - discordName: string; - leetcodeUsername: string | null; - nickname: string | null; - admin: boolean; - profileUrl: string | null; - tags: components["schemas"]["UserTag"][]; - verifyKey: string; - schoolEmail: string | null; - achievements: components["schemas"]["AchievementDto"][]; - }; - SessionDto: { - id: string; - userId: string; - /** Format: date-time */ - expiresAt: string; - }; - ApplicationContext: { - applicationName: string; - /** Format: int64 */ - startupDate: number; - autowireCapableBeanFactory: components["schemas"]["AutowireCapableBeanFactory"]; - parent: components["schemas"]["ApplicationContext"]; - id: string; - displayName: string; - environment: components["schemas"]["Environment"]; - /** Format: int32 */ - beanDefinitionCount: number; - beanDefinitionNames: string[]; - parentBeanFactory: components["schemas"]["BeanFactory"]; - classLoader: { - name: string; - registeredAsParallelCapable: boolean; - parent: { - name: string; - registeredAsParallelCapable: boolean; - unnamedModule: { - name: string; - descriptor: { - open: boolean; - automatic: boolean; - }; - named: boolean; - annotations: Record[]; - declaredAnnotations: Record[]; - packages: string[]; - nativeAccessEnabled: boolean; - layer: Record; - }; - definedPackages: { - name: string; - sealed: boolean; - annotations: Record[]; - declaredAnnotations: Record[]; - specificationTitle: string; - specificationVersion: string; - specificationVendor: string; - implementationTitle: string; - implementationVersion: string; - implementationVendor: string; - }[]; - defaultAssertionStatus: boolean; - }; - unnamedModule: { - name: string; - descriptor: { - open: boolean; - automatic: boolean; - }; - named: boolean; - annotations: Record[]; - declaredAnnotations: Record[]; - packages: string[]; - nativeAccessEnabled: boolean; - layer: Record; - }; - definedPackages: { - name: string; - sealed: boolean; - annotations: Record[]; - declaredAnnotations: Record[]; - specificationTitle: string; - specificationVersion: string; - specificationVendor: string; - implementationTitle: string; - implementationVersion: string; - implementationVendor: string; - }[]; - defaultAssertionStatus: boolean; - }; - }; - AutowireCapableBeanFactory: Record; - BeanFactory: Record; - Environment: { - activeProfiles: string[]; - defaultProfiles: string[]; - }; - FilterRegistration: { - servletNameMappings: string[]; - urlPatternMappings: string[]; - initParameters: { - [key: string]: string; - }; - name: string; - className: string; - }; - HttpStatusCode: { - is4xxClientError: boolean; - is5xxServerError: boolean; - is1xxInformational: boolean; - is2xxSuccessful: boolean; - is3xxRedirection: boolean; - error: boolean; - }; - JspConfigDescriptor: { - taglibs: components["schemas"]["TaglibDescriptor"][]; - jspPropertyGroups: components["schemas"]["JspPropertyGroupDescriptor"][]; - }; - JspPropertyGroupDescriptor: { - elIgnored: string; - pageEncoding: string; - isXml: string; - includePreludes: string[]; - includeCodas: string[]; - urlPatterns: string[]; - defaultContentType: string; - errorOnELNotFound: string; - scriptingInvalid: string; - deferredSyntaxAllowedAsLiteral: string; - trimDirectiveWhitespaces: string; - errorOnUndeclaredNamespace: string; - buffer: string; - }; - RedirectView: { - applicationContext: components["schemas"]["ApplicationContext"]; - servletContext: components["schemas"]["ServletContext"]; - contentType: string; - requestContextAttribute: string; - staticAttributes: { - [key: string]: Record; - }; - exposePathVariables: boolean; - exposeContextBeansAsAttributes: boolean; - exposedContextBeanNames: string[]; - beanName: string; - url: string; - contextRelative: boolean; - http10Compatible: boolean; - exposeModelAttributes: boolean; - encodingScheme: string; - statusCode: components["schemas"]["HttpStatusCode"]; - expandUriTemplateVariables: boolean; - propagateQueryParams: boolean; - hosts: string[]; - redirectView: boolean; - propagateQueryProperties: boolean; - attributesCSV: string; - attributesMap: { - [key: string]: Record; - }; - attributes: { - [key: string]: string; - }; - }; - ServletContext: { - contextPath: string; - serverInfo: string; - /** Format: int32 */ - sessionTimeout: number; - attributeNames: Record; - initParameterNames: Record; - /** Format: int32 */ - effectiveMajorVersion: number; - /** Format: int32 */ - effectiveMinorVersion: number; - servletContextName: string; - servletRegistrations: { - [key: string]: components["schemas"]["ServletRegistration"]; - }; - filterRegistrations: { - [key: string]: components["schemas"]["FilterRegistration"]; - }; - sessionCookieConfig: components["schemas"]["SessionCookieConfig"]; - sessionTrackingModes: ServletContextSessionTrackingModes[]; - defaultSessionTrackingModes: ServletContextSessionTrackingModes[]; - effectiveSessionTrackingModes: ServletContextSessionTrackingModes[]; - jspConfigDescriptor: components["schemas"]["JspConfigDescriptor"]; - virtualServerName: string; - requestCharacterEncoding: string; - responseCharacterEncoding: string; - classLoader: { - name: string; - registeredAsParallelCapable: boolean; - unnamedModule: { - name: string; - descriptor: { - open: boolean; - automatic: boolean; - }; - named: boolean; - annotations: Record[]; - declaredAnnotations: Record[]; - packages: string[]; - nativeAccessEnabled: boolean; - layer: Record; - }; - definedPackages: { - name: string; - sealed: boolean; - annotations: Record[]; - declaredAnnotations: Record[]; - specificationTitle: string; - specificationVersion: string; - specificationVendor: string; - implementationTitle: string; - implementationVersion: string; - implementationVendor: string; - }[]; - defaultAssertionStatus: boolean; - }; - /** Format: int32 */ - majorVersion: number; - /** Format: int32 */ - minorVersion: number; - }; - ServletRegistration: { - mappings: string[]; - runAsRole: string; - initParameters: { - [key: string]: string; - }; - name: string; - className: string; - }; - SessionCookieConfig: { - secure: boolean; - /** Format: int32 */ - maxAge: number; - httpOnly: boolean; - path: string; - domain: string; - name: string; - attributes: { - [key: string]: string; - }; - /** @deprecated */ - comment: string; - }; - TaglibDescriptor: { - taglibURI: string; - taglibLocation: string; - }; - AnnouncementDto: { - id: string; - /** Format: date-time */ - createdAt: string; - /** Format: date-time */ - expiresAt: string; - showTimer: boolean | null; - message: string; - }; - ApiResponderAnnouncementDto: { - success: boolean; - payload: components["schemas"]["AnnouncementDto"]; - message: string; - }; - ApiResponderListQuestionWithUserDto: { - success: boolean; - payload: components["schemas"]["QuestionWithUserDto"][]; - message: string; - }; - }; - responses: never; - parameters: never; - requestBodies: never; - headers: never; - pathItems: never; -} -export type $defs = Record; -export interface operations { - ingestLog: { - parameters: { - query?: never; - header?: never; - path?: never; - cookie?: never; - }; - requestBody: { - content: { - "application/json": components["schemas"]["IngestLogBody"]; - }; - }; - responses: { - /** @description OK */ - 200: { - headers: { - [name: string]: unknown; - }; - content: { - "*/*": components["schemas"]["ApiResponderEmpty"]; - }; - }; - }; - }; - ingestErrors: { - parameters: { - query?: never; - header?: never; - path?: never; - cookie?: never; - }; - requestBody: { - content: { - "application/json": components["schemas"]["IngestErrorsBody"]; - }; - }; - responses: { - /** @description OK */ - 200: { - headers: { - [name: string]: unknown; - }; - content: { - "*/*": components["schemas"]["ApiResponderEmpty"]; - }; - }; - }; - }; - setLeetcodeUsername: { - parameters: { - query?: never; - header?: never; - path?: never; - cookie?: never; - }; - requestBody: { - content: { - "application/json": components["schemas"]["LeetcodeUsernameObject"]; - }; - }; - responses: { - /** @description Name has been set successfully */ - 200: { - headers: { - [name: string]: unknown; - }; - content: { - "*/*": components["schemas"]["UnsafeEmptySuccessResponse"]; - }; - }; - /** @description Invalid username */ - 400: { - headers: { - [name: string]: unknown; - }; - content: { - "*/*": components["schemas"]["UnsafeGenericFailureResponse"]; - }; - }; - /** @description Not authenticated */ - 401: { - headers: { - [name: string]: unknown; - }; - content: { - "*/*": components["schemas"]["UnsafeGenericFailureResponse"]; - }; - }; - /** @description Attempt to set name that's already been set */ - 409: { - headers: { - [name: string]: unknown; - }; - content: { - "*/*": components["schemas"]["UnsafeGenericFailureResponse"]; - }; - }; - }; - }; - checkLatestSubmissions: { - parameters: { - query?: never; - header?: never; - path?: never; - cookie?: never; - }; - requestBody?: never; - responses: { - /** @description The check was completed successfuly */ - 200: { - headers: { - [name: string]: unknown; - }; - content: { - "*/*": components["schemas"]["ApiResponderArrayListAcceptedSubmission"]; - }; - }; - /** @description Invalid username */ - 400: { - headers: { - [name: string]: unknown; - }; - content: { - "*/*": components["schemas"]["UnsafeGenericFailureResponse"]; - }; - }; - /** @description Not authenticated */ - 401: { - headers: { - [name: string]: unknown; - }; - content: { - "*/*": components["schemas"]["UnsafeGenericFailureResponse"]; - }; - }; - /** @description Leetcode username hasn't been set */ - 412: { - headers: { - [name: string]: unknown; - }; - content: { - "*/*": components["schemas"]["UnsafeGenericFailureResponse"]; - }; - }; - /** @description Rate limited */ - 429: { - headers: { - [name: string]: unknown; - }; - content: { - "*/*": components["schemas"]["UnsafeRateLimitResponse"]; - }; - }; - }; - }; - getDuelData: { - parameters: { - query?: never; - header?: never; - path: { - lobbyCode: string; - }; - cookie?: never; - }; - requestBody?: never; - responses: { - /** @description Sending live duel data */ - 200: { - headers: { - [name: string]: unknown; - }; - content: { - "*/*": components["schemas"]["SseWrapperApiResponderDuelData"]; - }; - }; - /** @description Endpoint is currently non-functional */ - 403: { - headers: { - [name: string]: unknown; - }; - content: { - "*/*": components["schemas"]["UnsafeGenericFailureResponse"]; - }; - }; - /** @description A duel with the given code cannot be found. */ - 404: { - headers: { - [name: string]: unknown; - }; - content: { - "*/*": components["schemas"]["UnsafeGenericFailureResponse"]; - }; - }; - }; - }; - startDuel: { - parameters: { - query?: never; - header?: never; - path?: never; - cookie?: never; - }; - requestBody?: never; - responses: { - /** @description Duel successfully started! */ - 200: { - headers: { - [name: string]: unknown; - }; - content: { - "*/*": components["schemas"]["ApiResponderEmpty"]; - }; - }; - /** @description Unauthorized */ - 401: { - headers: { - [name: string]: unknown; - }; - content: { - "*/*": components["schemas"]["UnsafeGenericFailureResponse"]; - }; - }; - /** @description Endpoint is currently non-functional */ - 403: { - headers: { - [name: string]: unknown; - }; - content: { - "*/*": components["schemas"]["UnsafeGenericFailureResponse"]; - }; - }; - /** @description The user is not currently in a party. */ - 404: { - headers: { - [name: string]: unknown; - }; - content: { - "*/*": components["schemas"]["UnsafeGenericFailureResponse"]; - }; - }; - /** @description There is a conflict with the request; check message */ - 409: { - headers: { - [name: string]: unknown; - }; - content: { - "*/*": components["schemas"]["UnsafeGenericFailureResponse"]; - }; - }; - }; - }; - processSolvedProblemsInDuel: { - parameters: { - query?: never; - header?: never; - path?: never; - cookie?: never; - }; - requestBody?: never; - responses: { - /** @description The user's solved questions were processed (could still mean no new points were awarded) */ - 200: { - headers: { - [name: string]: unknown; - }; - content: { - "*/*": components["schemas"]["ApiResponderEmpty"]; - }; - }; - /** @description Unauthorized */ - 401: { - headers: { - [name: string]: unknown; - }; - content: { - "*/*": components["schemas"]["UnsafeGenericFailureResponse"]; - }; - }; - /** @description Endpoint is currently non-functional */ - 403: { - headers: { - [name: string]: unknown; - }; - content: { - "*/*": components["schemas"]["UnsafeGenericFailureResponse"]; - }; - }; - /** @description The user is not currently in a duel. */ - 404: { - headers: { - [name: string]: unknown; - }; - content: { - "*/*": components["schemas"]["UnsafeGenericFailureResponse"]; - }; - }; - }; - }; - leaveParty: { - parameters: { - query?: never; - header?: never; - path?: never; - cookie?: never; - }; - requestBody?: never; - responses: { - /** @description Party left successfully */ - 200: { - headers: { - [name: string]: unknown; - }; - content: { - "*/*": components["schemas"]["ApiResponderEmpty"]; - }; - }; - /** @description Unauthorized */ - 401: { - headers: { - [name: string]: unknown; - }; - content: { - "*/*": components["schemas"]["UnsafeGenericFailureResponse"]; - }; - }; - /** @description Endpoint is currently non-functional */ - 403: { - headers: { - [name: string]: unknown; - }; - content: { - "*/*": components["schemas"]["UnsafeGenericFailureResponse"]; - }; - }; - /** @description The user is not currently in a party. */ - 404: { - headers: { - [name: string]: unknown; - }; - content: { - "*/*": components["schemas"]["UnsafeGenericFailureResponse"]; - }; - }; - }; - }; - joinParty: { - parameters: { - query?: never; - header?: never; - path?: never; - cookie?: never; - }; - requestBody: { - content: { - "application/json": components["schemas"]["JoinLobbyBody"]; - }; - }; - responses: { - /** @description Party has been successfully joined! */ - 200: { - headers: { - [name: string]: unknown; - }; - content: { - "*/*": components["schemas"]["ApiResponderEmpty"]; - }; - }; - /** @description Unauthorized */ - 401: { - headers: { - [name: string]: unknown; - }; - content: { - "*/*": components["schemas"]["UnsafeGenericFailureResponse"]; - }; - }; - /** @description Endpoint is currently non-functional */ - 403: { - headers: { - [name: string]: unknown; - }; - content: { - "*/*": components["schemas"]["UnsafeGenericFailureResponse"]; - }; - }; - /** @description Party with the given code cannot be found */ - 404: { - headers: { - [name: string]: unknown; - }; - content: { - "*/*": components["schemas"]["UnsafeGenericFailureResponse"]; - }; - }; - /** @description There is a conflict with the request; check message */ - 409: { - headers: { - [name: string]: unknown; - }; - content: { - "*/*": components["schemas"]["UnsafeGenericFailureResponse"]; - }; - }; - /** @description There is an issue with the request; check message */ - 410: { - headers: { - [name: string]: unknown; - }; - content: { - "*/*": components["schemas"]["UnsafeGenericFailureResponse"]; - }; - }; - }; - }; - createParty: { - parameters: { - query?: never; - header?: never; - path?: never; - cookie?: never; - }; - requestBody?: never; - responses: { - /** @description Party created successfully */ - 200: { - headers: { - [name: string]: unknown; - }; - content: { - "*/*": components["schemas"]["ApiResponderPartyCodeBody"]; - }; - }; - /** @description Unauthorized */ - 401: { - headers: { - [name: string]: unknown; - }; - content: { - "*/*": components["schemas"]["UnsafeGenericFailureResponse"]; - }; - }; - /** @description Endpoint is currently non-functional */ - 403: { - headers: { - [name: string]: unknown; - }; - content: { - "*/*": components["schemas"]["UnsafeGenericFailureResponse"]; - }; - }; - /** @description There is a conflict with the request; check message */ - 409: { - headers: { - [name: string]: unknown; - }; - content: { - "*/*": components["schemas"]["UnsafeGenericFailureResponse"]; - }; - }; - }; - }; - endDuel: { - parameters: { - query?: never; - header?: never; - path?: never; - cookie?: never; - }; - requestBody?: never; - responses: { - /** @description Duel has been successfully ended! */ - 200: { - headers: { - [name: string]: unknown; - }; - content: { - "*/*": components["schemas"]["ApiResponderEmpty"]; - }; - }; - /** @description Unauthorized */ - 401: { - headers: { - [name: string]: unknown; - }; - content: { - "*/*": components["schemas"]["UnsafeGenericFailureResponse"]; - }; - }; - /** @description Endpoint is currently non-functional */ - 403: { - headers: { - [name: string]: unknown; - }; - content: { - "*/*": components["schemas"]["UnsafeGenericFailureResponse"]; - }; - }; - /** @description The user is not currently in a duel. */ - 404: { - headers: { - [name: string]: unknown; - }; - content: { - "*/*": components["schemas"]["UnsafeGenericFailureResponse"]; - }; - }; - /** @description There is a conflict with the request; check message */ - 409: { - headers: { - [name: string]: unknown; - }; - content: { - "*/*": components["schemas"]["UnsafeGenericFailureResponse"]; - }; - }; - }; - }; - validatePassword: { - parameters: { - query?: never; - header?: never; - path?: never; - cookie?: never; - }; - requestBody: { - content: { - "application/json": components["schemas"]["RegisterClubBody"]; - }; - }; - responses: { - /** @description OK */ - 200: { - headers: { - [name: string]: unknown; - }; - content: { - "*/*": components["schemas"]["ApiResponderUserTag"]; - }; - }; - }; - }; - enrollSchool: { - parameters: { - query?: never; - header?: never; - path?: never; - cookie?: never; - }; - requestBody: { - content: { - "application/json": components["schemas"]["EmailBody"]; - }; - }; - responses: { - /** @description email send successfully */ - 200: { - headers: { - [name: string]: unknown; - }; - content: { - "*/*": components["schemas"]["ApiResponderEmpty"]; - }; - }; - /** @description not implemented */ - 500: { - headers: { - [name: string]: unknown; - }; - content: { - "*/*": components["schemas"]["ApiResponderEmpty"]; - }; - }; - }; - }; - updateAdmin: { - parameters: { - query?: never; - header?: never; - path?: never; - cookie?: never; - }; - requestBody: { - content: { - "application/json": components["schemas"]["UpdateAdminBody"]; - }; - }; - responses: { - /** @description OK */ - 200: { - headers: { - [name: string]: unknown; - }; - content: { - "*/*": components["schemas"]["ApiResponderUserDto"]; - }; - }; - }; - }; - createLeaderboard: { - parameters: { - query?: never; - header?: never; - path?: never; - cookie?: never; - }; - requestBody: { - content: { - "application/json": components["schemas"]["NewLeaderboardBody"]; - }; - }; - responses: { - /** @description OK */ - 200: { - headers: { - [name: string]: unknown; - }; - content: { - "*/*": components["schemas"]["ApiResponderEmpty"]; - }; - }; - }; - }; - deleteAnnouncement: { - parameters: { - query?: never; - header?: never; - path?: never; - cookie?: never; - }; - requestBody: { - content: { - "application/json": components["schemas"]["DeleteAnnouncementBody"]; - }; - }; - responses: { - /** @description Announcement successfully Deleted */ - 200: { - headers: { - [name: string]: unknown; - }; - content: { - "*/*": components["schemas"]["ApiResponderEmpty"]; - }; - }; - /** @description Not authenticated */ - 401: { - headers: { - [name: string]: unknown; - }; - content: { - "*/*": components["schemas"]["UnsafeGenericFailureResponse"]; - }; - }; - /** @description Something went wrong */ - 500: { - headers: { - [name: string]: unknown; - }; - content: { - "*/*": components["schemas"]["UnsafeGenericFailureResponse"]; - }; - }; - }; - }; - createNewAnnouncement: { - parameters: { - query?: never; - header?: never; - path?: never; - cookie?: never; - }; - requestBody: { - content: { - "application/json": components["schemas"]["CreateAnnouncementBody"]; - }; - }; - responses: { - /** @description Announcement successfully created */ - 200: { - headers: { - [name: string]: unknown; - }; - content: { - "*/*": components["schemas"]["ApiResponderAnnouncement"]; - }; - }; - /** @description Not authenticated */ - 401: { - headers: { - [name: string]: unknown; - }; - content: { - "*/*": components["schemas"]["UnsafeGenericFailureResponse"]; - }; - }; - /** @description Something went wrong */ - 500: { - headers: { - [name: string]: unknown; - }; - content: { - "*/*": components["schemas"]["UnsafeGenericFailureResponse"]; - }; - }; - }; - }; - apiIndex: { - parameters: { - query?: never; - header?: never; - path?: never; - cookie?: never; - }; - requestBody?: never; - responses: { - /** @description OK */ - 200: { - headers: { - [name: string]: unknown; - }; - content: { - "*/*": components["schemas"]["ApiResponderServerMetadataObject"]; - }; - }; - }; - }; - getAllQuestionsForUser: { - parameters: { - query?: { - /** - * @description Page index - * @example 1 - */ - page?: number; - /** - * @description Question Title - * @example Two - */ - query?: string; - /** @description Page size (maximum of 20 */ - pageSize?: number; - /** @description Filter to hide questions with 0 points awarded */ - pointFilter?: boolean; - /** @description Filter for questions with at least one of the topics provided */ - topics?: string[]; - /** @description Start date to filter submissions by createdAt (inclusive) */ - startDate?: string; - /** @description End date to filter submissions by createdAt (inclusive) */ - endDate?: string; - }; - header?: never; - path: { - userId: string; - }; - cookie?: never; - }; - requestBody?: never; - responses: { - /** @description Successful */ - 200: { - headers: { - [name: string]: unknown; - }; - content: { - "*/*": components["schemas"]["ApiResponderPageQuestionDto"]; - }; - }; - /** @description Invalid date range (startDate is after endDate) */ - 400: { - headers: { - [name: string]: unknown; - }; - content: { - "*/*": components["schemas"]["UnsafeGenericFailureResponse"]; - }; - }; - /** @description Not authenticated */ - 401: { - headers: { - [name: string]: unknown; - }; - content: { - "*/*": components["schemas"]["UnsafeGenericFailureResponse"]; - }; - }; - }; - }; - getUserProfileByUserId: { - parameters: { - query?: never; - header?: never; - path: { - userId: string; - }; - cookie?: never; - }; - requestBody?: never; - responses: { - /** @description User profile has been found */ - 200: { - headers: { - [name: string]: unknown; - }; - content: { - "*/*": components["schemas"]["ApiResponderUserDto"]; - }; - }; - /** @description User profile has not been found */ - 404: { - headers: { - [name: string]: unknown; - }; - content: { - "*/*": components["schemas"]["UnsafeGenericFailureResponse"]; - }; - }; - }; - }; - getUserProfileByLeetcodeUsername: { - parameters: { - query?: never; - header?: never; - path: { - leetcodeUsername: string; - }; - cookie?: never; - }; - requestBody?: never; - responses: { - /** @description User profile has been found */ - 200: { - headers: { - [name: string]: unknown; - }; - content: { - "*/*": components["schemas"]["ApiResponderUserDto"]; - }; - }; - /** @description User profile has not been found */ - 404: { - headers: { - [name: string]: unknown; - }; - content: { - "*/*": components["schemas"]["UnsafeGenericFailureResponse"]; - }; - }; - }; - }; - getAllUsers: { - parameters: { - query?: { - /** - * @description Page index - * @example 1 - */ - page?: number; - /** - * @description Question Title - * @example Two - */ - query?: string; - /** @description Page size (maximum of 20 */ - pageSize?: number; - }; - header?: never; - path?: never; - cookie?: never; - }; - requestBody?: never; - responses: { - /** @description All users' metadata has been found. */ - 200: { - headers: { - [name: string]: unknown; - }; - content: { - "*/*": components["schemas"]["ApiResponderPageUserDto"]; - }; - }; - /** @description All users' metadata has not been found. */ - 404: { - headers: { - [name: string]: unknown; - }; - content: { - "*/*": components["schemas"]["UnsafeGenericFailureResponse"]; - }; - }; - }; - }; - getSubmissionBySubmissionId: { - parameters: { - query?: never; - header?: never; - path: { - submissionId: string; - }; - cookie?: never; - }; - requestBody?: never; - responses: { - /** @description Question found */ - 200: { - headers: { - [name: string]: unknown; - }; - content: { - "*/*": components["schemas"]["ApiResponderQuestionWithUserDto"]; - }; - }; - /** @description Not authenticated */ - 401: { - headers: { - [name: string]: unknown; - }; - content: { - "*/*": components["schemas"]["UnsafeGenericFailureResponse"]; - }; - }; - /** @description Question not found */ - 404: { - headers: { - [name: string]: unknown; - }; - content: { - "*/*": components["schemas"]["UnsafeGenericFailureResponse"]; - }; - }; - }; - }; - getCurrentPotd: { - parameters: { - query?: never; - header?: never; - path?: never; - cookie?: never; - }; - requestBody?: never; - responses: { - /** @description POTD found */ - 200: { - headers: { - [name: string]: unknown; - }; - content: { - "*/*": components["schemas"]["ApiResponderPotdDto"]; - }; - }; - /** @description Not authenticated */ - 401: { - headers: { - [name: string]: unknown; - }; - content: { - "*/*": components["schemas"]["UnsafeGenericFailureResponse"]; - }; - }; - /** @description POTD not found */ - 404: { - headers: { - [name: string]: unknown; - }; - content: { - "*/*": components["schemas"]["UnsafeGenericFailureResponse"]; - }; - }; - }; - }; - getCurrentPotdEmbed: { - parameters: { - query?: never; - header?: never; - path?: never; - cookie?: never; - }; - requestBody?: never; - responses: { - /** @description POTD found */ - 200: { - headers: { - [name: string]: unknown; - }; - content: { - "*/*": components["schemas"]["ApiResponderPotdDto"]; - }; - }; - /** @description POTD not found */ - 404: { - headers: { - [name: string]: unknown; - }; - content: { - "*/*": components["schemas"]["UnsafeGenericFailureResponse"]; - }; - }; - }; - }; - getVerificationKey: { - parameters: { - query?: never; - header?: never; - path?: never; - cookie?: never; - }; - requestBody?: never; - responses: { - /** @description Successfully retrieved key */ - 200: { - headers: { - [name: string]: unknown; - }; - content: { - "*/*": components["schemas"]["ApiResponderString"]; - }; - }; - /** @description Not authenticated */ - 401: { - headers: { - [name: string]: unknown; - }; - content: { - "*/*": components["schemas"]["UnsafeGenericFailureResponse"]; - }; - }; - }; - }; - getLeaderboardUsersById: { - parameters: { - query?: { - /** - * @description Page index - * @example 1 - */ - page?: number; - /** @description Page size (maximum of 20 */ - pageSize?: number; - /** - * @description Discord name - * @example tahmid - */ - query?: string; - /** @description Filter for Patina users */ - patina?: boolean; - /** @description Filter for Hunter College users */ - hunter?: boolean; - /** @description Filter for NYU users */ - nyu?: boolean; - /** @description Filter for Baruch College users */ - baruch?: boolean; - /** @description Filter for RPI users */ - rpi?: boolean; - /** @description Filter for GWC users */ - gwc?: boolean; - /** @description Filter for SBU users */ - sbu?: boolean; - /** @description Filter for CCNY users */ - ccny?: boolean; - /** @description Filter for Columbia users */ - columbia?: boolean; - /** @description Filter for Cornell users */ - cornell?: boolean; - /** @description Filter for BMCC users */ - bmcc?: boolean; - /** @description Enable global leaderboard index */ - globalIndex?: boolean; - }; - header?: never; - path: { - leaderboardId: string; - }; - cookie?: never; - }; - requestBody?: never; - responses: { - /** @description OK */ - 200: { - headers: { - [name: string]: unknown; - }; - content: { - "*/*": components["schemas"]["ApiResponderPageIndexedUserWithScoreDto"]; - }; - }; - /** @description Not authenticated */ - 401: { - headers: { - [name: string]: unknown; - }; - content: { - "*/*": components["schemas"]["UnsafeGenericFailureResponse"]; - }; - }; - }; - }; - getLeaderboardMetadataByLeaderboardId: { - parameters: { - query?: never; - header?: never; - path: { - leaderboardId: string; - }; - cookie?: never; - }; - requestBody?: never; - responses: { - /** @description OK */ - 200: { - headers: { - [name: string]: unknown; - }; - content: { - "*/*": components["schemas"]["ApiResponderLeaderboardDto"]; - }; - }; - /** @description Not authenticated */ - 401: { - headers: { - [name: string]: unknown; - }; - content: { - "*/*": components["schemas"]["UnsafeGenericFailureResponse"]; - }; - }; - }; - }; - getUserCurrentLeaderboardFull: { - parameters: { - query?: never; - header?: never; - path: { - userId: string; - }; - cookie?: never; - }; - requestBody?: never; - responses: { - /** @description OK */ - 200: { - headers: { - [name: string]: unknown; - }; - content: { - "*/*": components["schemas"]["ApiResponderUserWithScoreDto"]; - }; - }; - /** @description Not authenticated */ - 401: { - headers: { - [name: string]: unknown; - }; - content: { - "*/*": components["schemas"]["UnsafeGenericFailureResponse"]; - }; - }; - }; - }; - getUserCurrentLeaderboardRank: { - parameters: { - query?: { - /** @description Filter for Patina users */ - patina?: boolean; - /** @description Filter for Hunter College users */ - hunter?: boolean; - /** @description Filter for NYU users */ - nyu?: boolean; - /** @description Filter for Baruch College users */ - baruch?: boolean; - /** @description Filter for RPI users */ - rpi?: boolean; - /** @description Filter for GWC users */ - gwc?: boolean; - /** @description Filter for SBU users */ - sbu?: boolean; - /** @description Filter for CCNY users */ - ccny?: boolean; - /** @description Filter for Cornell users */ - cornell?: boolean; - /** @description Filter for Columbia users */ - columbia?: boolean; - /** @description Filter for BMCC users */ - bmcc?: boolean; - }; - header?: never; - path?: never; - cookie?: never; - }; - requestBody?: never; - responses: { - /** @description Successfully retrieved user rank */ - 200: { - headers: { - [name: string]: unknown; - }; - content: { - "*/*": components["schemas"]["ApiResponderIndexedUserWithScoreDto"]; - }; - }; - /** @description Not authenticated */ - 401: { - headers: { - [name: string]: unknown; - }; - content: { - "*/*": components["schemas"]["UnsafeGenericFailureResponse"]; - }; - }; - /** @description User not found on leaderboard */ - 404: { - headers: { - [name: string]: unknown; - }; - content: { - "*/*": components["schemas"]["ApiResponderIndexedUserWithScoreDto"]; - }; - }; - }; - }; - getCurrentLeaderboardUsers: { - parameters: { - query?: { - /** - * @description Page index - * @example 1 - */ - page?: number; - /** @description Page size (maximum of 20 */ - pageSize?: number; - /** - * @description Discord name - * @example tahmid - */ - query?: string; - /** @description Filter for Patina users */ - patina?: boolean; - /** @description Filter for Hunter College users */ - hunter?: boolean; - /** @description Filter for NYU users */ - nyu?: boolean; - /** @description Filter for Baruch College users */ - baruch?: boolean; - /** @description Filter for RPI users */ - rpi?: boolean; - /** @description Filter for GWC users */ - gwc?: boolean; - /** @description Filter for SBU users */ - sbu?: boolean; - /** @description Filter for CCNY users */ - ccny?: boolean; - /** @description Filter for Columbia users */ - columbia?: boolean; - /** @description Filter for Cornell users */ - cornell?: boolean; - /** @description Filter for BMCC users */ - bmcc?: boolean; - /** @description Enable global leaderboard index */ - globalIndex?: boolean; - }; - header?: never; - path?: never; - cookie?: never; - }; - requestBody?: never; - responses: { - /** @description OK */ - 200: { - headers: { - [name: string]: unknown; - }; - content: { - "*/*": components["schemas"]["ApiResponderPageIndexedUserWithScoreDto"]; - }; - }; - /** @description Not authenticated */ - 401: { - headers: { - [name: string]: unknown; - }; - content: { - "*/*": components["schemas"]["UnsafeGenericFailureResponse"]; - }; - }; - }; - }; - getCurrentLeaderboardMetadata: { - parameters: { - query?: never; - header?: never; - path?: never; - cookie?: never; - }; - requestBody?: never; - responses: { - /** @description OK */ - 200: { - headers: { - [name: string]: unknown; - }; - content: { - "*/*": components["schemas"]["ApiResponderLeaderboardDto"]; - }; - }; - /** @description Not authenticated */ - 401: { - headers: { - [name: string]: unknown; - }; - content: { - "*/*": components["schemas"]["UnsafeGenericFailureResponse"]; - }; - }; - }; - }; - getAllLeaderboardMetadata: { - parameters: { - query?: { - /** - * @description Page index - * @example 1 - */ - page?: number; - /** - * @description Question Title - * @example Two - */ - query?: string; - /** @description Page size (maximum of 20 */ - pageSize?: number; - }; - header?: never; - path?: never; - cookie?: never; - }; - requestBody?: never; - responses: { - /** @description OK */ - 200: { - headers: { - [name: string]: unknown; - }; - content: { - "*/*": components["schemas"]["ApiResponderPageLeaderboardDto"]; - }; - }; - /** @description Not authenticated */ - 401: { - headers: { - [name: string]: unknown; - }; - content: { - "*/*": components["schemas"]["UnsafeGenericFailureResponse"]; - }; - }; - }; - }; - getGwcUsers: { - parameters: { - query: { - leaderboardId: string; - }; - header: { - "X-API-Key": string; - }; - path?: never; - cookie?: never; - }; - requestBody?: never; - responses: { - /** @description Successfully retrieved GWC users */ - 200: { - headers: { - [name: string]: unknown; - }; - content: { - "*/*": components["schemas"]["ApiResponderListUserWithScore"]; - }; - }; - /** @description Invalid API key */ - 401: { - headers: { - [name: string]: unknown; - }; - content: { - "*/*": components["schemas"]["ApiResponderListUserWithScore"]; - }; - }; - /** @description API key does not have required permissions */ - 403: { - headers: { - [name: string]: unknown; - }; - content: { - "*/*": components["schemas"]["ApiResponderListUserWithScore"]; - }; - }; - /** @description Leaderboard not found */ - 404: { - headers: { - [name: string]: unknown; - }; - content: { - "*/*": components["schemas"]["ApiResponderListUserWithScore"]; - }; - }; - }; - }; - getPartyOrDuelCodeForUser: { - parameters: { - query?: never; - header?: never; - path?: never; - cookie?: never; - }; - requestBody?: never; - responses: { - /** @description Party or duel code was successfully found! */ - 200: { - headers: { - [name: string]: unknown; - }; - content: { - "*/*": components["schemas"]["ApiResponderPartyCodeBody"]; - }; - }; - /** @description Unauthorized */ - 401: { - headers: { - [name: string]: unknown; - }; - content: { - "*/*": components["schemas"]["UnsafeGenericFailureResponse"]; - }; - }; - /** @description Endpoint is currently non-functional */ - 403: { - headers: { - [name: string]: unknown; - }; - content: { - "*/*": components["schemas"]["UnsafeGenericFailureResponse"]; - }; - }; - /** @description The user is not currently in a party or duel. */ - 404: { - headers: { - [name: string]: unknown; - }; - content: { - "*/*": components["schemas"]["UnsafeGenericFailureResponse"]; - }; - }; - }; - }; - getClubDataBySlug: { - parameters: { - query?: never; - header?: never; - path: { - clubSlug: string; - }; - cookie?: never; - }; - requestBody?: never; - responses: { - /** @description OK */ - 200: { - headers: { - [name: string]: unknown; - }; - content: { - "*/*": components["schemas"]["ApiResponderClubDto"]; - }; - }; - }; - }; - validateAuth: { - parameters: { - query?: never; - header?: never; - path?: never; - cookie?: never; - }; - requestBody?: never; - responses: { - /** @description Authenticated */ - 200: { - headers: { - [name: string]: unknown; - }; - content: { - "*/*": components["schemas"]["ApiResponderAuthenticationObjectDto"]; - }; - }; - /** @description Not authenticated */ - 401: { - headers: { - [name: string]: unknown; - }; - content: { - "*/*": components["schemas"]["UnsafeGenericFailureResponse"]; - }; - }; - }; - }; - verifySchoolEmail: { - parameters: { - query?: never; - header?: never; - path?: never; - cookie?: never; - }; - requestBody?: never; - responses: { - /** @description Redirect to /settings with success or error message */ - 302: { - headers: { - [name: string]: unknown; - }; - content: { - "*/*": components["schemas"]["RedirectView"]; - }; - }; - }; - }; - logout: { - parameters: { - query?: never; - header?: never; - path?: never; - cookie?: never; - }; - requestBody?: never; - responses: { - /** @description Redirect to `/login?success=true&message="Successful logout message here."` on successful authentication. */ - 302: { - headers: { - [name: string]: unknown; - }; - content?: never; - }; - }; - }; - getLatestAnnouncement: { - parameters: { - query?: never; - header?: never; - path?: never; - cookie?: never; - }; - requestBody?: never; - responses: { - /** @description Successful response (may or may not be announcement, check success key) */ - 200: { - headers: { - [name: string]: unknown; - }; - content: { - "*/*": components["schemas"]["ApiResponderAnnouncementDto"]; - }; - }; - }; - }; - getIncompleteQuestions: { - parameters: { - query?: never; - header?: never; - path?: never; - cookie?: never; - }; - requestBody?: never; - responses: { - /** @description Retrieved incomplete questions */ - 200: { - headers: { - [name: string]: unknown; - }; - content: { - "*/*": components["schemas"]["ApiResponderListQuestionWithUserDto"]; - }; - }; - /** @description No Incomplete Questions */ - 404: { - headers: { - [name: string]: unknown; - }; - content: { - "*/*": components["schemas"]["UnsafeGenericFailureResponse"]; - }; - }; - }; - }; -} -export enum AchievementPlaceEnum { - ONE = "ONE", - TWO = "TWO", - THREE = "THREE" -} -export enum Tag { - Patina = "Patina", - Hunter = "Hunter", - Nyu = "Nyu", - Baruch = "Baruch", - Rpi = "Rpi", - Gwc = "Gwc", - Sbu = "Sbu", - Ccny = "Ccny", - Columbia = "Columbia", - Cornell = "Cornell", - Bmcc = "Bmcc", - MhcPlusPlus = "MhcPlusPlus" -} -export enum LobbyStatus { - CLOSED = "CLOSED", - AVAILABLE = "AVAILABLE", - ACTIVE = "ACTIVE", - COMPLETED = "COMPLETED" -} -export enum QuestionDifficulty { - Easy = "Easy", - Medium = "Medium", - Hard = "Hard" -} -export enum LeetcodeTopicEnum { - STACK = "STACK", - DATA_STREAM = "DATA_STREAM", - REJECTION_SAMPLING = "REJECTION_SAMPLING", - GEOMETRY = "GEOMETRY", - COUNTING = "COUNTING", - DESIGN = "DESIGN", - PROBABILITY_AND_STATISTICS = "PROBABILITY_AND_STATISTICS", - MINIMUM_SPANNING_TREE = "MINIMUM_SPANNING_TREE", - LINE_SWEEP = "LINE_SWEEP", - NUMBER_THEORY = "NUMBER_THEORY", - ROLLING_HASH = "ROLLING_HASH", - SEGMENT_TREE = "SEGMENT_TREE", - BICONNECTED_COMPONENT = "BICONNECTED_COMPONENT", - MONOTONIC_STACK = "MONOTONIC_STACK", - ITERATOR = "ITERATOR", - QUEUE = "QUEUE", - RADIX_SORT = "RADIX_SORT", - BUCKET_SORT = "BUCKET_SORT", - SHELL = "SHELL", - MEMOIZATION = "MEMOIZATION", - STRING = "STRING", - PREFIX_SUM = "PREFIX_SUM", - CONCURRENCY = "CONCURRENCY", - DATABASE = "DATABASE", - SHORTEST_PATH = "SHORTEST_PATH", - SORTING = "SORTING", - LINKED_LIST = "LINKED_LIST", - SLIDING_WINDOW = "SLIDING_WINDOW", - SUFFIX_ARRAY = "SUFFIX_ARRAY", - DOUBLY_LINKED_LIST = "DOUBLY_LINKED_LIST", - SIMULATION = "SIMULATION", - ORDERED_SET = "ORDERED_SET", - GRAPH = "GRAPH", - MATH = "MATH", - ORDERED_MAP = "ORDERED_MAP", - GAME_THEORY = "GAME_THEORY", - DYNAMIC_PROGRAMMING = "DYNAMIC_PROGRAMMING", - RECURSION = "RECURSION", - MONOTONIC_QUEUE = "MONOTONIC_QUEUE", - MATRIX = "MATRIX", - RESERVOIR_SAMPLING = "RESERVOIR_SAMPLING", - MERGE_SORT = "MERGE_SORT", - COMBINATORICS = "COMBINATORICS", - INTERACTIVE = "INTERACTIVE", - BINARY_TREE = "BINARY_TREE", - RANDOMIZED = "RANDOMIZED", - BITMASK = "BITMASK", - BREADTH_FIRST_SEARCH = "BREADTH_FIRST_SEARCH", - STRING_MATCHING = "STRING_MATCHING", - GREEDY = "GREEDY", - BRAINTEASER = "BRAINTEASER", - BACKTRACKING = "BACKTRACKING", - BIT_MANIPULATION = "BIT_MANIPULATION", - UNION_FIND = "UNION_FIND", - BINARY_SEARCH_TREE = "BINARY_SEARCH_TREE", - TWO_POINTERS = "TWO_POINTERS", - ARRAY = "ARRAY", - DEPTH_FIRST_SEARCH = "DEPTH_FIRST_SEARCH", - EULERIAN_CIRCUIT = "EULERIAN_CIRCUIT", - TREE = "TREE", - BINARY_SEARCH = "BINARY_SEARCH", - STRONGLY_CONNECTED_COMPONENT = "STRONGLY_CONNECTED_COMPONENT", - ENUMERATION = "ENUMERATION", - HEAP_PRIORITY_QUEUE = "HEAP_PRIORITY_QUEUE", - DIVIDE_AND_CONQUER = "DIVIDE_AND_CONQUER", - HASH_FUNCTION = "HASH_FUNCTION", - HASH_TABLE = "HASH_TABLE", - TRIE = "TRIE", - TOPOLOGICAL_SORT = "TOPOLOGICAL_SORT", - QUICKSELECT = "QUICKSELECT", - BINARY_INDEXED_TREE = "BINARY_INDEXED_TREE", - COUNTING_SORT = "COUNTING_SORT", - UNKNOWN = "UNKNOWN" -} -export enum ServletContextSessionTrackingModes { - COOKIE = "COOKIE", - URL = "URL", - SSL = "SSL" -} -export enum ApiPaths { - GetApiAuthFlowDiscord = "/api/auth/flow/discord", - GetApiAuthFlowCallbackDiscord = "/api/auth/flow/callback/discord", - ingestLog = "/api/reporter/log", - ingestErrors = "/api/reporter/error", - setLeetcodeUsername = "/api/leetcode/set", - checkLatestSubmissions = "/api/leetcode/check", - getDuelData = "/api/duel/{lobbyCode}/sse", - startDuel = "/api/duel/start", - processSolvedProblemsInDuel = "/api/duel/process", - leaveParty = "/api/duel/party/leave", - joinParty = "/api/duel/party/join", - createParty = "/api/duel/party/create", - endDuel = "/api/duel/end", - validatePassword = "/api/club/verify", - enrollSchool = "/api/auth/school/enroll", - updateAdmin = "/api/admin/user/admin/toggle", - createLeaderboard = "/api/admin/leaderboard/create", - deleteAnnouncement = "/api/admin/announcement/disable", - createNewAnnouncement = "/api/admin/announcement/create", - apiIndex = "/api", - getAllQuestionsForUser = "/api/user/{userId}/submissions", - getUserProfileByUserId = "/api/user/{userId}/profile", - getUserProfileByLeetcodeUsername = "/api/user/v2/{leetcodeUsername}/profile", - getAllUsers = "/api/user/all", - getSubmissionBySubmissionId = "/api/leetcode/submission/{submissionId}", - getCurrentPotd = "/api/leetcode/potd", - getCurrentPotdEmbed = "/api/leetcode/potd/embed", - getVerificationKey = "/api/leetcode/key", - getLeaderboardUsersById = "/api/leaderboard/{leaderboardId}/user/all", - getLeaderboardMetadataByLeaderboardId = "/api/leaderboard/{leaderboardId}/metadata", - getUserCurrentLeaderboardFull = "/api/leaderboard/current/user/{userId}", - getUserCurrentLeaderboardRank = "/api/leaderboard/current/user/rank", - getCurrentLeaderboardUsers = "/api/leaderboard/current/user/all", - getCurrentLeaderboardMetadata = "/api/leaderboard/current/metadata", - getAllLeaderboardMetadata = "/api/leaderboard/all/metadata", - getGwcUsers = "/api/external/gwc/users", - getPartyOrDuelCodeForUser = "/api/duel/current", - getClubDataBySlug = "/api/club/{clubSlug}", - validateAuth = "/api/auth/validate", - verifySchoolEmail = "/api/auth/school/verify", - logout = "/api/auth/logout", - getLatestAnnouncement = "/api/announcement", - getIncompleteQuestions = "/api/admin/questions/incomplete" -}