chore: Increased default model creation rate limits from 10/m to 25/m (#12236)

This commit is contained in:
Tom Moor
2026-05-01 08:14:25 -04:00
committed by GitHub
parent eaca221fde
commit 1caf7f9221
13 changed files with 24 additions and 6 deletions
+1 -1
View File
@@ -29,7 +29,7 @@ const router = new Router();
router.post(
"files.create",
rateLimiter(RateLimiterStrategy.TenPerMinute),
rateLimiter(RateLimiterStrategy.TwentyFivePerMinute),
auth(),
validate(T.FilesCreateSchema),
timeout(30 * 60 * 1000), // 30 minutes for large file uploads
+3
View File
@@ -2,6 +2,7 @@ import Router from "koa-router";
import { Op, Sequelize, type WhereOptions } from "sequelize";
import { Scope, UserRole } from "@shared/types";
import auth from "@server/middlewares/authentication";
import { rateLimiter } from "@server/middlewares/rateLimiter";
import { transaction } from "@server/middlewares/transaction";
import validate from "@server/middlewares/validate";
import { ApiKey, User } from "@server/models";
@@ -9,6 +10,7 @@ import { authorize, cannot } from "@server/policies";
import { presentApiKey } from "@server/presenters";
import type { APIContext } from "@server/types";
import { AuthenticationType } from "@server/types";
import { RateLimiterStrategy } from "@server/utils/RateLimiter";
import pagination from "../middlewares/pagination";
import * as T from "./schema";
@@ -18,6 +20,7 @@ const globalScopes = new Set<string>(Object.values(Scope));
router.post(
"apiKeys.create",
rateLimiter(RateLimiterStrategy.TwentyFivePerMinute),
auth({
role: UserRole.Member,
type: AuthenticationType.APP,
+1 -1
View File
@@ -81,7 +81,7 @@ router.post(
router.post(
"attachments.create",
rateLimiter(RateLimiterStrategy.TenPerMinute),
rateLimiter(RateLimiterStrategy.TwentyFivePerMinute),
auth(),
validate(T.AttachmentsCreateSchema),
transaction(),
@@ -50,6 +50,7 @@ const router = new Router();
router.post(
"collections.create",
rateLimiter(RateLimiterStrategy.TwentyFivePerMinute),
auth(),
validate(T.CollectionsCreateSchema),
transaction(),
+1 -1
View File
@@ -29,7 +29,7 @@ const router = new Router();
router.post(
"comments.create",
rateLimiter(RateLimiterStrategy.TenPerMinute),
rateLimiter(RateLimiterStrategy.TwentyFivePerMinute),
auth(),
feature(TeamPreference.Commenting),
validate(T.CommentsCreateSchema),
+1 -1
View File
@@ -166,7 +166,7 @@ router.post(
router.post(
"emojis.create",
rateLimiter(RateLimiterStrategy.TenPerMinute),
rateLimiter(RateLimiterStrategy.TwentyFivePerMinute),
auth(),
validate(T.EmojisCreateSchema),
transaction(),
+3
View File
@@ -6,6 +6,7 @@ import { ImportState, UserRole } from "@shared/types";
import { ImportValidation } from "@shared/validations";
import { UnprocessableEntityError } from "@server/errors";
import auth from "@server/middlewares/authentication";
import { rateLimiter } from "@server/middlewares/rateLimiter";
import { transaction } from "@server/middlewares/transaction";
import validate from "@server/middlewares/validate";
import { Integration } from "@server/models";
@@ -13,6 +14,7 @@ import Import from "@server/models/Import";
import { authorize } from "@server/policies";
import { presentImport, presentPolicies } from "@server/presenters";
import type { APIContext } from "@server/types";
import { RateLimiterStrategy } from "@server/utils/RateLimiter";
import pagination from "../middlewares/pagination";
import * as T from "./schema";
@@ -20,6 +22,7 @@ const router = new Router();
router.post(
"imports.create",
rateLimiter(RateLimiterStrategy.TwentyFivePerMinute),
auth({ role: UserRole.Admin }),
validate(T.ImportsCreateSchema),
transaction(),
@@ -3,12 +3,14 @@ import type { WhereOptions } from "sequelize";
import { Op } from "sequelize";
import { IntegrationType, UserRole } from "@shared/types";
import auth from "@server/middlewares/authentication";
import { rateLimiter } from "@server/middlewares/rateLimiter";
import { transaction } from "@server/middlewares/transaction";
import validate from "@server/middlewares/validate";
import Integration from "@server/models/Integration";
import { authorize } from "@server/policies";
import { presentIntegration, presentPolicies } from "@server/presenters";
import type { APIContext } from "@server/types";
import { RateLimiterStrategy } from "@server/utils/RateLimiter";
import pagination from "../middlewares/pagination";
import * as T from "./schema";
@@ -68,6 +70,7 @@ router.post(
router.post(
"integrations.create",
rateLimiter(RateLimiterStrategy.TwentyFivePerMinute),
auth({ role: UserRole.Admin }),
validate(T.IntegrationsCreateSchema),
transaction(),
+3
View File
@@ -2,6 +2,7 @@ import Router from "koa-router";
import { Sequelize, Op, Transaction } from "sequelize";
import pinCreator from "@server/commands/pinCreator";
import auth from "@server/middlewares/authentication";
import { rateLimiter } from "@server/middlewares/rateLimiter";
import { transaction } from "@server/middlewares/transaction";
import validate from "@server/middlewares/validate";
import { Collection, Document, Pin } from "@server/models";
@@ -12,6 +13,7 @@ import {
presentPolicies,
} from "@server/presenters";
import type { APIContext } from "@server/types";
import { RateLimiterStrategy } from "@server/utils/RateLimiter";
import pagination from "../middlewares/pagination";
import * as T from "./schema";
@@ -19,6 +21,7 @@ const router = new Router();
router.post(
"pins.create",
rateLimiter(RateLimiterStrategy.TwentyFivePerMinute),
auth(),
validate(T.PinsCreateSchema),
transaction(),
+1
View File
@@ -251,6 +251,7 @@ router.post(
router.post(
"shares.create",
rateLimiter(RateLimiterStrategy.TwentyFivePerMinute),
auth(),
validate(T.SharesCreateSchema),
transaction(),
+3
View File
@@ -2,6 +2,7 @@ import Router from "koa-router";
import { Sequelize } from "sequelize";
import starCreator from "@server/commands/starCreator";
import auth from "@server/middlewares/authentication";
import { rateLimiter } from "@server/middlewares/rateLimiter";
import { transaction } from "@server/middlewares/transaction";
import validate from "@server/middlewares/validate";
import { Document, Star, Collection } from "@server/models";
@@ -13,6 +14,7 @@ import {
} from "@server/presenters";
import type { APIContext } from "@server/types";
import { starIndexing } from "@server/utils/indexing";
import { RateLimiterStrategy } from "@server/utils/RateLimiter";
import pagination from "../middlewares/pagination";
import * as T from "./schema";
@@ -20,6 +22,7 @@ const router = new Router();
router.post(
"stars.create",
rateLimiter(RateLimiterStrategy.TwentyFivePerMinute),
auth(),
validate(T.StarsCreateSchema),
transaction(),
@@ -114,6 +114,7 @@ router.post(
router.post(
"subscriptions.create",
rateLimiter(RateLimiterStrategy.TwentyFivePerMinute),
auth(),
validate(T.SubscriptionsCreateSchema),
transaction(),
+2 -2
View File
@@ -43,7 +43,7 @@ const handleTeamUpdate = async (ctx: APIContext<T.TeamsUpdateSchemaReq>) => {
router.post(
"team.update",
rateLimiter(RateLimiterStrategy.TenPerMinute),
rateLimiter(RateLimiterStrategy.TwentyFivePerMinute),
auth(),
validate(T.TeamsUpdateSchema),
transaction(),
@@ -52,7 +52,7 @@ router.post(
router.post(
"teams.update",
rateLimiter(RateLimiterStrategy.TenPerMinute),
rateLimiter(RateLimiterStrategy.TwentyFivePerMinute),
auth(),
validate(T.TeamsUpdateSchema),
transaction(),