<?xml version="1.0" encoding="UTF-8"?>
  <?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?>
  <!-- generated by https://github.com/cabo/kramdown-rfc version 1.7.29 (Ruby 2.6.10) -->


<!DOCTYPE rfc  [
  <!ENTITY nbsp    "&#160;">
  <!ENTITY zwsp   "&#8203;">
  <!ENTITY nbhy   "&#8209;">
  <!ENTITY wj     "&#8288;">

]>


<rfc ipr="trust200902" docName="draft-degennaro-jmap-metadata-00" category="std" consensus="true" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true">
  <front>
    <title abbrev="JMAP Object Metadata">JMAP Object Metadata</title>

    <author initials="M." surname="De Gennaro" fullname="Mauro De Gennaro">
      <organization abbrev="Stalwart Labs">Stalwart Labs LLC</organization>
      <address>
        <postal>
          <street>1309 Coffeen Avenue, Suite 1200</street>
          <city>Sheridan</city>
          <region>WY</region>
          <code>82801</code>
          <country>USA</country>
        </postal>
        <email>mauro@stalw.art</email>
        <uri>https://stalw.art</uri>
      </address>
    </author>

    <date year="2025" month="November" day="02"/>

    
    
    <keyword>Internet-Draft</keyword>

    <abstract>


<?line 46?>

<t>This document defines a new extension to the JSON Meta Application Protocol (JMAP) that introduces a standardized mechanism for managing metadata associated with JMAP objects. The JMAP Object Metadata extension allows clients and servers to store, retrieve, and synchronize arbitrary metadata and annotations on any JMAP data type in a consistent manner. It defines a generic annotation model as well as specific mappings for accessing IMAP metadata and WebDAV “dead properties” where applicable. This extension facilitates interoperability between JMAP and existing metadata frameworks while allowing vendor-specific extensions in a structured and discoverable way.</t>



    </abstract>



  </front>

  <middle>


<?line 50?>

<section anchor="introduction"><name>Introduction</name>

<t>JMAP (<xref target="RFC8620"/> — JSON Meta Application Protocol) is a generic protocol for synchronizing data, such as mail, calendars or contacts, between a client and a server. It is optimized for mobile and web environments, and aims to provide a consistent interface to different data types.</t>

<t>Metadata and annotations are auxiliary data elements that provide additional context, user-defined properties, or system-specific information about primary data objects. These mechanisms have proven valuable in existing protocols: IMAP <xref target="RFC3501"/> provides the METADATA extension <xref target="RFC5464"/> for associating arbitrary key-value pairs with mailboxes and the server, while WebDAV <xref target="RFC4918"/> supports "dead properties" that allow clients to store custom XML properties on resources. Such metadata capabilities enable a wide range of use cases, including user annotations, application-specific settings, collaborative tagging, and protocol bridging.</t>

<t>This document defines a standardized approach to managing metadata within JMAP. The specification introduces a generic annotation mechanism that can be applied to any JMAP object type, allowing both common metadata properties and vendor-specific extensions. This provides a consistent interface for clients to store and retrieve supplementary information associated with emails, contacts, calendar events, and other JMAP data types.</t>

<t>For servers that implement multiple protocols, this specification also defines optional specialized metadata types: ImapMetadata for accessing IMAP METADATA extension entries through JMAP, and WebDavMetadata for exposing WebDAV dead properties via JMAP interfaces. These specialized types facilitate protocol interoperability and allow clients to manage metadata across different protocol boundaries.</t>

<section anchor="notational-conventions"><name>Notational Conventions</name>

<t>The key words "<bcp14>MUST</bcp14>", "<bcp14>MUST NOT</bcp14>", "<bcp14>REQUIRED</bcp14>", "<bcp14>SHALL</bcp14>", "<bcp14>SHALL
NOT</bcp14>", "<bcp14>SHOULD</bcp14>", "<bcp14>SHOULD NOT</bcp14>", "<bcp14>RECOMMENDED</bcp14>", "<bcp14>NOT RECOMMENDED</bcp14>",
"<bcp14>MAY</bcp14>", and "<bcp14>OPTIONAL</bcp14>" in this document are to be interpreted as
described in BCP 14 <xref target="RFC2119"/> <xref target="RFC8174"/> when, and only when, they
appear in all capitals, as shown here.</t>

<?line -18?>

</section>
<section anchor="addition-to-the-capabilities-object"><name>Addition to the Capabilities Object</name>

<t>The capabilities object is returned as part of the JMAP Session object; see <xref section="2" sectionFormat="of" target="RFC8620"/>. This document defines one additional capability URI.</t>

<section anchor="urnietfparamsjmapmetadata"><name>urn:ietf:params:jmap:metadata</name>

<t>This capability represents support for the Metadata data type and associated API methods. Servers that include this capability provide the ability to create, retrieve, update, and query Metadata objects.</t>

<t>The value of this property in the JMAP Session "capabilities" property is an empty object.</t>

<t>The value of this property in an account's "accountCapabilities" property is an object that <bcp14>MUST</bcp14> contain the following information on server capabilities and permissions for that account:</t>

<dl>
  <dt><strong>dataTypes</strong>: <spanx style="verb">String[]|null</spanx></dt>
  <dd>
    <t>A list of JMAP data types for which the server supports metadata operations. A value of <spanx style="verb">null</spanx> indicates support for all data types. When specified as an array, only the listed data types can have Metadata objects associated with them.</t>
  </dd>
  <dt><strong>metadataTypes</strong>: <spanx style="verb">String[]</spanx></dt>
  <dd>
    <t>A list of metadata type identifiers (values of the <spanx style="verb">@type</spanx> property) for which the server supports metadata operations. Only the listed metadata types can be created or retrieved.</t>
  </dd>
  <dt><strong>maxDepth</strong>: <spanx style="verb">UnsignedInt|null</spanx></dt>
  <dd>
    <t>Maximum depth of nested vendor-specific metadata properties that can be set or retrieved. A depth of 1 indicates only flat properties are supported. A depth of 2 allows one level of nesting, and so forth. A value of <spanx style="verb">null</spanx> indicates no server-enforced limit on nesting depth. This limitation applies to the structure of vendor-defined nested metadata properties within Annotation objects and does not affect the standard properties defined in this specification.</t>
  </dd>
  <dt><strong>maySetPrivate</strong>: <spanx style="verb">Boolean</spanx> (default: true)</dt>
  <dd>
    <t>Indicates whether the authenticated user has permission to create private metadata objects (<spanx style="verb">isPrivate</spanx>: true) in this account. If false, the user can only create shared metadata objects. Attempts to create private metadata when this capability is false <bcp14>MUST</bcp14> be rejected with a "forbidden" SetError.</t>
  </dd>
</dl>

</section>
</section>
</section>
<section anchor="metadata-object"><name>Metadata Object</name>

<t>The Metadata object has a collection of properties, as specified in the following sections. Properties are specified as being either mandatory or optional. Optional properties may have a default value if explicitly specified in the property definition.</t>

<section anchor="object-types"><name>Object Types</name>

<t>This specification defines three metadata object types: Annotation, ImapMetadata, and WebDavMetadata. The Annotation type provides a generic mechanism for attaching metadata to any JMAP object and supports arbitrary vendor-specific properties. The ImapMetadata and WebDavMetadata types are specialized metadata objects that provide structured access to IMAP METADATA extension <xref target="RFC5464"/> entries and WebDAV <xref target="RFC4918"/> dead properties, respectively, enabling protocol interoperability for servers that support multiple protocols.</t>

<t>Additional specifications <bcp14>MAY</bcp14> define further metadata types as needed to address specific use cases or protocol requirements. Such specifications <bcp14>MUST</bcp14> define a unique type identifier and specify which JMAP data types the metadata type may be associated with.</t>

<t>Metadata objects <bcp14>MUST</bcp14> name their type in the <spanx style="verb">@type</spanx> property. If not specified, the type is assumed to be "Annotation".</t>

<section anchor="object-type-annotation"><name>Annotation</name>

<t>An Annotation represents general-purpose metadata that can be attached to any JMAP object. Annotations provide a flexible mechanism for storing supplementary information about JMAP data objects without modifying the objects themselves. This metadata type is suitable for user comments, application-specific tags, workflow states, collaborative annotations, and other extensible metadata requirements.</t>

<t>The Annotation type is designed to be extensible through vendor-specific properties. This allows vendors and third-party applications to add custom metadata fields while maintaining interoperability with the core JMAP metadata system. Vendors can define domain-namespaced properties to avoid naming conflicts and ensure that their extensions do not interfere with standard properties or extensions from other vendors.</t>

<t>Common use cases for Annotations include: storing user notes or comments on emails or calendar events; maintaining application-specific flags or states; recording collaborative review or approval status; tracking custom workflow stages; and preserving client-specific UI preferences or cached computations.</t>

<t>The Annotation type <bcp14>MUST</bcp14> allow vendor-specific properties to be added beyond the common properties defined in this specification, subject to the naming and structure requirements specified in <xref target="vendor-specific-properties">Vendor-Specific Properties</xref>.</t>

<t>The <xref target="type-property">@type</xref> property value <bcp14>MUST</bcp14> be "Annotation".</t>

</section>
<section anchor="object-type-imap"><name>IMAP Metadata</name>

<t>ImapMetadata represents metadata associated with IMAP mailboxes as defined by the IMAP METADATA extension <xref target="RFC5464"/>. This metadata type provides a JMAP interface to IMAP metadata entries, allowing clients to read and potentially modify IMAP metadata through the JMAP protocol. This facilitates migration scenarios, protocol bridging, and unified metadata management for servers that support both IMAP and JMAP.</t>

<t>The IMAP METADATA extension defines a hierarchical namespace of metadata entries associated with mailboxes, organized under "/shared" and "/private" prefixes. Shared metadata entries are visible to all users with appropriate access to the mailbox, while private metadata entries are visible only to the authenticated user. The ImapMetadata type maps these IMAP concepts onto the JMAP metadata model.</t>

<t>Servers that support ImapMetadata <bcp14>MUST</bcp14> provide read access to IMAP metadata through the Metadata/get method. Write access (the ability to create, update, or destroy ImapMetadata objects through Metadata/set) is <bcp14>OPTIONAL</bcp14>. Servers that provide read-only access to IMAP metadata <bcp14>MUST</bcp14> reject modification attempts with an appropriate SetError (typically "forbidden"). Servers <bcp14>SHOULD</bcp14> document whether they provide read-only or read-write access to ImapMetadata.</t>

<t>This metadata type can only be associated with JMAP Mailbox objects as defined in <xref section="2" sectionFormat="of" target="RFC8621"/>. Attempts to create ImapMetadata objects with a <spanx style="verb">parentType</spanx> other than "Mailbox" <bcp14>MUST</bcp14> be rejected with an "invalidProperties" SetError.</t>

