blob: f2f15598e23b54655580f64faef1883d2b9ba958 [file] [log] [blame]
# Introduction
JMAP ([@!RFC8620] JSON Meta Application Protocol) is a generic protocol for synchronising data, such as mails,
calendars or contacts, between a client and a server. It is optimised for mobile and web environments, and aims
to provide a consistent interface to different data types.
This specification defines a data model for handling quotas over JMAP, allowing you to read and explain quota information.
This specification does not address quota administration, which should be handled by other means.
## Notational conventions
The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
"SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and
"OPTIONAL" in this document are to be interpreted as described in BCP
14 [@!RFC2119] [@!RFC8174] when, and only when, they appear in all
capitals, as shown here.
Type signatures, examples and property descriptions in this document follow the conventions established in section 1.1
of [@!RFC8620]. Data types defined in the core specification are also used in this document.
Servers MUST support all properties specified for the new data types defined in this document.
## Terminology
The same terminology is used in this document as in the core JMAP specification.
The term Quota (with that specific capitalization) is used to refer to the data type defined in this document and instance of that data type.
## Addition to the capabilities object
The capabilities object is returned as part of the JMAP Session object; see [@!RFC8620], section 2.
This document defines one additional capability URI.
### urn:ietf:params:jmap:quota
This represents support for the Quota data type and associated API methods. Servers supporting this specification MUST add a property called urn:ietf:params:jmap:quota to the capabilities object.
The value of this property is an empty object in both the JMAP session capabilities property and an accounts accountCapabilities property.
## Data types
In addition to the standard JSON data types, a couple of additional data types are common to the definition of Quota objects and properties.
### Scope
The **Scope** is a `String` from an enumeration defined list of values, handled by the server.
It explains the entities this value applies to. Values for the **Scope** are:
* `account`: Applies for this account
* `domain`: All accounts of this domain share this part of the quota
* `global`: All accounts of this server share this part of the quota
### ResourceType
The **ResourceType** is a `String` from an enumeration defined list of values, handled by the server.
A resource type is like an unit of measure for the quota usage. Values for the **ResourceType** are:
* `count`: The quota is measured in number of data type objects. For example, a quota can have a limit of 50 `Mail` objects.
* `octets`: The quota is measured in size (in `octets`). For example, a quota can have a limit of 25000 `octets`.
## Push
Servers MUST support the JMAP push mechanisms, as specified in [@!RFC8620] Section 7, to receive notifications when
the state changes for the Quota type defined in this specification.