<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE rfc [
  <!ENTITY nbsp    "&#160;">
  <!ENTITY zwsp   "&#8203;">
  <!ENTITY nbhy   "&#8209;">
  <!ENTITY wj     "&#8288;">
]>
<?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?>
<!-- generated by https://github.com/cabo/kramdown-rfc version 1.7.39 (Ruby 3.4.9) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-ietf-mailmaint-pdparchive-01" category="std" consensus="true" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.33.0 -->
  <front>
    <title abbrev="PDPArchive">Personal Data Portability Archive</title>
    <seriesInfo name="Internet-Draft" value="draft-ietf-mailmaint-pdparchive-01"/>
    <author initials="H. J." surname="Happel" fullname="Hans-Joerg Happel">
      <organization>audriga</organization>
      <address>
        <email>hans-joerg@audriga.com</email>
      </address>
    </author>
    <author initials="L." surname="Dusseault" fullname="Lisa Dusseault">
      <organization>Data Transfer Initiative</organization>
      <address>
        <email>lisa@dtinit.org</email>
      </address>
    </author>
    <author initials="A." surname="Melnikov" fullname="Alexey Melnikov">
      <organization>Isode Ltd</organization>
      <address>
        <email>Alexey.Melnikov@isode.com</email>
      </address>
    </author>
    <date year="2026" month="June" day="16"/>
    <area>Applications and Real-Time</area>
    <workgroup>mailmaint</workgroup>
    <keyword>email</keyword>
    <keyword>calendaring</keyword>
    <keyword>archive</keyword>
    <keyword>personal</keyword>
    <keyword>portability</keyword>
    <abstract>
      <?line 111?>

<t>This document proposes the Personal Data Portability Archive format (PDPA), suitable for import/export, backup/restore, and data transfer scenarios for personal data.</t>
    </abstract>
    <note removeInRFC="true">
      <name>About This Document</name>
      <t>
        The latest revision of this draft can be found at <eref target="https://lisad.github.io/draft-happel-mailmaint-pdparchive/draft-ietf-mailmaint-pdparchive.html"/>.
        Status information for this document may be found at <eref target="https://datatracker.ietf.org/doc/draft-ietf-mailmaint-pdparchive/"/>.
      </t>
      <t>
        Discussion of this document takes place on the
        mailmaint Working Group mailing list (<eref target="mailto:mailmaint@ietf.org"/>),
        which is archived at <eref target="https://mailarchive.ietf.org/arch/browse/mailmaint/"/>.
        Subscribe at <eref target="https://www.ietf.org/mailman/listinfo/mailmaint/"/>.
      </t>
      <t>Source for this draft and an issue tracker can be found at
        <eref target="https://github.com/lisad/draft-happel-mailmaint-pdparchive"/>.</t>
    </note>
  </front>
  <middle>
    <?line 116?>

<section anchor="introduction">
      <name>Introduction</name>
      <t>As part of communication protocols, the IETF has standardized a number of data formats such as the Internet Message Format <xref target="RFC5322"/>,  <xref target="vCard"/>,  <xref target="iCalendar"/>, or, more recently, <xref target="JSContact"/> and <xref target="JSCalendar"/>.</t>
      <t>While mainly designed for interoperability, many of these data formats have also become popular for data portability, i.e., the import/export of data across different services. The growing importance of data portability however demands an open standard archive format which can deal with different types of personal data in a homogeneous fashion.</t>
      <t>To this end, this document proposes the Personal Data Portability Archive format (PDPArchive), suitable for import/export, backup/restore, and data transfer scenarios for personal data. It is compatible with both IMAP and JMAP and should be suitable as an interchange format between related software and services such as for email, contacts, calendaring, tasks, or files.</t>
      <t>The approach is to define JSON formats, folder structure, and a common compression format.  Additional specifications will likely define a protocol how these files can be requested from, imported into, or transferred between servers, but this specification can be used as-is with user-directed imports or exports.</t>
    </section>
    <section anchor="conventions-and-definitions">
      <name>Conventions and Definitions</name>
      <t>The term "personal data" refers to persistent data which users created and managed within applications or services. Classic examples are emails, contacts, calendars, tasks, notes, or files. Other examples might be fitness tracking records, energy bills, or location history.</t>
      <t>The term "data portability" refers to the right or technical procedure to use or transfer personal data across different applications or services.</t>
      <t>The terms "message" and "email message" refer to "electronic mail messages" or "emails" as specified in <xref target="RFC5322"/>. The term "Message User Agent" (MUA) denotes an email client application as per <xref target="RFC5598"/>.</t>
      <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="goals">
      <name>Goals</name>
      <t>The core goal is to provide an open and extensible archive and transfer format for personal data. This includes data types that are subject of existing IETF protocols, such as email and groupware data (e.g., contacts, calendars, tasks) but may also include further types of personal data.</t>
      <t>Goals will be refined by use cases and cross-cutting technical goals in the following sub-sections.</t>
      <t>JSON is used as a widely interoperable base format that systems can easily translate their internal data representation into. Wherever possible, fields, values and data structures are derived from existing IMAP/JMAP specifications to remain compatible with both.</t>
      <section anchor="use-cases">
        <name>Use cases</name>
        <t>Many of these use cases benefit greatly from a simple, read-only export format,
compared to having IMAP and CalDAV access to personal data.   While these use cases may suggest interesting niche features, adding those may be left to future specs. For example, legal and forensics use cases might benefit from signing features, but nevertheless this specification would advance those use cases even without signing features.</t>
        <section anchor="data-portability">
          <name>Data portability</name>
          <t>A main use case for the novel format is to allow exporting the full user data managed by services or software products into a simple file (or set of files) which is under full control of the user.</t>
          <t>The user might use such an export for backup, archiving, or for importing when switching to another service or software (i.e., migration).</t>
          <t>Depending on the type of data, exporting/importing can be a time-consuming process. Particularly for the case of switching services, PDPA should allow to minimize the time period during which a user cannot use the origin system but also the destination system is not yet ready.</t>
        </section>
        <section anchor="read-only-data-access">
          <name>Read-only data access</name>
          <t>General access to data powers all kinds of analysis and applications.  Exporting content and metadata in a structure suitable for ease of use in data pipelines or analysis tools would make these much easier.</t>
        </section>
        <section anchor="incremental-data-access">
          <name>Incremental data access</name>
          <t>Beyond snapshot backups/exports, the format should optionally allow for incremental data
