<?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.43 (Ruby 3.4.9) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-ietf-mailmaint-pdparchive-02" category="std" consensus="true" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.34.0 -->
  <front>
    <title abbrev="PDPArchive">Personal Data Portability Archive</title>
    <seriesInfo name="Internet-Draft" value="draft-ietf-mailmaint-pdparchive-02"/>
    <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="September" day="14"/>
    <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 120?>

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

<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>
        <t>PDPArchive generators <bcp14>MUST</bcp14> use <xref target="IJSON"/> to more safely generate this and other
JSON outputs.</t>
      </section>
      <section anchor="folder-structure">
        <name>Folder structure</name>
        <t>Folder structure of source data is expressed in exported data using a
mirrored structure in the file system directory.
Folders hold archive metadata, folder metadata, item data and nested folders.
This makes an export that can reasonably (not necessarily "easily")
be navigated by a user interacting with their exported data via the file system.</t>
        <ul spacing="normal">
          <li>
            <t>Folders can be nested.  Any kind of content here can be within nested folders.
Support for IMAP/JMAP requires nested folders.</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>
        <t>Example overall archive structure</t>
        <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/
        calendar1.json
        event1.json
        event2.json
/sieve/
/blob/
    ...?
]]></artwork>
        <t>Folder structure in the export is generally meaningful, not just an arbitrary way
to paginate data.</t>
        <t>When an explicit ID mechanism exists for indicating containers/collections, the
explicit ID mechanism takes precedence over folder nesting. Using
AddressBookIds in contacts data means the individual contact item may show up in
more than one AddressBook item.  The exporter can choose how to export contacts
to folders within the export, but it is <bcp14>RECOMMENDED</bcp14> that the exporter only include
one copy of a given item rather than one copy per collection it should appear in.
This precedence rule applies also to other kinds of data with collection IDs.</t>
        <t>For example, a user might keep her sister Marianne's contact
information in both her "Favorites" and "Family" address books.  The exporter
places <tt>marianne-dashwood.json</tt> under only one of the two corresponding
folders in the export, rather than duplicating the file, because the
<tt>addressBookIds</tt> field on the contact itself -- not its location in the
export -- is what tells an importer which address books it belongs to.  See
<xref target="folder-vs-collection-example"/> for the full worked example.</t>
        <t>Folders <bcp14>MUST</bcp14> be nested when the source data has nested folders.  A user mailbox
with nested folders cannot be accurately copied unless folder structure can also be copied.</t>
        <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 email folder's 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 or emails, so the fields that
are specific to IMAP folders are not required.  The folder.json format is NOT
used for calendars or address books, which already have their own JSON format defined.</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 <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>
              <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>
            </ul>
            <t>When a Card is exported as a standalone Contact item in PDP Archive, it <bcp14>MUST</bcp14> meet
an extended schema, compared to other contexts where JSON Card data may be found.
Unique <tt>uid</tt> and <tt>updated</tt> <bcp14>MUST</bcp14> be included.  This specification extends
the base schema (see <xref target="contact-schema-appendix"/>) to require <tt>uid</tt>, <tt>updated</tt>, and a
non-empty <tt>addressBookIds</tt>.</t>
            <figure anchor="pdpa-contact-schema">
              <name>Schema for a standalone PDPArchive Contact item, extending the base Card schema</name>
              <artwork><![CDATA[
{
  "$id": "https://id.schemas.pub/o/DTI/PDPArchive/pdpa-contact",
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "title": "Schema for Personal Data Portability Archive (pdparchive) Contact",
  "description": "Extends the base JSContact Card schema (contact-schema.json) with the `uid`, `updated`, and `addressBookIds` values required when a Card is exported as a standalone PDPArchive Contact item, as opposed to a Card embedded in some other object.",
  "allOf": [
    { "$ref": "https://id.schemas.pub/o/DTI/PDPArchive/contact" },
    {
      "type": "object",
      "required": ["uid", "updated", "addressBookIds"],
      "properties": {
        "addressBookIds": {
          "minProperties": 1
        }
      }
    }
  ]
}
]]></artwork>
            </figure>
            <t>Synchronization requirements for the <tt>updated</tt> and <tt>uid</tt> values apply to Contact items too (see <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>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/pdpa-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/pdpa-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",
   "addressBookIds": {
      "062adcfa-105d-455c-bc60-6db68b69c3f3": true
   },
   "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>
          <t>See also <xref target="security-considerations"/> on trusting sharing information in exported
data.</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 (<xref target="JMAPCalendars"/>)
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 Section 1.4.1 of <xref target="JMAPCalendars"/> 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.  As with <tt>addressBookIds</tt> for
contacts, this explicit ID mechanism takes precedence over any folder nesting in the
export; see <xref target="folder-structure"/>.</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": "https://id.schemas.pub/o/DTI/PDPArchive/link"
          }
        }
      }
    },
    "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": "https://id.schemas.pub/o/DTI/PDPArchive/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