<t>The <xref target="type-property">@type</xref> property value <bcp14>MUST</bcp14> be "ImapMetadata".</t>

</section>
<section anchor="object-type-webdav"><name>WebDAV Metadata</name>

<t>WebDavMetadata represents metadata associated with WebDAV resources in the form of "dead properties" as defined in <xref section="4" sectionFormat="of" target="RFC4918"/>. Dead properties are arbitrary XML properties that clients can set on WebDAV resources to store metadata. This metadata type enables JMAP clients to access and potentially manipulate WebDAV dead properties, facilitating protocol interoperability and unified metadata management on servers that support both WebDAV and JMAP.</t>

<t>WebDAV dead properties are identified by their expanded XML name, which consists of a namespace URI and a local name. The WebDavMetadata type preserves this structure by using the expanded-name format for property keys: "{namespace-uri}localname". This ensures that WebDAV properties can be accurately represented and manipulated through JMAP without loss of namespace information.</t>

<t>Servers that support WebDavMetadata <bcp14>MUST</bcp14> provide read access to WebDAV dead properties through the Metadata/get method. Write access (the ability to create, update, or destroy WebDavMetadata objects through Metadata/set) is <bcp14>OPTIONAL</bcp14>. Servers that provide read-only access to WebDAV dead properties <bcp14>MUST</bcp14> reject modification attempts with an appropriate SetError (typically "forbidden"). Servers <bcp14>SHOULD</bcp14> document whether they provide read-only or read-write access to WebDavMetadata.</t>

<t>This metadata type can be associated with Calendar <xref target="I-D.ietf-jmap-calendars"/>, CalendarEvent <xref target="I-D.ietf-jmap-calendars"/>, AddressBook <xref target="RFC9610"/>, ContactCard <xref target="RFC9610"/>, and FileNode <xref target="I-D.ietf-jmap-filenode"/> data types, corresponding to the WebDAV-based protocols such as CalDAV <xref target="RFC4791"/>, CardDAV <xref target="RFC6352"/>, and WebDAV file storage. Servers <bcp14>MUST</bcp14> enforce that WebDavMetadata objects are only created for parent types that correspond to WebDAV resources. Attempts to create WebDavMetadata objects with inappropriate <spanx style="verb">parentType</spanx> values <bcp14>MAY</bcp14> be rejected with an "invalidProperties" SetError.</t>

<t>The <xref target="type-property">@type</xref> property value <bcp14>MUST</bcp14> be "WebDavMetadata".</t>

</section>
</section>
<section anchor="properties"><name>Properties</name>

<section anchor="common-metadata-properties"><name>Common Properties</name>

<section anchor="type-property"><name>@type</name>

<t>Type: <spanx style="verb">String</spanx> (mandatory)</t>

<t>This specifies the type that this object represents. The allowed value differs by object type and is defined in Sections <xref target="object-type-annotation"></xref>, <xref target="object-type-imap"></xref>, and <xref target="object-type-webdav"></xref>.</t>

</section>
<section anchor="id-property"><name>id</name>

<t>Type: <spanx style="verb">Id</spanx> (server-set)</t>

<t>The id of the Metadata object. This identifier is unique within the scope of the account and is assigned by the server upon creation.</t>

</section>
<section anchor="parent-type-property"><name>parentType</name>

<t>Type: <spanx style="verb">String</spanx> (mandatory)</t>

<t>The JMAP data type of the object to which this Metadata object is attached, e.g., "Email", "ContactCard", "Mailbox", "CalendarEvent". The <spanx style="verb">parentType</spanx> determines the kind of object identified by the <spanx style="verb">parentId</spanx> property.</t>

</section>
<section anchor="parent-id-property"><name>parentId</name>

<t>Type: <spanx style="verb">Id</spanx> (mandatory)</t>

<t>The id of the JMAP object to which this Metadata object is attached. This id <bcp14>MUST</bcp14> correspond to a valid object of the type specified in <spanx style="verb">parentType</spanx> within the same account.</t>

</section>
<section anchor="is-private-property"><name>isPrivate</name>

<t>Type: <spanx style="verb">Boolean</spanx> (default: false)</t>

<t>Indicates whether the Metadata object is private to the authenticated user or shared among all users with access to the parent object. If true, the Metadata object represents user-specific metadata that is visible only to the user who created it. If false or omitted, the Metadata object is considered shared and can be accessed by other users with appropriate permissions on the parent object, as defined in <xref target="access-control">Access Control</xref>.</t>

<t>The <spanx style="verb">isPrivate</spanx> property enables per-user metadata on shared objects. Multiple users may each have their own private Metadata objects associated with the same parent object and metadata type. When a client queries for Metadata objects with <spanx style="verb">isPrivate</spanx>: true, the server <bcp14>MUST</bcp14> return only those private Metadata objects that were created by the currently authenticated user. Private Metadata objects created by other users <bcp14>MUST NOT</bcp14> be visible to the authenticated user, even if they have access to the parent object.</t>

<t>Internally, the server may store multiple private Metadata objects for the same combination of <spanx style="verb">parentType</spanx>, <spanx style="verb">parentId</spanx>, and <spanx style="verb">@type</spanx> (one for each user who has set private metadata). However, from the perspective of any given authenticated user, there is at most one visible private Metadata object for each parent-type combination—specifically, the private Metadata object that they themselves created. Other users' private Metadata objects for the same parent object and type are not visible to them.</t>

<t>For shared Metadata objects (<spanx style="verb">isPrivate</spanx>: false), there is at most one Metadata object per combination of <spanx style="verb">parentType</spanx>, <spanx style="verb">parentId</spanx>, and <spanx style="verb">@type</spanx>, and it is visible to all users with appropriate permissions on the parent object.</t>

<t>For ImapMetadata objects, this property determines whether the metadata corresponds to IMAP entries under the "/private/" or "/shared/" prefix hierarchy.</t>

</section>
<section anchor="vendor-specific-properties"><name>Vendor-Specific Properties</name>

<t>Vendors <bcp14>MAY</bcp14> add additional properties to Metadata objects to support their custom features or requirements. To prevent naming conflicts, the names of vendor-specific properties <bcp14>MUST</bcp14> be prefixed by a domain name controlled by the vendor followed by a colon, e.g., <spanx style="verb">example.com:customField</spanx> or <spanx style="verb">vendor.org:internalState</spanx>. The use of domain name prefixes ensures global uniqueness and allows multiple vendors to extend the metadata schema without interference.</t>

<t>If the value of a vendor-specific property is itself a Metadata object (nested object), it either <bcp14>MUST</bcp14> include an <spanx style="verb">@type</spanx> property to identify its type, or the property definition <bcp14>MUST</bcp14> explicitly specify that a type designator is not required for that particular property. If a type is specified for a nested vendor-specific object, the type name <bcp14>MUST</bcp14> also be prefixed with a domain name controlled by the vendor, e.g., <spanx style="verb">example.com:CustomMetadataType</spanx>.</t>

<t>Vendors are strongly encouraged to register any new property values or extensions that are useful to other systems as well, rather than use a vendor-specific prefix. Registration with IANA or documentation in public specifications enhances interoperability and allows broader adoption of useful metadata extensions.</t>

<t>Server implementations <bcp14>MUST</bcp14> preserve vendor-specific properties that they do not recognize when updating Metadata objects, unless the update explicitly removes those properties. This ensures that metadata from one vendor's client is not inadvertently lost when another client (or the server itself) modifies other properties of the Metadata object.</t>

<t>Annotation type Metadata objects <bcp14>MUST</bcp14> allow vendor-specific properties to be added beyond the common properties defined above. This extensibility mechanism enables vendors and third-party applications to store custom metadata without requiring standardization of every use case.</t>

</section>
</section>
<section anchor="imapmetadata-properties"><name>ImapMetadata Properties</name>

<t>In addition to the common Metadata object properties (<xref target="common-metadata-properties"></xref>), an <spanx style="verb">ImapMetadata</spanx> object has the following properties:</t>

<section anchor="metadata-property-imap"><name>metadata</name>

<t>Type: <spanx style="verb">[String]String</spanx> (default: {})</t>

<t>The IMAP METADATA extension <xref target="RFC5464"/> defines a mechanism for clients to store and retrieve arbitrary key-value metadata associated with IMAP mailboxes. Metadata entries are organized in a hierarchical namespace with two top-level prefixes: "/private/" for per-user private metadata and "/shared/" for metadata shared among all users with access to the mailbox.</t>

<t>This property contains the key-value pairs of IMAP metadata entries associated with the mailbox. The keys in this map represent IMAP metadata entry names with the "/private/" or "/shared/" prefix removed. The values are the corresponding metadata values as strings. The interpretation of keys depends on the value of the <spanx style="verb">isPrivate</spanx> property:</t>

<t><list style="symbols">
  <t>If <spanx style="verb">isPrivate</spanx> is true, the keys represent metadata entries under the "/private/" prefix. For example, a key "comment" with value "Important mailbox" corresponds to the IMAP metadata entry "/private/comment" with that value. A key "vendor/example.com/setting" would correspond to "/private/vendor/example.com/setting".</t>
  <t>If <spanx style="verb">isPrivate</spanx> is false, the keys represent metadata entries under the "/shared/" prefix. A key "comment" with value "Team mailbox" would correspond to "/shared/comment". For example, if an ImapMetadata object has <spanx style="verb">isPrivate</spanx> set to true and the metadata property contains <spanx style="verb">{"comment": "My notes", "vendor/acme.example/color": "blue"}</spanx>, this represents IMAP metadata entries "/private/comment" with value "My notes" and "/private/vendor/acme.example/color" with value "blue".</t>
</list></t>

<t>Servers <bcp14>MUST</bcp14> ensure that the IMAP metadata namespace conventions are preserved. When retrieving IMAP metadata, servers <bcp14>SHOULD</bcp14> strip the "/private/" or "/shared/" prefix based on the <spanx style="verb">isPrivate</spanx> property value. When setting IMAP metadata through this interface, servers <bcp14>MUST</bcp14> prepend the appropriate prefix before storing the entry in the IMAP metadata store.</t>

<t>Empty string values are permitted and represent IMAP metadata entries that exist but have no value. To delete an IMAP metadata entry through this interface, clients should remove the corresponding key from the metadata map entirely.</t>

</section>
</section>
<section anchor="webdavmetadata-properties"><name>WebDavMetadata Properties</name>

<t>In addition to the common Metadata object properties (<xref target="common-metadata-properties"></xref>), an <spanx style="verb">WebDavMetadata</spanx> object has the following properties:</t>

<section anchor="metadata-property-webdav"><name>metadata</name>

<t>Type: <spanx style="verb">[String]String</spanx> (default: {})</t>