access - knowing what new data has been added.</t>
          <ul spacing="normal">
            <li>
              <t>Automated maintenance of a permanent, incremental mirror of user data, e.g. for instant restore</t>
            </li>
            <li>
              <t>Compliance or audit logs</t>
            </li>
            <li>
              <t>Spam tracking and analysis</t>
            </li>
            <li>
              <t>CRM or productivity integration scenarios that are read-only</t>
            </li>
          </ul>
        </section>
        <section anchor="synchronization">
          <name>Synchronization</name>
          <t>Data portability does not just allow users to switch from one service to another one, but to let users benefit from 3rd party services with ongoing access to their data (authorized by the user).  Simple synchronization features could make this much better.</t>
          <t>For example, current online systems that allow importing contacts are not often suited to maintaining one's address book on two systems. Re-importing a contact into a system that already has that contact often results in duplicating the exact same contact, whether or not there have been edits, making repeated synchronization practically infeasible. It should be easy to do a significantly better job of this with some attention to object IDs and modification timestamps.</t>
          <t>We however do not attempt to solve two-way synchronization via export files.  It would require significant additional work to allow two systems, neither of which is agreed-upon to be the source of truth, to reliably synchronize changes from both. In comparison, solving one-way synchronization only requires agreed-upon usage of existing fields and values.</t>
        </section>
        <section anchor="dataset-exchange">
          <name>Dataset exchange</name>
          <t>PDPArchive should be usable to exchange and share larger data sets than just one user, or to share a single user's data outside the context where the user knows what it is and where it came from.</t>
          <t>Potential applications of this are:</t>
          <ul spacing="normal">
            <li>
              <t>The ability to exchange test data and known mailstore state, e.g. for conformance testing or internal functional tests</t>
            </li>
            <li>
              <t>Legal discovery and forensics use cases may benefit from a standard export format, such that investigators can expect a great deal of consistency when collecting data from different systems.</t>
            </li>
            <li>
              <t>Researchers may be able to collect archive files through data donations and use as input to research.</t>
            </li>
          </ul>
        </section>
        <section anchor="data-persistence">
          <name>Data persistence</name>
          <t>The format <bcp14>MAY</bcp14> be used as a development-time active persistence layer for user data in, e.g., email clients or applications. It is not intended as, or suitable for, a production-level persistence layer.</t>
        </section>
      </section>
      <section anchor="technical-goals">
        <name>Technical Goals</name>
        <t>Besides actual use cases, there are a number of side requirements and goals for PDPA.</t>
        <section anchor="email-standards-compatibility">
          <name>Email standards compatibility</name>
          <t>Data definitions have to be compatible with widespread calendar and email standards, although need not be limited to only what is in those standards.  Data serialization formats should aim for compatibility with JMAP data formats for the sake of interoperability and synergies in software libraries.</t>
          <t>Dedicated JMAP API methods or client/server protocol messages for exporting and importing the format described here are out of scope of this document.  Server-to-server transfer protocols for sending or requesting this format are out of the scope of this document.</t>
          <t>Due to its specifics and ubiquitous usage, the Internet Message Format <xref target="RFC5322"/>; latest revision of <xref target="RFC2822"/>/<xref target="RFC822"/> should be the core of representing individual email data.</t>
          <t>This specification should ideally describe mappings between PDPA and existing mailbox persistence schemes such as Maildir or <xref target="MBOX"/>.</t>
        </section>
        <section anchor="interoperability">
          <name>Interoperability</name>
          <t>It should be mostly possible to use personal data exports from one system with different software or services.  When a source exports personal data it can include all the information it would need for a fully-functional import, <em>however</em> destination systems running different software may not be able to import all of that information (especially if it includes non-standard features) and use it exactly the same way.  This specification does not attempt to achieve perfect interoperability between diverse systems, but instead to make reasonable trade-offs.</t>
        </section>
        <section anchor="extensibility">
          <name>Extensibility</name>
          <t>This format should be extensible to accommodate types of personal data not explicitly mentioned or foreseen when writing these specs.</t>
        </section>
        <section anchor="flexible-granularity">
          <name>Flexible granularity</name>
          <t>This format should allow flexible granularity in two ways:</t>
          <t>1) It should enable easy access to separate types of data (e.g., emails vs. contacts), e.g. to allow for partial imports or exports</t>
          <t>2) While ideally representable as a single file, archives may also span several files due to reasons such as file size restrictions or incremental generation logic.</t>
          <t>(The ability for a user to export and/or backup an entire email account requires some accommodation of large amounts of data and risks of interruptions in downloads.  Splitting exports into multiple files during export is one possible solution.)</t>
        </section>
        <section anchor="accessible-for-local-tooling">
          <name>Accessible for local tooling</name>
          <t>PDPA should allow easy access for local tools (e.g., CLIs). While this may sound obvious, it is a key factor for the intended versatility of the format.</t>
        </section>
        <section anchor="efficiency">
          <name>Efficiency</name>
          <t>Since certain kinds of personal data might involve large quantities of data, major use cases for PDPA should be realizable in an efficient manner.</t>
          <t>For now, this is stated as an abstract guiding principle. Its actual dimensions and trade-offs need to be refined while evolving this specification.</t>
        </section>
      </section>
      <section anchor="related-work">
        <name>Related work</name>
        <t>Many email server implementors have found it desirable to have one or more file formats for storing email in a file system even when the primary active email storage is more commonly a database.  Examples include <xref target="PST"/> files (Outlook), NSF (Notes), <xref target="GoogleTakeout"/>, Maildir, MBOX.  File formats are already used for interoperability in many cases even when not standardized.</t>
        <t>This specification follows that pattern in order to build on these partial successes.  By standardizing one format, we expect to be able to satisfy use cases that are harder to satisfy with a plurality of formats, such as use cases for server-to-server transfer of email account data during account migrations.  Specifications that explain how to create these archives in different situations can refer to this specification.</t>
      </section>
    </section>
    <section anchor="approach">
      <name>Approach</name>
      <section anchor="using-json-mostly">
        <name>Using JSON (mostly)</name>
        <t>JSON is used in this spec for new metadata and for objects including contacts, tasks,  events and notes.  However, the Email Message Format <xref target="RFC5322"/> is used for email message content. Individual items are stored in individual files, which are referenced in collection metadata. Finally these JSON and other file formats are packaged and compressed together in a standard but flexible way.</t>
        <t>Our rationale for using JSON to the extent reasonable:</t>
        <ul spacing="normal">
          <li>
            <t>We envision an export format being used not just by developers of full IMAP servers but also by developers building task management systems, calendar systems that don't include email, etc.</t>
          </li>
          <li>
            <t>We should minimize requiring multiple libraries to parse different formats. If the Metadata is going to be in JSON, it would really help to have the item data in JSON.</t>
          </li>
          <li>
            <t>Personal data formats must be extensible and extensibility for JSON is well-understood.</t>
          </li>
        </ul>
        <t>Using JSON for all the data <em>except</em>  EML files was carefully considered.  EML files are rather specialized and more challenging to replace.  Much of email is not structured data but content and involves MIME.  EML is more likely to be a system's native data store, unlike VCARD and VTODO which are most commonly transformed for use in a relational data store for active use.  Finally, email signature implementations like S/MIME and OpenPGP would be less disrupted by keeping EML.</t>
        <t>Information not covered by these existing file formats, but still necessary for migration or backup/restore of an email account, is packaged into JSON files. JSON structure and values are defined with CDDL <xref target="RFC8610"/>.  The JSON files for email folders and other collections contain references to individual resources by unique ID and filename.</t>
      </section>
      <section anchor="approach-to-partial-updates">
        <name>Approach to partial updates</name>
        <t>Our use case requirements <eref target="use_cases">above</eref> included some very common personal use cases that motivate exporting only a time-limited set of items, but retaining the ability to use that subset export to update a previously acquired or maintained snapshot.  These are partial updates - partial exports able to update a full copy.  Our approach is to define a version of the archive format that includes a subset of a repository's content, and additionally some change markers necessary to maintain consistency.</t>
        <t>A partial-update export</t>
        <ul spacing="normal">
          <li>
            <t>Contains new items just like a full export.</t>
          </li>
          <li>
            <t>Omits unchanged items from before the time cutoff.</t>
          </li>
          <li>
            <t>Does NOT list unchanged items in folder listings either.</t>
          </li>
          <li>
            <t>Allows updated items to be identified so they can replace previous versions</t>
          </li>
          <li>
            <t>Allows deleted items to be identified so they could be removed in the updated snapshot</t>
          </li>
        </ul>
        <t>The existing definitions for UIDs and 'updated' in JMAP and IMAP should make this quite possible. Also IMAP MODSEQs <xref target="RFC7162"/> can be used for flag changes.</t>
      </section>
      <section anchor="approach-to-synchronization">
        <name>Approach to synchronization</name>
        <t>Email and calendaring services appear to already do synchronization just fine, but this is via a client-server model.  The client drives the read and write requests until content is synchronized, using mostly UIDs and timestamps.</t>
        <t>Archive and export formats aren't part of this client-server model, and the work to make server-to-server or peer-to-peer synchronization work perfectly is substantial (involving features such as version numbers or change logs -- features that aren't commonly standardized for the objects handled in this spec).  Still, there are some things possible with archive formats and the current object definitions that are sensible.  Our approach is to describe what is possible with the fields that exist, and mandate those fields be used, so that users aren't left with multiple locations for their data and no way to repeatedly synchronize them.</t>
        <t>As an illustrative use case, let the user have contacts stored in one email service and also in one mobile device platform doing online backups.  The email platform creates contacts when the user emails new recipients, or receives contact information over email.  The mobile device platform synchronizes contact information from a phone.  The email service is not a client of the mobile device platform, nor is the mobile device platform a client of the email service, so client-to-server protocols cannot directly synchronize the data between these two services.  A user attempting to solve this by repeatedly importing contacts into one system from the other may find this works poorly - for example, it might create new contact objects over and over for the same contact data even if it is unchanged, and deleted objects may re-animate after being re-copied.</t>
        <t>Both servers ought to allow exporting of contact data (along with any other data covered in this specification), including especially the UID and updated (timestamp) fields.   This would allow at least some sensible personal workflows or for 3rd party tools to make synchronization work better.</t>
        <t>When importing contact data (along with any other data covered in this specification), a service needs to take note of the UID in the import, and use it as the UID for creating a new object, so that it may be later avoid being recreated. If the service importing already has the said UID, the service should compare 'updated' timestamps and use that to decide how to update the object with new values.  An object that hasn't changed since last imported should remain unchanged and not updated.</t>
        <t>This approach to synchronization is imperfect.  Let the user have performed one synchronization by exporting from the email service and importing to the mobile device platform.  If the user updates a contact on the email service (e.g adding a street address) and the mobile platform also updates the contact (e.g. adding an avatar link), then the user attempts to repeat the synchronization, both services will have a new 'updated' timestamp on the same object UID, and the earlier of the two changes will get wiped out.  Nevertheless, a disciplined user can remember to only make changes on the email service and always copy them over to the mobile platform, and avoid many such lost updates.</t>
        <t>Based on the approach described here, this specification standardizes some behavior for both exporters and importers, to maximize potential success.</t>
      </section>
    </section>
    <section anchor="solution-requirements">
      <name>Solution Requirements</name>
      <t>These technical requirements on the solution are intended to meet the goals above, and to add more specifics about how those goals are intended to be met with the architecture chosen.   This section does not attempt to translate the solution requirements into implementor requirements.</t>
      <t>Folder format requirements</t>
      <ul spacing="normal">
        <li>
          <t>can include partial results, showing only a subset of objects within the folder</t>
        </li>
        <li>
          <t>can include a human-readable representation of the meaning of that subset (e.g. a date filter, or recipient filter)</t>
        </li>
      </ul>
      <t>Email object format requirements</t>
      <ul spacing="normal">
        <li>
          <t>can maintain full fidelity including preserving character sets, content transfer encoding of body parts and exact MIME structure</t>
        </li>
      </ul>
      <t>Compression and packaging of resources</t>
      <ul spacing="normal">
        <li>
          <t>Servers can bundle resources together in different ways to be flexible in handling size and network limitations.  Servers must be able to choose optimal file size and organization of information within files.</t>
        </li>
      </ul>
      <t>Synchronization requirements</t>
      <ul spacing="normal">
        <li>
          <t>Can see which items are identical in two systems, e.g. one system previously imported an item exported by the other.</t>
        </li>
        <li>
          <t>Can detect changes made since the last time an item was imported, in a way that supports replacing an older version previously synchronized with a newer version that has edits.</t>
        </li>
      </ul>
    </section>
    <section anchor="file-format">
      <name>File format</name>
      <t>This section describes the internal "raw" file format of a personal data portability archive. For discussion about a surrounding container format, see section "open issues".</t>
      <t>PDPArchive in general consists of:</t>
      <ul spacing="normal">
        <li>
          <t>A main metadata file ("archive.json")</t>
        </li>
        <li>
          <t>Top-level folders for each data type ("/mail")</t>
        </li>
        <li>
          <t>Subfolders representing actual collections of individual data items plus additional metadata files</t>
        </li>
      </ul>
      <section anchor="archive-metadata-file">
        <name>Archive metadata file</name>
        <t>The archive.json file consists of three main sections with metadata about the archive as exported, the dataset used, and the source of the data.</t>
        <ul spacing="normal">
          <li>
            <t>archive: general information about the archive</t>
          </li>
          <li>
            <t>dataset: characteristics of the dataset itself</t>
          </li>
          <li>
            <t>datasource: meta-information about the dataset</t>
          </li>
        </ul>
        <table>
          <thead>
            <tr>
              <th align="left">Key</th>
              <th align="left">Description and requirements</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">archive/id</td>
              <td align="left">Archive identifier, generated by archive generator, <bcp14>MUST</bcp14> be unique</td>
            </tr>
            <tr>
              <td align="left">archive/name</td>
              <td align="left">Human readable label</td>
            </tr>
            <tr>
              <td align="left">archive/note</td>
              <td align="left">Note for human use and display (optional)</td>
            </tr>
            <tr>
              <td align="left">archive/legal</td>
              <td align="left">Legal desclaimer (optional)</td>
            </tr>
            <tr>
              <td align="left">archive/timestamp</td>
              <td align="left">Archive timestamp</td>
            </tr>
            <tr>
              <td align="left">archive/version</td>
              <td align="left">PDPA spec version</td>
            </tr>
            <tr>
              <td align="left">archive/generator</td>
              <td align="left">Archive generator</td>
            </tr>
            <tr>
              <td align="left">dataset/extent</td>
              <td align="left">Extent of the archive (full, partial)</td>
            </tr>
            <tr>
              <td align="left">dataset/description</td>
              <td align="left">Human readable description, containing e.g. date, folder, size (optional)</td>
            </tr>
            <tr>
              <td align="left">dataset/datatypes</td>
              <td align="left">List of data types</td>
            </tr>
            <tr>
              <td align="left">dataset/languagetag</td>
              <td align="left">BCP 47 language tag for the dominant language in the dataset</td>
            </tr>
            <tr>
              <td align="left">dataset/timezone</td>
              <td align="left">IANA tz identifier for the dataset</td>
            </tr>
            <tr>
              <td align="left">datasource/service</td>
              <td align="left">Information about the source service (id, url, ..)</td>
            </tr>
            <tr>
              <td align="left">datasource/account</td>
              <td align="left">Information about the source account (id, type, ...)</td>
            </tr>
          </tbody>
        </table>
        <t>More formally:</t>
        <figure anchor="archive-schema">
          <name>General JSON Schema for archive.json</name>
          <artwork><![CDATA[
{
  "$id": "https://id.schemas.pub/o/DTI/PDPArchive/archive",
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "title": "Schema for Personal Data Portability Archive (pdparchive) Archive Metadata",
  "type": "object",
  "required": ["archive", "dataset", "datasource"],
  "archive": {
    "type": "object",
    "required": ["id", "name", "timestamp", "version", "generator"],
    "properties": {
      "id": {
        "type": "string"
      },
      "generator": {
        "type": "string"
      },
      "legal": {
        "type": "string"
      },
      "name": {
        "type": "string"
      },
      "note": {
        "type": "string"
      },
      "timestamp": {
        "type": "string",
        "format": "date-time"
      },
      "version": {
        "type": "string"
      }
    }
  },
  "dataset": {
    "type": "object",
    "required": ["extent", "languagetag", "timezone"],
    "properties": {
      "datatypes": {
        "type": "array",
        "items": {
          "type": "string"
        }
      },
      "extent": {
        "type": "string"
      },
      "languagetag": {
        "type": "string"
      },
      "description": {
        "type": "string"
      },
      "timezone": {
        "type": "string"
      }

    }
  },
  "datasource": {
    "type": "object",
    "properties": {
      "account": {
        "type": "string"
      },
      "service": {
        "type": "string"
      }
    }
  }
}
]]></artwork>
        </figure>
        <t>Example of archive.json (full export):</t>
        <figure anchor="archive-example">
          <name>A basic archive.json example</name>
          <artwork><![CDATA[
{ 
  "$schema": "https://id.schemas.pub/o/DTI/PDPArchive/archive",
  "archive": {
  
    "id": "b47c1b85-c085-48b9-ae15-cb1b455422cd",
    "archive_id": "123",
    "name": "Jane's data export (2025-10-19)",
    "note": "Personal account export", 
    "timestamp": "2025-10-18T23:20:59Z",
    "version": "PDPA v1.0",
    "generator": "PDPA exporter v0.9"
  },
  "dataset": {
    "description": "Export generated for account holder Oct 19, 2025 (scope: Oct 19, 2024 - Oct 19, 2025)",
    "extent": "FULL",
    "datatypes": ["MAIL"],
    "languagetag": "en_ca",
    "timezone": "America/Montreal"
  },
  "datasource": {
    "account": "marieclaire"
  }
}
]]></artwork>
        </figure>
      </section>
      <section anchor="folder-structure">
        <name>Folder structure</name>
        <t>Rather than have deeply nested JSON with folder information inside folder
information inside archive index JSON files, this approach uses file system
directory structure with separate files for archive metadata and folder
metadata as well as item data.</t>
        <ul spacing="normal">
          <li>
            <t>Folders can be nested.  Any kind of content here can be within nested folders -- this is a necessary feature for email, but extends to content like contacts that aren't always represented in nested folders.   (TODO: elsewhere, describe the requirements for an importing system to preserve folders or not.)</t>
          </li>
          <li>
            <t>Names of files do not have to be globally unique.   Indexes and folder contents listings can name files relatively to their location in the archive structure, which means that references may not be resolvable if that context is lost.</t>
          </li>
          <li>
            <t>Individual content items are individual files.  This may not always be the easiest choice for exporters who must generate a large number of files for individually small items (contrast to a JSON stream including all objects) but as an archive format, the individual files allow more clarity in individual handling, transactions and errors.</t>
          </li>
        </ul>
        <artwork><![CDATA[
archive.json
/mail/
    /Archive/
        folder.json
        m1.eml
        m2.eml
        m3.eml
        ...
    /Archive/2023/
        folder.json
        m1.eml
        m2.eml
        m3.eml
        ...
    /Archive/2024/
        folder.json
        m1.eml
        m2.eml
        m3.eml
        ..
    /INBOX/
        folder.json
        m1.eml
        m2.eml
        m3.eml
        ...
    /Sent Mail/
        folder.json
        m1.eml
        m2.eml
        ...
/contacts/
     contact1.json
     contact2.json
     ...
/calendars/
    /calendar2/
        event1.json
        event2.json
/sieve/
/blob/
    ...?
]]></artwork>
        <section anchor="file-and-folder-names">
          <name>File and folder names</name>
          <t>Because filenames can be generated by the exporting server, it is always possible to generate non-colliding filenames.  Display names are NOT intended to be determined by file names, but instead by fields within each file.  Similarly, filenames are NOT intended to be globally unique IDs.</t>
          <t>Mail folder names are defined in <xref target="RFC9051"/> (IMAP v4 rev2) with great freedom for servers.  Servers may or may not treat mailbox names as case sensitive.  Folder names may even include non-graphic characters, "%" and "*". Hierarchy separators may even differ among IMAP servers although "/" is probably most common.</t>
          <t>Since this specification is new, it is possible to be more constrained.  This specification only supports "/" as a folder separator.</t>
        </section>
      </section>
      <section anchor="data-formats">
        <name>Data formats</name>
        <section anchor="email">
          <name>Email</name>
          <t>Each IMAP/JMAP folder is represented as subdirectory under "mail" directory. For
example, the folder INBOX would be represented as "mail/INBOX", and the
folder "Archive/2024/2024-12" would be represented
as "mail/Archive/2024/2024-12". Folder names are encoded in UTF-8.</t>
          <t>Each folder metatadata is described by "folder.json" (this name is <bcp14>REQUIRED</bcp14>),
which has the following fields:</t>
          <table>
            <thead>
              <tr>
                <th align="left">Attribute Name</th>
                <th align="center">Type</th>
                <th align="left">Mandatory?</th>
                <th align="left">Comment</th>
              </tr>
            </thead>
            <tbody>
              <tr>
                <td align="left">allowed_keywords</td>
                <td align="center">array of strings (IMAP keywords)</td>
                <td align="left">No</td>
                <td align="left">PERMANENTFLAGS minus "\*" <xref target="IMAP4"/></td>
              </tr>
              <tr>
                <td align="left">uid</td>
                <td align="center">string</td>
                <td align="left">
                  <bcp14>SHOULD</bcp14>*</td>
                <td align="left">Use OBJECTID from <xref target="RFC8474"/></td>
              </tr>
              <tr>
                <td align="left">last_uid</td>
                <td align="center">unsigned 32 bit integer</td>
                <td align="left">Yes</td>
                <td align="left">Last UID assigned in the folder. It is UIDNEXT value minus 1 <xref target="IMAP4"/></td>
              </tr>
              <tr>
                <td align="left">recent_uid</td>
                <td align="center">unsigned 32 bit integer</td>
                <td align="left">No</td>
                <td align="left">Lowest UID of a message with the \Recent flag <xref target="IMAP4"/></td>
              </tr>
              <tr>
                <td align="left">uidvalidity</td>
                <td align="center">unsigned 32 bit integer</td>
                <td align="left">Yes</td>
                <td align="left">UIDVALIDITY value <xref target="IMAP4"/></td>
              </tr>
              <tr>
                <td align="left">is_subscribed</td>
                <td align="center">boolean</td>
                <td align="left">Yes</td>
                <td align="left">Is the folder returned by IMAP LSUB? <xref target="IMAP4"/></td>
              </tr>
              <tr>
                <td align="left">deleted_at</td>
                <td align="center">string (timestamp) or null</td>
                <td align="left">No</td>
                <td align="left">Folder has been DELETED - this is a tombstone</td>
              </tr>
              <tr>
                <td align="left">myrights</td>
                <td align="center">string</td>
                <td align="left">No</td>
                <td align="left">See Section 3.5 of <xref target="RFC4314"/>. For example "rwiptsldaex"</td>
              </tr>
              <tr>
                <td align="left">highest_modseq</td>
                <td align="center">unsigned 64 bit integer</td>
                <td align="left">No</td>
                <td align="left">HIGHESTMODSEQ value <xref target="RFC7162"/></td>
              </tr>
              <tr>
                <td align="left">special_use</td>
                <td align="center">string</td>
                <td align="left">No</td>
                <td align="left">
                  <xref target="RFC6154"/> SPECIAL-USE value. E.g. "inbox", "sent", "drafts", "junk", etc.</td>
              </tr>
              <tr>
                <td align="left">sort_order</td>
                <td align="center"> </td>
                <td align="left">No</td>
                <td align="left">See Section 2, <xref target="JMAP"/>]</td>
              </tr>
              <tr>
                <td align="left">items</td>
                <td align="center">array of content item names and flags</td>
                <td align="left">Yes</td>
                <td align="left">Mapping from UIDs to corresponding message files included in the archive</td>
              </tr>
              <tr>
                <td align="left">original_name</td>
                <td align="center">string</td>
                <td align="left">No</td>
                <td align="left">Original folder name (relative to its parent, if any) if the name can't be represented in filesystem, e.g. if it includes special characters</td>
              </tr>
              <tr>
                <td align="left">comment</td>
                <td align="center">string</td>
                <td align="left">No</td>
                <td align="left">Can include information about partial export or filter used in human readable UTF-8 text</td>
              </tr>
              <tr>
                <td align="left">removed</td>
                <td align="center">array of unsigned 32 bit integers</td>
                <td align="left">No</td>
                <td align="left">List of messages (UIDs) removed since the last export</td>
              </tr>
            </tbody>
          </table>
          <t>The uid for a folder <bcp14>SHOULD</bcp14> be present.  For IMAP folders, this <bcp14>SHOULD</bcp14> be the OBJECTID defined by <xref target="RFC8474"/>.</t>
          <t>In an incremental update, a folder can both have items added/removed and be deleted in the time
period elapsed, so it could have removed messages and flags as well as be a tombstone.
A full archive or snapshot <bcp14>SHOULD NOT</bcp14> include deleted folders with the deleted_at value.</t>
          <t>The folder.json format can be defined generally as follows.  Note that this
covers folders containing tasks, notes, contacts or emails, so the fields that
are specific to IMAP folders are not required.</t>
          <figure anchor="folder-schema">
            <name>General JSON Schema for folder.json</name>
            <artwork><![CDATA[
{
  "$id": "https://id.schemas.pub/o/DTI/PDPArchive/folder",
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "title": "Schema for Personal Data Portability Archive (pdparchive) Folder Manifest",

  "$defs": {
    "mod-sequence-value": {
      "type": "integer",
      "minimum": 0,
      "exclusiveMaximum": 18446744073709551616,
      "$comment": "Per RFC4551, a 'mod-sequence-value' is a positive unsigned 64-bit integer"
    },
    "imap-number": {
      "type": "integer",
      "minimum": 0,
      "exclusiveMaximum": 4294967296,
      "$comment": "IMAP unsigned 32-bit integer"
    },
    "imap-nz-number": {
      "type": "integer",
      "minimum": 1,
      "exclusiveMaximum": 4294967296,
      "$comment": "IMAP non-zero unsigned 32-bit integer"
    }
  },

  "type": "object",
  "required": ["name", "items"],
  "properties": {
    "name": {
      "type": "string"
    },
    "uid": {
      "type": "string"
    },
    "removed": {
      "type": "array",
      "items": {
        "type": "string"
      }
    },
    "comment": {
      "type": "string"
    },
    "original_name": {
      "type": "string"
    },
    "sort_order": {
      "type": "integer",
      "minimum": 1,
      "exclusiveMaximum": 2147483648
    },
    "modseqs": {
      "type": "object",
      "additionalProperties": {
        "$ref": "#/$defs/mod-sequence-value"
      }
    },
    "highest_modseq": {
      "$ref": "#/$defs/mod-sequence-value"
    },
    "special_use": {
      "type": "string",
      "description": "Can be \\All, \\Archive, \\Drafts, \\Flagged, \\Junk, \\Sent or \\Trash as per RFC6154.",
      "pattern": "^\\\\"
    },
    "myrights": {
      "type": "string"
    },
    "is_subscribed": {
      "type": "boolean"
    },
    "deleted_at": {
      "type": "string",
      "format": "date-time"
    },
    "last_uid": {
      "description": "Follows the IMAP4 requirements for unsigned 32-bit int",
      "$ref": "#/$defs/imap-number"
    },
    "recent_uid": {
      "description": "Follows the IMAP4 requirements for unsigned 32-bit int",
      "$ref": "#/$defs/imap-number"
    },
    "uidvalidity": {
      "description": "Follows the IMAP4 requirements for non-zero unsigned 32-bit int",
      "$ref": "#/$defs/imap-nz-number"
    },
    "items": {
      "type": "array",
      "items": {
        "type": "object",
        "required": ["uid", "filename"],
        "properties": {
          "uid": {
            "description": "Either an IMAP UID (non-zero unsigned 32-bit integer) or a string identifier such as a UUID",
            "oneOf": [
              {
                "$ref": "#/$defs/imap-nz-number"
              },
              {
                "type": "string"
              }
            ]
          },
          "filename": {
            "type": "string"
          },
          "flags": {
            "type": "array",
            "items": {
              "type": "string"
            }
          }
        }
      }
    },
    "flags": {
      "type": "object",
      "additionalProperties": {
        "type": "array",
        "items": {
          "type": "string"
        }
      }
    },
    "allowed_keywords": {
      "type": "array",
      "items": {
        "type": "string"
      }
    }
  }
}
]]></artwork>
          </figure>
          <t>Example of folder.json (full export):</t>
          <figure anchor="example1">
            <name>A basic folder.json example</name>
            <artwork><![CDATA[
{
  "$schema": "https://id.schemas.pub/o/DTI/PDPArchive/folder",
  "name": "AVClub",
  "uid": "M6d99ac3275bb4e",
  "allowed_keywords": ["$forwarded", "$MDNSent", "$ismailinglist"],
  "last_uid": 16,
  "highest_modseq": 6371729,
  "recent_uid": 15,
  "uidvalidity": 1107190787,
  "is_subscribed": true,
  "special_use": "\\Sent",
  "sort_order": 1,
  "myrights": "rwiptsldaex",

  "items": [
    {
      "uid": "1",
      "filename": "msg-1.eml",
      "flags": ["$seen"]
    },
    {
      "uid": "3", 
      "filename": "msg-3.eml",
      "flags": ["$seen", "$flagged"]
    },
    {
      "uid": "15",
      "filename": "imported-ABC.eml",
      "flags": ["$answered", "$forwarded"]
    }
  ]
}
]]></artwork>
          </figure>
          <t>UIDs <bcp14>SHOULD</bcp14> always be strings.  This allows systems with UIDs that are not
integers to export and synchronize data reliably.  IMAP UIDs can always be
converted back to integers.</t>
          <t>Example of folder.json that shows incremental changes from the previous export shown above.
In this example 2 messages with UIDs 3 and 15 were removed. Message with UID 1 has updated
flags. Several new messages were added, some of them are with flags set.</t>
          <figure anchor="example2">
            <name>A folder.json example with incremental changes</name>
            <artwork><![CDATA[
{
  "$schema": "https://id.schemas.pub/o/DTI/PDPArchive/folder",
  "name": "AVClub",
  "allowed_keywords": ["$forwarded", "$MDNSent", "$ismailinglist"],
  "last_uid": 21,
  "highest_modseq": 6371845,
  "recent_uid": 20,
  "uidvalidity": 1107190787,
  "is_subscribed": true,
  "special_use": "\\Sent",
  "sort_order": 1,
  "myrights": "rwiptsldaex",
  "removed": ["3", "15"],

  "items": [
    {
      "uid": "1",
      "filename": "msg-1.eml",
      "flags": ["$seen", "$answered"]   
    },
    {
      "uid": "17",
      "filename": "msg-17.eml",
      "flags": ["$seen", "$answered", "$forwarded"]   
    },
    {
      "uid": "19",
      "filename": "msg-19.eml",
      "flags": ["$seen"]   
    },
    {
      "uid": "20",
      "filename": "msg-20.eml"
    },
    {
      "uid": "21",
      "filename": "msg-21.eml"
    }
  ]

}
]]></artwork>
          </figure>
          <t>Finally, to show an example containing no IMAP content but also meets schema
requirements:</t>
          <figure anchor="example-folder-tasks">
            <name>A folder.json example with incremental changes</name>
            <artwork><![CDATA[
{
  "$schema": "https://id.schemas.pub/o/DTI/PDPArchive/folder",
  "name": "AVClub Tasks",
  "sort_order": 2,
  "myrights": "rwiptsldaex",

  "items": [
    {
      "uid": "56cb57e3-dfa9-40b5-9011-fe658909d138",
      "filename": "elect a new chair.json"
    },
    {
      "uid": "65047c09-f236-485b-a011-5f68580c0d4d",
      "filename": "send Jan newsletter.json"
    },
    {
      "uid": "bd57adf2-3862-4256-ac2e-aafaf2ce8d71",
      "filename": "add Mary to project folders.json"
    }
  ]
}
]]></artwork>
          </figure>
        </section>
        <section anchor="contacts">
          <name>Contacts</name>
          <t><xref target="vCard"/> has long been the basis for address book and contact data representation in
structured data files.  The specifications for <xref target="JSContact"/> and JMAP for Contacts <xref target="RFC9610"/>
do a bunch of the work to explain how to do this in JSON, and in particular RFC9610 explains
how to express references between objects (e.g. an address book and a contact in that address
book) which is useful for a full export that can have its references reconstructed.  This section
explains how to use the fields and structures of those specifications within a PDP Archive export.</t>
          <section anchor="individual-contact-items">
            <name>Individual Contact Items</name>
            <t>Individual contact items build on <xref target="RFC9610"/> and <xref target="JSContact"/> which build on <xref target="vCard"/>.</t>
            <ul spacing="normal">
              <li>
                <t>The globally unique <tt>uid</tt> property is mandatory in JSContact and <bcp14>MUST</bcp14> be included in PDP archive.</t>
              </li>
              <li>
                <t>The <tt>updated</tt> property is optional in JSContact but <bcp14>MUST</bcp14> be included in PDP archive.</t>
              </li>
              <li>
                <t>The <tt>rev</tt> property defined in <xref target="vCard"/>, which is not included in <xref target="JSContact"/>,
may already be available in implementations.  It <bcp14>MAY</bcp14> also be included as a field on a contact,
in which case it is a simple value field holding a timestamp.</t>
              </li>
              <li>
                <t>The <tt>@type</tt> property should be "Card" because <xref target="JSContact"/> uses a value
