# Quotas management¶

When the built-in plugin kinto.plugins.quotas is enabled in configuration, it becomes possible to configure quotas for a bucket or a collection.

Clients can check for the quotas capability in the root URL endpoint.

Note

In terms of performance, enabling this plugin generates two or three additional queries on backends per request.

• A bucket’s quota is a limit on the size of bucket attributes, group attributes, collection attributes, and record attributes.
• Deleted objects are considered to have a size zero so if you add something and remove it, it will look like it was never created for the quota even if its tombstone is still there.
• The quota plugin only works with the transactional storage backends (e.g. PostgreSQL)
• The quota plugin should be activated before adding some data in a bucket or collection. If activated after, the size of the data already present will be added to the quota limit even if this data is deleted later.

## Configuration¶

You can configure three types of quotas:

• QUOTA_BYTES: The maximum total amount (in bytes) of data that can be stored in a bucket or collection, as measured by the JSON stringification of every value plus every key’s length.
• QUOTA_BYTES_PER_ITEM: The maximum size (in bytes) of each individual item in the bucket or collection, as measured by the JSON stringification of its value plus its key length.
• MAX_ITEMS: The maximum number of objects that can be stored in a collection or bucket.

You can configure it in the INI settings file.

For buckets:

• Globally for every buckets using kinto.quotas.bucket_max_bytes, kinto.quotas.bucket_max_bytes_per_item and kinto.quotas.bucket_max_items
• Specifically for some buckets using kinto.quotas.bucket_{bucket_id}_max_bytes, kinto.quotas.bucket_{bucket_id}_max_bytes_per_item and kinto.quotas.bucket_{bucket_id}_max_items e.g. kinto.quotas.bucket_blocklists_max_items

For collections:

• Globally for every bucket collections using kinto.quotas.collection_max_bytes, kinto.quotas.collection_max_bytes_per_item and kinto.quotas.collection_max_items
• Specifically for every collection in a given bucket using kinto.quotas.collection_{bucket_id}_max_bytes, kinto.quotas.collection_{bucket_id}_max_bytes_per_item and kinto.quotas.collection_{bucket_id}_max_items e.g. kinto.quotas.collection_blocklists_max_items
• Specifically for a given bucket collection using kinto.quotas.collection_{bucket_id}_{collection_id}_max_bytes, kinto.quotas.collection_{bucket_id}_{collection_id}_max_bytes_per_item and kinto.quotas.collection_{bucket_id}_{collection_id}_max_items e.g. kinto.quotas.collection_blocklists_certificates_max_items

## How does it work?¶

If the quota is exceeded the server will return a 507 Insufficient Storage HTTP error.

Example Response

HTTP/1.1 507 Insufficient Storage