<t>WebDAV <xref target="RFC4918"/> defines "dead properties" as arbitrary properties set by clients on WebDAV resources. Unlike "live properties" which have their semantics enforced by the server, dead properties are stored and returned verbatim without server interpretation. Dead properties are identified by XML expanded names, which consist of a namespace URI and a local name.</t>

<t>This property contains the key-value pairs of WebDAV dead properties associated with the resource. The keys <bcp14>MUST</bcp14> be in the expanded-name format: "{namespace-uri}localname". For example, a property with namespace URI "http://example.com/ns" and local name "priority" would be represented as the key "{http://example.com/ns}priority".</t>

<t>The values are the string representations of the dead properties. For properties that contain simple text content, the value is that text content. For properties that contain complex XML structure or content that cannot be directly represented as a simple string, the value <bcp14>MUST</bcp14> be the serialized XML representation of the property's content. The serialization <bcp14>SHOULD</bcp14> preserve the XML structure including elements, attributes, and namespaces, but typically excludes the outer property element itself (since the property name is already represented in the key).</t>

<t>For example, a WebDavMetadata object might have a metadata property containing:</t>

<figure><sourcecode type="json"><![CDATA[
{
  "{http://example.com/ns}priority": "high",
  "{http://example.com/ns}reviewedBy": "alice@example.com",
  "{DAV:}displayname": "Project Documents",
  "{http://example.com/ns}complexdata": 
     "<item><name>Test</name><value>123</value></item>"
}
]]></sourcecode></figure>

<t>This represents four WebDAV dead properties: three with simple text content and one with XML structure serialized as a string.</t>

<t>Servers <bcp14>MUST</bcp14> preserve the namespace and local name structure of WebDAV properties. When synchronizing between JMAP and WebDAV interfaces, servers <bcp14>MUST</bcp14> maintain consistency such that setting a property through one interface makes it visible through the other interface (subject to server support for write operations).</t>

<t>The XML serialization format allows round-tripping of complex WebDAV properties through the JMAP interface. Clients that need to work with structured WebDAV properties can parse the XML string values to access the internal structure.</t>

</section>
</section>
</section>
</section>
<section anchor="metadata-methods"><name>Metadata Methods</name>

<section anchor="metadataset"><name>Metadata/set</name>

<t>This is a standard "/set" method as described in <xref section="5.2" sectionFormat="of" target="RFC8620"/>.</t>

<t>The Metadata/set method enforces a uniqueness constraint to ensure consistent metadata management. From the perspective of an authenticated user, their account <bcp14>MUST NOT</bcp14> contain multiple visible Metadata objects with the same combination of <spanx style="verb">parentType</spanx>, <spanx style="verb">parentId</spanx>, <spanx style="verb">@type</spanx>, and <spanx style="verb">isPrivate</spanx> values. This constraint ensures that for any given parent object and metadata type, the user sees at most one private Metadata object (their own) and at most one shared Metadata object.</t>

<t>For shared metadata (<spanx style="verb">isPrivate</spanx>: false), the server <bcp14>MUST</bcp14> enforce global uniqueness: only one shared Metadata object may exist for each combination of <spanx style="verb">parentType</spanx>, <spanx style="verb">parentId</spanx>, and <spanx style="verb">@type</spanx> across all users.</t>

<t>For private metadata (<spanx style="verb">isPrivate</spanx>: true), the server <bcp14>MUST</bcp14> enforce per-user uniqueness: each user may have at most one private Metadata object for each combination of <spanx style="verb">parentType</spanx>, <spanx style="verb">parentId</spanx>, and <spanx style="verb">@type</spanx>. The server internally may store multiple private Metadata objects for the same parent-type combination (one per user), but each user can only see and modify their own.</t>

<t>If a client attempts to create a Metadata object that would violate this uniqueness constraint for the authenticated user, the server <bcp14>MUST</bcp14> reject the create operation with an "invalidProperties" SetError. The SetError <bcp14>SHOULD</bcp14> include a description indicating that a Metadata object with the specified combination of properties already exists. Clients that wish to modify existing metadata should use the update operation rather than attempting to create a duplicate.</t>

<t>Similarly, if an update operation would change the <spanx style="verb">parentType</spanx>, <spanx style="verb">parentId</spanx>, <spanx style="verb">@type</spanx>, or <spanx style="verb">isPrivate</spanx> properties such that the resulting Metadata object would conflict with an existing object visible to the authenticated user, the server <bcp14>MUST</bcp14> reject the update with an "invalidProperties" SetError.</t>

<t>If the maySetPrivate capability is false for the account and a client attempts to create or update a Metadata object with <spanx style="verb">isPrivate</spanx>: true, the server <bcp14>MUST</bcp14> reject the operation with a "forbidden" SetError.</t>

<t>Servers <bcp14>SHOULD</bcp14> enforce quota limits when processing Metadata/set requests. If a create or update operation would cause the account's metadata storage to exceed its quota, the server <bcp14>MUST</bcp14> reject the operation with an "overQuota" SetError. The SetError <bcp14>MAY</bcp14> include additional information about the quota limit and current usage in its description property. Quota enforcement is discussed further in <xref target="quota"></xref>.</t>

<t>Servers <bcp14>MUST</bcp14> validate that the <spanx style="verb">parentType</spanx> and <spanx style="verb">parentId</spanx> values reference a valid existing object of the appropriate type. If the parent object does not exist or the <spanx style="verb">parentType</spanx> is not recognized, the server <bcp14>SHOULD</bcp14> reject the operation with an "invalidProperties" SetError, with the "properties" field including "<spanx style="verb">parentType</spanx>" and/or "<spanx style="verb">parentId</spanx>" as appropriate.</t>

<t>For ImapMetadata objects, servers <bcp14>MUST</bcp14> verify that the <spanx style="verb">parentType</spanx> is "Mailbox" (<xref section="2" sectionFormat="of" target="RFC8621"/>). For WebDavMetadata objects, servers <bcp14>MUST</bcp14> verify that the <spanx style="verb">parentType</spanx> is one of the supported WebDAV-backed types (Calendar <xref target="I-D.ietf-jmap-calendars"/>, CalendarEvent <xref target="I-D.ietf-jmap-calendars"/>, AddressBook <xref target="RFC9610"/>, ContactCard <xref target="RFC9610"/>, FileNode <xref target="I-D.ietf-jmap-filenode"/>, or other appropriate types as defined by the server).</t>

</section>
<section anchor="metadataget"><name>Metadata/get</name>

<t>This is a standard "/get" method as described in <xref section="5.1" sectionFormat="of" target="RFC8620"/>. The "ids" argument <bcp14>MAY</bcp14> be null to fetch all Metadata objects in the account at once.</t>

</section>
<section anchor="metadatachanges"><name>Metadata/changes</name>

<t>This is a standard "/changes" method as described in <xref section="5.2" sectionFormat="of" target="RFC8620"/>.</t>

</section>
<section anchor="metadataquery"><name>Metadata/query</name>

<t>This is a standard "/query" method as described in <xref section="5.5" sectionFormat="of" target="RFC8620"/>.</t>

<section anchor="filtering"><name>Filtering</name>

<t>A <strong>FilterCondition</strong> object has the following properties, any of which may be omitted:</t>

<dl newline="true">
  <dt><strong>@type</strong>: <spanx style="verb">String[]</spanx></dt>
  <dd>
    <t>Only Metadata objects whose <spanx style="verb">@type</spanx> property value is in the specified array are returned. This allows filtering for specific metadata types, for example, to retrieve only Annotation objects or only ImapMetadata objects.</t>
  </dd>
  <dt><strong>parentType</strong>: <spanx style="verb">String</spanx></dt>
  <dd>
    <t>Only Metadata objects whose <spanx style="verb">parentType</spanx> is equal to the specified value are returned. This is useful for retrieving metadata associated with a particular JMAP data type, such as all metadata on Email objects.</t>
  </dd>
  <dt><strong>parentIds</strong>: <spanx style="verb">Id[]</spanx></dt>
  <dd>
    <t>Only Metadata objects whose <spanx style="verb">parentId</spanx> is in the specified array are returned. This allows retrieving metadata for a specific set of parent objects.</t>
  </dd>
  <dt><strong>isPrivate</strong>: <spanx style="verb">Boolean</spanx></dt>
  <dd>
    <t>Only Metadata objects whose <spanx style="verb">isPrivate</spanx> property matches the specified value are returned. This allows filtering to retrieve only private metadata (true) or only shared metadata (false).</t>
  </dd>
  <dt><strong>textMatch</strong>: <spanx style="verb">String</spanx></dt>
  <dd>
    <t>Only Metadata objects whose vendor-specific string properties contain the specified text are returned. The match <bcp14>SHOULD</bcp14> be case-insensitive and <bcp14>SHOULD</bcp14> look for the text anywhere within the property values. Servers <bcp14>MAY</bcp14> extend this to match against standard properties as well, but <bcp14>MUST</bcp14> at minimum search vendor-specific properties. The exact matching algorithm is implementation-defined, but servers <bcp14>SHOULD</bcp14> document their behavior for this filter.</t>
  </dd>
</dl>

</section>
<section anchor="sorting"><name>Sorting</name>

<t>The following properties <bcp14>SHOULD</bcp14> be supported for sorting:</t>

<t><list style="symbols">
  <t>@type</t>
  <t>parentType</t>
  <t>parentId</t>
  <t>isPrivate</t>
</list></t>

</section>
</section>
<section anchor="metadataquerychanges"><name>Metadata/queryChanges</name>

<t>This is a standard "/queryChanges" method as described in <xref section="5.6" sectionFormat="of" target="RFC8620"/>.</t>

</section>
</section>
<section anchor="standard-method-extensions"><name>Standard Method Extensions</name>

<t>This specification extends the standard JMAP methods for existing data types to support metadata operations. These extensions allow clients to retrieve and manage metadata alongside the primary data objects in a unified, efficient manner.</t>

<section anchor="extended-get"><name>/get</name>

<t>This extension enhances the standard "/get" method defined in <xref section="5.1" sectionFormat="of" target="RFC8620"/> for all JMAP data types specified in the dataTypes capability. The extension adds metadata retrieval capabilities to any supported data type's /get method (e.g., Email/get, Mailbox/get, Contact/get).</t>

<t>The following additional arguments are defined for the extended /get method:</t>