of "Card" for @type and registers that in https://www.iana.org/assignments/jscontact/jscontact.xhtml.
JMAP for Contacts uses "ContactCard" and registers that in
https://www.iana.org/assignments/jmap/jmap.xhtml but does not use that as a <tt>@type</tt> value directly.</t>
              </li>
            </ul>
            <figure anchor="contact-schema">
              <name>Schema for contacts</name>
              <artwork><![CDATA[
{
  "$id": "https://id.schemas.pub/o/DTI/PDPArchive/contact",
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "title": "Schema for Personal Data Portability Archive (pdparchive) Contact",
  "type": "object",
  "required": ["@type", "version", "uid", "updated"],
  "properties": {
    "@type": {
      "type": "string",
      "const": "Card"
    },
    "version": {
      "type": "string"
    },
    "uid": {
      "description": "Globally unique identifier for the contact",
      "type": "string"
    },
    "id": {
      "description": "JMAP ID for the contact",
      "type": "string"
    },
    "created": {
      "type": "string",
      "format": "date-time"
    },
    "updated": {
      "type": "string",
      "format": "date-time"
    },
    "rev": {
      "description": "Revision timestamp from vCard RFC6350; may be included alongside updated",
      "type": "string",
      "format": "date-time"
    },
    "kind": {
      "type": "string",
      "enum": ["individual", "group", "org", "location", "device", "application"]
    },
    "addressBookIds": {
      "type": "object",
      "additionalProperties": {
        "type": "boolean"
      }
    },
    "name": {
      "type": "object",
      "properties": {
        "full": {
          "type": "string"
        },
        "defaultSeparator": {
          "type": "string"
        },
        "isOrdered": {
          "type": "boolean"
        },
        "components": {
          "type": "array",
          "items": {
            "type": "object",
            "required": ["kind", "value"],
            "properties": {
              "kind": {
                "type": "string",
                "enum": ["title", "given", "given2", "surname", "surname2",
                         "generation", "credential", "separator"]
              },
              "value": {
                "type": "string"
              },
              "phonetic": {
                "type": "string"
              }
            }
          }
        }
      }
    },
    "members": {
      "description": "For group contacts; maps member UIDs to true",
      "type": "object",
      "additionalProperties": {
        "type": "boolean"
      }
    },
    "relatedTo": {
      "description": "Maps UIDs of related contacts to relation objects",
      "type": "object",
      "additionalProperties": {
        "type": "object",
        "properties": {
          "relation": {
            "type": "object",
            "additionalProperties": {
              "type": "boolean"
            }
          }
        }
      }
    },
    "notes": {
      "description": "Maps note IDs to note objects",
      "type": "object",
      "additionalProperties": {
        "type": "object",
        "required": ["note"],
        "properties": {
          "note": {
            "type": "string"
          },
          "created": {
            "type": "string",
            "format": "date-time"
          },
          "author": {
            "type": "object",
            "properties": {
              "name": {
                "type": "string"
              }
            }
          }
        }
      }
    }
  }
}
]]></artwork>
            </figure>
            <t>We make some specific requirements on the <tt>updated</tt> value so that it can be
useful for synchronization.  See the section on <tt>updated</tt> and <tt>uid</tt> specifically <xref target="uid-updated"/>.
Cards can also have an <tt>id</tt> value; nevertheless <tt>uid</tt> is required by this specification
for consistency of identifying different kinds of objects.  See also how <xref target="RFC9610"/> contrasts
<tt>id</tt> with <tt>uid</tt>.</t>
            <t>When the structured data is prepared, a contact can be exported in a file with an arbitrary name
using a limited set of characters suitable for interoperability across filesystems.</t>
            <t>For example, a file called 'contact1.json' could contain:</t>
            <figure anchor="example3">
              <name>A contact example called contact1.json in the export</name>
              <artwork><![CDATA[
{
  "$schema": "https://id.schemas.pub/o/DTI/PDPArchive/contact",
   "@type": "Card",
   "version": "1.0",
   "uid": "22B2C7DF-9120-4969-8460-05956FE6B065",
   "id": "42",
   "created": "2021-10-31T22:27:10Z",
   "updated": "2021-10-31T22:27:10Z",
   "kind": "individual",
   "addressBookIds": {
      "062adcfa-105d-455c-bc60-6db68b69c3f3": true
   },
   "name": {
       "components": [
         { "kind": "given", "value": "John" },
         { "kind": "surname", "value": "Doe" }
       ],
       "isOrdered": true
   },

   "relatedTo": {
      "urn:uuid:f81d4fae-7dec-11d0-a765-00a0c91e6bf6": {
         "relation": {
           "friend": true
         }
       }
   },

   "notes": {
     "n1": {
       "note": "Open office hours are 1600 to 1715 EST, Mon-Fri",
       "created": "2022-11-23T15:01:32Z",
       "author": {
         "name": "John"
       }
     }
   }
}
]]></artwork>
            </figure>
            <t>For clarity, this example includes:
* How a card can reference address books which are exported as separate files in the overall export
* How a card can reference other cards using <tt>relatedTo</tt>
* A card can contain arbitrary notes - those are not necessarily exported as separate files even
though notes are also an object that can be included as individual files in a PDPArchive export.</t>
            <t>Because a ContactCard item can reference an AddressBook item, if a system exports contacts
belonging to address books it <bcp14>SHOULD</bcp14> also export the referenced AddressBook objects.  Likewise,
it <bcp14>SHOULD</bcp14> export the other ContactCard objects that are referenced in the 'relatedTo' field.
A permission or scope inconsistency would be one reason why the exporting system would not do so.
For example, if the user chose to export only a public address book containing the "John Doe"
contact, and not the private "Wedding guests" address book that John Doe also belonged to,
then the private address book would either appear as an unresolvable ID or be cleaned up
so that it didn't appear (implementor's choice).  Likewise, when "John Doe" is exported
as part of a single address book export, but the <tt>friend</tt> relation in <tt>relatedTo</tt> is not
exported because they're not in the same address book, the <tt>relatedTo</tt> value may be included
in the export even if not resolvable by some users of the export file.</t>
          </section>
          <section anchor="group-contact-items">
            <name>Group Contact Items</name>
            <t>Group contact items also refer to other contact items.  A file with an arbitrary name like "contact2.json"
could include:</t>
            <figure anchor="example4">
              <name>A group contact file example in the export as contact2.json</name>
              <artwork><![CDATA[
{
   "$schema": "https://id.schemas.pub/o/DTI/PDPArchive/contact",
   "@type": "Card",
   "version": "1.0",
   "kind": "group",
   "name": {
     "full": "The Doe family"
   },
   "uid": "urn:uuid:ab4310aa-fa43-11e9-8f0b-362b9e155667",
   "updated": "2021-10-31T22:27:10Z",
   "members": {
     "urn:uuid:03a0e51f-d1aa-4385-8a53-e29025acd8af": true,
     "urn:uuid:b8767877-b4a1-4c70-9acc-505d3819e519": true
   }
}
]]></artwork>
            </figure>
            <t>As with individual ContactCard items referencing objects that are not exported at the same time,
a group contact can contain references that are not resolvable within the export.  If the user
chooses to export all address books then presumably the "The Doe family" group members can
all be found somewhere in the export, but if they export only the address book containing
"The Doe family" group and not the address books containing individual members, those IDs
would not be found in the export.</t>
          </section>
        </section>
        <section anchor="using-rfc9610-address-book-objects">
          <name>Using RFC9610 address book objects</name>
          <t>The <xref target="vCard"/> specifications never defined a representation for address books.  Nor did
<xref target="JSContact"/>.  JMAP for Contacts <xref target="RFC9610"/> does.  Its model is clearly that of
non-exclusive collection membership: a Contact item may appear with the same UID in multiple
Address Books, and if the Contact item with that UID is updated in one it is updated in the other
also.</t>
          <t>Individual address book objects are returned in JMAP protocol messages with protocol wrappers.
It is the items inside the "list" element inside "AddressBook/get" that are nearly ready to
be represented as individual files in a PDPArchive. However, some things are missing:
* <tt>uid</tt> is called 'id' in JMAP for Contacts but this specification REQUIRES <tt>uid</tt>.
* <tt>updated</tt> is required
* The <tt>@type</tt> of AddressBook should be included within the data</t>
          <t>In the schema below, <tt>myRights</tt> (camelCase) is a JSON object with named boolean fields, unlike the IMAP <tt>myrights</tt> property which is a compact string of right-characters (e.g. <tt>"rwiptsld"</tt>).</t>
          <figure anchor="address-book-schema">
            <name>Schema for address book objects</name>
            <artwork><![CDATA[
{
  "$id": "https://id.schemas.pub/o/DTI/PDPArchive/address-book",
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "title": "Schema for Personal Data Portability Archive (pdparchive) Address Book",
  "type": "object",
  "required": ["@type", "uid", "updated", "name"],
  "$defs": {
    "rights": {
      "type": "object",
      "properties": {
        "mayRead": { "type": "boolean" },
        "mayWrite": { "type": "boolean" },
        "mayShare": { "type": "boolean" },
        "mayDelete": { "type": "boolean" }
      }
    }
  },
  "properties": {
    "@type": {
      "type": "string",
      "const": "AddressBook"
    },
    "uid": {
      "description": "Globally unique identifier for the address book",
      "type": "string"
    },
    "id": {
      "description": "JMAP server-set ID for the address book",
      "type": "string"
    },
    "updated": {
      "type": "string",
      "format": "date-time"
    },
    "name": {
      "type": "string",
      "minLength": 1,
      "maxLength": 255
    },
    "description": {
      "type": ["string", "null"]
    },
    "sortOrder": {
      "type": "integer",
      "minimum": 0,
      "maximum": 2147483647
    },
    "isDefault": {
      "type": "boolean"
    },
    "isSubscribed": {
      "type": "boolean"
    },
    "shareWith": {
      "description": "Maps principal IDs to their rights; null if not shared",
      "type": ["object", "null"],
      "additionalProperties": {
        "$ref": "#/$defs/rights"
      }
    },
    "myRights": {
      "$ref": "#/$defs/rights"
    }
  }
}
]]></artwork>
          </figure>
          <t>This example copies the examples in <xref target="RFC9610"/> so that interoperability between this spec and that one
is clear.</t>
          <t>A file with an arbitrary name like address-book1.json would contain:</t>
          <figure anchor="example5">
            <name>An address book file example</name>
            <artwork><![CDATA[
{
   "$schema": "https://id.schemas.pub/o/DTI/PDPArchive/address-book",
   "@type": "AddressBook",
   "uid": "062adcfa-105d-455c-bc60-6db68b69c3f3",
   "updated": "2020-01-09T14:32:01Z",
   "name": "Personal",
   "description": null,
   "sortOrder": 0,
   "isDefault": true,
   "isSubscribed": true,
   "shareWith": {
     "3f1502e0-63fe-4335-9ff3-e739c188f5dd": {
       "mayRead": true,
       "mayWrite": false,
       "mayShare": false,
       "mayDelete": false
     }
   },
   "myRights": {
     "mayRead": true,
     "mayWrite": true,
     "mayShare": true,
     "mayDelete": false
   }
}
]]></artwork>
          </figure>
          <t>address-book2.json would contain:</t>
          <figure anchor="example6">
            <name>Another address book file example</name>
            <artwork><![CDATA[
{
   "$schema": "https://id.schemas.pub/o/DTI/PDPArchive/address-book",
   "@type": "AddressBook",
   "uid": "cd40089d-35f9-4fd7-980b-ba3a9f1d74fe",
   "updated": "2020-01-09T14:32:01Z",
   "name": "Autosaved",
   "description": null,
   "sortOrder": 1,
   "isDefault": false,
   "isSubscribed": true,
   "shareWith": null,
   "myRights": {
     "mayRead": true,
     "mayWrite": true,
     "mayShare": true,
     "mayDelete": false
   }
}
]]></artwork>
          </figure>
          <t>Note that the first example includes a <tt>shareWith</tt> value, showing that the user's AddressBook has been
shared with in this case one other principal with the id "3f1502e0-63fe-4335-9ff3-e739c188f5dd".
This information can be exported and may be quite useful in case of backup/restore use cases.
However, it may not be useful in other administrative domains where the same concept of principals
does not allow the Principal ID to be resolved against the correct account.  In any case, the
object referred to by this Principal ID is not itself given representation in the PDP Archive export.</t>
        </section>
        <section anchor="calendar-events-tasks-and-groups">
          <name>Calendar events, tasks and groups</name>
          <t><xref target="JSCalendar"/> is the basis for representing events, tasks and groups in JSON.
