Skip to content

Allow users over their request quota to submit requests for admin approval #3592

Description

@iSteed

Description

When a user hits their movie or TV quota, the request is rejected outright. MediaRequest.request() throws QuotaRestrictedError (server/entity/MediaRequest.ts, ~lines 150–166), which the route maps to a 403. Nothing is created, so an admin never sees it and the user has no way to ask for an exception.

The only bypass is ignoreQuota, which requires MANAGE_REQUESTS and is an admin action. Users who are over quota but have a legitimate need can't ask for approval.

Desired Behavior

When a non-admin user exceeds their quota, instead of a 403, create the request in PENDING status with a flag (for example quotaExceeded: true) so it:

  • shows in the pending queue with a visible "over quota" badge,
  • is approved through the existing flow, which then bypasses the quota check for that request.

The frontend would show "Over quota. Submit for approval?" in place of the error.

Quotas are a reasonable default, but a hard stop with no path forward means users either ask an admin out of band or give up. A pending-approval path keeps the quota as policy while letting admins make exceptions in the app.

Open questions

  • Should an over-quota pending request count toward the quota while it waits?
  • Should the admin approval UI show the user's current usage?
  • Should this be opt-in via a setting, or on by default?

Additional Context

Related but different: #633 (bypass via series limit, closed), #1943 (combined limit, closed), #1509 (per-request season limit, open). This does not overlap with the in-flight quota fixes #3377 and #3378, which are about race conditions and editing.

Search Existing Issues

  • Yes, I have searched existing issues.

Code of Conduct

  • I agree to follow Seerr's Code of Conduct
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions