<?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-ietf-jmap-metadata-01" 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="December" day="19"/>

    
    <workgroup>JMAP</workgroup>
    <keyword>Internet-Draft</keyword>

    <abstract>


<?line 47?>

<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 51?>

<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">relatedType</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">relatedType</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="related-type-property"><name>relatedType</name>

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

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

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

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

<t>The id of the JMAP object to which this Metadata object is associated. This id <bcp14>MUST</bcp14> correspond to a valid object of the type specified in <spanx style="verb">relatedType</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 related 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 related 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 related 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 related object.</t>

<t>Internally, the server may store multiple private Metadata objects for the same combination of <spanx style="verb">relatedType</spanx>, <spanx style="verb">relatedId</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 related-type combination—specifically, the private Metadata object that they themselves created. Other users' private Metadata objects for the same related 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">relatedType</spanx>, <spanx style="verb">relatedId</spanx>, and <spanx style="verb">@type</spanx>, and it is visible to all users with appropriate permissions on the related 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">relatedType</spanx>, <spanx style="verb">relatedId</spanx>, <spanx style="verb">@type</spanx>, and <spanx style="verb">isPrivate</spanx> values. This constraint ensures that for any given related 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">relatedType</spanx>, <spanx style="verb">relatedId</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">relatedType</spanx>, <spanx style="verb">relatedId</spanx>, and <spanx style="verb">@type</spanx>. The server internally may store multiple private Metadata objects for the same related-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 "alreadyExists" SetError. The SetError <bcp14>SHOULD</bcp14> include a description indicating that a Metadata object with the specified combination of properties already exists, and <bcp14>MAY</bcp14> include an "existingId" property containing the id of the existing Metadata object. 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">relatedType</spanx>, <spanx style="verb">relatedId</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 "alreadyExists" 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">relatedType</spanx> and <spanx style="verb">relatedId</spanx> values reference a valid existing object of the appropriate type. If the related object does not exist or the <spanx style="verb">relatedType</spanx> is not recognized, the server <bcp14>SHOULD</bcp14> reject the operation with an "invalidProperties" SetError, with the "properties" field including "<spanx style="verb">relatedType</spanx>" and/or "<spanx style="verb">relatedId</spanx>" as appropriate.</t>

<t>For ImapMetadata objects, servers <bcp14>MUST</bcp14> verify that the <spanx style="verb">relatedType</spanx> is "Mailbox" (<xref section="2" sectionFormat="of" target="RFC8621"/>). For WebDavMetadata objects, servers <bcp14>MUST</bcp14> verify that the <spanx style="verb">relatedType</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>

<t>In addition to the standard arguments defined in <xref section="5.2" sectionFormat="of" target="RFC8620"/>, the Metadata/changes method accepts the following optional arguments:</t>

<dl>
  <dt><strong>filterRelatedType</strong>: <spanx style="verb">String|null</spanx> (default: null)</dt>
  <dd>
    <t>If specified, the response <bcp14>MUST</bcp14> include only changes to Metadata objects whose <spanx style="verb">relatedType</spanx> property equals the specified value. This allows clients to efficiently synchronize metadata changes for a specific JMAP data type (e.g., only changes to metadata associated with Email objects). If null, changes to Metadata objects of all related types are returned.</t>
  </dd>
  <dt><strong>filterMetadataType</strong>: <spanx style="verb">String[]|null</spanx> (default: null)</dt>
  <dd>
    <t>If specified, the response <bcp14>MUST</bcp14> include only changes to Metadata objects whose <spanx style="verb">@type</spanx> property value is in the specified array. This allows clients to efficiently synchronize changes for specific metadata types (e.g., only Annotation changes, or only ImapMetadata and WebDavMetadata changes). If null, changes to Metadata objects of all metadata types are returned.</t>
  </dd>
</dl>

<t>These filtering arguments do not affect the state string returned in the response. The state string represents the complete state of all Metadata objects in the account. However, the "created", "updated", and "destroyed" arrays in the response are filtered according to the specified criteria. Clients using these filters <bcp14>MUST</bcp14> track the returned state and use it in subsequent Metadata/changes calls with the same filter parameters to ensure consistent synchronization.</t>

<t>If both <spanx style="verb">filterRelatedType</spanx> and <spanx style="verb">filterMetadataType</spanx> are specified, the server <bcp14>MUST</bcp14> return only changes to Metadata objects that satisfy both criteria (i.e., the filters are combined with a logical AND).</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>relatedType</strong>: <spanx style="verb">String</spanx></dt>
  <dd>
    <t>Only Metadata objects whose <spanx style="verb">relatedType</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>relatedIds</strong>: <spanx style="verb">Id[]</spanx></dt>
  <dd>
    <t>Only Metadata objects whose <spanx style="verb">relatedId</spanx> is in the specified array are returned. This allows retrieving metadata for a specific set of related objects. This property <bcp14>MUST</bcp14> only be specified when <spanx style="verb">relatedType</spanx> is also specified in the same FilterCondition object. If <spanx style="verb">relatedIds</spanx> is specified without <spanx style="verb">relatedType</spanx>, the server <bcp14>MUST</bcp14> reject the query with an "invalidArguments" error indicating that <spanx style="verb">relatedType</spanx> is required when using <spanx style="verb">relatedIds</spanx>.</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>MUST</bcp14> be supported for sorting:</t>

<t><list style="symbols">
  <t>id</t>
</list></t>

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

<t><list style="symbols">
  <t>@type</t>
  <t>relatedType</t>
  <t>relatedId</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 newline="true">
  <dt><strong>fetchMetadata</strong>: <spanx style="verb">Boolean</spanx> (default: false)</dt>
  <dd>
    <t>If true, the server will return a <spanx style="verb">metadata</spanx> property in the response containing Metadata objects associated with the objects returned in the "list" property. If false, the <spanx style="verb">metadata</spanx> property will not be returned in the response. Servers <bcp14>MUST</bcp14> support this argument for all data types listed in the dataTypes capability.</t>
  </dd>
  <dt><strong>metadataTypes</strong>: <spanx style="verb">String[]|null</spanx> (default: null)</dt>
  <dd>
    <t>This argument is only applicable when <spanx style="verb">fetchMetadata</spanx> is true. A list of metadata object type identifiers (<spanx style="verb">@type</spanx> values) to retrieve for the requested objects. If null, all metadata types are returned. If one or more type identifiers are specified, the server returns only metadata objects of those types associated with the requested objects. This argument is ignored if <spanx style="verb">fetchMetadata</spanx> is false. 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>This argument is only applicable when <spanx style="verb">fetchMetadata</spanx> is true. 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">relatedId</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 related objects and identify the metadata type. This argument follows the same semantics as the properties argument in the standard /get method. This argument is ignored if <spanx style="verb">fetchMetadata</spanx> is false. 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 when <spanx style="verb">fetchMetadata</spanx> is true:</t>

<dl newline="true">
  <dt><strong>metadata</strong>: <spanx style="verb">Metadata[]</spanx></dt>
  <dd>
    <t>An array of Metadata objects associated with the objects returned in the list property. This property is included in the response if and only if the <spanx style="verb">fetchMetadata</spanx> argument was set to true in the request. The metadata array contains only those metadata objects whose <spanx style="verb">relatedId</spanx> corresponds to an object id in the list response. If <spanx style="verb">metadataTypes</spanx> was specified, only metadata objects whose <spanx style="verb">@type</spanx> matches one of the specified types are included. The <spanx style="verb">relatedId</spanx> property of each metadata object allows clients to correlate metadata with their related objects. If no metadata exists for the returned objects (or no metadata matches the specified type filters), this property <bcp14>MUST</bcp14> be an empty array.</t>
  </dd>
</dl>

<t>If a requested related 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 specified in the dataTypes capability. The extension adds metadata management capabilities to ensure proper lifecycle management and transactional consistency between primary objects and their associated metadata.</t>

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

<dl>
  <dt><strong>onSuccessCreateMetadata</strong>: <spanx style="verb">Id[Metadata[]]|null</spanx></dt>
  <dd>
    <t>A map of object id to an array of Metadata objects to create, associated with the object referenced by the id, if the create/update of that object succeeds. (For references to objects created in the same "/set" invocation, this is equivalent to a creation-reference, so the id will be the creation id prefixed with a "#".)