This section explains how to export individual events and tasks within an archive.
JMAP for Calendars (https://datatracker.ietf.org/doc/draft-ietf-jmap-calendars/)
does provide some additional considerations when producing calendar data from a JMAP
system or to be consumed by a JMAP system, so it is also a normative reference.</t>
          <t>Note on  <xref target="CalDAV"/> compatibility: Although CalDAV servers are fairly common, they support the
older VEVENT and VTODO syntax.  This specification requires the JSCalendar syntax instead.
Either way, a server building a personal data archive is likely transforming an internal
implementation-specific relational data format to an export format.</t>
          <t>Note on ETag: CalDAV servers use the event's UID to identify the same object, and use ETags
to identify changed events, so that a CalDAV client may make sure it has the version a
server has before it updates an item, solving the lost-update problem.  Since this
specification doesn't attempt to solve the lost-update problem as well as client-server
protocols can, and since JSCalendar does not include the ETag of a calendar event in any way,
this specification does not include any requirements for ETags.</t>
          <t>Notes on specific fields:</t>
          <ul spacing="normal">
            <li>
              <t>The globally unique <tt>uid</tt> property is mandatory in JSCalendar and <bcp14>MUST</bcp14> be included.
See JMAP Calendars draft-ietf-jmap-calendars-26 section 1.4.1 for when the <tt>uid</tt> property can appear the same for
multiple recurrences of the same underlying event.</t>
            </li>
            <li>
              <t>The <tt>updated</tt> property is mandatory in JSCalendar and <bcp14>MUST</bcp14> be included.</t>
            </li>
            <li>
              <t>The <tt>sequence</tt> value is optional in JSCalendar but <bcp14>SHOULD</bcp14> be included if available.</t>
            </li>
            <li>
              <t>The <tt>@type</tt> property for one of these items <bcp14>MUST</bcp14> be "Event", "Task" or "Group".</t>
            </li>
            <li>
              <t>Recurrence rules <bcp14>SHOULD</bcp14> be fully exported, unless it's clear from the use case
or user request that the
destination for the data wants expanded recurrences within a specific time period.</t>
            </li>
            <li>
              <t>The <tt>calendarIds</tt> field defined in JMAP Calendars is <bcp14>REQUIRED</bcp14> in order to match up
events to the calendar they are supposed to appear in.</t>
            </li>
          </ul>
          <figure anchor="event-schema">
            <name>Schema for events</name>
            <artwork><![CDATA[
{
  "$id": "https://id.schemas.pub/o/DTI/PDPArchive/event",
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "title": "Schema for Personal Data Portability Archive (pdparchive) Calendar Event",
  "description": "A JSCalendar Event object as defined in RFC 8984, extended with the calendarIds property from JMAP for Calendars.",
  "type": "object",
  "required": ["@type", "uid", "updated", "calendarIds"],
  "$defs": {
    "LocalDateTime": {
      "type": "string",
      "pattern": "^[0-9]{4}-[0-9]{2}-[0-9]{2}T[0-9]{2}:[0-9]{2}:[0-9]{2}$",
      "$comment": "ISO 8601 date-time with no UTC offset; interpreted in the timeZone property"
    },
    "participant": {
      "type": "object",
      "properties": {
        "@type": {
          "type": "string",
          "const": "Participant"
        },
        "name": {
          "type": "string"
        },
        "email": {
          "type": "string",
          "format": "email"
        },
        "sendTo": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          }
        },
        "kind": {
          "type": "string",
          "enum": ["individual", "group", "resource", "location"]
        },
        "roles": {
          "type": "object",
          "additionalProperties": {
            "type": "boolean"
          }
        },
        "participationStatus": {
          "type": "string",
          "enum": ["needs-action", "accepted", "declined", "tentative", "delegated"]
        },
        "participationComment": {
          "type": "string"
        },
        "expectReply": {
          "type": "boolean"
        },
        "delegatedTo": {
          "type": "object",
          "additionalProperties": {
            "type": "boolean"
          }
        },
        "delegatedFrom": {
          "type": "object",
          "additionalProperties": {
            "type": "boolean"
          }
        },
        "memberOf": {
          "type": "object",
          "additionalProperties": {
            "type": "boolean"
          }
        }
      }
    },
    "location": {
      "type": "object",
      "properties": {
        "@type": {
          "type": "string",
          "const": "Location"
        },
        "name": {
          "type": "string"
        },
        "description": {
          "type": "string"
        },
        "coordinates": {
          "description": "Geo URI as defined in RFC 5870",
          "type": "string",
          "format": "uri"
        },
        "timeZone": {
          "type": "string"
        },
        "relativeTo": {
          "type": "string",
          "enum": ["start", "end"]
        },
        "links": {
          "type": "object",
          "additionalProperties": {
            "$ref": "#/$defs/link"
          }
        }
      }
    },
    "link": {
      "type": "object",
      "required": ["href"],
      "properties": {
        "@type": {
          "type": "string",
          "const": "Link"
        },
        "href": {
          "type": "string",
          "format": "uri"
        },
        "cid": {
          "type": "string"
        },
        "contentType": {
          "type": "string"
        },
        "size": {
          "type": "integer",
          "minimum": 0
        },
        "rel": {
          "type": "string"
        },
        "display": {
          "type": "string",
          "enum": ["badge", "graphic", "fullsize", "thumbnail"]
        },
        "title": {
          "type": "string"
        }
      }
    },
    "alert": {
      "type": "object",
      "required": ["@type", "trigger"],
      "properties": {
        "@type": {
          "type": "string",
          "const": "Alert"
        },
        "trigger": {
          "oneOf": [
            {
              "description": "Offset-based trigger relative to event start or end",
              "type": "object",
              "required": ["@type", "offset"],
              "properties": {
                "@type": {
                  "type": "string",
                  "const": "OffsetTrigger"
                },
                "offset": {
                  "description": "ISO 8601 duration (may be negative for before-start alerts)",
                  "type": "string"
                },
                "relativeTo": {
                  "type": "string",
                  "enum": ["start", "end"]
                }
              }
            },
            {
              "description": "Absolute date-time trigger",
              "type": "object",
              "required": ["@type", "when"],
              "properties": {
                "@type": {
                  "type": "string",
                  "const": "AbsoluteTrigger"
                },
                "when": {
                  "type": "string",
                  "format": "date-time"
                }
              }
            }
          ]
        },
        "acknowledged": {
          "type": "string",
          "format": "date-time"
        },
        "action": {
          "type": "string",
          "enum": ["display", "email", "uri"]
        }
      }
    },
    "recurrenceRule": {
      "description": "Recurrence rule as defined in RFC 8984 section 4.3.2",
      "type": "object",
      "required": ["frequency"],
      "properties": {
        "@type": {
          "type": "string",
          "const": "RecurrenceRule"
        },
        "frequency": {
          "type": "string",
          "enum": ["secondly", "minutely", "hourly", "daily", "weekly", "monthly", "yearly"]
        },
        "interval": {
          "type": "integer",
          "minimum": 1
        },
        "rscale": {
          "type": "string"
        },
        "skip": {
          "type": "string",
          "enum": ["omit", "backward", "forward"]
        },
        "firstDayOfWeek": {
          "type": "string",
          "enum": ["mo", "tu", "we", "th", "fr", "sa", "su"]
        },
        "byDay": {
          "type": "array",
          "items": {
            "type": "object",
            "required": ["day"],
            "properties": {
              "@type": { "type": "string", "const": "NDay" },
              "day": {
                "type": "string",
                "enum": ["mo", "tu", "we", "th", "fr", "sa", "su"]
              },
              "nthOfPeriod": {
                "type": "integer"
              }
            }
          }
        },
        "byMonthDay": {
          "type": "array",
          "items": { "type": "integer" }
        },
        "byMonth": {
          "type": "array",
          "items": { "type": "string" }
        },
        "byYearDay": {
          "type": "array",
          "items": { "type": "integer" }
        },
        "byWeekNo": {
          "type": "array",
          "items": { "type": "integer" }
        },
        "byHour": {
          "type": "array",
          "items": { "type": "integer", "minimum": 0, "maximum": 23 }
        },
        "byMinute": {
          "type": "array",
          "items": { "type": "integer", "minimum": 0, "maximum": 59 }
        },
        "bySecond": {
          "type": "array",
          "items": { "type": "integer", "minimum": 0, "maximum": 60 }
        },
        "bySetPosition": {
          "type": "array",
          "items": { "type": "integer" }
        },
        "count": {
          "type": "integer",
          "minimum": 1
        },
        "until": {
          "description": "LocalDateTime giving the last allowed occurrence",
          "$ref": "#/$defs/LocalDateTime"
        }
      }
    }
  },
  "properties": {
    "@type": {
      "type": "string",
      "const": "Event"
    },
    "uid": {
      "description": "Globally unique identifier for this event; stable across recurrences",
      "type": "string"
    },
    "id": {
      "description": "JMAP server-set ID for the event",
      "type": "string"
    },
    "created": {
      "type": "string",
      "format": "date-time"
    },
    "updated": {
      "description": "Last-modified timestamp; MUST be included for synchronization",
      "type": "string",
      "format": "date-time"
    },
    "prodId": {
      "type": "string"
    },
    "sequence": {
      "description": "Monotonically increasing revision counter; SHOULD be included if available",
      "type": "integer",
      "minimum": 0
    },
    "title": {
      "type": "string"
    },
    "description": {
      "type": "string"
    },
    "descriptionContentType": {
      "type": "string"
    },
    "start": {
      "$ref": "#/$defs/LocalDateTime"
    },
    "timeZone": {
      "description": "IANA time zone identifier for the start time",
      "type": "string"
    },
    "duration": {
      "description": "ISO 8601 duration string",
      "type": "string"
    },
    "status": {
      "type": "string",
      "enum": ["confirmed", "cancelled", "tentative"]
    },
    "priority": {
      "type": "integer",
      "minimum": 0,
      "maximum": 9
    },
    "privacy": {
      "type": "string",
      "enum": ["public", "private", "secret"]
    },
    "freeBusyStatus": {
      "type": "string",
      "enum": ["free", "busy"]
    },
    "color": {
      "description": "CSS color value for display purposes",
      "type": "string"
    },
    "calendarIds": {
      "type": "object",
      "minProperties": 1,
      "additionalProperties": {
        "type": "boolean"
      }
    },
    "participants": {
      "type": "object",
      "additionalProperties": {
        "$ref": "#/$defs/participant"
      }
    },
    "locations": {
      "type": "object",
      "additionalProperties": {
        "$ref": "#/$defs/location"
      }
    },
    "virtualLocations": {
      "description": "Maps virtual location IDs to VirtualLocation objects (e.g. video conference links)",
      "type": "object",
      "additionalProperties": {
        "type": "object",
        "properties": {
          "@type": { "type": "string", "const": "VirtualLocation" },
          "name": { "type": "string" },
          "description": { "type": "string" },
          "uri": { "type": "string", "format": "uri" }
        }
      }
    },
    "links": {
      "description": "Maps link IDs to Link objects (attachments, references)",
      "type": "object",
      "additionalProperties": {
        "$ref": "#/$defs/link"
      }
    },
    "keywords": {
      "type": "object",
      "additionalProperties": {
        "type": "boolean"
      }
    },
    "categories": {
      "type": "object",
      "additionalProperties": {
        "type": "boolean"
      }
    },
    "alerts": {
      "description": "Maps alert IDs to Alert objects",
      "type": "object",
      "additionalProperties": {
        "$ref": "#/$defs/alert"
      }
    },
    "useDefaultAlerts": {
      "type": "boolean"
    },
    "recurrenceRules": {
      "type": "array",
      "items": {
        "$ref": "#/$defs/recurrenceRule"
      }
    },
    "excludedRecurrenceRules": {
      "type": "array",
      "items": {
        "$ref": "#/$defs/recurrenceRule"
      }
    },
    "recurrenceOverrides": {
      "type": "object",
      "additionalProperties": {
        "type": "object"
      }
    }
  }
}
]]></artwork>
          </figure>
          <t>For example, a file called event1.json could contain:</t>
          <figure anchor="example-event1">
            <name>Event example</name>
            <artwork><![CDATA[
{
  "$schema": "https://id.schemas.pub/o/DTI/PDPArchive/event",
  "@type": "Event",
  "uid": "2a358cee-6489-4f14-a57f-c104db4dc2f2",
  "updated": "2020-01-09T14:32:01Z",
  "title": "Board Meeting",
  "start": "2024-10-25T09:00:00",
  "timeZone": "Europe/London",
  "duration": "PT1H30M",
  "participants": {
    "1": {
      "@type": "Participant",
      "name": "Jane Doe",
      "sendTo": {
        "mailto": "jane@example.com"
      },
      "roles": {
        "attendee": true
      }
    }
  },
  "calendarIds": {
    "062adcfa-105d-455c-bc60-6db68b69c3f3": true
  }
}
]]></artwork>
          </figure>
          <t>The event object includes a calendarIds property, which links it to the calendar collection it belongs to.</t>
        </section>
        <section anchor="calendar-collection-items">
          <name>Calendar Collection Items</name>
          <t>Calendar collection items are built using JMAP for Calendars (draft-ietf-jmap-calendars-26).</t>
          <t>If a system exports events belonging to calendars, it <bcp14>SHOULD</bcp14> also export the referenced Calendar objects.</t>
          <t><tt>myRights</tt> uses the same JSON object structure as in the Address Book schema, but the set of rights is defined by JMAP Calendars rather than JMAP Contacts, so the property names differ.</t>
          <figure anchor="calendar-schema">
            <name>Schema for calendar collections</name>
            <artwork><![CDATA[
{
  "$id": "https://id.schemas.pub/o/DTI/PDPArchive/calendar",
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "title": "Schema for Personal Data Portability Archive (pdparchive) Calendar Collection",
  "description": "A Calendar collection object as defined in JMAP for Calendars (draft-ietf-jmap-calendars).",
  "type": "object",
  "required": ["@type", "uid", "updated", "name"],
  "$defs": {
    "calendarRights": {
      "description": "CalendarRights object as defined in JMAP for Calendars",
      "type": "object",
      "properties": {
        "mayReadFreeBusy":   { "type": "boolean" },
        "mayReadItems":      { "type": "boolean" },
        "mayWriteAll":       { "type": "boolean" },
        "mayWriteOwn":       { "type": "boolean" },
        "mayUpdatePrivate":  { "type": "boolean" },
        "mayRSVP":           { "type": "boolean" },
        "mayShare":          { "type": "boolean" },
        "mayDelete":         { "type": "boolean" }
      }
    },
    "alert": {
      "type": "object",
      "required": ["@type", "trigger"],
      "properties": {
        "@type": { "type": "string", "const": "Alert" },
        "trigger": {
          "oneOf": [
            {
              "type": "object",
              "required": ["@type", "offset"],
              "properties": {
                "@type":      { "type": "string", "const": "OffsetTrigger" },
                "offset":     { "type": "string" },
                "relativeTo": { "type": "string", "enum": ["start", "end"] }
              }
            },
            {
              "type": "object",
              "required": ["@type", "when"],
              "properties": {
                "@type": { "type": "string", "const": "AbsoluteTrigger" },
                "when":  { "type": "string", "format": "date-time" }
              }
            }
          ]
        },
        "acknowledged": { "type": "string", "format": "date-time" },
        "action": { "type": "string", "enum": ["display", "email", "uri"] }
      }
    }
  },
  "properties": {
    "@type": {
      "type": "string",
      "const": "Calendar"
    },
    "uid": {
      "description": "Globally unique identifier for the calendar; referenced by Event calendarIds",
      "type": "string"
    },
    "id": {
      "description": "JMAP server-set ID for the calendar",
      "type": "string"
    },
    "updated": {
      "type": "string",
      "format": "date-time"
    },
    "name": {
      "type": "string",
      "minLength": 1,
      "maxLength": 255
    },
    "description": {
      "type": ["string", "null"]
    },
    "color": {
      "description": "CSS color value used to distinguish the calendar visually",
      "type": "string"
    },
    "sortOrder": {
      "type": "integer",
      "minimum": 0,
      "maximum": 2147483647
    },
    "isDefault": {
      "type": "boolean"
    },
    "isSubscribed": {
      "type": "boolean"
    },
    "isVisible": {
      "type": "boolean"
    },
    "includeInAvailability": {
      "description": "Which events contribute to free/busy availability",
      "type": "string",
      "enum": ["all", "attending", "none"]
    },
    "timeZone": {
      "description": "IANA time zone identifier used as default for events without their own time zone",
      "type": ["string", "null"]
    },
    "defaultAlertsWithTime": {
      "description": "Default alerts applied to timed events when the event has useDefaultAlerts: true; null clears inherited defaults",
      "type": ["object", "null"],
      "additionalProperties": {
        "$ref": "#/$defs/alert"
      }
    },
    "defaultAlertsWithoutTime": {
      "description": "Default alerts applied to all-day events when the event has useDefaultAlerts: true; null clears inherited defaults",
      "type": ["object", "null"],
      "additionalProperties": {
        "$ref": "#/$defs/alert"
      }
    },
    "shareWith": {
      "description": "Maps principal IDs to their CalendarRights; null if not shared",
      "type": ["object", "null"],
      "additionalProperties": {
        "$ref": "#/$defs/calendarRights"
      }
    },
    "myRights": {
      "$ref": "#/$defs/calendarRights"
    }
  }
}
]]></artwork>
          </figure>
          <t>A file with an arbitrary name, such as calendar1.json, in a directory (e.g., \calendars\calendar2) would contain the calendar's metadata:</t>
          <figure anchor="calendar1">
            <name>Calendar example</name>
            <artwork><![CDATA[
{
  "$schema": "https://id.schemas.pub/o/DTI/PDPArchive/calendar",
  "@type": "Calendar",
  "uid": "062adcfa-105d-455c-bc60-6db68b69c3f3",
  "updated": "2020-01-09T14:32:01Z",
  "name": "Work Calendar",
  "color": "#123456",
  "sortOrder": 0,
  "isDefault": true,
  "isSubscribed": true,
  "myRights": {
    "mayReadFreeBusy": true,
    "mayReadItems": true,
    "mayWriteAll": true,
    "mayWriteOwn": true,
    "mayUpdatePrivate": true,
    "mayRSVP": true,
    "mayShare": true,
    "mayDelete": false
  }
}
]]></artwork>
          </figure>
          <t>The <tt>uid</tt> value here corresponds to the ID used in the calendarIds property of the individual event item.</t>
          <t>TODO: fix the relationship between folder.json and calendar metadata</t>
          <section anchor="tasks">
            <name>Tasks</name>
            <t>Tasks are also defined by <xref target="JSCalendar"/> using the "Task" object type.
