:linkattrs:
= Gerrit Code Review - Quota

Gerrit does not provide out of the box quota enforcement. However, it does
support an extension mechanism for plugins to hook into to provide this
functionality. The most prominent plugin is the
link:https://gerrit.googlesource.com/plugins/quota/[Quota Plugin,role=external,window=_blank].

This documentation is intended to be read by plugin developers. It contains all
quota requests implemented in Gerrit-core as well as the metadata that they have
associated.

== Quota Groups

The following quota groups are defined in core Gerrit:

=== REST API
[[rest-api]]

The REST API enforces quota after the resource was parsed (if applicable) and before the
endpoint's logic is executed. This enables quota enforcer implementations to throttle calls
to specific endpoints while knowing the general context (user and top-level entity such as
change, project or account).

If the quota enforcer wants to throttle HTTP requests, they should use
link:quota.html#http-requests[HTTP Requests] instead.

The quota groups used for checking follow the exact definition of the endoint in the REST
API, but remove all IDs. The schema is:

/restapi/<ENDPOINT>:<HTTP-METHOD>

Examples:

[options="header",cols="1,6"]
|=======================
|HTTP call                                 |Quota Group                    |Metadata
|GET /a/changes/1/revisions/current/detail |/changes/revisions/detail:GET  |CurrentUser, Change.Id, Project.NameKey
|POST /a/changes/                          |/changes/:POST                 |CurrentUser
|GET /a/accounts/self/detail               |/accounts/detail:GET           |CurrentUser, Account.Id
|=======================

The user provided in the check's metadata is always the calling user (having the
impersonation bit and real user set in case the user is impersonating another user).

GERRIT
------
Part of link:index.html[Gerrit Code Review]

SEARCHBOX
---------