</t>

    <t>The Metadata objects in the array <bcp14>MUST NOT</bcp14> include a <spanx style="verb">relatedId</spanx> or <spanx style="verb">relatedType</spanx> property; the server <bcp14>MUST</bcp14> automatically set <spanx style="verb">relatedType</spanx> to the data type of the /set method (e.g., "Email" for Email/set) and <spanx style="verb">relatedId</spanx> to the id of the successfully created or updated object. If any Metadata object specifies a <spanx style="verb">relatedId</spanx> or <spanx style="verb">relatedType</spanx>, the server <bcp14>MUST</bcp14> reject that metadata creation with an "invalidProperties" SetError.</t>
  </dd>
  <dt><strong>onSuccessUpdateMetadata</strong>: <spanx style="verb">Id[Id[PatchObject]]|null</spanx></dt>
  <dd>
    <t>A map of object id to a map of Metadata object id to PatchObject containing properties to update on the Metadata object, if the create/update of the referenced object succeeds. (For references to objects created in the same "/set" invocation, this is equivalent to a creation-reference, so the id will be the creation id prefixed with a "#".)
</t>

    <t>The <spanx style="verb">relatedId</spanx> and <spanx style="verb">relatedType</spanx> properties <bcp14>MUST NOT</bcp14> be modified through this mechanism; attempts to do so <bcp14>MUST</bcp14> be rejected with an "invalidProperties" SetError. The specified Metadata objects <bcp14>MUST</bcp14> be associated with the corresponding related object; attempts to update metadata associated with other objects <bcp14>MUST</bcp14> be rejected with a "notFound" SetError.</t>
  </dd>
</dl>

<t>If the <spanx style="verb">onSuccessCreateMetadata</spanx> or <spanx style="verb">onSuccessUpdateMetadata</spanx> arguments are specified and the corresponding object operations succeed, the server <bcp14>MUST</bcp14> perform an implicit Metadata/set call using the arguments derived from these properties. The server <bcp14>MUST</bcp14> automatically populate <spanx style="verb">relatedType</spanx> and <spanx style="verb">relatedId</spanx> values for created Metadata objects based on the data type and id of the successfully processed object.</t>

<t>The response to the implicit Metadata/set call <bcp14>MUST</bcp14> be returned in an additional Metadata/set response immediately following the original /set response. This Metadata/set response <bcp14>MUST</bcp14> use the same method call id as the original /set request that triggered it.</t>

<t>If the original /set request fails entirely (e.g., due to an invalid accountId), no implicit Metadata/set call is made and no Metadata/set response is returned. If individual object operations within the /set request fail, the metadata operations associated with those failed objects are simply not attempted and do not appear in the Metadata/set response.</t>

<section anchor="cascading-deletion"><name>Cascading Deletion</name>

<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 related 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 related 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 related objects, and attempting to do so would be inefficient. The server handles metadata cleanup automatically.</t>