collections 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 (<xref target="JMAPCalendars"/>).</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>
          <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" }
      }
    },
    "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": "https://id.schemas.pub/o/DTI/PDPArchive/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": "https://id.schemas.pub/o/DTI/PDPArchive/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>
          <t>Notes are simple, free-form text or documents, typically attached to a task,
contact, or event, or kept standalone (e.g. a personal notebook). VJournal,
first defined in <xref target="iCalendar"/> and also used by <xref target="CalDAV"/>, was not carried
forward into <xref target="JSCalendar"/> (see https://jmap.io/spec-calendars.html), so
there is no existing JSON format for notes to build on.</t>
          <t>This specification therefore defines a minimal, PDPArchive-specific Note
schema, following the same <tt>uid</tt>/<tt>updated</tt> conventions used elsewhere for
synchronization (see <xref target="uid-updated"/>).</t>
          <figure anchor="note-schema">
            <name>Schema for notes</name>
            <artwork><![CDATA[
{
  "$id": "https://id.schemas.pub/o/DTI/PDPArchive/note",
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "title": "Schema for Personal Data Portability Archive (pdparchive) Note",
  "description": "A minimal note format defined by this specification. Neither JSContact nor JSCalendar define a JSON note type; iCalendar's VJOURNAL was not carried forward into JSCalendar (RFC 8984).",
  "type": "object",
  "required": ["@type", "uid", "updated", "body"],
  "properties": {
    "@type": {
      "type": "string",
      "const": "Note"
    },
    "uid": {
      "description": "Globally unique identifier for the note",
      "type": "string"
    },
    "created": {
      "type": "string",
      "format": "date-time"
    },
    "updated": {
      "description": "Last-modified timestamp; MUST be included for synchronization",
      "type": "string",
      "format": "date-time"
    },
    "title": {
      "type": "string"
    },
    "body": {
      "description": "The note's content",
      "type": "string"
    },
    "contentType": {
      "description": "MIME type of body; body is plain text if this is absent",
      "type": "string",
      "enum": ["text/plain", "text/html", "text/markdown"]
    },
    "links": {
      "type": "object",
      "additionalProperties": { "$ref": "https://id.schemas.pub/o/DTI/PDPArchive/link" }
    }
  }
}
]]></artwork>
          </figure>
          <t>For example, a file called note1.json could contain:</t>
          <figure anchor="example-note1">
            <name>Note example</name>
            <artwork><![CDATA[
{
  "$schema": "https://id.schemas.pub/o/DTI/PDPArchive/note",
  "@type": "Note",
  "uid": "9f1c1e3a-2b34-4b8e-8b70-5e6f2f6b9a11",
  "created": "2024-02-14T09:05:00Z",
  "updated": "2024-03-02T18:22:00Z",
  "title": "Garden plan",
  "body": "California wildflowers - ORDERED, poppies - have seed.",
  "contentType": "text/plain",
  "links": {
    "1": {
      "@type": "Link",
      "rel": "enclosure",
      "blobId": "e612afe4-2962-42f1-bcd1-073368274c24",
      "contentType": "image/png",
      "size": 84213,
      "title": "garden-sketch.png"
    }
  }
}
]]></artwork>
          </figure>
          <t>The <tt>contentType</tt> field indicates how to interpret <tt>body</tt>; if <tt>contentType</tt> is absent, <tt>body</tt> is plain text. An exporter that only has an HTML-formatted note <bcp14>SHOULD</bcp14> set <tt>contentType</tt> to "text/html" rather than attempt a lossy conversion to plain text.</t>
          <t>A note that has attachments can reference them using <tt>links</tt> (see <xref target="files-attachments"/>).</t>
        </section>
        <section anchor="files-attachments">
          <name>Attachments</name>
          <t>An attachment <bcp14>MAY</bcp14> be stored as a separate file with the filename used as the <tt>blobId</tt>,
as opposed to inline or referenced externally.  This section explains how to
handle enclosed or included attachments that are not inline.</t>
          <t>This proposal follows the lead of <xref target="JMAPCalendars"/>, using the <tt>links</tt> field on
objects that have attachments.  The <tt>links</tt> field holds Link Objects, defined
in <xref target="JSCalendar"/>, which uses <tt>href</tt> and requires a URI value. Using <tt>href</tt> is problematic: it is defined
to have a URI value, but no commonly used URI supports partial
local file paths or unique file names.  The <xref target="JMAPCalendars"/> spec, to deal with this,
adds <tt>blobId</tt> to identify the attachment.  This can work OK in a structured file export,
because it is possible for software importing or working with the export files to look
through the various sub-directories until it finds the file named with the exact <tt>blobId</tt> value.
Although this pattern is copied from JMAP, it should not be necessary to implement JMAP to
assign blobs a blobId that is unique within an export, and use that blobId value in link object
data.</t>
          <t>The <tt>blobId</tt> values assigned <bcp14>MUST</bcp14> be unique across the export.</t>
          <t>The location of attachments within folders or sub-folders in the export is defined
by the exporting service.  Software generating PDPArchives <bcp14>MAY</bcp14> put attachments in a
single folder, multiple folders, or nested folders. Software importing or interpreting
PDPArchives <bcp14>MUST</bcp14> be prepared to search through the archive folders to find the correct
attachment with matching blobId name.</t>
          <t>NOTE: This offers no explicit support for exported files that are standalone and
not attachments.  While those kinds of files could always just be part of the export, there's nothing
in this specification to say where those would be listed or what role they would serve.</t>
          <t>The Link object is shared by the Note, Task, and Event schemas (<xref target="note-schema"/>, <xref target="task-schema"/>, <xref target="event-schema"/>), so it is defined once here:</t>
          <figure anchor="link-schema">
            <name>Schema for Link objects (attachments and references)</name>
            <artwork><![CDATA[
{
  "$id": "https://id.schemas.pub/o/DTI/PDPArchive/link",
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "title": "Schema for Personal Data Portability Archive (pdparchive) Link",
  "description": "The Link object from RFC 8984 (JSCalendar), shared by the Note, Task, and Event schemas. A Link is a general-purpose reference and is not necessarily an attachment; `rel` set to \"enclosure\" is what marks a Link as an attachment, following draft-ietf-jmap-calendars. Following that same precedent, `blobId` MAY be used instead of `href` on an attachment Link, to reference binary content stored as a file elsewhere in the archive rather than at a URI.",
  "type": "object",
  "anyOf": [
    { "required": ["href"] },
    { "required": ["blobId"] }
  ],
  "properties": {
    "@type": { "type": "string", "const": "Link" },
    "href": { "type": "string", "format": "uri" },
    "blobId": {
      "description": "The filename of this attachment's binary content, used instead of href when the content is stored as a file in the archive rather than at a URI. Not necessarily a path relative to the archive root: the exporter may place the file in any folder, so an importer locates it by searching the archive for a file named with this exact value. Named after the JMAP blobId (RFC 9404) and used the way draft-ietf-jmap-calendars uses it for CalendarEvent attachments, but here it directly names a file within the archive rather than a handle resolved via Blob/get against a live server.",
      "type": "string"
    },
    "cid": { "type": "string" },
    "contentType": { "type": "string" },
    "size": { "type": "integer", "minimum": 0 },
    "rel": {
      "type": "string",
      "description": "Relationship of the link's target to the containing object, as in RFC 8984. \"enclosure\" marks the Link as an attachment (following draft-ietf-jmap-calendars); other values MAY be used for links that are not attachments, such as references to related resources.",
      "examples": ["enclosure"]
    },
    "display": {
      "type": "string",
      "enum": ["badge", "graphic", "fullsize", "thumbnail"]
    },
    "title": { "type": "string" }
  }
}
]]></artwork>
          </figure>
          <t>If the value of "rel" for the link object is "enclosure", then the attachment <bcp14>SHOULD</bcp14>
be included in the PDPArchive. If the value of "rel" is another value, the target
or attachment <bcp14>MAY</bcp14> be included in the PDPArchive export.</t>
        </section>
        <section anchor="out-of-scope">
          <name>Out of Scope</name>
          <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 from CalDAV servers in these
archives for backup purposes, but also for partial updates.  An export from a
CalDAV server can follow all the requirements of this specification, and will
in fact be more limited (for example, CalDAV does not allow events to appear
in multiple calendars, while this export format does).</t>
          </section>
        </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.  If an exporter encounters folder names that are
not likely to be widely supported in other systems, it <bcp14>SHOULD</bcp14> translate those
for export using a consistent mapping algorithm, such that the folder has the same
mapped name every time it is exported.  The goal is to choose a mapping
that allows another system importing the data repeated to recognize foldrs it has
imported before.  A reversible mapping would also help the exporter be able to
import its own data if necessary, without duplicating folders erroneously.</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>
          <t>Systems importing data in order to port a user's account to a new service <bcp14>MUST</bcp14> preserve
the nesting structure of folders.  Other kinds of importers may not preserve folder
structure (for example, mail may be imported into a database for searching, for
legal discovery purposes, or for compliance records and these databases need not
maintain folder nesting).</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="synchronizing-files-and-attachments">
          <name>Synchronizing files and attachments</name>
          <t><tt>blobId</tt> values (see <xref target="files-attachments"/>) <bcp14>SHOULD</bcp14> remain stable across repeated exports of the same underlying binary content, so that importers can recognize an attachment they have already synchronized and avoid re-transferring it. This mirrors the <tt>uid</tt> stability requirement in <xref target="uid-updated"/>, applied to attachments and their <tt>blobId</tt>.</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>Privacy of personal information is important, and an archive can provide a
convenient way to exfiltrate large amounts of private data.  Several cautions
and remediations are advised below.  In addition some protections are <bcp14>REQUIRED</bcp14>:</t>
      <ul spacing="normal">
        <li>
          <t>A producer of PDPArchive exports <bcp14>MUST</bcp14> conform with <xref target="IJSON"/> requirements.</t>
        </li>
      </ul>
      <t>Authors of protocols or other standards that are defined to create PDPArchive
exports or gate access to PDPArchive exports (such as JMAP or CalDAV extensions
or OAuth scopes) will have to consider appropriate privacy and authorization
protections specific to their purpose and context.</t>
      <section anchor="threat-model">
        <name>Threat model</name>
        <t>Making something convenient is often great for users, but also often creates an
attractive target for attackers.  Even if a service does not experience
organized attacks at one point, convenience and time may lead to coordinated
attacks.</t>
        <t>Large amounts of information also create risks just by aggregating.  With a
large amount of information, correlating to discover private information not
directly in the export may be possible.  In particular, these personal data
exports contain PII - information about people invited to meetings or in address
books - who did not consent to an export.</t>
        <t>Many attacks involve gaining account access. Others do not require taking
control of the account but instead rely on deceiving the account holder or
authorized agent.</t>
        <t>Access controls implemented at the data source might not transfer reliably with
the data.  Access controls may be implied by <tt>shareWith</tt> or by roles and
participation status data that is part of this export, or be provided in custom
fields extending these formats.  An importing service should note whether it is
making decisions to allow access based on trusted role or access information
provided during an import, or untrusted (could be tampered with, including by
the user providing an upload).</t>
        <t>Data retention rules that services or organizations attempt to follow may find
that extra copies of exported data violate those rules.</t>
      </section>
      <section anchor="suggested-privacy-protections">
        <name>Suggested privacy protections</name>
        <t>It is not expected that services would implement all of these mitigations and
partial protections at all times, but consider the applicability for each
situation.</t>
        <ul spacing="normal">
          <li>
            <t>Use appropriate authentication and authorization.  In addition, services might
ask for a quick reconfirmation of identity, authentication or authorization
before sending new private data.  The service might ask for a password to
be re-entered, a one-time-password to be provided, or email re-confirmed.</t>
          </li>
          <li>
            <t>Services might notify or inform users of significant data access.  Some
existing platforms send an email to the account to make sure that the account
holder knows of the transfer.  A history of data transfers might be available in
account information.</t>
          </li>
          <li>
            <t>Transport encryption is advised when sending archive files.</t>
          </li>
          <li>
            <t>A service may encrypt an archive file intended for download, using existing
password/encryption approaches, such as a ZIP archive encrypted with AES-256
<xref target="ZIPAES"/> (a convention with broad tool support).  The service may use a
side-channel to communicate with the account owner or ask them to choose a
password when setting up the export.</t>
          </li>
          <li>
            <t>If interacting directly with the user, either because the user has initiated
an export or has been prompted to approve one via flows like OAuth, the service
may provide GUI to offer filtering personal data before exporting.  For example,
a user authorizing transfer of a photo album may be offered a chance to filter
out document scans. Because email is routinely used to send password reset links
or login links, email is especially vulnerable to accidental export of more
sensitive data/access than was intended.</t>
          </li>
          <li>
            <t>Verify the identity of third-party data requestors.  This can be applied if
there are any third-party data request mechanisms outside the scope of
PDPArchive, implemented for example with GUI to generate authorization keys or
capability URLs, and then providing those keys/URLs to a third-party in
configuration data or third-party GUI.  Source services routinely check for
impersonation through third-party API keys and vetting processes to obtain those
keys.</t>
          </li>
          <li>
            <t>Exporters should be wary of deserializers, especially generic object
deserializers.  Fields to be exported should be specified or allow-listed rather
than default to export.  Exporters should take extra care not to export
credentials, access tokens, or other secrets.</t>
          </li>
        </ul>
      </section>
      <section anchor="considerations-for-importers">
        <name>Considerations for importers</name>
        <t>Software importing data have rather different considerations than exporters, but
these also matter to security and privacy.</t>
        <ul spacing="normal">
          <li>
            <t>Importing services should consider appropriate safety checking before handling
JSON files.  Differences in JSON parsing (such as how to handle multiple
instances of the same key in the same location) can open avenues ot "smuggling"
bugs.  An export that does not meet <xref target="IJSON"/> requirements <bcp14>MAY</bcp14> be rejected.</t>
          </li>
          <li>
            <t>Importing services handling cross-references should scope these
cross-references within the appropriate folder context.  Other cross-referencing
risks should be considered, such as references that trigger fetching new content
over the network, or using relative paths improperly.</t>
          </li>
          <li>
            <t>Importers may be vulnerable to resource exhaustion through mechanisms like
unbounded calendar recurrence expansion or oversized inline data.</t>
          </li>
          <li>
            <t>Generic object polymorphic deserialization can be a code-execution bug vector.</t>
          </li>
          <li>
            <t>Checking the size of blobs and attachments against their metadata might be
useful.</t>
          </li>
          <li>
            <t>Keep IDs as strings rather than convert to numbers.</t>
          </li>
        </ul>
      </section>
      <section anchor="other">
        <name>Other</name>
        <t>Exporting services should plan for appropriate throttling to protect their own
resources.  Though the exact protocols by which third parties or users may
request exports are undefined in this specification, download/export links in
Web pages may lead to large amounts of traffic that need management.</t>
      </section>
    </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="JMAPCalendars">
          <front>
            <title>JSON Meta Application Protocol (JMAP) for Calendars</title>
            <author fullname="Neil Jenkins" initials="N." surname="Jenkins">
              <organization>Fastmail</organization>
            </author>
            <author fullname="Michael Douglass" initials="M." surname="Douglass">
              <organization>Spherical Cow Group</organization>
            </author>
            <date day="12" month="August" year="2026"/>
            <abstract>
              <t>   This document specifies a data model for synchronizing calendar data
   with a server using JMAP.  Clients can use this to efficiently read,
   write, and share calendars and events, receive push notifications for
   changes or event reminders, and keep track of changes made by others
   in a multi-user environment.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-jmap-calendars-28"/>
        </reference>
        <reference anchor="IJSON">
          <front>
            <title>The I-JSON Message Format</title>
            <author fullname="T. Bray" initials="T." role="editor" surname="Bray"/>
            <date month="March" year="2015"/>
            <abstract>
              <t>I-JSON (short for "Internet JSON") is a restricted profile of JSON designed to maximize interoperability and increase confidence that software can process it successfully with predictable results.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7493"/>
          <seriesInfo name="DOI" value="10.17487/RFC7493"/>
        </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/RFC822"/>
        </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="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>
        <reference anchor="ZIPAES" target="https://www.winzip.com/en/support/aes-encryption/">
          <front>
            <title>AES Encryption Information</title>
            <author>
              <organization>WinZip Computing</organization>
            </author>
            <date/>
          </front>
        </reference>
      </references>
    </references>
    <?line 2602?>

<section anchor="contact-schema-appendix">
      <name>Base Contact Schema</name>
      <t>A JSContact Card is not always exported as a standalone PDPArchive Contact item.  The same
Card structure is sometimes found embedded within another object (for example, a domain name registration record) and in that context it has neither
a globally unique <tt>uid</tt> nor an <tt>addressBookIds</tt> value.  For that reason this specification defines a base
Card schema intended to be consistent with JSContact in broader contexts.</t>
      <figure anchor="contact-schema">
        <name>Base schema for a JSContact Card</name>
        <artwork><![CDATA[
{
  "$id": "https://id.schemas.pub/o/DTI/PDPArchive/contact",
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "title": "Schema for a JSContact Card",
  "description": "Base fields for a JSContact Card, usable on its own for Card objects embedded in other data (e.g. a registrant Card inside a domain registration record) where a `uid` and `addressBookIds` are not necessarily present. See pdpa-contact-schema.json, which extends this schema with the fields required for a Card to be exported as a standalone PDPArchive Contact item.",
  "type": "object",
  "required": ["@type", "version"],
  "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>The PDPArchive Contact item schema in <xref target="pdpa-contact-schema"/> extends this base schema.</t>
    </section>
    <section anchor="folder-vs-collection-example">
      <name>Extended Example: Folder Nesting vs. Collection IDs</name>
      <t><xref target="folder-structure"/> explains that when an explicit ID mechanism exists for
indicating containers or collections, that mechanism takes precedence over
folder nesting in the export.  This appendix works through a full example of
that principle using <tt>addressBookIds</tt>.</t>
      <t>Suppose Elinor keeps her sister's contact information in
both her "Favorites" and "Family" address books.  The exporter places
<tt>marianne-dashwood.json</tt> under only one of the two corresponding folders in
the export -- it does not also create a duplicate copy under the other:</t>
      <figure anchor="example-addressbook-precedence-tree">
        <name>One physical file for a contact that belongs to two address books</name>
        <artwork><![CDATA[
/contacts/
    favorites.json
    family.json
    Family/
        marianne-dashwood.json
]]></artwork>
      </figure>
      <t>The two AddressBook objects are flat files; their <tt>uid</tt> values, not their
location in the export, are what matters:</t>
      <figure anchor="example-addressbook-favorites">
        <name>favorites.json</name>
        <artwork><![CDATA[
{
   "$schema": "https://id.schemas.pub/o/DTI/PDPArchive/address-book",
   "@type": "AddressBook",
   "uid": "a3d1f7e2-4b6a-4c9e-9f21-7e6d5c4b3a20",
   "updated": "2024-03-01T12:00:00Z",
   "name": "Favorites"
}
]]></artwork>
      </figure>
      <figure anchor="example-addressbook-family">
        <name>family.json</name>
        <artwork><![CDATA[
{
   "$schema": "https://id.schemas.pub/o/DTI/PDPArchive/address-book",
   "@type": "AddressBook",
   "uid": "f9b6c2d4-8e1a-4f3b-9c5d-6a7b8c9d0e1f",
   "updated": "2024-03-01T12:00:00Z",
   "name": "Family"
}
]]></artwork>
      </figure>
      <t>Marianne's contact item declares membership in both address books via
<tt>addressBookIds</tt>, regardless of which single folder holds the file:</t>
      <figure anchor="example-addressbook-precedence-contact">
        <name>Family/marianne-dashwood.json</name>
        <artwork><![CDATA[
{
   "$schema": "https://id.schemas.pub/o/DTI/PDPArchive/pdpa-contact",
   "@type": "Card",
   "version": "1.0",
   "uid": "9c2e6b7a-1f3d-4a5e-8b6c-2d4e6f8a0b1c",
   "updated": "2024-03-01T12:00:00Z",
   "addressBookIds": {
      "a3d1f7e2-4b6a-4c9e-9f21-7e6d5c4b3a20": true,
      "f9b6c2d4-8e1a-4f3b-9c5d-6a7b8c9d0e1f": true
   },
   "name": {
       "components": [
         { "kind": "given", "value": "Marianne" },
         { "kind": "surname", "value": "Dashwood" }
       ],
       "isOrdered": true
   }
}
]]></artwork>
      </figure>
      <t>An importer <bcp14>MUST NOT</bcp14> infer that Marianne belongs only to "Family" because
that's where her file happens to live; it <bcp14>MUST</bcp14> add her to both address books
indicated by <tt>addressBookIds</tt> if it maintains address books.</t>
    </section>
    <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-02">
        <name>Changes in draft-ietf-mailmaint-pdparchive-02</name>
        <ul spacing="normal">
          <li>
            <t>Restructed the contact schema to allow direct use of base schema in cases where UID is not a required field</t>
          </li>
          <li>
            <t>Proposed how collection ID and folder nesting work together</t>
          </li>
          <li>
            <t>Proposed how references to other objects work generally</t>
          </li>
          <li>
            <t>Proposed how attachments and blobs work specifically</t>
          </li>
          <li>
            <t>Drafted Security Considerations including privacy</t>
          </li>
        </ul>
      </section>
      <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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
Z3B7r6CNrU8W17t7o+HufrbdS8fJYW9nc7jbO9wcDHrjbG/34HDzMB1sH6w+
qkzueZPWZhdJrhrdbae+t7u5sz/aPOyNt7b3ejsHu8Negsl2x3sHuwebo810
J109GS6rir9BAnp2VU+kO9ed0w3T3f0kHW/1tg/2tno7W7t7vWS0lfWSZJyM
t0bZQbp/AxqijcwzbRRL5qP2KJGsrWBaL9VD3OypNsyxio/HU6SmPLREyujd
u8uHRPXv37OY4sZjQ+2Dx0qDmO6Ni0qlt3zQsGzpMvao3abbJ8ln7bvUx3xl
1TenuiRaCMbXVJnKrVTzoLjXc8T3hQ7RcMtyC60baOsqg1SvJHAd16VHuIQf
+bLoWEe1N+vIp5zyloMiAusRaD1vtCtNsQye8LpW1Y/kkQiPhNd21+ieHtxm
tVR1okG+xkJIWHLyEsE4SF6ScHZkG3G9z/R66uCyTnc82qmhrJeORZPdEpTx
u7CMdSEGDn0RVkjoKcVPwBMQxFyZFVz7GziC0+QVNTFAwBM8rDjat+s13/wJ
xuSbWF0w18H9Mh082nEZos2BFzW3MWOPa0Rb14cBfh5RW0qccx6tarbAJuW0
V1dX/TwpJOYlCTHMoDd+rnWf/lP/l4v5dNKPljGZF9HRP2UBK6eN7p52msz4
XzIZixLXPMp1w2O/kEFMcjGsF2bf4EnqcADNRvqhwr7rkVZuqfTZCw0YdyO5
gEpilYgTX5JuaPf9tBrayz26uG3T0krduJJrZ6m8jqC6ZGHoSjhf0a5DquXS
Z9mevIaaMOlF59JrXLZ9jE1pUZr2B6rdzRgTpNI8DNPZ8yKkA84q5NxciOyI
xbymeoog7lqvwtSneGuNUa1Xy7LzghchGfXSRZFvC+pH30qG6BuSN28YN96o
/fDGpQQbnFanLsp66ki5uN4XmMRr6Mfz7p3CUv0qPeSsE8X+8v79ujTQkwuN
efqun1tbxkXwUqIt2XXcTr1umCUfFnBGwLen6/p9hJ0fhotZKl9l+MYOvo4A
5EwN3E1As4xe99kOqwG8lM+uVyCYX1rSwO+BwUFtaIjMXTxYzmalXAxjI6Hh
YKoELdYno63Iur6zCwNH8jvvLr7vKdsBL2lWN/k9VznjFVz42ASV987f5Jtv
v9Dyik7zouFeHdzkF20paCHytpyVYQn7vQ5HSNfKHRi5ApSCAndb/zRXWOA5
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
bejXq6b5wEKXw/bAl8lo5bg3Ll9aXWC52mJCbrskapm3lo3bn79a1NdL0bW7
J8GrbBXR661RR+Wk0SRn6Zqh09OYn7Gui1wOLBdvzxYVEj/uybLDAP89fMpL
bdrcL/e/JqMV8Gn6KIJo+290pdRsOZy+Orr0G80/aYWPmpNf5tV8kUyerlrD
qmopfT62Ua1o6rvmOK3GuUiZxRWphTXX4VjI+jLKfPxlKMu3+9x8ac/9LNnW
llpGrQu8rbCcGs+1BMpdj8OxdsPKmhGwu6OWrXjTyvPEQ3aGT/HZHVwynyej
i6lkofp2D5/l0D4lZtXc5G331Hw8Mt3KMggdsnOSHdl/5aQS6LjrNPkpO06O
irkCvs94asZZkjDs1lzuos60cOd4aeG3lm02fcYfef3QUk3kSrdsc8Xcg4KU
zlf/qAX4Z16QyVIRx/zM+KVvNiePWhVLl5yUfVNpqCSBum52N/Sz5Ke0FPNz
9rIMsi9dNVuQ/WjtKpPt3YNRlvX2dg5QxjbY6SW7++PeaLC5kw530tHWeEtf
uEcVm0/V/KpEV51nWTY39cqp7nh9B32NtnbPNg+PNjfpf/a2U9A7JwscEKnz
RarGWqhKd16eDb7e3nwmP6xUSzphG0UPgjBfz6GFa3GYFNyvxv+yIl+ug6jO
HN91fqbn/6Tn2h+VU4cuPqyylGzWQYplkWaYMGgP2XZHrFL9PrC504riup5g
myGrpLmG5XRnZvBb8mtQQrcqu9W6n7P4RMVEK+U58j1q+GdpFQeO22/VRD30
zWy0/5j7Kehzo13IqoxrXebad/F+NUnoPLOiI6Hmajf6EbpLp7v3a0bolmqd
CKMoaInCje1dxUDYD8UlWksnGX4obOvh+qZb7zntrit168hDDy5MbyWpE7Gg
Qmh+kVj+ussf19u7XYoy8L/WtsKfkPBtUPud5Xx7zLoh8XsVoq3M/V6FZ7yH
Xp7Nxz3cONBzqLP+GTK8b27KYtMs9zhYuvQ2fPC++7pbA7qj18tjNb3px/g+
/VnwzhPVDfif+3aKOeZmfB/2zour4kPe+ZYP5KU6G47ut5/T7166Oe45j5VN
f8g7rqb61ndu1pLvozV9tly1Wy1IyUv7jPlo/6DcsfYprNhqMzns9mSw1aPd
Ix1r1QpuSLX6xNSqf0x+1O3I1Mp9ui3X6S7/gXf/f/bEpftP3BjkRvdI9z6J
SL9xCMxkyGfudWUC78tQ7yKtR3TYUF3+TaNhDR3nzln+BzTB+lBv+ELLHgk9
YRsu8rpZOxdf5vUCuHDP8Md/mx5cef1dXufD1cG31W+IbfakOJa4HyvDtxzF
92yqqb3D14HkQ6TA0mkg3LGBWIfFEGWsO4OkjtvQiXHx0VxvaWFsgS3fxJZP
isEx6ojmiuMInCxcTViKjZSTFXZV+BFWdCC7FaHT0BWHhjHt4snWehU5NLua
b5HJBcWxhNSt0CrPxbzmy29bfj+x3LWLGtdGwygkI44vVtF1LfO3z9pR7RY3
5RJgCOAfDRvCl16aXP/3gc6nttBr2mn/9a30Wgblyj3ep6XeqnHajlN75mbf
6WjZJGdP6q0t7rpxvcA9H7V7XfyqXenJK5f7ofkCx9m6sVurX/XWxnqzuVhD
Nj2o42k2T9BxIGxS/zHu2aavJGhPH379of3x7uekNW/n97gbtDmhCfPOF4Ot
7Z3dPfXctvvjrWyPd1OfsWWsWeEj8J3C2s6A5i+Byb/iB7Hrmz+0jffWTGKm
N79cbl+2snvZKox2rlXf66nlXQ2uHIu5rRY3v6pnJd+bJ4450jdZ1rXQr9FW
QJuQtLs3sYfUbiLla4xpWukPZVfEBC7DVrsp8aZK23jp8qFXyRB29l0L/Wbb
KU62CpvM0P6kY492ANf7VdHuRlsjtVKxPsHjiCX8PryNZ24lt/WVwFO3t5X4
VKfhP/tA3Mej9WmeqjCGtLK8+FZ3je/scLv1L4/9Rt0b7pvB/t+hT8MtDtHm
jP9HdmS4A9ea/Rf+6Ru+G49u2dan1xV/NrfwP13CHwrdD3EJ/w/3CCsT+Kyd
PG49m5Vpg/cUpx+SMvj778Rx+/I/gZyDUT5bb42PzE28Mxnz5lroe4mhjypf
vhU/W6XK/yeWKK/wijeqtv5Z4fvPCl+t8F1GlU+s4V06uztqEm+q073fOI5x
ri5p/CBC+B9StsjeiwYLbsVrf4tQqnPe3DnDP+sKbwmArqgrvE/8szHIf9+i
v3SRfeSbn7FcEO5QWojg0v1QHl16p0DURx9fQBjrIMyPuMNRyd3t2Y99r1UQ
axnRnh7aS58eYx9sNjGPkP0c6a63bI+dpvZcLPWOaN/sfKYfEKZuu2byoudW
wGJbNipNUEjxatdItssi5dVvP2Oax/+hpZZLaSC3otVnqiO8vX7wPpWDK6u8
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
/9c2thO0rgEA

-->

</rfc>