<dl>
  <dt><strong>metadataTypes</strong>: <spanx style="verb">String[]|null</spanx> (default: [])</dt>
  <dd>
    <t>A list of metadata object type identifiers (<spanx style="verb">@type</spanx> values) to retrieve for the requested objects. If not provided or an empty array is provided, no metadata is returned. If null is specified, all metadata is returned. If one or more type identifiers are specified, the server returns metadata objects of those types associated with the requested objects. Servers <bcp14>MUST</bcp14> support this argument for all data types listed in the dataTypes capability.</t>
  </dd>
  <dt><strong>metadataProperties</strong>: <spanx style="verb">String[]|null</spanx> (default: null)</dt>
  <dd>
    <t>A list of metadata property names to include in the returned metadata objects. If null, all properties of the metadata objects are returned. If specified, only the requested properties are included in the response. The <spanx style="verb">@type</spanx> and <spanx style="verb">parentId</spanx> properties <bcp14>MUST</bcp14> always be included in metadata objects even if not explicitly requested, as they are necessary to correlate metadata with their parent objects and identify the metadata type. This argument follows the same semantics as the properties argument in the standard /get method. Servers <bcp14>MUST</bcp14> support this argument for all data types listed in the dataTypes capability.</t>
  </dd>
</dl>

<t>The response to an extended /get method includes the following additional property:</t>

<dl newline="true">
  <dt><strong>metadata</strong>: <spanx style="verb">Metadata[]</spanx> (default: [])</dt>
  <dd>
    <t>An array of Metadata objects associated with the objects returned in the list property. The metadata array contains only those metadata objects whose <spanx style="verb">parentId</spanx> corresponds to an object id in the list response and whose <spanx style="verb">@type</spanx> matches one of the types specified in the metadataTypes request argument. If metadataTypes was null or empty, this property is an empty array or may be omitted. The <spanx style="verb">parentId</spanx> property of each metadata object allows clients to correlate metadata with their parent objects.</t>
  </dd>
</dl>

<t>If a requested parent object does not have any metadata of the specified types, it simply will not have corresponding entries in the metadata array.</t>

</section>
<section anchor="extended-set"><name>/set</name>

<t>This specification extends the standard "/set" method defined in <xref section="5.3" sectionFormat="of" target="RFC8620"/> for all JMAP data types to ensure proper metadata lifecycle management.</t>

<t>When an object is destroyed through a /set method (e.g., Email/set with a destroy operation), the server <bcp14>MUST</bcp14> automatically delete all associated Metadata objects. This includes both private and shared metadata, regardless of which user created them. This cascading deletion ensures that metadata does not become orphaned when its parent object is removed.</t>

<t>The automatic deletion of metadata applies to all metadata types (Annotation, ImapMetadata, WebDavMetadata, and any other registered metadata types) associated with the destroyed object.</t>

<t>Servers <bcp14>SHOULD NOT</bcp14> generate separate Metadata/set responses or state changes for automatically deleted metadata. The deletion is considered an implicit consequence of destroying the parent object. However, servers <bcp14>MAY</bcp14> emit push notifications or update metadata state strings to reflect that metadata has been deleted, if such notifications would otherwise occur for explicitly deleted metadata.</t>

<t>Clients do not need to manually delete metadata before destroying parent objects, and attempting to do so would be inefficient. The server handles metadata cleanup automatically.</t>

<t>If an error occurs during parent object deletion that prevents the destruction from completing, the associated metadata <bcp14>MUST NOT</bcp14> be deleted either, maintaining referential integrity.</t>

</section>
</section>
<section anchor="access-control"><name>Access Control</name>

<t>Access control for Metadata objects is determined by the <spanx style="verb">isPrivate</spanx> property and the permissions on the parent object. This model ensures that metadata access aligns with the access control of the objects being annotated.</t>

<t>For private Metadata objects (<spanx style="verb">isPrivate</spanx>: true), only the authenticated user who created the Metadata object can read or modify it. Private metadata is isolated to the creating user and is not visible to other users regardless of their permissions on the parent object. This allows users to maintain personal annotations on shared objects without exposing them to collaborators or other users with shared access.</t>

<t>When processing Metadata/get or Metadata/query requests, the server <bcp14>MUST</bcp14> filter private Metadata objects to return only those created by the currently authenticated user. Private Metadata objects created by other users <bcp14>MUST NOT</bcp14> be included in the response, even if those other users have access to the same parent objects.</t>

<t>When processing Metadata/set requests for private Metadata objects, the server <bcp14>MUST</bcp14> verify that the user has appropriate access to the parent object (at minimum, read access to create private annotations on it). However, the user does not need write access to the parent object to create or modify their own private metadata about it.</t>

<t>For shared Metadata objects (<spanx style="verb">isPrivate</spanx>: false), access is governed by the permissions of the parent object. Users who have permission to read the parent object can also read shared Metadata objects associated with it. Users who have permission to modify the parent object can also modify shared Metadata objects associated with it.</t>

<t>For shareable JMAP object types as defined in <xref section="4" sectionFormat="of" target="RFC9670"/> and type-specific specifications, the server <bcp14>MUST</bcp14> enforce access control based on the mayRead and mayWrite properties (or equivalent permission indicators) of the parent object when processing Metadata/get and Metadata/set requests on shared Metadata objects.</t>

<t>Specifically:</t>

<t><list style="symbols">
  <t>A Metadata/get request for a shared Metadata object <bcp14>MUST</bcp14> only succeed if the requesting user has read permission (mayRead: true or equivalent) on the parent object.</t>
  <t>A Metadata/set request that creates or updates a shared Metadata object <bcp14>MUST</bcp14> only succeed if the requesting user has write permission (mayWrite: true or equivalent) on the parent object.</t>
  <t>A Metadata/set request that destroys a shared Metadata object <bcp14>MUST</bcp14> only succeed if the requesting user has write permission on the parent object (some servers may require additional permissions for deletion).</t>
  <t>For private Metadata objects, the server <bcp14>MUST</bcp14> verify that the requesting user has at least read access to the parent object before allowing creation, and that the user is the creator of the private Metadata object before allowing updates or deletion.</t>
</list></t>

<t>If a user attempts to access a Metadata object but lacks the necessary permissions, the server <bcp14>MUST</bcp14> reject the request with a "forbidden" error at the method level, or include a "forbidden" SetError in the notCreated/notUpdated/notDestroyed response for the specific object in Metadata/set operations.</t>

<t>If the maySetPrivate capability is false and a user attempts to create a private Metadata object, the server <bcp14>MUST</bcp14> reject the request with a "forbidden" SetError, regardless of their permissions on the parent object.</t>

<t>Servers <bcp14>SHOULD</bcp14> enforce these access control rules consistently across all Metadata operations. When a user's permissions on a parent object change (for example, when sharing is revoked), the visibility of shared Metadata objects associated with that parent <bcp14>MUST</bcp14> change accordingly. Private Metadata objects remain accessible only to their creator regardless of permission changes on the parent object.</t>

<t>It is <bcp14>RECOMMENDED</bcp14> that servers provide clear error messages when access is denied, indicating whether the issue is lack of permission on the parent object, attempting to access another user's private metadata, or lack of permission to create private metadata in the account.</t>

</section>
<section anchor="quota"><name>Quota</name>

<t>Servers <bcp14>SHOULD</bcp14> enforce quota limits on the total storage consumed by Metadata objects within a JMAP account. Unbounded metadata storage could lead to resource exhaustion and denial of service conditions. Quota enforcement ensures fair resource allocation among users and protects server resources.</t>

<t>Servers that support the JMAP Quotas extension <xref target="RFC9425"/> <bcp14>SHOULD</bcp14> integrate metadata storage into the quota framework defined in that specification, allowing clients to query current metadata quota usage and limits through the standard Quota API. Servers that do not support <xref target="RFC9425"/> <bcp14>SHOULD</bcp14> still enforce implementation-defined limits on metadata storage and reject operations that would exceed those limits with an "overQuota" SetError.</t>

<t>The method for calculating the size of a Metadata object is implementation-specific, as different server architectures may have different storage characteristics. However, the following approach is <bcp14>RECOMMENDED</bcp14> for consistency and predictability:</t>

<t>Calculate the size of a Metadata object as the size of its CBOR <xref target="RFC8949"/> serialized representation in bytes. CBOR provides a compact binary encoding of structured data similar to JSON, and using CBOR size as the quota metric provides a consistent measure that is independent of the server's internal storage format. This approach accounts for all property names and values, including vendor-specific properties, in a standardized way.</t>

<t>When a Metadata/set operation would cause the account to exceed its metadata quota, the server <bcp14>MUST</bcp14> reject the operation with an "overQuota" SetError. The SetError <bcp14>SHOULD</bcp14> include a descriptive message indicating that the metadata quota has been exceeded. Servers <bcp14>MAY</bcp14> include additional information in the description, such as the current quota usage, the quota limit, and the size of the rejected operation.</t>

<t>Quota enforcement applies to both create and update operations. Creating a new Metadata object consumes quota, and updating an existing object may increase quota usage if the update adds or enlarges properties. Destroying a Metadata object <bcp14>MUST</bcp14> free the quota consumed by that object.</t>

</section>
<section anchor="examples"><name>Examples</name>

<t>This section provides practical examples demonstrating common metadata management scenarios.</t>

<section anchor="creating-a-mailbox-with-annotation"><name>Creating a Mailbox with Annotation</name>

<t>This example shows how to create a new JMAP Mailbox and associate an Annotation object with vendor-specific properties in a single request.</t>

<figure><sourcecode type="json"><![CDATA[
[
  ["Mailbox/set", {
    "accountId": "A12345",
    "create": {
      "new-mailbox": {
        "name": "Project Alpha",
        "parentId": null,
        "role": null
      }
    }
  }, "c1"],
  ["Metadata/set", {
    "accountId": "A12345",
    "create": {
      "new-metadata": {
        "@type": "Annotation",
        "parentType": "Mailbox",
        "parentId": "#new-mailbox",
        "isPrivate": true,
        "acme.example.com:color": "blue",
        "acme.example.com:priority": "high",
        "acme.example.com:project": {
          "@type": "acme.example.com:ProjectInfo",
          "projectId": "ALPHA-2024",
          "deadline": "2024-12-31",
          "team": "Engineering"
        }
      }
    }
  }, "c2"]
]
]]></sourcecode></figure>

</section>
<section anchor="retrieving-a-mailbox-with-metadata"><name>Retrieving a Mailbox with Metadata</name>

<t>This example shows how to retrieve the created mailbox along with its associated Annotation metadata in a single request using the extended /get method:</t>

<t>Request:</t>

<figure><sourcecode type="json"><![CDATA[
[
  ["Mailbox/get", {
    "accountId": "A12345",
    "ids": ["MB789"],
    "properties": ["name", "parentId", "role"],
    "metadataTypes": ["Annotation"],
    "metadataProperties": ["acme.example.com:color", 
                           "acme.example.com:priority"]
  }, "c3"]
]
]]></sourcecode></figure>

<t>Response:</t>

<figure><sourcecode type="json"><![CDATA[
[
  ["Mailbox/get", {
    "accountId": "A12345",
    "state": "m101",
    "list": [
      {
        "id": "MB789",
        "name": "Project Alpha",
        "parentId": null,
        "role": null
      }
    ],
    "metadata": [
      {
        "parentId": "MB789",
        "@type": "Annotation",
        "acme.example.com:color": "blue",
        "acme.example.com:priority": "high"
      }
    ],
    "notFound": []
  }, "c3"]
]
]]></sourcecode></figure>