<t>If an error occurs during related 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>
<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",
        "relatedType": "Mailbox",
        "relatedId": "#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": [
      {
        "relatedId": "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",
        "relatedType": "FileNode",
        "relatedId": "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",
        "relatedId": "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 anchor="creating-an-email-with-annotation-atomically"><name>Creating an Email with Annotation Atomically</name>

<t>This example demonstrates creating an Email and associating an Annotation with it in a single atomic operation using <spanx style="verb">onSuccessCreateMetadata</spanx>. The draft Email is created and, if successful, an Annotation is attached to track workflow state.</t>

<t>Request:</t>

<figure><sourcecode type="json"><![CDATA[
[
  ["Email/set", {
    "accountId": "A12345",
    "create": {
      "draft1": {
        "mailboxIds": { "MB123": true },
        "subject": "Project Update",
        "from": [{ "email": "alice@example.com" }],
        "to": [{ "email": "bob@example.com" }],
        "bodyStructure": {
          "type": "text/plain",
          "partId": "1"
        },
        "bodyValues": {
          "1": { "value": "Here is the project update..." }
        }
      }
    },
    "onSuccessCreateMetadata": {
      "#draft1": [
        {
          "@type": "Annotation",
          "isPrivate": true,
          "acme.example.com:workflowState": "pending-review",
          "acme.example.com:assignedTo": "carol@example.com"
        }
      ]
    }
  }, "c1"]
]
]]></sourcecode></figure>

<t>A successful response includes two responses with the same method call id, due to the implicit Metadata/set call:</t>

<figure><sourcecode type="json"><![CDATA[
[
  ["Email/set", {
    "accountId": "A12345",
    "oldState": "e100",
    "newState": "e101",
    "created": {
      "draft1": {
        "id": "EM456",
        "blobId": "Gxyz789",
        "threadId": "T001",
        "size": 1024
      }
    }
  }, "c1"],
  ["Metadata/set", {
    "accountId": "A12345",
    "oldState": "md50",
    "newState": "md51",
    "created": {
      "1": {
        "id": "MD789",
        "@type": "Annotation",
        "relatedType": "Email",
        "relatedId": "EM456"
      }
    }
  }, "c1"]
]
]]></sourcecode></figure>

</section>
<section anchor="updating-a-calendar-event-and-its-metadata-atomically"><name>Updating a Calendar Event and its Metadata Atomically</name>

<t>This example demonstrates updating a CalendarEvent and its associated metadata atomically, ensuring that the metadata update only applies if the event update succeeds:</t>

<t>Request:</t>

<figure><sourcecode type="json"><![CDATA[
[
  ["CalendarEvent/set", {
    "accountId": "A12345",
    "update": {
      "CE789": {
        "title": "Quarterly Review Meeting",
        "start": "2024-12-15T14:00:00"
      }
    },
    "onSuccessUpdateMetadata": {
      "CE789": {
        "MD456": {
          "acme.example.com:lastModifiedReason": 
              "Rescheduled per manager request",
          "acme.example.com:approvalStatus": "pending"
        }
      }
    }
  }, "c1"]
]
]]></sourcecode></figure>

<t>A successful response:</t>

<figure><sourcecode type="json"><![CDATA[
[
  ["CalendarEvent/set", {
    "accountId": "A12345",
    "oldState": "c200",
    "newState": "c201",
    "updated": {
      "CE789": null
    }
  }, "c1"],
  ["Metadata/set", {
    "accountId": "A12345",
    "oldState": "md60",
    "newState": "md61",
    "updated": {
      "MD456": null
    }
  }, "c1"]
]
]]></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>relatedType</c>
      <c>String</c>
      <c>Annotation, ImapMetadata, WebDavMetadata</c>
      <c><xref target="related-type-property"></xref></c>
      <c>relatedId</c>
      <c>Id</c>
      <c>Annotation, ImapMetadata, WebDavMetadata</c>
      <c><xref target="related-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="4" month="November" 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-26"/>
   
</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 1018?>

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

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

<t><strong>draft-ietf-jmap-metadata-01</strong></t>

<t><list style="symbols">
  <t>Renamed <spanx style="verb">parentType</spanx> and <spanx style="verb">parentId</spanx> properties to <spanx style="verb">relatedType</spanx> and <spanx style="verb">relatedId</spanx> throughout the document to better reflect their purpose and avoid implying a strict hierarchy.</t>
  <t>Added <spanx style="verb">filterRelatedType</spanx> and <spanx style="verb">filterMetadataType</spanx> optional parameters to Metadata/changes method to allow filtering changes by related object type and metadata type.</t>
  <t>Changed the error type from "invalidProperties" to "alreadyExists" when a client attempts to create a Metadata object that violates the uniqueness constraint.</t>
  <t>Added requirement that <spanx style="verb">relatedType</spanx> must be specified in the same FilterCondition object whenever <spanx style="verb">relatedIds</spanx> is used in Metadata/query.</t>
  <t>Added <spanx style="verb">id</spanx> as a <bcp14>MUST</bcp14> support property for sorting in Metadata/query; other properties changed to <bcp14>SHOULD</bcp14> support.</t>
  <t>Replaced the <spanx style="verb">metadataTypes</spanx> argument with a <spanx style="verb">fetchMetadata</spanx> Boolean argument (default: false) in the extended /get method.</t>
  <t>Added <spanx style="verb">onSuccessCreateMetadata</spanx> and <spanx style="verb">onSuccessUpdateMetadata</spanx> arguments to the extended /set method to enable transactional metadata operations that are conditional on the success of the related object operation.</t>
</list></t>

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

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

</section>


  </back>

<!-- ##markdown-source:
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
OMoXpeJlNBr9XxN2JUqXFgEA

-->

</rfc>

