<?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-03" category="std" consensus="true" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.34.1 -->
  <front>
    <title abbrev="PDPArchive">Personal Data Portability Archive</title>
    <seriesInfo name="Internet-Draft" value="draft-ietf-mailmaint-pdparchive-03"/>
    <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="October" day="28"/>
    <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 133?>

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

<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 file format of a personal data portability archive before packaging. The packaging of these files into a container is described in <xref target="container-format"/>.</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 mapping to actual collections of individual data items plus additional metadata files</t>
        </li>
        <li>
          <t>Contents of top-level and sub-folders are individual data items</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 per logical archive</td>
            </tr>
            <tr>
              <td align="left">archive/part</td>
              <td align="left">Integer - for each part of a single logical export split into multiple archive files</td>
            </tr>
            <tr>
              <td align="left">archive/final</td>
              <td align="left">Boolean, assumed to be 'false' except when explicitly 'true'</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"
  ],
  "properties": {
    "archive": {
      "type": "object",
      "required": [
        "id",
        "name",
        "timestamp",
        "version",
        "generator"
      ],
      "properties": {
        "id": {
          "type": "string"
        },
        "part": {
          "type": "integer"
        },
        "final": {
          "type": "boolean"
        },
        "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",
    "part": 1,
    "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/
    img.jpg
    ...
]]></artwork>
        <t>Folder structure in the export is generally meaningful; a collection in the export
represents a collection in the source data, and its contents represent the contents
in the source data.  Note the following exceptions, however:</t>
        <ul spacing="normal">
          <li>
            <t>one-to-one mapping of exported collections to source collections will be common
but large collections <bcp14>MAY</bcp14> be split across several archive files and thus be
represented by several export collections that will be merged.</t>
          </li>
          <li>
            <t>Objects will commonly appear in their parent collection, but objects that appear in
multiple collections (such as contacts, which can appear in multiple address books)
appear in one exported collection and are referenced in the others.</t>
          </li>
        </ul>
        <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",
          "minProperties": 1,
          "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",
          "minProperties": 1,
          "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="container-format">
        <name>Container format</name>
        <t>A collection of PDPArchive files and collections
is packaged as one or more archive files in the pax interchange
format defined in the "pax" utility section of <xref target="POSIX"/>.</t>
        <t>The pax format is an extension of the older ustar format, also defined in
<xref target="POSIX"/>.  A pax archive is a ustar archive in which some entries are
preceded by an extended header carrying additional attributes, including
internationalizable path names and size metadata.  Tools that support ustar but not pax
generally extract an unrecognized extended header as an extra small file
rather than failing. Exporters <bcp14>MUST</bcp14> use the pax format.  Thus, the container
downloaded via a GUI would likely have the '.tar' file extension.</t>
        <t>Archive entries in the container <bcp14>MUST</bcp14> be regular files or directories.  Exporters <bcp14>MUST NOT</bcp14>
include symbolic links, hard links, device files, or other special entry types.</t>
        <t>Entry names are the file paths described in <xref target="folder-structure"/>, using "/" as
the separator.  Entry names <bcp14>MUST</bcp14> be valid UTF-8, <bcp14>MUST NOT</bcp14> be absolute paths,
<bcp14>MUST NOT</bcp14> contain "." or ".." path segments, and <bcp14>MUST</bcp14> be unique within an
archive file.  Because exporters generate file names (see
<xref target="file-and-folder-names"/>), they can always meet these requirements.</t>
        <t>Names that are distinct in the archive can still collide when extracted.
Many file systems are case-insensitive, so "Inbox" and "INBOX" become the
same file.  Some file systems also normalize Unicode, so names that differ
only in normalization form (for example, "é" as one precomposed character
versus "e" plus a combining accent) can also map to the same file.  Exporters
<bcp14>MUST</bcp14> attempt to generate names that remain distinct under case folding and Unicode
normalization.  Since file names in the archive are under the control of
the exporter, even similar collections like "Nowhere" and "nowHere"
can be made distinct in the archive, by exporting one of them as
"nowhere-2".  Note also that some end-user file systems reject a small list of
names like "NUL", so exporters are <bcp14>RECOMMENDED</bcp14> to choose a broadly
interoperable file name for the object (with the understanding that it's hard
to make a complete cross-system list of forbidden file names).  In either case, the object's
case-sensitive display name of "nowHere" or "NUL" can be in the folder.json metadata.</t>
        <t>Importers <bcp14>SHOULD</bcp14> reject an archive containing duplicate named items rather than
losing one of the items as the importer processes the archive.</t>
        <t>An exporter <bcp14>MAY</bcp14> split one export into several archive files, for example to
stay under file size limits or to reduce the cost of a failed download.  Each
archive file <bcp14>MUST</bcp14> be complete and independently readable.  Each part <bcp14>MUST</bcp14> carry
its own archive.json, identical except for an incrementing "part" value (starting
from 1) and "final" value.  Unique naming applies to the combination of all files
in one logical archive (although note that if a very large folder is split
into multiple export packages, it <bcp14>MAY</bcp14> have the same name in both packages).
Every part that contains a folder's directory <bcp14>MUST</bcp14> include that folder's
folder.json, even if the part holds none of the folder's own items and
contains the directory only because a sub-folder is there.  Each copy of
folder.json lists only the items in its own part; all its other fields <bcp14>MUST</bcp14>
be identical across parts.  See <xref target="split-folder-example"/>.</t>
        <t>Very large folders <bcp14>MAY</bcp14> be split across multiple archive files.  To accomplish this:</t>
        <ul spacing="normal">
          <li>
            <t>Use the same 'uid' in folder metadata - this is the primary way that collections
in multiple archive should be understood to hold additional items from the
same source folders.  Exporters <bcp14>MUST</bcp14> use folder UID if splitting folders between
archive files.</t>
          </li>
          <li>
            <t>Folder metadata (uid, uidvalidity, last_uid, etc) <bcp14>MUST</bcp14> be consistent.</t>
          </li>
          <li>
            <t>In particular, the 'removed' list <bcp14>MUST</bcp14> be duplicated in each copy of the folder metadata.</t>
          </li>
          <li>
            <t>Importers <bcp14>MUST</bcp14> merge folders split across multiple archive files, rather than
duplicate.</t>
          </li>
        </ul>
        <t>An archive file <bcp14>MAY</bcp14> be compressed as a whole with gzip <xref target="RFC1952"/> or
Zstandard <xref target="RFC8878"/>, or left uncompressed.  No other compression is defined
by this specification.  The choice between these is left to the user (for
example, in a GUI-driven download) or to protocol negotiation defined
elsewhere.  Importers <bcp14>MUST</bcp14> accept uncompressed archives and gzip-compressed
archives, and <bcp14>SHOULD</bcp14> accept Zstandard-compressed archives.  Exporters <bcp14>SHOULD</bcp14>
use the ".tar.gz" and ".tar.zst" file extensions for gzip-compressed and
Zstandard-compressed archives respectively.</t>
        <t>Other specifications <bcp14>MAY</bcp14> extend this specification to require or permit
different container or compression formats.  Unless otherwise specified,
the contents of the archive (the
metadata files, folder structure, and data formats defined in this document)
remain the same no matter which container is used.  An extending
specification needs to say how a recipient recognizes the format in use, such
as by media type or file extension.</t>
      </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>
          <t>The directory name and the "name" value in metadata <bcp14>MAY</bcp14> be different.  Exporters use the metadata name
to hold the value shown to users, whereas the name may be escaped or disambiguated or
otherwise changed to meet file system naming limitations and the requirements of this
specification.</t>
        </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="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 to "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.  Archive and
compression logic could also introduce resource exhaustion, and importers should
consider total decompressed size, entry count, and per-entry size while
implementing archive and compression handling.</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>
          <li>
            <t>Importers <bcp14>MUST</bcp14> validate archive entry names before writing them to a file
system, rejecting absolute paths, ".." segments, and entry types other than
regular files and directories, to protect against path traversal.</t>
          </li>
          <li>
            <t>Importers <bcp14>MUST NOT</bcp14> apply mode bits, ownership, extended attributes, or
access control lists (ACLs) from the archive, and <bcp14>MUST</bcp14> create files with the
importer's own defaults.</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>
  </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="13" month="October" 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-33"/>
        </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="POSIX" target="https://pubs.opengroup.org/onlinepubs/9799919799/">
          <front>
            <title>IEEE Standard for Information Technology--Portable Operating System Interface (POSIX) Base Specifications, Issue 8</title>
            <author>
              <organization>IEEE and The Open Group</organization>
            </author>
            <date year="2024"/>
          </front>
          <seriesInfo name="IEEE Std" value="1003.1-2024"/>
        </reference>
        <reference anchor="RFC1952">
          <front>
            <title>GZIP file format specification version 4.3</title>
            <author fullname="P. Deutsch" initials="P." surname="Deutsch"/>
            <date month="May" year="1996"/>
            <abstract>
              <t>This specification defines a lossless compressed data format that is compatible with the widely used GZIP utility. This memo provides information for the Internet community. This memo does not specify an Internet standard of any kind.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="1952"/>
          <seriesInfo name="DOI" value="10.17487/RFC1952"/>
        </reference>
        <reference anchor="RFC8878">
          <front>
            <title>Zstandard Compression and the 'application/zstd' Media Type</title>
            <author fullname="Y. Collet" initials="Y." surname="Collet"/>
            <author fullname="M. Kucherawy" initials="M." role="editor" surname="Kucherawy"/>
            <date month="February" year="2021"/>
            <abstract>
              <t>Zstandard, or "zstd" (pronounced "zee standard"), is a lossless data compression mechanism. This document describes the mechanism and registers a media type, content encoding, and a structured syntax suffix to be used when transporting zstd-compressed content via MIME.</t>
              <t>Despite use of the word "standard" as part of Zstandard, readers are advised that this document is not an Internet Standards Track specification; it is being published for informational purposes only.</t>
              <t>This document replaces and obsoletes RFC 8478.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8878"/>
          <seriesInfo name="DOI" value="10.17487/RFC8878"/>
        </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 2692?>

<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 anchor="split-folder-example">
      <name>Extended Example: A Mail Folder Split Across Parts</name>
      <t><xref target="container-format"/> allows an exporter to split one export into several
archive files.  This appendix shows how a nested mail folder is represented
when its contents span two parts.</t>
      <t>Suppose the mailbox has a folder "Archive" holding 50 messages, and a
sub-folder "Archive/2024" holding 80,000 messages.  The exporter puts all of
"Archive" and the first 40,000 messages of "Archive/2024" in part 1, and the
remaining messages of "Archive/2024" in part 2:</t>
      <figure anchor="example-split-folder-tree">
        <name>One logical archive split into two parts</name>
        <artwork><![CDATA[
Part 1                             Part 2
archive.json  ("part": 1)          archive.json  ("part": 2)
mail/                              mail/
    Archive/                           Archive/
        folder.json                        folder.json
        m1.eml                             2024/
        ...                                    folder.json
        m50.eml                                m40001.eml
        2024/                                  ...
            folder.json                        m80000.eml
            m1.eml
            ...
            m40000.eml
]]></artwork>
      </figure>
      <t>Part 2 contains the directory <tt>mail/Archive/</tt> only because the path to
<tt>mail/Archive/2024/</tt> passes through it; none of the messages in "Archive"
itself are in part 2.  Part 2 still includes <tt>mail/Archive/folder.json</tt>.
Without it, an importer reading part 2 alone would find a directory for a
folder whose metadata is missing, and could not create the "Archive" folder
correctly if part 2 were processed first.</t>
      <t>The two copies of <tt>mail/Archive/folder.json</tt> are identical except for
<tt>items</tt>.  In part 1, <tt>items</tt> lists the folder's messages:</t>
      <figure anchor="example-split-folder-part1">
        <name>mail/Archive/folder.json in part 1</name>
        <artwork><![CDATA[
{
  "$schema": "https://id.schemas.pub/o/DTI/PDPArchive/folder",
  "name": "Archive",
  "uid": "M1a2b3c4d5e6f70",
  "last_uid": 50,
  "uidvalidity": 1107190787,
  "is_subscribed": true,
  "items": [
    {
      "uid": "1",
      "filename": "m1.eml",
      "flags": ["$seen"]
    },
    {
      "uid": "50",
      "filename": "m50.eml",
      "flags": ["$seen", "$flagged"]
    }
  ]
}
]]></artwork>
      </figure>
      <t>In part 2, which holds none of the folder's own messages, <tt>items</tt> is empty:</t>
      <figure anchor="example-split-folder-part2">
        <name>mail/Archive/folder.json in part 2</name>
        <artwork><![CDATA[
{
  "$schema": "https://id.schemas.pub/o/DTI/PDPArchive/folder",
  "name": "Archive",
  "uid": "M1a2b3c4d5e6f70",
  "last_uid": 50,
  "uidvalidity": 1107190787,
  "is_subscribed": true,
  "items": []
}
]]></artwork>
      </figure>
      <t><tt>mail/Archive/2024/folder.json</tt> also appears in both parts.  The part 1 copy lists
messages m1 to m40000, and the part 2 copy lists messages m40001 to m80000.  An
importer merges both copies into the single folder "Archive/2024".</t>
      <t>In an incremental export, both exported parts of the split "Archive" folder
would also carry the same complete 'removed' list of deleted items,
as would both parts of "Archive/2024".</t>
    </section>
    <section numbered="false" anchor="changes">
      <name>Changes</name>
      <section numbered="false" anchor="changes-in-draft-ietf-mailmaint-pdparchive-03">
        <name>Changes in draft-ietf-mailmaint-pdparchive-03</name>
        <ul spacing="normal">
          <li>
            <t>Specified POSIX pax (tar) as the container format</t>
          </li>
          <li>
            <t>Allowed gzip or Zstandard compression of archive files</t>
          </li>
          <li>
            <t>Allowed exporters to split large folders across multiple archive files, and clarified
how unique naming and UIDs and metadata files interact with that choice</t>
          </li>
          <li>
            <t>Added security considerations for the importer based on above choices</t>
          </li>
        </ul>
      </section>
      <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:
H4sIAAAAAAAAA+y9+XrbVrYv+D+eAs1Uf5bqIylRs5Tb95RiyxXnejqWnNSU
tkEClBCTAA9ASlZc7mfpf/s1ul+s12+ttScQpOQht+qeU/mqEooE9rD2mqfd
6/WieT6fZCdx52VW1WWRTOJHyTyJX5bVPBnmk3x+G59Wo6v8OutEyXBYZdd4
9tFL++UomWeXZXV7EtfzNIrSclQkUxowrZLxvJdn83FvmuQT+n8x783SWSIv
9rZ3o3oxnOZ1nZfF/HZGrzw5u3gcFYvpMKtOopTGPYlGZVFnRb2oT+J5tcgi
mn03SqosoVWczmaTnKan9+s4KdL4VZZMehf5lFZ1U1bvLqtyMTuJ7ezRu+yW
vk9PorgXZ/gaH0bJJCvSpMqLS/ypy8PHmUKEPzt4RNdZsaClxfHSBHEsG+n8
RNPTgPEf8USHvscz9L199A8ATL+sLvEj5qQfr+bzWX2ytYWHdBl989gWvtga
VuVNnW3ZUbbw9mU+v1oM6f1JXifplsD9KpnNskkr5PHOhIBbz705+d2+DNXP
y7tH2brjfPtX8+mkE0XJYn5VVgA5TRvHeUEn+X3/h378PY/NX44Xk4kgzfdJ
Ufd+KLPq0v+d9p8U+a980idxskir/DLhXzKB6xVe+wWv/UF/7Y/KaTDn0378
aFHXWbKYzBuTPqW9N34MZ2SKuKhoknFWxU+KfJ7TL0AStwQA8A/pPKcfcV5R
MPlpP36WTYr8XXndmPt0kr3PbsNfw8k7T+oyzeKn87Tjzycv9s2Lf8jxFO86
Kspqyus7oVXErx4/3N/d2eHPD5MqfXT64wm+PNjd39Hfj/YO9/j3H56dvuQf
jw52BvzF+UMlD/n6+GhPvyaaTUZz/vZ4f39XRzo+GGybWY+39wd2VDMMAeNJ
7xGjde+XaTLrGfKr8eSTH85fPOcxD/eOecyXL86f/OmEN24Y1ZOzs7P4fJ7g
rTQelziRsWy5LOKLbHRVlJPy8rbXEyY2yeIXRMr0MxHk+W09z6b0xjyrxsko
izd4hs34u6TO4vNZNsrHhqd04yd1vcjiIwF8nVV5Vuc0l6yHlisrSU/iwfb2
bn/Q29ne2ZO1JtVlRtAx5DVbDOt+OcsKZhlM0GUxyYsMP2wdHx4fHw/w7y1+
29IM/ukBH05kLjC5iyveTyG8hZ9hVhnz5AL6wfH+jjmGo6PDI/qcGxg5tDhS
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
iHQVJmOx8IjhHRZWIvXx3hmtIPRaV2PSrmzj2A0c0aYdqZH1rMv6u94jktsG
nAJyvQRqmMUKP1aWxIdvNG8tFHGPYnDLlFN3IZHHmrljidwq6PoQSn1K183O
KjRbdnD7qzccFzhsmd0AO1nB1bYDeusIMZlI7/cgbJmZamQ0I2Vhz+OZMSyk
HKon0kUnZl7k851+dComjnEZQQs1l1m4G7MsPpiF+ca9ZJ455ijEbtpUWxXA
ZHWrHWHg6Jx+fKUit11wHrdE+gNEXE9YO9vIJfX5N+rFppNKrZV/QaF3lHhl
MaA2/9DtZQgmR0RN6pYN5NyhIrItFKxvlZtl+6anbaFlqwevzS1R6KnuXflo
wNH/4kw4WfA/RyKcikDSz/IxySAal1dFe/Vy1Ugw9Wq0biA67jHutKVsmCwu
m7PBza8WU/pt236XvScsrWnqZyjL4h8HR3t7B4d7e9uHu4fbx/v7g4PBgX3+
d8oBNfzPF1jTI6DYB8vLeiAym7uvcDm+E6Q9j3F1gkSUHNebSyDqa25rb+d4
7/jgcOe4fTOM2R5jvWt9v37eEgdfukRYor9mVXnHWiVLILpHEqWmKposqtUZ
ko1EutbEHAOjRZCUuPZR5cFtj4epXi1pXiuSg8LEJgfBe60n0Efu+5JTu74m
PuwMSFIe7R7sHQWTiV5at83UTNNytSsvVyRs/a7Kxnjzmy1mMlstvKUVqqGS
7K/lviNa2DnleA247ZYaWT0PRTb+7W+nSH2n/wgnxcdHrCTj02MS6dz+4G9/
+4H0ZfyXQ4zEn//2t4sqqa/MPaWqjPe9TDfpNoq5/s+/0T/h4o0Bcl9ECYys
tpeCDFqbm2dVhftAaGUyqRnOmMT+YA2wPrYNVzMW+nthHQ13wltmQG4NTSTw
mXqD/I2l/M+wGs+g/rLlrGPTd63r19alNbnfZ3DJBndoCgKcQRcJ3uLc7fzs
Pbgi33OJ1bcD7EwuQyJSZRkGV8fGXYKMvQOJsbO8yg0T4Ezi1zRQkAkM9l1k
L8ZBtrL886Hx9z2h7/752L17xNUZxzxC8PfP3l/B2O4APiWjORwBJszq15dT
qFcmUd+xKX9LXlJ1q8RoLuoLhNaqjbRu4hPzoJuezN9AMYla0zFNhuO9UpV9
R3EzU9k3wNYlKkefl6fsm0smcfj0x4eTxVC+E4bQeXaQHh8no92dw/3hcM+k
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
y+ZGvbKqO17fQ9ejnf2L7eOT7W36n3nbKuidswUOiNT5IlVjzVelOy8vBt/v
bj+TH1rVko7fZNGBwM/ms2hhGyAmBXezcb+0ZNN1ENWZ47vOL/T8H/Rc+6Ny
atHFhVWWUtE6SMAs0gwTes0jm+6INtXvE1s/tZTe9QTbDLJKEqxfbHdhDH6T
GusV2LXlvpre6Cw+UU/RSIiOXAcb/lkayYHj9hsVUw9dqxvtTmZ/8rrgaI+y
KuNKmLl2ZbxfxRL60rT0K9RM7qBbob2Sunu/VoV2qaZPYRR5DVO47b2tJ/C7
pdg0bOkzww/5TT9sV3XTmU5770pVO7LUvevUGynsRCyoH5pfJSa73WaX693e
NoEZ+F9r0+EvSAc3UPsnywh3mLUiLbwN0Vozw9vwjPfQy7P5uIf7CHoWdTa/
Qv736pYtZprlDghLV+L6D953X3drQHd0gnmspjf9GN+newveeaK6Af9z3z4y
p9yq79PeeXFTfMo7r/lAXqqz4eR++zn/8aWd457zmKLqT3nHVlyvfWe1lnwf
remr5aqttSAlL+0r5qP9g3LHmqfQstUwOWx9Mlj7aPdIx2pbwYpUqy9MrfrH
5EetR6ZG7tO6XKe7/AfO/f/VE5fuP3EwyEr3SPc+iUi/cQjMyJCv3AnLCLxv
fb2LtB7RYX11+TeNhgU6zp2z/BdokfWp3vCFFkUSesI2XOR1WFkXX+f1Arhw
z/DHf5oOXXn9Y17nw/bgW/sbYps9KU4l7sfK8Jqj+IlNNbV3+LKQfIgUWDoN
hDu2EOswMUQZ684gqeU2dGJcfDTXO1wYW2DLh9jyRTE4Rh3RXHEcnpOFaw1L
sZFyssJuCjdCS3+ytQid+q44tJNpllY21qvIodnVfMdMLiiOJaR2haYuXcxr
vhq34fcTy117rHHlNIxCMuL42hVd1zJ/+6r91ta4KZcAQwD/bNgQvvTS5PY/
D3S+tMFeaKf9z2+01zAoW/d4n4Z7beM0HafmmdW+09GySc6e1LUN8LpxvcAt
ILV9XfyqXenYK1f/oTUDx9m6sV2rW/XO1mbYeiyQTQ/qeJrNE/Qj8FvYf457
NvSVeM3r/a8/tXve/Zy0xtv5E24ODSc0wrzzzWBnd2//QD23ze55rc3zVnUh
W8aaFh+B6yPWdAaEv3gmf8sPYteHPzSN98ZMYqaHXy43N2vtbdaG0da16jpB
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
yqijkOi4qkmCFvWiUXwV/w9WoU098NEBAA==

-->

</rfc>