</section>
<section anchor="attaching-photography-metadata-to-a-filenode"><name>Attaching Photography Metadata to a FileNode</name>

<t>This example demonstrates using a <em>fictional</em> registered PhotoMetadata type to attach photography information to FileNode <xref target="I-D.ietf-jmap-filenode"/> objects. The PhotoMetadata type is assumed to be an IANA-registered metadata type specifically designed for photographic data.</t>

<t>Request:</t>

<figure><sourcecode type="json"><![CDATA[
[
  ["FileNode/set", {
    "accountId": "A12345",
    "update": {
      "F456": {
        "name": "lake-island.jpg"
      }
    }
  }, "c1"],
  ["Metadata/set", {
    "accountId": "A12345",
    "create": {
      "photo-meta": {
        "@type": "PhotoMetadata",
        "parentType": "FileNode",
        "parentId": "F456",
        "isPrivate": false,
        "geoLocation": {
          "latitude": 46.362,
          "longitude": 14.090
        },
        "cameraMake": "Canon",
        "cameraModel": "EOS R5",
        "aperture": "f/2.8",
        "shutterSpeed": "1/250",
        "iso": 400,
        "focalLength": "50mm",
        "dateTaken": "2023-10-01T01:14:00Z",
        "imageSize": {
          "width": 6000,
          "height": 4000
        }
      }
    }
  }, "c2"]
]
]]></sourcecode></figure>

</section>
<section anchor="retrieving-a-filenode-with-photography-metadata"><name>Retrieving a FileNode with Photography Metadata</name>

<t>Request:</t>

<figure><sourcecode type="json"><![CDATA[
[
  ["FileNode/get", {
    "accountId": "A12345",
    "ids": ["F456"],
    "metadataTypes": ["PhotoMetadata"],
    "metadataProperties": null
  }, "c3"]
]
]]></sourcecode></figure>

<t>Response:</t>

<figure><sourcecode type="json"><![CDATA[
[
  ["FileNode/get", {
    "accountId": "A12345",
    "state": "f201",
    "list": [
      {
        "id": "F456",
        "name": "lake-island.jpg",
        "type": "image/jpeg",
        "size": 2458624,
        "blobId": "Gabc123def456",
        "parentId": "folder789",
        "createdDate": "2024-07-15T20:00:00Z",
        "modifiedDate": "2024-10-20T15:30:00Z"
      }
    ],
    "metadata": [
      {
        "id": "photometa99",
        "@type": "PhotoMetadata",
        "parentId": "F456",
        "geoLocation": {
          "latitude": 46.362,
          "longitude": 14.090
        },
        "cameraMake": "Canon",
        "cameraModel": "EOS R5",
        "aperture": "f/2.8",
        "shutterSpeed": "1/250",
        "iso": 400,
        "focalLength": "50mm",
        "dateTaken": "2023-10-01T01:14:00Z",
        "imageSize": {
          "width": 6000,
          "height": 4000
        }
      }
    ],
    "notFound": []
  }, "c3"]
]
]]></sourcecode></figure>

</section>
</section>
<section anchor="security-considerations"><name>Security considerations</name>

<t>The metadata management capabilities defined in this specification introduce several security considerations that implementers and deployers must address to protect user data and prevent abuse.</t>

<section anchor="metadata-confidentiality"><name>Metadata Confidentiality</name>

<t>Metadata objects may contain sensitive information, including personal notes, workflow states, application-specific data, and other user-generated content. Servers <bcp14>MUST</bcp14> enforce the access control mechanisms defined in <xref target="access-control">Access Control</xref> to prevent unauthorized disclosure of metadata.</t>

<t>Private metadata (<spanx style="verb">isPrivate</spanx>: true) contains information intended only for the authenticated user who created it. Servers <bcp14>MUST</bcp14> ensure that private metadata is never exposed to other users through any interface, including JMAP, IMAP, WebDAV, or any other supported protocols. Each user's private metadata must remain isolated from all other users, even those who have full access to the parent object.</t>

<t>The per-user nature of private metadata introduces important implementation considerations. Since multiple users may each have their own private Metadata objects for the same parent object and metadata type, servers must carefully track which user created each private Metadata object. When processing queries or retrieval requests, servers <bcp14>MUST</bcp14> filter results to include only the private metadata belonging to the currently authenticated user. Failure to properly implement this filtering could result in serious privacy breaches where one user's private notes or annotations are exposed to other users.</t>

<t>Shared metadata visibility is tied to the permissions of the parent object. Servers <bcp14>MUST</bcp14> consistently enforce these permissions across all access methods. When sharing permissions on a parent object change, the visibility of associated shared metadata <bcp14>MUST</bcp14> change accordingly. Servers should be cautious about caching metadata in ways that could bypass updated permission checks.</t>

<t>For servers that bridge JMAP metadata to IMAP METADATA or WebDAV properties, special care must be taken to ensure that the visibility and access control semantics are correctly mapped between protocols. IMAP private metadata (entries under "/private/") must map to JMAP private metadata for the authenticated user. Access control on WebDAV properties must align with JMAP shared metadata permissions. Servers must ensure that the per-user isolation model is maintained when metadata is accessed through different protocol interfaces.</t>

</section>
<section anchor="user-identity-and-authentication"><name>User Identity and Authentication</name>

<t>The private metadata model relies critically on accurate user authentication and identity management. Servers <bcp14>MUST</bcp14>:</t>