As with events, tasks <bcp14>MUST</bcp14> include the uid and updated fields to support synchronization.</t>
            <figure anchor="task-schema">
              <name>Schema for tasks</name>
              <artwork><![CDATA[
{
  "$id": "https://id.schemas.pub/o/DTI/PDPArchive/task",
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "title": "Schema for Personal Data Portability Archive (pdparchive) Task",
  "description": "A JSCalendar Task object as defined in RFC 8984.",
  "type": "object",
  "required": ["@type", "uid", "updated"],
  "$defs": {
    "LocalDateTime": {
      "type": "string",
      "pattern": "^[0-9]{4}-[0-9]{2}-[0-9]{2}T[0-9]{2}:[0-9]{2}:[0-9]{2}$",
      "$comment": "ISO 8601 date-time with no UTC offset; interpreted in the timeZone property"
    },
    "participant": {
      "type": "object",
      "properties": {
        "@type": { "type": "string", "const": "Participant" },
        "name": { "type": "string" },
        "email": { "type": "string", "format": "email" },
        "sendTo": {
          "type": "object",
          "additionalProperties": { "type": "string" }
        },
        "kind": {
          "type": "string",
          "enum": ["individual", "group", "resource", "location"]
        },
        "roles": {
          "type": "object",
          "additionalProperties": { "type": "boolean" }
        },
        "participationStatus": {
          "type": "string",
          "enum": ["needs-action", "accepted", "declined", "tentative", "delegated"]
        },
        "participationComment": { "type": "string" },
        "expectReply": { "type": "boolean" }
      }
    },
    "link": {
      "type": "object",
      "required": ["href"],
      "properties": {
        "@type": { "type": "string", "const": "Link" },
        "href": { "type": "string", "format": "uri" },
        "cid": { "type": "string" },
        "contentType": { "type": "string" },
        "size": { "type": "integer", "minimum": 0 },
        "rel": { "type": "string" },
        "display": {
          "type": "string",
          "enum": ["badge", "graphic", "fullsize", "thumbnail"]
        },
        "title": { "type": "string" }
      }
    },
    "alert": {
      "type": "object",
      "required": ["@type", "trigger"],
      "properties": {
        "@type": { "type": "string", "const": "Alert" },
        "trigger": {
          "oneOf": [
            {
              "type": "object",
              "required": ["@type", "offset"],
              "properties": {
                "@type": { "type": "string", "const": "OffsetTrigger" },
                "offset": { "type": "string" },
                "relativeTo": { "type": "string", "enum": ["start", "end"] }
              }
            },
            {
              "type": "object",
              "required": ["@type", "when"],
              "properties": {
                "@type": { "type": "string", "const": "AbsoluteTrigger" },
                "when": { "type": "string", "format": "date-time" }
              }
            }
          ]
        },
        "acknowledged": { "type": "string", "format": "date-time" },
        "action": { "type": "string", "enum": ["display", "email", "uri"] }
      }
    },
    "location": {
      "type": "object",
      "properties": {
        "@type": { "type": "string", "const": "Location" },
        "name": { "type": "string" },
        "description": { "type": "string" },
        "coordinates": {
          "description": "Geo URI as defined in RFC 5870",
          "type": "string",
          "format": "uri"
        },
        "timeZone": { "type": "string" },
        "relativeTo": { "type": "string", "enum": ["start", "end"] },
        "links": {
          "type": "object",
          "additionalProperties": { "$ref": "#/$defs/link" }
        }
      }
    },
    "recurrenceRule": {
      "type": "object",
      "required": ["frequency"],
      "properties": {
        "@type": { "type": "string", "const": "RecurrenceRule" },
        "frequency": {
          "type": "string",
          "enum": ["secondly", "minutely", "hourly", "daily", "weekly", "monthly", "yearly"]
        },
        "interval": { "type": "integer", "minimum": 1 },
        "firstDayOfWeek": {
          "type": "string",
          "enum": ["mo", "tu", "we", "th", "fr", "sa", "su"]
        },
        "byDay": {
          "type": "array",
          "items": {
            "type": "object",
            "required": ["day"],
            "properties": {
              "@type": { "type": "string", "const": "NDay" },
              "day": {
                "type": "string",
                "enum": ["mo", "tu", "we", "th", "fr", "sa", "su"]
              },
              "nthOfPeriod": { "type": "integer" }
            }
          }
        },
        "byMonthDay": { "type": "array", "items": { "type": "integer" } },
        "byMonth": { "type": "array", "items": { "type": "string" } },
        "count": { "type": "integer", "minimum": 1 },
        "until": {
          "description": "LocalDateTime giving the last allowed occurrence",
          "$ref": "#/$defs/LocalDateTime"
        }
      }
    }
  },
  "properties": {
    "@type": {
      "type": "string",
      "const": "Task"
    },
    "uid": {
      "type": "string"
    },
    "id": {
      "description": "JMAP server-set ID for the task",
      "type": "string"
    },
    "created": {
      "type": "string",
      "format": "date-time"
    },
    "updated": {
      "description": "Last-modified timestamp; MUST be included for synchronization",
      "type": "string",
      "format": "date-time"
    },
    "prodId": {
      "type": "string"
    },
    "sequence": {
      "type": "integer",
      "minimum": 0
    },
    "title": {
      "type": "string"
    },
    "description": {
      "type": "string"
    },
    "descriptionContentType": {
      "type": "string"
    },
    "start": {
      "$ref": "#/$defs/LocalDateTime"
    },
    "due": {
      "$ref": "#/$defs/LocalDateTime"
    },
    "timeZone": {
      "description": "IANA time zone identifier for the start and due times",
      "type": "string"
    },
    "estimatedDuration": {
      "description": "ISO 8601 duration string estimating time to complete",
      "type": "string"
    },
    "percentComplete": {
      "type": "integer",
      "minimum": 0,
      "maximum": 100
    },
    "progress": {
      "description": "Task progress status per RFC 8984",
      "type": "string",
      "enum": ["needs-action", "in-progress", "completed", "failed", "cancelled"]
    },
    "progressUpdated": {
      "type": "string",
      "format": "date-time"
    },
    "priority": {
      "type": "integer",
      "minimum": 0,
      "maximum": 9
    },
    "privacy": {
      "type": "string",
      "enum": ["public", "private", "secret"]
    },
    "color": {
      "type": "string"
    },
    "participants": {
      "type": "object",
      "additionalProperties": { "$ref": "#/$defs/participant" }
    },
    "locations": {
      "description": "Maps location IDs to Location objects",
      "type": "object",
      "additionalProperties": { "$ref": "#/$defs/location" }
    },
    "virtualLocations": {
      "description": "Maps virtual location IDs to VirtualLocation objects (e.g. video conference links)",
      "type": "object",
      "additionalProperties": {
        "type": "object",
        "properties": {
          "@type": { "type": "string", "const": "VirtualLocation" },
          "name": { "type": "string" },
          "description": { "type": "string" },
          "uri": { "type": "string", "format": "uri" }
        }
      }
    },
    "relatedTo": {
      "description": "Maps related object UIDs to Relation objects describing the relationship",
      "type": "object",
      "additionalProperties": {
        "type": "object",
        "properties": {
          "@type": { "type": "string", "const": "Relation" },
          "relation": {
            "description": "Maps relation type (e.g. parent, child, first, next) to true",
            "type": "object",
            "additionalProperties": { "type": "boolean" }
          }
        }
      }
    },
    "links": {
      "type": "object",
      "additionalProperties": { "$ref": "#/$defs/link" }
    },
    "keywords": {
      "type": "object",
      "additionalProperties": { "type": "boolean" }
    },
    "categories": {
      "type": "object",
      "additionalProperties": { "type": "boolean" }
    },
    "alerts": {
      "type": "object",
      "additionalProperties": { "$ref": "#/$defs/alert" }
    },
    "useDefaultAlerts": {
      "type": "boolean"
    },
    "recurrenceRules": {
      "type": "array",
      "items": { "$ref": "#/$defs/recurrenceRule" }
    },
    "excludedRecurrenceRules": {
      "type": "array",
      "items": { "$ref": "#/$defs/recurrenceRule" }
    },
    "recurrenceOverrides": {
      "type": "object",
      "additionalProperties": { "type": "object" }
    }
  }
}
]]></artwork>
            </figure>
            <t>For example, a file called task1.json could contain:</t>
            <figure anchor="task1">
              <name>Task example</name>
              <artwork><![CDATA[
{
  "$schema": "https://id.schemas.pub/o/DTI/PDPArchive/task",
  "@type": "Task",
  "uid": "7b0f69a6-6e3e-4f1b-85d8-c89b43d2f2a1",
  "updated": "2022-11-23T15:01:32Z",
  "title": "Submit Quarterly Report",
  "progress": "in-progress",
  "priority": 1,
  "due": "2024-12-31T23:59:59"
}
]]></artwork>
            </figure>
          </section>
        </section>
        <section anchor="notes">
          <name>Notes</name>
          <ul spacing="normal">
            <li>
              <t>VJournal is first defined in <xref target="iCalendar"/>.</t>
            </li>
            <li>
              <t>VJournal also used in  <xref target="CalDAV"/>.</t>
            </li>
            <li>
              <t>However, they are NOT used in https://jmap.io/spec-calendars.html</t>
            </li>
          </ul>
          <t>Do we even have a JSON format for notes defined?</t>
        </section>
        <section anchor="files">
          <name>Files</name>
          <t>TODO</t>
        </section>
        <section anchor="other">
          <name>Other</name>
          <t>(LMD Note: I think this might better fit in an out of scope section - I think out of scope sections are useful for statements that explain why scope is limited.  that's assuming we all agree that groups, freebusy and timezones are left out.)</t>
          <t>Groups as defined in JSCalendar are NOT part of this archive format.  Groups in JSCalendar can combine events and tasks in a container.  This specification, for consistency and simplicity, uses folders and requires individual objects to be in separate files.</t>
          <t>VFREEBUSY objects are not part of this archive format.  Calendar software can calculate freebusy time from event data.  Use cases that are not satisfied by this limitation could extend this archive format but understanding what it means to backup, restore, export or import freebusy data would need to be fleshed out.</t>
          <t>VTIMEZONE objects are not part of this archive format.  Timezones are more
likely to be system objects referred to by calendar objects in modern calendar
systems, than personal data.  If there are use cases for timezones as personal
data, this specification can be extended to explain how that would work.</t>
        </section>
      </section>
      <section anchor="synchronization-requirements">
        <name>Synchronization requirements</name>
        <t>This section describes the requirements to achieve repeated one-way synchronization via export/import operations between software by different vendors. While limited, this still provides better functionality than what many end-users experience with their groupware software and services today.</t>
        <t>Supporting <em>repeated</em> synchronization means that the export from system A and import to system B can happen over and over again without needlessly duplicating items.  Supporting <em>one-way</em> synchronization means that changes in the system with the exporter role propagate reliably to the system with the importer role, but not in the reverse direction.   Some of the constraints here arise from the fact that the two systems may not directly connect, and the import may be time-delayed from the export.</t>
        <t>This limited solution for export/import sync may also be used for more direct system-to-system transfers such as service-to-service data transfers, repeated data access requests or data migrations, although some of those use cases could be solved much better with direct negotiation of features.</t>
        <section anchor="uid-updated">
          <name>Always include 'uid' and 'updated'</name>
          <t>These requirements apply to <xref target="JSContact"/>, JSTask and <xref target="JSCalendar"/> objects when exported or imported using the formats in this specification, because these all have 'uid' and 'updated' values.</t>
          <t>Requirements:</t>
          <ul spacing="normal">
            <li>
              <t>exporters <bcp14>MUST</bcp14> include the UID and updated fields.</t>
            </li>
            <li>
              <t>The 'updated' field <bcp14>MUST</bcp14> be exported in UTC and interpreted in UTC.  Accurate system time is important.</t>
            </li>
            <li>
              <t>importers <bcp14>MUST</bcp14> use the UID in an imported object, if the importer is creating a new object, rather than invent a new UID.</t>
            </li>
            <li>
              <t>importers <bcp14>MUST</bcp14> search for existing objects with the same UID, and if the object in storage is <em>similar enough</em>  (see Note below) to the import data, the importer <bcp14>SHOULD NOT</bcp14> change the object and <bcp14>MUST NOT</bcp14> update its 'updated' timestamp.</t>
            </li>
          </ul>
          <t>Recommendations:</t>
          <ul spacing="normal">
            <li>
              <t>Importers <bcp14>SHOULD</bcp14> use caution with fields that are system-updated, especially frequently updated.  Such fields <bcp14>SHOULD NOT</bcp14> change the value of 'updated' that is exported or used to decide whether to update an object during an import operation. See note below on 'updated'.</t>
            </li>
            <li>
              <t>Importers <bcp14>SHOULD</bcp14> apply common sense in updating internal or implementation-specific fields.  This specification does not require the importer to include, omit, handle or disregard values for fields that it believes are internally-generated or implementation-specific.  For example, a system in the role of exporter might export an event object with a video-conference room ID in a custom field.  It can decide that it is sensible to export that value as a URL for external use.  Later, the same system or one with code written for compatibility could import that event with the video-conference URL, and it would be sensible to avoid overwriting its own knowledge of the room ID with the URL.</t>
            </li>
            <li>
              <t>When importing a <em>changed</em> or <em>new</em> object with a UID and 'updated' value, the importer <bcp14>SHOULD</bcp14> set the 'updated' value to the one imported. Thus, if a Contact is updated on Jan 1, exported on Jan 2 and imported on Jan 3, the new or updated imported contact would show an 'updated' value of Jan 1.</t>
            </li>
          </ul>
          <t>Note on <em>similar enough</em>: This specification requires nuance in order to allow both reasonably consistent synchronization and reasonable behavior in a wide variety of use cases and implementations.  The language above is intended to give implementors both guidance and wiggle room.  For example, the importer could convert a DTSTART time from UTC to the user's local time and save it as the displayed start time. Later, re-importing the same object with the same UID, the importing code could be smart enough to realize that the time hasn't <em>actually</em> changed, and avoid changing the 'updated' timestamp or creating a conflicting event.  This logic could be implemented by saving separate fields (imported time vs display time), by keeping a log of updates (log entry stating that the system auto-converted start time from X to Y), or by other clever algorithms. Thus, the clever implementation can avoid the appearance of an object that changes every time the calendar is synchronized.</t>
          <t>Note on <em>updated</em>: The definition of 'updated' in <xref target="JSContact"/> is not rigorous or nuanced. "when the data in the Card was last modified" could refer to several instances of the card -- its internal implementation, its representation in an email share, its representation in an HTTP GET response (<xref target="CardDAV"/>).   It's not specified whether 'updated' is the same as REV in <xref target="vCard"/>, which is defined differently.  Neither definition explicitly covers vendor-specific fields.  Thus, this specification makes additional recommendations for handling 'updated':</t>
          <ul spacing="normal">
            <li>
              <t>The value of 'updated' <bcp14>SHOULD</bcp14> only change when two conditions hold: the end-user makes a decision to change a value of a user-visible field, AND the export of the JSContact shows a different value.</t>
            </li>
            <li>
              <t>Thus, non-user-visible fields like 'version' could be changed without causing the 'updated' value to change.  A value such as 'language' could be set without changing 'updated' (if an implementation infers the language tag and begins to include 'fr-CA' as the language value in exports instead of no language, nevertheless this doesn't change the user-visible content).</t>
            </li>
            <li>
              <t>If implementations need to manage the synchronization of vendor-specific fields, a vendor-specific field like 'example.com:updated' can be used rather than affect the user-visible synchronization made possible by 'updated'. Implementations could possibly also handle 'updated' differently when used for export/import using the formats in this specification, than when the same field is handled in other code paths.</t>
            </li>
          </ul>
          <t>We recognize that this understanding of 'updated' is highly judgement-dependent. The same field can change in one way and cause a change to 'updated' and in another way may not (the example of server inferring the language is 'fr-CA' vs the user explicitly setting it).  It is likely to be frustrating to protocol designers and implementors (as it is to the authors of this specification) that the definition is so wobbly.  We'd love to know of better solutions that work with the status quo.</t>
          <section anchor="synchronizing-from-and-to-caldav-servers">
            <name>Synchronizing from and to CalDAV servers</name>
            <t><xref target="CalDAV"/> uses URLs, ETags and UIDs for synchronizing changes between two systems reliably, but it relies upon client-server architecture, where the server is the "source of truth" and the client must manage its local history and decide which things to update from the server and which things to tell the server to update.  If a user is setting up synchronization or an implementor is building a system that involves synchronization, it may be best to use CalDAV if that is a feasible solution.</t>
            <t>Nevertheless, we believe some of the use cases in our <eref target="use_cases">use case section</eref> motivate not only including calendar data in these archives for backup purposes, but also for partial updates.  This works the same way it does for JSContact and JSCard objects.</t>
          </section>
        </section>
        <section anchor="synchronizing-address-books">
          <name>Synchronizing address books</name>
          <t>Build on <xref target="RFC9610"/></t>
        </section>
        <section anchor="synchronizing-mailbox-folders">
          <name>Synchronizing mailbox folders</name>
          <t>Because servers may differ in which characters they support in folder names, how many levels deep folders may be created, and even in what separator character is used to indicate folder hierarchy, difficulties in synchronizing folder names will definitely arise.  Folder names that are not likely to be widely supported in other systems should be translated for export, because if the exporting system has a consistent translation algorithm, then even if the mailbox name looks different in the importing system it will still be imported consistently.</t>
          <t>Systems that support mailbox IDs <bcp14>MUST</bcp14> include them in exports.  Systems that do not (though it's strongly encouraged) <bcp14>SHOULD</bcp14> use the full mailbox name as the unique identifier value.</t>
          <ul empty="true">
            <li>
              <t>TODO: Also it would be good to include a "display name" in case the server has had to translate the mailbox name for compatibility.  E.g. a server that has a mailbox named "%L33T%", but knows the "%" should not be exported because many servers forbid the "%", would translate the name consistently to <em>pc_L33T_pc</em> or another set of safe characters and include a display name of "%L33T%" for reference and debugging.</t>
            </li>
          </ul>
        </section>
        <section anchor="blobs-and-files">
          <name>Blobs and files?</name>
          <t>Reference <xref target="RFC9404"/>?</t>
        </section>
      </section>
    </section>
    <section anchor="open-issues">
      <name>Open issues</name>
      <section anchor="container-format">
        <name>Container format</name>
        <t>This document leverages existing data formats and adds certain files for representing metadata. While one may work with this raw data, most import/export scenarios will rather require the bundling of individual data items into one or few container files.</t>
        <t>This document does not strive to invent its own container format, but may refer to existing ones.</t>
        <t>High level options would be:</t>
        <ul spacing="normal">
          <li>
            <t>Recommend using a container format without preferring a particular one</t>
          </li>
          <li>
            <t>Mandating a specific format</t>
          </li>
          <li>
            <t>...?</t>
          </li>
        </ul>
        <t>Actual container formats likely differ in various dimensions:</t>
        <ul spacing="normal">
          <li>
            <t>Ease of adding incremental data</t>
          </li>
          <li>
            <t>Ease of updating existing data</t>
          </li>
          <li>
            <t>Ease of accessing files</t>
          </li>
          <li>
            <t>Support for compression</t>
          </li>
          <li>
            <t>Support for data streaming</t>
          </li>
          <li>
            <t>Availability of library/tool support across platforms</t>
          </li>
          <li>
            <t>Internal file references</t>
          </li>
          <li>
            <t>Open standard</t>
          </li>
          <li>
            <t>...?</t>
          </li>
        </ul>
        <t>Candidates</t>
        <ul spacing="normal">
          <li>
            <t>tar/gz</t>
          </li>
          <li>
            <t>zip</t>
          </li>
          <li>
            <t>7z</t>
          </li>
          <li>
            <t>zpaq</t>
          </li>
          <li>
            <t>...?</t>
          </li>
        </ul>
        <t>See https://github.com/hhappel/draft-happel-mailmaint-pdparchive/issues/13</t>
      </section>
      <section anchor="encryption">
        <name>Encryption</name>
        <t>Support for encryption of any kind is so far no requirement in the draft. However, an increasing number of services offers forms of data encryption. Implications for this draft may be considered.</t>
        <t>"Encryption" might refer to various aspects:</t>
        <ul spacing="normal">
          <li>
            <t>Existing encryption of individual files in the export</t>
          </li>
          <li>
            <t>Encrypting the complete export (incl. metadata?)</t>
          </li>
          <li>
            <t>...?</t>
          </li>
        </ul>
        <t>See https://github.com/hhappel/draft-happel-mailmaint-pdparchive/issues/14</t>
      </section>
    </section>
    <section anchor="implementation-status">
      <name>Implementation status</name>
      <t>&lt; RFC Editor: before publication please remove this section and the reference to <xref target="RFC7942"/> &gt;</t>
      <t>This section records the status of known implementations of the protocol defined by this specification at the time of posting of this Internet-Draft, and is based on a proposal described in <xref target="RFC7942"/>. The description of implementations in this section is intended to assist the IETF in its decision processes in progressing drafts to RFCs. Please note that the listing of any individual implementation here does not imply endorsement by the IETF. Furthermore, no effort has been spent to verify the information presented here that was supplied by IETF contributors. This is not intended as, and must not be construed to be, a catalog of available implementations or their features. Readers are advised to note that other implementations may exist.</t>
      <t>According to <xref target="RFC7942"/>, "this will allow reviewers and working groups to assign due consideration to documents that have the benefit of running code, which may serve as evidence of valuable experimentation and feedback that have made the implemented protocols more mature. It is up to the individual working groups to use this information as they see fit".</t>
    </section>
    <section anchor="security-considerations">
      <name>Security Considerations</name>
      <t>TODO Security</t>
    </section>
    <section anchor="privacy-considerations">
      <name>Privacy considerations</name>
      <t>tbd.</t>
    </section>
    <section anchor="iana-considerations">
      <name>IANA Considerations</name>
      <section anchor="file-extension">
        <name>File extension</name>
        <t>Register .pdpa?</t>
      </section>
    </section>
  </middle>
  <back>
    <references anchor="sec-combined-references">
      <name>References</name>
      <references anchor="sec-normative-references">
        <name>Normative References</name>
        <reference anchor="RFC5322">
          <front>
            <title>Internet Message Format</title>
            <author fullname="P. Resnick" initials="P." role="editor" surname="Resnick"/>
            <date month="October" year="2008"/>
            <abstract>
              <t>This document specifies the Internet Message Format (IMF), a syntax for text messages that are sent between computer users, within the framework of "electronic mail" messages. This specification is a revision of Request For Comments (RFC) 2822, which itself superseded Request For Comments (RFC) 822, "Standard for the Format of ARPA Internet Text Messages", updating it to reflect current practice and incorporating incremental changes that were specified in other RFCs. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="5322"/>
          <seriesInfo name="DOI" value="10.17487/RFC5322"/>
        </reference>
        <reference anchor="CardDAV">
          <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="RFC8474">
          <front>
            <title>IMAP Extension for Object Identifiers</title>
            <author fullname="B. Gondwana" initials="B." role="editor" surname="Gondwana"/>
            <date month="September" year="2018"/>
            <abstract>
              <t>This document updates RFC 3501 (IMAP4rev1) with persistent identifiers on mailboxes and messages to allow clients to more efficiently reuse cached data when resources have changed location on the server.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8474"/>
          <seriesInfo name="DOI" value="10.17487/RFC8474"/>
        </reference>
        <reference anchor="JMAP">
          <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="JSCalendar">
          <front>
            <title>JSCalendar: A JSON Representation of Calendar Data</title>
            <author fullname="N. Jenkins" initials="N." surname="Jenkins"/>
            <author fullname="R. Stepanek" initials="R." surname="Stepanek"/>
            <date month="July" year="2021"/>
            <abstract>
              <t>This specification defines a data model and JSON representation of calendar data that can be used for storage and data exchange in a calendaring and scheduling environment. It aims to be an alternative and, over time, successor to the widely deployed iCalendar data format. It also aims to be unambiguous, extendable, and simple to process. In contrast to the jCal format, which is also based on JSON, JSCalendar is not a direct mapping from iCalendar but defines the data model independently and expands semantics where appropriate.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8984"/>
          <seriesInfo name="DOI" value="10.17487/RFC8984"/>
        </reference>
        <reference anchor="JSContact">
          <front>
            <title>JSContact: A JSON Representation of Contact Data</title>
            <author fullname="R. Stepanek" initials="R." surname="Stepanek"/>
            <author fullname="M. Loffredo" initials="M." surname="Loffredo"/>
            <date month="May" year="2024"/>
            <abstract>
              <t>This specification defines a data model and JavaScript Object Notation (JSON) representation of contact card information that can be used for data storage and exchange in address book or directory applications. It aims to be an alternative to the vCard data format and to be unambiguous, extendable, and simple to process. In contrast to the JSON-based jCard format, it is not a direct mapping from the vCard data model and expands semantics where appropriate. Two additional specifications define new vCard elements and how to convert between JSContact and vCard.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9553"/>
          <seriesInfo name="DOI" value="10.17487/RFC9553"/>
        </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="RFC9051">
          <front>
            <title>Internet Message Access Protocol (IMAP) - Version 4rev2</title>
            <author fullname="A. Melnikov" initials="A." role="editor" surname="Melnikov"/>
            <author fullname="B. Leiba" initials="B." role="editor" surname="Leiba"/>
            <date month="August" year="2021"/>
            <abstract>
              <t>The Internet Message Access Protocol Version 4rev2 (IMAP4rev2) allows a client to access and manipulate electronic mail messages on a server. IMAP4rev2 permits manipulation of mailboxes (remote message folders) in a way that is functionally equivalent to local folders. IMAP4rev2 also provides the capability for an offline client to resynchronize with the server.</t>
              <t>IMAP4rev2 includes operations for creating, deleting, and renaming mailboxes; checking for new messages; removing messages permanently; setting and clearing flags; parsing per RFCs 5322, 2045, and 2231; searching; and selective fetching of message attributes, texts, and portions thereof. Messages in IMAP4rev2 are accessed by the use of numbers. These numbers are either message sequence numbers or unique identifiers.</t>
              <t>IMAP4rev2 does not specify a means of posting mail; this function is handled by a mail submission protocol such as the one specified in RFC 6409.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9051"/>
          <seriesInfo name="DOI" value="10.17487/RFC9051"/>
        </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 anchor="sec-informative-references">
        <name>Informative References</name>
        <reference anchor="RFC822">
          <front>
            <title>STANDARD FOR THE FORMAT OF ARPA INTERNET TEXT MESSAGES</title>
            <author fullname="D. Crocker" initials="D." surname="Crocker"/>
            <date month="August" year="1982"/>
            <abstract>
              <t>This document revises the specifications in RFC 733, in order to serve the needs of the larger and more complex ARPA Internet. Some of RFC 733's features failed to gain adequate acceptance. In order to simplify the standard and the software that follows it, these features have been removed. A different addressing scheme is used, to handle the case of internetwork mail; and the concept of re-transmission has been introduced. Obsoletes RFC 733, NIC 41952.</t>
            </abstract>
          </front>
          <seriesInfo name="STD" value="11"/>
          <seriesInfo name="RFC" value="822"/>
          <seriesInfo name="DOI" value="10.17487/RFC0822"/>
        </reference>
        <reference anchor="IMAP4">
          <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="RFC2822">
          <front>
            <title>Internet Message Format</title>
            <author fullname="P. Resnick" initials="P." role="editor" surname="Resnick"/>
            <date month="April" year="2001"/>
            <abstract>
              <t>This document specifies a syntax for text messages that are sent between computer users, within the framework of "electronic mail" messages. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="2822"/>
          <seriesInfo name="DOI" value="10.17487/RFC2822"/>
        </reference>
        <reference anchor="MBOX">
          <front>
            <title>The application/mbox Media Type</title>
            <author fullname="E. Hall" initials="E." surname="Hall"/>
            <date month="September" year="2005"/>
            <abstract>
              <t>This memo requests that the application/mbox media type be authorized for allocation by the IESG, according to the terms specified in RFC 2048. This memo also defines a default format for the mbox database, which must be supported by all conformant implementations. This memo provides information for the Internet community.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="4155"/>
          <seriesInfo name="DOI" value="10.17487/RFC4155"/>
        </reference>
        <reference anchor="RFC4314">
          <front>
            <title>IMAP4 Access Control List (ACL) Extension</title>
            <author fullname="A. Melnikov" initials="A." surname="Melnikov"/>
            <date month="December" year="2005"/>
            <abstract>
              <t>The Access Control List (ACL) extension (RFC 2086) of the Internet Message Access Protocol (IMAP) permits mailbox access control lists to be retrieved and manipulated through the IMAP protocol.</t>
              <t>This document is a revision of RFC 2086. It defines several new access control rights and clarifies which rights are required for different IMAP commands. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="4314"/>
          <seriesInfo name="DOI" value="10.17487/RFC4314"/>
        </reference>
        <reference anchor="CalDAV">
          <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="iCalendar">
          <front>
            <title>Internet Calendaring and Scheduling Core Object Specification (iCalendar)</title>
            <author fullname="B. Desruisseaux" initials="B." role="editor" surname="Desruisseaux"/>
            <date month="September" year="2009"/>
            <abstract>
              <t>This document defines the iCalendar data format for representing and exchanging calendaring and scheduling information such as events, to-dos, journal entries, and free/busy information, independent of any particular calendar service or protocol. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="5545"/>
          <seriesInfo name="DOI" value="10.17487/RFC5545"/>
        </reference>
        <reference anchor="RFC5598">
          <front>
            <title>Internet Mail Architecture</title>
            <author fullname="D. Crocker" initials="D." surname="Crocker"/>
            <date month="July" year="2009"/>
            <abstract>
              <t>Over its thirty-five-year history, Internet Mail has changed significantly in scale and complexity, as it has become a global infrastructure service. These changes have been evolutionary, rather than revolutionary, reflecting a strong desire to preserve both its installed base and its usefulness. To collaborate productively on this large and complex system, all participants need to work from a common view of it and use a common language to describe its components and the interactions among them. But the many differences in perspective currently make it difficult to know exactly what another participant means. To serve as the necessary common frame of reference, this document describes the enhanced Internet Mail architecture, reflecting the current service. This memo provides information for the Internet community.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="5598"/>
          <seriesInfo name="DOI" value="10.17487/RFC5598"/>
        </reference>
        <reference anchor="RFC6154">
          <front>
            <title>IMAP LIST Extension for Special-Use Mailboxes</title>
            <author fullname="B. Leiba" initials="B." surname="Leiba"/>
            <author fullname="J. Nicolson" initials="J." surname="Nicolson"/>
            <date month="March" year="2011"/>
            <abstract>
              <t>Some IMAP message stores include special-use mailboxes, such as those used to hold draft messages or sent messages. Many mail clients allow users to specify where draft or sent messages should be put, but configuring them requires that the user know which mailboxes the server has set aside for these purposes. This extension adds new optional mailbox attributes that a server may include in IMAP LIST command responses to identify special-use mailboxes to the client, easing configuration. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="6154"/>
          <seriesInfo name="DOI" value="10.17487/RFC6154"/>
        </reference>
        <reference anchor="vCard">
          <front>
            <title>vCard Format Specification</title>
            <author fullname="S. Perreault" initials="S." surname="Perreault"/>
            <date month="August" year="2011"/>
            <abstract>
              <t>This document defines the vCard data format for representing and exchanging a variety of information about individuals and other entities (e.g., formatted and structured name and delivery addresses, email address, multiple telephone numbers, photograph, logo, audio clips, etc.). This document obsoletes RFCs 2425, 2426, and 4770, and updates RFC 2739. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="6350"/>
          <seriesInfo name="DOI" value="10.17487/RFC6350"/>
        </reference>
        <reference anchor="RFC7162">
          <front>
            <title>IMAP Extensions: Quick Flag Changes Resynchronization (CONDSTORE) and Quick Mailbox Resynchronization (QRESYNC)</title>
            <author fullname="A. Melnikov" initials="A." surname="Melnikov"/>
            <author fullname="D. Cridland" initials="D." surname="Cridland"/>
            <date month="May" year="2014"/>
            <abstract>
              <t>Often, multiple IMAP (RFC 3501) clients need to coordinate changes to a common IMAP mailbox. Examples include different clients working on behalf of the same user and multiple users accessing shared mailboxes. These clients need a mechanism to efficiently synchronize state changes for messages within the mailbox.</t>
              <t>Initially defined in RFC 4551, the Conditional Store facility provides a protected update mechanism for message state information and a mechanism for requesting only changes to the message state. This memo updates that mechanism and obsoletes RFC 4551, based on operational experience.</t>
              <t>This document additionally updates another IMAP extension, Quick Resynchronization, which builds on the Conditional STORE extension to provide an IMAP client the ability to fully resynchronize a mailbox as part of the SELECT/EXAMINE command, without the need for additional server-side state or client round trips. Hence, this memo obsoletes RFC 5162.</t>
              <t>Finally, this document also updates the line-length recommendation in Section 3.2.1.5 of RFC 2683.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7162"/>
          <seriesInfo name="DOI" value="10.17487/RFC7162"/>
        </reference>
        <reference anchor="RFC7942">
          <front>
            <title>Improving Awareness of Running Code: The Implementation Status Section</title>
            <author fullname="Y. Sheffer" initials="Y." surname="Sheffer"/>
            <author fullname="A. Farrel" initials="A." surname="Farrel"/>
            <date month="July" year="2016"/>
            <abstract>
              <t>This document describes a simple process that allows authors of Internet-Drafts to record the status of known implementations by including an Implementation Status section. This will allow reviewers and working groups to assign due consideration to documents that have the benefit of running code, which may serve as evidence of valuable experimentation and feedback that have made the implemented protocols more mature.</t>
              <t>This process is not mandatory. Authors of Internet-Drafts are encouraged to consider using the process for their documents, and working groups are invited to think about applying the process to all of their protocol specifications. This document obsoletes RFC 6982, advancing it to a Best Current Practice.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="205"/>
          <seriesInfo name="RFC" value="7942"/>
          <seriesInfo name="DOI" value="10.17487/RFC7942"/>
        </reference>
        <reference anchor="RFC8610">
          <front>
            <title>Concise Data Definition Language (CDDL): A Notational Convention to Express Concise Binary Object Representation (CBOR) and JSON Data Structures</title>
            <author fullname="H. Birkholz" initials="H." surname="Birkholz"/>
            <author fullname="C. Vigano" initials="C." surname="Vigano"/>
            <author fullname="C. Bormann" initials="C." surname="Bormann"/>
            <date month="June" year="2019"/>
            <abstract>
              <t>This document proposes a notational convention to express Concise Binary Object Representation (CBOR) data structures (RFC 7049). Its main goal is to provide an easy and unambiguous way to express structures for protocol messages and data formats that use CBOR or JSON.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8610"/>
          <seriesInfo name="DOI" value="10.17487/RFC8610"/>
        </reference>
        <reference anchor="RFC9404">
          <front>
            <title>JSON Meta Application Protocol (JMAP) Blob Management Extension</title>
            <author fullname="B. Gondwana" initials="B." role="editor" surname="Gondwana"/>
            <date month="August" year="2023"/>
            <abstract>
              <t>The JSON Meta Application Protocol (JMAP) base protocol (RFC 8620) provides the ability to upload and download arbitrary binary data via HTTP POST and GET on a defined endpoint. This binary data is called a "blob".</t>
              <t>This extension adds additional ways to create and access blobs by making inline method calls within a standard JMAP request.</t>
              <t>This extension also adds a reverse lookup mechanism to discover where blobs are referenced within other data types.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9404"/>
          <seriesInfo name="DOI" value="10.17487/RFC9404"/>
        </reference>
        <reference anchor="PST" target="https://learn.microsoft.com/en-us/openspecs/office_file_formats/ms-pst/141923d5-15ab-4ef1-a524-6dce75aae546">
          <front>
            <title>[MS-PST]: Outlook Personal Folders (.pst) File Format</title>
            <author>
              <organization>Microsoft</organization>
            </author>
            <date/>
          </front>
        </reference>
        <reference anchor="GoogleTakeout" target="https://takeout.google.com/settings/takeout">
          <front>
            <title>Google Takeout</title>
            <author>
              <organization>Google</organization>
            </author>
            <date/>
          </front>
        </reference>
      </references>
    </references>
    <?line 2436?>

<section numbered="false" anchor="acknowledgments">
      <name>Acknowledgments</name>
      <t>TODO acknowledge.</t>
    </section>
    <section numbered="false" anchor="changes">
      <name>Changes</name>
      <section numbered="false" anchor="changes-in-draft-ietf-mailmaint-pdparchive-01">
        <name>Changes in draft-ietf-mailmaint-pdparchive-01</name>
        <ul spacing="normal">
          <li>
            <t>Added JSON Schema (draft 2020-12) files for all defined data types: folder, archive, contact, address book, calendar, event, and task.</t>
          </li>
          <li>
            <t>Added a folder tombstone mechanism to support incremental exports that delete previously exported folders.</t>
          </li>
        </ul>
      </section>
    </section>
  </back>
  <!-- ##markdown-source:
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

-->

</rfc>
