Personal Data Portability Archive (PDPArchive) format for mail, contacts, calendar, tasks and notes

Added on June 3, 2026 • Managed by Data Transfer Initiative

PDPArchive Calendar schema

{
  "$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"
    }
  }
}

View source