draft-ietf-calext-jscalendar-19.txt   draft-ietf-calext-jscalendar-20.txt 
Calendaring extensions N. Jenkins Calendaring extensions N. Jenkins
Internet-Draft R. Stepanek Internet-Draft R. Stepanek
Intended status: Standards Track Fastmail Intended status: Standards Track Fastmail
Expires: April 5, 2020 October 3, 2019 Expires: April 17, 2020 October 15, 2019
JSCalendar: A JSON representation of calendar data JSCalendar: A JSON representation of calendar data
draft-ietf-calext-jscalendar-19 draft-ietf-calext-jscalendar-20
Abstract Abstract
This specification defines a data model and JSON representation of This specification defines a data model and JSON representation of
calendar data that can be used for storage and data exchange in a calendar data that can be used for storage and data exchange in a
calendaring and scheduling environment. It aims to be an calendaring and scheduling environment. It aims to be an
alternative, and over time successor to, the widely deployed alternative, and over time successor to, the widely deployed
iCalendar data format and to be unambiguous, extendable and simple to iCalendar data format and to be unambiguous, extendable and simple to
process. In contrast to the JSON-based jCal format, it is not a process. In contrast to the JSON-based jCal format, it is not a
direct mapping from iCalendar and expands semantics where direct mapping from iCalendar and expands semantics where
skipping to change at page 1, line 37 skipping to change at page 1, line 37
Internet-Drafts are working documents of the Internet Engineering Internet-Drafts are working documents of the Internet Engineering
Task Force (IETF). Note that other groups may also distribute Task Force (IETF). Note that other groups may also distribute
working documents as Internet-Drafts. The list of current Internet- working documents as Internet-Drafts. The list of current Internet-
Drafts is at https://datatracker.ietf.org/drafts/current/. Drafts is at https://datatracker.ietf.org/drafts/current/.
Internet-Drafts are draft documents valid for a maximum of six months Internet-Drafts are draft documents valid for a maximum of six months
and may be updated, replaced, or obsoleted by other documents at any and may be updated, replaced, or obsoleted by other documents at any
time. It is inappropriate to use Internet-Drafts as reference time. It is inappropriate to use Internet-Drafts as reference
material or to cite them other than as "work in progress." material or to cite them other than as "work in progress."
This Internet-Draft will expire on April 5, 2020. This Internet-Draft will expire on April 17, 2020.
Copyright Notice Copyright Notice
Copyright (c) 2019 IETF Trust and the persons identified as the Copyright (c) 2019 IETF Trust and the persons identified as the
document authors. All rights reserved. document authors. All rights reserved.
This document is subject to BCP 78 and the IETF Trust's Legal This document is subject to BCP 78 and the IETF Trust's Legal
Provisions Relating to IETF Documents Provisions Relating to IETF Documents
(https://trustee.ietf.org/license-info) in effect on the date of (https://trustee.ietf.org/license-info) in effect on the date of
publication of this document. Please review these documents publication of this document. Please review these documents
skipping to change at page 2, line 48 skipping to change at page 2, line 48
4.1.5. created . . . . . . . . . . . . . . . . . . . . . . . 14 4.1.5. created . . . . . . . . . . . . . . . . . . . . . . . 14
4.1.6. updated . . . . . . . . . . . . . . . . . . . . . . . 14 4.1.6. updated . . . . . . . . . . . . . . . . . . . . . . . 14
4.1.7. sequence . . . . . . . . . . . . . . . . . . . . . . 14 4.1.7. sequence . . . . . . . . . . . . . . . . . . . . . . 14
4.1.8. method . . . . . . . . . . . . . . . . . . . . . . . 14 4.1.8. method . . . . . . . . . . . . . . . . . . . . . . . 14
4.2. What and Where Properties . . . . . . . . . . . . . . . . 14 4.2. What and Where Properties . . . . . . . . . . . . . . . . 14
4.2.1. title . . . . . . . . . . . . . . . . . . . . . . . . 14 4.2.1. title . . . . . . . . . . . . . . . . . . . . . . . . 14
4.2.2. description . . . . . . . . . . . . . . . . . . . . . 14 4.2.2. description . . . . . . . . . . . . . . . . . . . . . 14
4.2.3. descriptionContentType . . . . . . . . . . . . . . . 15 4.2.3. descriptionContentType . . . . . . . . . . . . . . . 15
4.2.4. showWithoutTime . . . . . . . . . . . . . . . . . . . 15 4.2.4. showWithoutTime . . . . . . . . . . . . . . . . . . . 15
4.2.5. locations . . . . . . . . . . . . . . . . . . . . . . 15 4.2.5. locations . . . . . . . . . . . . . . . . . . . . . . 15
4.2.6. virtualLocations . . . . . . . . . . . . . . . . . . 16 4.2.6. virtualLocations . . . . . . . . . . . . . . . . . . 17
4.2.7. links . . . . . . . . . . . . . . . . . . . . . . . . 17 4.2.7. links . . . . . . . . . . . . . . . . . . . . . . . . 17
4.2.8. locale . . . . . . . . . . . . . . . . . . . . . . . 19 4.2.8. locale . . . . . . . . . . . . . . . . . . . . . . . 19
4.2.9. keywords . . . . . . . . . . . . . . . . . . . . . . 19 4.2.9. keywords . . . . . . . . . . . . . . . . . . . . . . 19
4.2.10. categories . . . . . . . . . . . . . . . . . . . . . 19 4.2.10. categories . . . . . . . . . . . . . . . . . . . . . 19
4.2.11. color . . . . . . . . . . . . . . . . . . . . . . . . 19 4.2.11. color . . . . . . . . . . . . . . . . . . . . . . . . 19
4.3. Recurrence Properties . . . . . . . . . . . . . . . . . . 19 4.3. Recurrence Properties . . . . . . . . . . . . . . . . . . 20
4.3.1. recurrenceId . . . . . . . . . . . . . . . . . . . . 20 4.3.1. recurrenceId . . . . . . . . . . . . . . . . . . . . 20
4.3.2. recurrenceRule . . . . . . . . . . . . . . . . . . . 20 4.3.2. recurrenceRule . . . . . . . . . . . . . . . . . . . 20
4.3.3. recurrenceOverrides . . . . . . . . . . . . . . . . . 28 4.3.3. recurrenceOverrides . . . . . . . . . . . . . . . . . 28
4.3.4. excluded . . . . . . . . . . . . . . . . . . . . . . 29 4.3.4. excluded . . . . . . . . . . . . . . . . . . . . . . 29
4.4. Sharing and Scheduling Properties . . . . . . . . . . . . 29 4.4. Sharing and Scheduling Properties . . . . . . . . . . . . 29
4.4.1. priority . . . . . . . . . . . . . . . . . . . . . . 29 4.4.1. priority . . . . . . . . . . . . . . . . . . . . . . 29
4.4.2. freeBusyStatus . . . . . . . . . . . . . . . . . . . 29 4.4.2. freeBusyStatus . . . . . . . . . . . . . . . . . . . 30
4.4.3. privacy . . . . . . . . . . . . . . . . . . . . . . . 30 4.4.3. privacy . . . . . . . . . . . . . . . . . . . . . . . 30
4.4.4. replyTo . . . . . . . . . . . . . . . . . . . . . . . 31 4.4.4. replyTo . . . . . . . . . . . . . . . . . . . . . . . 31
4.4.5. participants . . . . . . . . . . . . . . . . . . . . 31 4.4.5. participants . . . . . . . . . . . . . . . . . . . . 32
4.5. Alerts Properties . . . . . . . . . . . . . . . . . . . . 35 4.5. Alerts Properties . . . . . . . . . . . . . . . . . . . . 36
4.5.1. useDefaultAlerts . . . . . . . . . . . . . . . . . . 35 4.5.1. useDefaultAlerts . . . . . . . . . . . . . . . . . . 36
4.5.2. alerts . . . . . . . . . . . . . . . . . . . . . . . 36 4.5.2. alerts . . . . . . . . . . . . . . . . . . . . . . . 36
4.6. Multilingual Properties . . . . . . . . . . . . . . . . . 38 4.6. Multilingual Properties . . . . . . . . . . . . . . . . . 39
4.6.1. localizations . . . . . . . . . . . . . . . . . . . . 38 4.6.1. localizations . . . . . . . . . . . . . . . . . . . . 39
4.7. Time Zone Properties . . . . . . . . . . . . . . . . . . 38 4.7. Time Zone Properties . . . . . . . . . . . . . . . . . . 39
4.7.1. timeZone . . . . . . . . . . . . . . . . . . . . . . 39 4.7.1. timeZone . . . . . . . . . . . . . . . . . . . . . . 39
4.7.2. timeZones . . . . . . . . . . . . . . . . . . . . . . 39 4.7.2. timeZones . . . . . . . . . . . . . . . . . . . . . . 40
5. Type-specific JSCalendar Properties . . . . . . . . . . . . . 41 5. Type-specific JSCalendar Properties . . . . . . . . . . . . . 42
5.1. JSEvent Properties . . . . . . . . . . . . . . . . . . . 41 5.1. JSEvent Properties . . . . . . . . . . . . . . . . . . . 42
5.1.1. start . . . . . . . . . . . . . . . . . . . . . . . . 41 5.1.1. start . . . . . . . . . . . . . . . . . . . . . . . . 42
5.1.2. duration . . . . . . . . . . . . . . . . . . . . . . 41 5.1.2. duration . . . . . . . . . . . . . . . . . . . . . . 42
5.1.3. status . . . . . . . . . . . . . . . . . . . . . . . 42 5.1.3. status . . . . . . . . . . . . . . . . . . . . . . . 43
5.2. JSTask Properties . . . . . . . . . . . . . . . . . . . . 42 5.2. JSTask Properties . . . . . . . . . . . . . . . . . . . . 43
5.2.1. due . . . . . . . . . . . . . . . . . . . . . . . . . 42 5.2.1. due . . . . . . . . . . . . . . . . . . . . . . . . . 43
5.2.2. start . . . . . . . . . . . . . . . . . . . . . . . . 42 5.2.2. start . . . . . . . . . . . . . . . . . . . . . . . . 43
5.2.3. estimatedDuration . . . . . . . . . . . . . . . . . . 42 5.2.3. estimatedDuration . . . . . . . . . . . . . . . . . . 43
5.2.4. statusUpdatedAt . . . . . . . . . . . . . . . . . . . 42 5.2.4. statusUpdatedAt . . . . . . . . . . . . . . . . . . . 43
5.2.5. progress . . . . . . . . . . . . . . . . . . . . . . 43 5.2.5. progress . . . . . . . . . . . . . . . . . . . . . . 44
5.2.6. status . . . . . . . . . . . . . . . . . . . . . . . 44 5.2.6. status . . . . . . . . . . . . . . . . . . . . . . . 45
5.3. JSGroup Properties . . . . . . . . . . . . . . . . . . . 44 5.3. JSGroup Properties . . . . . . . . . . . . . . . . . . . 45
5.3.1. entries . . . . . . . . . . . . . . . . . . . . . . . 45 5.3.1. entries . . . . . . . . . . . . . . . . . . . . . . . 46
5.3.2. source . . . . . . . . . . . . . . . . . . . . . . . 45 5.3.2. source . . . . . . . . . . . . . . . . . . . . . . . 46
6. Examples . . . . . . . . . . . . . . . . . . . . . . . . . . 45 6. Examples . . . . . . . . . . . . . . . . . . . . . . . . . . 46
6.1. Simple event . . . . . . . . . . . . . . . . . . . . . . 45 6.1. Simple event . . . . . . . . . . . . . . . . . . . . . . 46
6.2. Simple task . . . . . . . . . . . . . . . . . . . . . . . 46 6.2. Simple task . . . . . . . . . . . . . . . . . . . . . . . 47
6.3. Simple group . . . . . . . . . . . . . . . . . . . . . . 46 6.3. Simple group . . . . . . . . . . . . . . . . . . . . . . 47
6.4. All-day event . . . . . . . . . . . . . . . . . . . . . . 47 6.4. All-day event . . . . . . . . . . . . . . . . . . . . . . 48
6.5. Task with a due date . . . . . . . . . . . . . . . . . . 47 6.5. Task with a due date . . . . . . . . . . . . . . . . . . 48
6.6. Event with end time-zone . . . . . . . . . . . . . . . . 48 6.6. Event with end time-zone . . . . . . . . . . . . . . . . 49
6.7. Floating-time event (with recurrence) . . . . . . . . . . 48 6.7. Floating-time event (with recurrence) . . . . . . . . . . 49
6.8. Event with multiple locations and localization . . . . . 49 6.8. Event with multiple locations and localization . . . . . 50
6.9. Recurring event with overrides . . . . . . . . . . . . . 50 6.9. Recurring event with overrides . . . . . . . . . . . . . 51
6.10. Recurring event with participants . . . . . . . . . . . . 51 6.10. Recurring event with participants . . . . . . . . . . . . 52
7. Security Considerations . . . . . . . . . . . . . . . . . . . 53 7. Security Considerations . . . . . . . . . . . . . . . . . . . 54
7.1. Expanding Recurrences . . . . . . . . . . . . . . . . . . 53 7.1. Expanding Recurrences . . . . . . . . . . . . . . . . . . 54
7.2. JSON Parsing . . . . . . . . . . . . . . . . . . . . . . 53 7.2. JSON Parsing . . . . . . . . . . . . . . . . . . . . . . 54
7.3. URI Values . . . . . . . . . . . . . . . . . . . . . . . 54 7.3. URI Values . . . . . . . . . . . . . . . . . . . . . . . 55
8. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 54 8. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 55
8.1. Media Type Registration . . . . . . . . . . . . . . . . . 54 8.1. Media Type Registration . . . . . . . . . . . . . . . . . 55
8.2. Creation of "JSCalendar Properties" Registry . . . . . . 55 8.2. Creation of "JSCalendar Properties" Registry . . . . . . 56
8.2.1. Preliminary Community Review . . . . . . . . . . . . 56 8.2.1. Preliminary Community Review . . . . . . . . . . . . 57
8.2.2. Submit Request to IANA . . . . . . . . . . . . . . . 56 8.2.2. Submit Request to IANA . . . . . . . . . . . . . . . 57
8.2.3. Designated Expert Review . . . . . . . . . . . . . . 56 8.2.3. Designated Expert Review . . . . . . . . . . . . . . 57
8.2.4. Change Procedures . . . . . . . . . . . . . . . . . . 57 8.2.4. Change Procedures . . . . . . . . . . . . . . . . . . 58
8.2.5. JMAP Properties Registry Template . . . . . . . . . . 57 8.2.5. JMAP Properties Registry Template . . . . . . . . . . 58
8.2.6. Initial Contents for the JSCalendar Properties 8.2.6. Initial Contents for the JSCalendar Properties
Registry . . . . . . . . . . . . . . . . . . . . . . 58 Registry . . . . . . . . . . . . . . . . . . . . . . 59
8.3. Creation of "JSCalendar Types" Registry . . . . . . . . . 65 8.3. Creation of "JSCalendar Types" Registry . . . . . . . . . 66
8.3.1. JMAP Types Registry Template . . . . . . . . . . . . 65 8.3.1. JMAP Types Registry Template . . . . . . . . . . . . 66
8.3.2. Initial Contents for the JSCalendar Properties 8.3.2. Initial Contents for the JSCalendar Properties
Registry . . . . . . . . . . . . . . . . . . . . . . 65 Registry . . . . . . . . . . . . . . . . . . . . . . 67
8.4. Creation of "JSCalendar Enum Values" Registry . . . . . . 67 8.4. Creation of "JSCalendar Enum Values" Registry . . . . . . 69
8.4.1. JMAP Enum Subregistry Creation Template . . . . . . . 67 8.4.1. JMAP Enum Subregistry Creation Template . . . . . . . 69
8.4.2. JMAP Enum Subregistry Creation Template . . . . . . . 67 8.4.2. JMAP Enum Subregistry Creation Template . . . . . . . 69
8.4.3. Initial Contents for the JSCalendar Enum Registry . . 67 8.4.3. Initial Contents for the JSCalendar Enum Registry . . 69
9. Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . 74 9. Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . 76
10. References . . . . . . . . . . . . . . . . . . . . . . . . . 74 10. References . . . . . . . . . . . . . . . . . . . . . . . . . 76
10.1. Normative References . . . . . . . . . . . . . . . . . . 74 10.1. Normative References . . . . . . . . . . . . . . . . . . 76
10.2. Informative References . . . . . . . . . . . . . . . . . 76 10.2. Informative References . . . . . . . . . . . . . . . . . 78
10.3. URIs . . . . . . . . . . . . . . . . . . . . . . . . . . 76 10.3. URIs . . . . . . . . . . . . . . . . . . . . . . . . . . 79
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 77 Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 79
1. Introduction 1. Introduction
This document defines a data model for calendar event and task This document defines a data model for calendar event and task
objects, or groups of such objects, in electronic calendar objects, or groups of such objects, in electronic calendar
applications and systems. It aims to be unambiguous, extendable and applications and systems. It aims to be unambiguous, extendable and
simple to process. simple to process.
The key design considerations for this data model are as follows: The key design considerations for this data model are as follows:
skipping to change at page 16, line 11 skipping to change at page 16, line 11
o name: "String" (optional) o name: "String" (optional)
The human-readable name of the location. The human-readable name of the location.
o description: "String" (optional) o description: "String" (optional)
Human-readable, plain-text instructions for accessing this Human-readable, plain-text instructions for accessing this
location. This may be an address, set of directions, door access location. This may be an address, set of directions, door access
code, etc. code, etc.
o categories: "String[Boolean]" (optional)
A set of one or more location types that describe this location.
All types MUST be from the Location Types Registry as defined in
[RFC4589]. The set is represented as a map, with the keys being
the location types. The value for each key in the map MUST be
true.
o relativeTo: "String" (optional) o relativeTo: "String" (optional)
The relation type of this location to the JSCalendar object. The relation type of this location to the JSCalendar object.
This MUST be either one of the following values, an IANA- This MUST be either one of the following values, an IANA-
registered value, or a vendor-specific value. Any value the registered value, or a vendor-specific value. Any value the
client or server doesn't understand should be treated the same as client or server doesn't understand should be treated the same as
if this property is omitted. if this property is omitted.
* "start": The JSCalendar object starts at this location. * "start": The JSCalendar object starts at this location.
skipping to change at page 32, line 19 skipping to change at page 32, line 38
Specifies the type of this object. This MUST be "Participant". Specifies the type of this object. This MUST be "Participant".
o name: "String" (optional) o name: "String" (optional)
The display name of the participant (e.g. "Joe Bloggs"). The display name of the participant (e.g. "Joe Bloggs").
o email: "String" (optional) o email: "String" (optional)
The email address for the participant. The email address for the participant.
o sendTo: "String[String]" (mandatory) o sendTo: "String[String]" (optional)
Represents methods by which the participant may receive the Represents methods by which the participant may receive the
invitation and updates to the calendar object. invitation and updates to the calendar object.
The keys in the property value are the available methods and MUST The keys in the property value are the available methods and MUST
only contain ASCII alphanumeric characters (A-Za-z0-9). The value only contain ASCII alphanumeric characters (A-Za-z0-9). The value
is a URI to use that method. Future methods may be defined in is a URI to use that method. Future methods may be defined in
future specifications and registered with IANA; a calendar client future specifications and registered with IANA; a calendar client
MUST ignore any method it does not understand, but MUST preserve MUST ignore any method it does not understand, but MUST preserve
the method key and URI. This property MUST be omitted if no the method key and URI. This property MUST be omitted if no
skipping to change at page 33, line 23 skipping to change at page 33, line 43
A set of roles that this participant fulfills. A set of roles that this participant fulfills.
At least one role MUST be specified for the participant. The keys At least one role MUST be specified for the participant. The keys
in the set MUST be either one of the following values, an IANA- in the set MUST be either one of the following values, an IANA-
registered value, or a vendor-specific value: registered value, or a vendor-specific value:
* "owner": The participant is an owner of the object. This * "owner": The participant is an owner of the object. This
signifies they have permission to make changes to it that signifies they have permission to make changes to it that
affect the other participants. Non-owner participants may only affect the other participants. Non-owner participants may only
change properties that just affect themself (for example change properties that just affect themself (for example
setting their own alerts). setting their own alerts or changing their rsvp status).
* "attendee": The participant is an attendee of the calendar * "attendee": The participant is expected to attend.
object.
* "chair": The participant is in charge of the calendar object * "optional": The participant is invited but not required.
when it occurs.
The value for each key in the set MUST be true. Roles that are * "informational": The participant is copied for informational
unknown to the implementation MUST be preserved. reasons, and is not expected to attend.
* "chair": The participant is in charge of the event/task when it
occurs.
The value for each key in the set MUST be true. It is expected
that no more than one of the roles "attendee", "optional", or
"informational" be present; if more than one are given, "optional"
takes precedence over "informational", and "attendee" takes
precedence over both. Roles that are unknown to the
implementation MUST be preserved.
o locationId: "String" (optional) o locationId: "String" (optional)
The location at which this participant is expected to be The location at which this participant is expected to be
attending. attending.
If the value does not correspond to any location id in the If the value does not correspond to any location id in the
"locations" property of the JSCalendar object, this MUST be "locations" property of the JSCalendar object, this MUST be
treated the same as if the participant's locationId were omitted. treated the same as if the participant's locationId were omitted.
o language: "String" (optional)
The language tag as defined in [RFC5646] that best describes the
participant's preferred language, if known.
o participationStatus: "String" (optional, default: "needs-action") o participationStatus: "String" (optional, default: "needs-action")
The participation status, if any, of this participant. The participation status, if any, of this participant.
The value MUST be either one of the following values, an IANA- The value MUST be either one of the following values, an IANA-
registered value, or a vendor-specific value: registered value, or a vendor-specific value:
* "needs-action": No status yet set by the participant. * "needs-action": No status yet set by the participant.
* "accepted": The invited participant will participate. * "accepted": The invited participant will participate.
* "declined": The invited participant will not participate. * "declined": The invited participant will not participate.
* "tentative": The invited participant may participate. * "tentative": The invited participant may participate.
o participationComment: "String" (optional) o participationComment: "String" (optional)
A note from the participant to explain their participation status. A note from the participant to explain their participation status.
o attendance: "String" (optional, default: "required") o expectReply: "Boolean" (optional, default: false)
The required attendance of this participant. If true, the organizer is expecting the participant to notify them
of their participation status.
The value MUST be either one of the following values, an IANA- o scheduleAgent: "String" (optional, default: "server")
registered value, or a vendor-specific value. Any value the
client or server doesn't understand should be treated the same as
"required".
* "none": Indicates a participant who is copied for information Who is responsible for sending scheduling messages with this
purposes only. calendar object to the participant.
* "optional": Indicates a participant whose attendance is The value MUST be either one of the following values, an IANA-
optional. registered value, or a vendor-specific value:
* "required": Indicates a participant whose attendance is * "server": The calendar server will send the scheduling
required. messages.
o expectReply: "Boolean" (optional, default: false) * "accepted": The calendar client will send the scheduling
messages.
If true, the organizer is expecting the participant to notify them * "none": No scheduling messages are to be sent to this
of their participation status. participant.
o scheduleSequence: "UnsignedInt" (optional, default: 0) o scheduleSequence: "UnsignedInt" (optional, default: 0)
The sequence number of the last response from the participant. If The sequence number of the last response from the participant. If
defined, this MUST be a non-negative integer. defined, this MUST be a non-negative integer.
This can be used to determine whether the participant has sent a This can be used to determine whether the participant has sent a
new RSVP following significant changes to the calendar object, and new RSVP following significant changes to the calendar object, and
to determine if future responses are responding to a current or to determine if future responses are responding to a current or
older view of the data. older view of the data.
skipping to change at page 36, line 22 skipping to change at page 37, line 6
A map of alert ids to Alert objects, representing alerts/reminders to A map of alert ids to Alert objects, representing alerts/reminders to
display or send to the user for this calendar object. display or send to the user for this calendar object.
An Alert Object has the following properties: An Alert Object has the following properties:
o @type: "String" (mandatory) o @type: "String" (mandatory)
Specifies the type of this object. This MUST be "Alert". Specifies the type of this object. This MUST be "Alert".
o trigger: "OffsetTrigger|AbsoluteTrigger|UnknownTrigger" o trigger: "OffsetTrigger|AbsoluteTrigger|UnknownTrigger"
(mandatory)
Defines when to trigger the alert. New types may be defined in Defines when to trigger the alert. New types may be defined in
future RFCs. future RFCs.
An *OffsetTrigger* object has the following properties: An *OffsetTrigger* object has the following properties:
* @type: "String" (mandatory) * @type: "String" (mandatory)
Specifies the type of this object. This MUST be Specifies the type of this object. This MUST be
"OffsetTrigger". "OffsetTrigger".
* offset: "SignedDuration" (mandatory). * offset: "SignedDuration" (mandatory).
Defines the offset at which to trigger the alert relative to Defines the offset at which to trigger the alert relative to
the time property defined in the "relativeTo" property of the the time property defined in the "relativeTo" property of the
alert. If the calendar object does not define a time zone, the alert. Negative durations signify alerts before the time
user's default time zone SHOULD be used when determining the property, positive durations signify alerts after. If the
offset, if known. Otherwise, the time zone to use is calendar object does not define a time zone, the user's default
implementation specific. time zone SHOULD be used when determining the offset, if known.
Otherwise, the time zone to use is implementation specific.
* relativeTo: "String" (optional, default: "start") * relativeTo: "String" (optional, default: "start")
Specifies the time property that the alert offset is relative Specifies the time property that the alert offset is relative
to. The value MUST be one of: to. The value MUST be one of:
+ "start": triggers the alert relative to the start of the + "start": triggers the alert relative to the start of the
calendar object calendar object
+ "end": triggers the alert relative to the end/due time of + "end": triggers the alert relative to the end/due time of
skipping to change at page 45, line 4 skipping to change at page 45, line 50
5.3. JSGroup Properties 5.3. JSGroup Properties
JSGroup supports the following common JSCalendar properties JSGroup supports the following common JSCalendar properties
(Section 4): (Section 4):
o @type o @type
o categories o categories
o color o color
o created
o created
o description o description
o descriptionContentType o descriptionContentType
o keywords o keywords
o links o links
o prodId o prodId
skipping to change at page 56, line 8 skipping to change at page 57, line 8
semantics to avoid name collisions with future extensions or protocol semantics to avoid name collisions with future extensions or protocol
use. use.
An "obsolete" registration denotes a property that is no longer An "obsolete" registration denotes a property that is no longer
expected to be added by up-to-date systems. A new property has expected to be added by up-to-date systems. A new property has
probably been defined covering the obsolete property's semantics. probably been defined covering the obsolete property's semantics.
The JSCalendar property registration procedure is not a formal The JSCalendar property registration procedure is not a formal
standards process but rather an administrative procedure intended to standards process but rather an administrative procedure intended to
allow community comment and sanity checking without excessive time allow community comment and sanity checking without excessive time
delay. delay. It is designed to encourage vendors to document and register
new properties they add for use cases not covered by the original
standard, leading to increased interoperability.
8.2.1. Preliminary Community Review 8.2.1. Preliminary Community Review
Notice of a potential new registration SHOULD be sent to the Calext Notice of a potential new registration SHOULD be sent to the Calext
mailing list <calsify@ietf.org> for review. This mailing list is mailing list <calsify@ietf.org> for review. This mailing list is
appropriate to solicit community feedback on a proposed new property. appropriate to solicit community feedback on a proposed new property.
Properties registrations must be marked with their intended use: Properties registrations must be marked with their intended use:
"common", "reserved" or "obsolete". "common", "reserved" or "obsolete".
skipping to change at page 56, line 34 skipping to change at page 57, line 36
time. time.
8.2.2. Submit Request to IANA 8.2.2. Submit Request to IANA
Registration requests can be sent to <iana@iana.org>. Registration requests can be sent to <iana@iana.org>.
8.2.3. Designated Expert Review 8.2.3. Designated Expert Review
The primary concern of the designated expert (DE) is preventing name The primary concern of the designated expert (DE) is preventing name
collisions and encouraging the submitter to document security and collisions and encouraging the submitter to document security and
privacy considerations; a published specification is not required. privacy considerations. For a common-use registration, the DE is
For a common-use registration, the DE is expected to confirm that expected to confirm that suitable documentation, as described in
suitable documentation, as described in Section 4.6 of [RFC8126], is Section 4.6 of [RFC8126], is available to ensure interoperability.
available. The DE should also verify that the property name does not This preferably takes the form of an RFC, but for simple definitions
conflict with work that is active or already published within the a description in the registry may be sufficient. The DE should also
IETF. verify that the property name does not conflict with work that is
active or already published within the IETF. A published
specification is not required for reserved or obsolete registrations.
Before a period of 30 days has passed, the DE will either approve or Before a period of 30 days has passed, the DE will either approve or
deny the registration request and publish a notice of the decision to deny the registration request and publish a notice of the decision to
the Calext WG mailing list or its successor, as well as inform IANA. the Calext WG mailing list or its successor, as well as inform IANA.
A denial notice must be justified by an explanation, and, in the A denial notice must be justified by an explanation, and, in the
cases where it is possible, concrete suggestions on how the request cases where it is possible, concrete suggestions on how the request
can be modified so as to become acceptable should be provided. can be modified so as to become acceptable should be provided.
If the DE does not respond within 30 days, the registrant may request If the DE does not respond within 30 days, the registrant may request
the IESG take action to process the request in a timely manner. the IESG take action to process the request in a timely manner.
skipping to change at page 59, line 13 skipping to change at page 60, line 15
| | | | 4.5.2 | | | | | 4.5.2 |
| | | | | | | | | |
| action | String | Alert | Sectio | | action | String | Alert | Sectio |
| | | | n | | | | | n |
| | | | 4.5.2 | | | | | 4.5.2 |
| | | | | | | | | |
| alerts | Id[Alert] | JSEvent, | Sectio | | alerts | Id[Alert] | JSEvent, | Sectio |
| | | JSTask | n | | | | JSTask | n |
| | | | 4.5.2 | | | | | 4.5.2 |
| | | | | | | | | |
| attendance | String | Participant | Sectio |
| | | | n |
| | | | 4.4.5 |
| | | | |
| categories | String[Boolean] | JSEvent, | Sectio | | categories | String[Boolean] | JSEvent, | Sectio |
| | | JSTask, | n | | | | JSTask, | n |
| | | JSGroup | 4.2.10 | | | | JSGroup | 4.2.10 |
| | | | | | | | | |
| categories | String[Boolean] | Location | Sectio |
| | | | n |
| | | | 4.2.5 |
| | | | |
| cid | String | Link | Sectio | | cid | String | Link | Sectio |
| | | | n | | | | | n |
| | | | 4.2.7 | | | | | 4.2.7 |
| | | | | | | | | |
| color | String | JSEvent, | Sectio | | color | String | JSEvent, | Sectio |
| | | JSTask, | n | | | | JSTask, | n |
| | | JSGroup | 4.2.11 | | | | JSGroup | 4.2.11 |
| | | | | | | | | |
| contentType | String | Link | Sectio | | contentType | String | Link | Sectio |
| | | | n | | | | | n |
skipping to change at page 61, line 19 skipping to change at page 62, line 21
| | | | 4.4.5 | | | | | 4.4.5 |
| | | | | | | | | |
| keywords | String[Boolean] | JSEvent, | Sectio | | keywords | String[Boolean] | JSEvent, | Sectio |
| | | JSTask, | n | | | | JSTask, | n |
| | | JSGroup | 4.2.9 | | | | JSGroup | 4.2.9 |
| | | | | | | | | |
| kind | String | Participant | Sectio | | kind | String | Participant | Sectio |
| | | | n | | | | | n |
| | | | 4.4.5 | | | | | 4.4.5 |
| | | | | | | | | |
| language | String | Participant | Sectio |
| | | | n |
| | | | 4.4.5 |
| | | | |
| linkIds | Id[Boolean] | Location, | Sectio | | linkIds | Id[Boolean] | Location, | Sectio |
| | | Participant | n | | | | Participant | n |
| | | | 4.2.5, | | | | | 4.2.5, |
| | | | Sectio | | | | | Sectio |
| | | | n | | | | | n |
| | | | 4.4.5 | | | | | 4.4.5 |
| | | | | | | | | |
| localization | String[PatchObject] | JSEvent, | Sectio | | localization | String[PatchObject] | JSEvent, | Sectio |
| s | | JSTask | n | | s | | JSTask | n |
| | | | 4.6.1 | | | | | 4.6.1 |
skipping to change at page 63, line 27 skipping to change at page 64, line 33
| | | | 4.2.5 | | | | | 4.2.5 |
| | | | | | | | | |
| replyTo | String[String] | JSEvent, | Sectio | | replyTo | String[String] | JSEvent, | Sectio |
| | | JSTask | n | | | | JSTask | n |
| | | | 4.4.4 | | | | | 4.4.4 |
| | | | | | | | | |
| roles | String[Boolean] | Participant | Sectio | | roles | String[Boolean] | Participant | Sectio |
| | | | n | | | | | n |
| | | | 4.4.5 | | | | | 4.4.5 |
| | | | | | | | | |
| scheduleAgen | String | Participant | Sectio |
| t | | | n |
| | | | 4.4.5 |
| | | | |
| scheduleSequ | UnsignedInt | Participant | Sectio | | scheduleSequ | UnsignedInt | Participant | Sectio |
| ence | | | n | | ence | | | n |
| | | | 4.4.5 | | | | | 4.4.5 |
| | | | | | | | | |
| scheduleUpda | UTCDateTime | Participant | Sectio | | scheduleUpda | UTCDateTime | Participant | Sectio |
| ted | | | n | | ted | | | n |
| | | | 4.4.5 | | | | | 4.4.5 |
| | | | | | | | | |
| sendTo | String[String] | Participant | Sectio | | sendTo | String[String] | Participant | Sectio |
| | | | n | | | | | n |
skipping to change at page 68, line 22 skipping to change at page 70, line 22
+------------+---------------+ +------------+---------------+
| display | Section 4.5.2 | | display | Section 4.5.2 |
| | | | | |
| email | Section 4.5.2 | | email | Section 4.5.2 |
+------------+---------------+ +------------+---------------+
Table 3 Table 3
------------------------------------------------------------ ------------------------------------------------------------
Property Name: attendance
Property Context: Participant
Change Controller: IETF
+------------+---------------+
| Enum Value | Description |
+------------+---------------+
| none | Section 4.4.5 |
| | |
| optional | Section 4.4.5 |
| | |
| required | Section 4.4.5 |
+------------+---------------+
Table 4
------------------------------------------------------------
Property Name: display Property Name: display
Property Context: Link Property Context: Link
Change Controller: IETF Change Controller: IETF
+------------+---------------+ +------------+---------------+
| Enum Value | Description | | Enum Value | Description |
+------------+---------------+ +------------+---------------+
| badge | Section 4.2.7 | | badge | Section 4.2.7 |
| | | | | |
| graphic | Section 4.2.7 | | graphic | Section 4.2.7 |
| | | | | |
| fullsize | Section 4.2.7 | | fullsize | Section 4.2.7 |
| | | | | |
| thumbnail | Section 4.2.7 | | thumbnail | Section 4.2.7 |
skipping to change at page 69, line 16 skipping to change at page 70, line 40
+------------+---------------+ +------------+---------------+
| badge | Section 4.2.7 | | badge | Section 4.2.7 |
| | | | | |
| graphic | Section 4.2.7 | | graphic | Section 4.2.7 |
| | | | | |
| fullsize | Section 4.2.7 | | fullsize | Section 4.2.7 |
| | | | | |
| thumbnail | Section 4.2.7 | | thumbnail | Section 4.2.7 |
+------------+---------------+ +------------+---------------+
Table 5 Table 4
------------------------------------------------------------ ------------------------------------------------------------
Property Name: freeBusyStatus Property Name: freeBusyStatus
Property Context: JSEvent, JSTask Property Context: JSEvent, JSTask
Change Controller: IETF Change Controller: IETF
+------------+---------------+ +------------+---------------+
| Enum Value | Description | | Enum Value | Description |
+------------+---------------+ +------------+---------------+
| free | Section 4.4.2 | | free | Section 4.4.2 |
| | | | | |
| busy | Section 4.4.2 | | busy | Section 4.4.2 |
+------------+---------------+ +------------+---------------+
Table 6 Table 5
------------------------------------------------------------ ------------------------------------------------------------
Property Name: kind Property Name: kind
Property Context: Participant Property Context: Participant
Change Controller: IETF Change Controller: IETF
+------------+---------------+ +------------+---------------+
| Enum Value | Description | | Enum Value | Description |
+------------+---------------+ +------------+---------------+
| individual | Section 4.4.5 | | individual | Section 4.4.5 |
| | | | | |
| group | Section 4.4.5 | | group | Section 4.4.5 |
| | | | | |
| resource | Section 4.4.5 | | resource | Section 4.4.5 |
| | | | | |
| location | Section 4.4.5 | | location | Section 4.4.5 |
skipping to change at page 70, line 16 skipping to change at page 71, line 34
+------------+---------------+ +------------+---------------+
| individual | Section 4.4.5 | | individual | Section 4.4.5 |
| | | | | |
| group | Section 4.4.5 | | group | Section 4.4.5 |
| | | | | |
| resource | Section 4.4.5 | | resource | Section 4.4.5 |
| | | | | |
| location | Section 4.4.5 | | location | Section 4.4.5 |
+------------+---------------+ +------------+---------------+
Table 7 Table 6
------------------------------------------------------------ ------------------------------------------------------------
Property Name: participationStatus Property Name: participationStatus
Property Context: Participant Property Context: Participant
Change Controller: IETF Change Controller: IETF
+--------------+---------------+ +--------------+---------------+
| Enum Value | Description | | Enum Value | Description |
+--------------+---------------+ +--------------+---------------+
| needs-action | Section 4.4.5 | | needs-action | Section 4.4.5 |
| | | | | |
| accepted | Section 4.4.5 | | accepted | Section 4.4.5 |
| | | | | |
| declined | Section 4.4.5 | | declined | Section 4.4.5 |
| | | | | |
| tenative | Section 4.4.5 | | tenative | Section 4.4.5 |
skipping to change at page 70, line 38 skipping to change at page 72, line 16
+--------------+---------------+ +--------------+---------------+
| needs-action | Section 4.4.5 | | needs-action | Section 4.4.5 |
| | | | | |
| accepted | Section 4.4.5 | | accepted | Section 4.4.5 |
| | | | | |
| declined | Section 4.4.5 | | declined | Section 4.4.5 |
| | | | | |
| tenative | Section 4.4.5 | | tenative | Section 4.4.5 |
+--------------+---------------+ +--------------+---------------+
Table 8 Table 7
------------------------------------------------------------ ------------------------------------------------------------
Property Name: privacy Property Name: privacy
Property Context: JSEvent, JSTask Property Context: JSEvent, JSTask
Change Controller: IETF Change Controller: IETF
+------------+---------------+ +------------+---------------+
| Enum Value | Description | | Enum Value | Description |
+------------+---------------+ +------------+---------------+
| public | Section 4.4.3 | | public | Section 4.4.3 |
| | | | | |
| private | Section 4.4.3 | | private | Section 4.4.3 |
| | | | | |
| secret | Section 4.4.3 | | secret | Section 4.4.3 |
+------------+---------------+ +------------+---------------+
skipping to change at page 71, line 14 skipping to change at page 72, line 36
+------------+---------------+ +------------+---------------+
| Enum Value | Description | | Enum Value | Description |
+------------+---------------+ +------------+---------------+
| public | Section 4.4.3 | | public | Section 4.4.3 |
| | | | | |
| private | Section 4.4.3 | | private | Section 4.4.3 |
| | | | | |
| secret | Section 4.4.3 | | secret | Section 4.4.3 |
+------------+---------------+ +------------+---------------+
Table 9 Table 8
------------------------------------------------------------ ------------------------------------------------------------
Property Name: progress Property Name: progress
Property Context: ParticipantProgress Property Context: ParticipantProgress
Change Controller: IETF Change Controller: IETF
+------------+---------------+ +------------+---------------+
| Enum Value | Description | | Enum Value | Description |
+------------+---------------+ +------------+---------------+
| completed | Section 5.2.5 | | completed | Section 5.2.5 |
| | | | | |
| in-process | Section 5.2.5 | | in-process | Section 5.2.5 |
| | | | | |
| failed | Section 5.2.5 | | failed | Section 5.2.5 |
+------------+---------------+ +------------+---------------+
skipping to change at page 71, line 34 skipping to change at page 73, line 14
+------------+---------------+ +------------+---------------+
| Enum Value | Description | | Enum Value | Description |
+------------+---------------+ +------------+---------------+
| completed | Section 5.2.5 | | completed | Section 5.2.5 |
| | | | | |
| in-process | Section 5.2.5 | | in-process | Section 5.2.5 |
| | | | | |
| failed | Section 5.2.5 | | failed | Section 5.2.5 |
+------------+---------------+ +------------+---------------+
Table 10 Table 9
------------------------------------------------------------ ------------------------------------------------------------
Property Name: relation Property Name: relation
Property Context: Relation Property Context: Relation
Change Controller: IETF Change Controller: IETF
+------------+----------------+ +------------+----------------+
| Enum Value | Description | | Enum Value | Description |
+------------+----------------+ +------------+----------------+
| first | Section 1.4.10 | | first | Section 1.4.10 |
| | | | | |
| next | Section 1.4.10 | | next | Section 1.4.10 |
| | | | | |
| child | Section 1.4.10 | | child | Section 1.4.10 |
| | | | | |
| parent | Section 1.4.10 | | parent | Section 1.4.10 |
skipping to change at page 72, line 16 skipping to change at page 73, line 36
+------------+----------------+ +------------+----------------+
| first | Section 1.4.10 | | first | Section 1.4.10 |
| | | | | |
| next | Section 1.4.10 | | next | Section 1.4.10 |
| | | | | |
| child | Section 1.4.10 | | child | Section 1.4.10 |
| | | | | |
| parent | Section 1.4.10 | | parent | Section 1.4.10 |
+------------+----------------+ +------------+----------------+
Table 11 Table 10
------------------------------------------------------------ ------------------------------------------------------------
Property Name: relativeTo Property Name: relativeTo
Property Context: OffsetTrigger, Location Property Context: OffsetTrigger, Location
Change Controller: IETF Change Controller: IETF
+------------+---------------+ +------------+---------------+
| Enum Value | Description | | Enum Value | Description |
+------------+---------------+ +------------+---------------+
| start | Section 4.5.2 | | start | Section 4.5.2 |
| | | | | |
| end | Section 4.5.2 | | end | Section 4.5.2 |
+------------+---------------+ +------------+---------------+
Table 12 Table 11
------------------------------------------------------------ ------------------------------------------------------------
Property Name: roles Property Name: roles
Property Context: Participant Property Context: Participant
Change Controller: IETF Change Controller: IETF
+---------------+---------------+
| Enum Value | Description |
+---------------+---------------+
| owner | Section 4.4.5 |
| | |
| attendee | Section 4.4.5 |
| | |
| optional | Section 4.4.5 |
| | |
| informational | Section 4.4.5 |
| | |
| chair | Section 4.4.5 |
+---------------+---------------+
Table 12
------------------------------------------------------------
Property Name: scheduleAgent
Property Context: Participant
Change Controller: IETF
+------------+---------------+ +------------+---------------+
| Enum Value | Description | | Enum Value | Description |
+------------+---------------+ +------------+---------------+
| owner | Section 4.4.5 | | server | Section 4.4.5 |
| | | | | |
| attendee | Section 4.4.5 | | client | Section 4.4.5 |
| | | | | |
| chair | Section 4.4.5 | | none | Section 4.4.5 |
+------------+---------------+ +------------+---------------+
Table 13 Table 13
------------------------------------------------------------ ------------------------------------------------------------
Property Name: status Property Name: status
Property Context: JSEvent Property Context: JSEvent
skipping to change at page 75, line 10 skipping to change at page 77, line 10
[RFC3986] Berners-Lee, T., Fielding, R., and L. Masinter, "Uniform [RFC3986] Berners-Lee, T., Fielding, R., and L. Masinter, "Uniform
Resource Identifier (URI): Generic Syntax", STD 66, Resource Identifier (URI): Generic Syntax", STD 66,
RFC 3986, DOI 10.17487/RFC3986, January 2005, RFC 3986, DOI 10.17487/RFC3986, January 2005,
<https://www.rfc-editor.org/info/rfc3986>. <https://www.rfc-editor.org/info/rfc3986>.
[RFC4122] Leach, P., Mealling, M., and R. Salz, "A Universally [RFC4122] Leach, P., Mealling, M., and R. Salz, "A Universally
Unique IDentifier (UUID) URN Namespace", RFC 4122, Unique IDentifier (UUID) URN Namespace", RFC 4122,
DOI 10.17487/RFC4122, July 2005, DOI 10.17487/RFC4122, July 2005,
<https://www.rfc-editor.org/info/rfc4122>. <https://www.rfc-editor.org/info/rfc4122>.
[RFC4589] Schulzrinne, H. and H. Tschofenig, "Location Types
Registry", RFC 4589, DOI 10.17487/RFC4589, July 2006,
<https://www.rfc-editor.org/info/rfc4589>.
[RFC4648] Josefsson, S., "The Base16, Base32, and Base64 Data [RFC4648] Josefsson, S., "The Base16, Base32, and Base64 Data
Encodings", RFC 4648, DOI 10.17487/RFC4648, October 2006, Encodings", RFC 4648, DOI 10.17487/RFC4648, October 2006,
<https://www.rfc-editor.org/info/rfc4648>. <https://www.rfc-editor.org/info/rfc4648>.
[RFC4791] Daboo, C., Desruisseaux, B., and L. Dusseault, [RFC4791] Daboo, C., Desruisseaux, B., and L. Dusseault,
"Calendaring Extensions to WebDAV (CalDAV)", RFC 4791, "Calendaring Extensions to WebDAV (CalDAV)", RFC 4791,
DOI 10.17487/RFC4791, March 2007, DOI 10.17487/RFC4791, March 2007,
<https://www.rfc-editor.org/info/rfc4791>. <https://www.rfc-editor.org/info/rfc4791>.
[RFC5545] Desruisseaux, B., Ed., "Internet Calendaring and [RFC5545] Desruisseaux, B., Ed., "Internet Calendaring and
 End of changes. 58 change blocks. 
139 lines changed or deleted 181 lines changed or added

This html diff was produced by rfcdiff 1.47. The latest version is available from http://tools.ietf.org/tools/rfcdiff/