<t><list style="symbols">
  <t>Reliably identify the authenticated user for all metadata operations</t>
  <t>Maintain accurate association between private Metadata objects and their creating users</t>
  <t>Prevent authentication bypass or identity spoofing that could allow access to other users' private metadata</t>
  <t>Handle account delegation or administrative access carefully to ensure private metadata is not inadvertently exposed (administrators accessing an account on behalf of a user should not see other users' private metadata on shared objects)</t>
</list></t>

<t>Servers that support account delegation, impersonation, or administrative access features must carefully consider whether delegated access should include visibility into the account owner's private metadata, and should provide controls to limit such access when appropriate.</t>

</section>
<section anchor="injection-attacks-through-vendor-specific-properties"><name>Injection Attacks Through Vendor-Specific Properties</name>

<t>The extensibility mechanism that allows vendor-specific properties introduces potential security risks if not properly handled. Malicious clients could attempt to inject harmful content through vendor-specific properties, including:</t>

<t><list style="symbols">
  <t>Script injection: Embedding executable code in metadata properties that might be rendered in a web context without proper sanitization</t>
  <t>XML/JSON injection: Crafting property values that could break parsing or processing logic</t>
  <t>Path traversal: Using specially crafted property names to attempt unauthorized file system access</t>
  <t>SQL injection: If metadata is stored in SQL databases, unsanitized property values could lead to SQL injection vulnerabilities</t>
</list></t>

<t>Servers <bcp14>MUST</bcp14> treat all vendor-specific property values as untrusted user input. When storing, processing, or displaying metadata, servers and clients <bcp14>MUST</bcp14>:</t>

<t><list style="symbols">
  <t>Validate property names conform to the specified format (domain-name prefix followed by colon and property name)</t>
  <t>Sanitize property values before use in any context where interpretation could occur (HTML rendering, script execution, database queries, etc.)</t>
  <t>Apply appropriate output encoding when displaying metadata to users</t>
  <t>Enforce length limits on property names and values to prevent resource exhaustion</t>
  <t>Reject or sanitize properties containing control characters or other potentially harmful content</t>
</list></t>

<t>For WebDavMetadata objects, special attention must be paid to the serialized XML content in property values. Servers <bcp14>MUST</bcp14>:</t>

<t><list style="symbols">
  <t>Validate that XML content is well-formed before storage</t>
  <t>Sanitize XML to remove potentially harmful constructs (scripts, entity expansions, external entity references)</t>
  <t>Apply appropriate XML entity encoding when processing or displaying the content</t>
  <t>Implement protections against XML external entity (XXE) attacks and XML bomb attacks</t>
</list></t>

<t>Clients that display metadata to users <bcp14>MUST</bcp14> treat metadata content as untrusted and apply appropriate security measures, such as Content Security Policy restrictions, HTML sanitization, and context-appropriate escaping.</t>

</section>
<section anchor="resource-exhaustion-and-denial-of-service"><name>Resource Exhaustion and Denial of Service</name>

<t>Without proper controls, metadata management features could be abused to cause resource exhaustion or denial of service:</t>

<t><list style="symbols">
  <t>Storage exhaustion: Attackers could create excessive metadata to consume storage quota or server resources. The per-user private metadata model amplifies this risk since multiple users could each create private metadata on the same shared objects.</t>
  <t>Processing exhaustion: Complex nested vendor-specific properties or deeply nested object structures could consume excessive CPU or memory during processing</t>
  <t>Query complexity: Expensive metadata queries, particularly those involving private metadata filtering across many users, could strain server resources</t>
</list></t>

<t>Servers <bcp14>SHOULD</bcp14> implement the quota mechanisms described in <xref target="quota"></xref> to limit total metadata storage per account. Additionally, servers <bcp14>SHOULD</bcp14>:</t>

<t><list style="symbols">
  <t>Enforce the maxDepth limit on nested vendor-specific properties</t>
  <t>Implement timeouts for metadata operations to prevent long-running queries</t>
  <t>Apply rate limiting to metadata creation and modification operations</t>
  <t>Monitor for unusual patterns of metadata usage that might indicate abuse (e.g., one user creating private metadata on unusually large numbers of objects)</t>
  <t>Implement reasonable limits on the size of individual property values</t>
  <t>Consider implementing separate quota tracking for private vs. shared metadata to prevent abuse</t>
</list></t>

<t>Servers <bcp14>MAY</bcp14> reject metadata creation or updates that appear abusive, returning appropriate SetError responses.</t>

</section>
<section anchor="protocol-bridging-risks"><name>Protocol Bridging Risks</name>

<t>For servers that bridge JMAP metadata to IMAP METADATA or WebDAV properties, inconsistencies or vulnerabilities in the bridging logic could lead to security issues:</t>

<t><list style="symbols">
  <t>Permission bypass: Differences in permission models between protocols could be exploited to gain unauthorized access. For example, IMAP and WebDAV may have different concepts of private vs. shared metadata that must be carefully reconciled.</t>
  <t>Metadata corruption: Improper format conversion could corrupt metadata or enable injection attacks. Special care is needed when converting between JMAP's JSON representation, IMAP's string values, and WebDAV's XML properties.</t>
  <t>Information leakage: Protocol-specific metadata might inadvertently be exposed through the bridging mechanism. For instance, internal IMAP server entries or WebDAV live properties should not be exposed as JMAP metadata.</t>
  <t>Synchronization inconsistencies: Race conditions or improper locking when synchronizing metadata across protocol boundaries could lead to data corruption or access control violations.</t>
</list></t>

<t>Servers that implement protocol bridging <bcp14>MUST</bcp14> carefully validate the security properties of their bridging implementation and ensure that the most restrictive applicable access control is enforced. The per-user isolation model for private metadata must be maintained consistently across all protocol interfaces.</t>

<t>For read-only ImapMetadata and WebDavMetadata access, servers should clearly document this limitation to prevent client confusion and ensure that clients do not assume modification capabilities that are not actually available.</t>

</section>
<section anchor="server-vulnerabilities"><name>Server Vulnerabilities</name>

<t>Implementations must be robust against malformed requests and unexpected data. Servers <bcp14>MUST</bcp14>:</t>

<t><list style="symbols">
  <t>Validate all input according to the type specifications in this document</t>
  <t>Handle JSON/XML parsing errors gracefully without exposing server internals</t>
  <t>Protect against integer overflow, buffer overflow, and other common vulnerabilities when processing metadata</t>
  <t>Properly handle the per-user filtering of private metadata to prevent information leakage</t>
  <t>Implement proper database indexing and query optimization to handle private metadata filtering efficiently even with large numbers of users and objects</t>
  <t>Log security-relevant events (authentication failures, authorization failures, suspicious patterns, attempts to access other users' private metadata) for monitoring and incident response</t>
</list></t>

</section>
<section anchor="client-vulnerabilities"><name>Client Vulnerabilities</name>

<t>Clients that implement metadata management must also consider security:</t>

<t><list style="symbols">
  <t>Clients <bcp14>MUST</bcp14> validate server responses and handle unexpected or malformed data gracefully</t>
  <t>Clients <bcp14>SHOULD</bcp14> warn users before displaying potentially sensitive metadata, particularly when displaying shared metadata that might have been created by other users</t>
  <t>Clients <bcp14>MUST NOT</bcp14> execute or interpret metadata content as code unless the user explicitly requests it and appropriate sandboxing is in place</t>
  <t>Clients accessing metadata through web browsers should utilize security features such as Content Security Policy</t>
  <t>Clients should clearly distinguish between private and shared metadata in the user interface to prevent users from inadvertently sharing private information</t>
  <t>When parsing XML content from WebDavMetadata properties, clients must use secure XML parsers and disable dangerous features like external entity resolution</t>
</list></t>

</section>
</section>
<section anchor="iana-considerations"><name>IANA considerations</name>

<section anchor="jmap-capability-registration-for-metadata"><name>JMAP Capability Registration for "metadata"</name>

<t>IANA will register the "metadata" JMAP Capability as follows:</t>

<t><strong>Capability Name:</strong> urn:ietf:params:jmap:metadata<br />
<strong>Specification document:</strong> this document<br />
<strong>Intended use:</strong> common<br />
<strong>Change Controller:</strong> IETF<br />
<strong>Security and privacy considerations:</strong> this document, <xref target="security-considerations"></xref></t>

</section>
<section anchor="jmap-data-type-registration-for-metadata"><name>JMAP Data Type Registration for "Metadata"</name>

<t>IANA will register "Metadata" in the "JMAP Data Types" registry as follows:</t>

<t><strong>Type Name:</strong> Metadata<br />
<strong>Can reference blobs:</strong> no<br />
<strong>Can Use for State Change:</strong> yes<br />
<strong>Capability:</strong> urn:ietf:params:jmap:metadata<br />
<strong>Specification document:</strong> this document</t>

</section>
<section anchor="properties-registry"><name>Creation of the "JMAP Metadata Properties" Registry</name>

<t>IANA has created the "JMAP Metadata Properties" registry to allow interoperability of extensions to JMAP Metadata objects.</t>

<t>This registry follows the Expert Review process (<xref section="4.5" sectionFormat="comma" target="RFC8126"/>). If the "Intended Usage" field is common, sufficient documentation is required to enable interoperability. Preliminary community review for this registry is optional but strongly encouraged.</t>

<t>A registration can have an intended usage of common, reserved, or obsolete. IANA will list registrations with a common usage designation prominently and separately from those with other intended usage values.</t>

<t>A reserved registration reserves a property name without assigning semantics to avoid name collisions with future extensions or protocol use.</t>

<t>An obsolete registration denotes a property that is no longer expected to be added by up-to-date systems. A new property has probably been defined covering the obsolete property's semantics.</t>

<t>The JMAP Metadata property registration procedure is not a formal standards process but rather an administrative procedure intended to allow community comment and check it is coherent without excessive time delay. It is designed to encourage vendors to document and register new properties they add for use cases not covered by the original specification, leading to increased interoperability</t>

<section anchor="preliminary-community-review"><name>Preliminary Community Review</name>

<t>Notice of a potential new registration <bcp14>SHOULD</bcp14> be sent to the JMAP mailing list <eref target="mailto:jmap@ietf.org">jmap@ietf.org</eref> for review. This mailing list is appropriate to solicit community feedback on a proposed new property.</t>

<t>Property registrations must be marked with their intended use: "common", "reserved", or "obsolete".</t>

<t>The intent of the public posting to this list is to solicit comments and feedback on the choice of the property name, the unambiguity of the specification document, and a review of any interoperability or security considerations. The submitter may submit a revised registration proposal or abandon the registration completely at any time.</t>

</section>
<section anchor="change-procedures"><name>Change Procedures</name>

<t>Once a JMAP Metadata property has been published by IANA, the change controller may request a change to its definition. The same procedure that would be appropriate for the original registration request is used to process a change request.</t>

<t>JMAP Metadata property registrations may not be deleted; properties that are no longer believed appropriate for use can be declared obsolete by a change to their "intended usage" field; such properties will be clearly marked in the IANA registry.</t>

<t>Significant changes to a JMAP Metadata property's definition should be requested only when there are serious omissions or errors in the published specification, as such changes may cause interoperability issues. When review is required, a change request may be denied if it renders entities that were valid under the previous definition invalid under the new definition.</t>

<t>The owner of a JMAP Metadata property may pass responsibility to another person or agency by informing IANA; this can be done without discussion or review.</t>

</section>
<section anchor="jmap-metadata-properties-registry-template"><name>"JMAP Metadata Properties" Registry Template</name>

<dl newline="true">
  <dt><strong>Property Name</strong>:</dt>
  <dd>
    <t>This is the name of the property. The property name <bcp14>MUST NOT</bcp14> already be registered for any of the object types listed in the "Property Context" field of this registration. Other object types <bcp14>MAY</bcp14> already have registered a different property with the same name; however, the same name <bcp14>SHOULD</bcp14> only be used when the semantics are analogous.</t>
  </dd>
  <dt><strong>Property Type</strong>:</dt>
  <dd>
    <t>This is the type of this property, using type signatures, as specified in <xref target="type-property"></xref>. The property type <bcp14>MUST</bcp14> be registered in the "JMAP Metadata Types" registry.</t>
  </dd>
  <dt><strong>Property Context</strong>:</dt>
  <dd>
    <t>This is a comma-separated list of JMAP Metadata object types this property is allowed on.</t>
  </dd>
  <dt><strong>Reference or Description</strong>:</dt>
  <dd>
    <t>This is a brief description or RFC number and section reference where the property is specified (omitted for "reserved" property names).</t>
  </dd>
  <dt><strong>Intended Usage</strong>:</dt>
  <dd>
    <t>This may be "common", "reserved", or "obsolete".</t>
  </dd>
  <dt><strong>Change Controller</strong>:</dt>
  <dd>
    <t>This is who may request a change to this entry's definition (IETF for RFCs from the IETF stream).</t>
  </dd>
</dl>

</section>
<section anchor="submit-request-to-iana"><name>Submit Request to IANA</name>

<t>Registration requests can be sent to <eref target="mailto:iana@iana.org">iana@iana.org</eref>.</t>

</section>
<section anchor="designated-expert-review"><name>Designated Expert Review</name>

<t>The primary concern of the designated expert (DE) is preventing name collisions and encouraging the submitter to document security and privacy considerations. For a common-use registration, the DE is expected to confirm that suitable documentation, as described in <xref section="4.6" sectionFormat="of" target="RFC8126"/>, is available to ensure interoperability. That documentation will usually be in an RFC, but simple definitions are likely to use a web/wiki page, and if a sentence or two is deemed sufficient, it could be described in the registry itself. The DE should also verify that the property name does not conflict with work that is active or already published within the IETF. A published specification is not required for reserved or obsolete registrations.</t>

<t>The DE will either approve or deny the registration request and publish a notice of the decision to the JMAP WG mailing list or its successor, as well as inform IANA. A denial notice must be justified by an explanation, and, in the cases where it is possible, concrete suggestions on how the request can be modified so as to become acceptable should be provided.</t>

</section>
<section anchor="initial-contents-for-the-jmap-metadata-properties-registry"><name>Initial Contents for the "JMAP Metadata Properties" Registry</name>

<t>The following table lists the initial entries of the "JMAP Metadata Properties" registry. All properties are for common use. All RFC section references are for this document. The change controller for all these properties is "IETF".</t>

<texttable title="Initial Contents of the &quot;JMAP Metadata Properties&quot; Registry" anchor="tab-metadata-properties">
      <ttcol align='left'>Property Name</ttcol>
      <ttcol align='left'>Property Type</ttcol>
      <ttcol align='left'>Property Context</ttcol>
      <ttcol align='left'>Reference or Description</ttcol>
      <c>@type</c>
      <c>String</c>
      <c>Annotation, ImapMetadata, WebDavMetadata</c>
      <c><xref target="type-property"></xref></c>
      <c>id</c>
      <c>Id</c>
      <c>Annotation, ImapMetadata, WebDavMetadata</c>
      <c><xref target="id-property"></xref></c>
      <c>parentType</c>
      <c>String</c>
      <c>Annotation, ImapMetadata, WebDavMetadata</c>
      <c><xref target="parent-type-property"></xref></c>
      <c>parentId</c>
      <c>Id</c>
      <c>Annotation, ImapMetadata, WebDavMetadata</c>
      <c><xref target="parent-id-property"></xref></c>
      <c>isPrivate</c>
      <c>Boolean</c>
      <c>Annotation, ImapMetadata, WebDavMetadata</c>
      <c><xref target="is-private-property"></xref></c>
      <c>metadata</c>
      <c>[String]String</c>
      <c>ImapMetadata, WebDavMetadata</c>
      <c><xref target="metadata-property-imap"></xref>, <xref target="metadata-property-webdav"></xref></c>
</texttable>

</section>
</section>
<section anchor="creation-of-the-jmap-metadata-types-registry"><name>Creation of the "JMAP Metadata Types" Registry</name>

<t>IANA has created the "JMAP Metadata Types" registry to avoid name collisions and provide a complete reference for all metadata types used for JMAP Metadata property values. The registration process is the same as for the "JMAP Metadata Properties" registry, as defined in <xref target="properties-registry"></xref>.</t>

<section anchor="jmap-metadata-types-registry-template"><name>"JMAP Metadata Types" Registry Template</name>

<dl newline="true">
  <dt><strong>Type Name</strong>:</dt>
  <dd>
    <t>the name of the type</t>
  </dd>
  <dt><strong>Applicable Data Types</strong>:</dt>
  <dd>
    <t>a list of JMAP data type names that this metadata type can be associated with, or "any" if the metadata type can be associated with any JMAP data type</t>
  </dd>
  <dt><strong>Reference or Description</strong>:</dt>
  <dd>
    <t>a brief description or RFC number and section reference where the Type is specified (may be omitted for "reserved" type names)</t>
  </dd>
  <dt><strong>Intended Use</strong>:</dt>
  <dd>
    <t>common, reserved, or obsolete</t>
  </dd>
  <dt><strong>Change Controller</strong>:</dt>
  <dd>
    <t>who may request a change to this entry's definition (IETF for RFCs from the IETF stream)</t>
  </dd>
</dl>

</section>
<section anchor="initial-contents-for-the-jmap-metadata-types-registry"><name>Initial Contents for the "JMAP Metadata Types" Registry</name>

<t>The following table lists the initial entries of the JMAP Metadata Types registry. All properties are for common use. All RFC section references are for this document. The change controller for all these properties is "IETF".</t>

<texttable title="Initial Contents of the &quot;JMAP Metadata Types&quot; Registry" anchor="tab-metadata-types">
      <ttcol align='left'>Type Name</ttcol>
      <ttcol align='left'>Applicable Data Types</ttcol>
      <ttcol align='left'>Reference or Description</ttcol>
      <c>Annotation</c>
      <c>any</c>
      <c><xref target="object-type-annotation"></xref></c>
      <c>ImapMetadata</c>
      <c>Mailbox</c>
      <c><xref target="object-type-imap"></xref></c>
      <c>WebDavMetadata</c>
      <c>Calendar, CalendarEvent, AddressBook, ContactCard, FileNode</c>
      <c><xref target="object-type-webdav"></xref></c>
</texttable>

</section>
</section>
</section>


  </middle>

  <back>


<references title='References' anchor="sec-combined-references">

    <references title='Normative References' anchor="sec-normative-references">



<reference anchor="RFC8620">
  <front>
    <title>The JSON Meta Application Protocol (JMAP)</title>
    <author fullname="N. Jenkins" initials="N." surname="Jenkins"/>
    <author fullname="C. Newman" initials="C." surname="Newman"/>
    <date month="July" year="2019"/>
    <abstract>
      <t>This document specifies a protocol for clients to efficiently query, fetch, and modify JSON-based data objects, with support for push notification of changes and fast resynchronisation and for out-of- band binary data upload/download.</t>
    </abstract>
  </front>
  <seriesInfo name="RFC" value="8620"/>
  <seriesInfo name="DOI" value="10.17487/RFC8620"/>
</reference>

<reference anchor="RFC8126">
  <front>
    <title>Guidelines for Writing an IANA Considerations Section in RFCs</title>
    <author fullname="M. Cotton" initials="M." surname="Cotton"/>
    <author fullname="B. Leiba" initials="B." surname="Leiba"/>
    <author fullname="T. Narten" initials="T." surname="Narten"/>
    <date month="June" year="2017"/>
    <abstract>
      <t>Many protocols make use of points of extensibility that use constants to identify various protocol parameters. To ensure that the values in these fields do not have conflicting uses and to promote interoperability, their allocations are often coordinated by a central record keeper. For IETF protocols, that role is filled by the Internet Assigned Numbers Authority (IANA).</t>
      <t>To make assignments in a given registry prudently, guidance describing the conditions under which new values should be assigned, as well as when and how modifications to existing values can be made, is needed. This document defines a framework for the documentation of these guidelines by specification authors, in order to assure that the provided guidance for the IANA Considerations is clear and addresses the various issues that are likely in the operation of a registry.</t>
      <t>This is the third edition of this document; it obsoletes RFC 5226.</t>
    </abstract>
  </front>
  <seriesInfo name="BCP" value="26"/>
  <seriesInfo name="RFC" value="8126"/>
  <seriesInfo name="DOI" value="10.17487/RFC8126"/>
</reference>

<reference anchor="RFC5464">
  <front>
    <title>The IMAP METADATA Extension</title>
    <author fullname="C. Daboo" initials="C." surname="Daboo"/>
    <date month="February" year="2009"/>
    <abstract>
      <t>The METADATA extension to the Internet Message Access Protocol permits clients and servers to maintain "annotations" or "metadata" on IMAP servers. It is possible to have annotations on a per-mailbox basis or on the server as a whole. For example, this would allow comments about the purpose of a particular mailbox to be "attached" to that mailbox, or a "message of the day" containing server status information to be made available to anyone logging in to the server. [STANDARDS-TRACK]</t>
    </abstract>
  </front>
  <seriesInfo name="RFC" value="5464"/>
  <seriesInfo name="DOI" value="10.17487/RFC5464"/>
</reference>

<reference anchor="RFC4918">
  <front>
    <title>HTTP Extensions for Web Distributed Authoring and Versioning (WebDAV)</title>
    <author fullname="L. Dusseault" initials="L." role="editor" surname="Dusseault"/>
    <date month="June" year="2007"/>
    <abstract>
      <t>Web Distributed Authoring and Versioning (WebDAV) consists of a set of methods, headers, and content-types ancillary to HTTP/1.1 for the management of resource properties, creation and management of resource collections, URL namespace manipulation, and resource locking (collision avoidance).</t>
      <t>RFC 2518 was published in February 1999, and this specification obsoletes RFC 2518 with minor revisions mostly due to interoperability experience. [STANDARDS-TRACK]</t>
    </abstract>
  </front>
  <seriesInfo name="RFC" value="4918"/>
  <seriesInfo name="DOI" value="10.17487/RFC4918"/>
</reference>

<reference anchor="RFC9670">
  <front>
    <title>JSON Meta Application Protocol (JMAP) Sharing</title>
    <author fullname="N. Jenkins" initials="N." role="editor" surname="Jenkins"/>
    <date month="November" year="2024"/>
    <abstract>
      <t>This document specifies a data model for sharing data between users using the JSON Meta Application Protocol (JMAP). Future documents can reference this document when defining data types to support a consistent model of sharing.</t>
    </abstract>
  </front>
  <seriesInfo name="RFC" value="9670"/>
  <seriesInfo name="DOI" value="10.17487/RFC9670"/>
</reference>

<reference anchor="RFC9610">
  <front>
    <title>JSON Meta Application Protocol (JMAP) for Contacts</title>
    <author fullname="N. Jenkins" initials="N." role="editor" surname="Jenkins"/>
    <date month="December" year="2024"/>
    <abstract>
      <t>This document specifies a data model for synchronising contact data with a server using the JSON Meta Application Protocol (JMAP).</t>
    </abstract>
  </front>
  <seriesInfo name="RFC" value="9610"/>
  <seriesInfo name="DOI" value="10.17487/RFC9610"/>
</reference>


<reference anchor="I-D.ietf-jmap-filenode">
   <front>
      <title>JMAP File Storage extension</title>
      <author fullname="Bron Gondwana" initials="B." surname="Gondwana">
         <organization>Fastmail</organization>
      </author>
      <date day="17" month="October" year="2025"/>
      <abstract>
	 <t>   The JMAP base protocol (RFC8620) provides the ability to upload and
   download arbitrary binary data.  This binary data is called a &quot;blob&quot;,
   and can be used in all other JMAP extensions.

   This extension adds a method to expose blobs as a filesystem along
   with the types of metadata that are provided by other remote
   filesystem protocols.

	 </t>
      </abstract>
   </front>
   <seriesInfo name="Internet-Draft" value="draft-ietf-jmap-filenode-03"/>
   
</reference>


<reference anchor="I-D.ietf-jmap-calendars">
   <front>
      <title>JSON Meta Application Protocol (JMAP) for Calendars</title>
      <author fullname="Neil Jenkins" initials="N." surname="Jenkins">
         <organization>Fastmail</organization>
      </author>
      <author fullname="Michael Douglass" initials="M." surname="Douglass">
         <organization>Spherical Cow Group</organization>
      </author>
      <date day="8" month="October" year="2025"/>
      <abstract>
	 <t>   This document specifies a data model for synchronizing calendar data
   with a server using JMAP.  Clients can use this to efficiently read,
   write, and share calendars and events, receive push notifications for
   changes or event reminders, and keep track of changes made by others
   in a multi-user environment.

	 </t>
      </abstract>
   </front>
   <seriesInfo name="Internet-Draft" value="draft-ietf-jmap-calendars-25"/>
   
</reference>

<reference anchor="RFC2119">
  <front>
    <title>Key words for use in RFCs to Indicate Requirement Levels</title>
    <author fullname="S. Bradner" initials="S." surname="Bradner"/>
    <date month="March" year="1997"/>
    <abstract>
      <t>In many standards track documents several words are used to signify the requirements in the specification. These words are often capitalized. This document defines these words as they should be interpreted in IETF documents. This document specifies an Internet Best Current Practices for the Internet Community, and requests discussion and suggestions for improvements.</t>
    </abstract>
  </front>
  <seriesInfo name="BCP" value="14"/>
  <seriesInfo name="RFC" value="2119"/>
  <seriesInfo name="DOI" value="10.17487/RFC2119"/>
</reference>

<reference anchor="RFC8174">
  <front>
    <title>Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words</title>
    <author fullname="B. Leiba" initials="B." surname="Leiba"/>
    <date month="May" year="2017"/>
    <abstract>
      <t>RFC 2119 specifies common key words that may be used in protocol specifications. This document aims to reduce the ambiguity by clarifying that only UPPERCASE usage of the key words have the defined special meanings.</t>
    </abstract>
  </front>
  <seriesInfo name="BCP" value="14"/>
  <seriesInfo name="RFC" value="8174"/>
  <seriesInfo name="DOI" value="10.17487/RFC8174"/>
</reference>




    </references>

    <references title='Informative References' anchor="sec-informative-references">



<reference anchor="RFC8949">
  <front>
    <title>Concise Binary Object Representation (CBOR)</title>
    <author fullname="C. Bormann" initials="C." surname="Bormann"/>
    <author fullname="P. Hoffman" initials="P." surname="Hoffman"/>
    <date month="December" year="2020"/>
    <abstract>
      <t>The Concise Binary Object Representation (CBOR) is a data format whose design goals include the possibility of extremely small code size, fairly small message size, and extensibility without the need for version negotiation. These design goals make it different from earlier binary serializations such as ASN.1 and MessagePack.</t>
      <t>This document obsoletes RFC 7049, providing editorial improvements, new details, and errata fixes while keeping full compatibility with the interchange format of RFC 7049. It does not create a new version of the format.</t>
    </abstract>
  </front>
  <seriesInfo name="STD" value="94"/>
  <seriesInfo name="RFC" value="8949"/>
  <seriesInfo name="DOI" value="10.17487/RFC8949"/>
</reference>

<reference anchor="RFC3501">
  <front>
    <title>INTERNET MESSAGE ACCESS PROTOCOL - VERSION 4rev1</title>
    <author fullname="M. Crispin" initials="M." surname="Crispin"/>
    <date month="March" year="2003"/>
    <abstract>
      <t>The Internet Message Access Protocol, Version 4rev1 (IMAP4rev1) allows a client to access and manipulate electronic mail messages on a server. IMAP4rev1 permits manipulation of mailboxes (remote message folders) in a way that is functionally equivalent to local folders. IMAP4rev1 also provides the capability for an offline client to resynchronize with the server. IMAP4rev1 includes operations for creating, deleting, and renaming mailboxes, checking for new messages, permanently removing messages, setting and clearing flags, RFC 2822 and RFC 2045 parsing, searching, and selective fetching of message attributes, texts, and portions thereof. Messages in IMAP4rev1 are accessed by the use of numbers. These numbers are either message sequence numbers or unique identifiers. IMAP4rev1 supports a single server. A mechanism for accessing configuration information to support multiple IMAP4rev1 servers is discussed in RFC 2244. IMAP4rev1 does not specify a means of posting mail; this function is handled by a mail transfer protocol such as RFC 2821. [STANDARDS-TRACK]</t>
    </abstract>
  </front>
  <seriesInfo name="RFC" value="3501"/>
  <seriesInfo name="DOI" value="10.17487/RFC3501"/>
</reference>

<reference anchor="RFC8621">
  <front>
    <title>The JSON Meta Application Protocol (JMAP) for Mail</title>
    <author fullname="N. Jenkins" initials="N." surname="Jenkins"/>
    <author fullname="C. Newman" initials="C." surname="Newman"/>
    <date month="August" year="2019"/>
    <abstract>
      <t>This document specifies a data model for synchronising email data with a server using the JSON Meta Application Protocol (JMAP). Clients can use this to efficiently search, access, organise, and send messages, and to get push notifications for fast resynchronisation when new messages are delivered or a change is made in another client.</t>
    </abstract>
  </front>
  <seriesInfo name="RFC" value="8621"/>
  <seriesInfo name="DOI" value="10.17487/RFC8621"/>
</reference>

<reference anchor="RFC4791">
  <front>
    <title>Calendaring Extensions to WebDAV (CalDAV)</title>
    <author fullname="C. Daboo" initials="C." surname="Daboo"/>
    <author fullname="B. Desruisseaux" initials="B." surname="Desruisseaux"/>
    <author fullname="L. Dusseault" initials="L." surname="Dusseault"/>
    <date month="March" year="2007"/>
    <abstract>
      <t>This document defines extensions to the Web Distributed Authoring and Versioning (WebDAV) protocol to specify a standard way of accessing, managing, and sharing calendaring and scheduling information based on the iCalendar format. This document defines the "calendar-access" feature of CalDAV. [STANDARDS-TRACK]</t>
    </abstract>
  </front>
  <seriesInfo name="RFC" value="4791"/>
  <seriesInfo name="DOI" value="10.17487/RFC4791"/>
</reference>

<reference anchor="RFC6352">
  <front>
    <title>CardDAV: vCard Extensions to Web Distributed Authoring and Versioning (WebDAV)</title>
    <author fullname="C. Daboo" initials="C." surname="Daboo"/>
    <date month="August" year="2011"/>
    <abstract>
      <t>This document defines extensions to the Web Distributed Authoring and Versioning (WebDAV) protocol to specify a standard way of accessing, managing, and sharing contact information based on the vCard format. [STANDARDS-TRACK]</t>
    </abstract>
  </front>
  <seriesInfo name="RFC" value="6352"/>
  <seriesInfo name="DOI" value="10.17487/RFC6352"/>
</reference>

<reference anchor="RFC9425">
  <front>
    <title>JSON Meta Application Protocol (JMAP) for Quotas</title>
    <author fullname="R. Cordier" initials="R." role="editor" surname="Cordier"/>
    <date month="June" year="2023"/>
    <abstract>
      <t>This document specifies a data model for handling quotas on accounts with a server using the JSON Meta Application Protocol (JMAP).</t>
    </abstract>
  </front>
  <seriesInfo name="RFC" value="9425"/>
  <seriesInfo name="DOI" value="10.17487/RFC9425"/>
</reference>




    </references>

</references>


<?line 852?>

<section anchor="changes"><name>Changes</name>

<t>[[This section to be removed by RFC Editor]]</t>

<t><strong>draft-degennaro-jmap-metadata-00</strong></t>

<t><list style="symbols">
  <t>Initial version</t>
</list></t>

</section>


  </back>

<!-- ##markdown-source:
H4sIAIgIB2kAA+1923Lb1pbgO78CQz9E8pCy5NhOzGROH0V2+qjLjn1s+VzG
cY1BApQQkwAPAEpWO+7qj+jHmar5lvmU/pJZ173X3gBoOcnp6qmaVCqhSGBf
1l73255Op6O2aFf5LPmnp8fPk2fzn/JFmzzN2zRL23SUzud1fjnwY1YtynQN
r2Z1umynWX6el2VaV9Of1ulmupbHpoeHo2Y7XxdNU1Tl2fUGXjh9fPb9aJG2
+XlVX8+Sps1G2w08nDezZFTNm2qV4+dRsalnSVtvm/bu4eHDw7ujd/n1VVVn
MELZ5nWZt9NHOPeoadMy+x/pqiph9Ou8GW2KWfK6rRaTpKnqts6XDXy6XuOH
N6NRum0vqno2SqajBP4pSpj36UHyKE/+kbdAX/Pmnqbbuop/qurzWfKyTVdX
ad0mT9J5kzx5ckI/KciCX+mXBtaRt7Pk6MvDh8lJtVzmeZkcX+blNp8kL7dF
mydHsE96dlG0AJiXF3ldZGlJX9X5OQBwlvz5r/xElcHqvr779eGR/L0tW4Tm
q5fH9EW+TovVLFnj+n/f4GoOYDn007YG8Fy07aaZ3bnjfxqVVb1O2+IyB9Ak
L74/+frB3cOZfpCvju4+mOkH/ur+vQf3ZvqBv7r38OjrmX7grx4++IrHwg/6
1ZF+dYRfnU4fHRR5u2QEWharvKRNdn5apPBTltaILqOiXMbLfnjv4Uw/8Fdf
3j88mukHt7kj3Zx8de+rh/wVfuCvHnx5/+5MP8iy7929P9MPo9F0OoVDh8NN
FwDCs4uiSYAytuu8bJMsXxZl3iRpUuZXSf6+zUukgqStkvYiT/7p5bMfiJ6S
481mVQBF4I/P6wowt1ole0h2+/Bk2gKOtnWVbRc0GKF7WmfFP+dZss4XF2lZ
NOsE4ADHXabnRXmeKP0ladNUiwKIK0uuivaCabkiWm4OkjNcRg91m8Wmq1V1
1SSLVQFbgunLLGny+jKvG9xH01Y14G+dt3WRX8In+v26XFzUVQkLTNJ6XgBw
6muzJHgkLcuqpQ03CU5SXvM66IEW2ARsGba6gN+LpkVgwtbKvD5ITi1cgecA
jSzMcMkakGYF206u8hX9v9nki2IJDwHubAA2DUEqXQAwGwTVKc4bLO7P+fzR
8Z+Sf//X/5nlaZZs6mqT122RN//+r/8ruQKqhG3xic1XOQIRDt0DbJkuilXR
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
GfPxHraNxOrcaSbhZIPjg9m2ujYZRCYM+h+lNIXT/nZqk0t5upni1FtuwzpS
b4KTV4XMlpElgaGpR9OTnXSQvCpXxTsgnVVxmQeDcjzJ+NebfJ2ih7NJXN1j
EA2c9Gb9EPIqZkr9Ojw8B6m8dgq1Gh+ByO5PyAoDbZg25HKIiLdECUQ3yh/6
XNVpKMmpR3dSSBvlSX1UQut92Ue7c40incEtmyYNtzrGjm2zO4FcLoXdewAk
Y2BPwIraaxWSlEFgcpMcKGBhvUN+dCPYsnmvuwnXcoNqFy9WvCJI8hY7yXZS
zt6Q/Z5gLyTuiVSKR0bqD9VON7/vHhCrClb5e0ImU5Jb69uJliehWT3HDAGw
+9s4fYv66fDSeLN2UXrmQi1at4czhiBRiOihftH4PZyZl/lhkYDOd4Fvhrvw
PYa0v9QEY8F1Abw/lzIihzLYRmtL+Q6S2pS/J28enz4Qam5y4mQ8dRXuNTBV
HrryCLeoSAhzm0J4CfYDSu2LC92gdG8KDGbYX7RadDqoWsFegSH/y7/8S/JT
U5WjD6Pk0zgL9HYBg48nOx7mepc8+44ehzNY5L83j8i7wBdmH7Oi2azSayJX
eBZEF63/kfi+mp3zCDZSSg31MYR/xt8Wbb7+3bc44u/O8qb99g59/Jaw63dH
d7/89g5//PYOPTkefUQQCGMzauISuNEA/5olXFnLVUxdIpOeL/JAiGYGp5kQ
iAJi1TDAU8+oImYUVMV3sihVNwv6xHUa5MlrvpFQpJ9pGZTvA7W45mwyzpwU
zc9gl+o9CABfeLJO36GT0kS+TKYku878w3umWijs2cANHSj1z/ds0OA5QTog
e0lRFTdojV2KpqgEY6NCBJoytG4Kaqegxa3uIDlRXwtCAItlKaukqt9pXZur
Iu5Pbd2kdROwIKOm+kzmVk1zKuPVMcOa+Kfc8oXyyWwKqKBzYVuXoZafg1nD
maicn2D6Gfls7/sHUROcsOYeR9FBRL9pXE0vhWQQVUDFKko6QDFzbK/JbvY0
yJ3ByPFQyLioXfKVi8qrpPKhIEG3/hSEz4+TB+HRt8Yy0rxC8a8aGAReaYqa
uGD4J3IqTIuGJs/DQO9QJHvP5Xjss/5m3umPL4fBZ7eAwaBzkKGhGaCdwNyM
szaGp+XUFDKvXCj/F6UrSFsy5/uT/XS8iD3dMYb345yRdkc+H8I3dbjBkfyq
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

-->

</rfc>

