draft-ietf-calext-jscalendar-27.txt   draft-ietf-calext-jscalendar-28.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: December 17, 2020 June 15, 2020 Expires: January 28, 2021 July 27, 2020
JSCalendar: A JSON representation of calendar data JSCalendar: A JSON representation of calendar data
draft-ietf-calext-jscalendar-27 draft-ietf-calext-jscalendar-28
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 alternative calendaring and scheduling environment. It aims to be an alternative
and, over time, successor to the widely deployed iCalendar data and, over time, successor to the widely deployed iCalendar data
format, and to be unambiguous, extendable, and simple to process. In format, and to be unambiguous, extendable, and simple to process. In
contrast to the jCal format, which is also JSON-based, JSCalendar is contrast to the jCal format, which is also JSON-based, JSCalendar is
not a direct mapping from iCalendar, but defines the data model not a direct mapping from iCalendar, but defines the data model
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 December 17, 2020. This Internet-Draft will expire on January 28, 2021.
Copyright Notice Copyright Notice
Copyright (c) 2020 IETF Trust and the persons identified as the Copyright (c) 2020 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 3, line 8 skipping to change at page 3, line 8
4.2.4. showWithoutTime . . . . . . . . . . . . . . . . . . . 15 4.2.4. showWithoutTime . . . . . . . . . . . . . . . . . . . 15
4.2.5. locations . . . . . . . . . . . . . . . . . . . . . . 15 4.2.5. locations . . . . . . . . . . . . . . . . . . . . . . 15
4.2.6. virtualLocations . . . . . . . . . . . . . . . . . . 17 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 . . . . . . . . . . . . . . . . . . . . . . . . 20 4.2.11. color . . . . . . . . . . . . . . . . . . . . . . . . 20
4.3. Recurrence Properties . . . . . . . . . . . . . . . . . . 20 4.3. Recurrence Properties . . . . . . . . . . . . . . . . . . 20
4.3.1. recurrenceId . . . . . . . . . . . . . . . . . . . . 20 4.3.1. recurrenceId . . . . . . . . . . . . . . . . . . . . 20
4.3.2. recurrenceRules . . . . . . . . . . . . . . . . . . . 20 4.3.2. recurrenceRules . . . . . . . . . . . . . . . . . . . 21
4.3.3. recurrenceOverrides . . . . . . . . . . . . . . . . . 28 4.3.3. excludedRecurrenceRules . . . . . . . . . . . . . . . 29
4.3.4. excluded . . . . . . . . . . . . . . . . . . . . . . 30 4.3.4. recurrenceOverrides . . . . . . . . . . . . . . . . . 29
4.3.5. excluded . . . . . . . . . . . . . . . . . . . . . . 30
4.4. Sharing and Scheduling Properties . . . . . . . . . . . . 30 4.4. Sharing and Scheduling Properties . . . . . . . . . . . . 30
4.4.1. priority . . . . . . . . . . . . . . . . . . . . . . 30 4.4.1. priority . . . . . . . . . . . . . . . . . . . . . . 31
4.4.2. freeBusyStatus . . . . . . . . . . . . . . . . . . . 30 4.4.2. freeBusyStatus . . . . . . . . . . . . . . . . . . . 31
4.4.3. privacy . . . . . . . . . . . . . . . . . . . . . . . 30 4.4.3. privacy . . . . . . . . . . . . . . . . . . . . . . . 31
4.4.4. replyTo . . . . . . . . . . . . . . . . . . . . . . . 32 4.4.4. replyTo . . . . . . . . . . . . . . . . . . . . . . . 33
4.4.5. participants . . . . . . . . . . . . . . . . . . . . 32 4.4.5. participants . . . . . . . . . . . . . . . . . . . . 33
4.5. Alerts Properties . . . . . . . . . . . . . . . . . . . . 37 4.5. Alerts Properties . . . . . . . . . . . . . . . . . . . . 39
4.5.1. useDefaultAlerts . . . . . . . . . . . . . . . . . . 37 4.5.1. useDefaultAlerts . . . . . . . . . . . . . . . . . . 39
4.5.2. alerts . . . . . . . . . . . . . . . . . . . . . . . 38 4.5.2. alerts . . . . . . . . . . . . . . . . . . . . . . . 39
4.6. Multilingual Properties . . . . . . . . . . . . . . . . . 40 4.6. Multilingual Properties . . . . . . . . . . . . . . . . . 41
4.6.1. localizations . . . . . . . . . . . . . . . . . . . . 40 4.6.1. localizations . . . . . . . . . . . . . . . . . . . . 41
4.7. Time Zone Properties . . . . . . . . . . . . . . . . . . 40 4.7. Time Zone Properties . . . . . . . . . . . . . . . . . . 42
4.7.1. timeZone . . . . . . . . . . . . . . . . . . . . . . 41 4.7.1. timeZone . . . . . . . . . . . . . . . . . . . . . . 42
4.7.2. timeZones . . . . . . . . . . . . . . . . . . . . . . 41 4.7.2. timeZones . . . . . . . . . . . . . . . . . . . . . . 42
5. Type-specific JSCalendar Properties . . . . . . . . . . . . . 43 5. Type-specific JSCalendar Properties . . . . . . . . . . . . . 45
5.1. JSEvent Properties . . . . . . . . . . . . . . . . . . . 43 5.1. JSEvent Properties . . . . . . . . . . . . . . . . . . . 45
5.1.1. start . . . . . . . . . . . . . . . . . . . . . . . . 43 5.1.1. start . . . . . . . . . . . . . . . . . . . . . . . . 45
5.1.2. duration . . . . . . . . . . . . . . . . . . . . . . 43 5.1.2. duration . . . . . . . . . . . . . . . . . . . . . . 45
5.1.3. status . . . . . . . . . . . . . . . . . . . . . . . 44 5.1.3. status . . . . . . . . . . . . . . . . . . . . . . . 45
5.2. JSTask Properties . . . . . . . . . . . . . . . . . . . . 44 5.2. JSTask Properties . . . . . . . . . . . . . . . . . . . . 46
5.2.1. due . . . . . . . . . . . . . . . . . . . . . . . . . 44 5.2.1. due . . . . . . . . . . . . . . . . . . . . . . . . . 46
5.2.2. start . . . . . . . . . . . . . . . . . . . . . . . . 44 5.2.2. start . . . . . . . . . . . . . . . . . . . . . . . . 46
5.2.3. estimatedDuration . . . . . . . . . . . . . . . . . . 45 5.2.3. estimatedDuration . . . . . . . . . . . . . . . . . . 46
5.2.4. progress . . . . . . . . . . . . . . . . . . . . . . 45 5.2.4. percentComplete . . . . . . . . . . . . . . . . . . . 46
5.2.5. progressUpdated . . . . . . . . . . . . . . . . . . . 45 5.2.5. progress . . . . . . . . . . . . . . . . . . . . . . 46
5.3. JSGroup Properties . . . . . . . . . . . . . . . . . . . 46 5.2.6. progressUpdated . . . . . . . . . . . . . . . . . . . 47
5.3.1. entries . . . . . . . . . . . . . . . . . . . . . . . 47 5.3. JSGroup Properties . . . . . . . . . . . . . . . . . . . 47
5.3.2. source . . . . . . . . . . . . . . . . . . . . . . . 47 5.3.1. entries . . . . . . . . . . . . . . . . . . . . . . . 48
6. Examples . . . . . . . . . . . . . . . . . . . . . . . . . . 47 5.3.2. source . . . . . . . . . . . . . . . . . . . . . . . 48
6.1. Simple event . . . . . . . . . . . . . . . . . . . . . . 47 6. Examples . . . . . . . . . . . . . . . . . . . . . . . . . . 48
6.2. Simple task . . . . . . . . . . . . . . . . . . . . . . . 47 6.1. Simple event . . . . . . . . . . . . . . . . . . . . . . 49
6.3. Simple group . . . . . . . . . . . . . . . . . . . . . . 48 6.2. Simple task . . . . . . . . . . . . . . . . . . . . . . . 49
6.4. All-day event . . . . . . . . . . . . . . . . . . . . . . 48 6.3. Simple group . . . . . . . . . . . . . . . . . . . . . . 49
6.5. Task with a due date . . . . . . . . . . . . . . . . . . 49 6.4. All-day event . . . . . . . . . . . . . . . . . . . . . . 50
6.6. Event with end time-zone . . . . . . . . . . . . . . . . 49 6.5. Task with a due date . . . . . . . . . . . . . . . . . . 50
6.7. Floating-time event (with recurrence) . . . . . . . . . . 50 6.6. Event with end time-zone . . . . . . . . . . . . . . . . 51
6.8. Event with multiple locations and localization . . . . . 50 6.7. Floating-time event (with recurrence) . . . . . . . . . . 51
6.9. Recurring event with overrides . . . . . . . . . . . . . 51 6.8. Event with multiple locations and localization . . . . . 52
6.10. Recurring event with participants . . . . . . . . . . . . 52 6.9. Recurring event with overrides . . . . . . . . . . . . . 53
7. Security Considerations . . . . . . . . . . . . . . . . . . . 54 6.10. Recurring event with participants . . . . . . . . . . . . 54
7.1. Expanding Recurrences . . . . . . . . . . . . . . . . . . 54
7.2. JSON Parsing . . . . . . . . . . . . . . . . . . . . . . 54 7. Security Considerations . . . . . . . . . . . . . . . . . . . 56
7.3. URI Values . . . . . . . . . . . . . . . . . . . . . . . 55 7.1. Expanding Recurrences . . . . . . . . . . . . . . . . . . 56
7.4. Spam . . . . . . . . . . . . . . . . . . . . . . . . . . 55 7.2. JSON Parsing . . . . . . . . . . . . . . . . . . . . . . 56
7.5. Duplication . . . . . . . . . . . . . . . . . . . . . . . 56 7.3. URI Values . . . . . . . . . . . . . . . . . . . . . . . 57
7.6. Time Zones . . . . . . . . . . . . . . . . . . . . . . . 56 7.4. Spam . . . . . . . . . . . . . . . . . . . . . . . . . . 57
8. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 56 7.5. Duplication . . . . . . . . . . . . . . . . . . . . . . . 58
8.1. Media Type Registration . . . . . . . . . . . . . . . . . 56 7.6. Time Zones . . . . . . . . . . . . . . . . . . . . . . . 58
8.2. Creation of "JSCalendar Properties" Registry . . . . . . 57 8. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 58
8.2.1. Preliminary Community Review . . . . . . . . . . . . 58 8.1. Media Type Registration . . . . . . . . . . . . . . . . . 58
8.2.2. Submit Request to IANA . . . . . . . . . . . . . . . 58 8.2. Creation of "JSCalendar Properties" Registry . . . . . . 59
8.2.3. Designated Expert Review . . . . . . . . . . . . . . 58 8.2.1. Preliminary Community Review . . . . . . . . . . . . 60
8.2.4. Change Procedures . . . . . . . . . . . . . . . . . . 59 8.2.2. Submit Request to IANA . . . . . . . . . . . . . . . 60
8.2.5. JSCalendar Properties Registry Template . . . . . . . 59 8.2.3. Designated Expert Review . . . . . . . . . . . . . . 60
8.2.4. Change Procedures . . . . . . . . . . . . . . . . . . 61
8.2.5. JSCalendar Properties Registry Template . . . . . . . 61
8.2.6. Initial Contents for the JSCalendar Properties 8.2.6. Initial Contents for the JSCalendar Properties
Registry . . . . . . . . . . . . . . . . . . . . . . 60 Registry . . . . . . . . . . . . . . . . . . . . . . 62
8.3. Creation of "JSCalendar Types" Registry . . . . . . . . . 67 8.3. Creation of "JSCalendar Types" Registry . . . . . . . . . 69
8.3.1. JSCalendar Types Registry Template . . . . . . . . . 67 8.3.1. JSCalendar Types Registry Template . . . . . . . . . 69
8.3.2. Initial Contents for the JSCalendar Types Registry . 67 8.3.2. Initial Contents for the JSCalendar Types Registry . 69
8.4. Creation of "JSCalendar Enum Values" Registry . . . . . . 69 8.4. Creation of "JSCalendar Enum Values" Registry . . . . . . 71
8.4.1. JSCalendar Enum Property Template . . . . . . . . . . 69 8.4.1. JSCalendar Enum Property Template . . . . . . . . . . 71
8.4.2. JSCalendar Enum Value Template . . . . . . . . . . . 69 8.4.2. JSCalendar Enum Value Template . . . . . . . . . . . 71
8.4.3. Initial Contents for the JSCalendar Enum Registry . . 69 8.4.3. Initial Contents for the JSCalendar Enum Registry . . 71
9. Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . 75 9. Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . 77
10. References . . . . . . . . . . . . . . . . . . . . . . . . . 75 10. References . . . . . . . . . . . . . . . . . . . . . . . . . 77
10.1. Normative References . . . . . . . . . . . . . . . . . . 75 10.1. Normative References . . . . . . . . . . . . . . . . . . 77
10.2. Informative References . . . . . . . . . . . . . . . . . 77 10.2. Informative References . . . . . . . . . . . . . . . . . 79
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 78 Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 80
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. The format aims to be unambiguous, applications and systems. The format aims to be unambiguous,
extendable and simple to process. extendable and 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 20, line 24 skipping to change at page 20, line 24
A color clients MAY use when displaying this calendar object. The A color clients MAY use when displaying this calendar object. The
value is a color name taken from the set of names defined in value is a color name taken from the set of names defined in
Section 4.3 of CSS Color Module Level 3 [COLORS], or an RGB value in Section 4.3 of CSS Color Module Level 3 [COLORS], or an RGB value in
hexadecimal notation, as defined in Section 4.2.1 of CSS Color Module hexadecimal notation, as defined in Section 4.2.1 of CSS Color Module
Level 3. Level 3.
4.3. Recurrence Properties 4.3. Recurrence Properties
Some events and tasks occur at regular or irregular intervals. Some events and tasks occur at regular or irregular intervals.
Rather than having to copy the data for every occurrence there can be Rather than having to copy the data for every occurrence there can be
a master event with a recurrence rule, and/or overrides that add a master event with rules to generate recurrences, and/or overrides
extra dates or exceptions to the rule. that add extra dates or exceptions to the rules.
The recurrence set is the compelete set of instances for an object.
It is generated by considering the following properties in order, all
of which are optional:
1. The recurrenceRules property (Section 4.3.2) generates a set of
extra date-times on which the object occurs.
2. The excludedRecurrenceRules property (Section 4.3.3) generates a
set of date-times that are to be removed from the previously
generated set of date-times on which the object occurs.
3. The recurrenceOverrides property (Section 4.3.4) defines date-
times which are added or excluded to form the final set. (This
property may also contain changes to the object to apply to
particular instances.)
4.3.1. recurrenceId 4.3.1. recurrenceId
Type: "LocalDateTime" (optional). Type: "LocalDateTime" (optional).
If present, this JSCalendar object represents one occurrence of a If present, this JSCalendar object represents one occurrence of a
recurring JSCalendar object. If present the "recurrenceRules" and recurring JSCalendar object. If present the "recurrenceRules" and
"recurrenceOverrides" properties MUST NOT be present. "recurrenceOverrides" properties MUST NOT be present.
The value is a date-time either produced by the "recurrenceRules" of The value is a date-time either produced by the "recurrenceRules" of
skipping to change at page 28, line 48 skipping to change at page 29, line 20
the month of the initial date-time. the month of the initial date-time.
+ If there is no byMonthDay, byWeekNo or byDay properties: + If there is no byMonthDay, byWeekNo or byDay properties:
Add a byMonthDay property with the sole value being the Add a byMonthDay property with the sole value being the
day-of-the-month of the initial date-time. day-of-the-month of the initial date-time.
+ If there is a byWeekNo property and no byMonthDay or byDay + If there is a byWeekNo property and no byMonthDay or byDay
properties: Add a byDay property with the sole value being properties: Add a byDay property with the sole value being
the day-of-the-week of the initial date-time. the day-of-the-week of the initial date-time.
4.3.3. recurrenceOverrides 4.3.3. excludedRecurrenceRules
Type: "RecurrenceRule[]" (optional).
Defines a set of recurrence rules (repeating patterns) for date-times
on which the object will not occur. The rules are interpreted the
same as for the "recurrenceRules" property (see Section 4.3.2), with
the exception that the initial date-time to which the rule is applied
(the "start" date-time for events; the "start" or "due" date-time for
tasks) is only considered part of the expansion if it matches the
rule. The resulting set of date-times are then removed from those
generated by the recurrenceRules property, as described in
Section 4.3.
4.3.4. recurrenceOverrides
Type: "LocalDateTime[PatchObject]" (optional). Type: "LocalDateTime[PatchObject]" (optional).
A map of the recurrence ids (the date-time produced by the recurrence A map of the recurrence ids (the date-time produced by the recurrence
rule) to an object of patches to apply to the generated occurrence rule) to an object of patches to apply to the generated occurrence
object. object.
If the recurrence id does not match a date-time from the recurrence If the recurrence id does not match a date-time from the recurrence
rule (or no rule is specified), it is to be treated as an additional rule (or no rule is specified), it is to be treated as an additional
occurrence (like an RDATE from iCalendar). The patch object may occurrence (like an RDATE from iCalendar). The patch object may
skipping to change at page 30, line 5 skipping to change at page 30, line 37
o recurrenceOverrides o recurrenceOverrides
o recurrenceRules o recurrenceRules
o relatedTo o relatedTo
o replyTo o replyTo
o uid o uid
4.3.4. excluded 4.3.5. excluded
Type: "Boolean" (optional, default: false). Type: "Boolean" (optional, default: false).
Defines if this object is an overridden, excluded instance of a Defines if this object is an overridden, excluded instance of a
recurring JSCalendar object (see Section 4.3.3). If this property recurring JSCalendar object (see Section 4.3.4). If this property
value is true, this calendar object instance MUST be removed from the value is true, this calendar object instance MUST be removed from the
occurrence expansion. The absence of this property or its default occurrence expansion. The absence of this property or its default
value false indicates that this instance MUST be included in the value false indicates that this instance MUST be included in the
occurrence expansion. occurrence expansion.
4.4. Sharing and Scheduling Properties 4.4. Sharing and Scheduling Properties
4.4.1. priority 4.4.1. priority
Type: "Int" (optional, default: 0). Type: "Int" (optional, default: 0).
Specifies a priority for the calendar object. This may be used as Specifies a priority for the calendar object. This may be used as
part of scheduling systems to help resolve conflicts for a time part of scheduling systems to help resolve conflicts for a time
period. period.
The priority is specified as an integer in the range 0 to 9. A value The priority is specified as an integer in the range 0 to 9. A value
of 0 specifies an undefined priority, for which the treatment will of 0 specifies an undefined priority, for which the treatment will
skipping to change at page 32, line 25 skipping to change at page 33, line 17
Type: "String[String]" (optional). Type: "String[String]" (optional).
Represents methods by which participants may submit their RSVP Represents methods by which participants may submit their RSVP
response to the organizer of the calendar object. The keys in the response to the organizer of the calendar object. The keys in the
property value are the available methods and MUST only contain ASCII property value are the available methods and MUST only contain ASCII
alphanumeric characters (A-Za-z0-9). The value is a URI for the alphanumeric characters (A-Za-z0-9). The value is a URI for the
method specified in the key. Future methods may be defined in future method specified in the key. Future methods may be defined in future
specifications and registered with IANA; a calendar client MUST specifications and registered with IANA; a calendar client MUST
ignore any method it does not understand, but MUST preserve the ignore any method it does not understand, but MUST preserve the
method key and URI. This property MUST be omitted if no method is method key and URI. This property MUST be omitted if no method is
defined (rather than being specified as an empty object). If this defined (rather than being specified as an empty object).
property is set, the "participants" property of this calendar object
MUST contain at least one participant.
The following methods are defined: The following methods are defined:
o "imip": The organizer accepts an iMIP [RFC6047] response at this o "imip": The organizer accepts an iMIP [RFC6047] response at this
email address. The value MUST be a "mailto:" URI. email address. The value MUST be a "mailto:" URI.
o "web": Opening this URI in a web browser will provide the user o "web": Opening this URI in a web browser will provide the user
with a page where they can submit a reply to the organizer. with a page where they can submit a reply to the organizer.
o "other": The organizer is identified by this URI but the method o "other": The organizer is identified by this URI but the method
for submitting the response is undefined. for submitting the response is undefined.
4.4.5. participants 4.4.5. participants
Type: "Id[Participant]" (optional). Type: "Id[Participant]" (optional).
A map of participant ids to participants, describing their A map of participant ids to participants, describing their
participation in the calendar object. participation in the calendar object.
If this property is set, then the "replyTo" property of this calendar If this property is set and any participant has a sendTo property,
object MUST define at least one reply method. then the "replyTo" property of this calendar object MUST define at
least one reply method.
A Participant object has the following properties: A Participant object has the following properties:
o @type: "String" (mandatory) o @type: "String" (mandatory)
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").
skipping to change at page 34, line 32 skipping to change at page 35, line 22
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 one of the following values, a value registered in the set MUST be one of the following values, a value registered
in the IANA JSCalendar Enum Registry, or a vendor-specific value: in the IANA JSCalendar Enum Registry, 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 or changing their rsvp status). setting their own alerts or changing their rsvp status).
* "attendee": The participant is expected to attend. * "attendee": The participant is expected to be present at the
event.
* "optional": The participant is invited but not required. * "optional": The participant's involvement with the event is
optional. This is expected to be primarily combined with the
"attendee" role.
* "informational": The participant is copied for informational * "informational": The participant is copied for informational
reasons, and is not expected to attend. reasons, and is not expected to attend.
* "chair": The participant is in charge of the event/task when it * "chair": The participant is in charge of the event/task when it
occurs. occurs.
* "contact": The participant is someone that may be contacted for * "contact": The participant is someone that may be contacted for
information about the event. information about the event.
The value for each key in the set MUST be true. It is expected 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 that no more than one of the roles "attendee" and "informational"
"informational" be present; if more than one are given, "optional" be present; if more than one are given, "attendee" takes
takes precedence over "informational", and "attendee" takes precedence over "informational". Roles that are unknown to the
precedence over both. Roles that are unknown to the
implementation MUST be preserved. 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) o language: "String" (optional)
The language tag as defined in [RFC5646] that best describes the The language tag as defined in [RFC5646] that best describes the
skipping to change at page 36, line 14 skipping to change at page 37, line 8
* "server": The calendar server will send the scheduling * "server": The calendar server will send the scheduling
messages. messages.
* "client": The calendar client will send the scheduling * "client": The calendar client will send the scheduling
messages. messages.
* "none": No scheduling messages are to be sent to this * "none": No scheduling messages are to be sent to this
participant. participant.
o scheduleForceSend: "Boolean" (optional, default: false)
A client may set the property on a participant to true to request
that the server send a scheduling message to the participant when
it would not normally do so (e.g. if no significant change is made
the object or the scheduleAgent is set to client). The property
MUST NOT be stored in the JSCalendar object on the server or
appear in a scheduling message.
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.
o scheduleStatus: "String[]" (optional)
A list of status codes, as defined in Section 3.8.8.3 of
[RFC5545], returned from the processing of the most recent
scheduling message sent to this participant.
Servers MUST only add or change this property when they send a
scheduling message to the participant. Clients SHOULD NOT change
or remove this property if it was provided by the server. Clients
MAY add, change, or remove the property for participants where the
client is handling the scheduling.
This property MUST NOT be included in scheduling messages.
o scheduleUpdated: "UTCDateTime" (optional) o scheduleUpdated: "UTCDateTime" (optional)
The timestamp for the most recent response from this participant. The timestamp for the most recent response from this participant.
This is the "updated" property of the last response when using This is the "updated" property of the last response when using
iTIP. It can be compared to the "updated" property in future iTIP. It can be compared to the "updated" property in future
responses to detect and discard older responses delivered out of responses to detect and discard older responses delivered out of
order. order.
o invitedBy: "String" (optional) o invitedBy: "String" (optional)
skipping to change at page 37, line 25 skipping to change at page 38, line 43
A set of links to more information about this participant, for A set of links to more information about this participant, for
example in vCard format. The keys in the set MUST be the id of a example in vCard format. The keys in the set MUST be the id of a
Link object in the calendar object's "links" property. The value Link object in the calendar object's "links" property. The value
for each key in the set MUST be true. If there are no links, this for each key in the set MUST be true. If there are no links, this
MUST be omitted (rather than specified as an empty set). MUST be omitted (rather than specified as an empty set).
o progress: "String" (optional; only allowed for participants of a o progress: "String" (optional; only allowed for participants of a
JSTask). Represents the progress of the participant for this JSTask). Represents the progress of the participant for this
task. It MUST NOT be set if the "participationStatus" of this task. It MUST NOT be set if the "participationStatus" of this
participant is any value other than "accepted". See Section 5.2.4 participant is any value other than "accepted". See Section 5.2.5
for allowed values and semantics. for allowed values and semantics.
o progressUpdated: "UTCDateTime" (optional; only allowed for o progressUpdated: "UTCDateTime" (optional; only allowed for
participants of a JSTask). Specifies the date-time the progress participants of a JSTask). Specifies the date-time the progress
property was last set on this participant. See Section 5.2.5 for property was last set on this participant. See Section 5.2.6 for
allowed values and semantics. allowed values and semantics.
o percentComplete: "Number" (optional; only allowed for participants o percentComplete: "UnsignedInt" (optional; only allowed for
of a JSTask). Represents the percent completion of the participants of a JSTask). Represents the percent completion of
participant for this task. The property value MUST be a positive the participant for this task. The property value MUST be a
integer between 0 and 100. positive integer between 0 and 100.
4.5. Alerts Properties 4.5. Alerts Properties
4.5.1. useDefaultAlerts 4.5.1. useDefaultAlerts
Type: "Boolean" (optional, default: false). Type: "Boolean" (optional, default: false).
If true, use the user's default alerts and ignore the value of the If true, use the user's default alerts and ignore the value of the
"alerts" property. Fetching user defaults is dependent on the API "alerts" property. Fetching user defaults is dependent on the API
from which this JSCalendar object is being fetched, and is not from which this JSCalendar object is being fetched, and is not
skipping to change at page 45, line 12 skipping to change at page 46, line 33
The date/time the task should start in the task's time zone. The date/time the task should start in the task's time zone.
5.2.3. estimatedDuration 5.2.3. estimatedDuration
Type: "Duration" (optional). Type: "Duration" (optional).
Specifies the estimated positive duration of time the task takes to Specifies the estimated positive duration of time the task takes to
complete. complete.
5.2.4. progress 5.2.4. percentComplete
Type: "UnsignedInt" (optional).
Represents the percent completion of the task overall. The property
value MUST be a positive integer between 0 and 100.
5.2.5. progress
Type: "String" (optional). Type: "String" (optional).
Defines the progress of this task. If omitted, the default progress Defines the progress of this task. If omitted, the default progress
(Section 4.4) of a JSTask is defined as follows (in order of (Section 4.4) of a JSTask is defined as follows (in order of
evaluation): evaluation):
o "completed": if the "progress" property value of all participants o "completed": if the "progress" property value of all participants
is "completed". is "completed".
skipping to change at page 45, line 44 skipping to change at page 47, line 23
o "needs-action": Indicates the task needs action. o "needs-action": Indicates the task needs action.
o "in-process": Indicates the task is in process. o "in-process": Indicates the task is in process.
o "completed": Indicates the task is completed. o "completed": Indicates the task is completed.
o "failed": Indicates the task failed. o "failed": Indicates the task failed.
o "cancelled": Indicates the task was cancelled. o "cancelled": Indicates the task was cancelled.
5.2.5. progressUpdated 5.2.6. progressUpdated
Type: "UTCDateTime" (optional). Type: "UTCDateTime" (optional).
Specifies the date/time the "progress" property of either the task Specifies the date/time the "progress" property of either the task
overall (Section 5.2.4) or a specific participant (Section 4.4.5) was overall (Section 5.2.5) or a specific participant (Section 4.4.5) was
last updated. last updated.
If the task is recurring and has future instances, a client may want If the task is recurring and has future instances, a client may want
to keep track of the last progress update timestamp of a specific to keep track of the last progress update timestamp of a specific
task recurrence, but leave other instances unchanged. One way to task recurrence, but leave other instances unchanged. One way to
achieve this is by overriding the progressUpdated property in the achieve this is by overriding the progressUpdated property in the
task "recurrenceOverrides" property. However, this could produce a task "recurrenceOverrides" property. However, this could produce a
long list of timestamps for regularly recurring tasks. An long list of timestamps for regularly recurring tasks. An
alternative approach is to split the JSTask into a current, single alternative approach is to split the JSTask into a current, single
instance of JSTask with this instance progress update time and a instance of JSTask with this instance progress update time and a
skipping to change at page 62, line 39 skipping to change at page 64, line 39
| email | String | Participan | Section | | email | String | Participan | Section |
| | | t | 4.4.5 | | | | t | 4.4.5 |
| | | | | | | | | |
| entries | (JSTask|JSEvent)[] | JSGroup | Section | | entries | (JSTask|JSEvent)[] | JSGroup | Section |
| | | | 5.3.1 | | | | | 5.3.1 |
| | | | | | | | | |
| estimatedDura | Duration | JSTask | Section | | estimatedDura | Duration | JSTask | Section |
| tion | | | 5.2.3 | | tion | | | 5.2.3 |
| | | | | | | | | |
| excluded | Boolean | JSEvent, | Section | | excluded | Boolean | JSEvent, | Section |
| | | JSTask | 4.3.4 | | | | JSTask | 4.3.5 |
| | | | |
| excludedRecur | RecurrenceRule[] | JSEvent, | Section |
| renceRules | | JSTask | 4.3.3 |
| | | | | | | | | |
| expectReply | Boolean | Participan | Section | | expectReply | Boolean | Participan | Section |
| | | t | 4.4.5 | | | | t | 4.4.5 |
| | | | | | | | | |
| firstDayOfWee | String | Recurrence | Section | | firstDayOfWee | String | Recurrence | Section |
| k | | Rule | 4.3.2 | | k | | Rule | 4.3.2 |
| | | | | | | | | |
| freeBusyStatu | String | JSEvent, | Section | | freeBusyStatu | String | JSEvent, | Section |
| s | | JSTask | 4.4.2 | | s | | JSTask | 4.4.2 |
| | | | | | | | | |
skipping to change at page 64, line 26 skipping to change at page 66, line 29
| | | | | | | | | |
| participants | Id[Participant] | JSEvent, | Section | | participants | Id[Participant] | JSEvent, | Section |
| | | JSTask | 4.4.5 | | | | JSTask | 4.4.5 |
| | | | | | | | | |
| participation | String | Participan | Section | | participation | String | Participan | Section |
| Comment | | t | 4.4.5 | | Comment | | t | 4.4.5 |
| | | | | | | | | |
| participation | String | Participan | Section | | participation | String | Participan | Section |
| Status | | t | 4.4.5 | | Status | | t | 4.4.5 |
| | | | | | | | | |
| percentComple | UnsignedInt | JSTask, Pa | Section |
| te | | rticipant | 5.2.4 |
| | | | |
| priority | Int | JSEvent, | Section | | priority | Int | JSEvent, | Section |
| | | JSTask | 4.4.1 | | | | JSTask | 4.4.1 |
| | | | | | | | | |
| privacy | String | JSEvent, | Section | | privacy | String | JSEvent, | Section |
| | | JSTask | 4.4.3 | | | | JSTask | 4.4.3 |
| | | | | | | | | |
| prodId | String | JSEvent, | Section | | prodId | String | JSEvent, | Section |
| | | JSTask, | 4.1.4 | | | | JSTask, | 4.1.4 |
| | | JSGroup | | | | | JSGroup | |
| | | | | | | | | |
| progress | String | JSTask, Pa | Section | | progress | String | JSTask, Pa | Section |
| | | rticipant | 5.2.4 | | | | rticipant | 5.2.5 |
| | | | | | | | | |
| progressUpdat | UTCDateTime | JSTask, Pa | Section | | progressUpdat | UTCDateTime | JSTask, Pa | Section |
| ed | | rticipant | 5.2.5 | | ed | | rticipant | 5.2.6 |
| | | | | | | | | |
| recurrenceId | LocalDateTime | JSEvent, | Section | | recurrenceId | LocalDateTime | JSEvent, | Section |
| | | JSTask | 4.3.1 | | | | JSTask | 4.3.1 |
| | | | | | | | | |
| recurrenceOve | LocalDateTime[PatchObject] | JSEvent, | Section | | recurrenceOve | LocalDateTime[PatchObject] | JSEvent, | Section |
| rrides | | JSTask | 4.3.3 | | rrides | | JSTask | 4.3.4 |
| | | | | | | | | |
| recurrenceRul | RecurrenceRule[] | JSEvent, | Section | | recurrenceRul | RecurrenceRule[] | JSEvent, | Section |
| es | | JSTask | 4.3.2 | | es | | JSTask | 4.3.2 |
| | | | | | | | | |
| rel | String | Link | Section | | rel | String | Link | Section |
| | | | 4.2.7 | | | | | 4.2.7 |
| | | | | | | | | |
| relatedTo | String[Relation] | JSEvent, | Section | | relatedTo | String[Relation] | JSEvent, | Section |
| | | JSTask, | 4.1.3, | | | | JSTask, | 4.1.3, |
| | | Alert | Section | | | | Alert | Section |
skipping to change at page 65, line 31 skipping to change at page 67, line 37
| | | | | | | | | |
| roles | String[Boolean] | Participan | Section | | roles | String[Boolean] | Participan | Section |
| | | t | 4.4.5 | | | | t | 4.4.5 |
| | | | | | | | | |
| rscale | String | Recurrence | Section | | rscale | String | Recurrence | Section |
| | | Rule | 4.3.2 | | | | Rule | 4.3.2 |
| | | | | | | | | |
| scheduleAgent | String | Participan | Section | | scheduleAgent | String | Participan | Section |
| | | t | 4.4.5 | | | | t | 4.4.5 |
| | | | | | | | | |
| scheduleForce | Boolean | Participan | Section |
| Send | | t | 4.4.5 |
| | | | |
| scheduleSeque | UnsignedInt | Participan | Section | | scheduleSeque | UnsignedInt | Participan | Section |
| nce | | t | 4.4.5 | | nce | | t | 4.4.5 |
| | | | | | | | | |
| scheduleStatu | String[] | Participan | Section |
| s | | t | 4.4.5 |
| | | | |
| scheduleUpdat | UTCDateTime | Participan | Section | | scheduleUpdat | UTCDateTime | Participan | Section |
| ed | | t | 4.4.5 | | ed | | t | 4.4.5 |
| | | | | | | | | |
| sendTo | String[String] | Participan | Section | | sendTo | String[String] | Participan | Section |
| | | t | 4.4.5 | | | | t | 4.4.5 |
| | | | | | | | | |
| sequence | UnsignedInt | JSEvent, | Section | | sequence | UnsignedInt | JSEvent, | Section |
| | | JSTask | 4.1.7 | | | | JSTask | 4.1.7 |
| | | | | | | | | |
| showWithoutTi | Boolean | JSEvent, | Section | | showWithoutTi | Boolean | JSEvent, | Section |
skipping to change at page 72, line 23 skipping to change at page 74, line 23
Table 8 Table 8
------------------------------------------------------------ ------------------------------------------------------------
Enum Values for progress (Context: JSTask, Participant) Enum Values for progress (Context: JSTask, Participant)
+--------------+--------------------------+ +--------------+--------------------------+
| Enum Value | Reference or Description | | Enum Value | Reference or Description |
+--------------+--------------------------+ +--------------+--------------------------+
| needs-action | Section 5.2.4 | | needs-action | Section 5.2.5 |
| | | | | |
| in-process | Section 5.2.4 | | in-process | Section 5.2.5 |
| | | | | |
| completed | Section 5.2.4 | | completed | Section 5.2.5 |
| | | | | |
| failed | Section 5.2.4 | | failed | Section 5.2.5 |
| | | | | |
| cancelled | Section 5.2.4 | | cancelled | Section 5.2.5 |
+--------------+--------------------------+ +--------------+--------------------------+
Table 9 Table 9
------------------------------------------------------------ ------------------------------------------------------------
Enum Values for relation (Context: Relation) Enum Values for relation (Context: Relation)
+------------+--------------------------+ +------------+--------------------------+
| Enum Value | Reference or Description | | Enum Value | Reference or Description |
+------------+--------------------------+ +------------+--------------------------+
 End of changes. 37 change blocks. 
107 lines changed or deleted 183 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/